diff --git a/css/app.0b25019a.css b/css/app.cec16b29.css similarity index 99% rename from css/app.0b25019a.css rename to css/app.cec16b29.css index f9476406..d9eee9bc 100644 --- a/css/app.0b25019a.css +++ b/css/app.cec16b29.css @@ -1 +1 @@ -.hotkey-doc[data-v-a2afb4ce]{height:100%;overflow:auto;font-size:12px;margin:0 -24px;padding:0 24px}.title[data-v-a2afb4ce]{font-size:14px;font-weight:700;border-bottom:1px solid #e5e5e5;padding:24px 0 5px 0}.title[data-v-a2afb4ce]:first-child{padding-top:0}.hotkey-item[data-v-a2afb4ce]{border-bottom:1px solid #e5e5e5;padding:15px 0 5px 0;display:flex;align-items:center}.label[data-v-a2afb4ce]{width:140px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.editor-header[data-v-f0cbd508]{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-f0cbd508],.menu-item[data-v-f0cbd508],.right[data-v-f0cbd508]{display:flex;justify-content:center;align-items:center}.menu-item[data-v-f0cbd508]{height:100%;font-size:14px;padding:0 10px;transition:background-color .2s;cursor:pointer}.menu-item .text[data-v-f0cbd508]{margin-left:4px}.left .menu-item[data-v-f0cbd508]:hover{background-color:#f9f9f9}svg[data-v-4c746203],svg[data-v-74cf8d68],svg[data-v-b701edc6]{overflow:visible;position:absolute;z-index:2;top:0;left:0}.image-clip-handler[data-v-2ec16714]{width:100%;height:100%;position:relative}.image-clip-handler .bottom-img[data-v-2ec16714]{top:0;left:0;width:100%;height:100%;opacity:.5}.image-clip-handler img[data-v-2ec16714]{width:100%;height:100%}.image-clip-handler .top-image-content[data-v-2ec16714]{position:absolute;overflow:hidden}.image-clip-handler .top-image-content img[data-v-2ec16714]{position:absolute}.operate[data-v-2ec16714]{position:absolute;width:100%;height:100%;top:0;left:0;cursor:move}.clip-point[data-v-2ec16714]{position:absolute;width:16px;height:16px}.clip-point svg[data-v-2ec16714]{overflow:visible}.clip-point.left-top[data-v-2ec16714]{left:0;top:0}.clip-point.right-top[data-v-2ec16714]{left:100%;top:0;transform:rotate(90deg);transform-origin:0 0}.clip-point.left-bottom[data-v-2ec16714]{left:0;top:100%;transform:rotate(-90deg);transform-origin:0 0}.clip-point.right-bottom[data-v-2ec16714]{left:100%;top:100%;transform:rotate(180deg);transform-origin:0 0}.clip-point.top[data-v-2ec16714]{left:50%;top:0;margin-left:-8px}.clip-point.bottom[data-v-2ec16714]{left:50%;bottom:0;margin-left:-8px;transform:rotate(180deg)}.clip-point.left[data-v-2ec16714]{left:0;top:50%;margin-top:-8px;transform:rotate(-90deg)}.clip-point.right[data-v-2ec16714]{right:0;top:50%;margin-top:-8px;transform:rotate(90deg)}.clip-point.bottom.rotate-135[data-v-2ec16714],.clip-point.left-bottom.rotate-90[data-v-2ec16714],.clip-point.left-top.rotate-0[data-v-2ec16714],.clip-point.left.rotate-45[data-v-2ec16714],.clip-point.right-bottom.rotate-0[data-v-2ec16714],.clip-point.right-top.rotate-90[data-v-2ec16714],.clip-point.right.rotate-45[data-v-2ec16714],.clip-point.top.rotate-135[data-v-2ec16714]{cursor:nwse-resize}.clip-point.bottom.rotate-0[data-v-2ec16714],.clip-point.left-bottom.rotate-135[data-v-2ec16714],.clip-point.left-top.rotate-45[data-v-2ec16714],.clip-point.left.rotate-90[data-v-2ec16714],.clip-point.right-bottom.rotate-45[data-v-2ec16714],.clip-point.right-top.rotate-135[data-v-2ec16714],.clip-point.right.rotate-90[data-v-2ec16714],.clip-point.top.rotate-0[data-v-2ec16714]{cursor:ns-resize}.clip-point.bottom.rotate-45[data-v-2ec16714],.clip-point.left-bottom.rotate-0[data-v-2ec16714],.clip-point.left-top.rotate-90[data-v-2ec16714],.clip-point.left.rotate-135[data-v-2ec16714],.clip-point.right-bottom.rotate-90[data-v-2ec16714],.clip-point.right-top.rotate-0[data-v-2ec16714],.clip-point.right.rotate-135[data-v-2ec16714],.clip-point.top.rotate-45[data-v-2ec16714]{cursor:nesw-resize}.clip-point.bottom.rotate-90[data-v-2ec16714],.clip-point.left-bottom.rotate-45[data-v-2ec16714],.clip-point.left-top.rotate-135[data-v-2ec16714],.clip-point.left.rotate-0[data-v-2ec16714],.clip-point.right-bottom.rotate-135[data-v-2ec16714],.clip-point.right-top.rotate-45[data-v-2ec16714],.clip-point.right.rotate-0[data-v-2ec16714],.clip-point.top.rotate-90[data-v-2ec16714]{cursor:ew-resize}.editable-element-image[data-v-fed8b698]{position:absolute}.editable-element-image.lock .element-content[data-v-fed8b698]{cursor:default}.rotate-wrapper[data-v-fed8b698]{width:100%;height:100%}.element-content[data-v-fed8b698]{width:100%;height:100%;position:relative;cursor:move}.element-content .image-content[data-v-fed8b698]{width:100%;height:100%;overflow:hidden;position:relative}.element-content img[data-v-fed8b698]{position:absolute}svg[data-v-34c0a0a8]{overflow:visible;position:absolute;top:0;left:0}.prosemirror-editor[data-v-50456657]{cursor:text}.editable-element-text[data-v-77a8ccf7]{position:absolute}.editable-element-text.lock .element-content[data-v-77a8ccf7]{cursor:default}.rotate-wrapper[data-v-77a8ccf7]{width:100%;height:100%}.element-content[data-v-77a8ccf7]{position:relative;padding:10px;line-height:1.5;word-break:break-word;cursor:move}.element-content .text[data-v-77a8ccf7]{position:relative}.element-content[data-v-77a8ccf7] a{cursor:text}.drag-handler[data-v-77a8ccf7]{height:10px;position:absolute;left:0;right:0}.drag-handler.top[data-v-77a8ccf7]{top:0}.drag-handler.bottom[data-v-77a8ccf7]{bottom:0}.editable-element-shape[data-v-81338b12]{position:absolute;pointer-events:none}.editable-element-shape.lock .element-content[data-v-81338b12]{cursor:default}.rotate-wrapper[data-v-81338b12]{width:100%;height:100%}.element-content[data-v-81338b12]{width:100%;height:100%;position:relative;cursor:move}.element-content svg[data-v-81338b12]{transform-origin:0 0;overflow:visible}.element-content .shape-path[data-v-81338b12]{pointer-events:all}.shape-text[data-v-81338b12]{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-81338b12]{pointer-events:all}.shape-text.top[data-v-81338b12]{justify-content:flex-start}.shape-text.middle[data-v-81338b12]{justify-content:center}.shape-text.bottom[data-v-81338b12]{justify-content:flex-end}.editable-element-shape[data-v-5f3b7dc5]{position:absolute;pointer-events:none}.editable-element-shape.lock .line-path[data-v-5f3b7dc5],.editable-element-shape.lock .line-point[data-v-5f3b7dc5]{cursor:default}.element-content[data-v-5f3b7dc5]{width:100%;height:100%;position:relative}.element-content svg[data-v-5f3b7dc5]{transform-origin:0 0;overflow:visible}.line-path[data-v-5f3b7dc5],.line-point[data-v-5f3b7dc5]{pointer-events:all;cursor:move}.chart[data-v-79ce410e]{display:flex}.chart-content[data-v-79ce410e]{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-863d2c90]{position:absolute}.editable-element-chart.lock .element-content[data-v-863d2c90]{cursor:default}.rotate-wrapper[data-v-863d2c90]{width:100%;height:100%}.element-content[data-v-863d2c90]{width:100%;height:100%;overflow:hidden;cursor:move}.custom-textarea[data-v-00107680]{border:0;outline:0;-webkit-user-modify:read-write-plaintext-only;-moz-user-modify:read-write-plaintext-only}.editable-table[data-v-12f568a6],table[data-v-12f568a6]{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}table[data-v-12f568a6]{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-12f568a6]{background-color:#fff}table.theme tr:nth-child(2n) .cell[data-v-12f568a6]{background-color:var(--subThemeColor1)}table.theme tr:nth-child(odd) .cell[data-v-12f568a6]{background-color:var(--subThemeColor2)}table.theme.col-footer tr .cell[data-v-12f568a6]:last-child,table.theme.col-header tr .cell[data-v-12f568a6]:first-child,table.theme.row-footer tr:last-child .cell[data-v-12f568a6],table.theme.row-header tr:first-child .cell[data-v-12f568a6]{background-color:var(--themeColor)}table tr[data-v-12f568a6]{height:36px}table .cell[data-v-12f568a6]{position:relative;white-space:normal;word-wrap:break-word;vertical-align:middle;font-size:14px;cursor:default}table .cell.selected[data-v-12f568a6]:after{content:"";width:100%;height:100%;position:absolute;top:0;left:0;background-color:hsla(0,0%,40%,.4)}table .cell-text[data-v-12f568a6]{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-12f568a6]{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.drag-line[data-v-12f568a6]{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-1c016f8e]{position:absolute}.editable-element-table.lock .element-content[data-v-1c016f8e]{cursor:default}.rotate-wrapper[data-v-1c016f8e]{width:100%;height:100%}.element-content[data-v-1c016f8e]{width:100%;height:100%;position:relative;cursor:move}.table-mask[data-v-1c016f8e]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .2s}.table-mask .mask-tip[data-v-1c016f8e]{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-1c016f8e]:hover:not(.lock){opacity:.9}.editable-element-latex[data-v-50e5c825]{position:absolute}.editable-element-latex.lock .element-content[data-v-50e5c825]{cursor:default}.rotate-wrapper[data-v-50e5c825]{width:100%;height:100%}.element-content[data-v-50e5c825]{width:100%;height:100%;position:relative;cursor:move}.element-content svg[data-v-50e5c825]{transform-origin:0 0;overflow:visible}.video-player[data-v-fcb929f4]{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-fcb929f4],.video-player.playing .controller[data-v-fcb929f4]{opacity:0}.video-player.playing:hover .controller-mask[data-v-fcb929f4],.video-player.playing:hover .controller[data-v-fcb929f4]{opacity:1}}.video-player.loading .bezel .diplayer-loading-icon[data-v-fcb929f4]{display:block}.video-player.hide-controller[data-v-fcb929f4]{cursor:none}.video-player.hide-controller .controller-mask[data-v-fcb929f4],.video-player.hide-controller .controller[data-v-fcb929f4]{opacity:0;transform:translateY(100%)}.video-wrap[data-v-fcb929f4]{position:relative;background:#000;font-size:0;width:100%;height:100%}.video-wrap .video[data-v-fcb929f4]{width:100%;height:100%}.controller-mask[data-v-fcb929f4]{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-fcb929f4]{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-fcb929f4]{padding:5px 0;cursor:pointer;position:absolute;bottom:33px;width:calc(100% - 40px);height:3px}.controller .bar-wrap:hover .bar .played .thumb[data-v-fcb929f4]{transform:scale(1)}.controller .bar-wrap .bar-time[data-v-fcb929f4]{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-fcb929f4]{opacity:0}.controller .bar-wrap .bar[data-v-fcb929f4]{position:relative;height:3px;width:100%;background:hsla(0,0%,100%,.2);cursor:pointer}.controller .bar-wrap .bar .loaded[data-v-fcb929f4]{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-fcb929f4]{position:absolute;left:0;top:0;bottom:0;height:3px;will-change:width;background-color:#fff}.controller .bar-wrap .bar .played .thumb[data-v-fcb929f4]{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-fcb929f4]{height:38px;position:absolute;bottom:0;display:flex;align-items:center}.controller .icons.icons-right[data-v-fcb929f4]{right:8px}.controller .icons .time[data-v-fcb929f4]{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-fcb929f4]{width:40px;height:100%;position:relative;cursor:pointer;display:flex;align-items:center;font-size:20px}.controller .icons .icon.play-icon[data-v-fcb929f4]{font-size:26px}.controller .icons .icon .icon-content[data-v-fcb929f4]{transition:all .2s ease-in-out;opacity:.8;color:#fff}.controller .icons .icon.loop-icon[data-v-fcb929f4]{font-size:12px}.controller .icons .icon.loop-icon .icon-content[data-v-fcb929f4]{opacity:.5}.controller .icons .icon.speed-icon[data-v-fcb929f4]{font-size:12px;position:relative}.controller .icons .icon .speed-menu[data-v-fcb929f4]{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-fcb929f4]{padding:8px 0;text-align:center}.controller .icons .icon .speed-menu .speed-menu-item[data-v-fcb929f4]:hover{background-color:#393833;color:#fff}.controller .icons .icon .speed-menu .speed-menu-item.active[data-v-fcb929f4]{font-weight:700;color:#fff}.controller .icons .icon.active .icon-content[data-v-fcb929f4],.controller .icons .icon:hover .icon-content[data-v-fcb929f4]{opacity:1}.controller .icons .volume[data-v-fcb929f4]{height:100%;position:relative;cursor:pointer;display:flex;align-items:center}.controller .icons .volume:hover .volume-bar-wrap .volume-bar[data-v-fcb929f4]{width:45px}.controller .icons .volume:hover .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-fcb929f4]{transform:scale(1)}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar[data-v-fcb929f4]{width:45px}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-fcb929f4]{transform:scale(1)}.controller .icons .volume-bar-wrap[data-v-fcb929f4]{display:inline-block;margin:0 15px 0 -5px;vertical-align:middle;height:100%}.controller .icons .volume-bar[data-v-fcb929f4]{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-fcb929f4]{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-fcb929f4]{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-fcb929f4]{display:inline-block;height:100%}.bezel[data-v-fcb929f4]{position:absolute;left:0;right:0;top:0;bottom:0;font-size:22px;color:#fff;pointer-events:none}.bezel .bezel-icon[data-v-fcb929f4]{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-fcb929f4]{-webkit-animation:bezel-hide-fcb929f4 .5s linear;animation:bezel-hide-fcb929f4 .5s linear}@-webkit-keyframes bezel-hide-fcb929f4{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(2)}}@keyframes bezel-hide-fcb929f4{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(2)}}.bezel .loading-icon[data-v-fcb929f4]{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-fcb929f4]{display:none}.bezel .loading-icon .loading-dot[data-v-fcb929f4]{-webkit-animation:loading-dot-fade-fcb929f4 .8s ease infinite;animation:loading-dot-fade-fcb929f4 .8s ease infinite;opacity:0;transform-origin:4px 4px}.bezel .loading-icon .loading-dot.loading-dot-7[data-v-fcb929f4]{-webkit-animation-delay:.7s;animation-delay:.7s}.bezel .loading-icon .loading-dot.loading-dot-6[data-v-fcb929f4]{-webkit-animation-delay:.6s;animation-delay:.6s}.bezel .loading-icon .loading-dot.loading-dot-5[data-v-fcb929f4]{-webkit-animation-delay:.5s;animation-delay:.5s}.bezel .loading-icon .loading-dot.loading-dot-4[data-v-fcb929f4]{-webkit-animation-delay:.4s;animation-delay:.4s}.bezel .loading-icon .loading-dot.loading-dot-3[data-v-fcb929f4]{-webkit-animation-delay:.3s;animation-delay:.3s}.bezel .loading-icon .loading-dot.loading-dot-2[data-v-fcb929f4]{-webkit-animation-delay:.2s;animation-delay:.2s}.bezel .loading-icon .loading-dot.loading-dot-1[data-v-fcb929f4]{-webkit-animation-delay:.1s;animation-delay:.1s}@-webkit-keyframes loading-dot-fade-fcb929f4{0%{opacity:.7;transform:scale(1.2)}50%{opacity:.25;transform:scale(.9)}to{opacity:.25;transform:scale(.85)}}@keyframes loading-dot-fade-fcb929f4{0%{opacity:.7;transform:scale(1.2)}50%{opacity:.25;transform:scale(.9)}to{opacity:.25;transform:scale(.85)}}.editable-element-video[data-v-454973e4]{position:absolute}.editable-element-video.lock .handler-border[data-v-454973e4]{cursor:default}.rotate-wrapper[data-v-454973e4]{width:100%;height:100%}.element-content[data-v-454973e4]{width:100%;height:100%;position:relative}.handler-border[data-v-454973e4]{position:absolute;cursor:move}.handler-border.t[data-v-454973e4]{width:100%;height:20px;top:0;left:0}.handler-border.b[data-v-454973e4]{width:100%;height:5px;bottom:0;left:0}.handler-border.l[data-v-454973e4]{width:10px;height:100%;left:0;top:0}.handler-border.r[data-v-454973e4]{width:10px;height:100%;right:0;top:0}.audio-player[data-v-5530a7f2]{width:280px;height:50px;position:relative;line-height:1;transform-origin:0 0;background:#000}.audio-player[data-v-5530a7f2],.controller[data-v-5530a7f2]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.controller[data-v-5530a7f2]{position:absolute;bottom:0;left:0;right:0;height:41px;padding:0 20px;transition:all .3s ease}.controller .bar-wrap[data-v-5530a7f2]{padding:5px 0;cursor:pointer;position:absolute;bottom:35px;width:calc(100% - 40px);height:3px}.controller .bar-wrap:hover .bar .played .thumb[data-v-5530a7f2]{transform:scale(1)}.controller .bar-wrap .bar-time[data-v-5530a7f2]{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-5530a7f2]{opacity:0}.controller .bar-wrap .bar[data-v-5530a7f2]{position:relative;height:3px;width:100%;background:hsla(0,0%,100%,.2);cursor:pointer}.controller .bar-wrap .bar .loaded[data-v-5530a7f2]{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-5530a7f2]{position:absolute;left:0;top:0;bottom:0;height:3px;will-change:width;background-color:#fff}.controller .bar-wrap .bar .played .thumb[data-v-5530a7f2]{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-5530a7f2]{height:38px;position:absolute;bottom:0;left:14px;display:flex;align-items:center}.controller .icons .icon[data-v-5530a7f2]{width:36px;height:100%;position:relative;cursor:pointer;display:flex;align-items:center;font-size:20px}.controller .icons .icon.play-icon[data-v-5530a7f2]{font-size:26px}.controller .icons .icon .icon-content[data-v-5530a7f2]{transition:all .2s ease-in-out;opacity:.8;color:#fff}.controller .icons .icon.active .icon-content[data-v-5530a7f2],.controller .icons .icon:hover .icon-content[data-v-5530a7f2]{opacity:1}.controller .icons .volume[data-v-5530a7f2]{height:100%;position:relative;cursor:pointer;display:flex;align-items:center}.controller .icons .volume:hover .volume-bar-wrap .volume-bar[data-v-5530a7f2]{width:45px}.controller .icons .volume:hover .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-5530a7f2]{transform:scale(1)}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar[data-v-5530a7f2]{width:45px}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-5530a7f2]{transform:scale(1)}.controller .icons .volume-bar-wrap[data-v-5530a7f2]{display:inline-block;margin:0 15px 0 -5px;vertical-align:middle;height:100%}.controller .icons .volume-bar[data-v-5530a7f2]{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-5530a7f2]{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-5530a7f2]{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-5530a7f2]{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-5530a7f2]{margin-right:2px}.controller .time .dtime[data-v-5530a7f2]{margin-left:2px}.editable-element-audio[data-v-40b7d6a8]{position:absolute}.editable-element-audio.lock .audio-icon[data-v-40b7d6a8]{cursor:default}.rotate-wrapper[data-v-40b7d6a8]{width:100%;height:100%}.element-content[data-v-40b7d6a8]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.audio-icon[data-v-40b7d6a8]{cursor:move}.audio-player[data-v-40b7d6a8]{position:absolute}.mouse-selection[data-v-25d4b5f8]{position:absolute;background-color:rgba(209,68,36,.1);border:1px solid #d14424;z-index:200}.mouse-selection.quadrant-1[data-v-25d4b5f8]{transform-origin:0 0;transform:rotate(180deg)}.mouse-selection.quadrant-2[data-v-25d4b5f8]{transform-origin:50% 0;transform:rotate(180deg)}.mouse-selection.quadrant-3[data-v-25d4b5f8]{transform-origin:0 50%;transform:rotate(180deg)}.mouse-selection.quadrant-4[data-v-25d4b5f8]{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-7017c6bc]{position:absolute;z-index:100}.alignment-line .line[data-v-7017c6bc]{width:0;height:0;border:0 dashed #d14424}.alignment-line .line.vertical[data-v-7017c6bc]{transform:translateY(-.5px);border-left-width:1px}.alignment-line .line.horizontal[data-v-7017c6bc]{transform:translateX(-.5px);border-top-width:1px}.ruler[data-v-6cc1801a]{font-size:12px}.h[data-v-6cc1801a]{position:absolute;background-color:#fff;border:1px solid #eee;height:20px;top:5px;display:flex;justify-content:space-between;align-items:center}.h .ruler-marker-100[data-v-6cc1801a]{height:100%;line-height:20px;text-align:right;flex:1;padding-right:5px;position:relative}.h .ruler-marker-100.hide span[data-v-6cc1801a],.h .ruler-marker-100.omit[data-v-6cc1801a]:before{display:none}.h .ruler-marker-100[data-v-6cc1801a]:not(:last-child):after{content:"";width:.1px;height:12px;position:absolute;right:0;bottom:0;background-color:#999}.h .ruler-marker-100[data-v-6cc1801a]:before{content:"";width:.1px;height:8px;position:absolute;right:50%;bottom:0;background-color:#999}.v[data-v-6cc1801a]{position:absolute;background-color:#fff;border:1px solid #eee;width:20px;left:5px;overflow:hidden}.v .ruler-marker-100[data-v-6cc1801a]{width:100%;line-height:20px;text-align:right;padding-bottom:5px;position:relative;-ms-writing-mode:tb-rl;writing-mode:vertical-rl}.v .ruler-marker-100.hide span[data-v-6cc1801a],.v .ruler-marker-100.omit[data-v-6cc1801a]:before{display:none}.v .ruler-marker-100[data-v-6cc1801a]:not(:last-child):after{content:"";height:.1px;width:12px;position:absolute;bottom:0;right:0;background-color:#999}.v .ruler-marker-100[data-v-6cc1801a]:before{content:"";height:.1px;width:8px;position:absolute;bottom:50%;right:0;background-color:#999}.element-create-selection[data-v-15b60d90]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;cursor:crosshair}.element-create-selection svg[data-v-15b60d90]{overflow:visible}.selection[data-v-15b60d90]{position:absolute;opacity:.8}.selection[data-v-15b60d90]:not(.line){border:1px solid #d14424}.resize-handler[data-v-c9559332]{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;cursor:pointer}.resize-handler.bottom.rotate-135[data-v-c9559332],.resize-handler.left-bottom.rotate-90[data-v-c9559332],.resize-handler.left-top.rotate-0[data-v-c9559332],.resize-handler.left.rotate-45[data-v-c9559332],.resize-handler.right-bottom.rotate-0[data-v-c9559332],.resize-handler.right-top.rotate-90[data-v-c9559332],.resize-handler.right.rotate-45[data-v-c9559332],.resize-handler.top.rotate-135[data-v-c9559332]{cursor:nwse-resize}.resize-handler.bottom.rotate-0[data-v-c9559332],.resize-handler.left-bottom.rotate-135[data-v-c9559332],.resize-handler.left-top.rotate-45[data-v-c9559332],.resize-handler.left.rotate-90[data-v-c9559332],.resize-handler.right-bottom.rotate-45[data-v-c9559332],.resize-handler.right-top.rotate-135[data-v-c9559332],.resize-handler.right.rotate-90[data-v-c9559332],.resize-handler.top.rotate-0[data-v-c9559332]{cursor:ns-resize}.resize-handler.bottom.rotate-45[data-v-c9559332],.resize-handler.left-bottom.rotate-0[data-v-c9559332],.resize-handler.left-top.rotate-90[data-v-c9559332],.resize-handler.left.rotate-135[data-v-c9559332],.resize-handler.right-bottom.rotate-90[data-v-c9559332],.resize-handler.right-top.rotate-0[data-v-c9559332],.resize-handler.right.rotate-135[data-v-c9559332],.resize-handler.top.rotate-45[data-v-c9559332]{cursor:nesw-resize}.resize-handler.bottom.rotate-90[data-v-c9559332],.resize-handler.left-bottom.rotate-45[data-v-c9559332],.resize-handler.left-top.rotate-135[data-v-c9559332],.resize-handler.left.rotate-0[data-v-c9559332],.resize-handler.right-bottom.rotate-135[data-v-c9559332],.resize-handler.right-top.rotate-45[data-v-c9559332],.resize-handler.right.rotate-0[data-v-c9559332],.resize-handler.top.rotate-90[data-v-c9559332]{cursor:ew-resize}.border-line[data-v-1430bedc]{position:absolute;width:0;height:0;left:0;top:0;border:0 dashed #d14424}.border-line.top[data-v-1430bedc]{border-top-width:1px}.border-line.bottom[data-v-1430bedc]{border-bottom-width:1px}.border-line.left[data-v-1430bedc]{border-left-width:1px}.border-line.right[data-v-1430bedc]{border-right-width:1px}.border-line.wide[data-v-1430bedc]:before{content:"";position:absolute;background:transparent;cursor:move}.border-line.wide.top[data-v-1430bedc]:before{top:-8px;left:-8px;width:calc(100% + 16px);height:16px}.border-line.wide.bottom[data-v-1430bedc]:before{bottom:-8px;left:-8px;width:calc(100% + 16px);height:16px}.border-line.wide.left[data-v-1430bedc]:before{top:-8px;left:-8px;width:16px;height:calc(100% + 16px)}.border-line.wide.right[data-v-1430bedc]:before{top:-8px;right:-8px;width:16px;height:calc(100% + 16px)}.multi-select-operate[data-v-55c8df22]{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-db6d5ba6]{visibility:hidden}svg[data-v-60f9f1f7]{position:absolute;left:0;top:0;pointer-events:none;transform-origin:0 0}.anchor-line[data-v-60f9f1f7]{stroke-width:1px;stroke-dasharray:5 5;opacity:.5}.link-handler[data-v-2b77dbb0]{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-2b77dbb0]{max-width:300px;margin-right:20px;word-break:keep-all;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.btns[data-v-2b77dbb0]{display:flex;align-items:center}.btns .btn[data-v-2b77dbb0]{word-break:keep-all;cursor:pointer}.operate[data-v-3719d97c]{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-3719d97c]{opacity:0}.animation-index[data-v-3719d97c]{position:absolute;top:0;left:-24px;font-size:12px}.animation-index .index-item[data-v-3719d97c]{width:18px;height:18px;background-color:#fff;color:#d14424;border:1px solid #d14424;display:flex;justify-content:center;align-items:center}.animation-index .index-item+.index-item[data-v-3719d97c]{margin-top:5px}.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-81197444],.element-content img[data-v-0b1f9460]{position:absolute}.rotate-wrapper[data-v-81197444]{width:100%;height:100%}.element-content[data-v-81197444]{position:relative;padding:10px;line-height:1.5;word-break:break-word}.element-content .text[data-v-81197444]{position:relative}.base-element-shape[data-v-728513ea]{position:absolute}.rotate-wrapper[data-v-728513ea]{width:100%;height:100%}.element-content[data-v-728513ea]{width:100%;height:100%;position:relative}.element-content svg[data-v-728513ea]{transform-origin:0 0;overflow:visible}.shape-text[data-v-728513ea]{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-728513ea]{justify-content:flex-start}.shape-text.middle[data-v-728513ea]{justify-content:center}.shape-text.bottom[data-v-728513ea]{justify-content:flex-end}.base-element-line[data-v-2cd24911]{position:absolute}.element-content[data-v-2cd24911]{width:100%;height:100%;position:relative}.element-content svg[data-v-2cd24911]{transform-origin:0 0;overflow:visible}.base-element-chart[data-v-342d4bac]{position:absolute}.element-content[data-v-342d4bac],.rotate-wrapper[data-v-342d4bac]{width:100%;height:100%}.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-025539cf]{background-color:#fff;overflow:hidden}.elements[data-v-025539cf]{transform-origin:0 0}.background[data-v-025539cf]{width:100%;height:100%;background-position:50%;position:absolute}.placeholder[data-v-025539cf]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.tabs[data-v-6e74620a]{display:flex;justify-content:flex-start;align-items:center;border-bottom:1px solid #eee;margin-bottom:20px}.tab[data-v-6e74620a]{padding:0 10px 8px;border-bottom:2px solid transparent;cursor:pointer}.tab.active[data-v-6e74620a]{border-bottom:2px solid #d14424}.input[data-v-6e74620a]{width:100%;height:32px}.preview[data-v-6e74620a]{margin-top:12px}.thumbnail[data-v-6e74620a]{outline:1px solid rgba(209,68,36,.15);margin-top:5px}.btns[data-v-6e74620a]{margin-top:20px;text-align:right}.canvas[data-v-743d966c]{height:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;background-color:#f9f9f9;position:relative}.drag-mask[data-v-743d966c]{cursor:-webkit-grab;cursor:grab;position:absolute;top:0;right:0;bottom:0;left:0}.viewport-wrapper[data-v-743d966c]{position:absolute;box-shadow:0 0 15px 0 rgba(0,0,0,.1)}.viewport[data-v-743d966c]{position:absolute;top:0;left:0;transform-origin:0 0}.shape-pool[data-v-f3479f82]{width:340px;max-height:520px;overflow:auto;margin-top:-12px;margin-bottom:-12px;margin-right:-12px;padding-right:12px;padding-top:12px}.category-name[data-v-f3479f82]{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-f3479f82]{display:flex;flex-wrap:wrap;align-content:flex-start;margin-bottom:10px}.shape-item[data-v-f3479f82]{width:8%;margin-bottom:2.22222%;height:0;padding-bottom:8%;flex-shrink:0;position:relative;cursor:pointer}.shape-item[data-v-f3479f82]:not(:nth-child(10n)){margin-right:2.22222%}.shape-content[data-v-f3479f82]{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-f3479f82]:not(.outlined){stroke:#d14424}.shape-content:hover .shape-path.outlined[data-v-f3479f82]{fill:#d14424}.shape-content svg[data-v-f3479f82]:not(:root){overflow:visible}.line-pool[data-v-7fa1d412]{width:220px;overflow:auto;margin-bottom:-12px;margin-right:-12px;padding-right:12px}.category-name[data-v-7fa1d412]{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-7fa1d412]{display:flex;flex-wrap:wrap;align-content:flex-start;margin-bottom:10px}.line-item[data-v-7fa1d412]{width:19%;margin-bottom:1.25%;height:0;padding-bottom:19%;flex-shrink:0;position:relative;cursor:pointer}.line-item[data-v-7fa1d412]:not(:nth-child(5n)){margin-right:1.25%}.line-content[data-v-7fa1d412]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;color:#999}.line-content[data-v-7fa1d412]:hover{color:#d14424}.line-content svg[data-v-7fa1d412]:not(:root){overflow:visible}.chart-pool[data-v-64ca421e]{width:200px;margin-bottom:-5px;display:flex;flex-wrap:wrap;align-content:flex-start}.chart-item[data-v-64ca421e]{width:19%;margin-bottom:1.25%;height:0;padding-bottom:19%;flex-shrink:0;position:relative;cursor:pointer}.chart-item[data-v-64ca421e]:not(:nth-child(5n)){margin-right:1.25%}.chart-content[data-v-64ca421e]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;color:#999}.chart-content[data-v-64ca421e]: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-310c58ae]{width:480px}.tabs[data-v-310c58ae]{display:flex;justify-content:flex-start;align-items:center;border-bottom:1px solid #eee;margin-bottom:20px}.tab[data-v-310c58ae]{padding:0 10px 8px;border-bottom:2px solid transparent;cursor:pointer}.tab.active[data-v-310c58ae]{border-bottom:2px solid #d14424}.btns[data-v-310c58ae]{margin-top:10px;text-align:right}svg[data-v-cf0ca630]{overflow:hidden}.latex-editor[data-v-0c89cf75]{height:560px}.container[data-v-0c89cf75]{height:calc(100% - 50px);display:flex;padding-top:25px}.left[data-v-0c89cf75]{width:540px;height:100%;display:flex;flex-direction:column}.input-area[data-v-0c89cf75]{flex:1}.input-area textarea[data-v-0c89cf75]{height:100%!important;border-color:#eee!important;padding:10px!important}.input-area textarea[data-v-0c89cf75]:focus{box-shadow:none!important}.preview[data-v-0c89cf75]{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-0c89cf75]{color:#888}.preview-content[data-v-0c89cf75]{width:100%;height:100%;padding:10px;display:flex;justify-content:center;align-items:center}.right[data-v-0c89cf75]{height:100%;margin-left:20px;flex:1;border:1px solid #eee;background-color:#fff;flex-direction:column}.right[data-v-0c89cf75],.tabs[data-v-0c89cf75]{display:flex;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabs[data-v-0c89cf75]{height:40px;font-size:12px;flex-shrink:0}.tab[data-v-0c89cf75]{flex:1;display:flex;justify-content:center;align-items:center;background-color:#f9f9f9;border-bottom:1px solid #eee;cursor:pointer}.tab.active[data-v-0c89cf75]{background-color:#fff;border-bottom-color:#fff}.tab+.tab[data-v-0c89cf75]{border-left:1px solid #eee}.content[data-v-0c89cf75]{height:calc(100% - 40px);font-size:13px}.formula[data-v-0c89cf75]{height:100%;padding:12px;overflow:auto;overflow:overlay}.formula-item+.formula-item[data-v-0c89cf75]{margin-top:10px}.formula-item .formula-title[data-v-0c89cf75]{margin-bottom:5px}.formula-item .formula-item-content[data-v-0c89cf75]{width:246px;height:60px;padding:5px;display:flex;align-items:center;background-color:#f9f9f9;cursor:pointer}.symbol-tabs[data-v-0c89cf75]{display:flex;justify-content:space-around;align-items:center;border-bottom:1px solid #eee;margin:12px 12px 5px}.symbol-tab[data-v-0c89cf75]{padding:6px 10px;border-bottom:2px solid transparent;cursor:pointer}.symbol-tab.active[data-v-0c89cf75]{border-bottom:2px solid #d14424}.symbol[data-v-0c89cf75]{height:100%;display:flex;flex-direction:column}.symbol-pool[data-v-0c89cf75]{display:flex;flex-wrap:wrap;flex:1;padding:12px;overflow:auto;overflow:overlay}.symbol-item[data-v-0c89cf75]{display:flex;justify-content:center;align-items:center}.symbol-item[data-v-0c89cf75]:hover{background-color:#f9f9f9;cursor:pointer}.footer[data-v-0c89cf75]{height:50px;display:flex;justify-content:flex-end;align-items:flex-end}.footer .btn[data-v-0c89cf75]{margin-left:10px}.canvas-tool[data-v-e9ddaac8]{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-e9ddaac8]{display:flex;align-items:center}.add-element-handler[data-v-e9ddaac8]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex}.handler-item[data-v-e9ddaac8]{margin:0 10px;font-size:14px;cursor:pointer}.handler-item.disable[data-v-e9ddaac8]{opacity:.5}.handler-item.active[data-v-e9ddaac8]{color:#d14424}.right-handler[data-v-e9ddaac8]{display:flex;align-items:center}.right-handler .text[data-v-e9ddaac8]{width:40px;text-align:center;cursor:pointer}.right-handler .viewport-size[data-v-e9ddaac8]{font-size:13px}.preset-item[data-v-e9ddaac8]{padding:8px 20px;text-align:center;cursor:pointer}.preset-item[data-v-e9ddaac8]:hover{color:#d14424}.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-17d8eefc]{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-17d8eefc]{height:40px;font-size:12px;display:flex;flex-shrink:0;border-bottom:1px solid #eee;cursor:pointer}.add-slide .btn[data-v-17d8eefc]{flex:1;display:flex;justify-content:center;align-items:center}.add-slide .btn[data-v-17d8eefc]:hover{background-color:#f9f9f9}.add-slide .select-btn[data-v-17d8eefc]{width:30px;display:flex;justify-content:center;align-items:center;border-left:1px solid #eee}.add-slide .select-btn[data-v-17d8eefc]:hover{background-color:#f9f9f9}.add-slide .icon[data-v-17d8eefc]{margin-right:3px;font-size:14px}.thumbnail-list[data-v-17d8eefc]{padding:5px 0;flex:1;overflow:auto}.thumbnail-item[data-v-17d8eefc]{display:flex;justify-content:center;align-items:center;padding:5px 0}.thumbnail-item .thumbnail[data-v-17d8eefc]{outline:1px solid rgba(209,68,36,.15)}.thumbnail-item.active .label[data-v-17d8eefc]{color:#d14424}.thumbnail-item.active .thumbnail[data-v-17d8eefc],.thumbnail-item.selected .thumbnail[data-v-17d8eefc]{outline-color:#d14424}.label[data-v-17d8eefc]{font-size:12px;color:#999;width:20px;cursor:-webkit-grab;cursor:grab}.label.offset-left[data-v-17d8eefc]{position:relative;left:-4px}.label[data-v-17d8eefc]:active{cursor:-webkit-grabbing;cursor:grabbing}.row[data-v-5c7dbabc]{width:100%;display:flex;align-items:center;margin-bottom:10px}.slider[data-v-5c7dbabc]{flex:3}.color-btn[data-v-204d666d]{display:flex;align-items:center;justify-content:center;padding:0!important}.color-block[data-v-204d666d]{height:20px;margin-left:8px;flex:1;outline:1px dashed hsla(0,0%,40%,.12);background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAEBJREFUOE9jfPbs2X8GIoCkpCQRqhgYGEcNxBlOo2GIM2iGQLL5//8/UTnl+fPnxOWUUQNxhtNoGOLOKYM+2QAAh2Nq10DwkukAAAAASUVORK5CYII=)}.content[data-v-204d666d]{width:100%;height:100%}.color-btn-icon[data-v-204d666d]{width:30px;font-size:12px;margin-top:2px;color:#bfbfbf}.row[data-v-a6510a8a]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-a6510a8a]{text-align:right}.row[data-v-6bafb099]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-6bafb099]{text-align:right}.slider[data-v-6bafb099]{flex:3}.text-style-panel[data-v-eafe485c]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.row[data-v-eafe485c]{width:100%;display:flex;align-items:center;margin-bottom:10px}.preset-style[data-v-eafe485c]{display:flex;flex-wrap:wrap;margin-bottom:10px}.preset-style-item[data-v-eafe485c]{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-eafe485c]:hover{border-color:#d14424;color:#d14424;z-index:1}.preset-style-item[data-v-eafe485c]:nth-child(2n){margin-left:-1px}.preset-style-item[data-v-eafe485c]:nth-child(n+3){margin-top:-1px}.text-color-btn[data-v-eafe485c]{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:0}.text-color-block[data-v-eafe485c]{width:16px;height:3px;margin-top:1px}.font-size-btn[data-v-eafe485c]{padding:0}.link-popover[data-v-eafe485c]{width:240px}.link-popover .btns[data-v-eafe485c]{margin-top:10px;text-align:right}.row[data-v-07b41654],.row[data-v-7bd50f1a]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-07b41654]{text-align:right}.filter[data-v-07b41654]{font-size:12px}.filter-item[data-v-07b41654]{padding:8px 0;display:flex;justify-content:center;align-items:center}.filter-item .name[data-v-07b41654]{width:60px}.filter-item .filter-slider[data-v-07b41654]{flex:1;margin:0 6px}.row[data-v-54b23b9e]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-54b23b9e]{text-align:right}.origin-image[data-v-54b23b9e]{height:100px;background-size:contain;background-repeat:no-repeat;background-position:50%;background-color:#f9f9f9;margin-bottom:10px}.full-width-btn[data-v-54b23b9e]{width:100%;margin-bottom:10px}.btn-icon[data-v-54b23b9e]{margin-right:3px}.clip[data-v-54b23b9e]{width:260px;font-size:12px}.clip .title[data-v-54b23b9e]{margin-bottom:5px}.shape-clip[data-v-54b23b9e]{margin-bottom:10px;display:flex;flex-wrap:wrap;align-content:flex-start}.shape-clip-item[data-v-54b23b9e]{display:flex;justify-content:center;align-items:center;cursor:pointer;width:16%;margin-bottom:5%}.shape-clip-item[data-v-54b23b9e]:not(:nth-child(5n)){margin-right:5%}.shape-clip-item:hover .shape[data-v-54b23b9e]{background-color:#ccc}.shape-clip-item .shape[data-v-54b23b9e]{width:40px;height:40px;background-color:#e1e1e1}.shape-style-panel[data-v-42b07d61]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.row[data-v-42b07d61]{width:100%;display:flex;align-items:center;margin-bottom:10px}.text-color-btn[data-v-42b07d61]{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:0}.text-color-block[data-v-42b07d61]{width:16px;height:3px;margin-top:1px}.font-size-btn[data-v-42b07d61]{padding:0}.slider[data-v-42b07d61]{flex:3}.row[data-v-ad75cd30]{width:100%;display:flex;align-items:center;margin-bottom:10px}.line-btn[data-v-ad75cd30]{display:flex;align-items:center;justify-content:space-between;padding:0!important}.line-btn .line-wrapper[data-v-ad75cd30]{margin-left:8px}.line-wrapper[data-v-ad75cd30]{overflow:visible}.line-btn-icon[data-v-ad75cd30]{width:30px;font-size:12px;margin-top:2px;color:#bfbfbf}.preset-point-style[data-v-ad75cd30]{padding:0 10px}.preset-point-style+.preset-point-style[data-v-ad75cd30]{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}.chart-style-panel[data-v-1a47c852]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.row[data-v-1a47c852]{width:100%;display:flex;align-items:center;margin-bottom:10px}.full-width-btn[data-v-1a47c852]{width:100%}.btn-icon[data-v-1a47c852]{margin-right:3px}.color-btn-wrap[data-v-1a47c852]{position:relative}.delete-color-btn[data-v-1a47c852]{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-1a47c852]{width:250px;margin-bottom:-10px;display:flex;flex-wrap:wrap;align-content:flex-start}.preset-theme[data-v-1a47c852]{display:flex;cursor:pointer;width:48%;margin-bottom:4%}.preset-theme[data-v-1a47c852]:not(:nth-child(2n)){margin-right:4%}.preset-theme-color[data-v-1a47c852]{width:20px;height:20px}.preset-theme-color.select[data-v-1a47c852]{transform:scale(1.2);transition:transform .1s}.row[data-v-3da8fdb7]{width:100%;display:flex;align-items:center;margin-bottom:10px}.theme-switch[data-v-3da8fdb7]{margin-bottom:18px}.switch-wrapper[data-v-3da8fdb7]{text-align:right}.text-color-btn[data-v-3da8fdb7]{display:flex;flex-direction:column;justify-content:center;align-items:center}.text-color-block[data-v-3da8fdb7]{width:16px;height:3px;margin-top:1px}.set-count[data-v-3da8fdb7]{display:flex;justify-content:center;align-items:center}.set-count .btn[data-v-3da8fdb7]{padding:4px 8px}.set-count .count-text[data-v-3da8fdb7]{flex:1;text-align:center;margin:0 8px}.row[data-v-61bcaa2a],.row[data-v-e3a2bd30]{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-58a36be6]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-row[data-v-58a36be6]{height:32px}.switch-wrapper[data-v-58a36be6]{text-align:right}.row[data-v-e5e0fba2]{width:100%;display:flex;align-items:center;margin-bottom:10px}.text-color-btn[data-v-e5e0fba2]{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:0}.text-color-block[data-v-e5e0fba2]{width:16px;height:3px;margin-top:1px}.font-size-btn[data-v-e5e0fba2]{padding:0}.row[data-v-4f10fba6]{width:100%;display:flex;align-items:center;margin-bottom:10px}.title[data-v-4f10fba6]{margin-bottom:10px}.label[data-v-4f10fba6]{text-align:center}.btn-icon[data-v-4f10fba6]{margin-right:3px}.icon-btn[data-v-4f10fba6]{cursor:pointer}.element-animation-panel[data-v-11684c24]{height:100%;display:flex;flex-direction:column}.tabs[data-v-11684c24]{display:flex;justify-content:flex-start;align-items:center;border-bottom:1px solid #eee;margin-bottom:20px}.tab[data-v-11684c24]{width:33.33%;padding-bottom:8px;border-bottom:2px solid transparent;text-align:center;cursor:pointer}.tab.active[data-v-11684c24]{border-bottom:2px solid #d14424}.tab.in.active[data-v-11684c24]{border-bottom-color:#68a490}.tab.out.active[data-v-11684c24]{border-bottom-color:#d86344}.tab.attention.active[data-v-11684c24]{border-bottom-color:#e8b76a}.element-animation[data-v-11684c24]{height:32px;display:flex;align-items:center}.element-animation-btn[data-v-11684c24]{width:100%}.config-item[data-v-11684c24]{display:flex;align-items:center}.config-item+.config-item[data-v-11684c24]{margin-top:5px}.tip[data-v-11684c24]{height:32px;display:flex;justify-content:center;align-items:center;font-style:italic}.animation-pool[data-v-11684c24]{width:400px;height:500px;overflow-y:auto;overflow-x:hidden;font-size:12px;margin-right:-12px;position:relative}.animation-pool .mask[data-v-11684c24]{position:absolute;top:0;right:0;bottom:0;left:0}.animation-pool.in .type-title[data-v-11684c24]{border-left-color:#68a490;background-color:rgba(104,164,144,.15)}.animation-pool.out .type-title[data-v-11684c24]{border-left-color:#d86344;background-color:rgba(216,99,68,.15)}.animation-pool.attention .type-title[data-v-11684c24]{border-left-color:#e8b76a;background-color:rgba(232,183,106,.15)}.type-title[data-v-11684c24]{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-11684c24]{display:flex;flex-wrap:wrap;align-content:flex-start}.pool-item[data-v-11684c24]{width:24%;margin-bottom:1.33333%;margin-bottom:10px;height:40px;line-height:40px;text-align:center;cursor:pointer}.pool-item[data-v-11684c24]:not(:nth-child(4n)){margin-right:1.33333%}.animation-box[data-v-11684c24]{background-color:#f9f9f9}.animation-sequence[data-v-11684c24]{flex:1;padding-right:12px;margin-right:-12px;overflow:auto;overflow:overlay}.sequence-item[data-v-11684c24]{border:1px solid #eee;padding:10px 6px;border-radius:2px;margin-bottom:8px;transition:all .5s}.sequence-item.in.active[data-v-11684c24]{border-color:#68a490}.sequence-item.out.active[data-v-11684c24]{border-color:#d86344}.sequence-item.attention.active[data-v-11684c24]{border-color:#e8b76a}.sequence-item.active[data-v-11684c24]{height:auto}.sequence-item .sequence-content[data-v-11684c24]{display:flex;align-items:center;cursor:-webkit-grab;cursor:grab}.sequence-item .sequence-content[data-v-11684c24]:active{cursor:-webkit-grabbing;cursor:grabbing}.sequence-item .sequence-content .index[data-v-11684c24]{flex:1}.sequence-item .sequence-content .text[data-v-11684c24]{flex:6}.sequence-item .sequence-content .handler[data-v-11684c24]{flex:2;font-size:15px;text-align:right}.sequence-item .sequence-content .handler-btn[data-v-11684c24]{margin-left:8px;cursor:pointer}.slide-design-panel[data-v-26058d12]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.row[data-v-26058d12]{width:100%;display:flex;align-items:center;margin-bottom:10px}.title[data-v-26058d12]{margin-bottom:10px}.title.dropdown[data-v-26058d12]{display:flex;align-items:center;cursor:pointer}.title.dropdown .icon[data-v-26058d12]{margin-left:5px;transition:transform .1s}.title.dropdown:not(.active) .icon[data-v-26058d12]{transform:rotate(-90deg)}.background-image-wrapper[data-v-26058d12]{margin-bottom:10px}.background-image[data-v-26058d12]{height:0;padding-bottom:56.25%;border:1px dashed #eee;border-radius:2px;position:relative;transition:all .2s}.background-image[data-v-26058d12]:hover{border-color:#d14424;color:#d14424}.background-image .content[data-v-26058d12]{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-26058d12]{display:flex;flex-wrap:wrap;align-content:flex-start}.theme-item[data-v-26058d12]{width:22%;margin-bottom:4%;padding-bottom:22%;border-radius:2px;position:relative;cursor:pointer}.theme-item[data-v-26058d12]:not(:nth-child(4n)){margin-right:4%}.theme-item .theme-item-content[data-v-26058d12]{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-26058d12]:hover{box-shadow:0 0 4px #888}.theme-item .text[data-v-26058d12]{font-size:16px}.theme-item .color-block[data-v-26058d12]{width:28px;height:10px;margin-top:5px}.slider[data-v-26058d12]{flex:3}.animation-pool[data-v-78e88e36]{display:flex;flex-wrap:wrap;margin-bottom:10px}.animation-item[data-v-78e88e36]{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-78e88e36]{border-color:#d14424;z-index:1}.animation-item[data-v-78e88e36]:nth-child(2n){margin-left:-1px}.animation-item[data-v-78e88e36]:nth-child(n+3){margin-top:-1px}.animation-block[data-v-78e88e36]{width:64px;height:36px;background:#666;position:relative;overflow:hidden}.animation-block.fade[data-v-78e88e36]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:fade-78e88e36 .3s linear;animation:fade-78e88e36 .3s linear}.animation-block.slideX[data-v-78e88e36]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:slideX-78e88e36 .3s linear;animation:slideX-78e88e36 .3s linear}.animation-block.slideY[data-v-78e88e36]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:slideY-78e88e36 .3s linear;animation:slideY-78e88e36 .3s linear}.animation-text[data-v-78e88e36]{font-size:12px;color:#333;text-align:center}@-webkit-keyframes fade-78e88e36{0%{opacity:0}to{opacity:1}}@keyframes fade-78e88e36{0%{opacity:0}to{opacity:1}}@-webkit-keyframes slideX-78e88e36{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slideX-78e88e36{0%{transform:translateX(100%)}to{transform:translateX(0)}}@-webkit-keyframes slideY-78e88e36{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideY-78e88e36{0%{transform:translateY(100%)}to{transform:translateY(0)}}.row[data-v-0a74a690]{width:100%;display:flex;align-items:center;margin-bottom:10px}.symbol-panel[data-v-e93c4822]{height:100%;display:flex;flex-direction:column}.symbol-panel .tabs[data-v-e93c4822]{display:flex;justify-content:space-around;align-items:center;border-bottom:1px solid #eee;margin-bottom:8px}.symbol-panel .tab[data-v-e93c4822]{padding:6px 10px 8px;border-bottom:2px solid transparent;cursor:pointer}.symbol-panel .tab.active[data-v-e93c4822]{border-bottom:2px solid #d14424}.symbol-panel .pool[data-v-e93c4822]{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-e93c4822]{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-e93c4822]:not(:nth-child(5n)){margin-right:2.5%}.symbol-panel .symbol-item[data-v-e93c4822]:hover{color:#d14424}.symbol-panel .symbol-item .symbol[data-v-e93c4822]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;background-color:#fff}.toolbar[data-v-017ca85e]{border-left:1px solid #eee;background-color:#fff;display:flex;flex-direction:column}.tabs[data-v-017ca85e]{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-017ca85e]{flex:1;display:flex;justify-content:center;align-items:center;background-color:#f9f9f9;border-bottom:1px solid #eee;cursor:pointer}.tab.active[data-v-017ca85e]{background-color:#fff;border-bottom-color:#fff}.tab+.tab[data-v-017ca85e]{border-left:1px solid #eee}.content[data-v-017ca85e]{padding:12px;font-size:13px;overflow:auto;overflow:overlay}.remark[data-v-7ed67bb3]{position:relative;border-top:1px solid #eee;background-color:#f9f9f9;line-height:1.5}.remark textarea[data-v-7ed67bb3]{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-7ed67bb3]{height:7px;position:absolute;top:-3px;left:0;right:0;cursor:n-resize;z-index:2}.export-img-dialog[data-v-61e92928]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.thumbnails-view[data-v-61e92928],.thumbnails-view[data-v-61e92928]:after{position:absolute;top:0;right:0;bottom:0;left:0}.thumbnails-view[data-v-61e92928]:after{content:"";background-color:#fff}.configs[data-v-61e92928]{width:350px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center;z-index:1}.configs .row[data-v-61e92928]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-61e92928]{width:100px;position:relative}.configs .title[data-v-61e92928]:after{content:attr(data-range);position:absolute;top:20px;left:0}.configs .config-item[data-v-61e92928]{flex:1}.btns[data-v-61e92928]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-61e92928]{flex:1}.btns .close[data-v-61e92928]{width:100px;margin-left:10px}.export-json-dialog[data-v-54705363]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.preview[data-v-54705363]{width:100%;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center;background-color:#f9f9f9;color:#0451a5}.btns[data-v-54705363]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-54705363]{flex:1}.btns .close[data-v-54705363]{width:100px;margin-left:10px}[data-v-54705363]::-webkit-scrollbar{width:10px;height:10px;background-color:#f9f9f9}[data-v-54705363]::-webkit-scrollbar-thumb{background-color:#c1c1c1}.export-pdf-dialog[data-v-7c83ddb5]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.thumbnails-view[data-v-7c83ddb5],.thumbnails-view[data-v-7c83ddb5]:after{position:absolute;top:0;right:0;bottom:0;left:0}.thumbnails-view[data-v-7c83ddb5]:after{content:"";background-color:#fff}.thumbnail.break-page[data-v-7c83ddb5]{-moz-column-break-after:page;break-after:page}.configs[data-v-7c83ddb5]{width:300px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center;z-index:1}.configs .row[data-v-7c83ddb5]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-7c83ddb5]{width:100px}.configs .config-item[data-v-7c83ddb5]{flex:1}.configs .tip[data-v-7c83ddb5]{font-size:12px;color:#aaa;line-height:1.8;margin-top:25px}.btns[data-v-7c83ddb5]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-7c83ddb5]{flex:1}.btns .close[data-v-7c83ddb5]{width:100px;margin-left:10px}.export-pptx-dialog[data-v-dad79818]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.configs[data-v-dad79818]{width:350px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center}.configs .row[data-v-dad79818]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-dad79818]{width:100px;position:relative}.configs .title[data-v-dad79818]:after{content:attr(data-range);position:absolute;top:20px;left:0}.configs .config-item[data-v-dad79818]{flex:1}.btns[data-v-dad79818]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-dad79818]{flex:1}.btns .close[data-v-dad79818]{width:100px;margin-left:10px}.export-pptist-dialog[data-v-1e43fa60]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.configs[data-v-1e43fa60]{width:350px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center}.configs .row[data-v-1e43fa60]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-1e43fa60]{width:100px;position:relative}.configs .title[data-v-1e43fa60]:after{content:attr(data-range);position:absolute;top:20px;left:0}.configs .config-item[data-v-1e43fa60]{flex:1}.configs .tip[data-v-1e43fa60]{font-size:12px;color:#aaa;line-height:1.8;margin-top:25px}.btns[data-v-1e43fa60]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-1e43fa60]{flex:1}.btns .close[data-v-1e43fa60]{width:100px;margin-left:10px}.export-dialog[data-v-17be277c]{margin:-24px}.tabs[data-v-17be277c]{height:50px;font-size:12px;flex-shrink:0;display:flex;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-top-left-radius:2px;border-top-right-radius:2px;overflow:hidden}.tab[data-v-17be277c]{flex:1;display:flex;justify-content:center;align-items:center;background-color:#f9f9f9;border-bottom:1px solid #eee;cursor:pointer}.tab.active[data-v-17be277c]{background-color:#fff;border-bottom-color:#fff}.tab+.tab[data-v-17be277c]{border-left:1px solid #eee}.content[data-v-17be277c]{height:460px;padding:12px;font-size:13px;overflow:auto;overflow:overlay}.pptist-editor[data-v-5ff9efcc]{height:100%}.layout-header[data-v-5ff9efcc]{height:40px}.layout-content[data-v-5ff9efcc]{height:calc(100% - 40px);display:flex}.layout-content-left[data-v-5ff9efcc]{width:160px;height:100%;flex-shrink:0}.layout-content-center[data-v-5ff9efcc]{width:calc(100% - 420px)}.layout-content-center .center-top[data-v-5ff9efcc]{height:40px}.layout-content-right[data-v-5ff9efcc]{width:260px;height:100%}.screen-element-video[data-v-0ef8b6c0]{position:absolute}.element-content[data-v-0ef8b6c0],.rotate-wrapper[data-v-0ef8b6c0]{width:100%;height:100%}.screen-element-audio[data-v-1adba489]{position:absolute}.rotate-wrapper[data-v-1adba489]{width:100%;height:100%}.element-content[data-v-1adba489]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.element-content:hover .audio-player[data-v-1adba489]{display:block}.audio-icon[data-v-1adba489]{cursor:pointer}.audio-player[data-v-1adba489]{position:absolute;display:none}.link[data-v-0b036cf9]{cursor:pointer}.screen-slide[data-v-19ab4349]{position:absolute;top:0;left:0;transform-origin:0 0;overflow:hidden}.background[data-v-19ab4349]{width:100%;height:100%;background-position:50%;position:absolute}.screen-slide-list[data-v-01900375]{background:#1d1d1d;position:relative;width:100%;height:100%}.slide-item[data-v-01900375]{position:absolute;top:0;left:0;width:100%;height:100%}.slide-item.current[data-v-01900375]{z-index:2}.slide-item.hide[data-v-01900375]{opacity:0}.slide-item.turning-mode-no.before[data-v-01900375]{transform:translateY(-100%)}.slide-item.turning-mode-no.after[data-v-01900375]{transform:translateY(100%)}.slide-item.turning-mode-fade[data-v-01900375]{transition:opacity .75s}.slide-item.turning-mode-fade.after[data-v-01900375],.slide-item.turning-mode-fade.before[data-v-01900375]{pointer-events:none;opacity:0}.slide-item.turning-mode-slideX[data-v-01900375]{transition:transform .35s}.slide-item.turning-mode-slideX.before[data-v-01900375]{transform:translateX(-100%)}.slide-item.turning-mode-slideX.after[data-v-01900375]{transform:translateX(100%)}.slide-item.turning-mode-slideY[data-v-01900375]{transition:transform .35s}.slide-item.turning-mode-slideY.before[data-v-01900375]{transform:translateY(-100%)}.slide-item.turning-mode-slideY.after[data-v-01900375]{transform:translateY(100%)}.slide-content[data-v-01900375]{background-color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;justify-content:center;align-items:center}.slide-thumbnails[data-v-11e5b856]{width:100%;height:100%;position:fixed;top:0;left:0;background-color:#1a1a1a;z-index:99}.return-button[data-v-11e5b856]{height:60px;padding:20px 30px 0}.return-button .icon[data-v-11e5b856]{color:#fff;font-size:36px;cursor:pointer}.return-button .icon[data-v-11e5b856]:hover{color:#d14424}.slide-thumbnails-content[data-v-11e5b856]{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-11e5b856]{width:150px;outline:2px solid #aaa;margin-right:12px;margin-bottom:12px}.slide-thumbnails-content .thumbnail[data-v-11e5b856]:hover{outline-color:#d14424}.slide-thumbnails-content .thumbnail.active[data-v-11e5b856]{outline-width:3px;outline-color:#d14424}.writing-board[data-v-9ac1670a]{z-index:8;cursor:none;position:absolute;top:0;right:0;bottom:0;left:0}.blackboard[data-v-9ac1670a]{width:100%;height:100%;background-color:#0f392b}.canvas[data-v-9ac1670a]{position:absolute;top:0;left:0}.eraser[data-v-9ac1670a],.pen[data-v-9ac1670a]{pointer-events:none;position:absolute;z-index:9}.eraser .icon[data-v-9ac1670a],.pen .icon[data-v-9ac1670a]{filter:drop-shadow(2px 2px 2px #555)}.eraser[data-v-9ac1670a]{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-3ca1d362]{font-size:12px;z-index:10;position:absolute;top:0;right:0;bottom:0;left:0}.writing-board-tool .writing-board-wrap[data-v-3ca1d362]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.writing-board-tool .tools[data-v-3ca1d362]{height:50px;position:fixed;z-index:11;padding:12px;background-color:#eee;border-radius:2px;display:flex;align-items:center}.writing-board-tool .btn[data-v-3ca1d362]{padding:5px 10px;cursor:pointer}.writing-board-tool .btn[data-v-3ca1d362]:hover{color:#d14424}.writing-board-tool .btn.active[data-v-3ca1d362]{background-color:rgba(209,68,36,.5);color:#fff}.writing-board-tool .icon[data-v-3ca1d362]{font-size:20px}.writing-board-tool .colors[data-v-3ca1d362]{display:flex;padding:0 10px}.writing-board-tool .color[data-v-3ca1d362]{width:16px;height:16px;border-radius:2px;cursor:pointer}.writing-board-tool .color[data-v-3ca1d362]:hover{transform:scale(1.15)}.writing-board-tool .color.active[data-v-3ca1d362]{transform:scale(1.3)}.writing-board-tool .color+.color[data-v-3ca1d362]{margin-left:8px}.base-view[data-v-54670d0c]{width:100%;height:100%}.base-view.laser-pen[data-v-54670d0c]{cursor:url(data:image/png;base64,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) 20 20,default!important}.tools-left[data-v-54670d0c]{position:fixed;bottom:8px;left:8px;font-size:25px;color:#666;z-index:10}.tools-left .tool-btn[data-v-54670d0c]{opacity:.35;cursor:pointer}.tools-left .tool-btn[data-v-54670d0c]:hover{opacity:.9}.tools-left .tool-btn+.tool-btn[data-v-54670d0c]{margin-left:8px}.tools-right[data-v-54670d0c]{height:66px;position:fixed;bottom:-66px;right:0;z-index:5;padding:8px;transition:bottom .2s}.tools-right.visible[data-v-54670d0c]{bottom:0}.tools-right[data-v-54670d0c]:after{content:"";width:100%;height:66px;position:absolute;left:0;top:-66px}.tools-right .content[data-v-54670d0c]{width:100%;height:100%;display:flex;justify-content:center;align-items:center;border-radius:2px;font-size:25px;background-color:#fff;color:#41464b;padding:8px 10px;box-shadow:0 2px 12px 0 rgba(56,56,56,.2);border:1px solid #e2e6ed}.tools-right .tool-btn[data-v-54670d0c]{cursor:pointer}.tools-right .tool-btn.active[data-v-54670d0c],.tools-right .tool-btn[data-v-54670d0c]:hover{color:#d14424}.tools-right .tool-btn+.tool-btn[data-v-54670d0c]{margin-left:15px}.tools-right .page-number[data-v-54670d0c]{font-size:13px;padding:8px 12px;cursor:pointer}.presenter-view[data-v-ce50b150]{width:100%;height:100%;display:flex}.toolbar[data-v-ce50b150]{width:70px;height:100%;background-color:#fff;border-right:1px solid #eee;font-size:12px;margin:20px 0}.toolbar .tool-btn[data-v-ce50b150]{display:flex;flex-direction:column;justify-content:center;align-items:center;cursor:pointer}.toolbar .tool-btn+.tool-btn[data-v-ce50b150]{margin-top:22px}.toolbar .tool-btn.active[data-v-ce50b150],.toolbar .tool-btn[data-v-ce50b150]:hover{color:#d14424}.toolbar .divider[data-v-ce50b150]{width:70%;min-width:70%;margin:24px 15%}.toolbar .tool-icon[data-v-ce50b150]{margin-bottom:8px;font-size:22px}.content[data-v-ce50b150]{width:calc(100% - 430px);height:100%;background-color:#1d1d1d}.slide-list-wrap[data-v-ce50b150]{height:calc(100% - 190px);margin:20px;overflow:hidden;position:relative}.slide-list-wrap.laser-pen[data-v-ce50b150]{cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABHNCSVQICAgIfAhkiAAACCJJREFUWIXtmLuO3MYShv/qZl9IzqwXo2BkSAtsIK+z8wwOBcOJ9C56Cr2LlThQcgBnfofVBnswXlgTaLHaIdk3dtcJOKOzd8n2MeDABRDDgKz/m+pudv0N/BN/Luj/kYSZJQBxJR8DKESU/2zuPwTIzAKnpxqHhxUuLir0vYSUAkS0ewA5F7Rtxv7+iNPTEYeHkYjKXwrIzHK9XtultRohaKSkkFIVhqGCEAIxTvm0ZpRSTNOMUGqEUgnGxLX3cblc+t9T2S8GXK1W9dP53OLiwoLZhMtLQ4CiGBVKkchZIOcpn5QMKQuEyKx1YiCZvb0AooD9ff/rZuMPDg7cl+hWn3uAmQWABut1g/PzOnZdTd5bMY6aQtAIQQGQGEd5bYirKgPIZExiY2IKIbK1XpeinzaN2s7b4XPD/iAgM0ucn7fYbNrQ963Juaauq8k5i3E01PcG46iQs0TO1wGlzJAyo6oS2jagqgLGUQNQwTllvJeYzwUz9w8N+b2AzCxwft6i72fBuZkYhnbcbBqKsSbvazhnEIJBzqrEqGQpAlO1AaKShShC6wQpE4UQUNcBKenReyXm8yoIIYwQtNXq7qvkQxVssNm0wbmZuLiYUQgtnGtps2ngfQ3vLaVkEKOmGKcqMtMWkEnKTFonaB3Z+4AQPFmreD6vSAghxpECAFMKY7EoALovBlytVjXW6yb0fSuGoaUQWrq8nKHvW/R9S943xbmavJ+qmNIO8FMFIWXert7A1gYxjprHsSLmaTHt7UF0HYdSilmv82q1ynctnFuAzCzx8aPF+Xltcq7HzaaBcy36vsUwzKjrZhiGRgxDA+8tUjIUgkbOEqVMgEIUkjLDmAjvgwjBI6WKxlHybp5KyVRKMcaMGIb0dLFIzBxvzsdbgOv12i69t7HrpgURY02bTYO+b6nrZui6qZLONdz3jTg5ORDHx0f48OExQpgBAIzp8OjRez46Oi7Pnq1ot5BKETQVgYmosJRj6rrEQNJCxLX3EUB/LyAzC3z8qOGcIe8tOWdpmm81ed9gGJpdJdF1rXz79jucnX1za454P8fZ2ZzOzr6Rx8fvyvPnP38afiEKVVXmqhrJ+wSlIqoqYj73S2s1M7urC0ZcS3x6qhGCDpeXBuOoMY4Gzhl4b4tzNYahgXMNuq4Vb978cCfczTg7+0a8efMDuq6Fcw2GoSnO1fDewjmDcTQYx0kzBI3TU3319euAh4cVUlIEKApBU98bhGAoJSO8N/Dect834u3b73B+/vVn4XZxfv61ePv2O+77Bt5b4b2hlKbcfW8oBE2AQkoKh4fXRvU64MVFhZQqilEhBLX9CCvEqLer1YiTk4MvqtxdlTw5OcAWDDFq5DxphDBtmSlNzcddgMws0fcyDEOFUiQAiZxliVGVGFVJSXEImo6Pj3433Dbo+PiIQ9AlJbXLi5wnrVIm7b6X223wOiAAASkFhBDIWWAcJXKWshQhcpYiZ0k5S3z48PhO9ZcvgV9+ma6XL+8m/PDhMW1ziW1u5Cy3WpO2lOIq11VAAhEhRkLO0z0RgVmAefotRXz6lNyMV6+AxWK6Xr26GzCEGXZb4i7nTifnSXv6Tn7qssTdmf4+cRWQwczQmiHldM/MICogmn6FKDDmzj0Tr18D5+fT9fr13WrGdBCiXMu505Fy0mZmTJYBwPUPdUHOBaUUSFlQVRlS5rzbtqTMJGXGo0fvcXY2vyX+44/T9VA8evSepcy8zcdCFDG1ZBlSTto5FwC3P9RElNG22TTNCCEygAwps9A6Ca2TUCqRMZGPjo4fprg/+OjomIyJQqm0ywspJy0hJu22zVf34+tzcH9/hFIja51gTEJVJUiZoHWEMQFKhfLs2QpPnrz73XRPnrwrz56toFSAMQFaR0g5aRiTWOsEpUbs749XX7u51Y1QKjGQ2JjIbRtgTGClQrE2wFpPbTuU589/xmLx2xfDLRa/lefPf6a2HWCtL9YG3oJy2wY2JjKQoFTC6ekDgIeHEcZEs7cXUFURVTV1wtZ6UdcOTTOgrgfMZn158eKnL6rkkyfvyosXP2E261HXA5pmEHXtYK1HXU9WoKomTWMiDg/j1devbStEVN6/fx+XRIGt9RhHjZQ0Wat4HCsax//1fEQlf//9v8XJyTF9rt1q2+mPtW2PphnY2gHWOrbWcV17ttaDKKy9j4/398u9gACwXC49Pn7UuhQNQI3eT206s2DadptCFEiZqaoS/+tfvnz77X/oRsPKUmYyJpJSAdZ6NM2Aphl4Pu/QND3P5wO0dmo2c5jNHPb3/fKrr/xNnluARJRXq5V/2jQqOKfE1kPsPC8zM1VVLkqNwpiAEAxbq+hGy89SZtq2/MXaIOrasbUDmqZH2/Zo257bdghSOtM07tfNxh/s799yd3d6koODA8fM0ngvw9bgYG9vatOJClfVSFUVYe3UldxhmiBlxtY0kVLTlLHW8Xw+oG17NqYvs1lv6rrHcjkcEN1p5B9ydQPmc2GEoABAdB1TKYWlnDph5wJvbSdPpwvXbCcLUXhrO2FMQF0HttZBa8dtO5TZrDdt26FtewDDfRD3AhJRYeYemKxh2Bqc1HVTm17Xn4y7yFnyDeMurhh33hp3rmuvZjMXpHSmrqehXiz6h04XHjxZIKLMzB0Wi2LW64xhSAwkVFXEOGpo/dmjD2yPPlBVka31mM2caRqH5XLAnz362FUSQLdarfLTxSJpISLmcx8uLw217R8/PLpnzt3S/5KHdvG3Pn67Afr3PMB8APgvOwL+J/5s/BeEBm1u1Gu4+QAAAABJRU5ErkJggg==) 20 20,default!important}.thumbnails[data-v-ce50b150]{height:150px;padding:15px;white-space:nowrap;overflow-x:auto;overflow-y:hidden;border-top:1px solid #3a3a3a}.thumbnail[data-v-ce50b150]{display:inline-block;outline:2px solid #aaa}.thumbnail+.thumbnail[data-v-ce50b150]{margin-left:10px}.thumbnail[data-v-ce50b150]:hover{outline-color:#d14424}.thumbnail.active[data-v-ce50b150]{outline-width:3px;outline-color:#d14424}.remark[data-v-ce50b150]{width:360px;height:100%;position:relative;background-color:#2a2a2a;border-left:1px solid #3a3a3a;color:#fff}.remark .header[data-v-ce50b150]{height:60px;padding:0 20px;display:flex;justify-content:space-between;align-items:center;font-size:18px;border-bottom:1px solid #3a3a3a}.remark .remark-content[data-v-ce50b150]{height:calc(100% - 60px);padding:20px;line-height:1.5;overflow:auto;overflow:overlay}.remark .remark-scale[data-v-ce50b150]{position:absolute;right:5px;bottom:5px;font-size:22px;display:flex}.remark .scale-btn[data-v-ce50b150]{width:40px;height:40px;display:flex;justify-content:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}.remark .scale-btn.disable[data-v-ce50b150]{color:#666;cursor:no-drop}.remark .scale-btn[data-v-ce50b150]:not(.disable):hover{background-color:#333}[data-v-ce50b150]::-webkit-scrollbar{width:0;height:0}.pptist-screen[data-v-18f794c8]{width:100%;height:100%}.mobile-operate[data-v-10f40a30]{position:absolute;z-index:100;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mobile-thumbnails[data-v-0b484044]{padding:10px;white-space:nowrap;overflow-x:auto;overflow-y:hidden}.thumbnail-item[data-v-0b484044]{position:relative;display:inline-block;outline:2px solid #aaa}.thumbnail-item+.thumbnail-item[data-v-0b484044]{margin-left:10px}.thumbnail-item.active[data-v-0b484044]{outline-color:#d14424}.thumbnail-item.active .label[data-v-0b484044]{background-color:#d14424}.thumbnail-item .label[data-v-0b484044]{min-width:20px;height:14px;line-height:14px;position:absolute;right:-1px;top:-1px;color:#fff;background-color:#aaa;z-index:1;font-size:12px;text-align:center;padding:0 5px}[data-v-0b484044]::-webkit-scrollbar{width:0;height:0}.slide-toolbar[data-v-70590190]{height:230px;background-color:#fff;box-shadow:0 0 15px 0 rgba(0,0,0,.1);display:flex;flex-direction:column}.remark[data-v-70590190]{position:relative;flex:1;border-bottom:1px solid #eee;line-height:1.5}.remark textarea[data-v-70590190]{width:100%;height:100%;overflow-y:auto;resize:none;border:0;outline:0;padding:8px 10px;font-size:12px;background-color:transparent;position:absolute;top:0;right:0;bottom:0;left:0}.toolbar[data-v-70590190]{height:90px;border-bottom:1px solid #eee;padding:10px}.row[data-v-70590190]{width:100%;display:flex;align-items:center;margin-bottom:5px}.row .icon[data-v-70590190]{margin-right:3px}.element-toolbar[data-v-332b9382]{width:100%;height:240px;position:absolute;z-index:99;bottom:0;left:0;background-color:#fff;box-shadow:0 0 15px 0 rgba(0,0,0,.1);display:flex;flex-direction:column;-webkit-animation:slideInUp-332b9382 .15s;animation:slideInUp-332b9382 .15s}.tabs[data-v-332b9382]{display:flex;justify-content:flex-start;align-items:center;border-bottom:1px solid #eee;font-size:12px;font-weight:700;margin-bottom:10px}.tab[data-v-332b9382]{width:30%;padding:10px 10px 12px;margin:0 10%;border-bottom:2px solid transparent;text-align:center;cursor:pointer}.tab.active[data-v-332b9382]{border-bottom:2px solid #d14424}@-webkit-keyframes slideInUp-332b9382{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideInUp-332b9382{0%{transform:translateY(100%)}to{transform:translateY(0)}}.content[data-v-332b9382]{padding:10px;flex:1;overflow:auto}.row[data-v-332b9382]{width:100%;display:flex;align-items:center;margin-bottom:10px}.row .icon[data-v-332b9382]{margin-right:3px}.row-block[data-v-332b9382]{margin-bottom:10px;background-color:#f9f9f9;border-radius:2px;padding:10px}.label[data-v-332b9382]{font-size:13px;margin-bottom:20px;margin-left:6px}.colors[data-v-332b9382]{display:flex;flex-wrap:wrap;align-content:flex-start}.color[data-v-332b9382]{width:12%;margin-bottom:.57143%;padding-bottom:5px;display:flex;justify-content:center;align-items:center}.color[data-v-332b9382]:not(:nth-child(8n)){margin-right:.57143%}.color .color-block[data-v-332b9382]{width:30px;height:30px;border-radius:50%}.mobile-editor-header[data-v-2c0b2c5e]{height:50px;background-color:#fff;display:flex;justify-content:space-between;align-items:center;padding:0 18px;font-size:13px;box-shadow:0 0 15px 0 rgba(0,0,0,.1)}.history[data-v-2c0b2c5e]{display:flex;justify-content:center;align-items:center}.history-item[data-v-2c0b2c5e]{margin-right:20px}.history-item.disable[data-v-2c0b2c5e]{opacity:.5}.mobile-editor[data-v-f9ea6e88]{height:100%;position:relative;background-color:#f9f9f9}.content[data-v-f9ea6e88]{height:calc(100% - 280px);display:flex;justify-content:center;align-items:center}.viewport[data-v-f9ea6e88]{transform-origin:0 0}.viewport-wrapper[data-v-f9ea6e88]{position:relative;box-shadow:0 0 15px 0 rgba(0,0,0,.1)}.background[data-v-f9ea6e88]{width:100%;height:100%;background-position:50%;position:absolute}.mobile-player[data-v-2845ccb6]{transform-origin:0 0;background-color:#1d1d1d;position:relative}.screen-slide-list[data-v-2845ccb6]{position:relative;width:100%;height:100%}.slide-item[data-v-2845ccb6]{position:absolute;top:0;left:0;width:100%;height:100%}.slide-item.current[data-v-2845ccb6]{z-index:2}.slide-item.hide[data-v-2845ccb6]{opacity:0}.slide-item.turning-mode-no.before[data-v-2845ccb6]{transform:translateY(-100%)}.slide-item.turning-mode-no.after[data-v-2845ccb6]{transform:translateY(100%)}.slide-item.turning-mode-fade[data-v-2845ccb6]{transition:opacity .75s}.slide-item.turning-mode-fade.after[data-v-2845ccb6],.slide-item.turning-mode-fade.before[data-v-2845ccb6]{pointer-events:none;opacity:0}.slide-item.turning-mode-slideX[data-v-2845ccb6]{transition:transform .35s}.slide-item.turning-mode-slideX.before[data-v-2845ccb6]{transform:translateX(-100%)}.slide-item.turning-mode-slideX.after[data-v-2845ccb6]{transform:translateX(100%)}.slide-item.turning-mode-slideY[data-v-2845ccb6]{transition:transform .35s}.slide-item.turning-mode-slideY.before[data-v-2845ccb6]{transform:translateY(-100%)}.slide-item.turning-mode-slideY.after[data-v-2845ccb6]{transform:translateY(100%)}.slide-content[data-v-2845ccb6]{background-color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;justify-content:center;align-items:center}.header[data-v-2845ccb6]{width:100%;height:40px;line-height:40px;padding:0 15px;position:absolute;top:0;left:0;z-index:99;background-color:rgba(29,29,29,.7);text-align:right;font-size:13px;color:#fff;-webkit-animation:slideInDown-2845ccb6 .15s;animation:slideInDown-2845ccb6 .15s}.header .back[data-v-2845ccb6]{height:100%}.thumbnails[data-v-2845ccb6]{width:100%;position:absolute;bottom:0;left:0;z-index:99;background-color:rgba(29,29,29,.7);overflow:auto!important;-webkit-animation:slideInUp-2845ccb6 .15s;animation:slideInUp-2845ccb6 .15s}@-webkit-keyframes slideInUp-2845ccb6{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideInUp-2845ccb6{0%{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes slideInDown-2845ccb6{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes slideInDown-2845ccb6{0%{transform:translateY(-100%)}to{transform:translateY(0)}}.mobile-preview[data-v-04d332cb]{height:100%;background-color:#f9f9f9}.tip[data-v-04d332cb]{position:fixed;top:0;left:0;right:0;z-index:99}.thumbnail-list[data-v-04d332cb]{height:calc(100% - 50px);padding:10px;overflow:auto}.thumbnail-item[data-v-04d332cb]{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-04d332cb]{margin-top:10px}.menu[data-v-04d332cb]{height:50px;position:relative;box-shadow:0 -2px 4px 0 rgba(51,51,51,.05);background:#fff;display:flex;justify-content:center;align-items:center}.menu .menu-item[data-v-04d332cb]{width:50%;height:100%;display:flex;justify-content:center;align-items:center;font-size:13px}.menu .menu-item .icon[data-v-04d332cb]{margin-right:8px;font-size:18px}#app,.mobile[data-v-efaecbfe]{height:100%}.ProseMirror,.ProseMirror-static{outline:0;border:0;font-size:20px;word-break:break-word;white-space:normal}.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,.ProseMirror p{text-indent:var(--textIndent)}.ProseMirror-static p+p,.ProseMirror p+p{margin-top:var(--paragraphSpace)}.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-static [data-indent="1"],.ProseMirror [data-indent="1"]{padding-left:48px}.ProseMirror-static [data-indent="2"],.ProseMirror [data-indent="2"]{padding-left:96px}.ProseMirror-static [data-indent="3"],.ProseMirror [data-indent="3"]{padding-left:144px}.ProseMirror-static [data-indent="4"],.ProseMirror [data-indent="4"]{padding-left:192px}.ProseMirror-static [data-indent="5"],.ProseMirror [data-indent="5"]{padding-left:240px}.ProseMirror-static [data-indent="6"],.ProseMirror [data-indent="6"]{padding-left:288px}.ProseMirror-static [data-indent="7"],.ProseMirror [data-indent="7"]{padding-left:336px}.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/素材集市酷方体.8d33b29e.ttf)}@font-face{font-family:途牛类圆体;src:url(../fonts/途牛类圆体.abaea3c4.ttf)}@font-face{font-family:锐字真言体;src:url(../fonts/锐字真言体.1583afec.ttf)}.input[data-v-0a87e9c4]{display:none}.checkbox-button[data-v-4074d5c2]{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-4074d5c2]:hover{color:#d14424}.checkbox-button.checked[data-v-4074d5c2]{color:#fff;background-color:#d14424;border-color:#d14424}.checkbox-button.checked[data-v-4074d5c2]:hover{background:rgba(209,68,36,.9);border-color:rgba(209,68,36,.9)}.checkbox-button-group[data-v-adf706aa]{display:flex;align-items:center}.checkbox-button-group[data-v-adf706aa] .checkbox-button{border-radius:0;border-left-width:0;border-right-width:0;display:inline-block}.checkbox-button-group[data-v-adf706aa] .checkbox-button+.checkbox-button{border-left-width:1px}.checkbox-button-group[data-v-adf706aa] .checkbox-button:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px;border-left-width:1px}.checkbox-button-group[data-v-adf706aa] .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-20bfe6b0]{width:100%;position:relative;overflow:hidden;text-align:center;font-size:14px}.editable-input[data-v-20bfe6b0]:after{content:"#";position:absolute;left:0;top:50%;transform:translateY(-50%);color:#999}.input-content[data-v-20bfe6b0]{width:100%;padding:3px;border:0;border-bottom:1px solid #ddd;outline:none;text-align:center}.input-label[data-v-20bfe6b0]{text-transform:capitalize}.color-picker[data-v-e0bde284]{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-e0bde284]{width:100%;padding-bottom:50%;position:relative;overflow:hidden}.picker-controls[data-v-e0bde284]{display:flex}.picker-sliders[data-v-e0bde284]{padding:4px 0;flex:1}.picker-hue-wrap[data-v-e0bde284]{position:relative;height:10px}.picker-alpha-wrap[data-v-e0bde284]{position:relative;height:10px;margin-top:4px;overflow:hidden}.picker-color-wrap[data-v-e0bde284]{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-e0bde284]{background-size:auto}.picker-current-color[data-v-e0bde284]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2}.picker-field[data-v-e0bde284]{display:flex;margin-bottom:8px}.picker-field .straw[data-v-e0bde284]{width:24px;height:24px;margin-top:4px;margin-left:4px;display:flex;justify-content:flex-end;align-items:center;font-size:20px;cursor:pointer}.picker-field .input[data-v-e0bde284]{flex:1}.picker-presets[data-v-e0bde284]{display:flex;flex-wrap:wrap;align-content:flex-start}.picker-presets-color[data-v-e0bde284]{width:7%;margin-bottom:3.33333%;height:0;padding-bottom:7%;flex-shrink:0;position:relative;cursor:pointer}.picker-presets-color[data-v-e0bde284]:not(:nth-child(10n)){margin-right:3.33333%}.picker-presets-color.alpha[data-v-e0bde284]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAADBJREFUOE9jfPbs2X8GPEBSUhKfNAPjqAHDIgz+//+PNx08f/4cfzoYNYCBceiHAQC5flV5JzgrxQAAAABJRU5ErkJggg==)}.picker-presets-color-content[data-v-e0bde284]{position:absolute;top:0;right:0;bottom:0;left:0}.picker-gradient-presets[data-v-e0bde284]{display:flex;flex-wrap:wrap;align-content:flex-start}.picker-gradient-col[data-v-e0bde284]{width:7%;margin-bottom:3.33333%;display:flex;flex-direction:column}.picker-gradient-col[data-v-e0bde284]:not(:nth-child(10n)){margin-right:3.33333%}.picker-gradient-color[data-v-e0bde284]{width:100%;height:16px;position:relative;cursor:pointer}.recent-colors-title[data-v-e0bde284]{font-size:12px;margin-bottom:4px}.fullscreen-spin[data-v-5e77feb8]{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 +.hotkey-doc[data-v-a2afb4ce]{height:100%;overflow:auto;font-size:12px;margin:0 -24px;padding:0 24px}.title[data-v-a2afb4ce]{font-size:14px;font-weight:700;border-bottom:1px solid #e5e5e5;padding:24px 0 5px 0}.title[data-v-a2afb4ce]:first-child{padding-top:0}.hotkey-item[data-v-a2afb4ce]{border-bottom:1px solid #e5e5e5;padding:15px 0 5px 0;display:flex;align-items:center}.label[data-v-a2afb4ce]{width:140px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.editor-header[data-v-f0cbd508]{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-f0cbd508],.menu-item[data-v-f0cbd508],.right[data-v-f0cbd508]{display:flex;justify-content:center;align-items:center}.menu-item[data-v-f0cbd508]{height:100%;font-size:14px;padding:0 10px;transition:background-color .2s;cursor:pointer}.menu-item .text[data-v-f0cbd508]{margin-left:4px}.left .menu-item[data-v-f0cbd508]:hover{background-color:#f9f9f9}svg[data-v-4c746203],svg[data-v-74cf8d68],svg[data-v-b701edc6]{overflow:visible;position:absolute;z-index:2;top:0;left:0}.image-clip-handler[data-v-2ec16714]{width:100%;height:100%;position:relative}.image-clip-handler .bottom-img[data-v-2ec16714]{top:0;left:0;width:100%;height:100%;opacity:.5}.image-clip-handler img[data-v-2ec16714]{width:100%;height:100%}.image-clip-handler .top-image-content[data-v-2ec16714]{position:absolute;overflow:hidden}.image-clip-handler .top-image-content img[data-v-2ec16714]{position:absolute}.operate[data-v-2ec16714]{position:absolute;width:100%;height:100%;top:0;left:0;cursor:move}.clip-point[data-v-2ec16714]{position:absolute;width:16px;height:16px}.clip-point svg[data-v-2ec16714]{overflow:visible}.clip-point.left-top[data-v-2ec16714]{left:0;top:0}.clip-point.right-top[data-v-2ec16714]{left:100%;top:0;transform:rotate(90deg);transform-origin:0 0}.clip-point.left-bottom[data-v-2ec16714]{left:0;top:100%;transform:rotate(-90deg);transform-origin:0 0}.clip-point.right-bottom[data-v-2ec16714]{left:100%;top:100%;transform:rotate(180deg);transform-origin:0 0}.clip-point.top[data-v-2ec16714]{left:50%;top:0;margin-left:-8px}.clip-point.bottom[data-v-2ec16714]{left:50%;bottom:0;margin-left:-8px;transform:rotate(180deg)}.clip-point.left[data-v-2ec16714]{left:0;top:50%;margin-top:-8px;transform:rotate(-90deg)}.clip-point.right[data-v-2ec16714]{right:0;top:50%;margin-top:-8px;transform:rotate(90deg)}.clip-point.bottom.rotate-135[data-v-2ec16714],.clip-point.left-bottom.rotate-90[data-v-2ec16714],.clip-point.left-top.rotate-0[data-v-2ec16714],.clip-point.left.rotate-45[data-v-2ec16714],.clip-point.right-bottom.rotate-0[data-v-2ec16714],.clip-point.right-top.rotate-90[data-v-2ec16714],.clip-point.right.rotate-45[data-v-2ec16714],.clip-point.top.rotate-135[data-v-2ec16714]{cursor:nwse-resize}.clip-point.bottom.rotate-0[data-v-2ec16714],.clip-point.left-bottom.rotate-135[data-v-2ec16714],.clip-point.left-top.rotate-45[data-v-2ec16714],.clip-point.left.rotate-90[data-v-2ec16714],.clip-point.right-bottom.rotate-45[data-v-2ec16714],.clip-point.right-top.rotate-135[data-v-2ec16714],.clip-point.right.rotate-90[data-v-2ec16714],.clip-point.top.rotate-0[data-v-2ec16714]{cursor:ns-resize}.clip-point.bottom.rotate-45[data-v-2ec16714],.clip-point.left-bottom.rotate-0[data-v-2ec16714],.clip-point.left-top.rotate-90[data-v-2ec16714],.clip-point.left.rotate-135[data-v-2ec16714],.clip-point.right-bottom.rotate-90[data-v-2ec16714],.clip-point.right-top.rotate-0[data-v-2ec16714],.clip-point.right.rotate-135[data-v-2ec16714],.clip-point.top.rotate-45[data-v-2ec16714]{cursor:nesw-resize}.clip-point.bottom.rotate-90[data-v-2ec16714],.clip-point.left-bottom.rotate-45[data-v-2ec16714],.clip-point.left-top.rotate-135[data-v-2ec16714],.clip-point.left.rotate-0[data-v-2ec16714],.clip-point.right-bottom.rotate-135[data-v-2ec16714],.clip-point.right-top.rotate-45[data-v-2ec16714],.clip-point.right.rotate-0[data-v-2ec16714],.clip-point.top.rotate-90[data-v-2ec16714]{cursor:ew-resize}.editable-element-image[data-v-fed8b698]{position:absolute}.editable-element-image.lock .element-content[data-v-fed8b698]{cursor:default}.rotate-wrapper[data-v-fed8b698]{width:100%;height:100%}.element-content[data-v-fed8b698]{width:100%;height:100%;position:relative;cursor:move}.element-content .image-content[data-v-fed8b698]{width:100%;height:100%;overflow:hidden;position:relative}.element-content img[data-v-fed8b698]{position:absolute}svg[data-v-34c0a0a8]{overflow:visible;position:absolute;top:0;left:0}.prosemirror-editor[data-v-50456657]{cursor:text}.editable-element-text[data-v-8e51e5ca]{position:absolute}.editable-element-text.lock .element-content[data-v-8e51e5ca]{cursor:default}.rotate-wrapper[data-v-8e51e5ca]{width:100%;height:100%}.element-content[data-v-8e51e5ca]{position:relative;padding:10px;line-height:1.5;word-break:break-word;cursor:move}.element-content .text[data-v-8e51e5ca]{position:relative}.element-content[data-v-8e51e5ca] a{cursor:text}.drag-handler[data-v-8e51e5ca]{height:10px;position:absolute;left:0;right:0}.drag-handler.top[data-v-8e51e5ca]{top:0}.drag-handler.bottom[data-v-8e51e5ca]{bottom:0}.editable-element-shape[data-v-81338b12]{position:absolute;pointer-events:none}.editable-element-shape.lock .element-content[data-v-81338b12]{cursor:default}.rotate-wrapper[data-v-81338b12]{width:100%;height:100%}.element-content[data-v-81338b12]{width:100%;height:100%;position:relative;cursor:move}.element-content svg[data-v-81338b12]{transform-origin:0 0;overflow:visible}.element-content .shape-path[data-v-81338b12]{pointer-events:all}.shape-text[data-v-81338b12]{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-81338b12]{pointer-events:all}.shape-text.top[data-v-81338b12]{justify-content:flex-start}.shape-text.middle[data-v-81338b12]{justify-content:center}.shape-text.bottom[data-v-81338b12]{justify-content:flex-end}.editable-element-shape[data-v-5f3b7dc5]{position:absolute;pointer-events:none}.editable-element-shape.lock .line-path[data-v-5f3b7dc5],.editable-element-shape.lock .line-point[data-v-5f3b7dc5]{cursor:default}.element-content[data-v-5f3b7dc5]{width:100%;height:100%;position:relative}.element-content svg[data-v-5f3b7dc5]{transform-origin:0 0;overflow:visible}.line-path[data-v-5f3b7dc5],.line-point[data-v-5f3b7dc5]{pointer-events:all;cursor:move}.chart[data-v-79ce410e]{display:flex}.chart-content[data-v-79ce410e]{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-863d2c90]{position:absolute}.editable-element-chart.lock .element-content[data-v-863d2c90]{cursor:default}.rotate-wrapper[data-v-863d2c90]{width:100%;height:100%}.element-content[data-v-863d2c90]{width:100%;height:100%;overflow:hidden;cursor:move}.custom-textarea[data-v-00107680]{border:0;outline:0;-webkit-user-modify:read-write-plaintext-only;-moz-user-modify:read-write-plaintext-only}.editable-table[data-v-12f568a6],table[data-v-12f568a6]{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}table[data-v-12f568a6]{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-12f568a6]{background-color:#fff}table.theme tr:nth-child(2n) .cell[data-v-12f568a6]{background-color:var(--subThemeColor1)}table.theme tr:nth-child(odd) .cell[data-v-12f568a6]{background-color:var(--subThemeColor2)}table.theme.col-footer tr .cell[data-v-12f568a6]:last-child,table.theme.col-header tr .cell[data-v-12f568a6]:first-child,table.theme.row-footer tr:last-child .cell[data-v-12f568a6],table.theme.row-header tr:first-child .cell[data-v-12f568a6]{background-color:var(--themeColor)}table tr[data-v-12f568a6]{height:36px}table .cell[data-v-12f568a6]{position:relative;white-space:normal;word-wrap:break-word;vertical-align:middle;font-size:14px;cursor:default}table .cell.selected[data-v-12f568a6]:after{content:"";width:100%;height:100%;position:absolute;top:0;left:0;background-color:hsla(0,0%,40%,.4)}table .cell-text[data-v-12f568a6]{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-12f568a6]{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.drag-line[data-v-12f568a6]{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-1c016f8e]{position:absolute}.editable-element-table.lock .element-content[data-v-1c016f8e]{cursor:default}.rotate-wrapper[data-v-1c016f8e]{width:100%;height:100%}.element-content[data-v-1c016f8e]{width:100%;height:100%;position:relative;cursor:move}.table-mask[data-v-1c016f8e]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .2s}.table-mask .mask-tip[data-v-1c016f8e]{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-1c016f8e]:hover:not(.lock){opacity:.9}.editable-element-latex[data-v-50e5c825]{position:absolute}.editable-element-latex.lock .element-content[data-v-50e5c825]{cursor:default}.rotate-wrapper[data-v-50e5c825]{width:100%;height:100%}.element-content[data-v-50e5c825]{width:100%;height:100%;position:relative;cursor:move}.element-content svg[data-v-50e5c825]{transform-origin:0 0;overflow:visible}.video-player[data-v-fcb929f4]{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-fcb929f4],.video-player.playing .controller[data-v-fcb929f4]{opacity:0}.video-player.playing:hover .controller-mask[data-v-fcb929f4],.video-player.playing:hover .controller[data-v-fcb929f4]{opacity:1}}.video-player.loading .bezel .diplayer-loading-icon[data-v-fcb929f4]{display:block}.video-player.hide-controller[data-v-fcb929f4]{cursor:none}.video-player.hide-controller .controller-mask[data-v-fcb929f4],.video-player.hide-controller .controller[data-v-fcb929f4]{opacity:0;transform:translateY(100%)}.video-wrap[data-v-fcb929f4]{position:relative;background:#000;font-size:0;width:100%;height:100%}.video-wrap .video[data-v-fcb929f4]{width:100%;height:100%}.controller-mask[data-v-fcb929f4]{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-fcb929f4]{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-fcb929f4]{padding:5px 0;cursor:pointer;position:absolute;bottom:33px;width:calc(100% - 40px);height:3px}.controller .bar-wrap:hover .bar .played .thumb[data-v-fcb929f4]{transform:scale(1)}.controller .bar-wrap .bar-time[data-v-fcb929f4]{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-fcb929f4]{opacity:0}.controller .bar-wrap .bar[data-v-fcb929f4]{position:relative;height:3px;width:100%;background:hsla(0,0%,100%,.2);cursor:pointer}.controller .bar-wrap .bar .loaded[data-v-fcb929f4]{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-fcb929f4]{position:absolute;left:0;top:0;bottom:0;height:3px;will-change:width;background-color:#fff}.controller .bar-wrap .bar .played .thumb[data-v-fcb929f4]{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-fcb929f4]{height:38px;position:absolute;bottom:0;display:flex;align-items:center}.controller .icons.icons-right[data-v-fcb929f4]{right:8px}.controller .icons .time[data-v-fcb929f4]{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-fcb929f4]{width:40px;height:100%;position:relative;cursor:pointer;display:flex;align-items:center;font-size:20px}.controller .icons .icon.play-icon[data-v-fcb929f4]{font-size:26px}.controller .icons .icon .icon-content[data-v-fcb929f4]{transition:all .2s ease-in-out;opacity:.8;color:#fff}.controller .icons .icon.loop-icon[data-v-fcb929f4]{font-size:12px}.controller .icons .icon.loop-icon .icon-content[data-v-fcb929f4]{opacity:.5}.controller .icons .icon.speed-icon[data-v-fcb929f4]{font-size:12px;position:relative}.controller .icons .icon .speed-menu[data-v-fcb929f4]{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-fcb929f4]{padding:8px 0;text-align:center}.controller .icons .icon .speed-menu .speed-menu-item[data-v-fcb929f4]:hover{background-color:#393833;color:#fff}.controller .icons .icon .speed-menu .speed-menu-item.active[data-v-fcb929f4]{font-weight:700;color:#fff}.controller .icons .icon.active .icon-content[data-v-fcb929f4],.controller .icons .icon:hover .icon-content[data-v-fcb929f4]{opacity:1}.controller .icons .volume[data-v-fcb929f4]{height:100%;position:relative;cursor:pointer;display:flex;align-items:center}.controller .icons .volume:hover .volume-bar-wrap .volume-bar[data-v-fcb929f4]{width:45px}.controller .icons .volume:hover .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-fcb929f4]{transform:scale(1)}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar[data-v-fcb929f4]{width:45px}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-fcb929f4]{transform:scale(1)}.controller .icons .volume-bar-wrap[data-v-fcb929f4]{display:inline-block;margin:0 15px 0 -5px;vertical-align:middle;height:100%}.controller .icons .volume-bar[data-v-fcb929f4]{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-fcb929f4]{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-fcb929f4]{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-fcb929f4]{display:inline-block;height:100%}.bezel[data-v-fcb929f4]{position:absolute;left:0;right:0;top:0;bottom:0;font-size:22px;color:#fff;pointer-events:none}.bezel .bezel-icon[data-v-fcb929f4]{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-fcb929f4]{-webkit-animation:bezel-hide-fcb929f4 .5s linear;animation:bezel-hide-fcb929f4 .5s linear}@-webkit-keyframes bezel-hide-fcb929f4{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(2)}}@keyframes bezel-hide-fcb929f4{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(2)}}.bezel .loading-icon[data-v-fcb929f4]{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-fcb929f4]{display:none}.bezel .loading-icon .loading-dot[data-v-fcb929f4]{-webkit-animation:loading-dot-fade-fcb929f4 .8s ease infinite;animation:loading-dot-fade-fcb929f4 .8s ease infinite;opacity:0;transform-origin:4px 4px}.bezel .loading-icon .loading-dot.loading-dot-7[data-v-fcb929f4]{-webkit-animation-delay:.7s;animation-delay:.7s}.bezel .loading-icon .loading-dot.loading-dot-6[data-v-fcb929f4]{-webkit-animation-delay:.6s;animation-delay:.6s}.bezel .loading-icon .loading-dot.loading-dot-5[data-v-fcb929f4]{-webkit-animation-delay:.5s;animation-delay:.5s}.bezel .loading-icon .loading-dot.loading-dot-4[data-v-fcb929f4]{-webkit-animation-delay:.4s;animation-delay:.4s}.bezel .loading-icon .loading-dot.loading-dot-3[data-v-fcb929f4]{-webkit-animation-delay:.3s;animation-delay:.3s}.bezel .loading-icon .loading-dot.loading-dot-2[data-v-fcb929f4]{-webkit-animation-delay:.2s;animation-delay:.2s}.bezel .loading-icon .loading-dot.loading-dot-1[data-v-fcb929f4]{-webkit-animation-delay:.1s;animation-delay:.1s}@-webkit-keyframes loading-dot-fade-fcb929f4{0%{opacity:.7;transform:scale(1.2)}50%{opacity:.25;transform:scale(.9)}to{opacity:.25;transform:scale(.85)}}@keyframes loading-dot-fade-fcb929f4{0%{opacity:.7;transform:scale(1.2)}50%{opacity:.25;transform:scale(.9)}to{opacity:.25;transform:scale(.85)}}.editable-element-video[data-v-454973e4]{position:absolute}.editable-element-video.lock .handler-border[data-v-454973e4]{cursor:default}.rotate-wrapper[data-v-454973e4]{width:100%;height:100%}.element-content[data-v-454973e4]{width:100%;height:100%;position:relative}.handler-border[data-v-454973e4]{position:absolute;cursor:move}.handler-border.t[data-v-454973e4]{width:100%;height:20px;top:0;left:0}.handler-border.b[data-v-454973e4]{width:100%;height:5px;bottom:0;left:0}.handler-border.l[data-v-454973e4]{width:10px;height:100%;left:0;top:0}.handler-border.r[data-v-454973e4]{width:10px;height:100%;right:0;top:0}.audio-player[data-v-5530a7f2]{width:280px;height:50px;position:relative;line-height:1;transform-origin:0 0;background:#000}.audio-player[data-v-5530a7f2],.controller[data-v-5530a7f2]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.controller[data-v-5530a7f2]{position:absolute;bottom:0;left:0;right:0;height:41px;padding:0 20px;transition:all .3s ease}.controller .bar-wrap[data-v-5530a7f2]{padding:5px 0;cursor:pointer;position:absolute;bottom:35px;width:calc(100% - 40px);height:3px}.controller .bar-wrap:hover .bar .played .thumb[data-v-5530a7f2]{transform:scale(1)}.controller .bar-wrap .bar-time[data-v-5530a7f2]{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-5530a7f2]{opacity:0}.controller .bar-wrap .bar[data-v-5530a7f2]{position:relative;height:3px;width:100%;background:hsla(0,0%,100%,.2);cursor:pointer}.controller .bar-wrap .bar .loaded[data-v-5530a7f2]{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-5530a7f2]{position:absolute;left:0;top:0;bottom:0;height:3px;will-change:width;background-color:#fff}.controller .bar-wrap .bar .played .thumb[data-v-5530a7f2]{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-5530a7f2]{height:38px;position:absolute;bottom:0;left:14px;display:flex;align-items:center}.controller .icons .icon[data-v-5530a7f2]{width:36px;height:100%;position:relative;cursor:pointer;display:flex;align-items:center;font-size:20px}.controller .icons .icon.play-icon[data-v-5530a7f2]{font-size:26px}.controller .icons .icon .icon-content[data-v-5530a7f2]{transition:all .2s ease-in-out;opacity:.8;color:#fff}.controller .icons .icon.active .icon-content[data-v-5530a7f2],.controller .icons .icon:hover .icon-content[data-v-5530a7f2]{opacity:1}.controller .icons .volume[data-v-5530a7f2]{height:100%;position:relative;cursor:pointer;display:flex;align-items:center}.controller .icons .volume:hover .volume-bar-wrap .volume-bar[data-v-5530a7f2]{width:45px}.controller .icons .volume:hover .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-5530a7f2]{transform:scale(1)}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar[data-v-5530a7f2]{width:45px}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-5530a7f2]{transform:scale(1)}.controller .icons .volume-bar-wrap[data-v-5530a7f2]{display:inline-block;margin:0 15px 0 -5px;vertical-align:middle;height:100%}.controller .icons .volume-bar[data-v-5530a7f2]{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-5530a7f2]{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-5530a7f2]{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-5530a7f2]{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-5530a7f2]{margin-right:2px}.controller .time .dtime[data-v-5530a7f2]{margin-left:2px}.editable-element-audio[data-v-40b7d6a8]{position:absolute}.editable-element-audio.lock .audio-icon[data-v-40b7d6a8]{cursor:default}.rotate-wrapper[data-v-40b7d6a8]{width:100%;height:100%}.element-content[data-v-40b7d6a8]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.audio-icon[data-v-40b7d6a8]{cursor:move}.audio-player[data-v-40b7d6a8]{position:absolute}.mouse-selection[data-v-25d4b5f8]{position:absolute;background-color:rgba(209,68,36,.1);border:1px solid #d14424;z-index:200}.mouse-selection.quadrant-1[data-v-25d4b5f8]{transform-origin:0 0;transform:rotate(180deg)}.mouse-selection.quadrant-2[data-v-25d4b5f8]{transform-origin:50% 0;transform:rotate(180deg)}.mouse-selection.quadrant-3[data-v-25d4b5f8]{transform-origin:0 50%;transform:rotate(180deg)}.mouse-selection.quadrant-4[data-v-25d4b5f8]{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-7017c6bc]{position:absolute;z-index:100}.alignment-line .line[data-v-7017c6bc]{width:0;height:0;border:0 dashed #d14424}.alignment-line .line.vertical[data-v-7017c6bc]{transform:translateY(-.5px);border-left-width:1px}.alignment-line .line.horizontal[data-v-7017c6bc]{transform:translateX(-.5px);border-top-width:1px}.ruler[data-v-6cc1801a]{font-size:12px}.h[data-v-6cc1801a]{position:absolute;background-color:#fff;border:1px solid #eee;height:20px;top:5px;display:flex;justify-content:space-between;align-items:center}.h .ruler-marker-100[data-v-6cc1801a]{height:100%;line-height:20px;text-align:right;flex:1;padding-right:5px;position:relative}.h .ruler-marker-100.hide span[data-v-6cc1801a],.h .ruler-marker-100.omit[data-v-6cc1801a]:before{display:none}.h .ruler-marker-100[data-v-6cc1801a]:not(:last-child):after{content:"";width:.1px;height:12px;position:absolute;right:0;bottom:0;background-color:#999}.h .ruler-marker-100[data-v-6cc1801a]:before{content:"";width:.1px;height:8px;position:absolute;right:50%;bottom:0;background-color:#999}.v[data-v-6cc1801a]{position:absolute;background-color:#fff;border:1px solid #eee;width:20px;left:5px;overflow:hidden}.v .ruler-marker-100[data-v-6cc1801a]{width:100%;line-height:20px;text-align:right;padding-bottom:5px;position:relative;-ms-writing-mode:tb-rl;writing-mode:vertical-rl}.v .ruler-marker-100.hide span[data-v-6cc1801a],.v .ruler-marker-100.omit[data-v-6cc1801a]:before{display:none}.v .ruler-marker-100[data-v-6cc1801a]:not(:last-child):after{content:"";height:.1px;width:12px;position:absolute;bottom:0;right:0;background-color:#999}.v .ruler-marker-100[data-v-6cc1801a]:before{content:"";height:.1px;width:8px;position:absolute;bottom:50%;right:0;background-color:#999}.element-create-selection[data-v-15b60d90]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;cursor:crosshair}.element-create-selection svg[data-v-15b60d90]{overflow:visible}.selection[data-v-15b60d90]{position:absolute;opacity:.8}.selection[data-v-15b60d90]:not(.line){border:1px solid #d14424}.resize-handler[data-v-c9559332]{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;cursor:pointer}.resize-handler.bottom.rotate-135[data-v-c9559332],.resize-handler.left-bottom.rotate-90[data-v-c9559332],.resize-handler.left-top.rotate-0[data-v-c9559332],.resize-handler.left.rotate-45[data-v-c9559332],.resize-handler.right-bottom.rotate-0[data-v-c9559332],.resize-handler.right-top.rotate-90[data-v-c9559332],.resize-handler.right.rotate-45[data-v-c9559332],.resize-handler.top.rotate-135[data-v-c9559332]{cursor:nwse-resize}.resize-handler.bottom.rotate-0[data-v-c9559332],.resize-handler.left-bottom.rotate-135[data-v-c9559332],.resize-handler.left-top.rotate-45[data-v-c9559332],.resize-handler.left.rotate-90[data-v-c9559332],.resize-handler.right-bottom.rotate-45[data-v-c9559332],.resize-handler.right-top.rotate-135[data-v-c9559332],.resize-handler.right.rotate-90[data-v-c9559332],.resize-handler.top.rotate-0[data-v-c9559332]{cursor:ns-resize}.resize-handler.bottom.rotate-45[data-v-c9559332],.resize-handler.left-bottom.rotate-0[data-v-c9559332],.resize-handler.left-top.rotate-90[data-v-c9559332],.resize-handler.left.rotate-135[data-v-c9559332],.resize-handler.right-bottom.rotate-90[data-v-c9559332],.resize-handler.right-top.rotate-0[data-v-c9559332],.resize-handler.right.rotate-135[data-v-c9559332],.resize-handler.top.rotate-45[data-v-c9559332]{cursor:nesw-resize}.resize-handler.bottom.rotate-90[data-v-c9559332],.resize-handler.left-bottom.rotate-45[data-v-c9559332],.resize-handler.left-top.rotate-135[data-v-c9559332],.resize-handler.left.rotate-0[data-v-c9559332],.resize-handler.right-bottom.rotate-135[data-v-c9559332],.resize-handler.right-top.rotate-45[data-v-c9559332],.resize-handler.right.rotate-0[data-v-c9559332],.resize-handler.top.rotate-90[data-v-c9559332]{cursor:ew-resize}.border-line[data-v-1430bedc]{position:absolute;width:0;height:0;left:0;top:0;border:0 dashed #d14424}.border-line.top[data-v-1430bedc]{border-top-width:1px}.border-line.bottom[data-v-1430bedc]{border-bottom-width:1px}.border-line.left[data-v-1430bedc]{border-left-width:1px}.border-line.right[data-v-1430bedc]{border-right-width:1px}.border-line.wide[data-v-1430bedc]:before{content:"";position:absolute;background:transparent;cursor:move}.border-line.wide.top[data-v-1430bedc]:before{top:-8px;left:-8px;width:calc(100% + 16px);height:16px}.border-line.wide.bottom[data-v-1430bedc]:before{bottom:-8px;left:-8px;width:calc(100% + 16px);height:16px}.border-line.wide.left[data-v-1430bedc]:before{top:-8px;left:-8px;width:16px;height:calc(100% + 16px)}.border-line.wide.right[data-v-1430bedc]:before{top:-8px;right:-8px;width:16px;height:calc(100% + 16px)}.multi-select-operate[data-v-55c8df22]{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-db6d5ba6]{visibility:hidden}svg[data-v-60f9f1f7]{position:absolute;left:0;top:0;pointer-events:none;transform-origin:0 0}.anchor-line[data-v-60f9f1f7]{stroke-width:1px;stroke-dasharray:5 5;opacity:.5}.link-handler[data-v-2b77dbb0]{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-2b77dbb0]{max-width:300px;margin-right:20px;word-break:keep-all;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.btns[data-v-2b77dbb0]{display:flex;align-items:center}.btns .btn[data-v-2b77dbb0]{word-break:keep-all;cursor:pointer}.operate[data-v-3719d97c]{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-3719d97c]{opacity:0}.animation-index[data-v-3719d97c]{position:absolute;top:0;left:-24px;font-size:12px}.animation-index .index-item[data-v-3719d97c]{width:18px;height:18px;background-color:#fff;color:#d14424;border:1px solid #d14424;display:flex;justify-content:center;align-items:center}.animation-index .index-item+.index-item[data-v-3719d97c]{margin-top:5px}.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-81197444],.element-content img[data-v-0b1f9460]{position:absolute}.rotate-wrapper[data-v-81197444]{width:100%;height:100%}.element-content[data-v-81197444]{position:relative;padding:10px;line-height:1.5;word-break:break-word}.element-content .text[data-v-81197444]{position:relative}.base-element-shape[data-v-728513ea]{position:absolute}.rotate-wrapper[data-v-728513ea]{width:100%;height:100%}.element-content[data-v-728513ea]{width:100%;height:100%;position:relative}.element-content svg[data-v-728513ea]{transform-origin:0 0;overflow:visible}.shape-text[data-v-728513ea]{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-728513ea]{justify-content:flex-start}.shape-text.middle[data-v-728513ea]{justify-content:center}.shape-text.bottom[data-v-728513ea]{justify-content:flex-end}.base-element-line[data-v-2cd24911]{position:absolute}.element-content[data-v-2cd24911]{width:100%;height:100%;position:relative}.element-content svg[data-v-2cd24911]{transform-origin:0 0;overflow:visible}.base-element-chart[data-v-342d4bac]{position:absolute}.element-content[data-v-342d4bac],.rotate-wrapper[data-v-342d4bac]{width:100%;height:100%}.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-025539cf]{background-color:#fff;overflow:hidden}.elements[data-v-025539cf]{transform-origin:0 0}.background[data-v-025539cf]{width:100%;height:100%;background-position:50%;position:absolute}.placeholder[data-v-025539cf]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.tabs[data-v-6e74620a]{display:flex;justify-content:flex-start;align-items:center;border-bottom:1px solid #eee;margin-bottom:20px}.tab[data-v-6e74620a]{padding:0 10px 8px;border-bottom:2px solid transparent;cursor:pointer}.tab.active[data-v-6e74620a]{border-bottom:2px solid #d14424}.input[data-v-6e74620a]{width:100%;height:32px}.preview[data-v-6e74620a]{margin-top:12px}.thumbnail[data-v-6e74620a]{outline:1px solid rgba(209,68,36,.15);margin-top:5px}.btns[data-v-6e74620a]{margin-top:20px;text-align:right}.canvas[data-v-743d966c]{height:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;background-color:#f9f9f9;position:relative}.drag-mask[data-v-743d966c]{cursor:-webkit-grab;cursor:grab;position:absolute;top:0;right:0;bottom:0;left:0}.viewport-wrapper[data-v-743d966c]{position:absolute;box-shadow:0 0 15px 0 rgba(0,0,0,.1)}.viewport[data-v-743d966c]{position:absolute;top:0;left:0;transform-origin:0 0}.shape-pool[data-v-f3479f82]{width:340px;max-height:520px;overflow:auto;margin-top:-12px;margin-bottom:-12px;margin-right:-12px;padding-right:12px;padding-top:12px}.category-name[data-v-f3479f82]{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-f3479f82]{display:flex;flex-wrap:wrap;align-content:flex-start;margin-bottom:10px}.shape-item[data-v-f3479f82]{width:8%;margin-bottom:2.22222%;height:0;padding-bottom:8%;flex-shrink:0;position:relative;cursor:pointer}.shape-item[data-v-f3479f82]:not(:nth-child(10n)){margin-right:2.22222%}.shape-content[data-v-f3479f82]{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-f3479f82]:not(.outlined){stroke:#d14424}.shape-content:hover .shape-path.outlined[data-v-f3479f82]{fill:#d14424}.shape-content svg[data-v-f3479f82]:not(:root){overflow:visible}.line-pool[data-v-7fa1d412]{width:220px;overflow:auto;margin-bottom:-12px;margin-right:-12px;padding-right:12px}.category-name[data-v-7fa1d412]{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-7fa1d412]{display:flex;flex-wrap:wrap;align-content:flex-start;margin-bottom:10px}.line-item[data-v-7fa1d412]{width:19%;margin-bottom:1.25%;height:0;padding-bottom:19%;flex-shrink:0;position:relative;cursor:pointer}.line-item[data-v-7fa1d412]:not(:nth-child(5n)){margin-right:1.25%}.line-content[data-v-7fa1d412]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;color:#999}.line-content[data-v-7fa1d412]:hover{color:#d14424}.line-content svg[data-v-7fa1d412]:not(:root){overflow:visible}.chart-pool[data-v-64ca421e]{width:200px;margin-bottom:-5px;display:flex;flex-wrap:wrap;align-content:flex-start}.chart-item[data-v-64ca421e]{width:19%;margin-bottom:1.25%;height:0;padding-bottom:19%;flex-shrink:0;position:relative;cursor:pointer}.chart-item[data-v-64ca421e]:not(:nth-child(5n)){margin-right:1.25%}.chart-content[data-v-64ca421e]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;color:#999}.chart-content[data-v-64ca421e]: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-310c58ae]{width:480px}.tabs[data-v-310c58ae]{display:flex;justify-content:flex-start;align-items:center;border-bottom:1px solid #eee;margin-bottom:20px}.tab[data-v-310c58ae]{padding:0 10px 8px;border-bottom:2px solid transparent;cursor:pointer}.tab.active[data-v-310c58ae]{border-bottom:2px solid #d14424}.btns[data-v-310c58ae]{margin-top:10px;text-align:right}svg[data-v-cf0ca630]{overflow:hidden}.latex-editor[data-v-0c89cf75]{height:560px}.container[data-v-0c89cf75]{height:calc(100% - 50px);display:flex;padding-top:25px}.left[data-v-0c89cf75]{width:540px;height:100%;display:flex;flex-direction:column}.input-area[data-v-0c89cf75]{flex:1}.input-area textarea[data-v-0c89cf75]{height:100%!important;border-color:#eee!important;padding:10px!important}.input-area textarea[data-v-0c89cf75]:focus{box-shadow:none!important}.preview[data-v-0c89cf75]{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-0c89cf75]{color:#888}.preview-content[data-v-0c89cf75]{width:100%;height:100%;padding:10px;display:flex;justify-content:center;align-items:center}.right[data-v-0c89cf75]{height:100%;margin-left:20px;flex:1;border:1px solid #eee;background-color:#fff;flex-direction:column}.right[data-v-0c89cf75],.tabs[data-v-0c89cf75]{display:flex;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabs[data-v-0c89cf75]{height:40px;font-size:12px;flex-shrink:0}.tab[data-v-0c89cf75]{flex:1;display:flex;justify-content:center;align-items:center;background-color:#f9f9f9;border-bottom:1px solid #eee;cursor:pointer}.tab.active[data-v-0c89cf75]{background-color:#fff;border-bottom-color:#fff}.tab+.tab[data-v-0c89cf75]{border-left:1px solid #eee}.content[data-v-0c89cf75]{height:calc(100% - 40px);font-size:13px}.formula[data-v-0c89cf75]{height:100%;padding:12px;overflow:auto;overflow:overlay}.formula-item+.formula-item[data-v-0c89cf75]{margin-top:10px}.formula-item .formula-title[data-v-0c89cf75]{margin-bottom:5px}.formula-item .formula-item-content[data-v-0c89cf75]{width:246px;height:60px;padding:5px;display:flex;align-items:center;background-color:#f9f9f9;cursor:pointer}.symbol-tabs[data-v-0c89cf75]{display:flex;justify-content:space-around;align-items:center;border-bottom:1px solid #eee;margin:12px 12px 5px}.symbol-tab[data-v-0c89cf75]{padding:6px 10px;border-bottom:2px solid transparent;cursor:pointer}.symbol-tab.active[data-v-0c89cf75]{border-bottom:2px solid #d14424}.symbol[data-v-0c89cf75]{height:100%;display:flex;flex-direction:column}.symbol-pool[data-v-0c89cf75]{display:flex;flex-wrap:wrap;flex:1;padding:12px;overflow:auto;overflow:overlay}.symbol-item[data-v-0c89cf75]{display:flex;justify-content:center;align-items:center}.symbol-item[data-v-0c89cf75]:hover{background-color:#f9f9f9;cursor:pointer}.footer[data-v-0c89cf75]{height:50px;display:flex;justify-content:flex-end;align-items:flex-end}.footer .btn[data-v-0c89cf75]{margin-left:10px}.canvas-tool[data-v-e9ddaac8]{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-e9ddaac8]{display:flex;align-items:center}.add-element-handler[data-v-e9ddaac8]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex}.handler-item[data-v-e9ddaac8]{margin:0 10px;font-size:14px;cursor:pointer}.handler-item.disable[data-v-e9ddaac8]{opacity:.5}.handler-item.active[data-v-e9ddaac8]{color:#d14424}.right-handler[data-v-e9ddaac8]{display:flex;align-items:center}.right-handler .text[data-v-e9ddaac8]{width:40px;text-align:center;cursor:pointer}.right-handler .viewport-size[data-v-e9ddaac8]{font-size:13px}.preset-item[data-v-e9ddaac8]{padding:8px 20px;text-align:center;cursor:pointer}.preset-item[data-v-e9ddaac8]:hover{color:#d14424}.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-17d8eefc]{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-17d8eefc]{height:40px;font-size:12px;display:flex;flex-shrink:0;border-bottom:1px solid #eee;cursor:pointer}.add-slide .btn[data-v-17d8eefc]{flex:1;display:flex;justify-content:center;align-items:center}.add-slide .btn[data-v-17d8eefc]:hover{background-color:#f9f9f9}.add-slide .select-btn[data-v-17d8eefc]{width:30px;display:flex;justify-content:center;align-items:center;border-left:1px solid #eee}.add-slide .select-btn[data-v-17d8eefc]:hover{background-color:#f9f9f9}.add-slide .icon[data-v-17d8eefc]{margin-right:3px;font-size:14px}.thumbnail-list[data-v-17d8eefc]{padding:5px 0;flex:1;overflow:auto}.thumbnail-item[data-v-17d8eefc]{display:flex;justify-content:center;align-items:center;padding:5px 0}.thumbnail-item .thumbnail[data-v-17d8eefc]{outline:1px solid rgba(209,68,36,.15)}.thumbnail-item.active .label[data-v-17d8eefc]{color:#d14424}.thumbnail-item.active .thumbnail[data-v-17d8eefc],.thumbnail-item.selected .thumbnail[data-v-17d8eefc]{outline-color:#d14424}.label[data-v-17d8eefc]{font-size:12px;color:#999;width:20px;cursor:-webkit-grab;cursor:grab}.label.offset-left[data-v-17d8eefc]{position:relative;left:-4px}.label[data-v-17d8eefc]:active{cursor:-webkit-grabbing;cursor:grabbing}.row[data-v-5c7dbabc]{width:100%;display:flex;align-items:center;margin-bottom:10px}.slider[data-v-5c7dbabc]{flex:3}.color-btn[data-v-204d666d]{display:flex;align-items:center;justify-content:center;padding:0!important}.color-block[data-v-204d666d]{height:20px;margin-left:8px;flex:1;outline:1px dashed hsla(0,0%,40%,.12);background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAEBJREFUOE9jfPbs2X8GIoCkpCQRqhgYGEcNxBlOo2GIM2iGQLL5//8/UTnl+fPnxOWUUQNxhtNoGOLOKYM+2QAAh2Nq10DwkukAAAAASUVORK5CYII=)}.content[data-v-204d666d]{width:100%;height:100%}.color-btn-icon[data-v-204d666d]{width:30px;font-size:12px;margin-top:2px;color:#bfbfbf}.row[data-v-a6510a8a]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-a6510a8a]{text-align:right}.row[data-v-6bafb099]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-6bafb099]{text-align:right}.slider[data-v-6bafb099]{flex:3}.text-style-panel[data-v-eafe485c]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.row[data-v-eafe485c]{width:100%;display:flex;align-items:center;margin-bottom:10px}.preset-style[data-v-eafe485c]{display:flex;flex-wrap:wrap;margin-bottom:10px}.preset-style-item[data-v-eafe485c]{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-eafe485c]:hover{border-color:#d14424;color:#d14424;z-index:1}.preset-style-item[data-v-eafe485c]:nth-child(2n){margin-left:-1px}.preset-style-item[data-v-eafe485c]:nth-child(n+3){margin-top:-1px}.text-color-btn[data-v-eafe485c]{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:0}.text-color-block[data-v-eafe485c]{width:16px;height:3px;margin-top:1px}.font-size-btn[data-v-eafe485c]{padding:0}.link-popover[data-v-eafe485c]{width:240px}.link-popover .btns[data-v-eafe485c]{margin-top:10px;text-align:right}.row[data-v-07b41654],.row[data-v-7bd50f1a]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-07b41654]{text-align:right}.filter[data-v-07b41654]{font-size:12px}.filter-item[data-v-07b41654]{padding:8px 0;display:flex;justify-content:center;align-items:center}.filter-item .name[data-v-07b41654]{width:60px}.filter-item .filter-slider[data-v-07b41654]{flex:1;margin:0 6px}.row[data-v-54b23b9e]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-54b23b9e]{text-align:right}.origin-image[data-v-54b23b9e]{height:100px;background-size:contain;background-repeat:no-repeat;background-position:50%;background-color:#f9f9f9;margin-bottom:10px}.full-width-btn[data-v-54b23b9e]{width:100%;margin-bottom:10px}.btn-icon[data-v-54b23b9e]{margin-right:3px}.clip[data-v-54b23b9e]{width:260px;font-size:12px}.clip .title[data-v-54b23b9e]{margin-bottom:5px}.shape-clip[data-v-54b23b9e]{margin-bottom:10px;display:flex;flex-wrap:wrap;align-content:flex-start}.shape-clip-item[data-v-54b23b9e]{display:flex;justify-content:center;align-items:center;cursor:pointer;width:16%;margin-bottom:5%}.shape-clip-item[data-v-54b23b9e]:not(:nth-child(5n)){margin-right:5%}.shape-clip-item:hover .shape[data-v-54b23b9e]{background-color:#ccc}.shape-clip-item .shape[data-v-54b23b9e]{width:40px;height:40px;background-color:#e1e1e1}.shape-style-panel[data-v-42b07d61]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.row[data-v-42b07d61]{width:100%;display:flex;align-items:center;margin-bottom:10px}.text-color-btn[data-v-42b07d61]{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:0}.text-color-block[data-v-42b07d61]{width:16px;height:3px;margin-top:1px}.font-size-btn[data-v-42b07d61]{padding:0}.slider[data-v-42b07d61]{flex:3}.row[data-v-ad75cd30]{width:100%;display:flex;align-items:center;margin-bottom:10px}.line-btn[data-v-ad75cd30]{display:flex;align-items:center;justify-content:space-between;padding:0!important}.line-btn .line-wrapper[data-v-ad75cd30]{margin-left:8px}.line-wrapper[data-v-ad75cd30]{overflow:visible}.line-btn-icon[data-v-ad75cd30]{width:30px;font-size:12px;margin-top:2px;color:#bfbfbf}.preset-point-style[data-v-ad75cd30]{padding:0 10px}.preset-point-style+.preset-point-style[data-v-ad75cd30]{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}.chart-style-panel[data-v-1a47c852]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.row[data-v-1a47c852]{width:100%;display:flex;align-items:center;margin-bottom:10px}.full-width-btn[data-v-1a47c852]{width:100%}.btn-icon[data-v-1a47c852]{margin-right:3px}.color-btn-wrap[data-v-1a47c852]{position:relative}.delete-color-btn[data-v-1a47c852]{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-1a47c852]{width:250px;margin-bottom:-10px;display:flex;flex-wrap:wrap;align-content:flex-start}.preset-theme[data-v-1a47c852]{display:flex;cursor:pointer;width:48%;margin-bottom:4%}.preset-theme[data-v-1a47c852]:not(:nth-child(2n)){margin-right:4%}.preset-theme-color[data-v-1a47c852]{width:20px;height:20px}.preset-theme-color.select[data-v-1a47c852]{transform:scale(1.2);transition:transform .1s}.row[data-v-3da8fdb7]{width:100%;display:flex;align-items:center;margin-bottom:10px}.theme-switch[data-v-3da8fdb7]{margin-bottom:18px}.switch-wrapper[data-v-3da8fdb7]{text-align:right}.text-color-btn[data-v-3da8fdb7]{display:flex;flex-direction:column;justify-content:center;align-items:center}.text-color-block[data-v-3da8fdb7]{width:16px;height:3px;margin-top:1px}.set-count[data-v-3da8fdb7]{display:flex;justify-content:center;align-items:center}.set-count .btn[data-v-3da8fdb7]{padding:4px 8px}.set-count .count-text[data-v-3da8fdb7]{flex:1;text-align:center;margin:0 8px}.row[data-v-61bcaa2a],.row[data-v-e3a2bd30]{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-58a36be6]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-row[data-v-58a36be6]{height:32px}.switch-wrapper[data-v-58a36be6]{text-align:right}.row[data-v-e5e0fba2]{width:100%;display:flex;align-items:center;margin-bottom:10px}.text-color-btn[data-v-e5e0fba2]{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:0}.text-color-block[data-v-e5e0fba2]{width:16px;height:3px;margin-top:1px}.font-size-btn[data-v-e5e0fba2]{padding:0}.row[data-v-4f10fba6]{width:100%;display:flex;align-items:center;margin-bottom:10px}.title[data-v-4f10fba6]{margin-bottom:10px}.label[data-v-4f10fba6]{text-align:center}.btn-icon[data-v-4f10fba6]{margin-right:3px}.icon-btn[data-v-4f10fba6]{cursor:pointer}.element-animation-panel[data-v-11684c24]{height:100%;display:flex;flex-direction:column}.tabs[data-v-11684c24]{display:flex;justify-content:flex-start;align-items:center;border-bottom:1px solid #eee;margin-bottom:20px}.tab[data-v-11684c24]{width:33.33%;padding-bottom:8px;border-bottom:2px solid transparent;text-align:center;cursor:pointer}.tab.active[data-v-11684c24]{border-bottom:2px solid #d14424}.tab.in.active[data-v-11684c24]{border-bottom-color:#68a490}.tab.out.active[data-v-11684c24]{border-bottom-color:#d86344}.tab.attention.active[data-v-11684c24]{border-bottom-color:#e8b76a}.element-animation[data-v-11684c24]{height:32px;display:flex;align-items:center}.element-animation-btn[data-v-11684c24]{width:100%}.config-item[data-v-11684c24]{display:flex;align-items:center}.config-item+.config-item[data-v-11684c24]{margin-top:5px}.tip[data-v-11684c24]{height:32px;display:flex;justify-content:center;align-items:center;font-style:italic}.animation-pool[data-v-11684c24]{width:400px;height:500px;overflow-y:auto;overflow-x:hidden;font-size:12px;margin-right:-12px;position:relative}.animation-pool .mask[data-v-11684c24]{position:absolute;top:0;right:0;bottom:0;left:0}.animation-pool.in .type-title[data-v-11684c24]{border-left-color:#68a490;background-color:rgba(104,164,144,.15)}.animation-pool.out .type-title[data-v-11684c24]{border-left-color:#d86344;background-color:rgba(216,99,68,.15)}.animation-pool.attention .type-title[data-v-11684c24]{border-left-color:#e8b76a;background-color:rgba(232,183,106,.15)}.type-title[data-v-11684c24]{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-11684c24]{display:flex;flex-wrap:wrap;align-content:flex-start}.pool-item[data-v-11684c24]{width:24%;margin-bottom:1.33333%;margin-bottom:10px;height:40px;line-height:40px;text-align:center;cursor:pointer}.pool-item[data-v-11684c24]:not(:nth-child(4n)){margin-right:1.33333%}.animation-box[data-v-11684c24]{background-color:#f9f9f9}.animation-sequence[data-v-11684c24]{flex:1;padding-right:12px;margin-right:-12px;overflow:auto;overflow:overlay}.sequence-item[data-v-11684c24]{border:1px solid #eee;padding:10px 6px;border-radius:2px;margin-bottom:8px;transition:all .5s}.sequence-item.in.active[data-v-11684c24]{border-color:#68a490}.sequence-item.out.active[data-v-11684c24]{border-color:#d86344}.sequence-item.attention.active[data-v-11684c24]{border-color:#e8b76a}.sequence-item.active[data-v-11684c24]{height:auto}.sequence-item .sequence-content[data-v-11684c24]{display:flex;align-items:center;cursor:-webkit-grab;cursor:grab}.sequence-item .sequence-content[data-v-11684c24]:active{cursor:-webkit-grabbing;cursor:grabbing}.sequence-item .sequence-content .index[data-v-11684c24]{flex:1}.sequence-item .sequence-content .text[data-v-11684c24]{flex:6}.sequence-item .sequence-content .handler[data-v-11684c24]{flex:2;font-size:15px;text-align:right}.sequence-item .sequence-content .handler-btn[data-v-11684c24]{margin-left:8px;cursor:pointer}.slide-design-panel[data-v-26058d12]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.row[data-v-26058d12]{width:100%;display:flex;align-items:center;margin-bottom:10px}.title[data-v-26058d12]{margin-bottom:10px}.title.dropdown[data-v-26058d12]{display:flex;align-items:center;cursor:pointer}.title.dropdown .icon[data-v-26058d12]{margin-left:5px;transition:transform .1s}.title.dropdown:not(.active) .icon[data-v-26058d12]{transform:rotate(-90deg)}.background-image-wrapper[data-v-26058d12]{margin-bottom:10px}.background-image[data-v-26058d12]{height:0;padding-bottom:56.25%;border:1px dashed #eee;border-radius:2px;position:relative;transition:all .2s}.background-image[data-v-26058d12]:hover{border-color:#d14424;color:#d14424}.background-image .content[data-v-26058d12]{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-26058d12]{display:flex;flex-wrap:wrap;align-content:flex-start}.theme-item[data-v-26058d12]{width:22%;margin-bottom:4%;padding-bottom:22%;border-radius:2px;position:relative;cursor:pointer}.theme-item[data-v-26058d12]:not(:nth-child(4n)){margin-right:4%}.theme-item .theme-item-content[data-v-26058d12]{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-26058d12]:hover{box-shadow:0 0 4px #888}.theme-item .text[data-v-26058d12]{font-size:16px}.theme-item .color-block[data-v-26058d12]{width:28px;height:10px;margin-top:5px}.slider[data-v-26058d12]{flex:3}.animation-pool[data-v-78e88e36]{display:flex;flex-wrap:wrap;margin-bottom:10px}.animation-item[data-v-78e88e36]{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-78e88e36]{border-color:#d14424;z-index:1}.animation-item[data-v-78e88e36]:nth-child(2n){margin-left:-1px}.animation-item[data-v-78e88e36]:nth-child(n+3){margin-top:-1px}.animation-block[data-v-78e88e36]{width:64px;height:36px;background:#666;position:relative;overflow:hidden}.animation-block.fade[data-v-78e88e36]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:fade-78e88e36 .3s linear;animation:fade-78e88e36 .3s linear}.animation-block.slideX[data-v-78e88e36]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:slideX-78e88e36 .3s linear;animation:slideX-78e88e36 .3s linear}.animation-block.slideY[data-v-78e88e36]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:slideY-78e88e36 .3s linear;animation:slideY-78e88e36 .3s linear}.animation-text[data-v-78e88e36]{font-size:12px;color:#333;text-align:center}@-webkit-keyframes fade-78e88e36{0%{opacity:0}to{opacity:1}}@keyframes fade-78e88e36{0%{opacity:0}to{opacity:1}}@-webkit-keyframes slideX-78e88e36{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slideX-78e88e36{0%{transform:translateX(100%)}to{transform:translateX(0)}}@-webkit-keyframes slideY-78e88e36{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideY-78e88e36{0%{transform:translateY(100%)}to{transform:translateY(0)}}.row[data-v-0a74a690]{width:100%;display:flex;align-items:center;margin-bottom:10px}.symbol-panel[data-v-e93c4822]{height:100%;display:flex;flex-direction:column}.symbol-panel .tabs[data-v-e93c4822]{display:flex;justify-content:space-around;align-items:center;border-bottom:1px solid #eee;margin-bottom:8px}.symbol-panel .tab[data-v-e93c4822]{padding:6px 10px 8px;border-bottom:2px solid transparent;cursor:pointer}.symbol-panel .tab.active[data-v-e93c4822]{border-bottom:2px solid #d14424}.symbol-panel .pool[data-v-e93c4822]{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-e93c4822]{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-e93c4822]:not(:nth-child(5n)){margin-right:2.5%}.symbol-panel .symbol-item[data-v-e93c4822]:hover{color:#d14424}.symbol-panel .symbol-item .symbol[data-v-e93c4822]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;background-color:#fff}.toolbar[data-v-017ca85e]{border-left:1px solid #eee;background-color:#fff;display:flex;flex-direction:column}.tabs[data-v-017ca85e]{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-017ca85e]{flex:1;display:flex;justify-content:center;align-items:center;background-color:#f9f9f9;border-bottom:1px solid #eee;cursor:pointer}.tab.active[data-v-017ca85e]{background-color:#fff;border-bottom-color:#fff}.tab+.tab[data-v-017ca85e]{border-left:1px solid #eee}.content[data-v-017ca85e]{padding:12px;font-size:13px;overflow:auto;overflow:overlay}.remark[data-v-7ed67bb3]{position:relative;border-top:1px solid #eee;background-color:#f9f9f9;line-height:1.5}.remark textarea[data-v-7ed67bb3]{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-7ed67bb3]{height:7px;position:absolute;top:-3px;left:0;right:0;cursor:n-resize;z-index:2}.export-img-dialog[data-v-61e92928]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.thumbnails-view[data-v-61e92928],.thumbnails-view[data-v-61e92928]:after{position:absolute;top:0;right:0;bottom:0;left:0}.thumbnails-view[data-v-61e92928]:after{content:"";background-color:#fff}.configs[data-v-61e92928]{width:350px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center;z-index:1}.configs .row[data-v-61e92928]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-61e92928]{width:100px;position:relative}.configs .title[data-v-61e92928]:after{content:attr(data-range);position:absolute;top:20px;left:0}.configs .config-item[data-v-61e92928]{flex:1}.btns[data-v-61e92928]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-61e92928]{flex:1}.btns .close[data-v-61e92928]{width:100px;margin-left:10px}.export-json-dialog[data-v-54705363]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.preview[data-v-54705363]{width:100%;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center;background-color:#f9f9f9;color:#0451a5}.btns[data-v-54705363]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-54705363]{flex:1}.btns .close[data-v-54705363]{width:100px;margin-left:10px}[data-v-54705363]::-webkit-scrollbar{width:10px;height:10px;background-color:#f9f9f9}[data-v-54705363]::-webkit-scrollbar-thumb{background-color:#c1c1c1}.export-pdf-dialog[data-v-7c83ddb5]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.thumbnails-view[data-v-7c83ddb5],.thumbnails-view[data-v-7c83ddb5]:after{position:absolute;top:0;right:0;bottom:0;left:0}.thumbnails-view[data-v-7c83ddb5]:after{content:"";background-color:#fff}.thumbnail.break-page[data-v-7c83ddb5]{-moz-column-break-after:page;break-after:page}.configs[data-v-7c83ddb5]{width:300px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center;z-index:1}.configs .row[data-v-7c83ddb5]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-7c83ddb5]{width:100px}.configs .config-item[data-v-7c83ddb5]{flex:1}.configs .tip[data-v-7c83ddb5]{font-size:12px;color:#aaa;line-height:1.8;margin-top:25px}.btns[data-v-7c83ddb5]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-7c83ddb5]{flex:1}.btns .close[data-v-7c83ddb5]{width:100px;margin-left:10px}.export-pptx-dialog[data-v-dad79818]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.configs[data-v-dad79818]{width:350px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center}.configs .row[data-v-dad79818]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-dad79818]{width:100px;position:relative}.configs .title[data-v-dad79818]:after{content:attr(data-range);position:absolute;top:20px;left:0}.configs .config-item[data-v-dad79818]{flex:1}.btns[data-v-dad79818]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-dad79818]{flex:1}.btns .close[data-v-dad79818]{width:100px;margin-left:10px}.export-pptist-dialog[data-v-1e43fa60]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.configs[data-v-1e43fa60]{width:350px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center}.configs .row[data-v-1e43fa60]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-1e43fa60]{width:100px;position:relative}.configs .title[data-v-1e43fa60]:after{content:attr(data-range);position:absolute;top:20px;left:0}.configs .config-item[data-v-1e43fa60]{flex:1}.configs .tip[data-v-1e43fa60]{font-size:12px;color:#aaa;line-height:1.8;margin-top:25px}.btns[data-v-1e43fa60]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-1e43fa60]{flex:1}.btns .close[data-v-1e43fa60]{width:100px;margin-left:10px}.export-dialog[data-v-17be277c]{margin:-24px}.tabs[data-v-17be277c]{height:50px;font-size:12px;flex-shrink:0;display:flex;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-top-left-radius:2px;border-top-right-radius:2px;overflow:hidden}.tab[data-v-17be277c]{flex:1;display:flex;justify-content:center;align-items:center;background-color:#f9f9f9;border-bottom:1px solid #eee;cursor:pointer}.tab.active[data-v-17be277c]{background-color:#fff;border-bottom-color:#fff}.tab+.tab[data-v-17be277c]{border-left:1px solid #eee}.content[data-v-17be277c]{height:460px;padding:12px;font-size:13px;overflow:auto;overflow:overlay}.pptist-editor[data-v-5ff9efcc]{height:100%}.layout-header[data-v-5ff9efcc]{height:40px}.layout-content[data-v-5ff9efcc]{height:calc(100% - 40px);display:flex}.layout-content-left[data-v-5ff9efcc]{width:160px;height:100%;flex-shrink:0}.layout-content-center[data-v-5ff9efcc]{width:calc(100% - 420px)}.layout-content-center .center-top[data-v-5ff9efcc]{height:40px}.layout-content-right[data-v-5ff9efcc]{width:260px;height:100%}.screen-element-video[data-v-0ef8b6c0]{position:absolute}.element-content[data-v-0ef8b6c0],.rotate-wrapper[data-v-0ef8b6c0]{width:100%;height:100%}.screen-element-audio[data-v-1adba489]{position:absolute}.rotate-wrapper[data-v-1adba489]{width:100%;height:100%}.element-content[data-v-1adba489]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.element-content:hover .audio-player[data-v-1adba489]{display:block}.audio-icon[data-v-1adba489]{cursor:pointer}.audio-player[data-v-1adba489]{position:absolute;display:none}.link[data-v-0b036cf9]{cursor:pointer}.screen-slide[data-v-19ab4349]{position:absolute;top:0;left:0;transform-origin:0 0;overflow:hidden}.background[data-v-19ab4349]{width:100%;height:100%;background-position:50%;position:absolute}.screen-slide-list[data-v-01900375]{background:#1d1d1d;position:relative;width:100%;height:100%}.slide-item[data-v-01900375]{position:absolute;top:0;left:0;width:100%;height:100%}.slide-item.current[data-v-01900375]{z-index:2}.slide-item.hide[data-v-01900375]{opacity:0}.slide-item.turning-mode-no.before[data-v-01900375]{transform:translateY(-100%)}.slide-item.turning-mode-no.after[data-v-01900375]{transform:translateY(100%)}.slide-item.turning-mode-fade[data-v-01900375]{transition:opacity .75s}.slide-item.turning-mode-fade.after[data-v-01900375],.slide-item.turning-mode-fade.before[data-v-01900375]{pointer-events:none;opacity:0}.slide-item.turning-mode-slideX[data-v-01900375]{transition:transform .35s}.slide-item.turning-mode-slideX.before[data-v-01900375]{transform:translateX(-100%)}.slide-item.turning-mode-slideX.after[data-v-01900375]{transform:translateX(100%)}.slide-item.turning-mode-slideY[data-v-01900375]{transition:transform .35s}.slide-item.turning-mode-slideY.before[data-v-01900375]{transform:translateY(-100%)}.slide-item.turning-mode-slideY.after[data-v-01900375]{transform:translateY(100%)}.slide-content[data-v-01900375]{background-color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;justify-content:center;align-items:center}.slide-thumbnails[data-v-11e5b856]{width:100%;height:100%;position:fixed;top:0;left:0;background-color:#1a1a1a;z-index:99}.return-button[data-v-11e5b856]{height:60px;padding:20px 30px 0}.return-button .icon[data-v-11e5b856]{color:#fff;font-size:36px;cursor:pointer}.return-button .icon[data-v-11e5b856]:hover{color:#d14424}.slide-thumbnails-content[data-v-11e5b856]{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-11e5b856]{width:150px;outline:2px solid #aaa;margin-right:12px;margin-bottom:12px}.slide-thumbnails-content .thumbnail[data-v-11e5b856]:hover{outline-color:#d14424}.slide-thumbnails-content .thumbnail.active[data-v-11e5b856]{outline-width:3px;outline-color:#d14424}.writing-board[data-v-9ac1670a]{z-index:8;cursor:none;position:absolute;top:0;right:0;bottom:0;left:0}.blackboard[data-v-9ac1670a]{width:100%;height:100%;background-color:#0f392b}.canvas[data-v-9ac1670a]{position:absolute;top:0;left:0}.eraser[data-v-9ac1670a],.pen[data-v-9ac1670a]{pointer-events:none;position:absolute;z-index:9}.eraser .icon[data-v-9ac1670a],.pen .icon[data-v-9ac1670a]{filter:drop-shadow(2px 2px 2px #555)}.eraser[data-v-9ac1670a]{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-3ca1d362]{font-size:12px;z-index:10;position:absolute;top:0;right:0;bottom:0;left:0}.writing-board-tool .writing-board-wrap[data-v-3ca1d362]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.writing-board-tool .tools[data-v-3ca1d362]{height:50px;position:fixed;z-index:11;padding:12px;background-color:#eee;border-radius:2px;display:flex;align-items:center}.writing-board-tool .btn[data-v-3ca1d362]{padding:5px 10px;cursor:pointer}.writing-board-tool .btn[data-v-3ca1d362]:hover{color:#d14424}.writing-board-tool .btn.active[data-v-3ca1d362]{background-color:rgba(209,68,36,.5);color:#fff}.writing-board-tool .icon[data-v-3ca1d362]{font-size:20px}.writing-board-tool .colors[data-v-3ca1d362]{display:flex;padding:0 10px}.writing-board-tool .color[data-v-3ca1d362]{width:16px;height:16px;border-radius:2px;cursor:pointer}.writing-board-tool .color[data-v-3ca1d362]:hover{transform:scale(1.15)}.writing-board-tool .color.active[data-v-3ca1d362]{transform:scale(1.3)}.writing-board-tool .color+.color[data-v-3ca1d362]{margin-left:8px}.base-view[data-v-54670d0c]{width:100%;height:100%}.base-view.laser-pen[data-v-54670d0c]{cursor:url(data:image/png;base64,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) 20 20,default!important}.tools-left[data-v-54670d0c]{position:fixed;bottom:8px;left:8px;font-size:25px;color:#666;z-index:10}.tools-left .tool-btn[data-v-54670d0c]{opacity:.35;cursor:pointer}.tools-left .tool-btn[data-v-54670d0c]:hover{opacity:.9}.tools-left .tool-btn+.tool-btn[data-v-54670d0c]{margin-left:8px}.tools-right[data-v-54670d0c]{height:66px;position:fixed;bottom:-66px;right:0;z-index:5;padding:8px;transition:bottom .2s}.tools-right.visible[data-v-54670d0c]{bottom:0}.tools-right[data-v-54670d0c]:after{content:"";width:100%;height:66px;position:absolute;left:0;top:-66px}.tools-right .content[data-v-54670d0c]{width:100%;height:100%;display:flex;justify-content:center;align-items:center;border-radius:2px;font-size:25px;background-color:#fff;color:#41464b;padding:8px 10px;box-shadow:0 2px 12px 0 rgba(56,56,56,.2);border:1px solid #e2e6ed}.tools-right .tool-btn[data-v-54670d0c]{cursor:pointer}.tools-right .tool-btn.active[data-v-54670d0c],.tools-right .tool-btn[data-v-54670d0c]:hover{color:#d14424}.tools-right .tool-btn+.tool-btn[data-v-54670d0c]{margin-left:15px}.tools-right .page-number[data-v-54670d0c]{font-size:13px;padding:8px 12px;cursor:pointer}.presenter-view[data-v-ce50b150]{width:100%;height:100%;display:flex}.toolbar[data-v-ce50b150]{width:70px;height:100%;background-color:#fff;border-right:1px solid #eee;font-size:12px;margin:20px 0}.toolbar .tool-btn[data-v-ce50b150]{display:flex;flex-direction:column;justify-content:center;align-items:center;cursor:pointer}.toolbar .tool-btn+.tool-btn[data-v-ce50b150]{margin-top:22px}.toolbar .tool-btn.active[data-v-ce50b150],.toolbar .tool-btn[data-v-ce50b150]:hover{color:#d14424}.toolbar .divider[data-v-ce50b150]{width:70%;min-width:70%;margin:24px 15%}.toolbar .tool-icon[data-v-ce50b150]{margin-bottom:8px;font-size:22px}.content[data-v-ce50b150]{width:calc(100% - 430px);height:100%;background-color:#1d1d1d}.slide-list-wrap[data-v-ce50b150]{height:calc(100% - 190px);margin:20px;overflow:hidden;position:relative}.slide-list-wrap.laser-pen[data-v-ce50b150]{cursor:url(data:image/png;base64,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) 20 20,default!important}.thumbnails[data-v-ce50b150]{height:150px;padding:15px;white-space:nowrap;overflow-x:auto;overflow-y:hidden;border-top:1px solid #3a3a3a}.thumbnail[data-v-ce50b150]{display:inline-block;outline:2px solid #aaa}.thumbnail+.thumbnail[data-v-ce50b150]{margin-left:10px}.thumbnail[data-v-ce50b150]:hover{outline-color:#d14424}.thumbnail.active[data-v-ce50b150]{outline-width:3px;outline-color:#d14424}.remark[data-v-ce50b150]{width:360px;height:100%;position:relative;background-color:#2a2a2a;border-left:1px solid #3a3a3a;color:#fff}.remark .header[data-v-ce50b150]{height:60px;padding:0 20px;display:flex;justify-content:space-between;align-items:center;font-size:18px;border-bottom:1px solid #3a3a3a}.remark .remark-content[data-v-ce50b150]{height:calc(100% - 60px);padding:20px;line-height:1.5;overflow:auto;overflow:overlay}.remark .remark-scale[data-v-ce50b150]{position:absolute;right:5px;bottom:5px;font-size:22px;display:flex}.remark .scale-btn[data-v-ce50b150]{width:40px;height:40px;display:flex;justify-content:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}.remark .scale-btn.disable[data-v-ce50b150]{color:#666;cursor:no-drop}.remark .scale-btn[data-v-ce50b150]:not(.disable):hover{background-color:#333}[data-v-ce50b150]::-webkit-scrollbar{width:0;height:0}.pptist-screen[data-v-18f794c8]{width:100%;height:100%}.mobile-operate[data-v-10f40a30]{position:absolute;z-index:100;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mobile-thumbnails[data-v-0b484044]{padding:10px;white-space:nowrap;overflow-x:auto;overflow-y:hidden}.thumbnail-item[data-v-0b484044]{position:relative;display:inline-block;outline:2px solid #aaa}.thumbnail-item+.thumbnail-item[data-v-0b484044]{margin-left:10px}.thumbnail-item.active[data-v-0b484044]{outline-color:#d14424}.thumbnail-item.active .label[data-v-0b484044]{background-color:#d14424}.thumbnail-item .label[data-v-0b484044]{min-width:20px;height:14px;line-height:14px;position:absolute;right:-1px;top:-1px;color:#fff;background-color:#aaa;z-index:1;font-size:12px;text-align:center;padding:0 5px}[data-v-0b484044]::-webkit-scrollbar{width:0;height:0}.slide-toolbar[data-v-70590190]{height:230px;background-color:#fff;box-shadow:0 0 15px 0 rgba(0,0,0,.1);display:flex;flex-direction:column}.remark[data-v-70590190]{position:relative;flex:1;border-bottom:1px solid #eee;line-height:1.5}.remark textarea[data-v-70590190]{width:100%;height:100%;overflow-y:auto;resize:none;border:0;outline:0;padding:8px 10px;font-size:12px;background-color:transparent;position:absolute;top:0;right:0;bottom:0;left:0}.toolbar[data-v-70590190]{height:90px;border-bottom:1px solid #eee;padding:10px}.row[data-v-70590190]{width:100%;display:flex;align-items:center;margin-bottom:5px}.row .icon[data-v-70590190]{margin-right:3px}.element-toolbar[data-v-332b9382]{width:100%;height:240px;position:absolute;z-index:99;bottom:0;left:0;background-color:#fff;box-shadow:0 0 15px 0 rgba(0,0,0,.1);display:flex;flex-direction:column;-webkit-animation:slideInUp-332b9382 .15s;animation:slideInUp-332b9382 .15s}.tabs[data-v-332b9382]{display:flex;justify-content:flex-start;align-items:center;border-bottom:1px solid #eee;font-size:12px;font-weight:700;margin-bottom:10px}.tab[data-v-332b9382]{width:30%;padding:10px 10px 12px;margin:0 10%;border-bottom:2px solid transparent;text-align:center;cursor:pointer}.tab.active[data-v-332b9382]{border-bottom:2px solid #d14424}@-webkit-keyframes slideInUp-332b9382{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideInUp-332b9382{0%{transform:translateY(100%)}to{transform:translateY(0)}}.content[data-v-332b9382]{padding:10px;flex:1;overflow:auto}.row[data-v-332b9382]{width:100%;display:flex;align-items:center;margin-bottom:10px}.row .icon[data-v-332b9382]{margin-right:3px}.row-block[data-v-332b9382]{margin-bottom:10px;background-color:#f9f9f9;border-radius:2px;padding:10px}.label[data-v-332b9382]{font-size:13px;margin-bottom:20px;margin-left:6px}.colors[data-v-332b9382]{display:flex;flex-wrap:wrap;align-content:flex-start}.color[data-v-332b9382]{width:12%;margin-bottom:.57143%;padding-bottom:5px;display:flex;justify-content:center;align-items:center}.color[data-v-332b9382]:not(:nth-child(8n)){margin-right:.57143%}.color .color-block[data-v-332b9382]{width:30px;height:30px;border-radius:50%}.mobile-editor-header[data-v-2c0b2c5e]{height:50px;background-color:#fff;display:flex;justify-content:space-between;align-items:center;padding:0 18px;font-size:13px;box-shadow:0 0 15px 0 rgba(0,0,0,.1)}.history[data-v-2c0b2c5e]{display:flex;justify-content:center;align-items:center}.history-item[data-v-2c0b2c5e]{margin-right:20px}.history-item.disable[data-v-2c0b2c5e]{opacity:.5}.mobile-editor[data-v-f9ea6e88]{height:100%;position:relative;background-color:#f9f9f9}.content[data-v-f9ea6e88]{height:calc(100% - 280px);display:flex;justify-content:center;align-items:center}.viewport[data-v-f9ea6e88]{transform-origin:0 0}.viewport-wrapper[data-v-f9ea6e88]{position:relative;box-shadow:0 0 15px 0 rgba(0,0,0,.1)}.background[data-v-f9ea6e88]{width:100%;height:100%;background-position:50%;position:absolute}.mobile-player[data-v-2845ccb6]{transform-origin:0 0;background-color:#1d1d1d;position:relative}.screen-slide-list[data-v-2845ccb6]{position:relative;width:100%;height:100%}.slide-item[data-v-2845ccb6]{position:absolute;top:0;left:0;width:100%;height:100%}.slide-item.current[data-v-2845ccb6]{z-index:2}.slide-item.hide[data-v-2845ccb6]{opacity:0}.slide-item.turning-mode-no.before[data-v-2845ccb6]{transform:translateY(-100%)}.slide-item.turning-mode-no.after[data-v-2845ccb6]{transform:translateY(100%)}.slide-item.turning-mode-fade[data-v-2845ccb6]{transition:opacity .75s}.slide-item.turning-mode-fade.after[data-v-2845ccb6],.slide-item.turning-mode-fade.before[data-v-2845ccb6]{pointer-events:none;opacity:0}.slide-item.turning-mode-slideX[data-v-2845ccb6]{transition:transform .35s}.slide-item.turning-mode-slideX.before[data-v-2845ccb6]{transform:translateX(-100%)}.slide-item.turning-mode-slideX.after[data-v-2845ccb6]{transform:translateX(100%)}.slide-item.turning-mode-slideY[data-v-2845ccb6]{transition:transform .35s}.slide-item.turning-mode-slideY.before[data-v-2845ccb6]{transform:translateY(-100%)}.slide-item.turning-mode-slideY.after[data-v-2845ccb6]{transform:translateY(100%)}.slide-content[data-v-2845ccb6]{background-color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;justify-content:center;align-items:center}.header[data-v-2845ccb6]{width:100%;height:40px;line-height:40px;padding:0 15px;position:absolute;top:0;left:0;z-index:99;background-color:rgba(29,29,29,.7);text-align:right;font-size:13px;color:#fff;-webkit-animation:slideInDown-2845ccb6 .15s;animation:slideInDown-2845ccb6 .15s}.header .back[data-v-2845ccb6]{height:100%}.thumbnails[data-v-2845ccb6]{width:100%;position:absolute;bottom:0;left:0;z-index:99;background-color:rgba(29,29,29,.7);overflow:auto!important;-webkit-animation:slideInUp-2845ccb6 .15s;animation:slideInUp-2845ccb6 .15s}@-webkit-keyframes slideInUp-2845ccb6{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideInUp-2845ccb6{0%{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes slideInDown-2845ccb6{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes slideInDown-2845ccb6{0%{transform:translateY(-100%)}to{transform:translateY(0)}}.mobile-preview[data-v-04d332cb]{height:100%;background-color:#f9f9f9}.tip[data-v-04d332cb]{position:fixed;top:0;left:0;right:0;z-index:99}.thumbnail-list[data-v-04d332cb]{height:calc(100% - 50px);padding:10px;overflow:auto}.thumbnail-item[data-v-04d332cb]{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-04d332cb]{margin-top:10px}.menu[data-v-04d332cb]{height:50px;position:relative;box-shadow:0 -2px 4px 0 rgba(51,51,51,.05);background:#fff;display:flex;justify-content:center;align-items:center}.menu .menu-item[data-v-04d332cb]{width:50%;height:100%;display:flex;justify-content:center;align-items:center;font-size:13px}.menu .menu-item .icon[data-v-04d332cb]{margin-right:8px;font-size:18px}#app,.mobile[data-v-efaecbfe]{height:100%}.ProseMirror,.ProseMirror-static{outline:0;border:0;font-size:20px;word-break:break-word;white-space:normal}.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,.ProseMirror p{text-indent:var(--textIndent)}.ProseMirror-static p+p,.ProseMirror p+p{margin-top:var(--paragraphSpace)}.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-static [data-indent="1"],.ProseMirror [data-indent="1"]{padding-left:48px}.ProseMirror-static [data-indent="2"],.ProseMirror [data-indent="2"]{padding-left:96px}.ProseMirror-static [data-indent="3"],.ProseMirror [data-indent="3"]{padding-left:144px}.ProseMirror-static [data-indent="4"],.ProseMirror [data-indent="4"]{padding-left:192px}.ProseMirror-static [data-indent="5"],.ProseMirror [data-indent="5"]{padding-left:240px}.ProseMirror-static [data-indent="6"],.ProseMirror [data-indent="6"]{padding-left:288px}.ProseMirror-static [data-indent="7"],.ProseMirror [data-indent="7"]{padding-left:336px}.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/素材集市酷方体.8d33b29e.ttf)}@font-face{font-family:途牛类圆体;src:url(../fonts/途牛类圆体.abaea3c4.ttf)}@font-face{font-family:锐字真言体;src:url(../fonts/锐字真言体.1583afec.ttf)}.input[data-v-0a87e9c4]{display:none}.checkbox-button[data-v-4074d5c2]{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-4074d5c2]:hover{color:#d14424}.checkbox-button.checked[data-v-4074d5c2]{color:#fff;background-color:#d14424;border-color:#d14424}.checkbox-button.checked[data-v-4074d5c2]:hover{background:rgba(209,68,36,.9);border-color:rgba(209,68,36,.9)}.checkbox-button-group[data-v-adf706aa]{display:flex;align-items:center}.checkbox-button-group[data-v-adf706aa] .checkbox-button{border-radius:0;border-left-width:0;border-right-width:0;display:inline-block}.checkbox-button-group[data-v-adf706aa] .checkbox-button+.checkbox-button{border-left-width:1px}.checkbox-button-group[data-v-adf706aa] .checkbox-button:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px;border-left-width:1px}.checkbox-button-group[data-v-adf706aa] .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-20bfe6b0]{width:100%;position:relative;overflow:hidden;text-align:center;font-size:14px}.editable-input[data-v-20bfe6b0]:after{content:"#";position:absolute;left:0;top:50%;transform:translateY(-50%);color:#999}.input-content[data-v-20bfe6b0]{width:100%;padding:3px;border:0;border-bottom:1px solid #ddd;outline:none;text-align:center}.input-label[data-v-20bfe6b0]{text-transform:capitalize}.color-picker[data-v-e0bde284]{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-e0bde284]{width:100%;padding-bottom:50%;position:relative;overflow:hidden}.picker-controls[data-v-e0bde284]{display:flex}.picker-sliders[data-v-e0bde284]{padding:4px 0;flex:1}.picker-hue-wrap[data-v-e0bde284]{position:relative;height:10px}.picker-alpha-wrap[data-v-e0bde284]{position:relative;height:10px;margin-top:4px;overflow:hidden}.picker-color-wrap[data-v-e0bde284]{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-e0bde284]{background-size:auto}.picker-current-color[data-v-e0bde284]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2}.picker-field[data-v-e0bde284]{display:flex;margin-bottom:8px}.picker-field .straw[data-v-e0bde284]{width:24px;height:24px;margin-top:4px;margin-left:4px;display:flex;justify-content:flex-end;align-items:center;font-size:20px;cursor:pointer}.picker-field .input[data-v-e0bde284]{flex:1}.picker-presets[data-v-e0bde284]{display:flex;flex-wrap:wrap;align-content:flex-start}.picker-presets-color[data-v-e0bde284]{width:7%;margin-bottom:3.33333%;height:0;padding-bottom:7%;flex-shrink:0;position:relative;cursor:pointer}.picker-presets-color[data-v-e0bde284]:not(:nth-child(10n)){margin-right:3.33333%}.picker-presets-color.alpha[data-v-e0bde284]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAADBJREFUOE9jfPbs2X8GPEBSUhKfNAPjqAHDIgz+//+PNx08f/4cfzoYNYCBceiHAQC5flV5JzgrxQAAAABJRU5ErkJggg==)}.picker-presets-color-content[data-v-e0bde284]{position:absolute;top:0;right:0;bottom:0;left:0}.picker-gradient-presets[data-v-e0bde284]{display:flex;flex-wrap:wrap;align-content:flex-start}.picker-gradient-col[data-v-e0bde284]{width:7%;margin-bottom:3.33333%;display:flex;flex-direction:column}.picker-gradient-col[data-v-e0bde284]:not(:nth-child(10n)){margin-right:3.33333%}.picker-gradient-color[data-v-e0bde284]{width:100%;height:16px;position:relative;cursor:pointer}.recent-colors-title[data-v-e0bde284]{font-size:12px;margin-bottom:4px}.fullscreen-spin[data-v-5e77feb8]{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 3997dfed..e4c274ac 100644 --- a/index.html +++ b/index.html @@ -30,4 +30,4 @@ 100% { transform: rotate(360deg); } - }
正在加载中,请稍等 ...
\ No newline at end of file + }
正在加载中,请稍等 ...
\ No newline at end of file diff --git a/js/app.c1a001e5.js b/js/app.c1a001e5.js new file mode 100644 index 00000000..6bc9a871 --- /dev/null +++ b/js/app.c1a001e5.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=[];sb){var m=e.nodeAt(c),p=m&&m.marks.find(l);if(!p||p!==a)break;s=c,r=m,c--}c=n+1,b=e.nodeSize-2;while(c-1||t.type===e},F=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}}},R=function(e){return function(t){return F(t.$from,e)}},P=function(e){return function(t){return R((function(t){return A(e,t)}))(t)}},H=function(e,t){var n=t.schema.nodes[e];return!!P(n)(t.selection)},q=function(e){var t,n,o=e.state,c=o.selection,l=o.doc,a=c.from,r=l.nodeAt(a)||l.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)||[]},U=function(e,t,n){var o,c=Object(T["a"])(e);try{for(c.s();!(o=c.n()).done;){var l=o.value;if(l.type.name===t&&l.attrs[n])return l.attrs[n]}}catch(a){c.e(a)}finally{c.f()}return null},W=function(e,t){var n,o=Object(T["a"])(e);try{for(o.s();!(n=o.n()).done;){var c=n.value;if(c.type.name===t)return!0}}catch(l){o.e(l)}finally{o.f()}return!1},G=function(e,t){var n=e.selection,o=n.from,c=n.$from,l=n.to,a=n.empty;return a?t.isInSet(e.storedMarks||c.marks()):e.doc.rangeHasMark(o,l,t)},X=function(e,t){var n=e.state,o=n.selection,c=n.doc,l=o.from,a=o.to,r=!0,i="";return c.nodesBetween(l,a,(function(e){return r&&e.attrs[t]&&(r=!1,i=e.attrs[t]),r})),i},Y={color:"#000",backcolor:"#000",fontsize:"20px",fontname:"微软雅黑",align:"left"},Z=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t=Object(L["a"])(Object(L["a"])({},Y),t);var n=q(e),o=W(n,"strong"),c=W(n,"em"),l=W(n,"underline"),a=W(n,"strikethrough"),r=W(n,"superscript"),i=W(n,"subscript"),u=W(n,"code"),d=U(n,"forecolor","color")||t.color,s=U(n,"backcolor","backcolor")||t.backcolor,f=U(n,"fontsize","fontsize")||t.fontsize,b=U(n,"fontname","fontname")||t.fontname,m=U(n,"link","href")||"",p=X(e,"align")||t.align,v=H("bullet_list",e.state),O=H("ordered_list",e.state),h=H("blockquote",e.state);return{bold:o,em:c,underline:l,strikethrough:a,superscript:r,subscript:i,code:u,color:d,backcolor:s,fontsize:f,fontname:b,link:m,align:p,bulletList:v,orderedList:O,blockquote:h}},J=function(e){var t=q(e),n=U(t,"fontsize","fontsize")||Y.fontsize;return parseInt(n)},K={bold:!1,em:!1,underline:!1,strikethrough:!1,superscript:!1,subscript:!1,code:!1,color:"#000",backcolor:"#000",fontsize:"20px",fontname:"微软雅黑",link:"",align:"left",bulletList:!1,orderedList:!1,blockquote:!1},Q=(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,c=100,l="a",a=document.createElement("canvas"),r=a.getContext("2d");if(!r)return!1;a.width=o,a.height=c,r.textAlign="center",r.fillStyle="black",r.textBaseline="middle";var i=function(e){r.clearRect(0,0,o,c),r.font="".concat(n,"px ").concat(e,", ").concat(t),r.fillText(l,o/2,c/2);var a=r.getImageData(0,0,o,c).data;return[].slice.call(a).filter((function(e){return 0!==e}))};return i(t).join("")!==i(e).join("")}),$=n("2909"),ee=(n("d81d"),n("ac1f"),n("5319"),n("5b81"),n("a434"),n("c740"),n("66cb")),te=n.n(ee),ne=n("2ef0"),oe=[{id:"test-slide-1",elements:[{type:"shape",id:"4cbRxp",left:0,top:200,width:546,height:362.5,viewBox:[200,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,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"}},{id:"test-slide-2",elements:[{type:"text",id:"ptNnUJ",left:145,top:148,width:711,height:77,lineHeight:1.2,content:"

在此处添加标题

",rotate:0,defaultFontName:"Microsoft Yahei",defaultColor:"#333"},{type:"text",id:"mRHvQN",left:207.50000000000003,top:249.84259259259264,width:585,height:56,content:"

在此处添加副标题

",rotate:0,defaultFontName:"Microsoft Yahei",defaultColor:"#333"},{type:"line",id:"7CQDwc",left:323.09259259259267,top:238.33333333333334,start:[0,0],end:[354.8148148148148,0],points:["",""],color:"#5b9bd5",style:"solid",width:4},{type:"shape",id:"09wqWw",left:-27.648148148148138,top:432.73148148148147,width:1056.2962962962963,height:162.96296296296296,viewBox:[200,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:"#5b9bd5",fixedRatio:!1,rotate:0}],background:{type:"solid",color:"#fff"}},{id:"test-slide-3",elements:[{type:"shape",id:"vSheCJ",left:183.5185185185185,top:175.5092592592593,width:605.1851851851851,height:185.18518518518516,viewBox:[200,200],path:"M 0 0 L 200 0 L 200 200 L 0 200 Z",fill:"#5b9bd5",fixedRatio:!1,rotate:0},{type:"shape",id:"Mpwv7x",left:211.29629629629628,top:201.80555555555557,width:605.1851851851851,height:185.18518518518516,viewBox:[200,200],path:"M 0 0 L 200 0 L 200 200 L 0 200 Z",fill:"#5b9bd5",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:"Microsoft Yahei",defaultColor:"#333",wordSpace:5}],background:{type:"solid",color:"#fff"}}],ce={themeColor:"#5b9bd5",fontColor:"#333",fontName:"Microsoft Yahei",backgroundColor:"#fff"},le=[{id:"template",elements:[{type:"shape",id:"4cbRxp",left:0,top:200,width:546,height:362.5,viewBox:[200,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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}}"}}],ae=Object(y["b"])("slides",{state:function(){return{theme:ce,slides:oe,slideIndex:0,viewportRatio:.5625}},getters:{currentSlide:function(e){return e.slides[e.slideIndex]},currentSlideAnimations:function(e){var t=e.slides[e.slideIndex];if(null===t||void 0===t||!t.animations)return[];var n=t.elements,o=n.map((function(e){return e.id}));return t.animations.filter((function(e){return o.includes(e.elId)}))},formatedAnimations:function(e){var t=e.slides[e.slideIndex];if(null===t||void 0===t||!t.animations)return[];var n,o=t.elements,c=o.map((function(e){return e.id})),l=t.animations.filter((function(e){return c.includes(e.elId)})),a=[],r=Object(T["a"])(l);try{var i=function(){var e=n.value;if("click"!==e.trigger&&a.length){if("meantime"===e.trigger){var t=a[a.length-1];t.animations=t.animations.filter((function(t){return t.elId!==e.elId})),t.animations.push(e),a[a.length-1]=t}else if("auto"===e.trigger){var o=a[a.length-1];o.autoNext=!0,a[a.length-1]=o,a.push({animations:[e],autoNext:!1})}}else a.push({animations:[e],autoNext:!1})};for(r.s();!(n=r.n()).done;)i()}catch(u){r.e(u)}finally{r.f()}return a},layouts:function(e){var t=e.theme,n=t.themeColor,o=t.fontColor,c=t.fontName,l=t.backgroundColor,a=te()(o).isDark()?"rgba(230, 230, 230, 0.5)":"rgba(180, 180, 180, 0.5)",r=JSON.stringify(le).replaceAll("{{themeColor}}",n).replaceAll("{{fontColor}}",o).replaceAll("{{fontName}}",c).replaceAll("{{backgroundColor}}",l).replaceAll("{{subColor}}",a);return JSON.parse(r)}},actions:{setTheme:function(e){this.theme=Object(L["a"])(Object(L["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($["a"])(n))),this.slideIndex=o},updateSlide:function(e){var t=this.slideIndex;this.slides[t]=Object(L["a"])(Object(L["a"])({},this.slides[t]),e)},deleteSlide:function(e){for(var t=this,n=Array.isArray(e)?e:[e],o=[],c=function(e){var c=t.slides.findIndex((function(t){return t.id===n[e]}));o.push(c)},l=0;lr&&(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($["a"])(n),Object($["a"])(t));this.slides[this.slideIndex].elements=o},deleteElement:function(e){var t=Array.isArray(e)?e:[e],n=this.slides[this.slideIndex].elements,o=n.filter((function(e){return!t.includes(e.id)}));this.slides[this.slideIndex].elements=o},updateElement:function(e){var t=e.id,n=e.props,o="string"===typeof t?[t]:t,c=this.slideIndex,l=this.slides[c],a=l.elements.map((function(e){return o.includes(e.id)?Object(L["a"])(Object(L["a"])({},e),n):e}));this.slides[c].elements=a},removeElementProps:function(e){var t=e.id,n=e.propName,o="string"===typeof n?[n]:n,c=this.slideIndex,l=this.slides[c],a=l.elements.map((function(e){return e.id===t?Object(ne["omit"])(e,o):e}));this.slides[c].elements=a}}}),re=Object(C["a"])("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"),ie=re(10),ue=Object(y["b"])("main",{state:function(){return{activeElementIdList:[],handleElementId:"",activeGroupElementId:"",canvasPercentage:90,canvasScale:1,canvasDragged:!1,thumbnailsFocus:!1,editorAreaFocus:!1,disableHotkeys:!1,showGridLines:!1,showRuler:!1,creatingElement:null,availableFonts:S,toolbarState:x.SLIDE_DESIGN,clipingImageElementId:"",richTextAttrs:K,selectedTableCells:[],isScaling:!1,selectedSlidesIndex:[],dialogForExport:"",databaseId:ie}},getters:{activeElementList:function(e){var t=ae(),n=t.currentSlide;return n&&n.elements?n.elements.filter((function(t){return e.activeElementIdList.includes(t.id)})):[]},handleElement:function(e){var t=ae(),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},setCanvasDragged:function(e){this.canvasDragged=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},setRulerState:function(e){this.showRuler=e},setCreatingElement:function(e){this.creatingElement=e},setAvailableFonts:function(){this.availableFonts=S.filter((function(e){return Q(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},updateSelectedSlidesIndex:function(e){this.selectedSlidesIndex=e},setDialogForExport:function(e){this.dialogForExport=e}}}),de=n("1da1"),se=(n("ddb0"),n("96cf"),n("d4ec")),fe=n("257e"),be=n("262e"),me=n("2caf"),pe=n("ade3"),ve=n("3835"),Oe=(n("1276"),n("4dec")),he="PPTIST_DISCARDED_DB",je="PPTist",ye=function(){var e=Object(de["a"])(regeneratorRuntime.mark((function e(){var t,n,o,c,l,a,r,i;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return t=(new Date).getTime(),n=localStorage.getItem(he),o=n?JSON.parse(n):[],e.next=5,Oe["a"].getDatabaseNames();case 5:c=e.sent,l=c.filter((function(e){if(-1===e.indexOf(je))return!1;var n=e.split("_"),c=Object(ve["a"])(n,3),l=c[0],a=c[1],r=c[2];return l!==je||!a||!r||(!!o.includes(a)||t-+r>=432e5)})),a=Object(T["a"])(l);try{for(a.s();!(r=a.n()).done;)i=r.value,Oe["a"].delete(i)}catch(u){a.e(u)}finally{a.f()}localStorage.removeItem(he);case 10:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),ge=function(e){Object(be["a"])(n,e);var t=Object(me["a"])(n);function n(){var e;return Object(se["a"])(this,n),e=t.call(this,"".concat(je,"_").concat(ie,"_").concat((new Date).getTime())),Object(pe["a"])(Object(fe["a"])(e),"snapshots",void 0),e.version(1).stores({snapshots:"++id"}),e.snapshots=e.table("snapshots"),e}return n}(Oe["a"]),xe=new ge,Ce=Object(y["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&&(c.push(o[0]),a--),a>=2&&xe.snapshots.update(o[a-2],{index:n.slideIndex}),t.next=15,xe.snapshots.bulkDelete(c);case 15:e.setSnapshotCursor(a-1),e.setSnapshotLength(a);case 17:case"end":return t.stop()}}),t)})))()},unDo:function(){var e=this;return Object(de["a"])(regeneratorRuntime.mark((function t(){var n,o,c,l,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=ae(),o=ue(),c=e.snapshotCursor-1,t.next=7,xe.snapshots.orderBy("id").toArray();case 7:l=t.sent,a=l[c],r=a.index,i=a.slides,u=r>i.length-1?i.length-1:r,n.setSlides(i),n.updateSlideIndex(u),e.setSnapshotCursor(c),o.setActiveElementIdList([]);case 15:case"end":return t.stop()}}),t)})))()},reDo:function(){var e=this;return Object(de["a"])(regeneratorRuntime.mark((function t(){var n,o,c,l,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=ae(),o=ue(),c=e.snapshotCursor+1,t.next=7,xe.snapshots.orderBy("id").toArray();case 7:l=t.sent,a=l[c],r=a.index,i=a.slides,u=r>i.length-1?i.length-1:r,n.setSlides(i),n.updateSlideIndex(u),e.setSnapshotCursor(c),o.setActiveElementIdList([]);case 15:case"end":return t.stop()}}),t)})))()}}}),ke=Object(y["b"])("keyboard",{state:function(){return{ctrlKeyState:!1,shiftKeyState:!1,spaceKeyState:!1}},getters:{ctrlOrShiftKeyActive:function(e){return e.ctrlKeyState||e.shiftKeyState}},actions:{setCtrlKeyState:function(e){this.ctrlKeyState=e},setShiftKeyState:function(e){this.shiftKeyState=e},setSpaceKeyState:function(e){this.spaceKeyState=e}}}),Ee=Object(y["b"])("screen",{state:function(){return{screening:!1}},actions:{setScreening:function(e){this.screening=e}}}),we=(n("466d"),function(e,t){return Object(ne["padStart"])(""+e,t,"0")}),Ne=function(){return!navigator.userAgent.match(/(iPhone|iPod|iPad|Android|Mobile|BlackBerry|Symbian|Windows Phone)/i)},Ve={class:"pptist-editor"},Ie={class:"layout-content"},Se={class:"layout-content-center"};function Be(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("EditorHeader"),r=Object(j["resolveComponent"])("Thumbnails"),i=Object(j["resolveComponent"])("CanvasTool"),u=Object(j["resolveComponent"])("Canvas"),d=Object(j["resolveComponent"])("Remark"),s=Object(j["resolveComponent"])("Toolbar"),f=Object(j["resolveComponent"])("ExportDialog"),b=Object(j["resolveComponent"])("Modal");return Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],null,[Object(j["createElementVNode"])("div",Ve,[Object(j["createVNode"])(a,{class:"layout-header"}),Object(j["createElementVNode"])("div",Ie,[Object(j["createVNode"])(r,{class:"layout-content-left"}),Object(j["createElementVNode"])("div",Se,[Object(j["createVNode"])(i,{class:"center-top"}),Object(j["createVNode"])(u,{class:"center-body",style:Object(j["normalizeStyle"])({height:"calc(100% - ".concat(e.remarkHeight+40,"px)")})},null,8,["style"]),Object(j["createVNode"])(d,{class:"center-bottom",height:e.remarkHeight,"onUpdate:height":t[0]||(t[0]=function(t){return e.remarkHeight=t}),style:Object(j["normalizeStyle"])({height:"".concat(e.remarkHeight,"px")})},null,8,["height","style"])]),Object(j["createVNode"])(s,{class:"layout-content-right"})])]),Object(j["createVNode"])(b,{visible:!!e.dialogForExport,footer:null,centered:"",closable:!1,width:680,destroyOnClose:"",onCancel:t[1]||(t[1]=function(t){return e.closeExportDialog()})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f)]})),_:1},8,["visible"])],64)}(function(e){e["UP"]="up",e["DOWN"]="down",e["TOP"]="top",e["BOTTOM"]="bottom"})(k||(k={})),function(e){e["TOP"]="top",e["BOTTOM"]="bottom",e["LEFT"]="left",e["RIGHT"]="right",e["VERTICAL"]="vertical",e["HORIZONTAL"]="horizontal",e["CENTER"]="center"}(E||(E={})),function(e){e["T"]="top",e["B"]="bottom",e["L"]="left",e["R"]="right"}(w||(w={})),function(e){e["LEFT_TOP"]="left-top",e["TOP"]="top",e["RIGHT_TOP"]="right-top",e["LEFT"]="left",e["RIGHT"]="right",e["LEFT_BOTTOM"]="left-bottom",e["BOTTOM"]="bottom",e["RIGHT_BOTTOM"]="right-bottom"}(N||(N={})),function(e){e["START"]="start",e["END"]="end",e["C"]="ctrl",e["C1"]="ctrl1",e["C2"]="ctrl2"}(V||(V={})),function(e){e["C"]="C",e["X"]="X",e["Z"]="Z",e["Y"]="Y",e["A"]="A",e["G"]="G",e["L"]="L",e["F"]="F",e["D"]="D",e["B"]="B",e["P"]="P",e["MINUS"]="-",e["EQUAL"]="=",e["DIGIT_0"]="0",e["DELETE"]="DELETE",e["UP"]="ARROWUP",e["DOWN"]="ARROWDOWN",e["LEFT"]="ARROWLEFT",e["RIGHT"]="ARROWRIGHT",e["ENTER"]="ENTER",e["SPACE"]=" ",e["TAB"]="TAB",e["BACKSPACE"]="BACKSPACE",e["ESC"]="ESCAPE",e["PAGEUP"]="PAGEUP",e["PAGEDOWN"]="PAGEDOWN",e["F5"]="F5"}(I||(I={}));var Le,Te,_e,Me=[{type:"通用",children:[{label:"剪切",value:"Ctrl + X"},{label:"复制",value:"Ctrl + C"},{label:"粘贴",value:"Ctrl + V"},{label:"快速复制粘贴",value:"Ctrl + D"},{label:"全选",value:"Ctrl + A"},{label:"撤销",value:"Ctrl + Z"},{label:"恢复",value:"Ctrl + Y"},{label:"删除",value:"Delete / Backspace"},{label:"多选",value:"按住 Ctrl 或 Shift"},{label:"打印",value:"Ctrl + P"},{label:"关闭弹窗",value:"ESC"}]},{type:"幻灯片放映",children:[{label:"从头开始放映幻灯片",value:"F5"},{label:"从当前开始放映幻灯片",value:"Shift + F5"},{label:"切换上一页",value:"↑ / ← / PgUp"},{label:"切换下一页",value:"↓ / → / PgDown"},{label:"切换下一页",value:"Enter / Space"},{label:"退出放映",value:"ESC"},{label:"调整画笔笔触大小",value:"鼠标滚轮"}]},{type:"幻灯片编辑",children:[{label:"新建幻灯片",value:"Enter"},{label:"移动画布",value:"Space + 鼠标拖拽"},{label:"缩放画布",value:"Ctrl + 鼠标滚轮"},{label:"放大画布",value:"Ctrl + ="},{label:"缩小画布",value:"Ctrl + -"},{label:"使画布适应当前屏幕",value:"Ctrl + 0"},{label:"上一页(未选中元素)",value:"↑ / ←"},{label:"下一页(未选中元素)",value:"↓ / →"},{label:"上一页",value:"鼠标上滚 / PgUp"},{label:"下一页",value:"鼠标下滚 / PgDown"}]},{type:"元素操作",children:[{label:"移动",value:"↑ / ← / ↓ / →"},{label:"锁定",value:"Ctrl + L"},{label:"组合",value:"Ctrl + G"},{label:"取消组合",value:"Ctrl + Shift + G"},{label:"置顶层",value:"Alt + F"},{label:"置底层",value:"Alt + B"},{label:"锁定宽高比例",value:"按住 Ctrl 或 Shift"},{label:"创建水平 / 垂直线条",value:"按住 Ctrl 或 Shift"},{label:"切换焦点元素",value:"Tab"},{label:"确认图片裁剪",value:"Enter"}]},{type:"表格编辑",children:[{label:"聚焦到下一个单元格",value:"Tab"},{label:"在上方插入一行",value:"Ctrl + ↑"},{label:"在下方插入一行",value:"Ctrl + ↓"},{label:"在左侧插入一列",value:"Ctrl + ←"},{label:"在右侧插入一列",value:"Ctrl + →"}]},{type:"图表数据编辑",children:[{label:"聚焦到下一行",value:"Enter"}]},{type:"文本编辑",children:[{label:"加粗",value:"Ctrl + B"},{label:"斜体",value:"Ctrl + I"},{label:"下划线",value:"Ctrl + U"},{label:"删除线",value:"Ctrl + D"}]}],De=(n("3b18"),n("f64c")),ze=(n("a630"),n("3ca3"),n("b311")),Ae=n.n(ze),Fe=(n("25f0"),n("3452")),Re=n.n(Fe),Pe="pptist",He=function(e){return Re.a.AES.encrypt(e,Pe).toString()},qe=function(e){var t=Re.a.AES.decrypt(e,Pe);return t.toString(Re.a.enc.Utf8)},Ue=function(e){return new Promise((function(t,n){var o=document.createElement("button"),c=new Ae.a(o,{text:function(){return e},action:function(){return"copy"},container:document.body});c.on("success",(function(e){c.destroy(),t(e)})),c.on("error",(function(e){c.destroy(),n(e)})),document.body.appendChild(o),o.click(),document.body.removeChild(o)}))},We=function(){return new Promise((function(e,t){var n;null!==(n=navigator.clipboard)&&void 0!==n&&n.readText?navigator.clipboard.readText().then((function(n){return n||t("剪贴板为空或者不包含文本"),e(n)})):t("浏览器不支持或禁止访问剪贴板,请使用快捷键 Ctrl + V")}))},Ge=function(e){var t;try{t=JSON.parse(qe(e))}catch(n){t=e}return t},Xe=function(e){var t=e.split("\r\n");""===t[t.length-1]&&t.pop();var n=-1,o=[];for(var c in t){if(o[c]=t[c].split("\t"),1===o[c].length)return null;if(-1===n)n=o[c].length;else if(n!==o[c].length)return null}return o},Ye=(n("159b"),function(e){var t=e.left,n=e.top,o=e.width,c=e.height,l=e.rotate,a=void 0===l?0:l,r=Math.sqrt(Math.pow(o,2)+Math.pow(c,2))/2,i=180*Math.atan(c/o)/Math.PI,u=(180-a-i)*Math.PI/180,d=(i-a)*Math.PI/180,s=t+o/2,f=n+c/2,b=[s+r*Math.cos(u),s+r*Math.cos(d),s-r*Math.cos(u),s-r*Math.cos(d)],m=[f-r*Math.sin(u),f-r*Math.sin(d),f+r*Math.sin(u),f+r*Math.sin(d)];return{xRange:[Math.min.apply(Math,b),Math.max.apply(Math,b)],yRange:[Math.min.apply(Math,m),Math.max.apply(Math,m)]}}),Ze=function(e){var t=Ye({left:e.left,top:e.top,width:e.width,height:e.height,rotate:0}),n=t.xRange,o=t.yRange,c=Ye({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),l=c.xRange,a=c.yRange;return{offsetX:l[0]-n[0],offsetY:a[0]-o[0]}},Je=function(e){var t,n,o,c;if("line"===e.type)t=e.left,n=e.left+Math.max(e.start[0],e.end[0]),o=e.top,c=e.top+Math.max(e.start[1],e.end[1]);else if("rotate"in e&&e.rotate){var l=e.left,a=e.top,r=e.width,i=e.height,u=e.rotate,d=Ye({left:l,top:a,width:r,height:i,rotate:u}),s=d.xRange,f=d.yRange;t=s[0],n=s[1],o=f[0],c=f[1]}else t=e.left,n=e.left+e.width,o=e.top,c=e.top+e.height;return{minX:t,maxX:n,minY:o,maxY:c}},Ke=function(e){var t=[],n=[],o=[],c=[];e.forEach((function(e){var l=Je(e),a=l.minX,r=l.maxX,i=l.minY,u=l.maxY;t.push(a),n.push(i),o.push(r),c.push(u)}));var l=Math.min.apply(Math,t),a=Math.max.apply(Math,o),r=Math.min.apply(Math,n),i=Math.max.apply(Math,c);return{minX:l,maxX:a,minY:r,maxY:i}},Qe=function(e){var t=[];return e.forEach((function(e){var n=t.findIndex((function(t){return t.value===e.value}));if(-1===n)t.push(e);else{var o=t[n],c=Math.min(o.range[0],e.range[0]),l=Math.max(o.range[1],e.range[1]),a=[c,l],r={value:e.value,range:a};t[n]=r}})),t},$e=function(e){var t,n={},o={},c=Object(T["a"])(e);try{for(c.s();!(t=c.n()).done;){var l=t.value,a=l.groupId;a&&!n[a]&&(n[a]=Object(C["b"])(10)),o[l.id]=Object(C["b"])(10)}}catch(r){c.e(r)}finally{c.f()}return{groupIdMap:n,elIdMap:o}},et=function(e){var t=te()(e);return[t.setAlpha(.3).toRgbString(),t.setAlpha(.1).toRgbString()]},tt=function(e){var t=e.start.join(","),n=e.end.join(",");if(e.broken){var o=e.broken.join(",");return"M".concat(t," L").concat(o," L").concat(n)}if(e.curve){var c=e.curve.join(",");return"M".concat(t," Q").concat(c," ").concat(n)}if(e.cubic){var l=Object(ve["a"])(e.cubic,2),a=l[0],r=l[1],i=a.join(","),u=r.join(",");return"M".concat(t," C").concat(i," ").concat(u," ").concat(n)}return"M".concat(t," L").concat(n)},nt=n("53ca"),ot=function(e){var t,n=e.replace(/[\n\r]+/g,"
"),o=n.split("
"),c="",l=Object(T["a"])(o);try{for(l.s();!(t=l.n()).done;){var a=t.value;a&&(c+="
".concat(a,"
"))}}catch(r){l.e(r)}finally{l.f()}return c},ct=(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}}))}),lt=function(e){return new Promise((function(t){var n=new FileReader;n.addEventListener("load",(function(){t(n.result)})),n.readAsDataURL(e)}))},at=1e3;(function(e){e["ROUND_RECT"]="roundRect",e["ROUND_RECT_DIAGONAL"]="roundRectDiagonal",e["ROUND_RECT_SINGLE"]="roundRectSingle",e["ROUND_RECT_SAMESIDE"]="roundRectSameSide",e["CUT_RECT_DIAGONAL"]="cutRectDiagonal",e["CUT_RECT_SINGLE"]="cutRectSingle",e["CUT_RECT_SAMESIDE"]="cutRectSameSide",e["MESSAGE"]="message",e["ROUND_MESSAGE"]="roundMessage",e["L"]="L",e["RING_RECT"]="ringRect",e["PLUS"]="plus"})(Le||(Le={})),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"}(Te||(Te={}));var rt=(_e={},Object(pe["a"])(_e,Le.ROUND_RECT,(function(e,t){var n=Math.min(e,t)/8;return"M ".concat(n," 0 L ").concat(e-n," 0 Q ").concat(e," 0 ").concat(e," ").concat(n," L ").concat(e," ").concat(t-n," Q ").concat(e," ").concat(t," ").concat(e-n," ").concat(t," L ").concat(n," ").concat(t," Q 0 ").concat(t," 0 ").concat(t-n," L 0 ").concat(n," Q 0 0 ").concat(n," 0 Z")})),Object(pe["a"])(_e,Le.CUT_RECT_DIAGONAL,(function(e,t){var n=Math.min(e,t)/5;return"M 0 ".concat(t-n," L 0 0 L ").concat(e-n," 0 L ").concat(e," ").concat(n," L ").concat(e," ").concat(t," L ").concat(n," ").concat(t," Z")})),Object(pe["a"])(_e,Le.CUT_RECT_SINGLE,(function(e,t){var n=Math.min(e,t)/5;return"M 0 ".concat(t," L 0 0 L ").concat(e-n," 0 L ").concat(e," ").concat(n," L ").concat(e," ").concat(t," Z")})),Object(pe["a"])(_e,Le.CUT_RECT_SAMESIDE,(function(e,t){var n=Math.min(e,t)/5;return"M 0 ".concat(n," L ").concat(n," 0 L ").concat(e-n," 0 L ").concat(e," ").concat(n," L ").concat(e," ").concat(t," L 0 ").concat(t," Z")})),Object(pe["a"])(_e,Le.ROUND_RECT_DIAGONAL,(function(e,t){var n=Math.min(e,t)/8;return"M 0 0 L ".concat(e-n," 0 Q ").concat(e," 0 ").concat(e," ").concat(n," L ").concat(e," ").concat(t," L ").concat(n," ").concat(t," Q 0 ").concat(t," 0 ").concat(t-n," L 0 0 Z")})),Object(pe["a"])(_e,Le.ROUND_RECT_SINGLE,(function(e,t){var n=Math.min(e,t)/8;return"M 0 0 L ".concat(e-n," 0 Q ").concat(e," 0 ").concat(e," ").concat(n," L ").concat(e," ").concat(t," L 0 ").concat(t," L 0 0 Z")})),Object(pe["a"])(_e,Le.ROUND_RECT_SAMESIDE,(function(e,t){var n=Math.min(e,t)/8;return"M 0 ".concat(n," Q 0 0 ").concat(n," 0 L ").concat(e-n," 0 Q ").concat(e," 0 ").concat(e," ").concat(n," L ").concat(e," ").concat(t," L 0 ").concat(t," Z")})),Object(pe["a"])(_e,Le.MESSAGE,(function(e,t){var n=e/5,o=t/5;return"M 0 0 L ".concat(e," 0 L ").concat(e," ").concat(t-o," L ").concat(e/2," ").concat(t-o," L ").concat(e/2-n," ").concat(t," L ").concat(e/2-n," ").concat(t-o," L 0 ").concat(t-o," Z")})),Object(pe["a"])(_e,Le.ROUND_MESSAGE,(function(e,t){var n=Math.min(e,t)/8,o=e/5,c=t/5;return"M 0 ".concat(n," Q 0 0 ").concat(n," 0 L ").concat(e-n," 0 Q ").concat(e," 0 ").concat(e," ").concat(n," L ").concat(e," ").concat(t-n-c," Q ").concat(e," ").concat(t-c," ").concat(e-n," ").concat(t-c," L ").concat(e/2," ").concat(t-c," L ").concat(e/2-o," ").concat(t," L ").concat(e/2-o," ").concat(t-c," L ").concat(n," ").concat(t-c," Q 0 ").concat(t-c," 0 ").concat(t-n-c," L 0 ").concat(n," Z")})),Object(pe["a"])(_e,Le.L,(function(e,t){var n=Math.min(e,t)/4;return"M 0 0 L 0 ".concat(t," L ").concat(e," ").concat(t," L ").concat(e," ").concat(t-n," L ").concat(n," ").concat(t-n," L ").concat(n," 0 Z")})),Object(pe["a"])(_e,Le.RING_RECT,(function(e,t){var n=Math.min(e,t)/4;return"M 0 0 ".concat(e," 0 ").concat(e," ").concat(t," L 0 ").concat(t," L 0 0 Z M ").concat(n," ").concat(n," L ").concat(n," ").concat(t-n," L ").concat(e-n," ").concat(t-n," L ").concat(e-n," ").concat(n," Z")})),Object(pe["a"])(_e,Le.PLUS,(function(e,t){var n=Math.min(e,t)/4;return"M ".concat(e/2-n/2," 0 L ").concat(e/2-n/2," ").concat(t/2-n/2," L 0 ").concat(t/2-n/2," L 0 ").concat(t/2+n/2," L ").concat(e/2-n/2," ").concat(t/2+n/2," L ").concat(e/2-n/2," ").concat(t," L ").concat(e/2+n/2," ").concat(t," L ").concat(e/2+n/2," ").concat(t/2+n/2," L ").concat(e," ").concat(t/2+n/2," L ").concat(e," ").concat(t/2-n/2," L ").concat(e/2+n/2," ").concat(t/2-n/2," L ").concat(e/2+n/2," 0 Z")})),_e),it=[{type:"矩形",children:[{viewBox:[200,200],path:"M 0 0 L 200 0 L 200 200 L 0 200 Z"},{viewBox:[200,200],path:"M 50 0 L 150 0 Q 200 0 200 50 L 200 150 Q 200 200 150 200 L 50 200 Q 0 200 0 150 L 0 50 Q 0 0 50 0 Z",pathFormula:Le.ROUND_RECT},{viewBox:[200,200],path:"M 0 150 L 0 0 L 150 0 L 200 50 L 200 200 L 50 200 Z",pathFormula:Le.CUT_RECT_DIAGONAL},{viewBox:[200,200],path:"M 0 200 L 0 0 L 150 0 L 200 50 L 200 200 Z",pathFormula:Le.CUT_RECT_SINGLE},{viewBox:[200,200],path:"M 0 50 L 50 0 L 150 0 L 200 50 L 200 200 L 0 200 Z",pathFormula:Le.CUT_RECT_SAMESIDE},{viewBox:[200,200],path:"M 0 0 L 150 0 Q 200 0 200 50 L 200 200 L 50 200 Q 0 200 0 150 L 0 0 Z",pathFormula:Le.ROUND_RECT_DIAGONAL},{viewBox:[200,200],path:"M 0 0 L 150 0 Q 200 0 200 50 L 200 200 L 0 200 L 0 0 Z",pathFormula:Le.ROUND_RECT_SINGLE},{viewBox:[200,200],path:"M 0 50 Q 0 0 50 0 L 150 0 Q 200 0 200 50 L 200 200 L 0 200 Z",pathFormula:Le.ROUND_RECT_SAMESIDE}]},{type:"常用形状",children:[{viewBox:[200,200],path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z"},{viewBox:[200,200],path:"M 0 200 A 50 100 0 1 1 200 200 L 0 200 Z"},{viewBox:[200,200],path:"M 40 20 A 100 100 0 1 0 200 100 L 100 100 L 40 20 Z"},{viewBox:[200,200],path:"M 100 0 A 100 100 102 1 0 200 100 L 100 100 L 100 0 Z"},{viewBox:[200,200],path:"M 160 20 A 100 100 0 1 0 200 100 L 100 100 L 160 20 Z"},{viewBox:[200,200],path:"M 100 0 A 100 100 102 1 0 200 100 L 100 0 Z"},{viewBox:[200,200],path:"M 100 0 A 100 100 102 1 0 200 100 L 200 0 L 100 0 Z"},{viewBox:[200,200],path:"M 0 0 L 200 0 Q 200 200 0 200 L 0 0 Z"},{viewBox:[200,200],path:"M 100 0 L 0 200 L 200 200 L 100 0 Z"},{viewBox:[200,200],path:"M 0 0 L 0 200 L 200 200 Z"},{viewBox:[200,200],path:"M 50 0 L 200 0 L 150 200 L 0 200 L 50 0 Z"},{viewBox:[200,200],path:"M 0 0 L 150 0 L 200 200 L 50 200 L 0 0 Z"},{viewBox:[200,200],path:"M 50 0 L 150 0 L 200 200 L 0 200 L 50 0 Z"},{viewBox:[200,200],path:"M 100 0 L 0 100 L 100 200 L 200 100 L 100 0 Z"},{viewBox:[200,200],path:"M 100 0 L 0 90 L 50 200 L 150 200 L 200 90 L 100 0 Z"},{viewBox:[200,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,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,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,200],path:"M 100 0 L 0 50 L 0 200 L 200 200 L 200 50 L 100 0 Z"},{viewBox:[200,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,200],path:"M 50 0 A 25 50 0 1 0 50 200 L 150 200 A 25 50 0 1 0 150 0 L 50 0 Z"},{viewBox:[200,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,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,200],path:"M 200 0 L 200 200 L 0 200 L 0 100 L 200 0 Z"},{viewBox:[200,200],path:"M 0 0 L 200 100 L 200 200 L 0 200 L 0 0 Z"},{viewBox:[200,200],path:"M 200 0 L 100 0 L 0 100 L 0 200 L 200 0 Z"},{viewBox:[200,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,200],path:"M 0 0 L 0 200 L 200 200 L 200 140 L 60 140 L 60 0 L 0 0 Z",pathFormula:Le.L},{viewBox:[200,200],path:"M0 0 L200 0 L200 200 L0 200 L0 0 Z M50 50 L50 150 L150 150 L150 50 Z",pathFormula:Le.RING_RECT},{viewBox:[200,200],path:"M0 100 A100 100 0 1 1 0 101 Z M150 100 A50 50 0 1 0 150 101 Z"},{viewBox:[200,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",pathFormula:Le.PLUS},{viewBox:[200,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,200],path:"M 0 0 L 200 0 L 200 160 L 100 160 L 60 200 L 60 160 L 0 160 Z",pathFormula:Le.MESSAGE},{viewBox:[200,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",pathFormula:Le.ROUND_MESSAGE},{viewBox:[200,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,200],path:"M 200 0 L 0 0 L 200 200 L 0 200 L 200 0 Z"},{viewBox:[200,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,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"},{viewBox:[200,200],path:"M 100 0 Q 0 50 0 175 Q 100 225 200 175 Q 200 50 100 0 Z"},{viewBox:[200,200],path:"M 0 100 A 50 50 0 1 1 200 100 L 100 200 L 0 100 Z"},{viewBox:[200,200],path:"M 100 0 L 60 60 L 0 100 L 60 140 L 100 200 L 140 140 L 200 100 L 140 60 L 100 0 Z"},{viewBox:[200,200],path:"M 100 0 L 80 40 L 20 20 L 40 80 L 0 100 L 40 120 L 20 180 L 80 160 L 100 200 L 120 160 L 180 180 L 160 120 L 200 100 L 160 80 L 180 20 L 120 40 L 100 0 Z"}]},{type:"箭头",children:[{viewBox:[200,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,200],path:"M 0 0 L 200 100 L 0 200 L 60 100 L 0 0 Z"},{viewBox:[200,200],path:"M 200 0 L 0 100 L 200 200 L 140 100 L 200 0 Z"},{viewBox:[200,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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},{viewBox:[1024,1024],path:"M997.8886764 504.17210418L537.2729208 43.89182982c-13.97838539-13.97838539-36.56745619-13.97838539-50.5458416 0L26.1113236 504.17210418c-13.41924998 13.41924998-21.02349164 31.64706454-21.02349163 50.65766867 0 39.47496036 32.09437288 71.56933323 71.56933324 71.56933323h48.53295408V954.83524937c0 19.79339373 15.99127289 35.78466661 35.78466663 35.78466662H440.43066677V740.12724968h125.24633315v250.49266631h297.34821416c19.79339373 0 35.78466661-15.99127289 35.78466663-35.78466662V626.39910608h48.53295408c19.01060414 0 37.23841869-7.49241457 50.65766869-21.02349163 27.84494371-27.95677079 27.84494371-73.24673948-0.11182708-101.20351027z",special:!0},{viewBox:[1024,1024],path:"M1009.13013121 349.27572283L674.72427717 14.86986879c-8.82158299-8.82158299-20.35749924-13.16451618-31.89341544-13.16451618s-23.07183245 4.34293316-31.89341547 13.16451618L392.29790453 233.6451272c-16.5574327-1.90003326-33.25058207-2.71433322-49.94373146-2.71433324-99.34459624 0-198.68919249 32.70771543-280.25490606 98.12314628-20.90036589 16.69314938-22.52896582 48.04369819-3.66434987 67.04403081l246.59717401 246.59717401-292.33368895 292.06225564c-3.52863319 3.52863319-5.83581644 8.27871636-6.24296642 13.30023282l-4.61436649 50.48659809c-1.22144996 12.75736619 8.95729967 23.6146991 21.57894918 23.6146991 0.6785833 0 1.35716662 0 2.03574992-0.13571666l50.48659809-4.61436649c5.02151649-0.40714999 9.77159962-2.71433322 13.30023282-6.24296643l292.33368896-292.33368896 246.59717402 246.59717401c8.82158299 8.82158299 20.35749924 13.16451618 31.89341544 13.16451618 13.16451618 0 26.19331567-5.70009979 35.15061536-16.82886604 76.40848044-95.40881307 108.16617924-214.83947521 95.27309638-330.33435417l218.63954175-218.63954173c17.50744934-17.37173267 17.50744934-45.8722316 0-63.51539759z",special:!0},{viewBox:[1024,1024],path:"M976.62005979 160.47737905c-0.39452595-0.39452595-80.35178503 78.64217259-239.47725131 237.50462156l-111.6508437-111.65084369 237.89914752-237.89914752c-125.19623464-75.35445635-286.03131335-56.02268482-390.31767264 48.26367449-81.92988882 81.92988882-112.57140424 200.15616502-83.37648398 310.09739626l2.36715569 8.81107954-372.82702222 372.69551356c-8.15353628 8.15353628-8.15353628 21.56741857 0 29.72095487l185.95323084 185.95323084c8.15353628 8.15353628 21.56741857 8.15353628 29.72095485 0l372.56400493-372.56400493 8.81107953 2.3671557c110.07273989 29.32642892 228.29901608-1.18357785 310.36041356-83.24497533 104.41786795-104.2863593 123.74963948-265.12143802 49.97328693-390.05465535z",special:!0}]},{type:"线性",children:[{viewBox:[1024,1024],path:"M953.5488 832.61667556c-24.08448-57.08913778-58.74574221-108.31644445-102.70947556-152.28017777-43.96373333-43.96373333-95.19104-78.49756444-152.28017777-102.70947558-0.50972445-0.25486222-1.01944888-0.38229333-1.52917334-0.63715555C776.41955556 519.64586667 828.02915556 426.23886221 828.02915556 320.85333332c0-174.58062221-141.44853334-316.02915556-316.02915556-316.02915554S195.97084444 146.27271111 195.97084444 320.85333332c0 105.38552889 51.6096 198.79253333 130.99918223 256.26396447-0.50972445 0.25486222-1.01944888 0.38229333-1.52917334 0.63715555-57.08913778 24.08448-108.31644445 58.61831112-152.28017777 102.70947554-43.96373333 43.96373333-78.49756444 95.19104-102.70947556 152.28017779C46.74901333 888.55893332 34.13333334 947.8144 32.85902222 1008.72647111c-0.12743111 5.7344 4.46008889 10.44935111 10.19448889 10.44935111h76.45866667c5.60696888 0 10.06705778-4.46008889 10.19448889-9.93962666 2.54862221-98.37681778 42.05226667-190.50951112 111.88451555-260.34176001 72.25344-72.25344 168.20906666-112.01194667 270.40881778-112.01194667s198.15537778 39.75850667 270.40881778 112.01194667C852.24106667 818.72668444 891.74471111 910.85937779 894.29333333 1009.23619556c0.12743111 5.60696888 4.58752 9.93962667 10.19448889 9.93962666h76.45866667c5.7344 0 10.32192-4.71495112 10.19448889-10.44935111-1.27431111-60.91207112-13.88999112-120.16753779-37.59217778-176.10979555zM512 540.03484444c-58.49088 0-113.54112-22.81016889-154.95623111-64.22527999S292.81848888 379.34421333 292.81848888 320.85333332c0-58.49088 22.81016889-113.54112 64.22528001-154.9562311S453.50912 101.67182221 512 101.67182221s113.54112 22.81016889 154.95623111 64.22528001S731.18151112 262.36245333 731.18151112 320.85333332c0 58.49088-22.81016889 113.54112-64.22528001 154.95623113S570.49088 540.03484444 512 540.03484444z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M985.31555555 111.50222222H38.68444445c-20.13866667 0-36.40888889 16.27022222-36.4088889 36.40888889v728.17777778c0 20.13866667 16.27022222 36.40888889 36.4088889 36.40888889h946.6311111c20.13866667 0 36.40888889-16.27022222 36.4088889-36.40888889V147.91111111c0-20.13866667-16.27022222-36.40888889-36.4088889-36.40888889z m-45.5111111 126.06577778V830.57777778H84.19555555V237.568l-31.40266666-24.46222222 44.71466666-57.45777778 48.6968889 37.888h731.70488888l48.69688889-37.888 44.71466667 57.45777778-31.51644444 24.46222222z M877.90933333 193.42222222L512 477.86666667 146.09066667 193.42222222l-48.69688889-37.888-44.71466667 57.45777778 31.40266667 24.46222222 388.66488889 302.19377778c22.98311111 17.86311111 55.18222222 17.86311111 78.16533333 0L939.80444445 237.568l31.40266666-24.46222222-44.71466666-57.45777778-48.58311112 37.77422222z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M985.31555555 88.74666667H38.68444445c-20.13866667 0-36.40888889 16.27022222-36.4088889 36.40888888v564.33777778c0 20.13866667 16.27022222 36.40888889 36.4088889 36.40888889h432.35555555v127.43111111H275.34222222c-10.01244445 0-18.20444445 8.192-18.20444444 18.20444445v54.61333333c0 5.00622222 4.096 9.10222222 9.10222222 9.10222222h491.52c5.00622222 0 9.10222222-4.096 9.10222222-9.10222222v-54.61333333c0-10.01244445-8.192-18.20444445-18.20444444-18.20444445H552.96V725.90222222h432.35555555c20.13866667 0 36.40888889-16.27022222 36.4088889-36.40888889V125.15555555c0-20.13866667-16.27022222-36.40888889-36.4088889-36.40888888z m-45.5111111 555.23555555H84.19555555V170.66666667h855.6088889v473.31555555z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m0 932.97777778c-233.69955555 0-423.25333333-189.55377778-423.25333333-423.25333333 0-101.26222222 35.61244445-194.33244445 95.00444444-267.15022222l595.39911111 595.39911111C706.33244445 899.64088889 613.26222222 935.25333333 512 935.25333333z m328.24888889-156.10311111L244.84977778 183.75111111C317.66755555 124.35911111 410.73777778 88.74666667 512 88.74666667c233.69955555 0 423.25333333 189.55377778 423.25333333 423.25333333 0 101.26222222-35.61244445 194.33244445-95.00444444 267.15022222z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M901.80266667 257.82044445L656.95288889 12.97066667c-6.82666667-6.82666667-16.04266667-10.69511111-25.71377778-10.69511112H147.91111111c-20.13866667 0-36.40888889 16.27022222-36.40888889 36.4088889v946.6311111c0 20.13866667 16.27022222 36.40888889 36.40888889 36.4088889h728.17777778c20.13866667 0 36.40888889-16.27022222 36.40888889-36.4088889V283.648c0-9.67111111-3.86844445-19.00088889-10.69511111-25.82755555zM828.52977778 300.37333333H614.4V86.24355555L828.52977778 300.37333333z m2.048 639.43111112H193.42222222V84.19555555h343.60888889v245.76c0 26.39644445 21.39022222 47.78666667 47.78666667 47.78666667h245.76v562.06222223z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M981.07392 55.79662222H42.92608c-31.22062222 0-50.71758221 34.02410666-35.04355556 61.16693334L304.28728889 620.82616888V927.42542221c0 22.55530667 18.09521779 40.77795555 40.52309333 40.77795557h334.37923556c22.42787556 0 40.52309333-18.22264888 40.52309333-40.77795557V620.82616888L1016.24490667 116.96355556c15.54659555-27.14282666-3.95036444-61.16693333-35.17098667-61.16693334zM628.47203556 876.45297779H395.52796444V677.66044445h233.07150222v198.79253334z m12.23338666-301.50200891l-12.10595556 21.15356445h-233.19893332l-12.10595556-21.15356445L130.59868445 147.54702221h762.8026311L640.70542222 574.95096888z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M980.62285431 4.54099753H654.39920987c-4.2719763 0-7.76722963 3.49525333-7.76722962 7.76722964v72.4941432c0 4.2719763 3.49525333 7.76722963 7.76722962 7.76722963h207.64393877L604.04167111 350.57107753c-64.72691358-49.83972347-143.69374815-76.7661195-226.67365136-76.7661195-99.54999309 0-193.27456395 38.83614815-263.5679921 109.25903012S4.54099753 547.08198717 4.54099753 646.63198025s38.83614815 193.27456395 109.25903012 263.5679921C184.09345581 980.62285431 277.81802667 1019.45900247 377.36801975 1019.45900247s193.27456395-38.83614815 263.5679921-109.25903012C711.35889383 839.90654419 750.19504197 746.18197333 750.19504197 646.63198025c0-82.9799032-26.92639605-161.68783013-76.63666567-226.41474372L931.4304 162.34521283V369.60079013c0 4.2719763 3.49525333 7.76722963 7.76722963 7.76722962h72.4941432c4.2719763 0 7.76722963-3.49525333 7.76722964-7.76722962V43.37714569c0-21.35988148-17.47626667-38.83614815-38.83614816-38.83614816zM377.36801975 921.07409383c-151.33152395 0-274.44211358-123.11058963-274.44211358-274.44211358s123.11058963-274.44211358 274.44211358-274.44211358 274.44211358 123.11058963 274.44211358 274.44211358-123.11058963 274.44211358-274.44211358 274.44211358z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M591.98717801 512l405.34042913-483.16579151c6.79427767-8.02960089 1.08090782-20.22841761-9.41933951-20.2284176h-123.22349044c-7.25752386 0-14.20621693 3.24272343-18.99309439 8.80167789L511.38233839 415.95362022 177.07299399 17.40746878c-4.63246205-5.55895447-11.58115512-8.80167789-18.99309439-8.80167789H34.85640916c-10.50024731 0-16.21361717 12.19881672-9.41933952 20.2284176L430.77749876 512 25.43706964 995.16579151c-6.79427767 8.02960089-1.08090782 20.22841761 9.41933952 20.2284176h123.22349044c7.25752386 0 14.20621693-3.24272343 18.99309439-8.80167789l334.3093444-398.54615144 334.30934441 398.54615144c4.63246205 5.55895447 11.58115512 8.80167789 18.99309439 8.80167789h123.22349044c10.50024731 0 16.21361717-12.19881672 9.41933951-20.2284176L591.98717801 512z",special:!0,outlined:!0}]}],ut={bar:"bar",horizontalBar:"bar",line:"line",area:"line",scatter:"line",pie:"pie",ring:"pie"},dt=function(){var e=Ce(),t=Object(ne["debounce"])((function(){e.addSnapshot()}),300,{trailing:!0}),n=Object(ne["throttle"])((function(){e.reDo()}),100,{leading:!0,trailing:!1}),o=Object(ne["throttle"])((function(){e.unDo()}),100,{leading:!0,trailing:!1});return{addHistorySnapshot:t,redo:n,undo:o}},st=function(){var e=ue(),t=ae(),n=Object(y["c"])(e),o=n.creatingElement,c=Object(y["c"])(t),l=c.theme,a=c.viewportRatio,r=dt(),i=r.addHistorySnapshot,u=function(n,c){t.addElement(n),e.setActiveElementIdList([n.id]),o.value&&e.setCreatingElement(null),setTimeout((function(){e.setEditorareaFocus(!0)}),0),c&&c(),i()},d=function(e){ct(e).then((function(t){var n=t.width,o=t.height,c=o/n;cat?(n=at,o=n*c):o>at*a.value&&(o=at*a.value,n=o/c),u({type:"image",id:Object(C["b"])(10),src:e,width:n,height:o,left:(at-n)/2,top:(at*a.value-o)/2,fixedRatio:!0,rotate:0})}))},s=function(e){var t={type:"chart",id:Object(C["b"])(10),chartType:ut[e],left:300,top:81.25,width:400,height:400,rotate:0,themeColor:[l.value.themeColor],gridColor:l.value.fontColor,data:{labels:["类别1","类别2","类别3","类别4","类别5"],legends:["系列1"],series:[[12,19,5,2,18]]}},n={};"horizontalBar"===e?n={horizontalBars:!0}:"area"===e?n={showArea:!0}:"scatter"===e?n={showLine:!1}:"ring"===e&&(n={donut:!0}),u(Object(L["a"])(Object(L["a"])({},t),{},{options:n}))},f=function(e,t){for(var n={fontname:l.value.fontName,color:l.value.fontColor},o=[],c=0;c1&&void 0!==arguments[1]?arguments[1]:"",n=e.left,o=e.top,c=e.width,a=e.height,r=Object(C["b"])(10);u({type:"text",id:r,left:n,top:o,width:c,height:a,content:t,rotate:0,defaultFontName:l.value.fontName,defaultColor:l.value.fontColor},(function(){setTimeout((function(){var e=document.querySelector("#editable-element-".concat(r," .ProseMirror"));e&&e.focus()}),0)}))},m=function(e,t){var n=e.left,o=e.top,c=e.width,a=e.height,r={type:"shape",id:Object(C["b"])(10),left:n,top:o,width:c,height:a,viewBox:t.viewBox,path:t.path,fill:l.value.themeColor,fixedRatio:!1,rotate:0};t.special&&(r.special=!0),t.pathFormula&&(r.pathFormula=t.pathFormula,r.viewBox=[c,a],r.path=rt[t.pathFormula](c,a)),u(r)},p=function(e,t){var n=e.left,o=e.top,c=e.start,a=e.end,r={type:"line",id:Object(C["b"])(10),left:n,top:o,start:c,end:a,points:t.points,color:l.value.themeColor,style:t.style,width:2};t.isBroken&&(r.broken=[(c[0]+a[0])/2,(c[1]+a[1])/2]),t.isCurve&&(r.curve=[(c[0]+a[0])/2,(c[1]+a[1])/2]),t.isCubic&&(r.cubic=[[(c[0]+a[0])/2,(c[1]+a[1])/2],[(c[0]+a[0])/2,(c[1]+a[1])/2]]),u(r)},v=function(e){u({type:"latex",id:Object(C["b"])(10),width:e.w,height:e.h,rotate:0,left:(at-e.w)/2,top:(at*a.value-e.h)/2,path:e.path,latex:e.latex,color:l.value.fontColor,strokeWidth:2,viewBox:[e.w,e.h],fixedRatio:!0})},O=function(e){u({type:"video",id:Object(C["b"])(10),width:500,height:300,rotate:0,left:(at-500)/2,top:(at*a.value-300)/2,src:e})},h=function(e){u({type:"audio",id:Object(C["b"])(10),width:50,height:50,rotate:0,left:(at-50)/2,top:(at*a.value-50)/2,loop:!1,autoplay:!1,fixedRatio:!0,color:l.value.themeColor,src:e})};return{createImageElement:d,createChartElement:s,createTableElement:f,createTextElement:b,createShapeElement:m,createLineElement:p,createLatexElement:v,createVideoElement:O,createAudioElement:h}},ft=(n("07ac"),function(){var e=ue(),t=ae(),n=Object(y["c"])(t),o=n.currentSlide,c=dt(),l=c.addHistorySnapshot,a=function(n){var c,a=$e(n),r=a.groupIdMap,i=a.elIdMap,u=o.value.elements.map((function(e){return e.id})),d=Object(T["a"])(n);try{for(d.s();!(c=d.n()).done;){var s=c.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(b){d.e(b)}finally{d.f()}t.addElement(n),e.setActiveElementIdList(Object.values(i)),l()},r=function(e){var n=e.map((function(e){var t,n=$e(e.elements),o=n.groupIdMap,c=n.elIdMap,l=Object(T["a"])(e.elements);try{for(l.s();!(t=l.n()).done;){var a=t.value;a.id=c[a.id],a.groupId&&(a.groupId=o[a.groupId])}}catch(d){l.e(d)}finally{l.f()}if(e.animations){var r,i=Object(T["a"])(e.animations);try{for(i.s();!(r=i.n()).done;){var u=r.value;u.id=Object(C["b"])(10),u.elId=c[u.elId]}}catch(d){i.e(d)}finally{i.f()}}return Object(L["a"])(Object(L["a"])({},e),{},{id:Object(C["b"])(10)})}));t.addSlide(n),l()};return{addElementsFromData:a,addSlidesFromData:r}}),bt=function(){var e=st(),t=e.createTextElement,n=ft(),o=n.addElementsFromData,c=n.addSlidesFromData,l=function(e){t({left:0,top:0,width:600,height:50},e)},a=function(e,t){var n=(null===t||void 0===t?void 0:t.onlySlide)||!1,a=(null===t||void 0===t?void 0:t.onlyElements)||!1,r=Ge(e);if("object"===Object(nt["a"])(r)){var i=r.type,u=r.data;"elements"!==i||n?"slides"!==i||a||c(u):o(u)}else if(!a&&!n){var d=ot(r);l(d)}};return{pasteTextClipboardData:a}},mt=function(){var e=ue(),t=ae(),n=Object(y["c"])(e),o=n.selectedSlidesIndex,c=n.activeElementIdList,l=Object(y["c"])(t),a=l.currentSlide,r=l.slides,i=l.theme,u=l.slideIndex,d=Object(j["computed"])((function(){return[].concat(Object($["a"])(o.value),[u.value])})),s=Object(j["computed"])((function(){return r.value.filter((function(e,t){return d.value.includes(t)}))})),f=Object(j["computed"])((function(){return s.value.map((function(e){return e.id}))})),b=bt(),m=b.pasteTextClipboardData,p=ft(),v=p.addSlidesFromData,O=dt(),h=O.addHistorySnapshot,g=function(){var n={id:Object(C["b"])(10),elements:[],background:{type:"solid",color:i.value.backgroundColor}};t.updateSlideIndex(0),e.setActiveElementIdList([]),t.setSlides([n])},x=function(n){n===I.UP&&u.value>0?(c.value.length&&e.setActiveElementIdList([]),t.updateSlideIndex(u.value-1)):n===I.DOWN&&u.value0&&void 0!==arguments[0]?arguments[0]:f.value;r.value.length===n.length?g():t.deleteSlide(n),e.updateSelectedSlidesIndex([]),h()},B=function(){var e=Object($["a"])(f.value);k(),S(e)},_=function(){var t=Array.from(Array(r.value.length),(function(e,t){return t}));e.setActiveElementIdList([]),e.updateSelectedSlidesIndex(t)};return{resetSlides:g,updateSlideIndex:x,copySlide:k,pasteSlide:E,createSlide:w,createSlideByTemplate:N,copyAndPasteSlide:V,deleteSlide:S,cutSlide:B,selectAllSlide:_}},pt=function(){var e=ue(),t=ae(),n=Object(y["c"])(e),o=n.activeElementIdList,c=Object(y["c"])(t),l=c.currentSlide,a=dt(),r=a.addHistorySnapshot,i=function(){var n,c=JSON.parse(JSON.stringify(l.value.elements)),a=Object(T["a"])(c);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:c}),e.setActiveElementIdList([]),r()},u=function(n){var o=JSON.parse(JSON.stringify(l.value.elements));if(n.groupId){var c,a=[],i=Object(T["a"])(o);try{for(i.s();!(c=i.n()).done;){var u=c.value;u.groupId===n.groupId&&(u.lock=!1,a.push(u.id))}}catch(b){i.e(b)}finally{i.f()}t.updateSlide({elements:o}),e.setActiveElementIdList(a)}else{var d,s=Object(T["a"])(o);try{for(s.s();!(d=s.n()).done;){var f=d.value;if(f.id===n.id){f.lock=!1;break}}}catch(b){s.e(b)}finally{s.f()}t.updateSlide({elements:o}),e.setActiveElementIdList([n.id])}r()};return{lockElement:i,unlockElement:u}},vt=function(){var e=ue(),t=ae(),n=Object(y["c"])(e),o=n.activeElementIdList,c=n.activeGroupElementId,l=Object(y["c"])(t),a=l.currentSlide,r=dt(),i=r.addHistorySnapshot,u=function(){if(o.value.length){var n=[];n=c.value?a.value.elements.filter((function(e){return e.id!==c.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}},Ot=function(){var e=ue(),t=ae(),n=Object(y["c"])(e),o=n.activeElementIdList,c=n.activeElementList,l=n.handleElementId,a=Object(y["c"])(t),r=a.currentSlide,i=dt(),u=i.addHistorySnapshot,d=Object(j["computed"])((function(){if(c.value.length<2)return!1;var e=c.value[0].groupId;if(!e)return!0;var t=c.value.every((function(t){return(t.groupId&&t.groupId)===e}));return!t})),s=function(){var e;if(c.value.length){var n,l=JSON.parse(JSON.stringify(r.value.elements)),a=Object(C["b"])(10),i=[],d=Object(T["a"])(l);try{for(d.s();!(n=d.n()).done;){var s=n.value;o.value.includes(s.id)&&(s.groupId=a,i.push(s))}}catch(p){d.e(p)}finally{d.f()}var f=l.findIndex((function(e){return e.id===i[i.length-1].id})),b=i.map((function(e){return e.id}));l=l.filter((function(e){return!b.includes(e.id)}));var m=f-i.length+1;(e=l).splice.apply(e,[m,0].concat(i)),t.updateSlide({elements:l}),u()}},f=function(){if(c.value.length){var n=c.value.some((function(e){return e.groupId}));if(n){var a,i=JSON.parse(JSON.stringify(r.value.elements)),d=Object(T["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(b){d.e(b)}finally{d.f()}t.updateSlide({elements:i});var f=l.value?[l.value]:[];e.setActiveElementIdList(f),u()}}};return{canCombine:d,combineElements:s,uncombineElements:f}},ht=function(){var e=ue(),t=Object(y["c"])(e),n=t.activeElementIdList,o=t.activeElementList,c=bt(),l=c.pasteTextClipboardData,a=vt(),r=a.deleteElement,i=function(){if(n.value.length){var t=He(JSON.stringify({type:"elements",data:o.value}));Ue(t).then((function(){e.setEditorareaFocus(!0)}))}},u=function(){i(),r()},d=function(){We().then((function(e){l(e)})).catch((function(e){return De["a"].warning(e)}))},s=function(){i(),d()};return{copyElement:i,cutElement:u,pasteElement:d,quickCopyElement:s}},jt=function(){var e=ue(),t=Object(y["c"])(ae()),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}},yt=function(){var e=ae(),t=Object(y["c"])(ue()),n=t.activeElementIdList,o=t.activeGroupElementId,c=Object(y["c"])(e),l=c.currentSlide,a=dt(),r=a.addHistorySnapshot,i=function(t){var c=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-=c;break;case I.RIGHT:n+=c;break;case I.UP:o-=c;break;case I.DOWN:o+=c;break;default:break}return Object(L["a"])(Object(L["a"])({},e),{},{left:n,top:o})};a=o.value?l.value.elements.map((function(e){return o.value===e.id?i(e):e})):l.value.elements.map((function(e){return n.value.includes(e.id)?i(e):e})),e.updateSlide({elements:a}),r()};return{moveElement:i}},gt=function(){var e=ae(),t=Object(y["c"])(e),n=t.currentSlide,o=dt(),c=o.addHistorySnapshot,l=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})),c=l(e,o),a=c.minLevel,r=c.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($["a"])(u)))}else n.splice.apply(n,[a+1,0].concat(Object($["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],b=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,b)}else n.splice(s+1,0,b)}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})),c=l(e,o),a=c.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($["a"])(i)))}else n.splice.apply(n,[a-1,0].concat(Object($["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 b=n.filter((function(e){return e.groupId===s.groupId}));n.splice(d-b.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})),c=l(e,o),a=c.minLevel,r=c.maxLevel;if(r===e.length-1)return null;var i=n.splice(a,o.length);n.push.apply(n,Object($["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})),c=l(e,o),a=c.minLevel;if(0===a)return;var r=n.splice(a,o.length);n.unshift.apply(n,Object($["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 l;o===k.UP?l=a(n.value.elements,t):o===k.DOWN?l=r(n.value.elements,t):o===k.TOP?l=i(n.value.elements,t):o===k.BOTTOM&&(l=u(n.value.elements,t)),l&&(e.updateSlide({elements:l}),c())};return{orderElement:d}},xt=function(){var e=document.documentElement;e.requestFullscreen?e.requestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullScreen?e.webkitRequestFullScreen():e.msRequestFullscreen&&e.msRequestFullscreen()},Ct=function(){document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.msExitFullscreen&&document.msExitFullscreen()},kt=function(){var e=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement||document.webkitCurrentFullScreenElement;return!!e},Et=function(){var e=Ee(),t=ae(),n=function(){xt(),e.setScreening(!0)},o=function(){t.updateSlideIndex(0),n()},c=function(){e.setScreening(!1),kt()&&Ct()};return{enterScreening:n,enterScreeningFromStart:o,exitScreening:c}},wt=function(){var e=ue(),t=Object(y["c"])(e),n=t.canvasPercentage,o=t.canvasScale,c=t.canvasDragged,l=Object(j["computed"])((function(){return Math.round(100*o.value)+"%"})),a=function(t){var o=n.value,c=5,l=200,a=30;"+"===t&&o<=l&&(o+=c),"-"===t&&o>=a&&(o-=c),e.setCanvasPercentage(o)},r=function(t){var c=Math.round(t/o.value*n.value)/100;e.setCanvasPercentage(c)},i=function(){e.setCanvasPercentage(90),c&&e.setCanvasDragged(!1)};return{canvasScalePercentage:l,setCanvasScalePercentage:r,scaleCanvas:a,resetCanvas:i}},Nt=function(){var e=ue(),t=ke(),n=Object(y["c"])(e),o=n.activeElementIdList,c=n.disableHotkeys,l=n.handleElement,a=n.handleElementId,r=n.editorAreaFocus,i=n.thumbnailsFocus,u=Object(y["c"])(ae()),d=u.currentSlide,s=Object(y["c"])(t),f=s.ctrlKeyState,b=s.shiftKeyState,m=s.spaceKeyState,p=mt(),v=p.updateSlideIndex,O=p.copySlide,h=p.createSlide,g=p.deleteSlide,x=p.cutSlide,C=p.copyAndPasteSlide,E=p.selectAllSlide,w=Ot(),N=w.combineElements,V=w.uncombineElements,S=vt(),B=S.deleteElement,L=pt(),T=L.lockElement,_=ht(),M=_.copyElement,D=_.cutElement,z=_.quickCopyElement,A=jt(),F=A.selectAllElement,R=yt(),P=R.moveElement,H=gt(),q=H.orderElement,U=dt(),W=U.redo,G=U.undo,X=Et(),Y=X.enterScreening,Z=X.enterScreeningFromStart,J=wt(),K=J.scaleCanvas,Q=J.resetCanvas,$=function(){o.value.length?M():i.value&&O()},ee=function(){o.value.length?D():i.value&&x()},te=function(){o.value.length?z():i.value&&C()},ne=function(){r.value&&F(),i.value&&E()},oe=function(){r.value&&T()},ce=function(){r.value&&N()},le=function(){r.value&&V()},re=function(){o.value.length?B():i.value&&g()},ie=function(e){o.value.length?P(e):e!==I.UP&&e!==I.DOWN||v(e)},de=function(e){e===I.PAGEUP?v(I.UP):e===I.PAGEDOWN&&v(I.DOWN)},se=function(e){l.value&&q(l.value,e)},fe=function(){i.value&&h()},be=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 c=d.value.elements[0];e.setActiveElementIdList([c.id])}},me=function(n){var o=n.ctrlKey,l=n.shiftKey,a=n.altKey,u=n.metaKey,d=o||u,s=n.key.toUpperCase();if(d&&!f.value&&t.setCtrlKeyState(!0),l&&!b.value&&t.setShiftKeyState(!0),c.value||s!==I.SPACE||t.setSpaceKeyState(!0),d&&s===I.P)return n.preventDefault(),void e.setDialogForExport("pdf");if(l&&s===I.F5)return n.preventDefault(),Y(),void t.setShiftKeyState(!1);if(s===I.F5)return n.preventDefault(),void Z();if(r.value||i.value){if(d&&s===I.C){if(c.value)return;n.preventDefault(),$()}if(d&&s===I.X){if(c.value)return;n.preventDefault(),ee()}if(d&&s===I.D){if(c.value)return;n.preventDefault(),te()}if(d&&s===I.Z){if(c.value)return;n.preventDefault(),G()}if(d&&s===I.Y){if(c.value)return;n.preventDefault(),W()}if(d&&s===I.A){if(c.value)return;n.preventDefault(),ne()}if(d&&s===I.L){if(c.value)return;n.preventDefault(),oe()}if(!l&&d&&s===I.G){if(c.value)return;n.preventDefault(),ce()}if(l&&d&&s===I.G){if(c.value)return;n.preventDefault(),le()}if(a&&s===I.F){if(c.value)return;n.preventDefault(),se(k.TOP)}if(a&&s===I.B){if(c.value)return;n.preventDefault(),se(k.BOTTOM)}if(s===I.DELETE||s===I.BACKSPACE){if(c.value)return;n.preventDefault(),re()}if(s===I.UP){if(c.value)return;n.preventDefault(),ie(I.UP)}if(s===I.DOWN){if(c.value)return;n.preventDefault(),ie(I.DOWN)}if(s===I.LEFT){if(c.value)return;n.preventDefault(),ie(I.LEFT)}if(s===I.RIGHT){if(c.value)return;n.preventDefault(),ie(I.RIGHT)}if(s===I.PAGEUP){if(c.value)return;n.preventDefault(),de(I.PAGEUP)}if(s===I.PAGEDOWN){if(c.value)return;n.preventDefault(),de(I.PAGEDOWN)}if(s===I.ENTER){if(c.value)return;n.preventDefault(),fe()}if(s===I.MINUS){if(c.value)return;n.preventDefault(),K("-")}if(s===I.EQUAL){if(c.value)return;n.preventDefault(),K("+")}if(s===I.DIGIT_0){if(c.value)return;n.preventDefault(),Q()}if(s===I.TAB){if(c.value)return;n.preventDefault(),be()}}},pe=function(){f.value&&t.setCtrlKeyState(!1),b.value&&t.setShiftKeyState(!1),m.value&&t.setSpaceKeyState(!1)};Object(j["onMounted"])((function(){document.addEventListener("keydown",me),document.addEventListener("keyup",pe),window.addEventListener("blur",pe)})),Object(j["onUnmounted"])((function(){document.removeEventListener("keydown",me),document.removeEventListener("keyup",pe),window.removeEventListener("blur",pe)}))},Vt=function(){var e=Object(y["c"])(ue()),t=e.editorAreaFocus,n=e.thumbnailsFocus,o=e.disableHotkeys,c=bt(),l=c.pasteTextClipboardData,a=st(),r=a.createImageElement,i=function(e){lt(e).then((function(e){return r(e)}))},u=function(e){if((t.value||n.value)&&!o.value&&e.clipboardData){var c=e.clipboardData.items,a=c[0];if(a){var r,u=Object(T["a"])(c);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 l(e)}))}}};Object(j["onMounted"])((function(){document.addEventListener("paste",u)})),Object(j["onUnmounted"])((function(){document.removeEventListener("paste",u)}))},It=function(e){return Object(j["pushScopeId"])("data-v-f0cbd508"),e=e(),Object(j["popScopeId"])(),e},St={class:"editor-header"},Bt={class:"left"},Lt={class:"menu-item"},Tt=Object(j["createTextVNode"])(),_t=It((function(){return Object(j["createElementVNode"])("span",{class:"text"},"文件",-1)})),Mt=Object(j["createTextVNode"])("导入 pptist 文件"),Dt=Object(j["createTextVNode"])("导出 pptist 文件"),zt=Object(j["createTextVNode"])("导出 PPTX"),At=Object(j["createTextVNode"])("导出图片"),Ft=Object(j["createTextVNode"])("导出 JSON"),Rt=Object(j["createTextVNode"])("打印 / 导出 PDF"),Pt={class:"menu-item"},Ht=Object(j["createTextVNode"])(),qt=It((function(){return Object(j["createElementVNode"])("span",{class:"text"},"编辑",-1)})),Ut=Object(j["createTextVNode"])("撤销"),Wt=Object(j["createTextVNode"])("重做"),Gt=Object(j["createTextVNode"])("添加页面"),Xt=Object(j["createTextVNode"])("删除页面"),Yt=Object(j["createTextVNode"])("重置幻灯片"),Zt={class:"menu-item"},Jt=Object(j["createTextVNode"])(),Kt=It((function(){return Object(j["createElementVNode"])("span",{class:"text"},"演示",-1)})),Qt=Object(j["createTextVNode"])("从头开始"),$t=Object(j["createTextVNode"])("从当前页开始"),en={class:"menu-item"},tn=Object(j["createTextVNode"])(),nn=It((function(){return Object(j["createElementVNode"])("span",{class:"text"},"帮助",-1)})),on=Object(j["createTextVNode"])("意见反馈"),cn=Object(j["createTextVNode"])("快捷键"),ln={class:"right"},an={href:"https://github.com/pipipi-pikachu/PPTist",target:"_blank"},rn={class:"menu-item"};function un(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconFolderClose"),r=Object(j["resolveComponent"])("MenuItem"),i=Object(j["resolveComponent"])("FileInput"),u=Object(j["resolveComponent"])("Menu"),d=Object(j["resolveComponent"])("Dropdown"),s=Object(j["resolveComponent"])("IconEdit"),f=Object(j["resolveComponent"])("IconPpt"),b=Object(j["resolveComponent"])("IconHelpcenter"),m=Object(j["resolveComponent"])("IconShare"),p=Object(j["resolveComponent"])("Tooltip"),v=Object(j["resolveComponent"])("IconGithub"),O=Object(j["resolveComponent"])("HotkeyDoc"),h=Object(j["resolveComponent"])("Drawer");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",St,[Object(j["createElementVNode"])("div",Bt,[Object(j["createVNode"])(d,{trigger:["click"]},{overlay:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,null,{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{accept:".pptist",onChange:t[0]||(t[0]=function(t){return e.importSpecificFile(t)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,null,{default:Object(j["withCtx"])((function(){return[Mt]})),_:1})]})),_:1}),Object(j["createVNode"])(r,{onClick:t[1]||(t[1]=function(t){return e.setDialogForExport("pptist")})},{default:Object(j["withCtx"])((function(){return[Dt]})),_:1}),Object(j["createVNode"])(r,{onClick:t[2]||(t[2]=function(t){return e.setDialogForExport("pptx")})},{default:Object(j["withCtx"])((function(){return[zt]})),_:1}),Object(j["createVNode"])(r,{onClick:t[3]||(t[3]=function(t){return e.setDialogForExport("image")})},{default:Object(j["withCtx"])((function(){return[At]})),_:1}),Object(j["createVNode"])(r,{onClick:t[4]||(t[4]=function(t){return e.setDialogForExport("json")})},{default:Object(j["withCtx"])((function(){return[Ft]})),_:1}),Object(j["createVNode"])(r,{onClick:t[5]||(t[5]=function(t){return e.setDialogForExport("pdf")})},{default:Object(j["withCtx"])((function(){return[Rt]})),_:1})]})),_:1})]})),default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",Lt,[Object(j["createVNode"])(a),Tt,_t])]})),_:1}),Object(j["createVNode"])(d,{trigger:["click"]},{overlay:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,null,{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{onClick:t[6]||(t[6]=function(t){return e.undo()})},{default:Object(j["withCtx"])((function(){return[Ut]})),_:1}),Object(j["createVNode"])(r,{onClick:t[7]||(t[7]=function(t){return e.redo()})},{default:Object(j["withCtx"])((function(){return[Wt]})),_:1}),Object(j["createVNode"])(r,{onClick:t[8]||(t[8]=function(t){return e.createSlide()})},{default:Object(j["withCtx"])((function(){return[Gt]})),_:1}),Object(j["createVNode"])(r,{onClick:t[9]||(t[9]=function(t){return e.deleteSlide()})},{default:Object(j["withCtx"])((function(){return[Xt]})),_:1}),Object(j["createVNode"])(r,{onClick:t[10]||(t[10]=function(t){return e.toggleGridLines()})},{default:Object(j["withCtx"])((function(){return[Object(j["createTextVNode"])(Object(j["toDisplayString"])(e.showGridLines?"关闭网格线":"打开网格线"),1)]})),_:1}),Object(j["createVNode"])(r,{onClick:t[11]||(t[11]=function(t){return e.toggleRuler()})},{default:Object(j["withCtx"])((function(){return[Object(j["createTextVNode"])(Object(j["toDisplayString"])(e.showRuler?"关闭标尺":"打开标尺"),1)]})),_:1}),Object(j["createVNode"])(r,{onClick:t[12]||(t[12]=function(t){return e.resetSlides()})},{default:Object(j["withCtx"])((function(){return[Yt]})),_:1})]})),_:1})]})),default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",Pt,[Object(j["createVNode"])(s),Ht,qt])]})),_:1}),Object(j["createVNode"])(d,{trigger:["click"]},{overlay:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,null,{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{onClick:t[13]||(t[13]=function(t){return e.enterScreeningFromStart()})},{default:Object(j["withCtx"])((function(){return[Qt]})),_:1}),Object(j["createVNode"])(r,{onClick:t[14]||(t[14]=function(t){return e.enterScreening()})},{default:Object(j["withCtx"])((function(){return[$t]})),_:1})]})),_:1})]})),default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",Zt,[Object(j["createVNode"])(f),Jt,Kt])]})),_:1}),Object(j["createVNode"])(d,{trigger:["click"]},{overlay:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,null,{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{onClick:t[15]||(t[15]=function(t){return e.goIssues()})},{default:Object(j["withCtx"])((function(){return[on]})),_:1}),Object(j["createVNode"])(r,{onClick:t[16]||(t[16]=function(t){return e.hotkeyDrawerVisible=!0})},{default:Object(j["withCtx"])((function(){return[cn]})),_:1})]})),_:1})]})),default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",en,[Object(j["createVNode"])(b),tn,nn])]})),_:1})]),Object(j["createElementVNode"])("div",ln,[Object(j["createVNode"])(p,{mouseLeaveDelay:0,title:"导出"},{default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",{class:"menu-item",onClick:t[17]||(t[17]=function(t){return e.setDialogForExport("pptx")})},[Object(j["createVNode"])(m,{size:"18",fill:"#666"})])]})),_:1}),Object(j["createVNode"])(p,{mouseLeaveDelay:0,title:"幻灯片放映"},{default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",{class:"menu-item",onClick:t[18]||(t[18]=function(t){return e.enterScreening()})},[Object(j["createVNode"])(f,{size:"19",fill:"#666",style:{"margin-top":"1px"}})])]})),_:1}),Object(j["createElementVNode"])("a",an,[Object(j["createElementVNode"])("div",rn,[Object(j["createVNode"])(v,{size:"18",fill:"#666"})])])]),Object(j["createVNode"])(h,{width:"320",placement:"right",closable:!1,visible:e.hotkeyDrawerVisible,onClose:t[19]||(t[19]=function(t){return e.hotkeyDrawerVisible=!1})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(O)]})),_:1},8,["visible"])])}n("9911"),n("cc71");var dn=n("21a6"),sn=n("8f74"),fn=n("e774"),bn=(n("00b4"),["style","script","template"]),mn=["html","head","body","p","dt","dd","li","option","thead","th","tbody","tr","td","tfoot","colgroup"],pn={li:["ul","ol","menu"],dt:["dl"],dd:["dl"],tbody:["table"],thead:["table"],tfoot:["table"],tr:["table"],td:["table"]},vn=["!doctype","area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],On=function(e,t){var n=t-e.position;hn(e,n)},hn=function(e,t){e.position=e.position+t},jn=function(e,t){var n=!1;while(!n){var o=e.indexOf("<",t);if(-1===o)return o;var c=e.charAt(o+1);if("/"===c||"!"===c||/[A-Za-z0-9]/.test(c))return o;t=o+1}return-1},yn=function(e){var t=e.str,n=jn(t,e.position);if(n!==e.position){-1===n&&(n=t.length);var o=t.slice(e.position,n);On(e,n),e.tokens.push({type:"text",content:o})}},gn=function(e){var t=e.str;hn(e,4);var n=t.indexOf("--\x3e",e.position),o=n+3;-1===n&&(n=o=t.length);var c=t.slice(e.position,n);On(e,o),e.tokens.push({type:"comment",content:c})},xn=function(e){var t=e.str,n=t.length,o=e.position;while(o"===c);if(l)break;o++}var a=o+1;while(a"===r);if(!i)break;a++}On(e,a);var u=t.slice(o,a);return e.tokens.push({type:"tag",content:u}),u},Cn=function(e){var t=e.str,n=e.tokens,o=e.position,c=null,l=o,a=[],r=t.length;while(o"===i;if(d){o!==l&&a.push(t.slice(l,o));break}var s=/\s/.test(i);if(s)o!==l&&a.push(t.slice(l,o)),l=o+1,o++;else{var f="'"===i||'"'===i;f?(c=i,o++):o++}}}On(e,o);for(var b="attribute",m=0;m1){var h=p+O;n.push({type:b,content:h}),m+=1;continue}var j=a[m+2];if(m+=1,j){var y=p+"="+j;n.push({type:b,content:y}),m+=1;continue}}}if(Object(ne["endsWith"])(p,"=")){var g=a[m+1];if(g&&-1===g.indexOf("=")){var x=p+g;n.push({type:b,content:x}),m+=1;continue}var C=p.slice(0,-1);n.push({type:b,content:C})}else n.push({type:b,content:p})}},kn=function(e,t){var n=t.str,o=t.tokens,c=e.toLowerCase(),l=n.length,a=t.position;while(a=0){var c=t[o].tagName;if(c===e)break;if(n.includes(c))return!0;o--}}return!1},Sn=function(e,t){e.splice(t)},Bn=function e(t){var n=t.stack,o=t.tokens,c=t.cursor,l=n[n.length-1].children,a=o.length;while(c-1)if(n[d].tagName===u){s=!0;break}while(c0){if(u===n[m].tagName){Sn(n,m);var p=m-1;l=n[p].children;break}m-=1}}var v=[],O=void 0;while(c127&&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},Un=function(e){var t,n,o,c,l,a,r,i="",u=0;e=qn(e);while(u>2,l=(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+Pn.charAt(c)+Pn.charAt(l)+Pn.charAt(a)+Pn.charAt(r);return i},Wn=function(e){var t=new XMLSerializer,n=t.serializeToString(e);return Hn+Un(n)},Gn=function(){var e=ae(),t=Object(y["c"])(e),n=t.slides,o=t.theme,c=t.viewportRatio,l=ft(),a=l.addSlidesFromData,r=Object(j["ref"])(!1),i=function(e,t,n){var o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];r.value=!0;var c="png"===t?fn["c"]:fn["b"],l=e.querySelectorAll("foreignObject [xmlns]");l.forEach((function(e){return e.removeAttribute("xmlns")})),setTimeout((function(){var l={quality:n,width:1600};o&&(l.fontEmbedCSS=""),c(e,l).then((function(e){r.value=!1,Object(dn["saveAs"])(e,"pptist_slides.".concat(t))})).catch((function(){r.value=!1,De["a"].error("导出图片失败")}))}),200)},u=function(e){var t=new Blob([He(JSON.stringify(e))],{type:""});Object(dn["saveAs"])(t,"pptist_slides.pptist")},d=function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=t[0],c=new FileReader;c.addEventListener("load",(function(){try{var t=JSON.parse(qe(c.result));n?e.setSlides(t):a(t)}catch(o){De["a"].error("无法正确读取 / 解析该文件")}})),c.readAsText(o)},s=function(){var e=new Blob([JSON.stringify(n.value)],{type:""});Object(dn["saveAs"])(e,"pptist_slides.json")},f=function(e){var t=te()(e),n=t.getAlpha(),o=0===n?"#ffffff":t.setAlpha(1).toHexString();return{alpha:n,color:o}},b=function(e){var t=Dn(e),n=!1,o=0,c=[],l=function e(t){var l,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=Object(T["a"])(t);try{for(r.s();!(l=r.n()).done;){var i=l.value,u="tagName"in i&&["div","li","p"].includes(i.tagName);if(u&&c.length){var d=c[c.length-1];d.options||(d.options={}),d.options.breakLine=!0}var s=Object(L["a"])({},a),b="attributes"in i?i.attributes.find((function(e){return"style"===e.key})):null;if(b&&b.value){var m,p=b.value.split(";"),v=Object(T["a"])(p);try{for(v.s();!(m=v.n()).done;){var O=m.value,h=O.split(": "),j=Object(ve["a"])(h,2),y=j[0],g=j[1],x=[Object(ne["trim"])(y),Object(ne["trim"])(g)],C=x[0],k=x[1];C&&k&&(s[C]=k)}}catch(I){v.e(I)}finally{v.f()}}if("tagName"in i){if("em"===i.tagName&&(s["font-style"]="italic"),"strong"===i.tagName&&(s["font-weight"]="bold"),"sup"===i.tagName&&(s["vertical-align"]="super"),"sub"===i.tagName&&(s["vertical-align"]="sub"),"a"===i.tagName){var E=i.attributes.find((function(e){return"href"===e.key}));s["href"]=(null===E||void 0===E?void 0:E.value)||""}if("ul"===i.tagName&&(s["list-type"]="ul"),"ol"===i.tagName&&(s["list-type"]="ol"),"li"===i.tagName&&(n=!0),"p"===i.tagName&&"attributes"in i){var w=i.attributes.find((function(e){return"data-indent"===e.key}));w&&w.value&&(o=+w.value)}}if("tagName"in i&&"br"===i.tagName)c.push({text:"",options:{breakLine:!0}});else if("content"in i){var N=i.content.replace(/ /g," ").replace(/>/g,">").replace(/</g,"<").replace(/&/g,"&").replace(/\n/g,""),V={};s["font-size"]&&(V.fontSize=.75*parseInt(s["font-size"])),s["color"]&&(V.color=f(s["color"]).color),s["background-color"]&&(V.highlight=f(s["background-color"]).color),s["text-decoration-line"]&&(-1!==s["text-decoration-line"].indexOf("underline")&&(V.underline={color:V.color||"#000000",style:"sng"}),-1!==s["text-decoration-line"].indexOf("line-through")&&(V.strike="sngStrike")),s["text-decoration"]&&(-1!==s["text-decoration"].indexOf("underline")&&(V.underline={color:V.color||"#000000",style:"sng"}),-1!==s["text-decoration"].indexOf("line-through")&&(V.strike="sngStrike")),s["vertical-align"]&&("super"===s["vertical-align"]&&(V.superscript=!0),"sub"===s["vertical-align"]&&(V.subscript=!0)),s["text-align"]&&(V.align=s["text-align"]),s["font-weight"]&&(V.bold="bold"===s["font-weight"]),s["font-style"]&&(V.italic="italic"===s["font-style"]),s["font-family"]&&(V.fontFace=s["font-family"]),s["href"]&&(V.hyperlink={url:s["href"]}),n&&"ol"===s["list-type"]&&(V.bullet={type:"number",indent:15},V.paraSpaceBefore=.1,n=!1),n&&"ul"===s["list-type"]&&(V.bullet={indent:15},V.paraSpaceBefore=.1,n=!1),o&&(V.indentLevel=o,o=0),c.push({text:N,options:V})}else"children"in i&&e(i.children,s)}}catch(I){r.e(I)}finally{r.f()}};return l(t),c},m=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}}))},p=function(e){var t=f(e.color),n=e.h,o=e.v,c=4,l=45;return 0===n&&0===o?(c=4,l=45):0===n?o>0?(c=o,l=90):(c=-o,l=270):0===o?n>0?(c=n,l=1):(c=-n,l=180):n>0&&o>0?(c=Math.max(n,o),l=45):n>0&&o<0?(c=Math.max(n,-o),l=315):n<0&&o>0?(c=Math.max(-n,o),l=135):n<0&&o<0&&(c=Math.max(-n,-o),l=225),{type:"outer",color:t.color.replace("#",""),opacity:t.alpha,blur:.75*e.blur,offset:c,angle:l}},v=function(e){var t=f((null===e||void 0===e?void 0:e.color)||"#000000");return{color:t.color,transparency:100*(1-t.alpha),width:.75*(e.width||1),dashType:"solid"===e.style?"solid":"dash"}},O=function(e){var t=e.type,o=e.target;if("web"===t)return{url:o};if("slide"===t){var c=n.value.findIndex((function(e){return e.id===o}));if(-1!==c)return{slide:c+1}}return null},h=function(e,t){r.value=!0;var n=new sn["a"];if(.625===c.value?n.layout="LAYOUT_16x10":.75===c.value?n.layout="LAYOUT_4x3":n.layout="LAYOUT_16x9",t){var l=f(o.value.backgroundColor),a=l.color,i=l.alpha;n.defineSlideMaster({title:"PPTIST_MASTER",background:{color:a,transparency:100*(1-i)}})}var u,d=Object(T["a"])(e);try{for(d.s();!(u=d.n()).done;){var s=u.value,h=n.addSlide();if(s.background){var j=s.background;if("image"===j.type&&j.image)h.background={data:j.image};else if("solid"===j.type&&j.color){var y=f(j.color);h.background={color:y.color,transparency:100*(1-y.alpha)}}else if("gradient"===j.type&&j.gradientColor){var g=Object(ve["a"])(j.gradientColor,2),x=g[0],C=g[1],k=te.a.mix(x,C).toHexString(),E=f(k);h.background={color:E.color,transparency:100*(1-E.alpha)}}}if(s.remark&&h.addNotes(s.remark),s.elements){var w,N=Object(T["a"])(s.elements);try{var V=function(){var e=w.value;if("text"===e.type){var t,o=b(e.content),c={x:e.left/100,y:e.top/100,w:e.width/100,h:e.height/100,fontSize:15,fontFace:"微软雅黑",color:"#000000",valign:"top",margin:7.5,paraSpaceBefore:3.75,lineSpacingMultiple:1.2,autoFit:!0};if(e.rotate&&(c.rotate=e.rotate),e.wordSpace&&(c.charSpacing=.75*e.wordSpace),e.lineHeight&&(c.lineSpacingMultiple=e.lineHeight/1.25),e.fill){var l=f(e.fill),a=void 0===e.opacity?1:e.opacity;c.fill={color:l.color,transparency:100*(1-l.alpha*a)}}e.defaultColor&&(c.color=f(e.defaultColor).color),e.defaultFontName&&(c.fontFace=e.defaultFontName),e.shadow&&(c.shadow=p(e.shadow)),null!==(t=e.outline)&&void 0!==t&&t.width&&(c.line=v(e.outline)),void 0!==e.opacity&&(c.transparency=100*(1-e.opacity)),void 0!==e.paragraphSpace&&(c.paraSpaceBefore=.75*e.paragraphSpace),h.addText(o,c)}else if("image"===e.type){var r,i,u={path:e.src,x:e.left/100,y:e.top/100,w:e.width/100,h:e.height/100};if(e.flipH&&(u.flipH=e.flipH),e.flipV&&(u.flipV=e.flipV),e.rotate&&(u.rotate=e.rotate),e.link){var d=O(e.link);d&&(u.hyperlink=d)}if(null!==(r=e.filters)&&void 0!==r&&r.opacity&&(u.transparency=100-parseInt(null===(i=e.filters)||void 0===i?void 0:i.opacity)),e.clip){"ellipse"===e.clip.shape&&(u.rounding=!0);var s=Object(ve["a"])(e.clip.range,2),j=s[0],y=s[1],g=Object(ve["a"])(j,2),x=g[0],C=g[1],k=Object(ve["a"])(y,2),E=k[0],N=k[1],V=e.width/((E-x)/100),I=e.height/((N-C)/100);u.w=V/100,u.h=I/100,u.sizing={type:"crop",x:x/100*V/100,y:C/100*I/100,w:(E-x)/100*V/100,h:(N-C)/100*I/100}}h.addImage(u)}else if("shape"===e.type){if(e.special){var S=document.querySelector(".thumbnail-list .base-element-".concat(e.id," svg")),B=Wn(S),L={data:B,x:e.left/100,y:e.top/100,w:e.width/100,h:e.height/100};if(e.rotate&&(L.rotate=e.rotate),e.link){var T=O(e.link);T&&(L.hyperlink=T)}h.addImage(L)}else{var _,M={x:e.width/e.viewBox[0],y:e.height/e.viewBox[1]},D=m(Rn(e.path),M),z=f(e.fill),A=void 0===e.opacity?1:e.opacity,F={x:e.left/100,y:e.top/100,w:e.width/100,h:e.height/100,fill:{color:z.color,transparency:100*(1-z.alpha*A)},points:D};if(e.flipH&&(F.flipH=e.flipH),e.flipV&&(F.flipV=e.flipV),e.shadow&&(F.shadow=p(e.shadow)),null!==(_=e.outline)&&void 0!==_&&_.width&&(F.line=v(e.outline)),e.link){var R=O(e.link);R&&(F.hyperlink=R)}h.addShape("custGeom",F)}if(e.text){var P=b(e.text.content),H={x:e.left/100,y:e.top/100,w:e.width/100,h:e.height/100,fontSize:15,fontFace:"微软雅黑",color:"#000000",paraSpaceBefore:3.75,valign:e.text.align};e.rotate&&(H.rotate=e.rotate),e.text.defaultColor&&(H.color=f(e.text.defaultColor).color),e.text.defaultFontName&&(H.fontFace=e.text.defaultFontName),h.addText(P,H)}}else if("line"===e.type){var q=tt(e),U=m(Rn(q)),W=Je(e),G=W.minX,X=W.maxX,Y=W.minY,Z=W.maxY,J=f(e.color),K={x:e.left/100,y:e.top/100,w:(X-G)/100,h:(Z-Y)/100,line:{color:J.color,transparency:100*(1-J.alpha),width:.75*e.width,dashType:"solid"===e.style?"solid":"dash",beginArrowType:e.points[0]?"arrow":"none",endArrowType:e.points[1]?"arrow":"none"},points:U};e.shadow&&(K.shadow=p(e.shadow)),h.addShape("custGeom",K)}else if("chart"===e.type){for(var Q=[],ee=0;ee1||he.rowspan>1)for(var je=me;je1?(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:0,elementList:e.elementList,scaleMultiElement:e.scaleMultiElement},null,8,["elementList","scaleMultiElement"])):Object(j["createCommentVNode"])("",!0),(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.elementList,(function(t){return Object(j["openBlock"])(),Object(j["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(j["createVNode"])(d)]),Object(j["createElementVNode"])("div",{class:"viewport",ref:"viewportRef",style:Object(j["normalizeStyle"])({transform:"scale(".concat(e.canvasScale,")")})},[e.mouseSelectionVisible?(Object(j["openBlock"])(),Object(j["createBlock"])(s,{key:0,top:e.mouseSelection.top,left:e.mouseSelection.left,width:e.mouseSelection.width,height:e.mouseSelection.height,quadrant:e.mouseSelectionQuadrant},null,8,["top","left","width","height","quadrant"])):Object(j["createCommentVNode"])("",!0),(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.elementList,(function(t,n){return Object(j["openBlock"])(),Object(j["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),e.spaceKeyState?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",ro)):Object(j["createCommentVNode"])("",!0),e.showRuler?(Object(j["openBlock"])(),Object(j["createBlock"])(b,{key:2,viewportStyles:e.viewportStyles},null,8,["viewportStyles"])):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])(p,{visible:e.linkDialogVisible,"onUpdate:visible":t[2]||(t[2]=function(t){return e.linkDialogVisible=t}),footer:null,centered:"",width:540,destroyOnClose:""},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(m,{onClose:t[1]||(t[1]=function(t){return e.linkDialogVisible=!1})})]})),_:1},8,["visible"])],32)),[[v,e.contextmenus],[O,e.removeEditorAreaFocus]])}n("a4d3"),n("e01a");var uo=Symbol(),so=Symbol(),fo=function(){var e=window.getSelection();e&&e.removeAllRanges()},bo=function(e){var t=Object(j["ref"])(0),n=Object(j["ref"])(0),o=ue(),c=Object(y["c"])(o),l=c.canvasPercentage,a=c.canvasDragged,r=Object(y["c"])(ae()),i=r.viewportRatio,u=function(){if(e.value){var c=e.value.clientWidth,a=e.value.clientHeight;if(a/c>i.value){var r=c*(l.value/100);o.setCanvasScale(r/at),t.value=(c-r)/2,n.value=(a-r*i.value)/2}else{var u=a*(l.value/100);o.setCanvasScale(u/(at*i.value)),t.value=(c-u/i.value)/2,n.value=(a-u)/2}}};Object(j["watch"])([l,i],u),Object(j["watch"])(a,(function(){a.value||u()}));var d=Object(j["computed"])((function(){return{width:at,height:at*i.value,left:t.value,top:n.value}})),s=new ResizeObserver(u);Object(j["onMounted"])((function(){e.value&&s.observe(e.value)})),Object(j["onUnmounted"])((function(){e.value&&s.unobserve(e.value)}));var f=function(e){var c=!0,l=e.pageX,a=e.pageY,r=t.value,i=n.value;document.onmousemove=function(e){if(c){var o=e.pageX,u=e.pageY;t.value=r+(o-l),n.value=i+(u-a)}},document.onmouseup=function(){c=!1,document.onmousemove=null,document.onmouseup=null,o.setCanvasDragged(!0)}};return{viewportStyles:d,dragViewport:f}},mo=function(e,t){var n=ue(),o=Object(y["c"])(n),c=o.canvasScale,l=Object(j["ref"])(!1),a=Object(j["ref"])(1),r=Object(j["ref"])({top:0,left:0,width:0,height:0}),i=function(o){if(t.value){var i=!0,u=t.value.getBoundingClientRect(),d=5,s=o.pageX,f=o.pageY,b=(s-u.x)/c.value,m=(f-u.y)/c.value;r.value={top:m,left:b,width:0,height:0},l.value=!1,a.value=4,document.onmousemove=function(e){if(i){var t=e.pageX,n=e.pageY,o=(t-s)/c.value,u=(n-f)/c.value,b=Math.abs(o),m=Math.abs(u);if(!(b0&&u>0?p=4:o<0&&u<0?p=1:o>0&&u<0?p=2:o<0&&u>0&&(p=3),r.value=Object(L["a"])(Object(L["a"])({},r.value),{},{width:b,height:m}),l.value=!0,a.value=p}}},document.onmouseup=function(){document.onmousemove=null,document.onmouseup=null,i=!1;for(var t=[],o=0;ou&&pd&&Ou-s&&pd-f&&Ou&&pd-f&&Ou-s&&pd&&O0&&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(L["a"])(Object(L["a"])({},e),{},{rotate:r}):e}))}},document.onmouseup=function(){l=!1,document.onmousemove=null,document.onmouseup=null,i!==r&&(n.updateSlide({elements:e.value}),a())}}};return{rotateElement:r}},ho={text:"文本",image:"图片",shape:"形状",line:"线条",chart:"图表",table:"表格",video:"视频",audio:"音频"},jo={text:20,image:20,shape:15,chart:200,table:20,video:250,audio:20},yo=function(e,t){var n=e.left,o=e.top,c=e.width,l=e.height,a=Math.sqrt(Math.pow(c,2)+Math.pow(l,2))/2,r=180*Math.atan(l/c)/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=c/2,b=l/2,m=n+f,p=o+b,v={left:m+a*Math.cos(i),top:p-a*Math.sin(i)},O={left:m+b*Math.cos(d),top:p-b*Math.sin(d)},h={left:m+a*Math.cos(u),top:p-a*Math.sin(u)},j={left:m+f*Math.cos(s),top:p+f*Math.sin(s)},y={left:m-a*Math.cos(i),top:p+a*Math.sin(i)},g={left:m-b*Math.sin(s),top:p+b*Math.cos(s)},x={left:m-a*Math.cos(u),top:p+a*Math.sin(u)},C={left:m-f*Math.cos(s),top:p-f*Math.sin(s)};return{leftTopPoint:v,topPoint:O,rightTopPoint:h,rightPoint:j,rightBottomPoint:y,bottomPoint:g,leftBottomPoint:x,leftPoint:C}},go=function(e,t){var n,o=(n={},Object(pe["a"])(n,N.RIGHT_BOTTOM,t.leftTopPoint),Object(pe["a"])(n,N.LEFT_BOTTOM,t.rightTopPoint),Object(pe["a"])(n,N.LEFT_TOP,t.rightBottomPoint),Object(pe["a"])(n,N.RIGHT_TOP,t.leftBottomPoint),Object(pe["a"])(n,N.TOP,t.bottomPoint),Object(pe["a"])(n,N.BOTTOM,t.topPoint),Object(pe["a"])(n,N.LEFT,t.rightPoint),Object(pe["a"])(n,N.RIGHT,t.leftPoint),n);return o[e]},xo=function(e,t,n){var o=ue(),c=ae(),l=Object(y["c"])(o),a=l.activeElementIdList,r=l.activeGroupElementId,i=Object(y["c"])(c),u=i.viewportRatio,d=Object(y["c"])(ke()),s=d.ctrlOrShiftKeyActive,f=dt(),b=f.addHistorySnapshot,m=function(l,i,d){var f=!(l instanceof MouseEvent);if(!f||l.changedTouches&&l.changedTouches[0]){var m=!0;o.setScalingState(!0);var p,v=i.left,O=i.top,h=i.width,j=i.height,y="rotate"in i&&i.rotate?i.rotate:0,g=Math.PI*y/180,x=s.value||"fixedRatio"in i&&i.fixedRatio,C=h/j,k=f?l.changedTouches[0].pageX:l.pageX,E=f?l.changedTouches[0].pageY:l.pageY,w=jo[i.type]||20,V=function(e){return e2&&void 0!==arguments[2])||arguments[2];if(r.value||n.setEditorareaFocus(!0),c.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=c.value.filter((function(e){return!f.includes(e)}))}else s=c.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(l.value!==i.id){var b=o instanceof MouseEvent?o.pageX:o.changedTouches[0].pageX,m=o instanceof MouseEvent?o.pageY:o.changedTouches[0].pageY;o.target.onmouseup=function(e){var t=e.pageX,o=e.pageY;b===t&&m===o&&(n.setActiveGroupElementId(i.id),e.target.onmouseup=null)}}}else{var p=[];if(p=u.value?[].concat(Object($["a"])(c.value),[i.id]):[i.id],i.groupId){var v=[];e.value.forEach((function(e){e.groupId===i.groupId&&v.push(e.id)})),p=[].concat(Object($["a"])(p),v)}n.setActiveElementIdList(Object(ne["uniq"])(p)),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}},ko=function(e,t,n){var o=ae(),c=Object(y["c"])(ue()),l=c.activeElementIdList,a=c.activeGroupElementId,r=Object(y["c"])(o),i=r.viewportRatio,u=dt(),d=u.addHistorySnapshot,s=function(c,r){var u=!(c instanceof MouseEvent);if((!u||c.changedTouches&&c.changedTouches[0])&&l.value.includes(r.id)){var s,f=!0,b=at,m=at*i.value,p=5,v=JSON.parse(JSON.stringify(e.value)),O=v.filter((function(e){return l.value.includes(e.id)})),h=r.left,j=r.top,y=r.width,g="height"in r&&r.height?r.height:0,x="rotate"in r&&r.rotate?r.rotate:0,C=u?c.changedTouches[0].pageX:c.pageX,k=u?c.changedTouches[0].pageY:c.pageY,E=null,w=r.id===a.value,N=[],V=[],I=Object(T["a"])(e.value);try{for(I.s();!(s=I.n()).done;){var S=s.value;if("line"!==S.type&&((!w||S.id!==r.id)&&(w||!l.value.includes(S.id)))){var B=void 0,_=void 0,M=void 0,D=void 0;if("rotate"in S&&S.rotate){var z=Ye({left:S.left,top:S.top,width:S.width,height:S.height,rotate:S.rotate}),A=z.xRange,F=z.yRange;B=A[0],_=F[0],M=A[1]-A[0],D=F[1]-F[0]}else B=S.left,_=S.top,M=S.width,D=S.height;var R=B+M,P=_+D,H=_+D/2,q=B+M/2,U={value:_,range:[B,R]},W={value:P,range:[B,R]},G={value:H,range:[B,R]},X={value:B,range:[_,P]},Y={value:R,range:[_,P]},Z={value:q,range:[_,P]};N.push(U,W,G),V.push(X,Y,Z)}}}catch(le){I.e(le)}finally{I.f()}var J={value:0,range:[0,b]},K={value:m,range:[0,b]},Q={value:m/2,range:[0,b]},ee={value:0,range:[0,m]},te={value:b,range:[0,m]},ne={value:b/2,range:[0,m]};N.push(J,K,Q),V.push(ee,te,ne),N=Qe(N),V=Qe(V);var oe=function(o){var c=o instanceof MouseEvent?o.pageX:o.changedTouches[0].pageX,a=o instanceof MouseEvent?o.pageY:o.changedTouches[0].pageY;if(!1!==E&&(E=Math.abs(C-c)v&&(G[0]=U-H,X[0]=0),p>O&&(G[1]=W-q,X[1]=0),e.value=e.value.map((function(e){if(e.id===c.id){var t=Object(L["a"])(Object(L["a"])({},e),{},{left:H,top:q,start:G,end:X});return a===V.START||a===V.END?(c.broken&&(t.broken=[(G[0]+X[0])/2,(G[1]+X[1])/2]),c.curve&&(t.curve=[(G[0]+X[0])/2,(G[1]+X[1])/2]),c.cubic&&(t.cubic=[[(G[0]+X[0])/2,(G[1]+X[1])/2],[(G[0]+X[0])/2,(G[1]+X[1])/2]])):a===V.C?(c.broken&&(t.broken=[j-H,y-q]),c.curve&&(t.curve=[j-H,y-q])):c.cubic&&(t.cubic=[[E-H,w-q],[N-H,I-q]]),t}return e}))}},document.onmouseup=function(n){r=!1,document.onmousemove=null,document.onmouseup=null;var o=n.pageX,c=n.pageY;u===o&&d===c||(t.updateSlide({elements:e.value}),l())}};return{dragLineElement:a}},wo=function(e){var t=ue(),n=Object(y["c"])(t),o=n.canvasScale,c=n.creatingElement,l=function(t){var n=t.start,c=t.end;if(e.value){var l=e.value.getBoundingClientRect(),a=Object(ve["a"])(n,2),r=a[0],i=a[1],u=Object(ve["a"])(c,2),d=u[0],s=u[1],f=Math.min(r,d),b=Math.max(r,d),m=Math.min(i,s),p=Math.max(i,s),v=(f-l.x)/o.value,O=(m-l.y)/o.value,h=(b-f)/o.value,j=(p-m)/o.value;return{left:v,top:O,width:h,height:j}}},a=function(t){var n=t.start,c=t.end;if(e.value){var l=e.value.getBoundingClientRect(),a=Object(ve["a"])(n,2),r=a[0],i=a[1],u=Object(ve["a"])(c,2),d=u[0],s=u[1],f=Math.min(r,d),b=Math.max(r,d),m=Math.min(i,s),p=Math.max(i,s),v=(f-l.x)/o.value,O=(m-l.y)/o.value,h=(b-f)/o.value,j=(p-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=st(),i=r.createTextElement,u=r.createShapeElement,d=r.createLineElement,s=function(e){if(c.value){var n=c.value.type;if("text"===n){var o=l(e);o&&i(o)}else if("shape"===n){var r=l(e);r&&u(r,c.value.data)}else if("line"===n){var s=a(e);s&&d(s,c.value.data)}t.setCreatingElement(null)}};return{insertElementFromCreateSelection:s}},No=["id"];function Vo(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"editable-element",ref:"elementRef",id:"editable-element-".concat(e.elementInfo.id),style:Object(j["normalizeStyle"])({zIndex:e.elementIndex})},[(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentElementComponent),{elementInfo:e.elementInfo,selectElement:e.selectElement,contextmenus:e.contextmenus},null,8,["elementInfo","selectElement","contextmenus"]))],12,No)}n("a9e3");var Io=function(){var e=ae(),t=Object(y["c"])(ue()),n=t.activeElementIdList,o=t.activeElementList,c=Object(y["c"])(e),l=c.currentSlide,a=c.viewportRatio,r=dt(),i=r.addHistorySnapshot,u=function(t){var c,r=at,u=at*a.value,d=Ke(o.value),s=d.minX,f=d.maxX,b=d.minY,m=d.maxY,p=JSON.parse(JSON.stringify(l.value.elements)),v=Object(T["a"])(p);try{for(v.s();!(c=v.n()).done;){var O=c.value;if(n.value.includes(O.id)){if(t===E.CENTER){var h=b+(m-b)/2-u/2,j=s+(f-s)/2-r/2;O.top=O.top-h,O.left=O.left-j}if(t===E.TOP){var y=b-0;O.top=O.top-y}else if(t===E.VERTICAL){var g=b+(m-b)/2-u/2;O.top=O.top-g}else if(t===E.BOTTOM){var x=m-u;O.top=O.top-x}else if(t===E.LEFT){var C=s-0;O.left=O.left-C}else if(t===E.HORIZONTAL){var k=s+(f-s)/2-r/2;O.left=O.left-k}else if(t===E.RIGHT){var w=f-r;O.left=O.left-w}}}}catch(N){v.e(N)}finally{v.f()}e.updateSlide({elements:p}),i()};return{alignElementToCanvas:u}},So=["src"];function Bo(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ImageClipHandler"),r=Object(j["resolveComponent"])("ImageOutline"),i=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["editable-element-image",{lock:e.elementInfo.lock}]),style:Object(j["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(j["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(j["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[e.isCliping?(Object(j["openBlock"])(),Object(j["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(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{key:1,class:"element-content",style:Object(j["normalizeStyle"])({filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):"",transform:e.flipStyle}),onMousedown:t[2]||(t[2]=function(t){return e.handleSelectElement(t)}),onTouchstart:t[3]||(t[3]=function(t){return e.handleSelectElement(t)})},[Object(j["createVNode"])(r,{elementInfo:e.elementInfo},null,8,["elementInfo"]),Object(j["createElementVNode"])("div",{class:"image-content",style:Object(j["normalizeStyle"])({clipPath:e.clipShape.style})},[Object(j["createElementVNode"])("img",{src:e.elementInfo.src,draggable:!1,style:Object(j["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(j["withModifiers"])((function(){}),["prevent"])),alt:""},null,44,So)],4)],36)),[[i,e.contextmenus]])],4)],6)}var Lo,To,_o=function(e){var t=Object(j["computed"])((function(){if(e.value){var t=e.value,n=t.h,o=t.v,c=t.blur,l=t.color;return"".concat(n,"px ").concat(o,"px ").concat(c,"px ").concat(l)}return""}));return{shadowStyle:t}},Mo=function(e,t){var n=Object(j["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"})(Lo||(Lo={})),function(e){e["RECT"]="rect",e["ROUNDRECT"]="roundRect",e["ELLIPSE"]="ellipse",e["TRIANGLE"]="triangle",e["PENTAGON"]="pentagon",e["RHOMBUS"]="rhombus",e["STAR"]="star"}(To||(To={}));var Do={rect:{name:"矩形",type:Lo.RECT,radius:"0",style:""},rect2:{name:"矩形2",type:Lo.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:Lo.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:Lo.RECT,radius:"10%",style:"inset(0 0 0 0 round 10% 10% 10% 10%)"},ellipse:{name:"圆形",type:Lo.ELLIPSE,style:"ellipse(50% 50% at 50% 50%)"},triangle:{name:"三角形",type:Lo.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:Lo.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:Lo.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:Lo.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:Lo.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:Lo.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:Lo.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:Lo.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:Lo.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:Lo.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")}}},zo=function(e){var t=Object(j["computed"])((function(){if(!e.value)return Do.rect;var t=e.value.shape||Lo.RECT;return Do[t]})),n=Object(j["computed"])((function(){if(!e.value)return{top:"0",left:"0",width:"100%",height:"100%"};var t=Object(ve["a"])(e.value.range,2),n=t[0],o=t[1],c=(o[0]-n[0])/100,l=(o[1]-n[1])/100,a=n[0]/c,r=n[1]/l;return{left:-a+"%",top:-r+"%",width:100/c+"%",height:100/l+"%"}}));return{clipShape:t,imgPosition:n}},Ao=(n("b64b"),function(e){var t=Object(j["computed"])((function(){if(!e.value)return"";for(var t="",n=0,o=Object.keys(e.value);n45&&e.rotate<135&&(d=(u-l)/c.value/e.width*100,s=-(i-o)/c.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-l)/c.value/e.width*100,s=(i-o)/c.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),b.value=Object(L["a"])(Object(L["a"])({},b.value),{},{left:f,top:m})}},document.onmouseup=function(){n=!1,document.onmousemove=null,document.onmouseup=null,g(),setTimeout((function(){i.value=!1}),0)}},C=function(t,n){i.value=!0;var o=!0,l=50/e.width*100,r=50/e.height*100,u=t.pageX,d=t.pageY,f=s.value,m=Object(L["a"])({},b.value),p=b.value.width/b.value.height;document.onmousemove=function(t){if(o){var i,s,v,O,h=t.pageX,j=t.pageY,y=(h-u)/c.value/e.width*100,g=(j-d)/c.value/e.height*100;e.rotate>45&&e.rotate<135&&(y=(j-d)/c.value/e.width*100,g=-(h-u)/c.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)/c.value/e.width*100,g=(h-u)/c.value/e.height*100),a.value&&(n!==N.RIGHT_BOTTOM&&n!==N.LEFT_TOP||(g=y/p),n!==N.LEFT_BOTTOM&&n!==N.RIGHT_TOP||(g=-y/p)),n===N.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})),E=[N.LEFT_TOP,N.RIGHT_TOP,N.LEFT_BOTTOM,N.RIGHT_BOTTOM],w=[N.TOP,N.BOTTOM,N.LEFT,N.RIGHT];return{clipWrapperPositionStyle:r,bottomImgPositionStyle:f,topImgWrapperPositionStyle:m,topImgPositionStyle:p,rotateClassName:k,edgePoints:w,cornerPoint:E,handleClip:O,moveClipRange:x,scaleClipRange:C}}});n("42c7");const yc=eo()(jc,[["render",hc],["__scopeId","data-v-2ec16714"]]);var gc=yc,xc=Object(j["defineComponent"])({name:"editable-element-image",components:{ImageOutline:ic,ImageClipHandler:gc},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=ue(),n=ae(),o=Object(y["c"])(t),c=o.clipingImageElementId,l=Object(j["computed"])((function(){return c.value===e.elementInfo.id})),a=dt(),r=a.addHistorySnapshot,i=Object(j["computed"])((function(){return e.elementInfo.shadow})),u=_o(i),d=u.shadowStyle,s=Object(j["computed"])((function(){return e.elementInfo.flipH})),f=Object(j["computed"])((function(){return e.elementInfo.flipV})),b=Mo(s,f),m=b.flipStyle,p=Object(j["computed"])((function(){return e.elementInfo.clip})),v=zo(p),O=v.clipShape,h=v.imgPosition,g=Object(j["computed"])((function(){return e.elementInfo.filters})),x=Ao(g),C=x.filter,k=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))},E=function(o){if(t.setClipingImageElementId(""),o){var c=o.range,l=o.position,a=e.elementInfo.clip||{shape:"rect",range:[[0,0],[100,100]]},i=e.elementInfo.left+l.left,u=e.elementInfo.top+l.top,d=e.elementInfo.width+l.width,s=e.elementInfo.height+l.height,f=0,b=0;if(e.elementInfo.rotate){var m=i+d/2-(e.elementInfo.left+e.elementInfo.width/2),p=-(u+s/2-(e.elementInfo.top+e.elementInfo.height/2)),v=-e.elementInfo.rotate*Math.PI/180,O=m*Math.cos(v)-p*Math.sin(v),h=m*Math.sin(v)+p*Math.cos(v);f=O-m,b=-(h-p)}var j={clip:Object(L["a"])(Object(L["a"])({},a),{},{range:c}),left:i+f,top:u+b,width:d,height:s};n.updateElement({id:e.elementInfo.id,props:j}),r()}};return{isCliping:l,handleClip:E,clipingImageElementId:c,shadowStyle:d,handleSelectElement:k,clipShape:O,imgPosition:h,filter:C,flipStyle:m}}});n("9a51");const Cc=eo()(xc,[["render",Bo],["__scopeId","data-v-fed8b698"]]);var kc=Cc,Ec=function(e){return Object(j["pushScopeId"])("data-v-8e51e5ca"),e=e(),Object(j["popScopeId"])(),e},wc=Ec((function(){return Object(j["createElementVNode"])("div",{class:"drag-handler top"},null,-1)})),Nc=Ec((function(){return Object(j["createElementVNode"])("div",{class:"drag-handler bottom"},null,-1)}));function Vc(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ElementOutline"),r=Object(j["resolveComponent"])("ProsemirrorEditor"),i=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["editable-element-text",{lock:e.elementInfo.lock}]),ref:"elementRef",style:Object(j["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"})},[Object(j["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(j["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"element-content",style:Object(j["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[3]||(t[3]=function(t){return e.handleSelectElement(t)}),onTouchstart:t[4]||(t[4]=function(t){return e.handleSelectElement(t)})},[Object(j["createVNode"])(a,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(j["createVNode"])(r,{class:"text",elementId:e.elementInfo.id,defaultColor:e.elementInfo.defaultColor,defaultFontName:e.elementInfo.defaultFontName,editable:!e.elementInfo.lock,value:e.elementInfo.content,style:Object(j["normalizeStyle"])({"--textIndent":"".concat(e.elementInfo.textIndent||0,"px"),"--paragraphSpace":"".concat(void 0===e.elementInfo.paragraphSpace?5:e.elementInfo.paragraphSpace,"px")}),onUpdate:t[0]||(t[0]=function(t){return e.updateContent(t)}),onMousedown:t[1]||(t[1]=function(t){return e.handleSelectElement(t,!1)}),onTouchstart:t[2]||(t[2]=function(t){return e.handleSelectElement(t)})},null,8,["elementId","defaultColor","defaultFontName","editable","value","style"]),wc,Nc],36)),[[i,e.contextmenus]])],4)],6)}var Ic=["width","height"],Sc=["d","stroke","stroke-width","stroke-dasharray"];function Bc(e,t,n,o,c,l){return e.outline?(Object(j["openBlock"])(),Object(j["createElementBlock"])("svg",{key:0,class:"element-outline",overflow:"visible",width:e.width,height:e.height},[Object(j["createElementVNode"])("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",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,Sc)],8,Ic)):Object(j["createCommentVNode"])("",!0)}var Lc=Object(j["defineComponent"])({name:"element-outline",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},outline:{type:Object}},setup:function(e){var t=Uo(Object(j["toRef"])(e,"outline")),n=t.outlineWidth,o=t.outlineStyle,c=t.outlineColor;return{outlineWidth:n,outlineStyle:o,outlineColor:c}}});n("0543");const Tc=eo()(Lc,[["render",Bc],["__scopeId","data-v-34c0a0a8"]]);var _c=Tc,Mc={class:"prosemirror-editor",ref:"editorViewRef"};function Dc(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Mc,null,512)}var zc,Ac=n("5313"),Fc=n("576a"),Rc=n("304a"),Pc=n("7f06"),Hc=n("8726"),qc=n("23f1"),Uc=n("1a16"),Wc=n("665f"),Gc=n("f95e"),Xc=function(e){var t={},n=function(e,n){return t[e]=n};return n("Alt-ArrowUp",_["c"]),n("Alt-ArrowDown",_["b"]),n("Ctrl-z",Hc["c"]),n("Ctrl-y",Hc["b"]),n("Backspace",Gc["f"]),n("Escape",_["e"]),n("Ctrl-b",Object(_["f"])(e.marks.strong)),n("Ctrl-i",Object(_["f"])(e.marks.em)),n("Ctrl-u",Object(_["f"])(e.marks.underline)),n("Ctrl-d",Object(_["f"])(e.marks.strikethrough)),n("Enter",Object(Wc["f"])(e.nodes.list_item)),n("Mod-[",Object(Wc["b"])(e.nodes.list_item)),n("Mod-]",Object(Wc["e"])(e.nodes.list_item)),t},Yc=function(e){return Object(Gc["g"])(/^\s*>\s$/,e)},Zc=function(e){return Object(Gc["g"])(/^(\d+)\.\s$/,e,(function(e){return{order:+e[1]}}),(function(e,t){return t.childCount+t.attrs.order===+e[1]}))},Jc=function(e){return Object(Gc["g"])(/^\s*([-+*])\s$/,e)},Kc=function(e){return Object(Gc["e"])(/^```$/,e)},Qc=function(e){var t=[].concat(Object($["a"])(Gc["d"]),[Gc["a"],Gc["b"]]);return t.push(Yc(e.nodes.blockquote)),t.push(Zc(e.nodes.ordered_list)),t.push(Jc(e.nodes.bullet_list)),t.push(Kc(e.nodes.code_block)),Object(Gc["c"])({rules:t})},$c=function(e){return[Qc(e),Object(Pc["b"])(Xc(e)),Object(Pc["b"])(_["a"]),Object(qc["a"])(),Object(Uc["a"])(),Object(Hc["a"])()]},el=n("2210"),tl=Object(L["a"])(Object(L["a"])({},Wc["d"]),{},{content:"list_item+",group:"block"}),nl=Object(L["a"])(Object(L["a"])({},Wc["a"]),{},{content:"list_item+",group:"block"}),ol=Object(L["a"])(Object(L["a"])({},Wc["c"]),{},{content:"paragraph block*",group:"block"}),cl={attrs:{align:{default:""},indent:{default:0}},content:"inline*",group:"block",parseDOM:[{tag:"p",getAttrs:function(e){var t=e.style.textAlign,n=e.getAttribute("align")||t||"";n=/(left|right|center|justify)/.test(n)?n:"";var o=+(e.getAttribute("data-indent")||0);return{align:n,indent:o}}}],toDOM:function(e){var t=e.attrs,n=t.align,o=t.indent,c="";n&&"left"!==n&&(c+="text-align: ".concat(n,";"));var l={style:c};return o&&(l["data-indent"]=o),["p",l,0]}},ll=Object(L["a"])(Object(L["a"])({},el["b"]),{},{ordered_list:tl,bullet_list:nl,list_item:ol,paragraph:cl}),al={excludes:"subscript",parseDOM:[{tag:"sub"},{style:"vertical-align",getAttrs:function(e){return"sub"===e&&null}}],toDOM:function(){return["sub",0]}},rl={excludes:"superscript",parseDOM:[{tag:"sup"},{style:"vertical-align",getAttrs:function(e){return"super"===e&&null}}],toDOM:function(){return["sup",0]}},il={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]}},ul={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]}},dl={attrs:{color:{}},inline:!0,group:"inline",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]}},sl={attrs:{backcolor:{}},inline:!0,group:"inline",parseDOM:[{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]}},fl={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]}},bl={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]}},ml={attrs:{href:{},title:{default:null},target:{default:"_blank"}},inclusive:!1,parseDOM:[{tag:"a[href]",getAttrs:function(e){var t=e.getAttribute("href"),n=e.getAttribute("title");return{href:t,title:n}}}],toDOM:function(e){return["a",e.attrs,0]}},pl=Object(L["a"])(Object(L["a"])({},el["a"]),{},{subscript:al,superscript:rl,strikethrough:il,underline:ul,forecolor:dl,backcolor:sl,fontsize:fl,fontname:bl,link:ml}),vl=ll,Ol=pl,hl=new Rc["i"]({nodes:vl,marks:Ol}),jl=function(e){var t="
".concat(e,"
"),n=new window.DOMParser,o=n.parseFromString(t,"text/html").body.firstElementChild;return Rc["a"].fromSchema(hl).parse(o)},yl=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return new Fc["c"](e,Object(L["a"])({state:Ac["b"].create({doc:jl(t),plugins:$c(hl)})},n))},gl=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"})(zc||(zc={}));var xl=Object(gl["a"])(),Cl=xl,kl=(n("6062"),function(e,t,n){var o=e,c=o.selection,l=o.doc;if(!c||!l)return e;var a=c.from,r=c.to,i=t.nodes,u=i.blockquote,d=i.list_item,s=i.paragraph,f=[];n=n||"";var b=new Set([u,d,s]);return l.nodesBetween(a,r,(function(e,t){var o=e.type,c=e.attrs.align||"";return c!==n&&b.has(o)&&f.push({node:e,pos:t,nodeType:o}),!0})),f.length?(f.forEach((function(t){var o=t.node,c=t.pos,l=t.nodeType,a=o.attrs;a=n?Object(L["a"])(Object(L["a"])({},a),{},{align:n}):Object(L["a"])(Object(L["a"])({},a),{},{align:null}),e=e.setNodeMarkup(c,l,a,o.marks)})),e):e}),El=function(e,t){var n=e.state,o=n.schema,c=n.selection,l=kl(n.tr.setSelection(c),o,t);e.dispatch(l)},wl=function(e,t){return e.type===t.nodes.bullet_list||e.type===t.nodes.ordered_list},Nl=function(e,t){return function(n,o){var c=n.schema,l=n.selection,a=l.$from,r=l.$to,i=a.blockRange(r);if(!i)return!1;var u=R((function(e){return wl(e,c)}))(l);if(i.depth>=1&&u&&i.depth-u.depth<=1){if(u.node.type===e)return Object(Wc["b"])(t)(n,o);if(wl(u.node,c)&&e.validContent(u.node.content)){var d=n.tr;return d.setNodeMarkup(u.pos,e),o&&o(d),!1}}return Object(Wc["g"])(e)(n,o)}};function Vl(e,t,n){if(!e.doc)return e;var o=e.doc.nodeAt(t);if(!o)return e;var c=0,l=7,a=(o.attrs.indent||0)+n;if(al&&(a=l),a===o.attrs.indent)return e;var r=Object(L["a"])(Object(L["a"])({},o.attrs),{},{indent:a});return e.setNodeMarkup(t,o.type,r,o.marks)}var Il=function(e,t,n){var o=e,c=o.selection,l=o.doc;if(!c||!l)return e;if(!(c instanceof Ac["g"]||c instanceof Ac["a"]))return e;var a=c.from,r=c.to;return l.nodesBetween(a,r,(function(o,c){var l=o.type;return"paragraph"===l.name||"blockquote"===l.name?(e=Vl(e,c,n),!1):!wl(o,t)})),e},Sl=function(e,t){var n=e.state,o=n.schema,c=n.selection,l=Il(n.tr.setSelection(c),o,t);return!!l.docChanged&&(e.dispatch(l),!0)},Bl=Object(j["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,c=ue(),l=Object(y["c"])(c),a=l.handleElementId,r=Object(j["ref"])(),i=Object(ne["debounce"])((function(){o("update",n.dom.innerHTML)}),300,{trailing:!0}),u=function(){c.setDisableHotkeysState(!0),o("focus")},d=function(){c.setDisableHotkeysState(!1),o("blur")},s=Object(ne["debounce"])((function(){var t=Z(n,{color:e.defaultColor,fontname:e.defaultFontName});c.setRichtextAttrs(t)}),30,{trailing:!0}),f=function(){i(),s()},b=Object(j["computed"])((function(){return e.value}));Object(j["watch"])(b,(function(){if(n&&!n.hasFocus()){var e=n.state,t=e.doc,o=e.tr;n.dispatch(o.replaceRangeWith(0,t.content.size,jl(b.value)))}})),Object(j["watch"])((function(){return e.editable}),(function(){n.setProps({editable:function(){return e.editable}})})),Object(j["onMounted"])((function(){n=yl(r.value,b.value,{handleDOMEvents:{focus:u,blur:d,keydown:f,click:s},editable:function(){return e.editable}}),e.autoFocus&&n.focus()})),Object(j["onUnmounted"])((function(){n&&n.destroy()}));var m=function(t){var o=t.target,c=t.action;if((o||a.value===e.elementId)&&(!o||o===e.elementId)){var l,r="command"in c?[c]:c,u=Object(T["a"])(r);try{for(u.s();!(l=u.n()).done;){var d=l.value;if("fontname"===d.command&&d.value){var f=n.state.schema.marks.fontname.create({fontname:d.value});M(n),D(n,f)}else if("fontsize"===d.command&&d.value){var b=n.state.schema.marks.fontsize.create({fontsize:d.value});M(n),D(n,b)}else if("fontsize-add"===d.command){var m=d.value?+d.value:2;M(n);var p=J(n)+m+"px",v=n.state.schema.marks.fontsize.create({fontsize:p});D(n,v)}else if("fontsize-reduce"===d.command){var O=d.value?+d.value:2;M(n);var h=J(n)-O;h<12&&(h=12);var j=n.state.schema.marks.fontsize.create({fontsize:h+"px"});D(n,j)}else if("color"===d.command&&d.value){var y=n.state.schema.marks.forecolor.create({color:d.value});M(n),D(n,y)}else if("backcolor"===d.command&&d.value){var g=n.state.schema.marks.backcolor.create({backcolor:d.value});M(n),D(n,g)}else if("bold"===d.command)M(n),Object(_["f"])(n.state.schema.marks.strong)(n.state,n.dispatch);else if("em"===d.command)M(n),Object(_["f"])(n.state.schema.marks.em)(n.state,n.dispatch);else if("underline"===d.command)M(n),Object(_["f"])(n.state.schema.marks.underline)(n.state,n.dispatch);else if("strikethrough"===d.command)M(n),Object(_["f"])(n.state.schema.marks.strikethrough)(n.state,n.dispatch);else if("subscript"===d.command)Object(_["f"])(n.state.schema.marks.subscript)(n.state,n.dispatch);else if("superscript"===d.command)Object(_["f"])(n.state.schema.marks.superscript)(n.state,n.dispatch);else if("blockquote"===d.command)Object(_["g"])(n.state.schema.nodes.blockquote)(n.state,n.dispatch);else if("code"===d.command)Object(_["f"])(n.state.schema.marks.code)(n.state,n.dispatch);else if("align"===d.command&&d.value)El(n,d.value);else if("indent"===d.command&&d.value)Sl(n,+d.value);else if("bulletList"===d.command){var x=n.state.schema.nodes,C=x.bullet_list,k=x.list_item;Nl(C,k)(n.state,n.dispatch)}else if("orderedList"===d.command){var E=n.state.schema.nodes,w=E.ordered_list,N=E.list_item;Nl(w,N)(n.state,n.dispatch)}else if("clear"===d.command){M(n);var V=n.state.selection,I=V.$from,S=V.$to;n.dispatch(n.state.tr.removeMark(I.pos,S.pos))}else if("link"===d.command){var B=n.state.schema.marks.link,L=n.state.selection,A=L.from,F=L.to,R=z(n.state.doc,A,F,B);if(R)if(d.value){var P=n.state.schema.marks.link.create({href:d.value,title:d.value});D(n,P,{from:R.from.pos,to:R.to.pos+1})}else n.dispatch(n.state.tr.removeMark(R.from.pos,R.to.pos+1,B));else if(G(n.state,B))if(d.value){var H=n.state.schema.marks.link.create({href:d.value,title:d.value});D(n,H)}else Object(_["f"])(B)(n.state,n.dispatch);else d.value&&(M(n),Object(_["f"])(B,{href:d.value,title:d.value})(n.state,n.dispatch))}else"insert"===d.command&&d.value&&n.dispatch(n.state.tr.insertText(d.value))}}catch(q){u.e(q)}finally{u.f()}n.focus(),i(),s()}};return Cl.on(zc.RICH_TEXT_COMMAND,m),Object(j["onUnmounted"])((function(){Cl.off(zc.RICH_TEXT_COMMAND,m)})),{editorViewRef:r}}});n("2a8a");const Ll=eo()(Bl,[["render",Dc],["__scopeId","data-v-50456657"]]);var Tl=Ll,_l=Object(j["defineComponent"])({name:"editable-element-text",components:{ElementOutline:_c,ProsemirrorEditor:Tl},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=ue(),n=ae(),o=Object(y["c"])(t),c=o.handleElementId,l=o.isScaling,a=dt(),r=a.addHistorySnapshot,i=Object(j["ref"])(),u=Object(j["computed"])((function(){return e.elementInfo.shadow})),d=_o(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))},b=Object(j["ref"])(-1);Object(j["watch"])(l,(function(){c.value===e.elementInfo.id&&(l.value||-1===b.value||(n.updateElement({id:e.elementInfo.id,props:{height:b.value}}),b.value=-1))}));var m=function(t){var o=t[0].contentRect;if(i.value){var c=o.height;e.elementInfo.height!==c&&(l.value?b.value=c:n.updateElement({id:e.elementInfo.id,props:{height:c}}))}},p=new ResizeObserver(m);Object(j["onMounted"])((function(){i.value&&p.observe(i.value)})),Object(j["onUnmounted"])((function(){i.value&&p.unobserve(i.value)}));var v=function(t){n.updateElement({id:e.elementInfo.id,props:{content:t}}),r()},O=function(){var t=e.elementInfo.content.replaceAll(/<[^>]+>/g,"");t||n.deleteElement(e.elementInfo.id)},h=Object(j["computed"])((function(){return c.value===e.elementInfo.id}));return Object(j["watch"])(h,(function(){h.value||O()})),{elementRef:i,shadowStyle:s,updateContent:v,handleSelectElement:f,checkEmptyText:O}}});n("ca71");const Ml=eo()(_l,[["render",Vc],["__scopeId","data-v-8e51e5ca"]]);var Dl=Ml,zl=["width","height"],Al={key:0},Fl=["transform"],Rl=["d","fill","stroke","stroke-width","stroke-dasharray"];function Pl(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("GradientDefs"),r=Object(j["resolveComponent"])("ProsemirrorEditor"),i=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["editable-element-shape",{lock:e.elementInfo.lock}]),style:Object(j["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(j["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(j["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"element-content",style:Object(j["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[4]||(t[4]=function(t){return e.handleSelectElement(t)}),onTouchstart:t[5]||(t[5]=function(t){return e.handleSelectElement(t)}),onDblclick:t[6]||(t[6]=function(t){return e.editable=!0})},[(Object(j["openBlock"])(),Object(j["createElementBlock"])("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height},[e.elementInfo.gradient?(Object(j["openBlock"])(),Object(j["createElementBlock"])("defs",Al,[Object(j["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(j["createCommentVNode"])("",!0),Object(j["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(j["createElementVNode"])("path",{class:"shape-path","vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",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,Rl)],8,Fl)],8,zl)),Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["shape-text",[e.text.align,{editable:e.editable||e.text.content}]])},[e.editable||e.text.content?(Object(j["openBlock"])(),Object(j["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)}),onBlur:t[1]||(t[1]=function(t){return e.checkEmptyText()}),onMousedown:t[2]||(t[2]=function(t){return e.handleSelectElement(t,!1)}),onTouchstart:t[3]||(t[3]=function(t){return e.handleSelectElement(t,!1)})},null,8,["elementId","defaultColor","defaultFontName","editable","value"])):Object(j["createCommentVNode"])("",!0)],2)],36)),[[i,e.contextmenus]])],4)],6)}var Hl=["id","gradientTransform"],ql=["stop-color"],Ul=["stop-color"],Wl=["id"],Gl=["stop-color"],Xl=["stop-color"];function Yl(e,t,n,o,c,l){return"linear"===e.type?(Object(j["openBlock"])(),Object(j["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(j["createElementVNode"])("stop",{offset:"0%","stop-color":e.color1},null,8,ql),Object(j["createElementVNode"])("stop",{offset:"100%","stop-color":e.color2},null,8,Ul)],8,Hl)):(Object(j["openBlock"])(),Object(j["createElementBlock"])("radialGradient",{key:1,id:e.id},[Object(j["createElementVNode"])("stop",{offset:"0%","stop-color":e.color1},null,8,Gl),Object(j["createElementVNode"])("stop",{offset:"100%","stop-color":e.color2},null,8,Xl)],8,Wl))}var Zl=Object(j["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 Jl=eo()(Zl,[["render",Yl]]);var Kl=Jl,Ql=Object(j["defineComponent"])({name:"editable-element-shape",components:{GradientDefs:Kl,ProsemirrorEditor:Tl},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=ue(),n=ae(),o=Object(y["c"])(t),c=o.handleElementId,l=dt(),a=l.addHistorySnapshot,r=function(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo,n))},i=Object(j["computed"])((function(){return e.elementInfo.outline})),u=Uo(i),d=u.outlineWidth,s=u.outlineStyle,f=u.outlineColor,b=Object(j["computed"])((function(){return e.elementInfo.shadow})),m=_o(b),p=m.shadowStyle,v=Object(j["computed"])((function(){return e.elementInfo.flipH})),O=Object(j["computed"])((function(){return e.elementInfo.flipV})),h=Mo(v,O),g=h.flipStyle,x=Object(j["ref"])(!1);Object(j["watch"])(c,(function(){c.value!==e.elementInfo.id&&x.value&&(x.value=!1)}));var C=Object(j["computed"])((function(){var t={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"};return e.elementInfo.text?e.elementInfo.text:t})),k=function(t){var o=Object(L["a"])(Object(L["a"])({},C.value),{},{content:t});n.updateElement({id:e.elementInfo.id,props:{text:o}}),a()},E=function(){if(e.elementInfo.text){var t=e.elementInfo.text.content.replaceAll(/<[^>]+>/g,"");t||(n.removeElementProps({id:e.elementInfo.id,propName:"text"}),a())}};return{shadowStyle:p,outlineWidth:d,outlineStyle:s,outlineColor:f,flipStyle:g,editable:x,text:C,handleSelectElement:r,updateText:k,checkEmptyText:E}}});n("afe9");const $l=eo()(Ql,[["render",Pl],["__scopeId","data-v-81338b12"]]);var ea=$l,ta=["width","height"],na=["d","stroke","stroke-width","stroke-dasharray","marker-start","marker-end"],oa=["d"];function ca(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("LinePointMarker"),r=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["editable-element-shape",{lock:e.elementInfo.lock}]),style:Object(j["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px"})},[Object(j["createElementVNode"])("div",{class:"element-content",style:Object(j["normalizeStyle"])({filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):""}),onMousedown:t[0]||(t[0]=function(t){return e.handleSelectElement(t)}),onTouchstart:t[1]||(t[1]=function(t){return e.handleSelectElement(t)})},[(Object(j["openBlock"])(),Object(j["createElementBlock"])("svg",{overflow:"visible",width:e.svgWidth,height:e.svgHeight},[Object(j["createElementVNode"])("defs",null,[e.elementInfo.points[0]?(Object(j["openBlock"])(),Object(j["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(j["createCommentVNode"])("",!0),e.elementInfo.points[1]?(Object(j["openBlock"])(),Object(j["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(j["createCommentVNode"])("",!0)]),Object(j["createElementVNode"])("path",{class:"line-point",d:e.path,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.width,"stroke-dasharray":e.lineDashArray,fill:"none","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,na),Object(j["withDirectives"])(Object(j["createElementVNode"])("path",{class:"line-path",d:e.path,stroke:"transparent","stroke-width":"20",fill:"none"},null,8,oa),[[r,e.contextmenus]])],8,ta))],36)],6)}var la=["id","markerWidth","markerHeight","refX","refY"],aa=["d","fill","transform"];function ra(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["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(j["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,aa)],8,la)}var ia={dot:"m0 5a5 5 0 1 0 10 0a5 5 0 1 0 -10 0z",arrow:"M0,0 L10,5 0,10 Z"},ua={"arrow-start":180,"arrow-end":0},da=Object(j["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(j["computed"])((function(){return ia[e.type]})),n=Object(j["computed"])((function(){return ua["".concat(e.type,"-").concat(e.position)]||0})),o=Object(j["computed"])((function(){return e.baseSize<2?2:e.baseSize}));return{path:t,rotate:n,size:o}}});const sa=eo()(da,[["render",ra]]);var fa=sa,ba=Object(j["defineComponent"])({name:"editable-element-shape",components:{LinePointMarker:fa},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(j["computed"])((function(){return e.elementInfo.shadow})),o=_o(n),c=o.shadowStyle,l=Object(j["computed"])((function(){var t=Math.abs(e.elementInfo.start[0]-e.elementInfo.end[0]);return t<24?24:t})),a=Object(j["computed"])((function(){var t=Math.abs(e.elementInfo.start[1]-e.elementInfo.end[1]);return t<24?24:t})),r=Object(j["computed"])((function(){return"dashed"===e.elementInfo.style?"10 6":"0 0"})),i=Object(j["computed"])((function(){return tt(e.elementInfo)}));return{handleSelectElement:t,shadowStyle:c,svgWidth:l,svgHeight:a,lineDashArray:r,path:i}}});n("1c30");const ma=eo()(ba,[["render",ca],["__scopeId","data-v-5f3b7dc5"]]);var pa=ma;function va(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ElementOutline"),r=Object(j["resolveComponent"])("Chart"),i=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["editable-element-chart",{lock:e.elementInfo.lock}]),style:Object(j["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(j["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(j["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"element-content",style:Object(j["normalizeStyle"])({backgroundColor:e.elementInfo.fill}),onMousedown:t[0]||(t[0]=function(t){return e.handleSelectElement(t)}),onTouchstart:t[1]||(t[1]=function(t){return e.handleSelectElement(t)}),onDblclick:t[2]||(t[2]=function(t){return e.openDataEditor()})},[Object(j["createVNode"])(a,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(j["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 Oa(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"chart",style:Object(j["normalizeStyle"])({flexDirection:"top"===e.legend?"column-reverse":"column"})},[Object(j["createElementVNode"])("div",{class:"chart-content",ref:"chartRef",style:Object(j["normalizeStyle"])({width:e.width+"px",height:e.chartHeight+"px",transform:"scale(".concat(1/e.slideScale,")")})},null,4),e.legend?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{key:0,class:"legends",style:Object(j["normalizeStyle"])({transform:"scale(".concat(1/e.slideScale,")")})},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.legends,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"legend",key:n,style:Object(j["normalizeStyle"])({color:e.gridColor})},[Object(j["createElementVNode"])("div",{class:"block",style:Object(j["normalizeStyle"])({backgroundColor:e.themeColors[n]})},null,4),Object(j["createTextVNode"])(" "+Object(j["toDisplayString"])(t),1)],4)})),128))],4)):Object(j["createCommentVNode"])("",!0)],4)}var ha=n("ba48"),ja=n.n(ha),ya=(n("aa97"),Object(j["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(j["ref"])(),o=Object(j["inject"])(uo)||Object(j["ref"])(1),c=Object(j["computed"])((function(){return e.legend?e.height-20:e.height})),l=function(){var t=e.options||{},n=Object(L["a"])(Object(L["a"])({},t),{},{width:e.width*o.value,height:c.value*o.value}),l="pie"===e.type?Object(L["a"])(Object(L["a"])({},e.data),{},{series:e.data.series[0]}):e.data;return{data:l,options:n}},a=function(){if(n.value){var o=Object(ne["upperFirst"])(e.type),c=l(),a=c.data,r=c.options;t=new ja.a[o](n.value,a,r)}},r=function(){if(t){var e=l(),n=e.data,o=e.options;t.update(n,o)}else a()};Object(j["watch"])([function(){return e.width},function(){return e.height},function(){return e.data},function(){return e.options},o],r),Object(j["onMounted"])(a);var i=Object(j["computed"])((function(){var t=[];if(e.themeColor.length>=10)t=e.themeColor;else if(1===e.themeColor.length)t=te()(e.themeColor[0]).analogous(10).map((function(e){return e.toHexString()}));else{var n=e.themeColor.length,o=te()(e.themeColor[n-1]).analogous(11-n).map((function(e){return e.toHexString()}));t=[].concat(Object($["a"])(e.themeColor.slice(0,n-1)),Object($["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(j["watch"])(i,u),Object(j["onMounted"])(u);var d=function(){n.value&&e.gridColor&&n.value.style.setProperty("--grid-color",e.gridColor)};return Object(j["watch"])((function(){return e.gridColor}),d),Object(j["onMounted"])(d),{chartHeight:c,themeColors:i,slideScale:o,chartRef:n}}}));n("97a7"),n("8749");const ga=eo()(ya,[["render",Oa],["__scopeId","data-v-79ce410e"]]);var xa=ga,Ca=Object(j["defineComponent"])({name:"editable-element-chart",components:{ElementOutline:_c,Chart:xa},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(){Cl.emit(zc.OPEN_CHART_DATA_EDITOR)};return{handleSelectElement:t,openDataEditor:n}}});n("3e3f");const ka=eo()(Ca,[["render",va],["__scopeId","data-v-863d2c90"]]);var Ea=ka,wa={class:"element-content"};function Na(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("EditableTable"),r=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["editable-element-table",{lock:e.elementInfo.lock}]),ref:"elementRef",style:Object(j["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"})},[Object(j["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(j["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createElementBlock"])("div",wa,[Object(j["createVNode"])(a,{onMousedown:t[0]||(t[0]=Object(j["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(j["openBlock"])(),Object(j["createElementBlock"])("div",{key:0,class:Object(j["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)}),onTouchstart:t[6]||(t[6]=function(t){return e.handleSelectElement(t)})},[Object(j["createElementVNode"])("div",{class:"mask-tip",style:Object(j["normalizeStyle"])({transform:"scale(".concat(1/e.canvasScale,")")})},"双击编辑",4)],34)):Object(j["createCommentVNode"])("",!0)])),[[r,e.contextmenus]])],4)],6)}var Va={key:0,class:"handler"},Ia=["onMousedown"],Sa=["width"],Ba=["rowspan","colspan","data-cell-index","onMousedown","onMouseenter"],La=["innerHTML"];function Ta(e,t,n,o,c,l){var a,r,i,u,d,s=Object(j["resolveComponent"])("CustomTextarea"),f=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"editable-table",style:Object(j["normalizeStyle"])({width:e.totalWidth+"px"})},[e.editable?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Va,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.dragLinePosition,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"drag-line",key:n,style:Object(j["normalizeStyle"])({left:t+"px"}),onMousedown:function(t){return e.handleMousedownColHandler(t,n)}},null,44,Ia)})),128))])):Object(j["createCommentVNode"])("",!0),Object(j["createElementVNode"])("table",{class:Object(j["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(j["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(j["createElementVNode"])("colgroup",null,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.colSizeList,(function(e,t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("col",{span:"1",key:t,width:e},null,8,Sa)})),128))]),Object(j["createElementVNode"])("tbody",null,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.tableCells,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])("tr",{key:n},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(t,(function(t,o){return Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createElementBlock"])("td",{class:Object(j["normalizeClass"])(["cell",{selected:e.selectedCells.includes("".concat(n,"_").concat(o))&&e.selectedCells.length>1,active:e.activedCell==="".concat(n,"_").concat(o)}]),style:Object(j["normalizeStyle"])(Object(L["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(j["openBlock"])(),Object(j["createBlock"])(s,{key:0,class:Object(j["normalizeClass"])(["cell-text",{active:e.activedCell==="".concat(n,"_").concat(o)}]),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(j["openBlock"])(),Object(j["createElementBlock"])("div",{key:1,class:"cell-text",innerHTML:e.formatText(t.text)},null,8,La))],46,Ba)),[[j["vShow"],!e.hideCells.includes("".concat(n,"_").concat(o))],[f,function(t){return e.contextmenus(t)}]])})),128))])})),128))])],6)],4)}var _a=function(e){if(!e)return{};var t=e.bold,n=e.em,o=e.underline,c=e.strikethrough,l=e.color,a=e.backcolor,r=e.fontsize,i=e.fontname,u=e.align,d="".concat(o?"underline":""," ").concat(c?"line-through":"");return" "===d&&(d="none"),{fontWeight:t?"bold":"normal",fontStyle:n?"italic":"normal",textDecoration:d,color:l||"#000",backgroundColor:a||"",fontSize:r||"14px",fontFamily:i||"微软雅黑",textAlign:u||"left"}},Ma=function(e){return e.replace(/\n/g,"
").replace(/ /g," ")},Da=function(e){var t=Object(j["computed"])((function(){for(var t=[],n=0;n1||l.rowspan>1)for(var a=n;a=d&&m<=f&&v>=s&&v<=b&&u.push("".concat(m,"_").concat(v));return u}));Object(j["watch"])(g,(function(e,t){Object(ne["isEqual"])(e,t)||n("changeSelectedCells",g.value)}));var x=Object(j["computed"])((function(){return g.value.length>1?null:g.value[0]})),k=Object(j["computed"])((function(){if(!a.value.length)return null;var e=Object(ve["a"])(a.value,2),t=e[0],n=e[1];if(!r.value.length)return{row:[t,t],col:[n,n]};var o=Object(ve["a"])(r.value,2),c=o[0],l=o[1];if(t===c&&n===l)return{row:[t,t],col:[n,n]};var i=Math.min(t,c),u=Math.min(n,l),d=Math.max(t,c),s=Math.max(n,l);return{row:[i,d],col:[u,s]}})),E=function(){return l.value=!1},w=function(e,t,n){0===e.button&&(r.value=[],l.value=!0,a.value=[t,n])},N=function(e,t){l.value&&(r.value=[e,t])};Object(j["onMounted"])((function(){document.addEventListener("mouseup",E)})),Object(j["onUnmounted"])((function(){document.removeEventListener("mouseup",E)}));var V=function(e,t){return h.value.includes("".concat(e,"_").concat(t))},S=function(e){var t=i.value.length-1;a.value=[0,e],r.value=[t,e]},B=function(e){var t=i.value[e].length-1;a.value=[e,0],r.value=[e,t]},T=function(){var e=i.value.length-1,t=i.value[e].length-1;a.value=[0,0],r.value=[e,t]},_=function(e){for(var t=JSON.parse(JSON.stringify(i.value)),n=i.value[e],o=[],c=0;c=0;u--)if(!V(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=[],c=0;c=0;u--)if(!V(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)},D=function(e){for(var t=JSON.parse(JSON.stringify(i.value)),n=[],o=0;oi.value.length&&(a=t+c-i.value.length),o+l>i.value[0].length&&(r=o+l-i.value[0].length),(a||r)&&A(a,r),Object(j["nextTick"])((function(){for(var a=0;a1,n=e[0].length>1;return{canDeleteRow:t,canDeleteCol:n}},Z=function(e,t){var n=g.value.length>1,o=i.value[e][t],c=n,l=!n&&(o.rowspan>1||o.colspan>1);return{canMerge:c,canSplit:l}},J=function(e){var t=e.dataset.cellIndex,n=+t.split("_")[0],o=+t.split("_")[1];g.value.includes("".concat(n,"_").concat(o))||(a.value=[n,o],r.value=[]);var c=Z(n,o),l=c.canMerge,i=c.canSplit,u=Y(),d=u.canDeleteRow,s=u.canDeleteCol;return[{text:"插入列",children:[{text:"到左侧",handler:function(){return z(o)}},{text:"到右侧",handler:function(){return z(o+1)}}]},{text:"插入行",children:[{text:"到上方",handler:function(){return D(n)}},{text:"到下方",handler:function(){return D(n+1)}}]},{text:"删除列",disable:!s,handler:function(){return M(o)}},{text:"删除行",disable:!d,handler:function(){return _(n)}},{divider:!0},{text:"合并单元格",disable:!l,handler:F},{text:"取消合并单元格",disable:!i,handler:function(){return R(n,o)}},{divider:!0},{text:"选中当前列",handler:function(){return S(o)}},{text:"选中当前行",handler:function(){return B(n)}},{text:"选中全部单元格",handler:T}]};return{getTextStyle:_a,dragLinePosition:p,tableCells:i,colSizeList:f,totalWidth:b,hideCells:h,selectedCells:g,activedCell:x,selectedRange:k,handleCellMousedown:w,handleCellMouseenter:N,selectCol:S,selectRow:B,handleMousedownColHandler:P,contextmenus:J,handleInput:W,insertExcelData:G,subThemeColor:s,formatText:Ma}}});n("94f86");const Ua=eo()(qa,[["render",Ta],["__scopeId","data-v-12f568a6"]]);var Wa=Ua,Ga=Object(j["defineComponent"])({name:"editable-element-table",components:{EditableTable:Wa},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=ue(),n=ae(),o=Object(y["c"])(t),c=o.canvasScale,l=o.handleElementId,a=o.isScaling,r=Object(j["ref"])(),i=dt(),u=i.addHistorySnapshot,d=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))},s=Object(j["ref"])(!1);Object(j["watch"])(l,(function(){l.value!==e.elementInfo.id&&(s.value=!1)})),Object(j["watch"])(s,(function(){t.setDisableHotkeysState(s.value)}));var f=function(){e.elementInfo.lock||(s.value=!0)},b=Object(j["ref"])(-1);Object(j["watch"])(a,(function(){l.value===e.elementInfo.id&&(a.value&&(s.value=!1),a.value||-1===b.value||(n.updateElement({id:e.elementInfo.id,props:{height:b.value}}),b.value=-1))}));var m=function(t){var o=t[0].contentRect;if(r.value){var c=o.height;e.elementInfo.height!==c&&(a.value?b.value=c:n.updateElement({id:e.elementInfo.id,props:{height:c}}))}},p=new ResizeObserver(m);Object(j["onMounted"])((function(){r.value&&p.observe(r.value)})),Object(j["onUnmounted"])((function(){r.value&&p.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})),c=t.map((function(e){return e/o}));n.updateElement({id:e.elementInfo.id,props:{width:o,colWidths:c}}),u()},h=function(e){Object(j["nextTick"])((function(){return t.setSelectedTableCells(e)}))};return{elementRef:r,canvasScale:c,handleSelectElement:d,updateTableCells:v,updateColWidths:O,editable:s,startEdit:f,updateSelectedCells:h}}});n("9e6c");const Xa=eo()(Ga,[["render",Na],["__scopeId","data-v-1c016f8e"]]);var Ya=Xa,Za=["width","height","stroke","stroke-width"],Ja=["transform"],Ka=["d"];function Qa(e,t,n,o,c,l){var a=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["editable-element-latex",{lock:e.elementInfo.lock}]),style:Object(j["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(j["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(j["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"element-content",onMousedown:t[0]||(t[0]=function(t){return e.handleSelectElement(t)}),onTouchstart:t[1]||(t[1]=function(t){return e.handleSelectElement(t)}),onDblclick:t[2]||(t[2]=function(t){return e.openLatexEditor()})},[(Object(j["openBlock"])(),Object(j["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(j["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(j["createElementVNode"])("path",{d:e.elementInfo.path},null,8,Ka)],8,Ja)],8,Za))],32)),[[a,e.contextmenus]])],4)],6)}var $a=Object(j["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(){Cl.emit(zc.OPEN_LATEX_EDITOR)};return{handleSelectElement:t,openLatexEditor:n}}});n("bfa0");const er=eo()($a,[["render",Qa],["__scopeId","data-v-50e5c825"]]);var tr=er;function nr(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("VideoPlayer"),r=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["editable-element-video",{lock:e.elementInfo.lock}]),style:Object(j["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(j["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(j["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"element-content",onMousedown:t[2]||(t[2]=function(t){return e.handleSelectElement(t,!1)}),onTouchstart:t[3]||(t[3]=function(t){return e.handleSelectElement(t,!1)})},[Object(j["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(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(["t","b","l","r"],(function(n){return Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["handler-border",n]),key:n,onMousedown:t[0]||(t[0]=function(t){return e.handleSelectElement(t)}),onTouchstart:t[1]||(t[1]=function(t){return e.handleSelectElement(t)})},null,34)})),64))],32)),[[r,e.contextmenus]])],4)],6)}var or=function(e){return Object(j["pushScopeId"])("data-v-fcb929f4"),e=e(),Object(j["popScopeId"])(),e},cr=["src","poster"],lr={class:"bezel"},ar=or((function(){return Object(j["createElementVNode"])("div",{class:"controller-mask"},null,-1)})),rr={class:"controller"},ir={class:"icons icons-left"},ur={class:"icon-content"},dr={class:"volume"},sr={class:"icon-content"},fr={class:"volume-bar",ref:"volumeBarRef"},br=or((function(){return Object(j["createElementVNode"])("span",{class:"thumb"},null,-1)})),mr=[br],pr={class:"time"},vr={class:"ptime"},Or=Object(j["createTextVNode"])(" / "),hr={class:"dtime"},jr={class:"icons icons-right"},yr={class:"speed"},gr={class:"icon speed-icon"},xr=["onClick"],Cr=or((function(){return Object(j["createElementVNode"])("span",{class:"icon-content"},"循环",-1)})),kr=[Cr],Er={class:"bar"},wr=or((function(){return Object(j["createElementVNode"])("span",{class:"thumb"},null,-1)})),Nr=[wr];function Vr(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconPause"),r=Object(j["resolveComponent"])("IconPlayOne"),i=Object(j["resolveComponent"])("IconVolumeMute"),u=Object(j["resolveComponent"])("IconVolumeNotice"),d=Object(j["resolveComponent"])("IconVolumeSmall");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["video-player",{"hide-controller":e.hideController}]),style:Object(j["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(j["createElementVNode"])("div",{class:"video-wrap",onClick:t[8]||(t[8]=function(t){return e.toggle()})},[Object(j["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,cr),Object(j["createElementVNode"])("div",lr,[Object(j["createElementVNode"])("span",{class:Object(j["normalizeClass"])(["bezel-icon",{"bezel-transition":e.bezelTransition}]),onAnimationend:t[7]||(t[7]=function(t){return e.bezelTransition=!1})},[e.paused?(Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:0})):(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:1}))],34)])]),ar,Object(j["createElementVNode"])("div",rr,[Object(j["createElementVNode"])("div",ir,[Object(j["createElementVNode"])("div",{class:"icon play-icon",onClick:t[9]||(t[9]=function(t){return e.toggle()})},[Object(j["createElementVNode"])("span",ur,[e.paused?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0})):(Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:1}))])]),Object(j["createElementVNode"])("div",dr,[Object(j["createElementVNode"])("div",{class:"icon volume-icon",onClick:t[10]||(t[10]=function(t){return e.toggleVolume()})},[Object(j["createElementVNode"])("span",sr,[0===e.volume?(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:0})):1===e.volume?(Object(j["openBlock"])(),Object(j["createBlock"])(u,{key:1})):(Object(j["openBlock"])(),Object(j["createBlock"])(d,{key:2}))])]),Object(j["createElementVNode"])("div",{class:"volume-bar-wrap",onMousedown:t[11]||(t[11]=function(t){return e.handleMousedownVolumeBar()}),onTouchstart:t[12]||(t[12]=function(t){return e.handleMousedownVolumeBar()}),onClick:t[13]||(t[13]=function(t){return e.handleClickVolumeBar(t)})},[Object(j["createElementVNode"])("div",fr,[Object(j["createElementVNode"])("div",{class:"volume-bar-inner",style:Object(j["normalizeStyle"])({width:e.volumeBarWidth})},mr,4)],512)],32)]),Object(j["createElementVNode"])("span",pr,[Object(j["createElementVNode"])("span",vr,Object(j["toDisplayString"])(e.ptime),1),Or,Object(j["createElementVNode"])("span",hr,Object(j["toDisplayString"])(e.dtime),1)])]),Object(j["createElementVNode"])("div",jr,[Object(j["createElementVNode"])("div",yr,[Object(j["createElementVNode"])("div",gr,[Object(j["createElementVNode"])("span",{class:"icon-content",onClick:t[14]||(t[14]=function(t){return e.speedMenuVisible=!e.speedMenuVisible})},"倍速"),e.speedMenuVisible?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{key:0,class:"speed-menu",onMouseleave:t[15]||(t[15]=function(t){return e.speedMenuVisible=!1})},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.speedOptions,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["speed-menu-item",{active:t.value===e.playbackRate}]),key:t.label,onClick:function(n){return e.speed(t.value)}},Object(j["toDisplayString"])(t.label),11,xr)})),128))],32)):Object(j["createCommentVNode"])("",!0)])]),Object(j["createElementVNode"])("div",{class:"loop",onClick:t[16]||(t[16]=function(t){return e.toggleLoop()})},[Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["icon loop-icon",{active:e.loop}])},kr,2)])]),Object(j["createElementVNode"])("div",{class:"bar-wrap",ref:"playBarWrap",onMousedown:t[17]||(t[17]=function(t){return e.handleMousedownPlayBar()}),onTouchstart:t[18]||(t[18]=function(t){return e.handleMousedownPlayBar()}),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(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["bar-time",{hidden:!e.playBarTimeVisible}]),style:Object(j["normalizeStyle"])({left:e.playBarTimeLeft})},Object(j["toDisplayString"])(e.playBarTime),7),Object(j["createElementVNode"])("div",Er,[Object(j["createElementVNode"])("div",{class:"loaded",style:Object(j["normalizeStyle"])({width:e.loadedBarWidth})},null,4),Object(j["createElementVNode"])("div",{class:"played",style:Object(j["normalizeStyle"])({width:e.playedBarWidth})},Nr,4)])],544)])],38)}var Ir=function(e,t){Object(j["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 c=new o;c.loadSource(e),c.attachMedia(t.value)}}else if("flv"===n){var l=window.flvjs;if(l&&l.isSupported()){var a=l.createPlayer({type:"flv",url:e});a.attachMediaElement(t.value),a.load()}}}}))},Sr=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),c=Math.floor(e-3600*n-60*o);return(n>0?[n,o,c]:[o,c]).map(t).join(":")},Br=function(e){return e.getBoundingClientRect().left},Lr=Object(j["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(j["ref"])(),n=Object(j["ref"])(),o=Object(j["ref"])(),c=Object(j["ref"])(.5),l=Object(j["ref"])(!0),a=Object(j["ref"])(0),r=Object(j["ref"])(0),i=Object(j["ref"])(0),u=Object(j["ref"])(!1),d=Object(j["ref"])(!1),s=Object(j["ref"])(1),f=Object(j["ref"])(!1),b=Object(j["ref"])("00:00"),m=Object(j["ref"])("0"),p=Object(j["computed"])((function(){return Sr(a.value)})),v=Object(j["computed"])((function(){return Sr(r.value)})),O=Object(j["computed"])((function(){return a.value/r.value*100+"%"})),h=Object(j["computed"])((function(){return i.value/r.value*100+"%"})),y=Object(j["computed"])((function(){return 100*c.value+"%"})),g=Object(j["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&&(l.value=!1,t.value.play(),d.value=!0)},E=function(){t.value&&(l.value=!0,t.value.pause(),d.value=!0)},w=function(){l.value?k():E()},N=function(e){t.value&&(e=Math.max(e,0),e=Math.min(e,1),t.value.volume=e,c.value=e,t.value.muted&&0!==e&&(t.value.muted=!1))},V=function(e){t.value&&(t.value.playbackRate=e),s.value=e},I=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()):E()},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 De["a"].error("视频加载失败")},_=function(e){if(t.value&&n.value){var o="clientX"in e?e.clientX:e.changedTouches[0].clientX,c=(o-Br(n.value))/n.value.clientWidth;c=Math.max(c,0),c=Math.min(c,1);var l=c*r.value;t.value.currentTime=l,a.value=l}},M=function e(o){if(t.value&&n.value){var c="clientX"in o?o.clientX:o.changedTouches[0].clientX,l=(c-Br(n.value))/n.value.clientWidth;l=Math.max(l,0),l=Math.min(l,1);var i=l*r.value;t.value.currentTime=i,a.value=i,document.removeEventListener("mousemove",_),document.removeEventListener("touchmove",_),document.removeEventListener("mouseup",e),document.removeEventListener("touchend",e)}},D=function(){document.addEventListener("mousemove",_),document.addEventListener("touchmove",_),document.addEventListener("mouseup",M),document.addEventListener("touchend",M)},z=function(e){if(o.value){var t="clientX"in e?e.clientX:e.changedTouches[0].clientX,n=(t-Br(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-Br(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 c=r.value*(o/n.value.offsetWidth);m.value="".concat(o-(c>=3600?25:20),"px"),b.value=Sr(c),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},U=Object(j["ref"])(-1),W=Object(j["ref"])(!1),G=function(){W.value=!1,clearTimeout(U.value),U.value=setTimeout((function(){var e;null!==(e=t.value)&&void 0!==e&&e.played.length&&(W.value=!0)}),3e3)};return Ir(e.src,t),{videoRef:t,playBarWrap:n,volumeBarRef:o,volume:c,loop:u,paused:l,ptime:p,dtime:v,playBarTime:b,playBarTimeVisible:f,playBarTimeLeft:m,playedBarWidth:O,loadedBarWidth:h,volumeBarWidth:y,hideController:W,bezelTransition:d,playbackRate:s,speedMenuVisible:g,speedOptions:x,seek:C,play:k,pause:E,toggle:w,setVolume:N,speed:V,handleDurationchange:I,handleTimeupdate:S,handleEnded:B,handleProgress:L,handleMousedownPlayBar:D,handleMousedownVolumeBar:F,handleClickVolumeBar:R,handleMousemovePlayBar:P,toggleVolume:H,toggleLoop:q,autoHideController:G,handleError:T}}});n("1d8f");const Tr=eo()(Lr,[["render",Vr],["__scopeId","data-v-fcb929f4"]]);var _r=Tr,Mr=Object(j["defineComponent"])({name:"editable-element-video",components:{VideoPlayer:_r},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=Object(y["c"])(ue()),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("aa3e");const Dr=eo()(Mr,[["render",nr],["__scopeId","data-v-454973e4"]]);var zr=Dr;function Ar(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconVolumeNotice"),r=Object(j["resolveComponent"])("AudioPlayer"),i=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["editable-element-audio",{lock:e.elementInfo.lock}]),style:Object(j["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(j["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(j["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"element-content",onMousedown:t[1]||(t[1]=function(t){return e.handleSelectElement(t)}),onTouchstart:t[2]||(t[2]=function(t){return e.handleSelectElement(t)})},[Object(j["createVNode"])(a,{class:"audio-icon",style:Object(j["normalizeStyle"])({fontSize:e.audioIconSize,color:e.elementInfo.color})},null,8,["style"]),e.handleElementId===e.elementInfo.id?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,class:"audio-player",style:Object(j["normalizeStyle"])(Object(L["a"])({},e.audioPlayerPosition)),src:e.elementInfo.src,loop:e.elementInfo.loop,scale:e.canvasScale,onMousedown:t[0]||(t[0]=Object(j["withModifiers"])((function(){}),["stop"]))},null,8,["style","src","loop","scale"])):Object(j["createCommentVNode"])("",!0)],32)),[[i,e.contextmenus]])],4)],6)}var Fr=function(e){return Object(j["pushScopeId"])("data-v-5530a7f2"),e=e(),Object(j["popScopeId"])(),e},Rr=["src","autoplay"],Pr={class:"controller"},Hr={class:"icons"},qr={class:"icon-content"},Ur={class:"volume"},Wr={class:"icon-content"},Gr={class:"volume-bar",ref:"volumeBarRef"},Xr=Fr((function(){return Object(j["createElementVNode"])("span",{class:"thumb"},null,-1)})),Yr=[Xr],Zr={class:"time"},Jr={class:"ptime"},Kr=Object(j["createTextVNode"])(" / "),Qr={class:"dtime"},$r={class:"bar"},ei=Fr((function(){return Object(j["createElementVNode"])("span",{class:"thumb"},null,-1)})),ti=[ei];function ni(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconPlayOne"),r=Object(j["resolveComponent"])("IconPause"),i=Object(j["resolveComponent"])("IconVolumeMute"),u=Object(j["resolveComponent"])("IconVolumeNotice"),d=Object(j["resolveComponent"])("IconVolumeSmall");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"audio-player",style:Object(j["normalizeStyle"])({transform:"scale(".concat(1/e.scale,")")})},[Object(j["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,Rr),Object(j["createElementVNode"])("div",Pr,[Object(j["createElementVNode"])("div",Hr,[Object(j["createElementVNode"])("div",{class:"icon play-icon",onClick:t[6]||(t[6]=function(t){return e.toggle()})},[Object(j["createElementVNode"])("span",qr,[e.paused?(Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:0})):(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:1}))])]),Object(j["createElementVNode"])("div",Ur,[Object(j["createElementVNode"])("div",{class:"icon volume-icon",onClick:t[7]||(t[7]=function(t){return e.toggleVolume()})},[Object(j["createElementVNode"])("span",Wr,[0===e.volume?(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:0})):1===e.volume?(Object(j["openBlock"])(),Object(j["createBlock"])(u,{key:1})):(Object(j["openBlock"])(),Object(j["createBlock"])(d,{key:2}))])]),Object(j["createElementVNode"])("div",{class:"volume-bar-wrap",onMousedown:t[8]||(t[8]=function(t){return e.handleMousedownVolumeBar()}),onTouchstart:t[9]||(t[9]=function(t){return e.handleMousedownVolumeBar()}),onClick:t[10]||(t[10]=function(t){return e.handleClickVolumeBar(t)})},[Object(j["createElementVNode"])("div",Gr,[Object(j["createElementVNode"])("div",{class:"volume-bar-inner",style:Object(j["normalizeStyle"])({width:e.volumeBarWidth})},Yr,4)],512)],32)])]),Object(j["createElementVNode"])("span",Zr,[Object(j["createElementVNode"])("span",Jr,Object(j["toDisplayString"])(e.ptime),1),Kr,Object(j["createElementVNode"])("span",Qr,Object(j["toDisplayString"])(e.dtime),1)]),Object(j["createElementVNode"])("div",{class:"bar-wrap",ref:"playBarWrap",onMousedown:t[11]||(t[11]=function(t){return e.handleMousedownPlayBar()}),onTouchstart:t[12]||(t[12]=function(t){return e.handleMousedownPlayBar()}),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(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["bar-time",{hidden:!e.playBarTimeVisible}]),style:Object(j["normalizeStyle"])({left:e.playBarTimeLeft})},Object(j["toDisplayString"])(e.playBarTime),7),Object(j["createElementVNode"])("div",$r,[Object(j["createElementVNode"])("div",{class:"loaded",style:Object(j["normalizeStyle"])({width:e.loadedBarWidth})},null,4),Object(j["createElementVNode"])("div",{class:"played",style:Object(j["normalizeStyle"])({width:e.playedBarWidth})},ti,4)])],544)])],4)}var oi=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),c=Math.floor(e-3600*n-60*o);return(n>0?[n,o,c]:[o,c]).map(t).join(":")},ci=function(e){return e.getBoundingClientRect().left},li=Object(j["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(j["ref"])(),n=Object(j["ref"])(),o=Object(j["ref"])(),c=Object(j["ref"])(.5),l=Object(j["ref"])(!0),a=Object(j["ref"])(0),r=Object(j["ref"])(0),i=Object(j["ref"])(0),u=Object(j["ref"])(!1),d=Object(j["ref"])("00:00"),s=Object(j["ref"])("0"),f=Object(j["computed"])((function(){return oi(a.value)})),b=Object(j["computed"])((function(){return oi(r.value)})),m=Object(j["computed"])((function(){return a.value/r.value*100+"%"})),p=Object(j["computed"])((function(){return i.value/r.value*100+"%"})),v=Object(j["computed"])((function(){return 100*c.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&&(l.value=!1,t.value.play())},y=function(){t.value&&(l.value=!0,t.value.pause())},g=function(){l.value?h():y()},x=function(e){t.value&&(e=Math.max(e,0),e=Math.min(e,1),t.value.volume=e,c.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},E=function(){l.value=!1},w=function(){e.loop?(O(0),h()):y()},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},V=function(){return De["a"].error("视频加载失败")},I=function(e){if(t.value&&n.value){var o="clientX"in e?e.clientX:e.changedTouches[0].clientX,c=(o-ci(n.value))/n.value.clientWidth;c=Math.max(c,0),c=Math.min(c,1);var l=c*r.value;t.value.currentTime=l,a.value=l}},S=function e(o){if(t.value&&n.value){var c="clientX"in o?o.clientX:o.changedTouches[0].clientX,l=(c-ci(n.value))/n.value.clientWidth;l=Math.max(l,0),l=Math.min(l,1);var i=l*r.value;t.value.currentTime=i,a.value=i,document.removeEventListener("mousemove",I),document.removeEventListener("touchmove",I),document.removeEventListener("mouseup",e),document.removeEventListener("touchend",e)}},B=function(){document.addEventListener("mousemove",I),document.addEventListener("touchmove",I),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-ci(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)},_=function(){document.addEventListener("mousemove",L),document.addEventListener("touchmove",L),document.addEventListener("mouseup",T),document.addEventListener("touchend",T)},M=function(e){if(o.value){var t=(e.clientX-ci(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 c=r.value*(o/n.value.offsetWidth);s.value="".concat(o-(c>=3600?25:20),"px"),d.value=oi(c),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:c,paused:l,ptime:f,dtime:b,playBarTime:d,playBarTimeVisible:u,playBarTimeLeft:s,playedBarWidth:m,loadedBarWidth:p,volumeBarWidth:v,play:h,pause:y,toggle:g,setVolume:x,handleDurationchange:C,handleTimeupdate:k,handlePlayed:E,handleEnded:w,handleProgress:N,handleError:V,handleMousedownPlayBar:B,handleMousedownVolumeBar:_,handleClickVolumeBar:M,handleMousemovePlayBar:D,toggleVolume:z}}});n("c558");const ai=eo()(li,[["render",ni],["__scopeId","data-v-5530a7f2"]]);var ri=ai,ii=Object(j["defineComponent"])({name:"editable-element-audio",components:{AudioPlayer:ri},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=Object(y["c"])(ue()),n=t.canvasScale,o=t.handleElementId,c=Object(y["c"])(ae()),l=c.viewportRatio,a=Object(j["computed"])((function(){return Math.min(e.elementInfo.width,e.elementInfo.height)+"px"})),r=Object(j["computed"])((function(){var t=at,o=at*l.value,c=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+c>=t&&(s=r-c),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("b14d");const ui=eo()(ii,[["render",Ar],["__scopeId","data-v-40b7d6a8"]]);var di=ui,si=Object(j["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(j["computed"])((function(){var t,n=(t={},Object(pe["a"])(t,Te.IMAGE,kc),Object(pe["a"])(t,Te.TEXT,Dl),Object(pe["a"])(t,Te.SHAPE,ea),Object(pe["a"])(t,Te.LINE,pa),Object(pe["a"])(t,Te.CHART,Ea),Object(pe["a"])(t,Te.TABLE,Ya),Object(pe["a"])(t,Te.LATEX,tr),Object(pe["a"])(t,Te.VIDEO,zr),Object(pe["a"])(t,Te.AUDIO,di),t);return n[e.elementInfo.type]||null})),n=gt(),o=n.orderElement,c=Io(),l=c.alignElementToCanvas,a=Ot(),r=a.combineElements,i=a.uncombineElements,u=vt(),d=u.deleteElement,s=pt(),f=s.lockElement,b=s.unlockElement,m=ht(),p=m.copyElement,v=m.pasteElement,O=m.cutElement,h=jt(),y=h.selectAllElement,g=function(){return e.elementInfo.lock?[{text:"解锁",handler:function(){return b(e.elementInfo)}}]:[{text:"剪切",subText:"Ctrl + X",handler:O},{text:"复制",subText:"Ctrl + C",handler:p},{text:"粘贴",subText:"Ctrl + V",handler:v},{divider:!0},{text:"水平居中",handler:function(){return l(E.HORIZONTAL)},children:[{text:"水平垂直居中",handler:function(){return l(E.CENTER)}},{text:"水平居中",handler:function(){return l(E.HORIZONTAL)}},{text:"左对齐",handler:function(){return l(E.LEFT)}},{text:"右对齐",handler:function(){return l(E.RIGHT)}}]},{text:"垂直居中",handler:function(){return l(E.VERTICAL)},children:[{text:"水平垂直居中",handler:function(){return l(E.CENTER)}},{text:"垂直居中",handler:function(){return l(E.VERTICAL)}},{text:"顶部对齐",handler:function(){return l(E.TOP)}},{text:"底部对齐",handler:function(){return l(E.BOTTOM)}}]},{divider:!0},{text:"置于顶层",disable:e.isMultiSelect&&!e.elementInfo.groupId,handler:function(){return o(e.elementInfo,k.TOP)},children:[{text:"置于顶层",handler:function(){return o(e.elementInfo,k.TOP)}},{text:"上移一层",handler:function(){return o(e.elementInfo,k.UP)}}]},{text:"置于底层",disable:e.isMultiSelect&&!e.elementInfo.groupId,handler:function(){return o(e.elementInfo,k.BOTTOM)},children:[{text:"置于底层",handler:function(){return o(e.elementInfo,k.BOTTOM)}},{text:"下移一层",handler:function(){return o(e.elementInfo,k.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:y},{text:"锁定",subText:"Ctrl + L",handler:f},{text:"删除",subText:"Delete",handler:d}]};return{currentElementComponent:t,contextmenus:g}}});const fi=eo()(si,[["render",Vo]]);var bi=fi;function mi(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])("mouse-selection quadrant-".concat(e.quadrant)),style:Object(j["normalizeStyle"])({top:e.top+"px",left:e.left+"px",width:e.width+"px",height:e.height+"px"})},null,6)}var pi=Object(j["defineComponent"])({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("aa92");const vi=eo()(pi,[["render",mi],["__scopeId","data-v-25d4b5f8"]]);var Oi=vi;function hi(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("GridLines");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"viewport-background",style:Object(j["normalizeStyle"])(e.backgroundStyle)},[e.showGridLines?(Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:0})):Object(j["createCommentVNode"])("",!0)],4)}var ji={class:"grid-lines"},yi=["d","stroke"];function gi(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("svg",ji,[Object(j["createElementVNode"])("path",{style:Object(j["normalizeStyle"])({transform:"scale(".concat(e.canvasScale,")")}),d:e.path,fill:"none",stroke:e.gridColor,"stroke-width":"0.3","stroke-dasharray":"5"},null,12,yi)])}var xi=Object(j["defineComponent"])({name:"grid-lines",setup:function(){var e=Object(y["c"])(ue()),t=e.canvasScale,n=Object(y["c"])(ae()),o=n.currentSlide,c=n.viewportRatio,l=Object(j["computed"])((function(){var e;return null===(e=o.value)||void 0===e?void 0:e.background})),a=Object(j["computed"])((function(){var e,t=(null===(e=l.value)||void 0===e?void 0:e.color)||"#fff",n=["#000","#fff"];return te.a.mostReadable(t,n,{includeFallbackColors:!0}).setAlpha(.5).toRgbString()})),r=50,i=function(){for(var e=at,t=at*c.value,n="",o=0;o<=Math.floor(t/r);o++)n+="M0 ".concat(o*r," L").concat(e," ").concat(o*r," ");for(var l=0;l<=Math.floor(e/r);l++)n+="M".concat(l*r," 0 L").concat(l*r," ").concat(t," ");return n};return{canvasScale:t,gridColor:a,width:at,height:at*c.value,path:i()}}});n("ffb8");const Ci=eo()(xi,[["render",gi],["__scopeId","data-v-9b94cc34"]]);var ki=Ci,Ei=function(e){var t=Object(j["computed"])((function(){if(!e.value)return{backgroundColor:"#fff"};var t=e.value,n=t.type,o=t.color,c=t.image,l=t.imageSize,a=t.gradientColor,r=t.gradientRotate,i=t.gradientType;if("solid"===n)return{backgroundColor:o};if("image"===n)return c?"repeat"===l?{backgroundImage:"url(".concat(c),backgroundRepeat:"repeat",backgroundSize:"contain"}:{backgroundImage:"url(".concat(c),backgroundRepeat:"no-repeat",backgroundSize:l||"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}},wi=Object(j["defineComponent"])({name:"viewport-background",components:{GridLines:ki},setup:function(){var e=Object(y["c"])(ue()),t=e.showGridLines,n=Object(y["c"])(ae()),o=n.currentSlide,c=Object(j["computed"])((function(){var e;return null===(e=o.value)||void 0===e?void 0:e.background})),l=Ei(c),a=l.backgroundStyle;return{showGridLines:t,backgroundStyle:a}}});n("06b6");const Ni=eo()(wi,[["render",hi],["__scopeId","data-v-4d0018d8"]]);var Vi=Ni;function Ii(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"alignment-line",style:Object(j["normalizeStyle"])({left:e.left,top:e.top})},[Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["line",e.type]),style:Object(j["normalizeStyle"])(e.sizeStyle)},null,6)],4)}var Si=Object(j["defineComponent"])({name:"alignment-line",props:{type:{type:String,required:!0},axis:{type:Object,required:!0},length:{type:Number,required:!0},canvasScale:{type:Number,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){return e.axis.x*e.canvasScale+"px"})),n=Object(j["computed"])((function(){return e.axis.y*e.canvasScale+"px"})),o=Object(j["computed"])((function(){return"vertical"===e.type?{height:e.length*e.canvasScale+"px"}:{width:e.length*e.canvasScale+"px"}}));return{left:t,top:n,sizeStyle:o}}});n("19f0");const Bi=eo()(Si,[["render",Ii],["__scopeId","data-v-7017c6bc"]]);var Li=Bi,Ti={class:"ruler"};function _i(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Ti,[Object(j["createElementVNode"])("div",{class:"h",style:Object(j["normalizeStyle"])({width:e.viewportStyles.width*e.canvasScale+"px",left:e.viewportStyles.left+"px"})},[(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(10,(function(t){return Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["ruler-marker-100",{hide:e.markerSize<36,omit:e.markerSize<72}]),key:"marker-100-".concat(t)},[Object(j["createElementVNode"])("span",null,Object(j["toDisplayString"])(100*t),1)],2)})),64))],4),Object(j["createElementVNode"])("div",{class:"v",style:Object(j["normalizeStyle"])({height:e.viewportStyles.height*e.canvasScale+"px",top:e.viewportStyles.top+"px"})},[(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(10,(function(t){return Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["ruler-marker-100",{hide:e.markerSize<36,omit:e.markerSize<72}]),key:t,style:Object(j["normalizeStyle"])({height:e.markerSize+"px"})},[Object(j["createElementVNode"])("span",null,Object(j["toDisplayString"])(100*t),1)],6)})),64))],4)])}var Mi=Object(j["defineComponent"])({props:{viewportStyles:{type:Object,required:!0}},setup:function(e){var t=Object(y["c"])(ue()),n=t.canvasScale,o=Object(j["computed"])((function(){return e.viewportStyles.width*n.value/10}));return{canvasScale:n,markerSize:o}}});n("30b8");const Di=eo()(Mi,[["render",_i],["__scopeId","data-v-6cc1801a"]]);var zi=Di,Ai=["width","height"],Fi=["d"];function Ri(e,t,n,o,c,l){var a,r;return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"element-create-selection",ref:"selectionRef",onMousedown:t[0]||(t[0]=Object(j["withModifiers"])((function(t){return e.createSelection(t)}),["stop"])),onContextmenu:t[1]||(t[1]=Object(j["withModifiers"])((function(){}),["stop","prevent"]))},[e.start&&e.end?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{key:0,class:Object(j["normalizeClass"])(["selection",null===(a=e.creatingElement)||void 0===a?void 0:a.type]),style:Object(j["normalizeStyle"])(e.position)},["line"===(null===(r=e.creatingElement)||void 0===r?void 0:r.type)&&e.lineData?(Object(j["openBlock"])(),Object(j["createElementBlock"])("svg",{key:0,overflow:"visible",width:e.lineData.svgWidth,height:e.lineData.svgHeight},[Object(j["createElementVNode"])("path",{d:e.lineData.path,stroke:"#d14424",fill:"none","stroke-width":"2"},null,8,Fi)],8,Ai)):Object(j["createCommentVNode"])("",!0)],6)):Object(j["createCommentVNode"])("",!0)],544)}var Pi=Object(j["defineComponent"])({name:"element-create-selection",emits:["created"],setup:function(e,t){var n=t.emit,o=ue(),c=Object(y["c"])(o),l=c.creatingElement,a=Object(y["c"])(ke()),r=a.ctrlOrShiftKeyActive,i=Object(j["ref"])(),u=Object(j["ref"])(),d=Object(j["ref"])(),s=Object(j["ref"])({x:0,y:0});Object(j["onMounted"])((function(){if(d.value){var e=d.value.getBoundingClientRect(),t=e.x,n=e.y;s.value={x:t,y:n}}}));var f=function(e){var t=!0,c=e.pageX,a=e.pageY;i.value=[c,a],document.onmousemove=function(e){if(l.value&&t){var n=e.pageX,o=e.pageY;if(r.value){var i=n-c,d=o-a,s=Math.abs(i),f=Math.abs(d);if("shape"===l.value.type){var b=d>0&&i<0||d<0&&i>0;s>f?o=b?a-i:a+i:n=b?c-d:c+d}else"line"===l.value.type&&(s>f?o=a:n=c)}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,b=30;if("line"===(null===(r=l.value)||void 0===r?void 0:r.type)&&(Math.abs(s-c)>=b||Math.abs(f-a)>=b))n("created",{start:i.value,end:u.value});else if("line"!==(null===(d=l.value)||void 0===d?void 0:d.type)&&Math.abs(s-c)>=b&&Math.abs(f-a)>=b)n("created",{start:i.value,end:u.value});else{var m=200,p=Math.min(s,c),v=Math.min(f,a),O=Math.max(s,c),h=Math.max(f,a),j=O-p>=b?O-p:m,y=h-v>=b?h-v:m;n("created",{start:[p,v],end:[p+j,v+y]})}}else setTimeout((function(){return o.setCreatingElement(null)}),0)}},b=Object(j["computed"])((function(){if(!i.value||!u.value)return null;if(!l.value||"line"!==l.value.type)return null;var e=Object(ve["a"])(i.value,2),t=e[0],n=e[1],o=Object(ve["a"])(u.value,2),c=o[0],a=o[1],r=Math.min(t,c),d=Math.max(t,c),s=Math.min(n,a),f=Math.max(n,a),b=d-r>=24?d-r:24,m=f-s>=24?f-s:24,p=t===r?0:d-r,v=n===s?0:f-s,O=c===r?0:d-r,h=a===s?0:f-s,j="M".concat(p,", ").concat(v," L").concat(O,", ").concat(h);return{svgWidth:b,svgHeight:m,startX:p,startY:v,endX:O,endY:h,path:j}})),m=Object(j["computed"])((function(){if(!i.value||!u.value)return{};var e=Object(ve["a"])(i.value,2),t=e[0],n=e[1],o=Object(ve["a"])(u.value,2),c=o[0],l=o[1],a=Math.min(t,c),r=Math.max(t,c),d=Math.min(n,l),f=Math.max(n,l),b=r-a,m=f-d;return{left:a-s.value.x+"px",top:d-s.value.y+"px",width:b+"px",height:m+"px"}}));return{selectionRef:d,start:i,end:u,creatingElement:l,createSelection:f,lineData:b,position:m}}});n("80f7");const Hi=eo()(Pi,[["render",Ri],["__scopeId","data-v-15b60d90"]]);var qi=Hi;function Ui(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("BorderLine"),r=Object(j["resolveComponent"])("ResizeHandler");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"multi-select-operate",style:Object(j["normalizeStyle"])({left:e.range.minX*e.canvasScale+"px",top:e.range.minY*e.canvasScale+"px"})},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:e.type,type:e.type,style:Object(j["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.disableResize?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],{key:0},Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:t.direction,type:t.direction,style:Object(j["normalizeStyle"])(t.style),onMousedown:Object(j["withModifiers"])((function(n){return e.scaleMultiElement(n,e.range,t.direction)}),["stop"])},null,8,["type","style","onMousedown"])})),128))],4)}var Wi=function(e,t){var n=Object(j["computed"])((function(){return[{direction:N.LEFT_TOP,style:{}},{direction:N.TOP,style:{left:e.value/2+"px"}},{direction:N.RIGHT_TOP,style:{left:e.value+"px"}},{direction:N.LEFT,style:{top:t.value/2+"px"}},{direction:N.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}},{direction:N.LEFT_BOTTOM,style:{top:t.value+"px"}},{direction:N.BOTTOM,style:{left:e.value/2+"px",top:t.value+"px"}},{direction:N.RIGHT_BOTTOM,style:{left:e.value+"px",top:t.value+"px"}}]})),o=Object(j["computed"])((function(){return[{direction:N.LEFT,style:{top:t.value/2+"px"}},{direction:N.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}}]})),c=Object(j["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:c}};function Gi(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["resize-handler",e.rotateClassName,e.type])},null,2)}var Xi=Object(j["defineComponent"])({name:"resize-handler",props:{type:{type:String,default:""},rotate:{type:Number,default:0}},setup:function(e){var t=Object(j["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("7f52");const Yi=eo()(Xi,[["render",Gi],["__scopeId","data-v-c9559332"]]);var Zi=Yi;function Ji(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["border-line",e.type,{wide:e.isWide}])},null,2)}var Ki=Object(j["defineComponent"])({name:"border-line",props:{type:{type:String,required:!0},isWide:{type:Boolean,default:!1}}});n("9d5f");const Qi=eo()(Ki,[["render",Ji],["__scopeId","data-v-1430bedc"]]);var $i=Qi,eu=Object(j["defineComponent"])({name:"multi-select-operate",components:{ResizeHandler:Zi,BorderLine:$i},props:{elementList:{type:Array,required:!0},scaleMultiElement:{type:Function,required:!0}},setup:function(e){var t=Object(y["c"])(ue()),n=t.activeElementIdList,o=t.canvasScale,c=Object(j["computed"])((function(){return e.elementList.filter((function(e){return n.value.includes(e.id)}))})),l=Object(j["ref"])({minX:0,maxX:0,minY:0,maxY:0}),a=Object(j["computed"])((function(){return(l.value.maxX-l.value.minX)*o.value})),r=Object(j["computed"])((function(){return(l.value.maxY-l.value.minY)*o.value})),i=Wi(a,r),u=i.resizeHandlers,d=i.borderLines,s=function(){var e=Ke(c.value),t=e.minX,n=e.maxX,o=e.minY,a=e.maxY;l.value={minX:t,maxX:n,minY:o,maxY:a}};Object(j["watchEffect"])(s);var f=Object(j["computed"])((function(){return c.value.some((function(e){return!!("image"!==e.type&&"shape"!==e.type||e.rotate)}))}));return{range:l,canvasScale:o,borderLines:d,disableResize:f,resizeHandlers:u}}});n("008f");const tu=eo()(eu,[["render",Ui],["__scopeId","data-v-55c8df22"]]);var nu=tu,ou={key:1,class:"animation-index"};function cu(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("LinkHandler");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["operate",{"multi-select":e.isMultiSelect&&!e.isActive}]),style:Object(j["normalizeStyle"])({top:e.elementInfo.top*e.canvasScale+"px",left:e.elementInfo.left*e.canvasScale+"px",transform:"rotate(".concat(e.rotate,"deg)"),transformOrigin:"".concat(e.elementInfo.width*e.canvasScale/2,"px ").concat(e.height*e.canvasScale/2,"px")})},[e.isSelected?(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["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(j["createCommentVNode"])("",!0),"elAnimation"===e.toolbarState&&e.elementIndexListInAnimation.length?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",ou,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.elementIndexListInAnimation,(function(e){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"index-item",key:e},Object(j["toDisplayString"])(e+1),1)})),128))])):Object(j["createCommentVNode"])("",!0),e.isActive&&e.elementInfo.link?(Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:2,elementInfo:e.elementInfo,link:e.elementInfo.link,openLinkDialog:e.openLinkDialog,onMousedown:t[0]||(t[0]=Object(j["withModifiers"])((function(){}),["stop"]))},null,8,["elementInfo","link","openLinkDialog"])):Object(j["createCommentVNode"])("",!0)],6)}function lu(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("BorderLine"),r=Object(j["resolveComponent"])("ResizeHandler"),i=Object(j["resolveComponent"])("RotateHandler");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["image-element-operate",{cliping:e.isCliping}])},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{class:"operate-border-line",key:e.type,type:e.type,style:Object(j["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(j["normalizeStyle"])(t.style),onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(j["createVNode"])(i,{class:"operate-rotate-handler",style:Object(j["normalizeStyle"])({left:e.scaleWidth/2+"px"}),onMousedown:t[0]||(t[0]=Object(j["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64)):Object(j["createCommentVNode"])("",!0)],2)}var au={class:"rotate-handler"};function ru(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",au)}var iu={name:"rotate-handler"};n("8754");const uu=eo()(iu,[["render",ru],["__scopeId","data-v-9a549510"]]);var du=uu,su=Object(j["defineComponent"])({name:"image-element-operate",inheritAttrs:!1,components:{RotateHandler:du,ResizeHandler:Zi,BorderLine:$i},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(y["c"])(ue()),n=t.canvasScale,o=t.clipingImageElementId,c=Object(j["computed"])((function(){return o.value===e.elementInfo.id})),l=Object(j["computed"])((function(){return e.elementInfo.width*n.value})),a=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),r=Wi(l,a),i=r.resizeHandlers,u=r.borderLines;return{isCliping:c,scaleWidth:l,resizeHandlers:i,borderLines:u}}});n("5efd");const fu=eo()(su,[["render",lu],["__scopeId","data-v-db6d5ba6"]]);var bu=fu,mu={class:"text-element-operate"};function pu(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("BorderLine"),r=Object(j["resolveComponent"])("ResizeHandler"),i=Object(j["resolveComponent"])("RotateHandler");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",mu,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{class:"operate-border-line",key:e.type,type:e.type,style:Object(j["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.textElementResizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(j["normalizeStyle"])(t.style),onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(j["createVNode"])(i,{class:"operate-rotate-handler",style:Object(j["normalizeStyle"])({left:e.scaleWidth/2+"px"}),onMousedown:t[0]||(t[0]=Object(j["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64)):Object(j["createCommentVNode"])("",!0)])}var vu=Object(j["defineComponent"])({name:"text-element-operate",inheritAttrs:!1,components:{RotateHandler:du,ResizeHandler:Zi,BorderLine:$i},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(y["c"])(ue()),n=t.canvasScale,o=Object(j["computed"])((function(){return e.elementInfo.width*n.value})),c=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),l=Wi(o,c),a=l.textElementResizeHandlers,r=l.borderLines;return{scaleWidth:o,textElementResizeHandlers:a,borderLines:r}}});const Ou=eo()(vu,[["render",pu]]);var hu=Ou,ju={class:"shape-element-operate"};function yu(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("BorderLine"),r=Object(j["resolveComponent"])("ResizeHandler"),i=Object(j["resolveComponent"])("RotateHandler");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",ju,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{class:"operate-border-line",key:e.type,type:e.type,style:Object(j["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(j["normalizeStyle"])(t.style),onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(j["createVNode"])(i,{class:"operate-rotate-handler",style:Object(j["normalizeStyle"])({left:e.scaleWidth/2+"px"}),onMousedown:t[0]||(t[0]=Object(j["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64)):Object(j["createCommentVNode"])("",!0)])}var gu=Object(j["defineComponent"])({name:"shape-element-operate",inheritAttrs:!1,components:{RotateHandler:du,ResizeHandler:Zi,BorderLine:$i},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(y["c"])(ue()),n=t.canvasScale,o=Object(j["computed"])((function(){return e.elementInfo.width*n.value})),c=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),l=Wi(o,c),a=l.resizeHandlers,r=l.borderLines;return{scaleWidth:o,resizeHandlers:a,borderLines:r}}});const xu=eo()(gu,[["render",yu]]);var Cu=xu,ku={class:"line-element-operate"},Eu=["width","height","stroke"],wu={key:0},Nu=["x1","y1","x2","y2"],Vu=["x1","y1","x2","y2"],Iu=["x1","y1","x2","y2"],Su=["x1","y1","x2","y2"];function Bu(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ResizeHandler");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",ku,[e.handlerVisible?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{class:"operate-resize-handler",key:t.handler,style:Object(j["normalizeStyle"])(t.style),onMousedown:Object(j["withModifiers"])((function(n){return e.dragLineElement(n,e.elementInfo,t.handler)}),["stop"])},null,8,["style","onMousedown"])})),128)),(Object(j["openBlock"])(),Object(j["createElementBlock"])("svg",{width:e.svgWidth||1,height:e.svgHeight||1,stroke:e.elementInfo.color,overflow:"visible",style:Object(j["normalizeStyle"])({transform:"scale(".concat(e.canvasScale,")")})},[e.elementInfo.curve?(Object(j["openBlock"])(),Object(j["createElementBlock"])("g",wu,[Object(j["createElementVNode"])("line",{class:"anchor-line",x1:e.elementInfo.start[0],y1:e.elementInfo.start[1],x2:e.elementInfo.curve[0],y2:e.elementInfo.curve[1]},null,8,Nu),Object(j["createElementVNode"])("line",{class:"anchor-line",x1:e.elementInfo.end[0],y1:e.elementInfo.end[1],x2:e.elementInfo.curve[0],y2:e.elementInfo.curve[1]},null,8,Vu)])):Object(j["createCommentVNode"])("",!0),e.elementInfo.cubic?(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],{key:1},Object(j["renderList"])(e.elementInfo.cubic,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])("g",{key:n},[0===n?(Object(j["openBlock"])(),Object(j["createElementBlock"])("line",{key:0,class:"anchor-line",x1:e.elementInfo.start[0],y1:e.elementInfo.start[1],x2:t[0],y2:t[1]},null,8,Iu)):Object(j["createCommentVNode"])("",!0),1===n?(Object(j["openBlock"])(),Object(j["createElementBlock"])("line",{key:1,class:"anchor-line",x1:e.elementInfo.end[0],y1:e.elementInfo.end[1],x2:t[0],y2:t[1]},null,8,Su)):Object(j["createCommentVNode"])("",!0)])})),128)):Object(j["createCommentVNode"])("",!0)],12,Eu))],64)):Object(j["createCommentVNode"])("",!0)])}var Lu=Object(j["defineComponent"])({name:"line-element-operate",inheritAttrs:!1,components:{ResizeHandler:Zi},props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},dragLineElement:{type:Function,required:!0}},setup:function(e){var t=Object(y["c"])(ue()),n=t.canvasScale,o=Object(j["computed"])((function(){return Math.max(e.elementInfo.start[0],e.elementInfo.end[0])})),c=Object(j["computed"])((function(){return Math.max(e.elementInfo.start[1],e.elementInfo.end[1])})),l=Object(j["computed"])((function(){var t=[{handler:V.START,style:{left:e.elementInfo.start[0]*n.value+"px",top:e.elementInfo.start[1]*n.value+"px"}},{handler:V.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:V.C,style:{left:o[0]*n.value+"px",top:o[1]*n.value+"px"}})}else if(e.elementInfo.cubic){var c=Object(ve["a"])(e.elementInfo.cubic,2),l=c[0],a=c[1];t.push({handler:V.C1,style:{left:l[0]*n.value+"px",top:l[1]*n.value+"px"}}),t.push({handler:V.C2,style:{left:a[0]*n.value+"px",top:a[1]*n.value+"px"}})}return t}));return{svgWidth:o,svgHeight:c,canvasScale:n,resizeHandlers:l}}});n("8010");const Tu=eo()(Lu,[["render",Bu],["__scopeId","data-v-60f9f1f7"]]);var _u=Tu,Mu={class:"table-element-operate"};function Du(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("BorderLine"),r=Object(j["resolveComponent"])("ResizeHandler"),i=Object(j["resolveComponent"])("RotateHandler");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Mu,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{class:"operate-border-line",key:e.type,type:e.type,style:Object(j["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.textElementResizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(j["normalizeStyle"])(t.style),onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(j["createVNode"])(i,{class:"operate-rotate-handler",style:Object(j["normalizeStyle"])({left:e.scaleWidth/2+"px"}),onMousedown:t[0]||(t[0]=Object(j["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64)):Object(j["createCommentVNode"])("",!0)])}var zu=Object(j["defineComponent"])({name:"table-element-operate",inheritAttrs:!1,components:{RotateHandler:du,ResizeHandler:Zi,BorderLine:$i},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(y["c"])(ue()),n=t.canvasScale,o=Object(j["computed"])((function(){return e.elementInfo.outline.width||1})),c=Object(j["computed"])((function(){return(e.elementInfo.width+o.value)*n.value})),l=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),a=Wi(c,l),r=a.textElementResizeHandlers,i=a.borderLines;return{scaleWidth:c,textElementResizeHandlers:r,borderLines:i}}});const Au=eo()(zu,[["render",Du]]);var Fu=Au,Ru={class:"common-element-operate"};function Pu(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("BorderLine"),r=Object(j["resolveComponent"])("ResizeHandler"),i=Object(j["resolveComponent"])("RotateHandler");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Ru,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{class:"operate-border-line",key:e.type,type:e.type,style:Object(j["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(j["normalizeStyle"])(t.style),onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),e.cannotRotate?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:0,class:"operate-rotate-handler",style:Object(j["normalizeStyle"])({left:e.scaleWidth/2+"px"}),onMousedown:t[0]||(t[0]=Object(j["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"]))],64)):Object(j["createCommentVNode"])("",!0)])}var Hu=Object(j["defineComponent"])({name:"common-element-operate",inheritAttrs:!1,components:{RotateHandler:du,ResizeHandler:Zi,BorderLine:$i},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(y["c"])(ue()),n=t.canvasScale,o=Object(j["computed"])((function(){return e.elementInfo.width*n.value})),c=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),l=Wi(o,c),a=l.resizeHandlers,r=l.borderLines,i=Object(j["computed"])((function(){return["video","audio"].includes(e.elementInfo.type)}));return{scaleWidth:o,resizeHandlers:a,borderLines:r,cannotRotate:i}}});const qu=eo()(Hu,[["render",Pu]]);var Uu=qu,Wu=["href"],Gu={key:1,class:"link"},Xu={class:"btns"};function Yu(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("Divider");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"link-handler",style:Object(j["normalizeStyle"])({top:e.height*e.canvasScale+10+"px"})},["web"===e.link.type?(Object(j["openBlock"])(),Object(j["createElementBlock"])("a",{key:0,class:"link",href:e.link.target,target:"_blank"},Object(j["toDisplayString"])(e.link.target),9,Wu)):(Object(j["openBlock"])(),Object(j["createElementBlock"])("a",Gu,"幻灯片页面 "+Object(j["toDisplayString"])(e.link.target),1)),Object(j["createElementVNode"])("div",Xu,[Object(j["createElementVNode"])("div",{class:"btn",onClick:t[0]||(t[0]=function(t){return e.openLinkDialog()})},"更换"),Object(j["createVNode"])(a,{type:"vertical"}),Object(j["createElementVNode"])("div",{class:"btn",onClick:t[1]||(t[1]=function(t){return e.removeLink(e.elementInfo)})},"移除")])],4)}var Zu=function(){var e=ae(),t=dt(),n=t.addHistorySnapshot,o=function(t,o){var c=/^(https?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-.,@?^=%&:\/~+#]*[\w\-@?^=%&\/~+#])?$/;if("web"===o.type&&!c.test(o.target))return De["a"].error("不是正确的网页链接地址"),!1;var l={link:o};return e.updateElement({id:t.id,props:l}),n(),!0},c=function(t){e.removeElementProps({id:t.id,propName:"link"}),n()};return{setLink:o,removeLink:c}},Ju=Object(j["defineComponent"])({name:"link-handler",props:{elementInfo:{type:Object,required:!0},link:{type:Object,required:!0},openLinkDialog:{type:Function,required:!0}},setup:function(e){var t=Object(y["c"])(ue()),n=t.canvasScale,o=Zu(),c=o.removeLink,l=Object(j["computed"])((function(){return"line"===e.elementInfo.type?0:e.elementInfo.height}));return{canvasScale:n,height:l,removeLink:c}}});n("c15d");const Ku=eo()(Ju,[["render",Yu],["__scopeId","data-v-2b77dbb0"]]);var Qu=Ku,$u=Object(j["defineComponent"])({name:"operate",components:{LinkHandler:Qu},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(y["c"])(ue()),n=t.canvasScale,o=t.toolbarState,c=Object(y["c"])(ae()),l=c.formatedAnimations,a=Object(j["computed"])((function(){var t,n=(t={},Object(pe["a"])(t,Te.IMAGE,bu),Object(pe["a"])(t,Te.TEXT,hu),Object(pe["a"])(t,Te.SHAPE,Cu),Object(pe["a"])(t,Te.LINE,_u),Object(pe["a"])(t,Te.TABLE,Fu),Object(pe["a"])(t,Te.CHART,Uu),Object(pe["a"])(t,Te.LATEX,Uu),Object(pe["a"])(t,Te.VIDEO,Uu),Object(pe["a"])(t,Te.AUDIO,Uu),t);return n[e.elementInfo.type]||null})),r=Object(j["computed"])((function(){for(var t=[],n=0;n0?le("-"):e.deltaY<0&&le("+"):e.deltaY>0?re(I.DOWN):e.deltaY<0&&re(I.UP)},de=function(){e.setGridLinesState(!a.value)},se=function(){e.setRulerState(!r.value)},fe=wo(p),be=fe.insertElementFromCreateSelection,me=function(){return[{text:"粘贴",subText:"Ctrl + V",handler:Z},{text:"全选",subText:"Ctrl + A",handler:W},{text:"网格线",subText:a.value?"√":"",handler:de},{text:"标尺",subText:r.value?"√":"",handler:se},{text:"重置当前页",handler:X},{divider:!0},{text:"幻灯片放映",subText:"F5",handler:K}]};return Object(j["provide"])(uo,u),{elementList:g,activeElementIdList:n,handleElementId:c,activeGroupElementId:o,canvasRef:C,viewportRef:p,viewportStyles:w,canvasScale:u,mouseSelection:V,mouseSelectionVisible:S,mouseSelectionQuadrant:B,creatingElement:i,alignmentLines:v,linkDialogVisible:O,spaceKeyState:m,showRuler:r,openLinkDialog:h,handleClickBlankArea:ee,removeEditorAreaFocus:te,insertElementFromCreateSelection:be,selectElement:A,rotateElement:q,scaleElement:R,dragLineElement:D,scaleMultiElement:P,handleMousewheelCanvas:ie,contextmenus:me}}});n("92637");const Is=eo()(Vs,[["render",io],["__scopeId","data-v-743d966c"]]);var Ss=Is,Bs={class:"canvas-tool"},Ls={class:"left-handler"},Ts={class:"add-element-handler"},_s={class:"right-handler"},Ms={class:"viewport-size-preset"},Ds=["onClick"],zs={class:"text"};function As(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconBack"),r=Object(j["resolveComponent"])("Tooltip"),i=Object(j["resolveComponent"])("IconNext"),u=Object(j["resolveComponent"])("IconFontSize"),d=Object(j["resolveComponent"])("IconPicture"),s=Object(j["resolveComponent"])("FileInput"),f=Object(j["resolveComponent"])("ShapePool"),b=Object(j["resolveComponent"])("IconGraphicDesign"),m=Object(j["resolveComponent"])("Popover"),p=Object(j["resolveComponent"])("LinePool"),v=Object(j["resolveComponent"])("IconConnection"),O=Object(j["resolveComponent"])("ChartPool"),h=Object(j["resolveComponent"])("IconChartProportion"),y=Object(j["resolveComponent"])("TableGenerator"),g=Object(j["resolveComponent"])("IconInsertTable"),x=Object(j["resolveComponent"])("IconFormula"),C=Object(j["resolveComponent"])("MediaInput"),k=Object(j["resolveComponent"])("IconVideoTwo"),E=Object(j["resolveComponent"])("IconMinus"),w=Object(j["resolveComponent"])("IconPlus"),N=Object(j["resolveComponent"])("IconFullScreen"),V=Object(j["resolveComponent"])("LaTeXEditor"),I=Object(j["resolveComponent"])("Modal");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Bs,[Object(j["createElementVNode"])("div",Ls,[Object(j["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"撤销"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{class:Object(j["normalizeClass"])(["handler-item",{disable:!e.canUndo}]),onClick:t[0]||(t[0]=function(t){return e.undo()})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"重做"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{class:Object(j["normalizeClass"])(["handler-item",{disable:!e.canRedo}]),onClick:t[1]||(t[1]=function(t){return e.redo()})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"])]),Object(j["createElementVNode"])("div",Ts,[Object(j["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入文字"},{default:Object(j["withCtx"])((function(){var n;return[Object(j["createVNode"])(u,{class:Object(j["normalizeClass"])(["handler-item",{active:"text"===(null===(n=e.creatingElement)||void 0===n?void 0:n.type)}]),onClick:t[2]||(t[2]=function(t){return e.drawText()})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(s,{onChange:t[3]||(t[3]=function(t){return e.insertImageElement(t)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入图片"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(m,{trigger:"click",visible:e.shapePoolVisible,"onUpdate:visible":t[5]||(t[5]=function(t){return e.shapePoolVisible=t})},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f,{onSelect:t[4]||(t[4]=function(t){return e.drawShape(t)})})]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入形状"},{default:Object(j["withCtx"])((function(){var t;return[Object(j["createVNode"])(b,{class:Object(j["normalizeClass"])(["handler-item",{active:"shape"===(null===(t=e.creatingElement)||void 0===t?void 0:t.type)}])},null,8,["class"])]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(j["createVNode"])(m,{trigger:"click",visible:e.linePoolVisible,"onUpdate:visible":t[7]||(t[7]=function(t){return e.linePoolVisible=t})},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(p,{onSelect:t[6]||(t[6]=function(t){return e.drawLine(t)})})]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入线条"},{default:Object(j["withCtx"])((function(){var t;return[Object(j["createVNode"])(v,{class:Object(j["normalizeClass"])(["handler-item",{active:"line"===(null===(t=e.creatingElement)||void 0===t?void 0:t.type)}])},null,8,["class"])]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(j["createVNode"])(m,{trigger:"click",visible:e.chartPoolVisible,"onUpdate:visible":t[9]||(t[9]=function(t){return e.chartPoolVisible=t})},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(O,{onSelect:t[8]||(t[8]=function(t){e.createChartElement(t),e.chartPoolVisible=!1})})]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入图表"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(h,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(j["createVNode"])(m,{trigger:"click",visible:e.tableGeneratorVisible,"onUpdate:visible":t[12]||(t[12]=function(t){return e.tableGeneratorVisible=t})},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(y,{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(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入表格"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(g,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(j["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入公式"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(x,{class:"handler-item",onClick:t[13]||(t[13]=function(t){return e.latexEditorVisible=!0})})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(m,{trigger:"click",visible:e.mediaInputVisible,"onUpdate:visible":t[17]||(t[17]=function(t){return e.mediaInputVisible=t})},{content:Object(j["withCtx"])((function(){return[Object(j["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(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入音视频"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(k,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"])]),Object(j["createElementVNode"])("div",_s,[Object(j["createVNode"])(E,{class:"handler-item viewport-size",onClick:t[18]||(t[18]=function(t){return e.scaleCanvas("-")})}),Object(j["createVNode"])(m,{trigger:"click",visible:e.canvasScaleVisible,"onUpdate:visible":t[19]||(t[19]=function(t){return e.canvasScaleVisible=t})},{content:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",Ms,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.canvasScalePresetList,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"preset-item",key:t,onClick:function(n){return e.applyCanvasPresetScale(t)}},Object(j["toDisplayString"])(t)+"%",9,Ds)})),128))])]})),default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("span",zs,Object(j["toDisplayString"])(e.canvasScalePercentage),1)]})),_:1},8,["visible"]),Object(j["createVNode"])(w,{class:"handler-item viewport-size",onClick:t[20]||(t[20]=function(t){return e.scaleCanvas("+")})}),Object(j["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"适应屏幕"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(N,{class:"handler-item viewport-size-adaptation",onClick:t[21]||(t[21]=function(t){return e.resetCanvas()})})]})),_:1},8,["mouseEnterDelay"])]),Object(j["createVNode"])(I,{visible:e.latexEditorVisible,"onUpdate:visible":t[24]||(t[24]=function(t){return e.latexEditorVisible=t}),footer:null,centered:"",width:880,destroyOnClose:""},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(V,{onClose:t[22]||(t[22]=function(t){return e.latexEditorVisible=!1}),onUpdate:t[23]||(t[23]=function(t){e.createLatexElement(t),e.latexEditorVisible=!1})})]})),_:1},8,["visible"])])}var Fs={class:"shape-pool"},Rs={class:"category-name"},Ps={class:"shape-list"},Hs=["onClick"],qs={overflow:"visible",width:"18",height:"18"},Us=["transform"],Ws=["fill","stroke","d"];function Gs(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Fs,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.shapeList,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"category",key:t.type},[Object(j["createElementVNode"])("div",Rs,Object(j["toDisplayString"])(t.type),1),Object(j["createElementVNode"])("div",Ps,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(t.children,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"shape-item",key:n},[Object(j["createElementVNode"])("div",{class:"shape-content",onClick:function(n){return e.selectShape(t)}},[(Object(j["openBlock"])(),Object(j["createElementBlock"])("svg",qs,[Object(j["createElementVNode"])("g",{transform:"scale(".concat(18/t.viewBox[0],", ").concat(18/t.viewBox[1],") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(j["createElementVNode"])("path",{class:Object(j["normalizeClass"])(["shape-path",{outlined:t.outlined}]),"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:t.outlined?"#999":"transparent",stroke:t.outlined?"transparent":"#999","stroke-width":"2",d:t.path},null,10,Ws)],8,Us)]))],8,Hs)])})),128))])])})),128))])}var Xs=Object(j["defineComponent"])({name:"shape-pool",emits:["select"],setup:function(e,t){var n=t.emit,o=it,c=function(e){n("select",e)};return{shapeList:o,selectShape:c}}});n("38ba8");const Ys=eo()(Xs,[["render",Gs],["__scopeId","data-v-f3479f82"]]);var Zs=Ys,Js={class:"line-pool"},Ks={class:"category-name"},Qs={class:"line-list"},$s=["onClick"],ef={overflow:"visible",width:"20",height:"20"},tf=["d","stroke-dasharray","marker-start","marker-end"];function nf(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("LinePointMarker");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Js,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.lineList,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"category",key:t.type},[Object(j["createElementVNode"])("div",Ks,Object(j["toDisplayString"])(t.type),1),Object(j["createElementVNode"])("div",Qs,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(t.children,(function(t,o){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"line-item",key:o},[Object(j["createElementVNode"])("div",{class:"line-content",onClick:function(n){return e.selectLine(t)}},[(Object(j["openBlock"])(),Object(j["createElementBlock"])("svg",ef,[Object(j["createElementVNode"])("defs",null,[t.points[0]?(Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:0,class:"line-marker",id:"preset-line-".concat(n,"-").concat(o),position:"start",type:t.points[0],color:"currentColor",baseSize:2},null,8,["id","type"])):Object(j["createCommentVNode"])("",!0),t.points[1]?(Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:1,class:"line-marker",id:"preset-line-".concat(n,"-").concat(o),position:"end",type:t.points[1],color:"currentColor",baseSize:2},null,8,["id","type"])):Object(j["createCommentVNode"])("",!0)]),Object(j["createElementVNode"])("path",{class:"line-path",d:t.path,stroke:"currentColor",fill:"none","stroke-width":"2","stroke-dasharray":"solid"===t.style?"0, 0":"4, 1","marker-start":t.points[0]?"url(#".concat("preset-line-".concat(n,"-").concat(o),"-",t.points[0],"-start)"):"","marker-end":t.points[1]?"url(#".concat("preset-line-".concat(n,"-").concat(o),"-",t.points[1],"-end)"):""},null,8,tf)]))],8,$s)])})),128))])])})),128))])}var of=[{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},{path:"M 0 0 C 20 0 0 20 20 20",style:"solid",points:["","arrow"],isCubic:!0}]}],cf=Object(j["defineComponent"])({name:"line-pool",emits:["select"],components:{LinePointMarker:fa},setup:function(e,t){var n=t.emit,o=of,c=function(e){n("select",e)};return{lineList:o,selectLine:c}}});n("fc12");const lf=eo()(cf,[["render",nf],["__scopeId","data-v-7fa1d412"]]);var af=lf,rf={class:"chart-pool"},uf=["onClick"];function df(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconChartLine"),r=Object(j["resolveComponent"])("IconChartHistogram"),i=Object(j["resolveComponent"])("IconChartPie"),u=Object(j["resolveComponent"])("IconChartHistogramOne"),d=Object(j["resolveComponent"])("IconChartLineArea"),s=Object(j["resolveComponent"])("IconChartRing"),f=Object(j["resolveComponent"])("IconChartScatter");return Object(j["openBlock"])(),Object(j["createElementBlock"])("ul",rf,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.chartList,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])("li",{class:"chart-item",key:n},[Object(j["createElementVNode"])("div",{class:"chart-content",onClick:function(n){return e.selectChart(t)}},["line"===t?(Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:0,size:"24"})):"bar"===t?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:1,size:"24"})):"pie"===t?(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:2,size:"24"})):"horizontalBar"===t?(Object(j["openBlock"])(),Object(j["createBlock"])(u,{key:3,size:"24"})):"area"===t?(Object(j["openBlock"])(),Object(j["createBlock"])(d,{key:4,size:"24"})):"ring"===t?(Object(j["openBlock"])(),Object(j["createBlock"])(s,{key:5,size:"24"})):"scatter"===t?(Object(j["openBlock"])(),Object(j["createBlock"])(f,{key:6,size:"24"})):Object(j["createCommentVNode"])("",!0)],8,uf)])})),128))])}var sf=Object(j["defineComponent"])({name:"chart-pool",emits:["select"],setup:function(e,t){var n=t.emit,o=["bar","horizontalBar","line","area","scatter","pie","ring"],c=function(e){n("select",e)};return{chartList:o,selectChart:c}}});n("d4d8");const ff=eo()(sf,[["render",df],["__scopeId","data-v-64ca421e"]]);var bf=ff,mf=function(e){return Object(j["pushScopeId"])("data-v-e325ce98"),e=e(),Object(j["popScopeId"])(),e},pf={class:"table-generator"},vf={class:"title"},Of={class:"lef"},hf=["onMouseenter"],jf={key:1,class:"custom"},yf={class:"row"},gf=mf((function(){return Object(j["createElementVNode"])("div",{class:"label",style:{flex:"1"}},"行数:",-1)})),xf={class:"row"},Cf=mf((function(){return Object(j["createElementVNode"])("div",{class:"label",style:{flex:"1"}},"列数:",-1)})),kf={class:"btns"},Ef=Object(j["createTextVNode"])("取消"),wf=Object(j["createTextVNode"])("确认");function Nf(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("InputNumber"),r=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",pf,[Object(j["createElementVNode"])("div",vf,[Object(j["createElementVNode"])("div",Of,"表格 "+Object(j["toDisplayString"])(e.endCell.length?"".concat(e.endCell[0]," x ").concat(e.endCell[1]):""),1),Object(j["createElementVNode"])("div",{class:"right",onClick:t[0]||(t[0]=function(t){return e.isCustom=!e.isCustom})},Object(j["toDisplayString"])(e.isCustom?"返回":"自定义"),1)]),e.isCustom?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",jf,[Object(j["createElementVNode"])("div",yf,[gf,Object(j["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(j["createElementVNode"])("div",xf,[Cf,Object(j["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(j["createElementVNode"])("div",kf,[Object(j["createVNode"])(r,{class:"btn",onClick:t[5]||(t[5]=function(t){return e.close()})},{default:Object(j["withCtx"])((function(){return[Ef]})),_:1}),Object(j["createVNode"])(r,{class:"btn",type:"primary",onClick:t[6]||(t[6]=function(t){return e.insertCustomTable()})},{default:Object(j["withCtx"])((function(){return[wf]})),_:1})])])):(Object(j["openBlock"])(),Object(j["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(j["createElementVNode"])("tbody",null,[(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(10,(function(t){return Object(j["createElementVNode"])("tr",{key:t},[(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(10,(function(n){return Object(j["createElementVNode"])("td",{onMouseenter:function(o){return e.endCell=[t,n]},key:n},[Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["cell",{active:e.endCell.length&&t<=e.endCell[0]&&n<=e.endCell[1]}])},null,2)],40,hf)})),64))])})),64))])],32))])}var Vf=Object(j["defineComponent"])({name:"table-generator",emits:["insert","close"],setup:function(e,t){var n=t.emit,o=Object(j["ref"])([]),c=Object(j["ref"])(3),l=Object(j["ref"])(3),a=Object(j["ref"])(!1),r=function(){if(o.value.length){var e=Object(ve["a"])(o.value,2),t=e[0],c=e[1];n("insert",{row:t,col:c})}},i=function(){return c.value<1||c.value>20||l.value<1||l.value>20?De["a"].warning("行数/列数必须在0~20之间!"):(n("insert",{row:c.value,col:l.value}),void(a.value=!1))},u=function(){n("close"),a.value=!1};return{endCell:o,customRow:c,customCol:l,handleClickTable:r,insertCustomTable:i,isCustom:a,close:u}}});n("5a68c");const If=eo()(Vf,[["render",Nf],["__scopeId","data-v-e325ce98"]]);var Sf=If,Bf={class:"media-input"},Lf={class:"tabs"},Tf=["onClick"],_f={class:"btns"},Mf=Object(j["createTextVNode"])("取消"),Df=Object(j["createTextVNode"])("确认"),zf={class:"btns"},Af=Object(j["createTextVNode"])("取消"),Ff=Object(j["createTextVNode"])("确认");function Rf(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("Input"),r=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Bf,[Object(j["createElementVNode"])("div",Lf,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.tabs,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["tab",{active:e.type===t.key}]),key:t.key,onClick:function(n){return e.type=t.key}},Object(j["toDisplayString"])(t.label),11,Tf)})),128))]),"video"===e.type?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[Object(j["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(j["createElementVNode"])("div",_f,[Object(j["createVNode"])(r,{onClick:t[1]||(t[1]=function(t){return e.close()}),style:{"margin-right":"10px"}},{default:Object(j["withCtx"])((function(){return[Mf]})),_:1}),Object(j["createVNode"])(r,{type:"primary",onClick:t[2]||(t[2]=function(t){return e.insertVideo()})},{default:Object(j["withCtx"])((function(){return[Df]})),_:1})])],64)):Object(j["createCommentVNode"])("",!0),"audio"===e.type?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:1},[Object(j["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(j["createElementVNode"])("div",zf,[Object(j["createVNode"])(r,{onClick:t[4]||(t[4]=function(t){return e.close()}),style:{"margin-right":"10px"}},{default:Object(j["withCtx"])((function(){return[Af]})),_:1}),Object(j["createVNode"])(r,{type:"primary",onClick:t[5]||(t[5]=function(t){return e.insertAudio()})},{default:Object(j["withCtx"])((function(){return[Ff]})),_:1})])],64)):Object(j["createCommentVNode"])("",!0)])}var Pf=Object(j["defineComponent"])({name:"media-input",emits:["insertVideo","insertAudio","close"],setup:function(e,t){var n=t.emit,o=Object(j["ref"])("video"),c=Object(j["ref"])("https://mazwai.com/videvo_files/video/free/2019-01/small_watermarked/181004_04_Dolphins-Whale_06_preview.webm"),l=Object(j["ref"])("https://freesound.org/data/previews/614/614107_11861866-lq.mp3"),a=[{key:"video",label:"视频"},{key:"audio",label:"音频"}],r=function(){if(!c.value)return De["a"].error("请先输入正确的视频地址");n("insertVideo",c.value)},i=function(){if(!l.value)return De["a"].error("请先输入正确的音频地址");n("insertAudio",l.value)},u=function(){return n("close")};return{type:o,videoSrc:c,audioSrc:l,tabs:a,insertVideo:r,insertAudio:i,close:u}}});n("ff9e");const Hf=eo()(Pf,[["render",Rf],["__scopeId","data-v-310c58ae"]]);var qf=Hf,Uf={class:"latex-editor"},Wf={class:"container"},Gf={class:"left"},Xf={class:"input-area"},Yf={class:"preview"},Zf={key:0,class:"placeholder"},Jf={key:1,class:"preview-content"},Kf={class:"right"},Qf={class:"tabs"},$f=["onClick"],eb={class:"content"},tb={key:0,class:"symbol"},nb={class:"symbol-tabs"},ob=["onClick"],cb={class:"symbol-pool"},lb=["onClick"],ab={key:1,class:"formula"},rb={class:"formula-title"},ib=["onClick"],ub={class:"footer"},db=Object(j["createTextVNode"])("取消"),sb=Object(j["createTextVNode"])("确定");function fb(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("TextArea"),r=Object(j["resolveComponent"])("FormulaContent"),i=Object(j["resolveComponent"])("SymbolContent"),u=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Uf,[Object(j["createElementVNode"])("div",Wf,[Object(j["createElementVNode"])("div",Gf,[Object(j["createElementVNode"])("div",Xf,[Object(j["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(j["createElementVNode"])("div",Yf,[e.latex?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Jf,[Object(j["createVNode"])(r,{width:518,height:138,latex:e.latex},null,8,["latex"])])):(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Zf,"公式预览"))])]),Object(j["createElementVNode"])("div",Kf,[Object(j["createElementVNode"])("div",Qf,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.tabs,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["tab",{active:t.value===e.toolbarState}]),key:t.value,onClick:function(n){return e.toolbarState=t.value}},Object(j["toDisplayString"])(t.label),11,$f)})),128))]),Object(j["createElementVNode"])("div",eb,["symbol"===e.toolbarState?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",tb,[Object(j["createElementVNode"])("div",nb,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.symbolList,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["symbol-tab",{active:e.selectedSymbolKey===t.type}]),key:t.type,onClick:function(n){return e.selectedSymbolKey=t.type}},Object(j["toDisplayString"])(t.label),11,ob)})),128))]),Object(j["createElementVNode"])("div",cb,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.symbolPool,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"symbol-item",key:t.latex,onClick:function(n){return e.insertSymbol(t.latex)}},[Object(j["createVNode"])(i,{latex:t.latex},null,8,["latex"])],8,lb)})),128))])])):(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",ab,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.formulaList,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"formula-item",key:t.label},[Object(j["createElementVNode"])("div",rb,Object(j["toDisplayString"])(t.label),1),Object(j["createElementVNode"])("div",{class:"formula-item-content",onClick:function(n){return e.latex=t.latex}},[Object(j["createVNode"])(r,{width:236,height:60,latex:t.latex},null,8,["latex"])],8,ib)])})),128))]))])])]),Object(j["createElementVNode"])("div",ub,[Object(j["createVNode"])(u,{class:"btn",onClick:t[1]||(t[1]=function(t){return e.close()})},{default:Object(j["withCtx"])((function(){return[db]})),_:1}),Object(j["createVNode"])(u,{class:"btn",type:"primary",onClick:t[2]||(t[2]=function(t){return e.update()})},{default:Object(j["withCtx"])((function(){return[sb]})),_:1})])])}var bb=n("e5ca");bb["a"].SUB_SUP_SCALE=.5;var mb=[{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"}],pb=[{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"}]}],vb=["width","height"],Ob=["transform"],hb=["d"];function jb(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["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(j["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(j["createElementVNode"])("path",{d:e.pathd},null,8,hb)],8,Ob)],8,vb)}var yb=Object(j["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(j["ref"])({x:0,y:0,w:0,h:0}),n=Object(j["ref"])("");Object(j["watch"])((function(){return e.latex}),(function(){var o=new bb["b"](e.latex);n.value=o.pathd({}),t.value=o.box({})}),{immediate:!0});var o=Object(j["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}}});n("edc2");const gb=eo()(yb,[["render",jb],["__scopeId","data-v-cf0ca630"]]);var xb=gb,Cb=["innerHTML"];function kb(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"symbol-content",innerHTML:e.svg},null,8,Cb)}var Eb=Object(j["defineComponent"])({name:"symbol-content",props:{latex:{type:String,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){var t=new bb["b"](e.latex);return t.svg({SCALE_X:10,SCALE_Y:10})}));return{svg:t}}});const wb=eo()(Eb,[["render",kb]]);var Nb=wb,Vb=[{label:"常用符号",value:"symbol"},{label:"预置公式",value:"formula"}],Ib=Object(j["defineComponent"])({name:"latex-editor",emits:["update","close"],components:{FormulaContent:xb,SymbolContent:Nb},props:{value:{type:String,default:""}},setup:function(e,t){var n=t.emit,o=Object(j["ref"])(""),c=Object(j["ref"])("symbol"),l=Object(j["ref"])(),a=Object(j["ref"])(pb[0].type),r=Object(j["computed"])((function(){var e=pb.find((function(e){return e.type===a.value}));return(null===e||void 0===e?void 0:e.children)||[]}));Object(j["onMounted"])((function(){e.value&&(o.value=e.value)}));var i=function(){if(o.value){var e=new bb["b"](o.value),t=e.pathd({}),c=e.box({});n("update",{latex:o.value,path:t,w:c.w+32,h:c.h+32})}},u=function(){return n("close")},d=function(e){l.value&&(l.value.focus(),document.execCommand("insertText",!1,e))};return{tabs:Vb,latex:o,toolbarState:c,selectedSymbolKey:a,formulaList:mb,symbolList:pb,symbolPool:r,textAreaRef:l,update:i,close:u,insertSymbol:d}}});n("5f57");const Sb=eo()(Ib,[["render",fb],["__scopeId","data-v-0c89cf75"]]);var Bb=Sb,Lb=Object(j["defineComponent"])({name:"canvas-tool",components:{ShapePool:Zs,LinePool:af,ChartPool:bf,TableGenerator:Sf,MediaInput:qf,LaTeXEditor:Bb},setup:function(){var e=ue(),t=Object(y["c"])(e),n=t.creatingElement,o=Object(y["c"])(Ce()),c=o.canUndo,l=o.canRedo,a=dt(),r=a.redo,i=a.undo,u=wt(),d=u.scaleCanvas,s=u.setCanvasScalePercentage,f=u.resetCanvas,b=u.canvasScalePercentage,m=[200,150,100,80,50],p=Object(j["ref"])(!1),v=function(e){s(e),p.value=!1},O=st(),h=O.createImageElement,g=O.createChartElement,x=O.createTableElement,C=O.createLatexElement,k=O.createVideoElement,E=O.createAudioElement,w=function(e){var t=e[0];t&<(t).then((function(e){return h(e)}))},N=Object(j["ref"])(!1),V=Object(j["ref"])(!1),I=Object(j["ref"])(!1),S=Object(j["ref"])(!1),B=Object(j["ref"])(!1),L=Object(j["ref"])(!1),T=function(){e.setCreatingElement({type:"text"})},_=function(t){e.setCreatingElement({type:"shape",data:t}),N.value=!1},M=function(t){e.setCreatingElement({type:"line",data:t}),V.value=!1};return{scaleCanvas:d,resetCanvas:f,canvasScalePercentage:b,canvasScaleVisible:p,canvasScalePresetList:m,applyCanvasPresetScale:v,canUndo:c,canRedo:l,redo:r,undo:i,insertImageElement:w,shapePoolVisible:N,linePoolVisible:V,chartPoolVisible:I,tableGeneratorVisible:S,mediaInputVisible:B,latexEditorVisible:L,creatingElement:n,drawText:T,drawShape:_,drawLine:M,createChartElement:g,createTableElement:x,createLatexElement:C,createVideoElement:k,createAudioElement:E}}});n("fcf0");const Tb=eo()(Lb,[["render",As],["__scopeId","data-v-e9ddaac8"]]);var _b=Tb,Mb={class:"add-slide"},Db=Object(j["createTextVNode"])("添加幻灯片"),zb={class:"select-btn"},Ab=["onMousedown"];function Fb(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconPlus"),r=Object(j["resolveComponent"])("LayoutPool"),i=Object(j["resolveComponent"])("IconDown"),u=Object(j["resolveComponent"])("Popover"),d=Object(j["resolveComponent"])("ThumbnailSlide"),s=Object(j["resolveComponent"])("Draggable"),f=Object(j["resolveDirective"])("contextmenu"),b=Object(j["resolveDirective"])("click-outside");return Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"thumbnails",onMousedown:t[3]||(t[3]=function(){return e.setThumbnailsFocus(!0)})},[Object(j["createElementVNode"])("div",Mb,[Object(j["createElementVNode"])("div",{class:"btn",onClick:t[0]||(t[0]=function(t){return e.createSlide()})},[Object(j["createVNode"])(a,{class:"icon"}),Db]),Object(j["createVNode"])(u,{trigger:"click",placement:"bottomLeft",visible:e.presetLayoutPopoverVisible,"onUpdate:visible":t[2]||(t[2]=function(t){return e.presetLayoutPopoverVisible=t})},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{onSelect:t[1]||(t[1]=function(t){e.createSlideByTemplate(t),e.presetLayoutPopoverVisible=!1})})]})),default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",zb,[Object(j["createVNode"])(i)])]})),_:1},8,["visible"])]),Object(j["createVNode"])(s,{class:"thumbnail-list",modelValue:e.slides,animation:300,scroll:!0,scrollSensitivity:50,setData:null,onEnd:e.handleDragEnd,itemKey:"id"},{item:Object(j["withCtx"])((function(t){var n=t.element,o=t.index;return[Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["thumbnail-item",{active:e.slideIndex===o,selected:e.selectedSlidesIndex.includes(o)}]),onMousedown:function(t){return e.handleClickSlideThumbnail(t,o)}},[Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["label",{"offset-left":o>=99}])},Object(j["toDisplayString"])(e.fillDigit(o+1,2)),3),Object(j["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(j["onMounted"])(c),Object(j["onUnmounted"])((function(){n.value&&clearTimeout(n.value)})),{slidesLoadLimit:o}},Pb=n("b76a"),Hb=n.n(Pb),qb={class:"layout-pool"},Ub=["onClick"];function Wb(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ThumbnailSlide");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",qb,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.layouts,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"layout-item",key:t.id,onClick:function(n){return e.selectSlideTemplate(t)}},[Object(j["createVNode"])(a,{class:"thumbnail",slide:t,size:180},null,8,["slide"])],8,Ub)})),128))])}var Gb=Object(j["defineComponent"])({name:"layout-pool",emits:["select"],components:{ThumbnailSlide:ks},setup:function(e,t){var n=t.emit,o=Object(y["c"])(ae()),c=o.layouts,l=function(e){n("select",e)};return{layouts:c,selectSlideTemplate:l}}});n("e7b8");const Xb=eo()(Gb,[["render",Wb],["__scopeId","data-v-741b366e"]]);var Yb=Xb,Zb=Object(j["defineComponent"])({name:"thumbnails",components:{Draggable:Hb.a,ThumbnailSlide:ks,LayoutPool:Yb},setup:function(){var e=ue(),t=ae(),n=ke(),o=Object(y["c"])(e),c=o.selectedSlidesIndex,l=o.thumbnailsFocus,a=Object(y["c"])(t),r=a.slides,i=a.slideIndex,u=Object(y["c"])(n),d=u.ctrlKeyState,s=u.shiftKeyState,f=Rb(),b=f.slidesLoadLimit,m=Object(j["computed"])((function(){return[].concat(Object($["a"])(c.value),[i.value])})),p=Object(j["ref"])(!1),v=mt(),O=v.copySlide,h=v.pasteSlide,g=v.createSlide,x=v.createSlideByTemplate,C=v.copyAndPasteSlide,k=v.deleteSlide,E=v.cutSlide,w=v.selectAllSlide,N=function(n){e.setActiveElementIdList([]),i.value!==n&&t.updateSlideIndex(n)},V=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 c=m.value.filter((function(e){return e!==n}));e.updateSelectedSlidesIndex(c),N(m.value[0])}else if(m.value.includes(n)){var l=m.value.filter((function(e){return e!==n}));e.updateSelectedSlidesIndex(l)}else{var a=[].concat(Object($["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($["a"])(m.value)),u=n;n1&&void 0!==arguments[1]?arguments[1]:0,l=o.value,a=s(),r=a.originClipRange,i=a.originWidth,f=a.originHeight,b=a.originLeft,m=a.originTop;if(n){var p,v=f/i,O=0,h=100;if(v>n){var j=(1-n/v)/2*100;p=[[O,j],[h,h-j]]}else{var y=(1-v/n)/2*100;p=[[y,O],[h-y,h]]}t.updateElement({id:c.value,props:{clip:Object(L["a"])(Object(L["a"])({},l.clip),{},{shape:e,range:p}),left:b+i*(p[0][0]/100),top:m+f*(p[0][1]/100),width:i*(p[1][0]-p[0][0])/100,height:f*(p[1][1]-p[0][1])/100}})}else t.updateElement({id:c.value,props:{clip:Object(L["a"])(Object(L["a"])({},l.clip),{},{shape:e,range:r})}});d(),u()},b=function(e){var n=e[0];n&&(lt(n).then((function(e){var n={src:e};t.updateElement({id:c.value,props:n})})),u())},m=function(){var e=o.value;if(e.clip){var n=s(),l=n.originWidth,a=n.originHeight,r=n.originLeft,i=n.originTop;t.updateElement({id:c.value,props:{left:r,top:i,width:l,height:a}})}t.removeElementProps({id:c.value,propName:["clip","outline","flip","shadow","filters"]}),u()},p=function(){var e=o.value,n=Object(L["a"])(Object(L["a"])({},a.value.background),{},{type:"image",image:e.src,imageSize:"cover"});t.updateSlide({background:n}),u()};return{clipPanelVisible:r,shapeClipPathOptions:tv,ratioClipOptions:nv,handleElement:o,clipImage:d,presetImageClip:f,replaceImage:b,resetImage:m,setBackgroundImage:p}}});n("ed98");const cv=eo()(ov,[["render",Mp],["__scopeId","data-v-54b23b9e"]]);var lv=cv,av=function(e){return Object(j["pushScopeId"])("data-v-42b07d61"),e=e(),Object(j["popScopeId"])(),e},rv={class:"shape-style-panel"},iv={class:"row"},uv=Object(j["createTextVNode"])("纯色填充"),dv=Object(j["createTextVNode"])("渐变填充"),sv=av((function(){return Object(j["createElementVNode"])("div",{style:{flex:"1"}},null,-1)})),fv=Object(j["createTextVNode"])("线性渐变"),bv=Object(j["createTextVNode"])("径向渐变"),mv={class:"row"},pv=av((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"起点颜色:",-1)})),vv={class:"row"},Ov=av((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"终点颜色:",-1)})),hv={key:0,class:"row"},jv=av((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"渐变角度:",-1)})),yv=Object(j["createTextVNode"])("+"),gv=Object(j["createTextVNode"])("-");function xv(e,t,n,o,c,l){var a,r,i=Object(j["resolveComponent"])("SelectOption"),u=Object(j["resolveComponent"])("Select"),d=Object(j["resolveComponent"])("ColorPicker"),s=Object(j["resolveComponent"])("ColorButton"),f=Object(j["resolveComponent"])("Popover"),b=Object(j["resolveComponent"])("Slider"),m=Object(j["resolveComponent"])("ElementFlip"),p=Object(j["resolveComponent"])("Divider"),v=Object(j["resolveComponent"])("IconFontSize"),O=Object(j["resolveComponent"])("SelectOptGroup"),h=Object(j["resolveComponent"])("IconAddText"),y=Object(j["resolveComponent"])("InputGroup"),g=Object(j["resolveComponent"])("IconText"),x=Object(j["resolveComponent"])("Button"),C=Object(j["resolveComponent"])("Tooltip"),k=Object(j["resolveComponent"])("IconHighLight"),E=Object(j["resolveComponent"])("ButtonGroup"),w=Object(j["resolveComponent"])("IconTextBold"),N=Object(j["resolveComponent"])("CheckboxButton"),V=Object(j["resolveComponent"])("IconTextItalic"),I=Object(j["resolveComponent"])("IconTextUnderline"),S=Object(j["resolveComponent"])("IconFormat"),B=Object(j["resolveComponent"])("CheckboxButtonGroup"),L=Object(j["resolveComponent"])("IconAlignTextLeft"),T=Object(j["resolveComponent"])("RadioButton"),_=Object(j["resolveComponent"])("IconAlignTextCenter"),M=Object(j["resolveComponent"])("IconAlignTextRight"),D=Object(j["resolveComponent"])("RadioGroup"),z=Object(j["resolveComponent"])("IconAlignTextTopOne"),A=Object(j["resolveComponent"])("IconAlignTextMiddleOne"),F=Object(j["resolveComponent"])("IconAlignTextBottomOne"),R=Object(j["resolveComponent"])("ElementOutline"),P=Object(j["resolveComponent"])("ElementShadow"),H=Object(j["resolveComponent"])("ElementOpacity");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",rv,[Object(j["createElementVNode"])("div",iv,[Object(j["createVNode"])(u,{style:{flex:"10"},value:e.fillType,onChange:t[0]||(t[0]=function(t){return e.updateFillType(t)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{value:"fill"},{default:Object(j["withCtx"])((function(){return[uv]})),_:1}),Object(j["createVNode"])(i,{value:"gradient"},{default:Object(j["withCtx"])((function(){return[dv]})),_:1})]})),_:1},8,["value"]),sv,"fill"===e.fillType?(Object(j["openBlock"])(),Object(j["createBlock"])(f,{key:0,trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d,{modelValue:e.fill,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.updateFill(t)})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(s,{color:e.fill,style:{flex:"10"}},null,8,["color"])]})),_:1})):(Object(j["openBlock"])(),Object(j["createBlock"])(u,{key:1,style:{flex:"10"},value:e.gradient.type,onChange:t[2]||(t[2]=function(t){return e.updateGradient({type:t})})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{value:"linear"},{default:Object(j["withCtx"])((function(){return[fv]})),_:1}),Object(j["createVNode"])(i,{value:"radial"},{default:Object(j["withCtx"])((function(){return[bv]})),_:1})]})),_:1},8,["value"]))]),"gradient"===e.fillType?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[Object(j["createElementVNode"])("div",mv,[pv,Object(j["createVNode"])(f,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d,{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(j["withCtx"])((function(){return[Object(j["createVNode"])(s,{color:e.gradient.color[0],style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createElementVNode"])("div",vv,[Ov,Object(j["createVNode"])(f,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d,{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(j["withCtx"])((function(){return[Object(j["createVNode"])(s,{color:e.gradient.color[1],style:{flex:"3"}},null,8,["color"])]})),_:1})]),"linear"===e.gradient.type?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",hv,[jv,Object(j["createVNode"])(b,{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(j["createCommentVNode"])("",!0)],64)):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])(m),Object(j["createVNode"])(p),null!==(a=e.handleElement)&&void 0!==a&&null!==(r=a.text)&&void 0!==r&&r.content?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:1},[Object(j["createVNode"])(y,{compact:"",class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,{style:{flex:"3"},value:e.richTextAttrs.fontname,onChange:t[6]||(t[6]=function(t){return e.emitRichTextCommand("fontname",t)})},{suffixIcon:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(v)]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(O,{label:"系统字体"},{default:Object(j["withCtx"])((function(){return[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.availableFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:e.value,value:e.value},{default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("span",{style:Object(j["normalizeStyle"])({fontFamily:e.value})},Object(j["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(j["createVNode"])(O,{label:"在线字体"},{default:Object(j["withCtx"])((function(){return[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.webFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:e.value,value:e.value},{default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("span",null,Object(j["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"]),Object(j["createVNode"])(u,{style:{flex:"2"},value:e.richTextAttrs.fontsize,onChange:t[7]||(t[7]=function(t){return e.emitRichTextCommand("fontsize",t)})},{suffixIcon:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(h)]})),default:Object(j["withCtx"])((function(){return[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.fontSizeOptions,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:e,value:e},{default:Object(j["withCtx"])((function(){return[Object(j["createTextVNode"])(Object(j["toDisplayString"])(e),1)]})),_:2},1032,["value"])})),128))]})),_:1},8,["value"])]})),_:1}),Object(j["createVNode"])(E,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d,{modelValue:e.richTextAttrs.color,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.emitRichTextCommand("color",t)})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(x,{class:"text-color-btn",style:{flex:"3"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(g),Object(j["createElementVNode"])("div",{class:"text-color-block",style:Object(j["normalizeStyle"])({backgroundColor:e.richTextAttrs.color})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(f,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d,{modelValue:e.richTextAttrs.backcolor,"onUpdate:modelValue":t[9]||(t[9]=function(t){return e.emitRichTextCommand("backcolor",t)})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字高亮"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(x,{class:"text-color-btn",style:{flex:"3"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(k),Object(j["createElementVNode"])("div",{class:"text-color-block",style:Object(j["normalizeStyle"])({backgroundColor:e.richTextAttrs.backcolor})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"增大字号"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(x,{class:"font-size-btn",style:{flex:"2"},onClick:t[10]||(t[10]=function(t){return e.emitRichTextCommand("fontsize-add")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(v),yv]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"减小字号"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(x,{class:"font-size-btn",style:{flex:"2"},onClick:t[11]||(t[11]=function(t){return e.emitRichTextCommand("fontsize-reduce")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(v),gv]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(B,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"加粗"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(N,{style:{flex:"1"},checked:e.richTextAttrs.bold,onClick:t[12]||(t[12]=function(t){return e.emitRichTextCommand("bold")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(w)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"斜体"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(N,{style:{flex:"1"},checked:e.richTextAttrs.em,onClick:t[13]||(t[13]=function(t){return e.emitRichTextCommand("em")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(V)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下划线"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(N,{style:{flex:"1"},checked:e.richTextAttrs.underline,onClick:t[14]||(t[14]=function(t){return e.emitRichTextCommand("underline")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(I)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"清除格式"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(N,{style:{flex:"1"},onClick:t[15]||(t[15]=function(t){return e.emitRichTextCommand("clear")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(S)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(D,{class:"row","button-style":"solid",value:e.richTextAttrs.align,onChange:t[16]||(t[16]=function(t){return e.emitRichTextCommand("align",t.target.value)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(T,{value:"left",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(L)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(T,{value:"center",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(_)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(T,{value:"right",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(M)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"]),Object(j["createVNode"])(D,{class:"row","button-style":"solid",value:e.textAlign,onChange:t[17]||(t[17]=function(t){return e.updateTextAlign(t.target.value)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"顶对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(T,{value:"top",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(z)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(T,{value:"middle",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(A)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"底对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(T,{value:"bottom",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(F)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"]),Object(j["createVNode"])(p)],64)):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])(R),Object(j["createVNode"])(p),Object(j["createVNode"])(P),Object(j["createVNode"])(p),Object(j["createVNode"])(H)])}var Cv=B,kv=Object(j["defineComponent"])({name:"shape-style-panel",components:{ElementOpacity:Tm,ElementOutline:tp,ElementShadow:hp,ElementFlip:Hp,ColorButton:Qm},setup:function(){var e=ue(),t=ae(),n=Object(y["c"])(e),o=n.handleElement,c=n.handleElementId,l=n.richTextAttrs,a=n.availableFonts,r=Object(j["ref"])("#000"),i=Object(j["ref"])({type:"linear",rotate:0,color:["#fff","#fff"]}),u=Object(j["ref"])("fill"),d=Object(j["ref"])("middle");Object(j["watch"])(o,(function(){var e,t;o.value&&"shape"===o.value.type&&(r.value=o.value.fill||"#fff",i.value=o.value.gradient||{type:"linear",rotate:0,color:[r.value,"#fff"]},u.value=o.value.gradient?"gradient":"fill",d.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 s=dt(),f=s.addHistorySnapshot,b=function(e){t.updateElement({id:c.value,props:e}),f()},m=function(e){"fill"===e?(t.removeElementProps({id:c.value,propName:"gradient"}),f()):b({gradient:i.value})},p=function(e){if(i.value){var t=Object(L["a"])(Object(L["a"])({},i.value),e);b({gradient:t})}},v=function(e){b({fill:e})},O=function(e){var t=o.value,n={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"},c=t.text||n;b({text:Object(L["a"])(Object(L["a"])({},c),{},{align:e})})},h=["12px","14px","16px","18px","20px","22px","24px","28px","32px","36px","40px","44px","48px","54px","60px","66px","72px","76px","80px","88px","96px","104px","112px","120px"],g=function(e,t){Cl.emit(zc.RICH_TEXT_COMMAND,{action:{command:e,value:t}})};return{fill:r,gradient:i,fillType:u,textAlign:d,richTextAttrs:l,availableFonts:a,fontSizeOptions:h,webFonts:Cv,handleElement:o,emitRichTextCommand:g,updateFillType:m,updateFill:v,updateGradient:p,updateTextAlign:O}}});n("ee0f");const Ev=eo()(kv,[["render",xv],["__scopeId","data-v-42b07d61"]]);var wv=Ev,Nv=function(e){return Object(j["pushScopeId"])("data-v-ad75cd30"),e=e(),Object(j["popScopeId"])(),e},Vv={class:"line-style-panel"},Iv={class:"row"},Sv=Nv((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"线条样式:",-1)})),Bv=Object(j["createTextVNode"])("实线"),Lv=Object(j["createTextVNode"])("虚线"),Tv={class:"row"},_v=Nv((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"线条颜色:",-1)})),Mv={class:"row"},Dv=Nv((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"线条宽度:",-1)})),zv={class:"row"},Av=Nv((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"起点样式:",-1)})),Fv=Object(j["createTextVNode"])("无"),Rv=Object(j["createTextVNode"])("箭头"),Pv=Object(j["createTextVNode"])("圆点"),Hv={class:"row"},qv=Nv((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"终点样式:",-1)})),Uv=Object(j["createTextVNode"])("无"),Wv=Object(j["createTextVNode"])("箭头"),Gv=Object(j["createTextVNode"])("圆点");function Xv(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("SelectOption"),r=Object(j["resolveComponent"])("Select"),i=Object(j["resolveComponent"])("ColorPicker"),u=Object(j["resolveComponent"])("ColorButton"),d=Object(j["resolveComponent"])("Popover"),s=Object(j["resolveComponent"])("InputNumber"),f=Object(j["resolveComponent"])("Divider"),b=Object(j["resolveComponent"])("ElementShadow");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Vv,[Object(j["createElementVNode"])("div",Iv,[Sv,Object(j["createVNode"])(r,{style:{flex:"3"},value:e.handleElement.style,onChange:t[0]||(t[0]=function(t){return e.updateLine({style:t})})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{value:"solid"},{default:Object(j["withCtx"])((function(){return[Bv]})),_:1}),Object(j["createVNode"])(a,{value:"dashed"},{default:Object(j["withCtx"])((function(){return[Lv]})),_:1})]})),_:1},8,["value"])]),Object(j["createElementVNode"])("div",Tv,[_v,Object(j["createVNode"])(d,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{modelValue:e.handleElement.color,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.updateLine({color:t})})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,{color:e.handleElement.color,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createElementVNode"])("div",Mv,[Dv,Object(j["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(j["createElementVNode"])("div",zv,[Av,Object(j["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(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{value:""},{default:Object(j["withCtx"])((function(){return[Fv]})),_:1}),Object(j["createVNode"])(a,{value:"arrow"},{default:Object(j["withCtx"])((function(){return[Rv]})),_:1}),Object(j["createVNode"])(a,{value:"dot"},{default:Object(j["withCtx"])((function(){return[Pv]})),_:1})]})),_:1},8,["value"])]),Object(j["createElementVNode"])("div",Hv,[qv,Object(j["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(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{value:""},{default:Object(j["withCtx"])((function(){return[Uv]})),_:1}),Object(j["createVNode"])(a,{value:"arrow"},{default:Object(j["withCtx"])((function(){return[Wv]})),_:1}),Object(j["createVNode"])(a,{value:"dot"},{default:Object(j["withCtx"])((function(){return[Gv]})),_:1})]})),_:1},8,["value"])]),Object(j["createVNode"])(f),Object(j["createVNode"])(b)])}var Yv=Object(j["defineComponent"])({name:"line-style-panel",components:{ElementShadow:hp,ColorButton:Qm},setup:function(){var e=ae(),t=Object(y["c"])(ue()),n=t.handleElement,o=dt(),c=o.addHistorySnapshot,l=function(t){n.value&&(e.updateElement({id:n.value.id,props:t}),c())};return{handleElement:n,updateLine:l}}});n("7686");const Zv=eo()(Yv,[["render",Xv],["__scopeId","data-v-ad75cd30"]]);var Jv=Zv,Kv=function(e){return Object(j["pushScopeId"])("data-v-1a47c852"),e=e(),Object(j["popScopeId"])(),e},Qv={class:"chart-style-panel"},$v=Object(j["createTextVNode"])(" 编辑图表数据 "),eO={class:"row"},tO=Object(j["createTextVNode"])("面积图样式"),nO=Object(j["createTextVNode"])("散点图样式"),oO={class:"row"},cO=Object(j["createTextVNode"])("使用平滑曲线"),lO={key:1,class:"row"},aO=Object(j["createTextVNode"])("条形图样式"),rO=Object(j["createTextVNode"])("堆叠样式"),iO={key:2,class:"row"},uO=Object(j["createTextVNode"])("环形图样式"),dO={class:"row"},sO=Kv((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"图例:",-1)})),fO=Object(j["createTextVNode"])("不显示"),bO=Object(j["createTextVNode"])("显示在上方"),mO=Object(j["createTextVNode"])("显示在下方"),pO={class:"row"},vO=Kv((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"背景填充:",-1)})),OO={class:"row"},hO=Kv((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"网格颜色:",-1)})),jO={style:{flex:"2"}},yO={class:"color-btn-wrap",style:{flex:"3"}},gO=["onClick"],xO={class:"preset-themes"},CO=["onClick","onMouseenter"],kO=Object(j["createTextVNode"])("推荐主题"),EO=Object(j["createTextVNode"])(" 添加主题色 ");function wO(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconEdit"),r=Object(j["resolveComponent"])("Button"),i=Object(j["resolveComponent"])("Divider"),u=Object(j["resolveComponent"])("Checkbox"),d=Object(j["resolveComponent"])("SelectOption"),s=Object(j["resolveComponent"])("Select"),f=Object(j["resolveComponent"])("ColorPicker"),b=Object(j["resolveComponent"])("ColorButton"),m=Object(j["resolveComponent"])("Popover"),p=Object(j["resolveComponent"])("IconCloseSmall"),v=Object(j["resolveComponent"])("Tooltip"),O=Object(j["resolveComponent"])("IconPlus"),h=Object(j["resolveComponent"])("ButtonGroup"),y=Object(j["resolveComponent"])("ElementOutline"),g=Object(j["resolveComponent"])("ChartDataEditor"),x=Object(j["resolveComponent"])("Modal");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Qv,[Object(j["createVNode"])(r,{class:"full-width-btn",onClick:t[0]||(t[0]=function(t){return e.chartDataEditorVisible=!0})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{class:"btn-icon"}),$v]})),_:1}),Object(j["createVNode"])(i),"line"===e.handleElement.chartType?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[Object(j["createElementVNode"])("div",eO,[Object(j["createVNode"])(u,{onChange:t[1]||(t[1]=function(t){return e.updateOptions({showArea:t.target.checked})}),checked:e.showArea,style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[tO]})),_:1},8,["checked"]),Object(j["createVNode"])(u,{onChange:t[2]||(t[2]=function(t){return e.updateOptions({showLine:!t.target.checked})}),checked:!e.showLine,style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[nO]})),_:1},8,["checked"])]),Object(j["createElementVNode"])("div",oO,[Object(j["createVNode"])(u,{onChange:t[3]||(t[3]=function(t){return e.updateOptions({lineSmooth:t.target.checked})}),checked:e.lineSmooth},{default:Object(j["withCtx"])((function(){return[cO]})),_:1},8,["checked"])])],64)):Object(j["createCommentVNode"])("",!0),"bar"===e.handleElement.chartType?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",lO,[Object(j["createVNode"])(u,{onChange:t[4]||(t[4]=function(t){return e.updateOptions({horizontalBars:t.target.checked})}),checked:e.horizontalBars},{default:Object(j["withCtx"])((function(){return[aO]})),_:1},8,["checked"]),Object(j["createVNode"])(u,{onChange:t[5]||(t[5]=function(t){return e.updateOptions({stackBars:t.target.checked})}),checked:e.stackBars},{default:Object(j["withCtx"])((function(){return[rO]})),_:1},8,["checked"])])):Object(j["createCommentVNode"])("",!0),"pie"===e.handleElement.chartType?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",iO,[Object(j["createVNode"])(u,{onChange:t[6]||(t[6]=function(t){return e.updateOptions({donut:t.target.checked})}),checked:e.donut},{default:Object(j["withCtx"])((function(){return[uO]})),_:1},8,["checked"])])):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])(i),Object(j["createElementVNode"])("div",dO,[sO,Object(j["createVNode"])(s,{style:{flex:"3"},value:e.legend,onChange:t[7]||(t[7]=function(t){return e.updateLegend(t)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d,{value:""},{default:Object(j["withCtx"])((function(){return[fO]})),_:1}),Object(j["createVNode"])(d,{value:"top"},{default:Object(j["withCtx"])((function(){return[bO]})),_:1}),Object(j["createVNode"])(d,{value:"bottom"},{default:Object(j["withCtx"])((function(){return[mO]})),_:1})]})),_:1},8,["value"])]),Object(j["createVNode"])(i),Object(j["createElementVNode"])("div",pO,[vO,Object(j["createVNode"])(m,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f,{modelValue:e.fill,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.updateFill(t)})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b,{color:e.fill,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createElementVNode"])("div",OO,[hO,Object(j["createVNode"])(m,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f,{modelValue:e.gridColor,"onUpdate:modelValue":t[9]||(t[9]=function(t){return e.updateGridColor(t)})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b,{color:e.gridColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])(i),(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.themeColor,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"row",key:n},[Object(j["createElementVNode"])("div",jO,Object(j["toDisplayString"])(0===n?"主题配色:":""),1),Object(j["createVNode"])(m,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f,{modelValue:t,"onUpdate:modelValue":function(t){return e.updateTheme(t,n)}},null,8,["modelValue","onUpdate:modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",yO,[Object(j["createVNode"])(b,{color:t,style:{width:"100%"}},null,8,["color"]),Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除"},{default:Object(j["withCtx"])((function(){return[0!==n?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{key:0,class:"delete-color-btn",onClick:Object(j["withModifiers"])((function(t){return e.deleteThemeColor(n)}),["stop"])},[Object(j["createVNode"])(p)],8,gO)):Object(j["createCommentVNode"])("",!0)]})),_:2},1032,["mouseEnterDelay"])])]})),_:2},1024)])})),128)),Object(j["createVNode"])(h,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(m,{trigger:"click",visible:e.presetThemesVisible,"onUpdate:visible":t[11]||(t[11]=function(t){return e.presetThemesVisible=t})},{content:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",xO,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.presetChartThemes,(function(n,o){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"preset-theme",key:o},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(n,(function(c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["preset-theme-color",{select:e.presetThemeColorHoverIndex[0]===o&&l<=e.presetThemeColorHoverIndex[1]}]),key:c,style:Object(j["normalizeStyle"])({backgroundColor:c}),onClick:function(t){return e.applyPresetTheme(n,l)},onMouseenter:function(t){return e.presetThemeColorHoverIndex=[o,l]},onMouseleave:t[10]||(t[10]=function(t){return e.presetThemeColorHoverIndex=[-1,-1]})},null,46,CO)})),128))])})),128))])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{class:"no-padding",style:{flex:"2"}},{default:Object(j["withCtx"])((function(){return[kO]})),_:1})]})),_:1},8,["visible"]),Object(j["createVNode"])(r,{class:"no-padding",disabled:e.themeColor.length>=10,style:{flex:"3"},onClick:t[12]||(t[12]=function(t){return e.addThemeColor()})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(O,{class:"btn-icon"}),EO]})),_:1},8,["disabled"])]})),_:1}),Object(j["createVNode"])(i),Object(j["createVNode"])(y),Object(j["createVNode"])(x,{visible:e.chartDataEditorVisible,"onUpdate:visible":t[15]||(t[15]=function(t){return e.chartDataEditorVisible=t}),footer:null,centered:"",closable:!1,width:648,destroyOnClose:""},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(g,{data:e.handleElement.data,onClose:t[13]||(t[13]=function(t){return e.chartDataEditorVisible=!1}),onSave:t[14]||(t[14]=function(t){return e.updateData(t)})},null,8,["data"])]})),_:1},8,["visible"])])}var NO={class:"chart-data-editor"},VO={class:"editor-content"},IO={class:"range-box"},SO=["id","onFocus","onPaste"],BO={class:"btns"},LO={class:"left"},TO=Object(j["createTextVNode"])("清空"),_O={class:"right"},MO=Object(j["createTextVNode"])("取消"),DO=Object(j["createTextVNode"])("确认");function zO(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",NO,[Object(j["createElementVNode"])("div",VO,[Object(j["createElementVNode"])("div",IO,[Object(j["createElementVNode"])("div",{class:"temp-range",style:Object(j["normalizeStyle"])({width:e.tempRangeSize.width+"px",height:e.tempRangeSize.height+"px"})},null,4),(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.rangeLines,(function(e){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["range-line",e.type]),key:e.type,style:Object(j["normalizeStyle"])(e.style)},null,6)})),128)),Object(j["createElementVNode"])("div",{class:"resizable",style:Object(j["normalizeStyle"])(e.resizablePointStyle),onMousedown:t[0]||(t[0]=Object(j["withModifiers"])((function(t){return e.changeSelectRange(t)}),["stop"]))},null,36)]),Object(j["createElementVNode"])("table",null,[Object(j["createElementVNode"])("tbody",null,[(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(31,(function(t){return Object(j["createElementVNode"])("tr",{key:t},[(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(7,(function(n){return Object(j["createElementVNode"])("td",{key:n,class:Object(j["normalizeClass"])({head:1===n&&t<=e.selectedRange[1]||1===t&&n<=e.selectedRange[0]})},[Object(j["createElementVNode"])("input",{class:Object(j["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,SO)],2)})),64))])})),64))])])]),Object(j["createElementVNode"])("div",BO,[Object(j["createElementVNode"])("div",LO,[Object(j["createVNode"])(a,{class:"btn",onClick:t[1]||(t[1]=function(t){return e.clear()})},{default:Object(j["withCtx"])((function(){return[TO]})),_:1})]),Object(j["createElementVNode"])("div",_O,[Object(j["createVNode"])(a,{class:"btn",onClick:t[2]||(t[2]=function(t){return e.closeEditor()})},{default:Object(j["withCtx"])((function(){return[MO]})),_:1}),Object(j["createVNode"])(a,{type:"primary",class:"btn",onClick:t[3]||(t[3]=function(t){return e.getTableData()}),style:{"margin-left":"10px"}},{default:Object(j["withCtx"])((function(){return[DO]})),_:1})])])])}var AO=100,FO=32,RO=Object(j["defineComponent"])({name:"chart-data-editor",emits:["save","close"],props:{data:{type:Object,required:!0}},setup:function(e,t){var n=t.emit,o=Object(j["ref"])([0,0]),c=Object(j["ref"])({width:0,height:0}),l=Object(j["ref"])(null),a=Object(j["computed"])((function(){var e=o.value[0]*AO,t=o.value[1]*FO;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(j["computed"])((function(){var e=o.value[0]*AO,t=o.value[1]*FO;return{left:e+"px",top:t+"px"}})),i=function(){var t=[],n=e.data,c=n.labels,l=n.legends,a=n.series,r=c.length,i=a.length;t.push([""].concat(Object($["a"])(l)));for(var u=0;u.5*AO&&(i+=AO-i%AO),u%FO>.5*FO&&(u+=FO-u%FO);var d=Math.round(u/FO),s=Math.round(i/AO);d<3&&(d=3),s<2&&(s=2),o.value=[s,d],c.value={width:0,height:0}}}};return{tempRangeSize:c,rangeLines:a,resizablePointStyle:r,selectedRange:o,focusCell:l,changeSelectRange:p,getTableData:s,closeEditor:m,clear:f,handlePaste:b}}});n("6856");const PO=eo()(RO,[["render",zO],["__scopeId","data-v-9a62f784"]]);var HO=PO,qO=[["#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"]],UO=Object(j["defineComponent"])({name:"chart-style-panel",components:{ElementOutline:tp,ChartDataEditor:HO,ColorButton:Qm},setup:function(){var e=ue(),t=ae(),n=Object(y["c"])(e),o=n.handleElement,c=n.handleElementId,l=Object(y["c"])(t),a=l.theme,r=Object(j["ref"])(!1),i=Object(j["ref"])(!1),u=Object(j["ref"])([-1,-1]),d=dt(),s=d.addHistorySnapshot,f=Object(j["ref"])("#000"),b=Object(j["ref"])([]),m=Object(j["ref"])(""),p=Object(j["ref"])(""),v=Object(j["ref"])(!0),O=Object(j["ref"])(!0),h=Object(j["ref"])(!1),g=Object(j["ref"])(!1),x=Object(j["ref"])(!1),C=Object(j["ref"])(!1);Object(j["watch"])(o,(function(){if(o.value&&"chart"===o.value.type){if(f.value=o.value.fill||"#fff",o.value.options){var e=o.value.options,t=e.lineSmooth,n=e.showLine,c=e.showArea,l=e.horizontalBars,a=e.donut,r=e.stackBars;void 0!==t&&(v.value=t),void 0!==n&&(O.value=n),void 0!==c&&(h.value=c),void 0!==l&&(g.value=l),void 0!==a&&(x.value=a),void 0!==r&&(C.value=r)}b.value=o.value.themeColor,m.value=o.value.gridColor||"#333",p.value=o.value.legend||""}}),{deep:!0,immediate:!0});var k=function(e){t.updateElement({id:c.value,props:e}),s()},E=function(e){r.value=!1,k({data:e})},w=function(e){k({fill:e})},N=function(e){var t=o.value,n=Object(L["a"])(Object(L["a"])({},t.options),e);k({options:n})},V=function(e,t){var n={themeColor:b.value.map((function(n,o){return o===t?e:n}))};k(n)},I=function(){var e={themeColor:[].concat(Object($["a"])(b.value),[a.value.themeColor])};k(e)},S=function(e,t){var n=e.slice(0,t+1);k({themeColor:n}),i.value=!1},B=function(e){var t={themeColor:b.value.filter((function(t,n){return n!==e}))};k(t)},T=function(e){k({gridColor:e})},_=function(e){k({legend:e})},M=function(){return r.value=!0};return Cl.on(zc.OPEN_CHART_DATA_EDITOR,M),Object(j["onUnmounted"])((function(){Cl.off(zc.OPEN_CHART_DATA_EDITOR,M)})),{chartDataEditorVisible:r,presetThemesVisible:i,presetThemeColorHoverIndex:u,handleElement:o,updateData:E,fill:f,updateFill:w,lineSmooth:v,showLine:O,showArea:h,horizontalBars:g,donut:x,stackBars:C,updateOptions:N,themeColor:b,gridColor:m,legend:p,updateTheme:V,addThemeColor:I,deleteThemeColor:B,updateGridColor:T,updateLegend:_,presetChartThemes:qO,applyPresetTheme:S}}});n("f196");const WO=eo()(UO,[["render",wO],["__scopeId","data-v-1a47c852"]]);var GO=WO,XO=function(e){return Object(j["pushScopeId"])("data-v-3da8fdb7"),e=e(),Object(j["popScopeId"])(),e},YO={class:"table-style-panel"},ZO={class:"row"},JO=XO((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"行数:",-1)})),KO={class:"set-count",style:{flex:"3"}},QO={class:"count-text"},$O={class:"row"},eh=XO((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"列数:",-1)})),th={class:"set-count",style:{flex:"3"}},nh={class:"count-text"},oh={class:"row theme-switch"},ch=XO((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"启用主题表格:",-1)})),lh={class:"switch-wrapper",style:{flex:"3"}},ah={class:"row"},rh=Object(j["createTextVNode"])("标题行"),ih=Object(j["createTextVNode"])("汇总行"),uh={class:"row"},dh=Object(j["createTextVNode"])("第一列"),sh=Object(j["createTextVNode"])("最后一列"),fh={class:"row"},bh=XO((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"主题颜色:",-1)}));function mh(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconFontSize"),r=Object(j["resolveComponent"])("SelectOption"),i=Object(j["resolveComponent"])("SelectOptGroup"),u=Object(j["resolveComponent"])("Select"),d=Object(j["resolveComponent"])("IconAddText"),s=Object(j["resolveComponent"])("InputGroup"),f=Object(j["resolveComponent"])("ColorPicker"),b=Object(j["resolveComponent"])("IconText"),m=Object(j["resolveComponent"])("Button"),p=Object(j["resolveComponent"])("Tooltip"),v=Object(j["resolveComponent"])("Popover"),O=Object(j["resolveComponent"])("IconFill"),h=Object(j["resolveComponent"])("ButtonGroup"),y=Object(j["resolveComponent"])("IconTextBold"),g=Object(j["resolveComponent"])("CheckboxButton"),x=Object(j["resolveComponent"])("IconTextItalic"),C=Object(j["resolveComponent"])("IconTextUnderline"),k=Object(j["resolveComponent"])("IconStrikethrough"),E=Object(j["resolveComponent"])("CheckboxButtonGroup"),w=Object(j["resolveComponent"])("IconAlignTextLeft"),N=Object(j["resolveComponent"])("RadioButton"),V=Object(j["resolveComponent"])("IconAlignTextCenter"),I=Object(j["resolveComponent"])("IconAlignTextRight"),S=Object(j["resolveComponent"])("RadioGroup"),B=Object(j["resolveComponent"])("Divider"),L=Object(j["resolveComponent"])("ElementOutline"),T=Object(j["resolveComponent"])("IconMinus"),_=Object(j["resolveComponent"])("IconPlus"),M=Object(j["resolveComponent"])("Switch"),D=Object(j["resolveComponent"])("Checkbox"),z=Object(j["resolveComponent"])("ColorButton");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",YO,[Object(j["createVNode"])(s,{compact:"",class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,{style:{flex:"3"},value:e.textAttrs.fontname,onChange:t[0]||(t[0]=function(t){return e.updateTextAttrs({fontname:t})})},{suffixIcon:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a)]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{label:"系统字体"},{default:Object(j["withCtx"])((function(){return[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.availableFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:e.value,value:e.value},{default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("span",{style:Object(j["normalizeStyle"])({fontFamily:e.value})},Object(j["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(j["createVNode"])(i,{label:"在线字体"},{default:Object(j["withCtx"])((function(){return[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.webFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:e.value,value:e.value},{default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("span",null,Object(j["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"]),Object(j["createVNode"])(u,{style:{flex:"2"},value:e.textAttrs.fontsize,onChange:t[1]||(t[1]=function(t){return e.updateTextAttrs({fontsize:t})})},{suffixIcon:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d)]})),default:Object(j["withCtx"])((function(){return[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.fontSizeOptions,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:e,value:e},{default:Object(j["withCtx"])((function(){return[Object(j["createTextVNode"])(Object(j["toDisplayString"])(e),1)]})),_:2},1032,["value"])})),128))]})),_:1},8,["value"])]})),_:1}),Object(j["createVNode"])(h,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(v,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f,{modelValue:e.textAttrs.color,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.updateTextAttrs({color:t})})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(p,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(m,{class:"text-color-btn",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b),Object(j["createElementVNode"])("div",{class:"text-color-block",style:Object(j["normalizeStyle"])({backgroundColor:e.textAttrs.color})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(v,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f,{modelValue:e.textAttrs.backcolor,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.updateTextAttrs({backcolor:t})})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(p,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"单元格填充"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(m,{class:"text-color-btn",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(O),Object(j["createElementVNode"])("div",{class:"text-color-block",style:Object(j["normalizeStyle"])({backgroundColor:e.textAttrs.backcolor})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1})]})),_:1}),Object(j["createVNode"])(E,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(p,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"加粗"},{default:Object(j["withCtx"])((function(){return[Object(j["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(j["withCtx"])((function(){return[Object(j["createVNode"])(y)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(p,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"斜体"},{default:Object(j["withCtx"])((function(){return[Object(j["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(j["withCtx"])((function(){return[Object(j["createVNode"])(x)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(p,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下划线"},{default:Object(j["withCtx"])((function(){return[Object(j["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(j["withCtx"])((function(){return[Object(j["createVNode"])(C)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(p,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除线"},{default:Object(j["withCtx"])((function(){return[Object(j["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(j["withCtx"])((function(){return[Object(j["createVNode"])(k)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["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(j["withCtx"])((function(){return[Object(j["createVNode"])(p,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(N,{value:"left",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(w)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(p,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(N,{value:"center",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(V)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(p,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(N,{value:"right",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(I)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"]),Object(j["createVNode"])(B),Object(j["createVNode"])(L,{fixed:!0}),Object(j["createVNode"])(B),Object(j["createElementVNode"])("div",ZO,[JO,Object(j["createElementVNode"])("div",KO,[Object(j["createVNode"])(m,{class:"btn",disabled:e.rowCount<=1,onClick:t[9]||(t[9]=function(t){return e.setTableRow(e.rowCount-1)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(T)]})),_:1},8,["disabled"]),Object(j["createElementVNode"])("div",QO,Object(j["toDisplayString"])(e.rowCount),1),Object(j["createVNode"])(m,{class:"btn",disabled:e.rowCount>=30,onClick:t[10]||(t[10]=function(t){return e.setTableRow(e.rowCount+1)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(_)]})),_:1},8,["disabled"])])]),Object(j["createElementVNode"])("div",$O,[eh,Object(j["createElementVNode"])("div",th,[Object(j["createVNode"])(m,{class:"btn",disabled:e.colCount<=1,onClick:t[11]||(t[11]=function(t){return e.setTableCol(e.colCount-1)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(T)]})),_:1},8,["disabled"]),Object(j["createElementVNode"])("div",nh,Object(j["toDisplayString"])(e.colCount),1),Object(j["createVNode"])(m,{class:"btn",disabled:e.colCount>=30,onClick:t[12]||(t[12]=function(t){return e.setTableCol(e.colCount+1)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(_)]})),_:1},8,["disabled"])])]),Object(j["createVNode"])(B),Object(j["createElementVNode"])("div",oh,[ch,Object(j["createElementVNode"])("div",lh,[Object(j["createVNode"])(M,{checked:e.hasTheme,onChange:t[13]||(t[13]=function(t){return e.toggleTheme(t)})},null,8,["checked"])])]),e.theme?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[Object(j["createElementVNode"])("div",ah,[Object(j["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(j["withCtx"])((function(){return[rh]})),_:1},8,["checked"]),Object(j["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(j["withCtx"])((function(){return[ih]})),_:1},8,["checked"])]),Object(j["createElementVNode"])("div",uh,[Object(j["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(j["withCtx"])((function(){return[dh]})),_:1},8,["checked"]),Object(j["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(j["withCtx"])((function(){return[sh]})),_:1},8,["checked"])]),Object(j["createElementVNode"])("div",fh,[bh,Object(j["createVNode"])(v,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f,{modelValue:e.theme.color,"onUpdate:modelValue":t[18]||(t[18]=function(t){return e.updateTheme({color:t})})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(z,{color:e.theme.color,style:{flex:"3"}},null,8,["color"])]})),_:1})])],64)):Object(j["createCommentVNode"])("",!0)])}var ph=B,vh=Object(j["defineComponent"])({name:"table-style-panel",components:{ElementOutline:tp,ColorButton:Qm},setup:function(){var e=ae(),t=Object(y["c"])(ue()),n=t.handleElement,o=t.handleElementId,c=t.selectedTableCells,l=t.availableFonts,a=Object(j["computed"])((function(){return e.theme.themeColor})),r=["12px","14px","16px","18px","20px","22px","24px","28px","32px"],i=Object(j["ref"])({bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"#000",fontsize:"12px",fontname:"微软雅黑",align:"left"}),u=Object(j["ref"])(),d=Object(j["ref"])(!1),s=Object(j["ref"])(0),f=Object(j["ref"])(0),b=Object(j["ref"])(0),m=Object(j["ref"])(0);Object(j["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,b.value=n.value.data.length,m.value=n.value.data[0].length)}),{deep:!0,immediate:!0});var p=dt(),v=p.addHistorySnapshot,O=function(){if(n.value&&"table"===n.value.type){var e=0,t=0;if(c.value.length){var o=c.value[0];e=+o.split("_")[0],t=+o.split("_")[1]}var l=n.value.data[e][t].style;i.value=l?{bold:!!l.bold,em:!!l.em,underline:!!l.underline,strikethrough:!!l.strikethrough,color:l.color||"#000",backcolor:l.backcolor||"#000",fontsize:l.fontsize||"12px",fontname:l.fontname||"微软雅黑",align:l.align||"left"}:{bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"#000",fontsize:"12px",fontname:"微软雅黑",align:"left"}}};Object(j["onMounted"])((function(){c.value.length&&O()})),Object(j["watch"])(c,O);var h=function(t){e.updateElement({id:o.value,props:t}),v()},g=function(e){for(var t=n.value,o=JSON.parse(JSON.stringify(t.data)),l=0;lo){var c=new Array(f.value).fill({id:Object(C["b"])(10),colspan:1,rowspan:1,text:""}),l=new Array(e-o).fill(c),a=JSON.parse(JSON.stringify(t.data));a.push.apply(a,Object($["a"])(l)),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,c=t.data,l=t.colWidths.map((function(e){return e*t.width}));if(e>o){var a;c=c.map((function(t){var n=new Array(e-o).fill({id:Object(C["b"])(10),colspan:1,rowspan:1,text:""});return t.push.apply(t,Object($["a"])(n)),t}));var r=new Array(e-o).fill(100);(a=l).push.apply(a,Object($["a"])(r))}else c=c.map((function(t){return t.slice(0,e)})),l=l.slice(0,e);var i=l.reduce((function(e,t){return e+t})),u=l.map((function(e){return e/i})),d={width:i,data:c,colWidths:u};h(d)};return{availableFonts:l,fontSizeOptions:r,textAttrs:i,updateTextAttrs:g,theme:u,rowCount:s,colCount:f,minRowCount:b,minColCount:m,hasTheme:d,toggleTheme:k,updateTheme:x,setTableRow:E,setTableCol:w,webFonts:ph}}});n("91e0");const Oh=eo()(vh,[["render",mh],["__scopeId","data-v-3da8fdb7"]]);var hh=Oh,jh=function(e){return Object(j["pushScopeId"])("data-v-e3a2bd30"),e=e(),Object(j["popScopeId"])(),e},yh={class:"latex-style-panel"},gh={class:"row"},xh=Object(j["createTextVNode"])("编辑 LaTeX"),Ch={class:"row"},kh=jh((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"颜色:",-1)})),Eh={class:"row"},wh=jh((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"粗细:",-1)}));function Nh(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("Button"),r=Object(j["resolveComponent"])("Divider"),i=Object(j["resolveComponent"])("ColorPicker"),u=Object(j["resolveComponent"])("ColorButton"),d=Object(j["resolveComponent"])("Popover"),s=Object(j["resolveComponent"])("InputNumber"),f=Object(j["resolveComponent"])("LaTeXEditor"),b=Object(j["resolveComponent"])("Modal");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",yh,[Object(j["createElementVNode"])("div",gh,[Object(j["createVNode"])(a,{style:{flex:"1"},onClick:t[0]||(t[0]=function(t){return e.latexEditorVisible=!0})},{default:Object(j["withCtx"])((function(){return[xh]})),_:1})]),Object(j["createVNode"])(r),Object(j["createElementVNode"])("div",Ch,[kh,Object(j["createVNode"])(d,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{modelValue:e.handleElement.color,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.updateLatex({color:t})})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,{color:e.handleElement.color,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createElementVNode"])("div",Eh,[wh,Object(j["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(j["createVNode"])(b,{visible:e.latexEditorVisible,"onUpdate:visible":t[5]||(t[5]=function(t){return e.latexEditorVisible=t}),footer:null,centered:"",width:880,destroyOnClose:""},{default:Object(j["withCtx"])((function(){return[Object(j["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 Vh=Object(j["defineComponent"])({name:"latex-style-panel",components:{ColorButton:Qm,LaTeXEditor:Bb},setup:function(){var e=ae(),t=Object(y["c"])(ue()),n=t.handleElement,o=Object(j["ref"])(!1),c=dt(),l=c.addHistorySnapshot,a=function(t){n.value&&(e.updateElement({id:n.value.id,props:t}),l())},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 Cl.on(zc.OPEN_LATEX_EDITOR,i),Object(j["onUnmounted"])((function(){Cl.off(zc.OPEN_LATEX_EDITOR,i)})),{handleElement:n,latexEditorVisible:o,updateLatex:a,updateLatexData:r}}});n("04ba");const Ih=eo()(Vh,[["render",Nh],["__scopeId","data-v-e3a2bd30"]]);var Sh=Ih,Bh=function(e){return Object(j["pushScopeId"])("data-v-61bcaa2a"),e=e(),Object(j["popScopeId"])(),e},Lh={class:"video-style-panel"},Th=Bh((function(){return Object(j["createElementVNode"])("div",{class:"title"},"视频预览封面",-1)})),_h={class:"background-image-wrapper"},Mh={class:"background-image"},Dh={class:"row"},zh=Object(j["createTextVNode"])("重置封面");function Ah(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconPlus"),r=Object(j["resolveComponent"])("FileInput"),i=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Lh,[Th,Object(j["createElementVNode"])("div",_h,[Object(j["createVNode"])(r,{onChange:t[0]||(t[0]=function(t){return e.setVideoPoster(t)})},{default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",Mh,[Object(j["createElementVNode"])("div",{class:"content",style:Object(j["normalizeStyle"])({backgroundImage:"url(".concat(e.handleElement.poster,")")})},[Object(j["createVNode"])(a)],4)])]})),_:1})]),Object(j["createElementVNode"])("div",Dh,[Object(j["createVNode"])(i,{style:{flex:"1"},onClick:t[1]||(t[1]=function(t){return e.updateVideo({poster:""})})},{default:Object(j["withCtx"])((function(){return[zh]})),_:1})])])}var Fh=Object(j["defineComponent"])({name:"video-style-panel",setup:function(){var e=ae(),t=Object(y["c"])(ue()),n=t.handleElement,o=dt(),c=o.addHistorySnapshot,l=function(t){n.value&&(e.updateElement({id:n.value.id,props:t}),c())},a=function(e){var t=e[0];t&<(t).then((function(e){return l({poster:e})}))};return{handleElement:n,updateVideo:l,setVideoPoster:a}}});n("c43a");const Rh=eo()(Fh,[["render",Ah],["__scopeId","data-v-61bcaa2a"]]);var Ph=Rh,Hh=function(e){return Object(j["pushScopeId"])("data-v-58a36be6"),e=e(),Object(j["popScopeId"])(),e},qh={class:"audio-style-panel"},Uh={class:"row"},Wh=Hh((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"图标颜色:",-1)})),Gh={class:"row switch-row"},Xh=Hh((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"自动播放:",-1)})),Yh={class:"switch-wrapper",style:{flex:"3"}},Zh={class:"row switch-row"},Jh=Hh((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"循环播放:",-1)})),Kh={class:"switch-wrapper",style:{flex:"3"}};function Qh(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ColorPicker"),r=Object(j["resolveComponent"])("ColorButton"),i=Object(j["resolveComponent"])("Popover"),u=Object(j["resolveComponent"])("Switch");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",qh,[Object(j["createElementVNode"])("div",Uh,[Wh,Object(j["createVNode"])(i,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{modelValue:e.handleElement.color,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.updateAudio({color:t})})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{color:e.handleElement.color,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createElementVNode"])("div",Gh,[Xh,Object(j["createElementVNode"])("div",Yh,[Object(j["createVNode"])(u,{checked:e.handleElement.autoplay,onChange:t[1]||(t[1]=function(t){return e.updateAudio({autoplay:t})})},null,8,["checked"])])]),Object(j["createElementVNode"])("div",Zh,[Jh,Object(j["createElementVNode"])("div",Kh,[Object(j["createVNode"])(u,{checked:e.handleElement.loop,onChange:t[2]||(t[2]=function(t){return e.updateAudio({loop:t})})},null,8,["checked"])])])])}var $h=Object(j["defineComponent"])({name:"audio-style-panel",components:{ColorButton:Qm},setup:function(){var e=ae(),t=Object(y["c"])(ue()),n=t.handleElement,o=dt(),c=o.addHistorySnapshot,l=function(t){n.value&&(e.updateElement({id:n.value.id,props:t}),c())};return{handleElement:n,updateAudio:l}}});n("413c");const ej=eo()($h,[["render",Qh],["__scopeId","data-v-58a36be6"]]);var tj=ej,nj=function(e){return Object(j["pushScopeId"])("data-v-e5e0fba2"),e=e(),Object(j["popScopeId"])(),e},oj={class:"multi-style-panel"},cj={class:"row"},lj=nj((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"填充颜色:",-1)})),aj={class:"row"},rj=nj((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"边框样式:",-1)})),ij=Object(j["createTextVNode"])("实线边框"),uj=Object(j["createTextVNode"])("虚线边框"),dj={class:"row"},sj=nj((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"边框颜色:",-1)})),fj={class:"row"},bj=nj((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"边框粗细:",-1)})),mj=Object(j["createTextVNode"])("+"),pj=Object(j["createTextVNode"])("-");function vj(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ColorPicker"),r=Object(j["resolveComponent"])("ColorButton"),i=Object(j["resolveComponent"])("Popover"),u=Object(j["resolveComponent"])("Divider"),d=Object(j["resolveComponent"])("SelectOption"),s=Object(j["resolveComponent"])("Select"),f=Object(j["resolveComponent"])("InputNumber"),b=Object(j["resolveComponent"])("IconFontSize"),m=Object(j["resolveComponent"])("SelectOptGroup"),p=Object(j["resolveComponent"])("IconAddText"),v=Object(j["resolveComponent"])("InputGroup"),O=Object(j["resolveComponent"])("IconText"),h=Object(j["resolveComponent"])("Button"),y=Object(j["resolveComponent"])("Tooltip"),g=Object(j["resolveComponent"])("IconHighLight"),x=Object(j["resolveComponent"])("ButtonGroup"),C=Object(j["resolveComponent"])("IconAlignTextLeft"),k=Object(j["resolveComponent"])("RadioButton"),E=Object(j["resolveComponent"])("IconAlignTextCenter"),w=Object(j["resolveComponent"])("IconAlignTextRight"),N=Object(j["resolveComponent"])("RadioGroup");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",oj,[Object(j["createElementVNode"])("div",cj,[lj,Object(j["createVNode"])(i,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{modelValue:e.fill,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.updateFill(t)})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{color:e.fill,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])(u),Object(j["createElementVNode"])("div",aj,[rj,Object(j["createVNode"])(s,{style:{flex:"3"},value:e.outline.style,onChange:t[1]||(t[1]=function(t){return e.updateOutline({style:t})})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d,{value:"solid"},{default:Object(j["withCtx"])((function(){return[ij]})),_:1}),Object(j["createVNode"])(d,{value:"dashed"},{default:Object(j["withCtx"])((function(){return[uj]})),_:1})]})),_:1},8,["value"])]),Object(j["createElementVNode"])("div",dj,[sj,Object(j["createVNode"])(i,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{modelValue:e.outline.color,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.updateOutline({color:t})})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{color:e.outline.color||"#000",style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createElementVNode"])("div",fj,[bj,Object(j["createVNode"])(f,{value:e.outline.width,onChange:t[3]||(t[3]=function(t){return e.updateOutline({width:t})}),style:{flex:"3"}},null,8,["value"])]),Object(j["createVNode"])(u),Object(j["createVNode"])(v,{compact:"",class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(s,{style:{flex:"3"},value:e.richTextAttrs.fontname,onChange:t[4]||(t[4]=function(t){return e.updateFontStyle("fontname",t)})},{suffixIcon:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b)]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(m,{label:"系统字体"},{default:Object(j["withCtx"])((function(){return[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.availableFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(d,{key:e.value,value:e.value},{default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("span",{style:Object(j["normalizeStyle"])({fontFamily:e.value})},Object(j["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(j["createVNode"])(m,{label:"在线字体"},{default:Object(j["withCtx"])((function(){return[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.webFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(d,{key:e.value,value:e.value},{default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("span",null,Object(j["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"]),Object(j["createVNode"])(s,{style:{flex:"2"},value:e.richTextAttrs.fontsize,onChange:t[5]||(t[5]=function(t){return e.updateFontStyle("fontsize",t)})},{suffixIcon:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(p)]})),default:Object(j["withCtx"])((function(){return[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.fontSizeOptions,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(d,{key:e,value:e},{default:Object(j["withCtx"])((function(){return[Object(j["createTextVNode"])(Object(j["toDisplayString"])(e),1)]})),_:2},1032,["value"])})),128))]})),_:1},8,["value"])]})),_:1}),Object(j["createVNode"])(x,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{modelValue:e.richTextAttrs.color,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.updateFontStyle("color",t)})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(y,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(h,{class:"text-color-btn",style:{flex:"3"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(O),Object(j["createElementVNode"])("div",{class:"text-color-block",style:Object(j["normalizeStyle"])({backgroundColor:e.richTextAttrs.color})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(i,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{modelValue:e.richTextAttrs.backcolor,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.updateFontStyle("backcolor",t)})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(y,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字高亮"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(h,{class:"text-color-btn",style:{flex:"3"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(g),Object(j["createElementVNode"])("div",{class:"text-color-block",style:Object(j["normalizeStyle"])({backgroundColor:e.richTextAttrs.backcolor})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(y,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"增大字号"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(h,{class:"font-size-btn",style:{flex:"2"},onClick:t[8]||(t[8]=function(t){return e.updateFontStyle("fontsize-add","2")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b),mj]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(y,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"减小字号"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(h,{class:"font-size-btn",style:{flex:"2"},onClick:t[9]||(t[9]=function(t){return e.updateFontStyle("fontsize-reduce","2")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b),pj]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(N,{class:"row","button-style":"solid",value:e.richTextAttrs.align,onChange:t[10]||(t[10]=function(t){return e.updateFontStyle("align",t.target.value)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(y,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(k,{value:"left",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(C)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(y,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(k,{value:"center",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(E)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(y,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(k,{value:"right",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(w)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"])])}var Oj=B,hj=Object(j["defineComponent"])({name:"multi-style-panel",components:{ColorButton:Qm},setup:function(){var e=ae(),t=Object(y["c"])(ue()),n=t.richTextAttrs,o=t.availableFonts,c=t.activeElementList,l=dt(),a=l.addHistorySnapshot,r=function(t,n){e.updateElement({id:t,props:n}),a()},i=["12px","14px","16px","18px","20px","22px","24px","28px","32px","36px","40px","44px","48px","54px","60px","66px","72px","76px","80px","88px","96px","104px","112px","120px"],u=Object(j["ref"])("#fff"),d=Object(j["ref"])({width:0,color:"#fff",style:"solid"}),s=function(e){var t,n=Object(T["a"])(c.value);try{for(n.s();!(t=n.n()).done;){var o=t.value;if("text"!==o.type&&"shape"!==o.type&&"chart"!==o.type||r(o.id,{fill:e}),"table"===o.type){for(var l=JSON.parse(JSON.stringify(o.data)),a=0;a1){if(!c.value)return gj;var e=n.value.find((function(e){return e.id===c.value}));return e&&xj[e.type]||null}return o.value&&xj[o.value.type]||null}));return{handleElement:o,currentPanelComponent:l}}});const kj=eo()(Cj,[["render",cm]]);var Ej=kj,wj=function(e){return Object(j["pushScopeId"])("data-v-4f10fba6"),e=e(),Object(j["popScopeId"])(),e},Nj={class:"element-positopn-panel"},Vj=wj((function(){return Object(j["createElementVNode"])("div",{class:"title"},"层级:",-1)})),Ij=Object(j["createTextVNode"])(" 置于顶层"),Sj=Object(j["createTextVNode"])(" 置于底层"),Bj=Object(j["createTextVNode"])(" 上移一层"),Lj=Object(j["createTextVNode"])(" 下移一层"),Tj=wj((function(){return Object(j["createElementVNode"])("div",{class:"title"},"对齐:",-1)})),_j={class:"row"},Mj=wj((function(){return Object(j["createElementVNode"])("div",{style:{flex:"3"}},"位置:",-1)})),Dj=wj((function(){return Object(j["createElementVNode"])("div",{style:{flex:"1"}},null,-1)})),zj=Object(j["createStaticVNode"])('
X
Y
',1),Aj={class:"row"},Fj=wj((function(){return Object(j["createElementVNode"])("div",{style:{flex:"3"}},"大小:",-1)})),Rj={key:1,style:{flex:"1"}},Pj=Object(j["createStaticVNode"])('
',1),Hj={class:"row"},qj=wj((function(){return Object(j["createElementVNode"])("div",{style:{flex:"3"}},"旋转:",-1)})),Uj=wj((function(){return Object(j["createElementVNode"])("div",{style:{flex:"1"}},null,-1)}));function Wj(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconSendToBack"),r=Object(j["resolveComponent"])("Button"),i=Object(j["resolveComponent"])("IconBringToFrontOne"),u=Object(j["resolveComponent"])("ButtonGroup"),d=Object(j["resolveComponent"])("IconBringToFront"),s=Object(j["resolveComponent"])("IconSentToBack"),f=Object(j["resolveComponent"])("Divider"),b=Object(j["resolveComponent"])("IconAlignLeft"),m=Object(j["resolveComponent"])("Tooltip"),p=Object(j["resolveComponent"])("IconAlignVertically"),v=Object(j["resolveComponent"])("IconAlignRight"),O=Object(j["resolveComponent"])("IconAlignTop"),h=Object(j["resolveComponent"])("IconAlignHorizontally"),y=Object(j["resolveComponent"])("IconAlignBottom"),g=Object(j["resolveComponent"])("InputNumber"),x=Object(j["resolveComponent"])("IconLock"),C=Object(j["resolveComponent"])("IconUnlock"),k=Object(j["resolveComponent"])("IconRotate");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Nj,[Vj,Object(j["createVNode"])(u,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[0]||(t[0]=function(t){return e.orderElement(e.handleElement,e.ElementOrderCommands.TOP)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{class:"btn-icon"}),Ij]})),_:1}),Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[1]||(t[1]=function(t){return e.orderElement(e.handleElement,e.ElementOrderCommands.BOTTOM)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{class:"btn-icon"}),Sj]})),_:1})]})),_:1}),Object(j["createVNode"])(u,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[2]||(t[2]=function(t){return e.orderElement(e.handleElement,e.ElementOrderCommands.UP)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d,{class:"btn-icon"}),Bj]})),_:1}),Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[3]||(t[3]=function(t){return e.orderElement(e.handleElement,e.ElementOrderCommands.DOWN)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(s,{class:"btn-icon"}),Lj]})),_:1})]})),_:1}),Object(j["createVNode"])(f),Tj,Object(j["createVNode"])(u,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[4]||(t[4]=function(t){return e.alignElementToCanvas(e.ElementAlignCommands.LEFT)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"水平居中"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[5]||(t[5]=function(t){return e.alignElementToCanvas(e.ElementAlignCommands.HORIZONTAL)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(p)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[6]||(t[6]=function(t){return e.alignElementToCanvas(e.ElementAlignCommands.RIGHT)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(v)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(u,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[7]||(t[7]=function(t){return e.alignElementToCanvas(e.ElementAlignCommands.TOP)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(O)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"垂直居中"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[8]||(t[8]=function(t){return e.alignElementToCanvas(e.ElementAlignCommands.VERTICAL)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(h)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[9]||(t[9]=function(t){return e.alignElementToCanvas(e.ElementAlignCommands.BOTTOM)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(y)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(f),Object(j["createElementVNode"])("div",_j,[Mj,Object(j["createVNode"])(g,{step:5,value:e.left,onChange:t[10]||(t[10]=function(t){return e.updateLeft(t)}),style:{flex:"4"}},null,8,["value"]),Dj,Object(j["createVNode"])(g,{step:5,value:e.top,onChange:t[11]||(t[11]=function(t){return e.updateTop(t)}),style:{flex:"4"}},null,8,["value"])]),zj,"line"!==e.handleElement.type?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[Object(j["createElementVNode"])("div",Aj,[Fj,Object(j["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(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[e.fixedRatio?(Object(j["openBlock"])(),Object(j["createBlock"])(m,{key:0,mouseLeaveDelay:0,mouseEnterDelay:.5,title:"解除宽高比锁定"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(x,{style:{flex:"1"},class:"icon-btn",onClick:t[13]||(t[13]=function(t){return e.updateFixedRatio(!1)})})]})),_:1},8,["mouseEnterDelay"])):(Object(j["openBlock"])(),Object(j["createBlock"])(m,{key:1,mouseLeaveDelay:0,mouseEnterDelay:.5,title:"宽高比锁定"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(C,{style:{flex:"1"},class:"icon-btn",onClick:t[14]||(t[14]=function(t){return e.updateFixedRatio(!0)})})]})),_:1},8,["mouseEnterDelay"]))],64)):(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Rj)),Object(j["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"])]),Pj],64)):Object(j["createCommentVNode"])("",!0),["line","video","audio"].includes(e.handleElement.type)?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:1},[Object(j["createVNode"])(f),Object(j["createElementVNode"])("div",Hj,[qj,Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"逆时针旋转"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(k,{class:"icon-btn",onClick:t[16]||(t[16]=function(t){return e.updateRotate45("-")}),style:{flex:"2"}})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"顺时针旋转"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(k,{class:"icon-btn",onClick:t[17]||(t[17]=function(t){return e.updateRotate45("+")}),style:Object(j["normalizeStyle"])({flex:2,transform:"rotateY(180deg)"})},null,8,["style"])]})),_:1},8,["mouseEnterDelay"]),Uj,Object(j["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 Gj=Object(j["defineComponent"])({name:"element-positopn-panel",setup:function(){var e=ae(),t=Object(y["c"])(ue()),n=t.handleElement,o=t.handleElementId,c=Object(j["ref"])(0),l=Object(j["ref"])(0),a=Object(j["ref"])(0),r=Object(j["ref"])(0),i=Object(j["ref"])(0),u=Object(j["ref"])(!1),d=Object(j["computed"])((function(){return n.value&&jo[n.value.type]||20}));Object(j["watch"])(n,(function(){n.value&&(c.value=Object(ne["round"])(n.value.left,1),l.value=Object(ne["round"])(n.value.top,1),u.value="fixedRatio"in n.value&&!!n.value.fixedRatio,"line"!==n.value.type&&(a.value=Object(ne["round"])(n.value.width,1),r.value=Object(ne["round"])(n.value.height,1),i.value="rotate"in n.value&&void 0!==n.value.rotate?Object(ne["round"])(n.value.rotate,1):0))}),{deep:!0,immediate:!0});var s=gt(),f=s.orderElement,b=Io(),m=b.alignElementToCanvas,p=dt(),v=p.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()},g=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()},w=function(t){var n={fixedRatio:t};e.updateElement({id:o.value,props:n}),v()},N=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 c={rotate:n};e.updateElement({id:o.value,props:c}),v()};return{handleElement:n,orderElement:f,alignElementToCanvas:m,left:c,top:l,width:a,height:r,rotate:i,fixedRatio:u,minSize:d,updateLeft:O,updateTop:h,updateWidth:g,updateHeight:x,updateRotate:C,updateFixedRatio:w,updateRotate45:N,ElementOrderCommands:k,ElementAlignCommands:E}}});n("568a");const Xj=eo()(Gj,[["render",Wj],["__scopeId","data-v-4f10fba6"]]);var Yj=Xj,Zj=function(e){return Object(j["pushScopeId"])("data-v-11684c24"),e=e(),Object(j["popScopeId"])(),e},Jj={class:"element-animation-panel"},Kj={key:0,class:"element-animation"},Qj={class:"tabs"},$j=["onClick"],ey={class:"type-title"},ty={class:"pool-item-wrapper"},ny=["onMouseenter","onClick"],oy={key:0,class:"mask"},cy=Object(j["createTextVNode"])(" 添加动画 "),ly={key:1,class:"tip"},ay=Object(j["createTextVNode"])(" 选中画布中的元素添加动画"),ry={class:"sequence-content"},iy={class:"index"},uy={class:"text"},dy={class:"handler"},sy={key:0,class:"configs"},fy={class:"config-item"},by=Zj((function(){return Object(j["createElementVNode"])("div",{style:{flex:"3"}},"持续时长:",-1)})),my={class:"config-item"},py=Zj((function(){return Object(j["createElementVNode"])("div",{style:{flex:"3"}},"触发方式:",-1)})),vy=Object(j["createTextVNode"])("主动触发"),Oy=Object(j["createTextVNode"])("与上一动画同时"),hy=Object(j["createTextVNode"])("上一动画之后"),jy={class:"config-item"},yy=Object(j["createTextVNode"])("更换动画");function gy(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconEffects"),r=Object(j["resolveComponent"])("Button"),i=Object(j["resolveComponent"])("Popover"),u=Object(j["resolveComponent"])("IconClick"),d=Object(j["resolveComponent"])("Divider"),s=Object(j["resolveComponent"])("IconPlayOne"),f=Object(j["resolveComponent"])("Tooltip"),b=Object(j["resolveComponent"])("IconCloseSmall"),m=Object(j["resolveComponent"])("InputNumber"),p=Object(j["resolveComponent"])("SelectOption"),v=Object(j["resolveComponent"])("Select"),O=Object(j["resolveComponent"])("Draggable");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Jj,[e.handleElement?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Kj,[Object(j["createVNode"])(i,{trigger:"click",visible:e.animationPoolVisible,"onUpdate:visible":t[2]||(t[2]=function(t){return e.animationPoolVisible=t}),onVisibleChange:t[3]||(t[3]=function(t){return e.handlePopoverVisibleChange(t)})},{content:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",Qj,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.tabs,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["tab",t.key,{active:e.activeTab===t.key}]),key:t.key,onClick:function(n){return e.activeTab=t.key}},Object(j["toDisplayString"])(t.label),11,$j)})),128))]),(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.animationTypes,(function(n){return Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],null,[e.activeTab===n?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["animation-pool",n]),key:n},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.animations[n],(function(o){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"pool-type",key:o.name},[Object(j["createElementVNode"])("div",ey,Object(j["toDisplayString"])(o.name)+":",1),Object(j["createElementVNode"])("div",ty,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(o.children,(function(o){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"pool-item",key:o.name,onMouseenter:function(t){return e.hoverPreviewAnimation=o.value},onMouseleave:t[0]||(t[0]=function(t){return e.hoverPreviewAnimation=""}),onClick:function(t){return e.addAnimation(n,o.value)}},[Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["animation-box",["".concat(e.prefix,"animated"),"".concat(e.prefix,"fast"),e.hoverPreviewAnimation===o.value&&"".concat(e.prefix).concat(o.value)]])},Object(j["toDisplayString"])(o.name),3)],40,ny)})),128))])])})),128)),e.popoverMaskHide?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",oy))],2)):Object(j["createCommentVNode"])("",!0)],64)})),256))]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{class:"element-animation-btn",onClick:t[1]||(t[1]=function(t){return e.handleAnimationId=""})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{style:{"margin-right":"5px"}}),cy]})),_:1})]})),_:1},8,["visible"])])):(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",ly,[Object(j["createVNode"])(u,{style:{"margin-right":"5px"}}),ay])),Object(j["createVNode"])(d),Object(j["createVNode"])(O,{class:"animation-sequence",modelValue:e.animationSequence,animation:300,scroll:!0,scrollSensitivity:50,handle:".sequence-content",onEnd:e.handleDragEnd,itemKey:"id"},{item:Object(j["withCtx"])((function(t){var n,o,c=t.element;return[Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["sequence-item",[c.type,{active:(null===(n=e.handleElement)||void 0===n?void 0:n.id)===c.elId}]])},[Object(j["createElementVNode"])("div",ry,[Object(j["createElementVNode"])("div",iy,Object(j["toDisplayString"])(c.index),1),Object(j["createElementVNode"])("div",uy,"【"+Object(j["toDisplayString"])(c.elType)+"】"+Object(j["toDisplayString"])(c.animationEffect),1),Object(j["createElementVNode"])("div",dy,[Object(j["createVNode"])(f,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"预览"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(s,{class:"handler-btn",onClick:function(t){return e.runAnimation(c.elId,c.effect,c.duration)}},null,8,["onClick"])]})),_:2},1032,["mouseEnterDelay"]),Object(j["createVNode"])(f,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b,{class:"handler-btn",onClick:function(t){return e.deleteAnimation(c.id)}},null,8,["onClick"])]})),_:2},1032,["mouseEnterDelay"])])]),(null===(o=e.handleElementAnimation[0])||void 0===o?void 0:o.elId)===c.elId?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",sy,[Object(j["createVNode"])(d,{style:{margin:"16px 0"}}),Object(j["createElementVNode"])("div",fy,[by,Object(j["createVNode"])(m,{min:500,max:3e3,step:500,value:c.duration,onChange:function(t){return e.updateElementAnimationDuration(c.id,t)},style:{flex:"5"}},null,8,["value","onChange"])]),Object(j["createElementVNode"])("div",my,[py,Object(j["createVNode"])(v,{value:c.trigger,onChange:function(t){return e.updateElementAnimationTrigger(c.id,t)},style:{flex:"5"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(p,{value:"click"},{default:Object(j["withCtx"])((function(){return[vy]})),_:1}),Object(j["createVNode"])(p,{value:"meantime"},{default:Object(j["withCtx"])((function(){return[Oy]})),_:1}),Object(j["createVNode"])(p,{value:"auto"},{default:Object(j["withCtx"])((function(){return[hy]})),_:1})]})),_:2},1032,["value","onChange"])]),Object(j["createElementVNode"])("div",jy,[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:function(t){return e.openAnimationPool(c.id)}},{default:Object(j["withCtx"])((function(){return[yy]})),_:2},1032,["onClick"])])])):Object(j["createCommentVNode"])("",!0)],2)]})),_:1},8,["modelValue","onEnd"])])}var xy,Cy=1e3,ky="click",Ey="animate__",wy=[{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"}]}],Ny=[{type:"bounce",name:"弹跳",children:[{name:"弹出",value:"bounceOut"},{name:"向左弹出",value:"bounceOutLeft"},{name:"向右弹出",value:"bounceOutRight"},{name:"向上弹出",value:"bounceOutUp"},{name:"向下弹出",value:"bounceOutDown"}]},{type:"fade",name:"浮现",children:[{name:"浮出",value:"fadeOut"},{name:"向下浮出",value:"fadeOutDown"},{name:"向下长距浮出",value:"fadeOutDownBig"},{name:"向左浮出",value:"fadeOutLeft"},{name:"向左长距浮出",value:"fadeOutLeftBig"},{name:"向右浮出",value:"fadeOutRight"},{name:"向右长距浮出",value:"fadeOutRightBig"},{name:"向上浮出",value:"fadeOutUp"},{name:"向上长距浮出",value:"fadeOutUpBig"},{name:"从左上浮出",value:"fadeOutTopLeft"},{name:"从右上浮出",value:"fadeOutTopRight"},{name:"从左下浮出",value:"fadeOutBottomLeft"},{name:"从右下浮出",value:"fadeOutBottomRight"}]},{type:"rotate",name:"旋转",children:[{name:"旋转退出",value:"rotateOut"},{name:"绕左下退出",value:"rotateOutDownLeft"},{name:"绕右下退出",value:"rotateOutDownRight"},{name:"绕左上退出",value:"rotateOutUpLeft"},{name:"绕右上退出",value:"rotateOutUpRight"}]},{type:"zoom",name:"缩放",children:[{name:"缩小退出",value:"zoomOut"},{name:"向下缩小退出",value:"zoomOutDown"},{name:"从左缩小退出",value:"zoomOutLeft"},{name:"从右缩小退出",value:"zoomOutRight"},{name:"向上缩小退出",value:"zoomOutUp"}]},{type:"slide",name:"滑出",children:[{name:"向下滑出",value:"slideOutDown"},{name:"从左滑出",value:"slideOutLeft"},{name:"从右滑出",value:"slideOutRight"},{name:"向上滑出",value:"slideOutUp"}]},{type:"flip",name:"翻转",children:[{name:"X轴翻转退出",value:"flipOutX"},{name:"Y轴翻转退出",value:"flipOutY"}]},{type:"back",name:"缩小滑出",children:[{name:"向下缩小滑出",value:"backOutDown"},{name:"从左缩小滑出",value:"backOutLeft"},{name:"从右缩小滑出",value:"backOutRight"},{name:"向上缩小滑出",value:"backOutUp"}]},{type:"lightSpeed",name:"飞出",children:[{name:"从右飞出",value:"lightSpeedOutRight"},{name:"从左飞出",value:"lightSpeedOutLeft"}]}],Vy=[{type:"shake",name:"晃动",children:[{name:"左右摇晃",value:"shakeX"},{name:"上下摇晃",value:"shakeY"},{name:"摇头",value:"headShake"},{name:"摆动",value:"swing"},{name:"晃动",value:"wobble"},{name:"惊恐",value:"tada"},{name:"果冻",value:"jello"}]},{type:"other",name:"其他",children:[{name:"弹跳",value:"bounce"},{name:"闪烁",value:"flash"},{name:"脉搏",value:"pulse"},{name:"橡皮筋",value:"rubberBand"},{name:"心跳(快)",value:"heartBeat"}]}],Iy={},Sy=Object(T["a"])(wy);try{for(Sy.s();!(xy=Sy.n()).done;){var By,Ly=xy.value,Ty=Object(T["a"])(Ly.children);try{for(Ty.s();!(By=Ty.n()).done;){var _y=By.value;Iy[_y.value]=_y.name}}catch(rL){Ty.e(rL)}finally{Ty.f()}}}catch(rL){Sy.e(rL)}finally{Sy.f()}var My,Dy=Object(T["a"])(Ny);try{for(Dy.s();!(My=Dy.n()).done;){var zy,Ay=My.value,Fy=Object(T["a"])(Ay.children);try{for(Fy.s();!(zy=Fy.n()).done;){var Ry=zy.value;Iy[Ry.value]=Ry.name}}catch(rL){Fy.e(rL)}finally{Fy.f()}}}catch(rL){Dy.e(rL)}finally{Dy.f()}var Py,Hy=Object(T["a"])(Vy);try{for(Hy.s();!(Py=Hy.n()).done;){var qy,Uy=Py.value,Wy=Object(T["a"])(Uy.children);try{for(Wy.s();!(qy=Wy.n()).done;){var Gy=qy.value;Iy[Gy.value]=Gy.name}}catch(rL){Wy.e(rL)}finally{Wy.f()}}}catch(rL){Hy.e(rL)}finally{Hy.f()}var Xy=["in","out","attention"],Yy=Object(j["defineComponent"])({name:"element-animation-panel",components:{Draggable:Hb.a},setup:function(){var e=ae(),t=Object(y["c"])(ue()),n=t.handleElement,o=t.handleElementId,c=Object(y["c"])(e),l=c.currentSlide,a=c.formatedAnimations,r=c.currentSlideAnimations,i=[{key:"in",label:"入场"},{key:"out",label:"退场"},{key:"attention",label:"强调"}],u=Object(j["ref"])("in");Object(j["watch"])((function(){return o.value}),(function(){s.value=!1}));var d=Object(j["ref"])(""),s=Object(j["ref"])(!1),f=dt(),b=f.addHistorySnapshot,m=Object(j["computed"])((function(){for(var e=[],t=0;t5e3)){var o=r.value.map((function(e){return e.id===t?Object(L["a"])(Object(L["a"])({},e),{},{duration:n}):e}));e.updateSlide({animations:o}),b()}},x=function(t,n){var o=r.value.map((function(e){return e.id===t?Object(L["a"])(Object(L["a"])({},e),{},{trigger:n}):e}));e.updateSlide({animations:o}),b()},k=function(t,n){var c=r.value.map((function(e){return e.id===E.value?Object(L["a"])(Object(L["a"])({},e),{},{type:t,effect:n}):e}));e.updateSlide({animations:c}),s.value=!1,b();var l=r.value.find((function(e){return e.elId===o.value})),a=(null===l||void 0===l?void 0:l.duration)||Cy;h(o.value,n,a)},E=Object(j["ref"])(""),w=function(t,n){if(E.value)k(t,n);else{var c=JSON.parse(JSON.stringify(r.value));c.push({id:Object(C["b"])(10),elId:o.value,type:t,effect:n,duration:Cy,trigger:ky}),e.updateSlide({animations:c}),s.value=!1,b(),h(o.value,n,Cy)}},N=Object(j["ref"])(!1),V=function(e){e?setTimeout((function(){return N.value=!0}),600):N.value=!1},I=function(e){s.value=!0,E.value=e,V(!0)};return{tabs:i,activeTab:u,handleAnimationId:E,handleElement:n,animationPoolVisible:s,animationSequence:m,hoverPreviewAnimation:d,handleElementAnimation:p,popoverMaskHide:N,animations:{in:wy,out:Ny,attention:Vy},prefix:Ey,animationTypes:Xy,addAnimation:w,deleteAnimation:v,handleDragEnd:O,runAnimation:h,updateElementAnimationDuration:g,updateElementAnimationTrigger:x,handlePopoverVisibleChange:V,openAnimationPool:I}}});n("4aec");const Zy=eo()(Yy,[["render",gy],["__scopeId","data-v-11684c24"]]);var Jy=Zy,Ky=function(e){return Object(j["pushScopeId"])("data-v-26058d12"),e=e(),Object(j["popScopeId"])(),e},Qy={class:"slide-design-panel"},$y=Ky((function(){return Object(j["createElementVNode"])("div",{class:"title"},"背景填充",-1)})),eg={class:"row"},tg=Object(j["createTextVNode"])("纯色填充"),ng=Object(j["createTextVNode"])("图片填充"),og=Object(j["createTextVNode"])("渐变填充"),cg=Ky((function(){return Object(j["createElementVNode"])("div",{style:{flex:"1"}},null,-1)})),lg=Object(j["createTextVNode"])("缩放"),ag=Object(j["createTextVNode"])("拼贴"),rg=Object(j["createTextVNode"])("缩放铺满"),ig=Object(j["createTextVNode"])("线性渐变"),ug=Object(j["createTextVNode"])("径向渐变"),dg={key:0,class:"background-image-wrapper"},sg={class:"background-image"},fg={key:1,class:"background-gradient-wrapper"},bg={class:"row"},mg=Ky((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"起点颜色:",-1)})),pg={class:"row"},vg=Ky((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"终点颜色:",-1)})),Og={key:0,class:"row"},hg=Ky((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"渐变角度:",-1)})),jg={class:"row"},yg=Object(j["createTextVNode"])("应用背景到全部"),gg={class:"row"},xg=Ky((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"画布尺寸:",-1)})),Cg=Object(j["createTextVNode"])("宽屏 16 : 9"),kg=Object(j["createTextVNode"])("宽屏 16 :10"),Eg=Object(j["createTextVNode"])("标准 4 :3"),wg=Ky((function(){return Object(j["createElementVNode"])("div",{class:"title"},"全局主题",-1)})),Ng={class:"row"},Vg=Ky((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"字体:",-1)})),Ig={class:"row"},Sg=Ky((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"字体颜色:",-1)})),Bg={class:"row"},Lg=Ky((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"背景颜色:",-1)})),Tg={class:"row"},_g=Ky((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"主题色:",-1)})),Mg=Object(j["createTextVNode"])(" 预置主题 "),Dg={key:2,class:"theme-list"},zg=["onClick"],Ag={class:"theme-item-content"},Fg={class:"row"},Rg=Object(j["createTextVNode"])("应用主题到全部");function Pg(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("SelectOption"),r=Object(j["resolveComponent"])("Select"),i=Object(j["resolveComponent"])("ColorPicker"),u=Object(j["resolveComponent"])("ColorButton"),d=Object(j["resolveComponent"])("Popover"),s=Object(j["resolveComponent"])("IconPlus"),f=Object(j["resolveComponent"])("FileInput"),b=Object(j["resolveComponent"])("Slider"),m=Object(j["resolveComponent"])("Button"),p=Object(j["resolveComponent"])("Divider"),v=Object(j["resolveComponent"])("SelectOptGroup"),O=Object(j["resolveComponent"])("IconDown");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Qy,[$y,Object(j["createElementVNode"])("div",eg,[Object(j["createVNode"])(r,{style:{flex:"10"},value:e.background.type,onChange:t[0]||(t[0]=function(t){return e.updateBackgroundType(t)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{value:"solid"},{default:Object(j["withCtx"])((function(){return[tg]})),_:1}),Object(j["createVNode"])(a,{value:"image"},{default:Object(j["withCtx"])((function(){return[ng]})),_:1}),Object(j["createVNode"])(a,{value:"gradient"},{default:Object(j["withCtx"])((function(){return[og]})),_:1})]})),_:1},8,["value"]),cg,"solid"===e.background.type?(Object(j["openBlock"])(),Object(j["createBlock"])(d,{key:0,trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{modelValue:e.background.color,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.updateBackground({color:t})})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,{color:e.background.color||"#fff",style:{flex:"10"}},null,8,["color"])]})),_:1})):"image"===e.background.type?(Object(j["openBlock"])(),Object(j["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(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{value:"contain"},{default:Object(j["withCtx"])((function(){return[lg]})),_:1}),Object(j["createVNode"])(a,{value:"repeat"},{default:Object(j["withCtx"])((function(){return[ag]})),_:1}),Object(j["createVNode"])(a,{value:"cover"},{default:Object(j["withCtx"])((function(){return[rg]})),_:1})]})),_:1},8,["value"])):(Object(j["openBlock"])(),Object(j["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(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{value:"linear"},{default:Object(j["withCtx"])((function(){return[ig]})),_:1}),Object(j["createVNode"])(a,{value:"radial"},{default:Object(j["withCtx"])((function(){return[ug]})),_:1})]})),_:1},8,["value"]))]),"image"===e.background.type?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",dg,[Object(j["createVNode"])(f,{onChange:t[4]||(t[4]=function(t){return e.uploadBackgroundImage(t)})},{default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",sg,[Object(j["createElementVNode"])("div",{class:"content",style:Object(j["normalizeStyle"])({backgroundImage:"url(".concat(e.background.image,")")})},[Object(j["createVNode"])(s)],4)])]})),_:1})])):Object(j["createCommentVNode"])("",!0),"gradient"===e.background.type?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",fg,[Object(j["createElementVNode"])("div",bg,[mg,Object(j["createVNode"])(d,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["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(j["withCtx"])((function(){return[Object(j["createVNode"])(u,{color:e.background.gradientColor[0],style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createElementVNode"])("div",pg,[vg,Object(j["createVNode"])(d,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["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(j["withCtx"])((function(){return[Object(j["createVNode"])(u,{color:e.background.gradientColor[1],style:{flex:"3"}},null,8,["color"])]})),_:1})]),"linear"===e.background.gradientType?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Og,[hg,Object(j["createVNode"])(b,{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(j["createCommentVNode"])("",!0)])):Object(j["createCommentVNode"])("",!0),Object(j["createElementVNode"])("div",jg,[Object(j["createVNode"])(m,{style:{flex:"1"},onClick:t[8]||(t[8]=function(t){return e.applyBackgroundAllSlide()})},{default:Object(j["withCtx"])((function(){return[yg]})),_:1})]),Object(j["createVNode"])(p),Object(j["createElementVNode"])("div",gg,[xg,Object(j["createVNode"])(r,{style:{flex:"3"},value:e.viewportRatio,onChange:t[9]||(t[9]=function(t){return e.updateViewportRatio(t)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{value:.5625},{default:Object(j["withCtx"])((function(){return[Cg]})),_:1},8,["value"]),Object(j["createVNode"])(a,{value:.625},{default:Object(j["withCtx"])((function(){return[kg]})),_:1},8,["value"]),Object(j["createVNode"])(a,{value:.75},{default:Object(j["withCtx"])((function(){return[Eg]})),_:1},8,["value"])]})),_:1},8,["value"])]),Object(j["createVNode"])(p),wg,Object(j["createElementVNode"])("div",Ng,[Vg,Object(j["createVNode"])(r,{style:{flex:"3"},value:e.theme.fontName,onChange:t[10]||(t[10]=function(t){return e.updateTheme({fontName:t})})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(v,{label:"系统字体"},{default:Object(j["withCtx"])((function(){return[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.availableFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:e.value,value:e.value},{default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("span",{style:Object(j["normalizeStyle"])({fontFamily:e.value})},Object(j["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(j["createVNode"])(v,{label:"在线字体"},{default:Object(j["withCtx"])((function(){return[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.webFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:e.value,value:e.value},{default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("span",null,Object(j["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"])]),Object(j["createElementVNode"])("div",Ig,[Sg,Object(j["createVNode"])(d,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{modelValue:e.theme.fontColor,"onUpdate:modelValue":t[11]||(t[11]=function(t){return e.updateTheme({fontColor:t})})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,{color:e.theme.fontColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createElementVNode"])("div",Bg,[Lg,Object(j["createVNode"])(d,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{modelValue:e.theme.backgroundColor,"onUpdate:modelValue":t[12]||(t[12]=function(t){return e.updateTheme({backgroundColor:t})})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,{color:e.theme.backgroundColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createElementVNode"])("div",Tg,[_g,Object(j["createVNode"])(d,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{modelValue:e.theme.themeColor,"onUpdate:modelValue":t[13]||(t[13]=function(t){return e.updateTheme({themeColor:t})})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,{color:e.theme.themeColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["title dropdown",{active:e.showPresetThemes}]),onClick:t[14]||(t[14]=function(t){return e.togglePresetThemesVisible()}),style:{"margin-top":"20px"}},[Mg,Object(j["createVNode"])(O,{class:"icon"})],2),e.showPresetThemes?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Dg,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.themes,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"theme-item",key:n,style:Object(j["normalizeStyle"])({backgroundColor:t.background}),onClick:function(n){return e.updateTheme({fontColor:t.text,backgroundColor:t.background,themeColor:t.color})}},[Object(j["createElementVNode"])("div",Ag,[Object(j["createElementVNode"])("div",{class:"text",style:Object(j["normalizeStyle"])({color:t.text})},"Aa",4),Object(j["createElementVNode"])("div",{class:"color-block",style:Object(j["normalizeStyle"])({backgroundColor:t.color})},null,4)])],12,zg)})),128))])):Object(j["createCommentVNode"])("",!0),Object(j["createElementVNode"])("div",Fg,[Object(j["createVNode"])(m,{style:{flex:"1"},onClick:t[15]||(t[15]=function(t){return e.applyThemeAllSlide()})},{default:Object(j["withCtx"])((function(){return[Rg]})),_:1})])])}var Hg=[{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"}],qg=Hg,Ug=B,Wg=Object(j["defineComponent"])({name:"slide-design-panel",components:{ColorButton:Qm},setup:function(){var e=ae(),t=Object(y["c"])(ue()),n=t.availableFonts,o=Object(y["c"])(e),c=o.slides,l=o.currentSlide,a=o.viewportRatio,r=o.theme,i=Object(j["computed"])((function(){return l.value.background?l.value.background:{type:"solid",value:"#fff"}})),u=dt(),d=u.addHistorySnapshot,s=function(t){if("solid"===t){var n=Object(L["a"])(Object(L["a"])({},i.value),{},{type:"solid",color:i.value.color||"#fff"});e.updateSlide({background:n})}else if("image"===t){var o=Object(L["a"])(Object(L["a"])({},i.value),{},{type:"image",image:i.value.image||"",imageSize:i.value.imageSize||"cover"});e.updateSlide({background:o})}else{var c=Object(L["a"])(Object(L["a"])({},i.value),{},{type:"gradient",gradientType:i.value.gradientType||"linear",gradientColor:i.value.gradientColor||["#fff","#fff"],gradientRotate:i.value.gradientRotate||0});e.updateSlide({background:c})}d()},f=function(t){e.updateSlide({background:Object(L["a"])(Object(L["a"])({},i.value),t)}),d()},b=function(e){var t=e[0];t&<(t).then((function(e){return f({image:e})}))},m=function(){var t=c.value.map((function(e){return Object(L["a"])(Object(L["a"])({},e),{},{background:l.value.background})}));e.setSlides(t),d()},p=function(t){e.setTheme(t)},v=function(){var t,n=JSON.parse(JSON.stringify(c.value)),o=r.value,l=o.themeColor,a=o.backgroundColor,i=o.fontColor,u=o.fontName,s=Object(T["a"])(n);try{for(s.s();!(t=s.n()).done;){var f=t.value;f.background&&"image"===f.background.type||(f.background=Object(L["a"])(Object(L["a"])({},f.background),{},{type:"solid",color:a}));var b,m=f.elements,p=Object(T["a"])(m);try{for(p.s();!(b=p.n()).done;){var v=b.value;if("shape"===v.type)v.fill=l;else if("line"===v.type)v.color=l;else if("text"===v.type)v.defaultColor=i,v.defaultFontName=u,v.fill&&(v.fill=l);else if("table"===v.type){v.theme&&(v.theme.color=l);var O,h=Object(T["a"])(v.data);try{for(h.s();!(O=h.n()).done;){var j,y=O.value,g=Object(T["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(rL){g.e(rL)}finally{g.f()}}}catch(rL){h.e(rL)}finally{h.f()}}else"chart"===v.type?(v.themeColor=[l],v.gridColor=i):"latex"===v.type?v.color=i:"audio"===v.type&&(v.color=l)}}catch(rL){p.e(rL)}finally{p.f()}}}catch(rL){s.e(rL)}finally{s.f()}e.setSlides(n),d()},O=Object(j["ref"])(!0),h=function(){O.value=!O.value},g=function(t){e.setViewportRatio(t)};return{availableFonts:n,background:i,updateBackgroundType:s,updateBackground:f,uploadBackgroundImage:b,applyBackgroundAllSlide:m,themes:qg,theme:r,webFonts:Ug,updateTheme:p,applyThemeAllSlide:v,viewportRatio:a,updateViewportRatio:g,showPresetThemes:O,togglePresetThemesVisible:h}}});n("a26f");const Gg=eo()(Wg,[["render",Pg],["__scopeId","data-v-26058d12"]]);var Xg=Gg,Yg={class:"slide-animation-panel"},Zg={class:"animation-pool"},Jg=["onClick"],Kg={class:"animation-text"},Qg=Object(j["createTextVNode"])("应用到全部");function $g(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Yg,[Object(j["createElementVNode"])("div",Zg,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.animations,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["animation-item",{active:e.currentTurningMode===t.value}]),key:t.label,onClick:function(n){return e.updateTurningMode(t.value)}},[Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["animation-block",t.value])},null,2),Object(j["createElementVNode"])("div",Kg,Object(j["toDisplayString"])(t.label),1)],10,Jg)})),128))]),Object(j["createVNode"])(a,{style:{width:"100%"},onClick:t[0]||(t[0]=function(t){return e.applyAllSlide()})},{default:Object(j["withCtx"])((function(){return[Qg]})),_:1})])}var ex=Object(j["defineComponent"])({name:"slide-animation-panel",setup:function(){var e=ae(),t=Object(y["c"])(e),n=t.slides,o=t.currentSlide,c=Object(j["computed"])((function(){return o.value.turningMode||"slideY"})),l=[{label:"无",value:"no"},{label:"淡入淡出",value:"fade"},{label:"左右推移",value:"slideX"},{label:"上下推移",value:"slideY"}],a=dt(),r=a.addHistorySnapshot,i=function(t){t!==c.value&&(e.updateSlide({turningMode:t}),r())},u=function(){var t=n.value.map((function(e){return Object(L["a"])(Object(L["a"])({},e),{},{turningMode:o.value.turningMode})}));e.setSlides(t),r()};return{currentTurningMode:c,animations:l,updateTurningMode:i,applyAllSlide:u}}});n("6527");const tx=eo()(ex,[["render",$g],["__scopeId","data-v-78e88e36"]]);var nx=tx,ox={class:"multi-position-panel"},cx=Object(j["createTextVNode"])("水平均匀分布"),lx=Object(j["createTextVNode"])("垂直均匀分布"),ax=Object(j["createTextVNode"])("组合"),rx=Object(j["createTextVNode"])("取消组合");function ix(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconAlignLeft"),r=Object(j["resolveComponent"])("Button"),i=Object(j["resolveComponent"])("Tooltip"),u=Object(j["resolveComponent"])("IconAlignHorizontally"),d=Object(j["resolveComponent"])("IconAlignRight"),s=Object(j["resolveComponent"])("ButtonGroup"),f=Object(j["resolveComponent"])("IconAlignTop"),b=Object(j["resolveComponent"])("IconAlignVertically"),m=Object(j["resolveComponent"])("IconAlignBottom"),p=Object(j["resolveComponent"])("Divider"),v=Object(j["resolveComponent"])("IconGroup"),O=Object(j["resolveComponent"])("IconUngroup");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",ox,[Object(j["createVNode"])(s,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[0]||(t[0]=function(t){return e.alignElement(e.ElementAlignCommands.LEFT)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"水平居中"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[1]||(t[1]=function(t){return e.alignElement(e.ElementAlignCommands.HORIZONTAL)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[2]||(t[2]=function(t){return e.alignElement(e.ElementAlignCommands.RIGHT)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(s,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[3]||(t[3]=function(t){return e.alignElement(e.ElementAlignCommands.TOP)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"垂直居中"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[4]||(t[4]=function(t){return e.alignElement(e.ElementAlignCommands.VERTICAL)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[5]||(t[5]=function(t){return e.alignElement(e.ElementAlignCommands.BOTTOM)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(m)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),e.displayItemCount>2?(Object(j["openBlock"])(),Object(j["createBlock"])(s,{key:0,class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[6]||(t[6]=function(t){return e.uniformHorizontalDisplay()})},{default:Object(j["withCtx"])((function(){return[cx]})),_:1}),Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[7]||(t[7]=function(t){return e.uniformVerticalDisplay()})},{default:Object(j["withCtx"])((function(){return[lx]})),_:1})]})),_:1})):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])(p),Object(j["createVNode"])(s,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{disabled:!e.canCombine,onClick:t[8]||(t[8]=function(t){return e.combineElements()}),style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(v,{style:{"margin-right":"3px"}}),ax]})),_:1},8,["disabled"]),Object(j["createVNode"])(r,{disabled:e.canCombine,onClick:t[9]||(t[9]=function(t){return e.uncombineElements()}),style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(O,{style:{"margin-right":"3px"}}),rx]})),_:1},8,["disabled"])]})),_:1})])}var ux=function(){var e=ae(),t=Object(y["c"])(ue()),n=t.activeElementIdList,o=t.activeElementList,c=Object(y["c"])(e),l=c.currentSlide,a=dt(),r=a.addHistorySnapshot,i=function(t){var c,a=Ke(o.value),i=a.minX,u=a.maxX,d=a.minY,s=a.maxY,f=JSON.parse(JSON.stringify(l.value.elements)),b={},m=Object(T["a"])(o.value);try{var p=function(){var e=c.value;if(e.groupId&&!b[e.groupId]){var t=o.value.filter((function(t){return t.groupId===e.groupId}));b[e.groupId]=Ke(t)}};for(m.s();!(c=m.n()).done;)p()}catch(rL){m.e(rL)}finally{m.f()}if(t===E.LEFT)f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=b[e.groupId],o=t.minX-i;e.left=e.left-o}else if("rotate"in e&&e.rotate){var c=Ze({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),l=c.offsetX;e.left=i-l}else e.left=i}));else if(t===E.RIGHT)f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=b[e.groupId],o=t.maxX-u;e.left=e.left-o}else{var c="line"===e.type?Math.max(e.start[0],e.end[0]):e.width;if("rotate"in e&&e.rotate){var l=Ze({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),a=l.offsetX;e.left=u-c+a}else e.left=u-c}}));else if(t===E.TOP)f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=b[e.groupId],o=t.minY-d;e.top=e.top-o}else if("rotate"in e&&e.rotate){var c=Ze({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),l=c.offsetY;e.top=d-l}else e.top=d}));else if(t===E.BOTTOM)f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=b[e.groupId],o=t.maxY-s;e.top=e.top-o}else{var c="line"===e.type?Math.max(e.start[1],e.end[1]):e.height;if("rotate"in e&&e.rotate){var l=Ze({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),a=l.offsetY;e.top=s-c+a}else e.top=s-c}}));else if(t===E.HORIZONTAL){var v=(i+u)/2;f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=b[e.groupId],o=(t.maxX+t.minX)/2,c=o-v;e.left=e.left-c}else{var l="line"===e.type?Math.max(e.start[0],e.end[0]):e.width;e.left=v-l/2}}))}else if(t===E.VERTICAL){var O=(d+s)/2;f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=b[e.groupId],o=(t.maxY+t.minY)/2,c=o-O;e.top=e.top-c}else{var l="line"===e.type?Math.max(e.start[1],e.end[1]):e.height;e.top=O-l/2}}))}e.updateSlide({elements:f}),r()};return{alignActiveElement:i}},dx=(n("4e82"),function(){var e=ae(),t=Object(y["c"])(ue()),n=t.activeElementIdList,o=t.activeElementList,c=Object(y["c"])(e),l=c.currentSlide,a=dt(),r=a.addHistorySnapshot,i=Object(j["computed"])((function(){var e,t=0,n=[],c=Object(T["a"])(o.value);try{for(c.s();!(e=c.n()).done;){var l=e.value;l.groupId?n.includes(l.groupId)||(n.push(l.groupId),t+=1):t+=1}}catch(rL){c.e(rL)}finally{c.f()}return t})),u=function(){var t,c=Ke(o.value),a=c.minX,i=c.maxX,u=JSON.parse(JSON.stringify(o.value)),d=JSON.parse(JSON.stringify(l.value.elements)),s=[],f=[],b=Object(T["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(L["a"])(Object(L["a"])({},t),{},{els:[].concat(Object($["a"])(t.els),[e])}):t})):f.push({groupId:e.groupId,els:[e]})}else{var o=Je(e),c=o.minX,l=o.maxX;s.push({min:c,max:l,el:e})}};for(b.s();!(t=b.n()).done;)m()}catch(rL){b.e(rL)}finally{b.f()}var p,v=[],O=Object(T["a"])(f);try{for(O.s();!(p=O.n()).done;){var h=p.value,j=Ke(h.els),y=j.minX,g=j.maxX;v.push({min:y,max:g,els:h.els})}}catch(rL){O.e(rL)}finally{O.f()}var x=[].concat(s,v);x.sort((function(e,t){return e.min-t.min}));var C,k=0,E=Object(T["a"])(x);try{for(E.s();!(C=E.n()).done;){var w=C.value,N=w.max-w.min;k+=N}}catch(rL){E.e(rL)}finally{E.f()}var V=(i-a-k)/(x.length-1),I=[],S=x[0],B={min:S.min,max:S.max};if("el"in S)I.push({pos:S.min,el:S.el});else{var _,M=Object(T["a"])(S.els);try{for(M.s();!(_=M.n()).done;){var D=_.value,z=Je(D),A=z.minX;I.push({pos:A,el:D})}}catch(rL){M.e(rL)}finally{M.f()}}for(var F=1;F","l","o","g","l","g","l","n","⨂","⨁","⨄","⨃","⨅","⨆","√","∛","∜","∝","∞","∟","∠","∡","∢","∧","∨","∩","∪","∫","∬","∭","∮","∯","∰","∱","∲","∳","∴","∵","∼","∽","∾","∿","≃","≄","≅","≆","≇","≈","≊","≋","≌","≍","≎","≏","≐","≑","≒","≓","≔","≕","≤","≥","≦","≧","≨","≩","≪","≫","≺","≻","≼","≽","≾","≿","⊀","⊁","⊂","⊃","⊄","⊅","⊆","⊇","⊈","⊉","⊊","⊋","⊏","⊐","⊑","⊒","⊓","⊔","⊢","⊣","⊤","⊥","⊦","⊧","⊨","⊩","⊪","⊫","⊬","⊭","⊮","⊯","⊲","⊳","⊴","⊵","⋀","⋁","⋂","⋃","⋉","⋊","⋋","⋌","⟨","⟩","⟪","⟫","⟮","⟯","⧼","⧽","⦰"]},{key:"arrow",label:"箭头",children:["←","↑","→","↓","↔","↕","↖","↗","↘","↙","↚","↛","↜","↝","↞","↟","↠","↡","↢","↣","↤","↥","↦","↧","↨","↫","↬","↭","↮","↯","↰","↱","↲","↳","↴","↵","↶","↷","↸","↹","↺","↻","↼","↽","↾","↿","⇀","⇁","⇂","⇃","⇄","⇅","⇆","⇇","⇈","⇉","⇊","⇋","⇌","⇍","⇎","⇏","⇐","⇑","⇒","⇓","⇔","⇕","⇖","⇗","⇘","⇙","⇚","⇛","⇜","⇝","⇞","⇟","⇠","⇡","⇢","⇣","⇤","⇥","⇦","⇧","⇨","⇩","⇪","⇫","⇬","⇭","⇮","⇯","⇰","⇱","⇲","⇳","⇴","⇵","⇶","⇷","⇸","⇹","⇺","⇻","⇼","⇽","⇾","⇿"]},{key:"graph",label:"图形",children:["▢","▣","▤","▥","▦","▧","▨","▩","▭","▮","▯","▰","▱","▲","▷","▼","◁","◈","◉","◍","◐","◑","◒","◓","◔","◕","◧","◨","◩","◪","◫","◬","◭","◮"]}],xx=gx,Cx=Object(j["defineComponent"])({name:"symbol-panel",setup:function(){var e=Object(j["ref"])(xx[0].key),t=Object(j["computed"])((function(){var t=xx.find((function(t){return t.key===e.value}));return(null===t||void 0===t?void 0:t.children)||[]})),n=function(e){Cl.emit(zc.RICH_TEXT_COMMAND,{action:{command:"insert",value:e}})};return{symbolPoolList:xx,symbolPool:t,selectedSymbolKey:e,selectSymbol:n}}});n("f8c7");const kx=eo()(Cx,[["render",yx],["__scopeId","data-v-e93c4822"]]);var Ex=kx,wx=Object(j["defineComponent"])({name:"toolbar",setup:function(){var e=ue(),t=Object(y["c"])(e),n=t.activeElementIdList,o=t.handleElement,c=t.toolbarState,l=Object(j["computed"])((function(){var e;return"text"===(null===(e=o.value)||void 0===e?void 0:e.type)?[{label:"样式",value:x.EL_STYLE},{label:"符号",value:x.SYMBOL},{label:"位置",value:x.EL_POSITION},{label:"动画",value:x.EL_ANIMATION}]:[{label:"样式",value:x.EL_STYLE},{label:"位置",value:x.EL_POSITION},{label:"动画",value:x.EL_ANIMATION}]})),a=[{label:"设计",value:x.SLIDE_DESIGN},{label:"切换",value:x.SLIDE_ANIMATION},{label:"动画",value:x.EL_ANIMATION}],r=[{label:"样式",value:x.EL_STYLE},{label:"位置",value:x.MULTI_POSITION}],i=function(t){e.setToolbarState(t)},u=Object(j["computed"])((function(){return n.value.length?n.value.length>1?r:l.value:a}));Object(j["watch"])(u,(function(){var t=u.value.map((function(e){return e.value}));t.includes(c.value)||e.setToolbarState(t[0])}));var d=Object(j["computed"])((function(){var e,t=(e={},Object(pe["a"])(e,x.EL_STYLE,Ej),Object(pe["a"])(e,x.EL_POSITION,Yj),Object(pe["a"])(e,x.EL_ANIMATION,Jy),Object(pe["a"])(e,x.SLIDE_DESIGN,Xg),Object(pe["a"])(e,x.SLIDE_ANIMATION,nx),Object(pe["a"])(e,x.MULTI_POSITION,bx),Object(pe["a"])(e,x.SYMBOL,Ex),e);return t[c.value]||null}));return{toolbarState:c,currentTabs:u,setToolbarState:i,currentPanelComponent:d}}});n("0510");const Nx=eo()(wx,[["render",nm],["__scopeId","data-v-017ca85e"]]);var Vx=Nx,Ix={class:"remark"},Sx=["value"];function Bx(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Ix,[Object(j["createElementVNode"])("div",{class:"resize-handler",onMousedown:t[0]||(t[0]=function(t){return e.resize(t)})},null,32),Object(j["createElementVNode"])("textarea",{value:e.remark,placeholder:"点击输入演讲者备注",onInput:t[1]||(t[1]=function(t){return e.handleInput(t)})},null,40,Sx)])}var Lx=Object(j["defineComponent"])({name:"remark",emits:["update:height"],props:{height:{type:Number,required:!0}},setup:function(e,t){var n=t.emit,o=ae(),c=Object(y["c"])(o),l=c.currentSlide,a=Object(j["computed"])((function(){var e;return(null===(e=l.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,c=t.pageY,l=e.height;document.onmousemove=function(e){if(o){var t=e.pageY,a=t-c,r=-a+l;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("6339");const Tx=eo()(Lx,[["render",Bx],["__scopeId","data-v-7ed67bb3"]]);var _x=Tx,Mx={class:"export-dialog"},Dx={class:"tabs"},zx=["onClick"],Ax={class:"content"};function Fx(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Mx,[Object(j["createElementVNode"])("div",Dx,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.tabs,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["tab",{active:t.key===e.dialogForExport}]),key:t.key,onClick:function(n){return e.setDialogForExport(t.key)}},Object(j["toDisplayString"])(t.label),11,zx)})),128))]),Object(j["createElementVNode"])("div",Ax,[(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentDialogComponent),{onClose:t[0]||(t[0]=function(t){return e.setDialogForExport("")})},null,32))])])}var Rx=function(e){return Object(j["pushScopeId"])("data-v-61e92928"),e=e(),Object(j["popScopeId"])(),e},Px={class:"export-img-dialog"},Hx={class:"thumbnails-view"},qx={class:"thumbnails",ref:"imageThumbnailsRef"},Ux={class:"configs"},Wx={class:"row"},Gx=Rx((function(){return Object(j["createElementVNode"])("div",{class:"title"},"导出格式:",-1)})),Xx=Object(j["createTextVNode"])("JPEG"),Yx=Object(j["createTextVNode"])("PNG"),Zx={class:"row"},Jx=Rx((function(){return Object(j["createElementVNode"])("div",{class:"title"},"导出范围:",-1)})),Kx=Object(j["createTextVNode"])("全部"),Qx=Object(j["createTextVNode"])("当前页"),$x=Object(j["createTextVNode"])("自定义"),eC={key:0,class:"row"},tC=["data-range"],nC={class:"row"},oC=Rx((function(){return Object(j["createElementVNode"])("div",{class:"title"},"图片质量:",-1)})),cC={class:"row"},lC=Rx((function(){return Object(j["createElementVNode"])("div",{class:"title"},"忽略在线字体:",-1)})),aC={class:"config-item"},rC={class:"btns"},iC=Object(j["createTextVNode"])("导出图片"),uC=Object(j["createTextVNode"])("关闭");function dC(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ThumbnailSlide"),r=Object(j["resolveComponent"])("RadioButton"),i=Object(j["resolveComponent"])("RadioGroup"),u=Object(j["resolveComponent"])("Slider"),d=Object(j["resolveComponent"])("Switch"),s=Object(j["resolveComponent"])("Tooltip"),f=Object(j["resolveComponent"])("Button"),b=Object(j["resolveComponent"])("FullscreenSpin");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Px,[Object(j["createElementVNode"])("div",Hx,[Object(j["createElementVNode"])("div",qx,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.renderSlides,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{class:"thumbnail",key:e.id,slide:e,size:1600},null,8,["slide"])})),128))],512)]),Object(j["createElementVNode"])("div",Ux,[Object(j["createElementVNode"])("div",Wx,[Gx,Object(j["createVNode"])(i,{class:"config-item",value:e.format,"onUpdate:value":t[0]||(t[0]=function(t){return e.format=t})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{width:"50%"},value:"jpeg"},{default:Object(j["withCtx"])((function(){return[Xx]})),_:1}),Object(j["createVNode"])(r,{style:{width:"50%"},value:"png"},{default:Object(j["withCtx"])((function(){return[Yx]})),_:1})]})),_:1},8,["value"])]),Object(j["createElementVNode"])("div",Zx,[Jx,Object(j["createVNode"])(i,{class:"config-item",value:e.rangeType,"onUpdate:value":t[1]||(t[1]=function(t){return e.rangeType=t})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{width:"33.33%"},value:"all"},{default:Object(j["withCtx"])((function(){return[Kx]})),_:1}),Object(j["createVNode"])(r,{style:{width:"33.33%"},value:"current"},{default:Object(j["withCtx"])((function(){return[Qx]})),_:1}),Object(j["createVNode"])(r,{style:{width:"33.33%"},value:"custom"},{default:Object(j["withCtx"])((function(){return[$x]})),_:1})]})),_:1},8,["value"])]),"custom"===e.rangeType?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",eC,[Object(j["createElementVNode"])("div",{class:"title","data-range":"(".concat(e.range[0]," ~ ").concat(e.range[1],")")},"自定义范围:",8,tC),Object(j["createVNode"])(u,{class:"config-item",range:"",min:1,max:e.slides.length,step:1,value:e.range,"onUpdate:value":t[2]||(t[2]=function(t){return e.range=t})},null,8,["max","value"])])):Object(j["createCommentVNode"])("",!0),Object(j["createElementVNode"])("div",nC,[oC,Object(j["createVNode"])(u,{class:"config-item",min:0,max:1,step:.1,value:e.quality,"onUpdate:value":t[3]||(t[3]=function(t){return e.quality=t})},null,8,["step","value"])]),Object(j["createElementVNode"])("div",cC,[lC,Object(j["createElementVNode"])("div",aC,[Object(j["createVNode"])(s,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"导出时默认忽略在线字体,若您在幻灯片中使用了在线字体,且希望导出后保留相关样式,可选择关闭【忽略在线字体】选项,但要注意这将会增加导出用时。"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d,{checked:e.ignoreWebfont,"onUpdate:checked":t[4]||(t[4]=function(t){return e.ignoreWebfont=t})},null,8,["checked"])]})),_:1},8,["mouseEnterDelay"])])])]),Object(j["createElementVNode"])("div",rC,[Object(j["createVNode"])(f,{class:"btn export",type:"primary",onClick:t[5]||(t[5]=function(t){return e.expImage()})},{default:Object(j["withCtx"])((function(){return[iC]})),_:1}),Object(j["createVNode"])(f,{class:"btn close",onClick:t[6]||(t[6]=function(t){return e.close()})},{default:Object(j["withCtx"])((function(){return[uC]})),_:1})]),Object(j["createVNode"])(b,{loading:e.exporting,tip:"正在导出..."},null,8,["loading"])])}var sC=Object(j["defineComponent"])({name:"export-img-dialog",components:{ThumbnailSlide:ks},setup:function(e,t){var n=t.emit,o=Object(y["c"])(ae()),c=o.slides,l=o.currentSlide,a=Object(j["ref"])(),r=Object(j["ref"])("all"),i=Object(j["ref"])([1,c.value.length]),u=Object(j["ref"])("jpeg"),d=Object(j["ref"])(1),s=Object(j["ref"])(!0),f=Object(j["computed"])((function(){return"all"===r.value?c.value:"current"===r.value?[l.value]:c.value.filter((function(e,t){var n=Object(ve["a"])(i.value,2),o=n[0],c=n[1];return t>=o-1&&t<=c-1}))})),b=function(){return n("close")},m=Gn(),p=m.exportImage,v=m.exporting,O=function(){a.value&&p(a.value,u.value,d.value,s.value)};return{imageThumbnailsRef:a,slides:c,rangeType:r,range:i,format:u,quality:d,ignoreWebfont:s,renderSlides:f,exporting:v,expImage:O,close:b}}});n("cfda");const fC=eo()(sC,[["render",dC],["__scopeId","data-v-61e92928"]]);var bC=fC,mC={class:"export-json-dialog"},pC={class:"preview"},vC={class:"btns"},OC=Object(j["createTextVNode"])("导出 JSON"),hC=Object(j["createTextVNode"])("关闭");function jC(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",mC,[Object(j["createElementVNode"])("div",pC,[Object(j["createElementVNode"])("pre",null,Object(j["toDisplayString"])(e.slides),1)]),Object(j["createElementVNode"])("div",vC,[Object(j["createVNode"])(a,{class:"btn export",type:"primary",onClick:t[0]||(t[0]=function(t){return e.exportJSON()})},{default:Object(j["withCtx"])((function(){return[OC]})),_:1}),Object(j["createVNode"])(a,{class:"btn close",onClick:t[1]||(t[1]=function(t){return e.close()})},{default:Object(j["withCtx"])((function(){return[hC]})),_:1})])])}var yC=Object(j["defineComponent"])({name:"export-json-dialog",setup:function(e,t){var n=t.emit,o=function(){return n("close")},c=Object(y["c"])(ae()),l=c.slides,a=Gn(),r=a.exportJSON;return{slides:l,exportJSON:r,close:o}}});n("18cc");const gC=eo()(yC,[["render",jC],["__scopeId","data-v-54705363"]]);var xC=gC,CC=function(e){return Object(j["pushScopeId"])("data-v-7c83ddb5"),e=e(),Object(j["popScopeId"])(),e},kC={class:"export-pdf-dialog"},EC={class:"thumbnails-view"},wC={class:"thumbnails",ref:"pdfThumbnailsRef"},NC={class:"configs"},VC={class:"row"},IC=CC((function(){return Object(j["createElementVNode"])("div",{class:"title"},"导出范围:",-1)})),SC=Object(j["createTextVNode"])("全部幻灯片"),BC=Object(j["createTextVNode"])("当前幻灯片"),LC={class:"row"},TC=CC((function(){return Object(j["createElementVNode"])("div",{class:"title"},"每页数量:",-1)})),_C=Object(j["createTextVNode"])("1"),MC=Object(j["createTextVNode"])("2"),DC=Object(j["createTextVNode"])("3"),zC={class:"row"},AC=CC((function(){return Object(j["createElementVNode"])("div",{class:"title"},"边缘留白:",-1)})),FC={class:"config-item"},RC=CC((function(){return Object(j["createElementVNode"])("div",{class:"tip"}," 注意:若打印预览与实际样式不一致,请在弹出的打印窗口中勾选【背景图形】选项。 ",-1)})),PC={class:"btns"},HC=Object(j["createTextVNode"])("打印 / 导出 PDF"),qC=Object(j["createTextVNode"])("关闭");function UC(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ThumbnailSlide"),r=Object(j["resolveComponent"])("RadioButton"),i=Object(j["resolveComponent"])("RadioGroup"),u=Object(j["resolveComponent"])("SelectOption"),d=Object(j["resolveComponent"])("Select"),s=Object(j["resolveComponent"])("Switch"),f=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",kC,[Object(j["createElementVNode"])("div",EC,[Object(j["createElementVNode"])("div",wC,["current"===e.rangeType?(Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:0,class:"thumbnail",slide:e.currentSlide,size:1600},null,8,["slide"])):(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],{key:1},Object(j["renderList"])(e.slides,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{class:Object(j["normalizeClass"])(["thumbnail",{"break-page":(n+1)%e.count===0}]),key:t.id,slide:t,size:1600},null,8,["class","slide"])})),128))],512)]),Object(j["createElementVNode"])("div",NC,[Object(j["createElementVNode"])("div",VC,[IC,Object(j["createVNode"])(i,{class:"config-item",value:e.rangeType,"onUpdate:value":t[0]||(t[0]=function(t){return e.rangeType=t})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{width:"50%"},value:"all"},{default:Object(j["withCtx"])((function(){return[SC]})),_:1}),Object(j["createVNode"])(r,{style:{width:"50%"},value:"current"},{default:Object(j["withCtx"])((function(){return[BC]})),_:1})]})),_:1},8,["value"])]),Object(j["createElementVNode"])("div",LC,[TC,Object(j["createVNode"])(d,{class:"config-item",value:e.count,"onUpdate:value":t[1]||(t[1]=function(t){return e.count=t})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,{value:1},{default:Object(j["withCtx"])((function(){return[_C]})),_:1}),Object(j["createVNode"])(u,{value:2},{default:Object(j["withCtx"])((function(){return[MC]})),_:1}),Object(j["createVNode"])(u,{value:3},{default:Object(j["withCtx"])((function(){return[DC]})),_:1})]})),_:1},8,["value"])]),Object(j["createElementVNode"])("div",zC,[AC,Object(j["createElementVNode"])("div",FC,[Object(j["createVNode"])(s,{checked:e.padding,"onUpdate:checked":t[2]||(t[2]=function(t){return e.padding=t})},null,8,["checked"])])]),RC]),Object(j["createElementVNode"])("div",PC,[Object(j["createVNode"])(f,{class:"btn export",type:"primary",onClick:t[3]||(t[3]=function(t){return e.expPDF()})},{default:Object(j["withCtx"])((function(){return[HC]})),_:1}),Object(j["createVNode"])(f,{class:"btn close",onClick:t[4]||(t[4]=function(t){return e.close()})},{default:Object(j["withCtx"])((function(){return[qC]})),_:1})])])}var WC=function(){var e=document.createElement("iframe");return e.style.width="0",e.style.height="0",e.style.position="absolute",e.style.right="0",e.style.top="0",e.style.border="0",document.body.appendChild(e),e},GC=function(e,t,n){var o="",c="",l=document.styleSheets;if(l){var a,r=Object(T["a"])(l);try{for(r.s();!(a=r.n()).done;){var i=a.value;if(i.cssRules){var u,d=Object(T["a"])(i.cssRules);try{for(d.s();!(u=d.n()).done;){var s=u.value;c+=s.cssText}}catch(rL){d.e(rL)}finally{d.f()}}}}catch(rL){r.e(rL)}finally{r.f()}}var f=n.width,b=n.height,m=n.margin,p='\n \n \n \n "),v=""+t.innerHTML+"";e.open(),e.write("\n ".concat(o,"\n \n ").concat(p,"\n ").concat(v,"\n \n ")),e.close()},XC=function(e,t){var n=WC(),o=n.contentWindow;if(n.contentDocument&&o){GC(n.contentDocument,e,t);var c=function(){o.focus(),o.print(),document.body.removeChild(n)};n.addEventListener("load",c)}},YC=Object(j["defineComponent"])({name:"export-pdf-dialog",components:{ThumbnailSlide:ks},setup:function(e,t){var n=t.emit,o=Object(y["c"])(ae()),c=o.slides,l=o.currentSlide,a=Object(j["ref"])(),r=Object(j["ref"])("all"),i=Object(j["ref"])(1),u=Object(j["ref"])(!0),d=function(){return n("close")},s=function(){if(a.value){var e={width:1600,height:"all"===r.value?900*i.value:900,margin:u.value?50:0};XC(a.value,e)}};return{pdfThumbnailsRef:a,slides:c,currentSlide:l,rangeType:r,count:i,padding:u,expPDF:s,close:d}}});n("8ad9");const ZC=eo()(YC,[["render",UC],["__scopeId","data-v-7c83ddb5"]]);var JC=ZC,KC=function(e){return Object(j["pushScopeId"])("data-v-dad79818"),e=e(),Object(j["popScopeId"])(),e},QC={class:"export-pptx-dialog"},$C={class:"configs"},ek={class:"row"},tk=KC((function(){return Object(j["createElementVNode"])("div",{class:"title"},"导出范围:",-1)})),nk=Object(j["createTextVNode"])("全部"),ok=Object(j["createTextVNode"])("当前页"),ck=Object(j["createTextVNode"])("自定义"),lk={key:0,class:"row"},ak=["data-range"],rk={class:"row"},ik=KC((function(){return Object(j["createElementVNode"])("div",{class:"title"},"覆盖默认母版:",-1)})),uk={class:"config-item"},dk={class:"btns"},sk=Object(j["createTextVNode"])("导出 PPTX"),fk=Object(j["createTextVNode"])("关闭");function bk(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("RadioButton"),r=Object(j["resolveComponent"])("RadioGroup"),i=Object(j["resolveComponent"])("Slider"),u=Object(j["resolveComponent"])("Switch"),d=Object(j["resolveComponent"])("Button"),s=Object(j["resolveComponent"])("FullscreenSpin");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",QC,[Object(j["createElementVNode"])("div",$C,[Object(j["createElementVNode"])("div",ek,[tk,Object(j["createVNode"])(r,{class:"config-item",value:e.rangeType,"onUpdate:value":t[0]||(t[0]=function(t){return e.rangeType=t})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{style:{width:"33.33%"},value:"all"},{default:Object(j["withCtx"])((function(){return[nk]})),_:1}),Object(j["createVNode"])(a,{style:{width:"33.33%"},value:"current"},{default:Object(j["withCtx"])((function(){return[ok]})),_:1}),Object(j["createVNode"])(a,{style:{width:"33.33%"},value:"custom"},{default:Object(j["withCtx"])((function(){return[ck]})),_:1})]})),_:1},8,["value"])]),"custom"===e.rangeType?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",lk,[Object(j["createElementVNode"])("div",{class:"title","data-range":"(".concat(e.range[0]," ~ ").concat(e.range[1],")")},"自定义范围:",8,ak),Object(j["createVNode"])(i,{class:"config-item",range:"",min:1,max:e.slides.length,step:1,value:e.range,"onUpdate:value":t[1]||(t[1]=function(t){return e.range=t})},null,8,["max","value"])])):Object(j["createCommentVNode"])("",!0),Object(j["createElementVNode"])("div",rk,[ik,Object(j["createElementVNode"])("div",uk,[Object(j["createVNode"])(u,{checked:e.masterOverwrite,"onUpdate:checked":t[2]||(t[2]=function(t){return e.masterOverwrite=t})},null,8,["checked"])])])]),Object(j["createElementVNode"])("div",dk,[Object(j["createVNode"])(d,{class:"btn export",type:"primary",onClick:t[3]||(t[3]=function(t){return e.exportPPTX(e.selectedSlides,e.masterOverwrite)})},{default:Object(j["withCtx"])((function(){return[sk]})),_:1}),Object(j["createVNode"])(d,{class:"btn close",onClick:t[4]||(t[4]=function(t){return e.close()})},{default:Object(j["withCtx"])((function(){return[fk]})),_:1})]),Object(j["createVNode"])(s,{loading:e.exporting,tip:"正在导出..."},null,8,["loading"])])}var mk=Object(j["defineComponent"])({name:"export-pptx-dialog",setup:function(e,t){var n=t.emit,o=Object(y["c"])(ae()),c=o.slides,l=o.currentSlide,a=Object(j["ref"])("all"),r=Object(j["ref"])([1,c.value.length]),i=Object(j["ref"])(!0),u=Object(j["computed"])((function(){return"all"===a.value?c.value:"current"===a.value?[l.value]:c.value.filter((function(e,t){var n=Object(ve["a"])(r.value,2),o=n[0],c=n[1];return t>=o-1&&t<=c-1}))})),d=function(){return n("close")},s=Gn(),f=s.exportPPTX,b=s.exporting;return{slides:c,rangeType:a,range:r,masterOverwrite:i,exporting:b,selectedSlides:u,exportPPTX:f,close:d}}});n("4d4d");const pk=eo()(mk,[["render",bk],["__scopeId","data-v-dad79818"]]);var vk=pk,Ok=function(e){return Object(j["pushScopeId"])("data-v-1e43fa60"),e=e(),Object(j["popScopeId"])(),e},hk={class:"export-pptist-dialog"},jk={class:"configs"},yk={class:"row"},gk=Ok((function(){return Object(j["createElementVNode"])("div",{class:"title"},"导出范围:",-1)})),xk=Object(j["createTextVNode"])("全部"),Ck=Object(j["createTextVNode"])("当前页"),kk=Object(j["createTextVNode"])("自定义"),Ek={key:0,class:"row"},wk=["data-range"],Nk=Ok((function(){return Object(j["createElementVNode"])("div",{class:"tip"}," 提示:.pptist 是本应用的特有文件后缀,支持将该类型的文件导入回应用中。 ",-1)})),Vk={class:"btns"},Ik=Object(j["createTextVNode"])("导出 .pptist 文件"),Sk=Object(j["createTextVNode"])("关闭");function Bk(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("RadioButton"),r=Object(j["resolveComponent"])("RadioGroup"),i=Object(j["resolveComponent"])("Slider"),u=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",hk,[Object(j["createElementVNode"])("div",jk,[Object(j["createElementVNode"])("div",yk,[gk,Object(j["createVNode"])(r,{class:"config-item",value:e.rangeType,"onUpdate:value":t[0]||(t[0]=function(t){return e.rangeType=t})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{style:{width:"33.33%"},value:"all"},{default:Object(j["withCtx"])((function(){return[xk]})),_:1}),Object(j["createVNode"])(a,{style:{width:"33.33%"},value:"current"},{default:Object(j["withCtx"])((function(){return[Ck]})),_:1}),Object(j["createVNode"])(a,{style:{width:"33.33%"},value:"custom"},{default:Object(j["withCtx"])((function(){return[kk]})),_:1})]})),_:1},8,["value"])]),"custom"===e.rangeType?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Ek,[Object(j["createElementVNode"])("div",{class:"title","data-range":"(".concat(e.range[0]," ~ ").concat(e.range[1],")")},"自定义范围:",8,wk),Object(j["createVNode"])(i,{class:"config-item",range:"",min:1,max:e.slides.length,step:1,value:e.range,"onUpdate:value":t[1]||(t[1]=function(t){return e.range=t})},null,8,["max","value"])])):Object(j["createCommentVNode"])("",!0),Nk]),Object(j["createElementVNode"])("div",Vk,[Object(j["createVNode"])(u,{class:"btn export",type:"primary",onClick:t[2]||(t[2]=function(t){return e.exportSpecificFile(e.selectedSlides)})},{default:Object(j["withCtx"])((function(){return[Ik]})),_:1}),Object(j["createVNode"])(u,{class:"btn close",onClick:t[3]||(t[3]=function(t){return e.close()})},{default:Object(j["withCtx"])((function(){return[Sk]})),_:1})])])}var Lk=Object(j["defineComponent"])({name:"export-pptist-dialog",setup:function(e,t){var n=t.emit,o=Object(y["c"])(ae()),c=o.slides,l=o.currentSlide,a=Object(j["ref"])("all"),r=Object(j["ref"])([1,c.value.length]),i=Object(j["computed"])((function(){return"all"===a.value?c.value:"current"===a.value?[l.value]:c.value.filter((function(e,t){var n=Object(ve["a"])(r.value,2),o=n[0],c=n[1];return t>=o-1&&t<=c-1}))})),u=function(){return n("close")},d=Gn(),s=d.exportSpecificFile;return{slides:c,rangeType:a,range:r,selectedSlides:i,exportSpecificFile:s,close:u}}});n("a812");const Tk=eo()(Lk,[["render",Bk],["__scopeId","data-v-1e43fa60"]]);var _k=Tk,Mk=Object(j["defineComponent"])({name:"export-dialog",setup:function(){var e=ue(),t=Object(y["c"])(e),n=t.dialogForExport,o=e.setDialogForExport,c=[{key:"pptist",label:"导出 pptist 文件"},{key:"pptx",label:"导出 PPTX"},{key:"image",label:"导出图片"},{key:"json",label:"导出 JSON"},{key:"pdf",label:"打印 / 导出 PDF"}],l=Object(j["computed"])((function(){var e={image:bC,json:xC,pdf:JC,pptx:vk,pptist:_k};return e[n.value]||null}));return{currentDialogComponent:l,tabs:c,dialogForExport:n,setDialogForExport:o}}});n("b54c");const Dk=eo()(Mk,[["render",Fx],["__scopeId","data-v-17be277c"]]);var zk=Dk,Ak=Object(j["defineComponent"])({name:"editor",components:{EditorHeader:lo,Canvas:Ss,CanvasTool:_b,Thumbnails:Kb,Toolbar:Vx,Remark:_x,ExportDialog:zk},setup:function(){var e=ue(),t=Object(y["c"])(e),n=t.dialogForExport,o=function(){return e.setDialogForExport("")},c=Object(j["ref"])(40);return Nt(),Vt(),{remarkHeight:c,dialogForExport:n,closeExportDialog:o}}});n("2540");const Fk=eo()(Ak,[["render",Be],["__scopeId","data-v-5ff9efcc"]]);var Rk=Fk,Pk={class:"pptist-screen"};function Hk(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("BaseView"),r=Object(j["resolveComponent"])("PresenterView");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Pk,["base"===e.viewMode?(Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:0,changeViewMode:e.changeViewMode},null,8,["changeViewMode"])):"presenter"===e.viewMode?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:1,changeViewMode:e.changeViewMode},null,8,["changeViewMode"])):Object(j["createCommentVNode"])("",!0)])}var qk={class:"tools-left"},Uk={class:"content"};function Wk(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ScreenSlideList"),r=Object(j["resolveComponent"])("SlideThumbnails"),i=Object(j["resolveComponent"])("WritingBoardTool"),u=Object(j["resolveComponent"])("IconLeftTwo"),d=Object(j["resolveComponent"])("IconRightTwo"),s=Object(j["resolveComponent"])("IconWrite"),f=Object(j["resolveComponent"])("Tooltip"),b=Object(j["resolveComponent"])("IconMagic"),m=Object(j["resolveComponent"])("IconListView"),p=Object(j["resolveComponent"])("IconOffScreenOne"),v=Object(j["resolveComponent"])("IconFullScreenOne"),O=Object(j["resolveComponent"])("IconPower"),h=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["base-view",{"laser-pen":e.laserPen}])},[Object(j["withDirectives"])(Object(j["createVNode"])(a,{slideWidth:e.slideWidth,slideHeight:e.slideHeight,animationIndex:e.animationIndex,turnSlideToId:e.turnSlideToId,manualExitFullscreen:e.manualExitFullscreen,onWheel: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)})},null,8,["slideWidth","slideHeight","animationIndex","turnSlideToId","manualExitFullscreen"]),[[h,e.contextmenus]]),e.slideThumbnailModelVisible?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,turnSlideToIndex:e.turnSlideToIndex,onClose:t[3]||(t[3]=function(t){return e.slideThumbnailModelVisible=!1})},null,8,["turnSlideToIndex"])):Object(j["createCommentVNode"])("",!0),e.writingBoardToolVisible?(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:1,slideWidth:e.slideWidth,slideHeight:e.slideHeight,onClose:t[4]||(t[4]=function(t){return e.writingBoardToolVisible=!1})},null,8,["slideWidth","slideHeight"])):Object(j["createCommentVNode"])("",!0),Object(j["createElementVNode"])("div",qk,[Object(j["createVNode"])(u,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:t[5]||(t[5]=function(t){return e.execPrev()})}),Object(j["createVNode"])(d,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:t[6]||(t[6]=function(t){return e.execNext()})})]),Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["tools-right",{visible:e.rightToolsVisible}]),onMouseleave:t[14]||(t[14]=function(t){return e.rightToolsVisible=!1}),onMouseenter:t[15]||(t[15]=function(t){return e.rightToolsVisible=!0})},[Object(j["createElementVNode"])("div",Uk,[Object(j["createElementVNode"])("div",{class:"tool-btn page-number",onClick:t[7]||(t[7]=function(t){return e.slideThumbnailModelVisible=!0})},"幻灯片 "+Object(j["toDisplayString"])(e.slideIndex+1)+" / "+Object(j["toDisplayString"])(e.slides.length),1),Object(j["createVNode"])(f,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"画笔工具"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(s,{class:"tool-btn",onClick:t[8]||(t[8]=function(t){return e.writingBoardToolVisible=!0})})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(f,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"激光笔"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b,{class:Object(j["normalizeClass"])(["tool-btn",{active:e.laserPen}]),onClick:t[9]||(t[9]=function(t){return e.laserPen=!e.laserPen})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(f,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"演讲者视图"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(m,{class:"tool-btn",onClick:t[10]||(t[10]=function(t){return e.changeViewMode("presenter")})})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(f,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:e.fullscreenState?"退出全屏":"进入全屏"},{default:Object(j["withCtx"])((function(){return[e.fullscreenState?(Object(j["openBlock"])(),Object(j["createBlock"])(p,{key:0,class:"tool-btn",onClick:t[11]||(t[11]=function(t){return e.manualExitFullscreen()})})):(Object(j["openBlock"])(),Object(j["createBlock"])(v,{key:1,class:"tool-btn",onClick:t[12]||(t[12]=function(t){return e.enterFullscreen()})}))]})),_:1},8,["mouseEnterDelay","title"]),Object(j["createVNode"])(f,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"结束放映"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(O,{class:"tool-btn",onClick:t[13]||(t[13]=function(t){return e.exitScreening()})})]})),_:1},8,["mouseEnterDelay"])])],34)],2)}var Gk=function(){var e=ae(),t=Object(y["c"])(e),n=t.slides,o=t.slideIndex,c=t.formatedAnimations,l=Object(j["ref"])(0),a=Object(j["ref"])(!1),r=Object(j["ref"])(o.value),i=function e(){if(!a.value){var t=c.value[l.value],n=t.animations,o=t.autoNext;l.value+=1,a.value=!0;var r,i=0,u=Object(T["a"])(n);try{var d=function(){var t=r.value,c=document.querySelector("#screen-element-".concat(t.elId," [class^=base-element-]"));if(!c)return i+=1,"continue";var l="".concat(Ey).concat(t.effect);c.style.removeProperty("--animate-duration");var u,d=Object(T["a"])(c.classList);try{for(d.s();!(u=d.n()).done;){var s=u.value;-1!==s.indexOf(Ey)&&c.classList.remove(s,"".concat(Ey,"animated"))}}catch(rL){d.e(rL)}finally{d.f()}c.style.setProperty("--animate-duration","".concat(t.duration,"ms")),c.classList.add(l,"".concat(Ey,"animated"));var f=function(){"out"!==t.type&&(c.style.removeProperty("--animate-duration"),c.classList.remove(l,"".concat(Ey,"animated"))),i+=1,i===n.length&&(a.value=!1,o&&e())};c.addEventListener("animationend",f,{once:!0})};for(u.s();!(r=u.n()).done;)d()}catch(rL){u.e(rL)}finally{u.f()}}},u=function(){l.value-=1;var e,t=c.value[l.value].animations,n=Object(T["a"])(t);try{for(n.s();!(e=n.n()).done;){var o=e.value,a=document.querySelector("#screen-element-".concat(o.elId," [class^=base-element-]"));if(a){a.style.removeProperty("--animate-duration");var r,i=Object(T["a"])(a.classList);try{for(i.s();!(r=i.n()).done;){var u=r.value;-1!==u.indexOf(Ey)&&a.classList.remove(u,"".concat(Ey,"animated"))}}catch(rL){i.e(rL)}finally{i.f()}}}}catch(rL){n.e(rL)}finally{n.f()}t.every((function(e){return"attention"===e.type}))&&b()},d=Object(j["ref"])(0),s=function(){d.value&&(clearInterval(d.value),d.value=0)};Object(j["onUnmounted"])(s);var f=Object(ne["throttle"])((function(e){De["a"].success(e)}),1e3,{leading:!0,trailing:!1}),b=function(){c.value.length&&l.value>0?u():o.value>0?(e.updateSlideIndex(o.value-1),o.value0&&m()}),500,{leading:!0,trailing:!1}),O=Object(j["ref"])(null),h=function(e){O.value={x:e.changedTouches[0].pageX,y:e.changedTouches[0].pageY}},g=function(e){if(O.value){var t=Math.abs(O.value.x-e.changedTouches[0].pageX),n=e.changedTouches[0].pageY-O.value.y;Math.abs(n)>t&&Math.abs(n)>50&&(O.value=null,n>0?b():m())}},x=function(e){var t=e.key.toUpperCase();t===I.UP||t===I.LEFT||t===I.PAGEUP?b():t!==I.DOWN&&t!==I.RIGHT&&t!==I.SPACE&&t!==I.ENTER&&t!==I.PAGEDOWN||m()};Object(j["onMounted"])((function(){return document.addEventListener("keydown",x)})),Object(j["onUnmounted"])((function(){return document.removeEventListener("keydown",x)}));var C=function(){e.updateSlideIndex(o.value-1),l.value=0},k=function(){e.updateSlideIndex(o.value+1),l.value=0},E=function(t){e.updateSlideIndex(t),l.value=0},w=function(t){var o=n.value.findIndex((function(e){return e.id===t}));-1!==o&&(e.updateSlideIndex(o),l.value=0)};return{autoPlayTimer:d,autoPlay:p,closeAutoPlay:s,mousewheelListener:v,touchStartListener:h,touchEndListener:g,turnPrevSlide:C,turnNextSlide:k,turnSlideToIndex:E,turnSlideToId:w,execPrev:b,execNext:m,animationIndex:l}},Xk=function(e){var t=ae(),n=Object(y["c"])(t),o=n.viewportRatio,c=Object(j["ref"])(0),l=Object(j["ref"])(0),a=function(){var t,n,a=(null===e||void 0===e?void 0:e.value)||document.body,r=a.clientWidth,i=a.clientHeight;i/r===o.value?(t=r,n=i):i/r>o.value?(t=r,n=r*o.value):(t=i/o.value,n=i),c.value=t,l.value=n};return Object(j["onMounted"])((function(){a(),window.addEventListener("resize",a)})),Object(j["onUnmounted"])((function(){window.removeEventListener("resize",a)})),{slideWidth:c,slideHeight:l}},Yk=function(){var e=Object(j["ref"])(!0),t=Object(j["ref"])(!0),n=Et(),o=n.exitScreening,c=function(){e.value=kt(),!e.value&&t.value&&o(),t.value=!0};Object(j["onMounted"])((function(){e.value=kt(),document.addEventListener("fullscreenchange",c),document.addEventListener("webkitfullscreenchange",c)})),Object(j["onUnmounted"])((function(){document.removeEventListener("fullscreenchange",c),document.removeEventListener("webkitfullscreenchange",c)}));var l=function(){e.value&&(t.value=!1,Ct())};return{fullscreenState:e,manualExitFullscreen:l}},Zk={class:"screen-slide-list"};function Jk(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ScreenSlide");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Zk,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.slides,(function(t,n){var o;return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["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||null!==(o=t.animations)&&void 0!==o&&o.length?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{key:0,class:"slide-content",style:Object(j["normalizeStyle"])({width:e.slideWidth+"px",height:e.slideHeight+"px"})},[Object(j["createVNode"])(a,{slide:t,scale:e.scale,animationIndex:e.animationIndex,turnSlideToId:e.turnSlideToId,manualExitFullscreen:e.manualExitFullscreen},null,8,["slide","scale","animationIndex","turnSlideToId","manualExitFullscreen"])],4)):Object(j["createCommentVNode"])("",!0)],2)})),128))])}function Kk(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ScreenElement");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"screen-slide",style:Object(j["normalizeStyle"])({width:e.VIEWPORT_SIZE+"px",height:e.VIEWPORT_SIZE*e.viewportRatio+"px",transform:"scale(".concat(e.scale,")")})},[Object(j["createElementVNode"])("div",{class:"background",style:Object(j["normalizeStyle"])(Object(L["a"])({},e.backgroundStyle))},null,4),(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.slide.elements,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:t.id,elementInfo:t,elementIndex:n+1,animationIndex:e.animationIndex,turnSlideToId:e.turnSlideToId,manualExitFullscreen:e.manualExitFullscreen},null,8,["elementInfo","elementIndex","animationIndex","turnSlideToId","manualExitFullscreen"])})),128))],4)}var Qk=["id","title"];function $k(e,t,n,o,c,l){var a;return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["screen-element",{link:e.elementInfo.link}]),id:"screen-element-".concat(e.elementInfo.id),style:Object(j["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(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentElementComponent),{elementInfo:e.elementInfo},null,8,["elementInfo"]))],14,Qk)}function eE(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("BaseChartElement");return Object(j["openBlock"])(),Object(j["createBlock"])(a,{class:"screen-element-chart",elementInfo:e.elementInfo},null,8,["elementInfo"])}var tE=Object(j["defineComponent"])({name:"screen-element-chart",components:{BaseChartElement:qd},props:{elementInfo:{type:Object,required:!0}}});const nE=eo()(tE,[["render",eE]]);var oE=nE,cE={class:"element-content"};function lE(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("VideoPlayer");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"screen-element-video",style:Object(j["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(j["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(j["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(j["createElementVNode"])("div",cE,[e.inCurrentSlide?(Object(j["openBlock"])(),Object(j["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(j["createCommentVNode"])("",!0)])],4)],4)}var aE=Object(j["defineComponent"])({name:"screen-element-video",components:{VideoPlayer:_r},props:{elementInfo:{type:Object,required:!0}},setup:function(){var e=Object(y["c"])(ae()),t=e.currentSlide,n=Object(j["inject"])(uo)||Object(j["ref"])(1),o=Object(j["inject"])(so)||Object(j["ref"])(""),c=Object(j["computed"])((function(){return t.value.id===o.value}));return{scale:n,inCurrentSlide:c}}});n("0419");const rE=eo()(aE,[["render",lE],["__scopeId","data-v-0ef8b6c0"]]);var iE=rE,uE={class:"element-content"};function dE(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconVolumeNotice"),r=Object(j["resolveComponent"])("AudioPlayer");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"screen-element-audio",style:Object(j["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(j["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(j["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(j["createElementVNode"])("div",uE,[Object(j["createVNode"])(a,{class:"audio-icon",style:Object(j["normalizeStyle"])({fontSize:e.audioIconSize,color:e.elementInfo.color}),onClick:t[0]||(t[0]=function(t){return e.toggle()})},null,8,["style"]),e.inCurrentSlide?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,class:"audio-player",ref:"audioPlayerRef",style:Object(j["normalizeStyle"])(Object(L["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(j["createCommentVNode"])("",!0)])],4)],4)}var sE=Object(j["defineComponent"])({name:"screen-element-audio",components:{AudioPlayer:ri},props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(y["c"])(ae()),n=t.viewportRatio,o=t.currentSlide,c=Object(j["inject"])(uo)||Object(j["ref"])(1),l=Object(j["inject"])(so)||Object(j["ref"])(""),a=Object(j["computed"])((function(){return o.value.id===l.value})),r=Object(j["computed"])((function(){return Math.min(e.elementInfo.width,e.elementInfo.height)+"px"})),i=Object(j["computed"])((function(){var t=at,o=at*n.value,l=280/c.value,a=50/c.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"}})),u=Object(j["ref"])(),d=function(){u.value&&u.value.toggle()};return{scale:c,inCurrentSlide:a,audioIconSize:r,audioPlayerPosition:i,audioPlayerRef:u,toggle:d}}});n("a52e");const fE=eo()(sE,[["render",dE],["__scopeId","data-v-1adba489"]]);var bE=fE,mE=Object(j["defineComponent"])({name:"screen-element",props:{elementInfo:{type:Object,required:!0},elementIndex:{type:Number,required:!0},animationIndex:{type:Number,required:!0},turnSlideToId:{type:Function,required:!0},manualExitFullscreen:{type:Function,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){var t,n=(t={},Object(pe["a"])(t,Te.IMAGE,jd),Object(pe["a"])(t,Te.TEXT,kd),Object(pe["a"])(t,Te.SHAPE,Td),Object(pe["a"])(t,Te.LINE,Fd),Object(pe["a"])(t,Te.CHART,oE),Object(pe["a"])(t,Te.TABLE,ts),Object(pe["a"])(t,Te.LATEX,us),Object(pe["a"])(t,Te.VIDEO,iE),Object(pe["a"])(t,Te.AUDIO,bE),t);return n[e.elementInfo.type]||null})),n=Object(y["c"])(ae()),o=n.formatedAnimations,c=n.theme,l=Object(j["computed"])((function(){var t=o.value.findIndex((function(t){var n=t.animations.map((function(e){return e.elId}));return n.includes(e.elementInfo.id)}));if(-1===t)return!1;if(t=o?r:a-i/o*a,-1===d?n:1*n/3+2*d/3},w=function(t,n){var o=(new Date).getTime();if("pen"===e.model){var c=k(t,n),l=o-u,i=E(c,l);x(t,n,i),d=i}else"mark"===e.model?x(t,n,a.value):C(t,n);r={x:t,y:n},u=(new Date).getTime()},N=function(e){if(!o.value)return[0,0];var t=e instanceof MouseEvent?e:e.changedTouches[0],n=o.value.getBoundingClientRect(),c=t.pageX-n.x,l=t.pageY-n.y;return[c,l]},V=function(e){var t=N(e),n=Object(ve["a"])(t,2),o=n[0],c=n[1],l=o/p.value,a=c/v.value;i=!0,r={x:l,y:a},u=(new Date).getTime(),e instanceof MouseEvent||(s.value={x:o,y:c},f.value=!0)},I=function(e){var t=N(e),n=Object(ve["a"])(t,2),o=n[0],c=n[1],l=o/p.value,a=c/v.value;s.value={x:o,y:c},i&&w(l,a)},S=function(){i&&(i=!1)},B=function(){t&&o.value&&t.clearRect(0,0,o.value.width,o.value.height)},L=function(){var e;return null===(e=o.value)||void 0===e?void 0:e.toDataURL()},T=function(e){var n=new Image;n.src=e,n.onload=function(){t&&t.drawImage(n,0,0)}},_=Object(ne["throttle"])((function(t){"eraser"===e.model&&(t.deltaY<0&&l.value<200?l.value+=20:t.deltaY>0&&l.value>20&&(l.value-=20)),"pen"===e.model&&(t.deltaY<0&&c.value<10?c.value+=2:t.deltaY>0&&c.value>4&&(c.value-=2)),"mark"===e.model&&(t.deltaY<0&&a.value<40?a.value+=4:t.deltaY>0&&a.value>16&&(a.value-=4))}),300,{leading:!0,trailing:!1});return{mouse:s,mouseInCanvas:f,penSize:c,rubberSize:l,markSize:a,writingBoardRef:n,canvasRef:o,canvasWidth:b,canvasHeight:m,handleMousedown:V,handleMousemove:I,handleMouseup:S,clearCanvas:B,getImageDataURL:L,setImageDataURL:T,mousewheelListener:_}}});n("c6ae");const FE=eo()(AE,[["render",zE],["__scopeId","data-v-9ac1670a"]]);var RE=FE,PE=["#000000","#ffffff","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c","#ffff3a"],HE=Object(j["defineComponent"])({name:"writing-board-tool",emits:["close"],components:{WritingBoard:RE},props:{slideWidth:{type:Number,required:!0},slideHeight:{type:Number,required:!0},position:{type:Object,default:function(){return{right:"5px",bottom:"5px"}}}},setup:function(e,t){var n=t.emit,o=Object(j["ref"])(),c=Object(j["ref"])("#e2534d"),l=Object(j["ref"])("pen"),a=Object(j["ref"])(!1),r=function(e){l.value=e},i=function(){o.value.clearCanvas()},u=function(e){"eraser"===l.value&&(l.value="pen"),c.value=e},d=function(){n("close")};return{writingBoardRef:o,writingBoardColors:PE,writingBoardColor:c,writingBoardModel:l,blackboard:a,changeModel:r,clearCanvas:i,changeColor:u,closeWritingBoard:d}}});n("3147");const qE=eo()(HE,[["render",_E],["__scopeId","data-v-3ca1d362"]]);var UE=qE,WE=Object(j["defineComponent"])({name:"screen",components:{ScreenSlideList:xE,SlideThumbnails:SE,WritingBoardTool:UE},props:{changeViewMode:{type:Function,required:!0}},setup:function(e){var t=Object(y["c"])(ae()),n=t.slides,o=t.slideIndex,c=Gk(),l=c.autoPlayTimer,a=c.autoPlay,r=c.closeAutoPlay,i=c.mousewheelListener,u=c.touchStartListener,d=c.touchEndListener,s=c.turnPrevSlide,f=c.turnNextSlide,b=c.turnSlideToIndex,m=c.turnSlideToId,p=c.execPrev,v=c.execNext,O=c.animationIndex,h=Xk(),g=h.slideWidth,x=h.slideHeight,C=Et(),k=C.exitScreening,E=Yk(),w=E.fullscreenState,N=E.manualExitFullscreen,V=Object(j["ref"])(!1),I=Object(j["ref"])(!1),S=Object(j["ref"])(!1),B=Object(j["ref"])(!1),L=function(){return[{text:"上一页",subText:"↑ ←",disable:o.value<=0,handler:function(){return s()}},{text:"下一页",subText:"↓ →",disable:o.value>=n.value.length-1,handler:function(){return f()}},{text:"第一页",disable:0===o.value,handler:function(){return b(0)}},{text:"最后一页",disable:o.value===n.value.length-1,handler:function(){return b(n.value.length-1)}},{divider:!0},{text:"显示工具栏",handler:function(){return V.value=!0}},{text:"查看所有幻灯片",handler:function(){return S.value=!0}},{text:"画笔工具",handler:function(){return I.value=!0}},{text:"演讲者视图",handler:function(){return e.changeViewMode("presenter")}},{divider:!0},{text:l.value?"取消自动放映":"自动放映",handler:l.value?r:a},{text:"结束放映",subText:"ESC",handler:k}]};return{slides:n,slideIndex:o,slideWidth:g,slideHeight:x,mousewheelListener:i,touchStartListener:u,touchEndListener:d,animationIndex:O,contextmenus:L,execPrev:p,execNext:v,turnSlideToIndex:b,turnSlideToId:m,slideThumbnailModelVisible:S,writingBoardToolVisible:I,rightToolsVisible:V,fullscreenState:w,exitScreening:k,enterFullscreen:xt,manualExitFullscreen:N,laserPen:B}}});n("4236");const GE=eo()(WE,[["render",Wk],["__scopeId","data-v-54670d0c"]]);var XE=GE,YE=function(e){return Object(j["pushScopeId"])("data-v-ce50b150"),e=e(),Object(j["popScopeId"])(),e},ZE={class:"presenter-view"},JE={class:"toolbar"},KE=YE((function(){return Object(j["createElementVNode"])("span",null,"普通视图",-1)})),QE=YE((function(){return Object(j["createElementVNode"])("span",null,"画笔",-1)})),$E=YE((function(){return Object(j["createElementVNode"])("span",null,"激光笔",-1)})),ew=YE((function(){return Object(j["createElementVNode"])("span",null,"结束放映",-1)})),tw={class:"content"},nw=["onClick"],ow={class:"remark"},cw={class:"header"},lw=YE((function(){return Object(j["createElementVNode"])("span",null,"演讲者备注",-1)})),aw=["innerHTML"],rw={class:"remark-scale"};function iw(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconListView"),r=Object(j["resolveComponent"])("IconWrite"),i=Object(j["resolveComponent"])("IconMagic"),u=Object(j["resolveComponent"])("IconOffScreenOne"),d=Object(j["resolveComponent"])("Divider"),s=Object(j["resolveComponent"])("IconPower"),f=Object(j["resolveComponent"])("ScreenSlideList"),b=Object(j["resolveComponent"])("WritingBoardTool"),m=Object(j["resolveComponent"])("ThumbnailSlide"),p=Object(j["resolveComponent"])("IconMinus"),v=Object(j["resolveComponent"])("IconPlus"),O=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",ZE,[Object(j["createElementVNode"])("div",JE,[Object(j["createElementVNode"])("div",{class:"tool-btn",onClick:t[0]||(t[0]=function(t){return e.changeViewMode("base")})},[Object(j["createVNode"])(a,{class:"tool-icon"}),KE]),Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["tool-btn",{active:e.writingBoardToolVisible}]),onClick:t[1]||(t[1]=function(t){return e.writingBoardToolVisible=!e.writingBoardToolVisible})},[Object(j["createVNode"])(r,{class:"tool-icon"}),QE],2),Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["tool-btn",{active:e.laserPen}]),onClick:t[2]||(t[2]=function(t){return e.laserPen=!e.laserPen})},[Object(j["createVNode"])(i,{class:"tool-icon"}),$E],2),Object(j["createElementVNode"])("div",{class:"tool-btn",onClick:t[3]||(t[3]=function(){return e.fullscreenState?e.manualExitFullscreen():e.enterFullscreen()})},[e.fullscreenState?(Object(j["openBlock"])(),Object(j["createBlock"])(u,{key:0,class:"tool-icon"})):(Object(j["openBlock"])(),Object(j["createBlock"])(u,{key:1,class:"tool-icon"})),Object(j["createElementVNode"])("span",null,Object(j["toDisplayString"])(e.fullscreenState?"退出全屏":"全屏"),1)]),Object(j["createVNode"])(d,{class:"divider"}),Object(j["createElementVNode"])("div",{class:"tool-btn",onClick:t[4]||(t[4]=function(t){return e.exitScreening()})},[Object(j["createVNode"])(s,{class:"tool-icon"}),ew])]),Object(j["createElementVNode"])("div",tw,[Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["slide-list-wrap",{"laser-pen":e.laserPen}]),ref:"slideListWrapRef"},[Object(j["withDirectives"])(Object(j["createVNode"])(f,{slideWidth:e.slideWidth,slideHeight:e.slideHeight,animationIndex:e.animationIndex,turnSlideToId:e.turnSlideToId,manualExitFullscreen:e.manualExitFullscreen,onWheel:t[5]||(t[5]=function(t){return e.mousewheelListener(t)}),onTouchstart:t[6]||(t[6]=function(t){return e.touchStartListener(t)}),onTouchend:t[7]||(t[7]=function(t){return e.touchEndListener(t)})},null,8,["slideWidth","slideHeight","animationIndex","turnSlideToId","manualExitFullscreen"]),[[O,e.contextmenus]]),e.writingBoardToolVisible?(Object(j["openBlock"])(),Object(j["createBlock"])(b,{key:0,slideWidth:e.slideWidth,slideHeight:e.slideHeight,position:{left:"75px",top:"5px"},onClose:t[8]||(t[8]=function(t){return e.writingBoardToolVisible=!1})},null,8,["slideWidth","slideHeight"])):Object(j["createCommentVNode"])("",!0)],2),Object(j["createElementVNode"])("div",{class:"thumbnails",ref:"thumbnailsRef",onWheel:t[9]||(t[9]=Object(j["withModifiers"])((function(t){return e.handleMousewheelThumbnails(t)}),["prevent"]))},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.slides,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["thumbnail",{active:n===e.slideIndex}]),key:t.id,onClick:function(t){return e.turnSlideToIndex(n)}},[Object(j["createVNode"])(m,{slide:t,size:120/e.viewportRatio,visible:n40||(B.value=e)};Object(j["watch"])(o,(function(){Object(j["nextTick"])((function(){if(r.value){var e=r.value.querySelector(".thumbnail.active");if(e){var t=r.value.offsetWidth,n=e.offsetLeft;r.value.scrollTo({left:n-t/2,behavior:"smooth"})}}}))}));var M=function(){return[{text:"上一页",subText:"↑ ←",disable:o.value<=0,handler:function(){return m()}},{text:"下一页",subText:"↓ →",disable:o.value>=n.value.length-1,handler:function(){return p()}},{text:"第一页",disable:0===o.value,handler:function(){return v(0)}},{text:"最后一页",disable:o.value===n.value.length-1,handler:function(){return v(n.value.length-1)}},{divider:!0},{text:"画笔工具",handler:function(){return i.value=!0}},{text:"普通视图",handler:function(){return e.changeViewMode("base")}},{divider:!0},{text:"结束放映",subText:"ESC",handler:E}]};return{slides:n,slideIndex:o,viewportRatio:c,remarkFontSize:B,currentSlideRemark:L,setRemarkFontSize:_,slideListWrapRef:a,thumbnailsRef:r,slideWidth:x,slideHeight:C,animationIndex:h,turnSlideToId:O,mousewheelListener:s,touchStartListener:f,touchEndListener:b,turnSlideToIndex:v,contextmenus:M,slidesLoadLimit:N,handleMousewheelThumbnails:T,exitScreening:E,fullscreenState:I,enterFullscreen:xt,manualExitFullscreen:S,writingBoardToolVisible:i,laserPen:u}}});n("f146");const dw=eo()(uw,[["render",iw],["__scopeId","data-v-ce50b150"]]);var sw=dw,fw=Object(j["defineComponent"])({name:"pptist-screen",components:{BaseView:XE,PresenterView:sw},setup:function(){var e=Object(j["ref"])("base"),t=function(t){e.value=t},n=Et(),o=n.exitScreening,c=function(e){var t=e.key.toUpperCase();t===I.ESC&&o()};return Object(j["onMounted"])((function(){return document.addEventListener("keydown",c)})),Object(j["onUnmounted"])((function(){return document.removeEventListener("keydown",c)})),{viewMode:e,changeViewMode:t}}});n("953f");const bw=eo()(fw,[["render",Hk],["__scopeId","data-v-18f794c8"]]);var mw=bw,pw={class:"mobile"};function vw(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",pw,[(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentComponent),{changeMode:e.changeMode},null,8,["changeMode"]))])}var Ow={class:"mobile-editor"};function hw(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("Header"),r=Object(j["resolveComponent"])("AlignmentLine"),i=Object(j["resolveComponent"])("MobileOperate"),u=Object(j["resolveComponent"])("MobileEditableElement"),d=Object(j["resolveComponent"])("SlideToolbar"),s=Object(j["resolveComponent"])("ElementToolbar");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Ow,[Object(j["createVNode"])(a,{changeMode:e.changeMode},null,8,["changeMode"]),Object(j["createElementVNode"])("div",{class:"content",ref:"contentRef",onTouchstart:t[0]||(t[0]=function(t){return e.handleClickBlankArea()})},[Object(j["createElementVNode"])("div",{class:"viewport-wrapper",style:Object(j["normalizeStyle"])(e.viewportStyles)},[Object(j["createElementVNode"])("div",{class:"background",style:Object(j["normalizeStyle"])(e.backgroundStyle)},null,4),(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.alignmentLines,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:n,type:t.type,axis:t.axis,length:t.length,canvasScale:e.canvasScale},null,8,["type","axis","length","canvasScale"])})),128)),(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.elementList,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:t.id},["line"!==t.type?(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:0,elementInfo:t,isSelected:e.activeElementIdList.includes(t.id),canvasScale:e.canvasScale,scaleElement:e.scaleElement},null,8,["elementInfo","isSelected","canvasScale","scaleElement"])):Object(j["createCommentVNode"])("",!0)],64)})),128)),Object(j["createElementVNode"])("div",{class:"viewport",style:Object(j["normalizeStyle"])({transform:"scale(".concat(e.canvasScale,")")})},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.elementList,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])(u,{key:t.id,elementInfo:t,elementIndex:n+1,selectElement:e.selectElement},null,8,["elementInfo","elementIndex","selectElement"])})),128))],4)],4)],544),Object(j["createVNode"])(d),e.handleElement?(Object(j["openBlock"])(),Object(j["createBlock"])(s,{key:0})):Object(j["createCommentVNode"])("",!0)])}function jw(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"mobile-editable-element",style:Object(j["normalizeStyle"])({zIndex:e.elementIndex})},[(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentElementComponent),{elementInfo:e.elementInfo,selectElement:e.selectElement,contextmenus:function(){return null}},null,8,["elementInfo","selectElement","contextmenus"]))],4)}var yw=Object(j["defineComponent"])({name:"mobile-editable-element",props:{elementInfo:{type:Object,required:!0},elementIndex:{type:Number,required:!0},selectElement:{type:Function,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){var t,n=(t={},Object(pe["a"])(t,Te.IMAGE,kc),Object(pe["a"])(t,Te.TEXT,Dl),Object(pe["a"])(t,Te.SHAPE,ea),Object(pe["a"])(t,Te.LINE,pa),Object(pe["a"])(t,Te.CHART,Ea),Object(pe["a"])(t,Te.TABLE,Ya),Object(pe["a"])(t,Te.LATEX,tr),Object(pe["a"])(t,Te.VIDEO,zr),Object(pe["a"])(t,Te.AUDIO,di),t);return n[e.elementInfo.type]||null}));return{currentElementComponent:t}}});const gw=eo()(yw,[["render",jw]]);var xw=gw;function Cw(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("BorderLine"),r=Object(j["resolveComponent"])("ResizeHandler");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"mobile-operate",style:Object(j["normalizeStyle"])({top:e.elementInfo.top*e.canvasScale+"px",left:e.elementInfo.left*e.canvasScale+"px",transform:"rotate(".concat(e.rotate,"deg)"),transformOrigin:"".concat(e.elementInfo.width*e.canvasScale/2,"px ").concat(e.elementInfo.height*e.canvasScale/2,"px")})},[e.isSelected?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{class:"operate-border-line",key:e.type,type:e.type,style:Object(j["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(j["normalizeStyle"])(t.style),onTouchstart:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onTouchstart"])})),128))],64)):Object(j["createCommentVNode"])("",!0)],4)}var kw=Object(j["defineComponent"])({name:"mobile-operate",components:{BorderLine:$i,ResizeHandler:Zi},props:{elementInfo:{type:Object,required:!0},isSelected:{type:Boolean,required:!0},canvasScale:{type:Number,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){return"rotate"in e.elementInfo?e.elementInfo.rotate:0})),n=Object(j["computed"])((function(){return e.elementInfo.width*e.canvasScale})),o=Object(j["computed"])((function(){return e.elementInfo.height*e.canvasScale})),c=Wi(n,o),l=c.borderLines,a=c.resizeHandlers,r=c.textElementResizeHandlers;return{rotate:t,borderLines:l,resizeHandlers:"text"===e.elementInfo.type||"table"===e.elementInfo.type?r:a}}});n("f212");const Ew=eo()(kw,[["render",Cw],["__scopeId","data-v-10f40a30"]]);var ww=Ew,Nw={class:"slide-toolbar"},Vw={class:"remark"},Iw=["value"],Sw={class:"toolbar"},Bw=Object(j["createTextVNode"])(" 新幻灯片"),Lw=Object(j["createTextVNode"])(" 复制"),Tw=Object(j["createTextVNode"])(" 删除"),_w=Object(j["createTextVNode"])(" 文字"),Mw=Object(j["createTextVNode"])("图片 "),Dw=Object(j["createTextVNode"])(" 矩形"),zw=Object(j["createTextVNode"])(" 圆形");function Aw(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconPlus"),r=Object(j["resolveComponent"])("Button"),i=Object(j["resolveComponent"])("IconCopy"),u=Object(j["resolveComponent"])("IconDelete"),d=Object(j["resolveComponent"])("ButtonGroup"),s=Object(j["resolveComponent"])("IconFontSize"),f=Object(j["resolveComponent"])("IconPicture"),b=Object(j["resolveComponent"])("FileInput"),m=Object(j["resolveComponent"])("IconSquare"),p=Object(j["resolveComponent"])("IconRound"),v=Object(j["resolveComponent"])("MobileThumbnails");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Nw,[Object(j["createElementVNode"])("div",Vw,[Object(j["createElementVNode"])("textarea",{value:e.remark,placeholder:"点击输入演讲者备注",onInput:t[0]||(t[0]=function(t){return e.handleInputMark(t)})},null,40,Iw)]),Object(j["createElementVNode"])("div",Sw,[Object(j["createVNode"])(d,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[1]||(t[1]=function(t){return e.createSlide()})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{class:"icon"}),Bw]})),_:1}),Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[2]||(t[2]=function(t){return e.copyAndPasteSlide()})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{class:"icon"}),Lw]})),_:1}),Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[3]||(t[3]=function(t){return e.deleteSlide()})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,{class:"icon"}),Tw]})),_:1})]})),_:1}),Object(j["createVNode"])(d,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[4]||(t[4]=function(t){return e.insertTextElement()})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(s,{class:"icon"}),_w]})),_:1}),Object(j["createVNode"])(r,{style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b,{onChange:t[5]||(t[5]=function(t){return e.insertImageElement(t)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f,{class:"icon"}),Mw]})),_:1})]})),_:1}),Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[6]||(t[6]=function(t){return e.insertShapeElement("square")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(m,{class:"icon"}),Dw]})),_:1}),Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[7]||(t[7]=function(t){return e.insertShapeElement("round")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(p,{class:"icon"}),zw]})),_:1})]})),_:1})]),Object(j["createVNode"])(v)])}var Fw={class:"mobile-thumbnails"},Rw=["onClick"],Pw={class:"label"};function Hw(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ThumbnailSlide");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Fw,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.slides,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["thumbnail-item",{active:e.slideIndex===n}]),key:t.id,onClick:function(t){return e.changeSlideIndex(n)}},[Object(j["createElementVNode"])("div",Pw,Object(j["toDisplayString"])(n+1),1),Object(j["createVNode"])(a,{class:"thumbnail",slide:t,size:120,visible:n新添加文本

')},b=function(e){e&&e[0]&<(e[0]).then((function(e){return d(e)}))},m=function(e){var t={viewBox:[200,200],path:"M 0 0 L 200 0 L 200 200 L 0 200 Z"},o={viewBox:[200,200],path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z"},c={square:t,round:o},l=200;s({left:(at-l)/2,top:(at*n.value-l)/2,width:l,height:l},c[e])},p=Object(j["computed"])((function(){var e;return(null===(e=o.value)||void 0===e?void 0:e.remark)||""})),v=function(t){var n=t.target.value;e.updateSlide({remark:n})};return{remark:p,createSlide:l,copyAndPasteSlide:a,deleteSlide:r,insertTextElement:f,insertImageElement:b,insertShapeElement:m,handleInputMark:v}}});n("79ac");const Xw=eo()(Gw,[["render",Aw],["__scopeId","data-v-70590190"]]);var Yw=Xw,Zw=function(e){return Object(j["pushScopeId"])("data-v-332b9382"),e=e(),Object(j["popScopeId"])(),e},Jw={class:"element-toolbar"},Kw={class:"tabs"},Qw=["onClick"],$w={class:"content"},eN={key:0,class:"style"},tN=Object(j["createTextVNode"])("+"),nN=Object(j["createTextVNode"])("-"),oN={class:"row-block"},cN=Zw((function(){return Object(j["createElementVNode"])("div",{class:"label"},"文字颜色:",-1)})),lN={class:"colors"},aN=["onClick"],rN={class:"row-block"},iN=Zw((function(){return Object(j["createElementVNode"])("div",{class:"label"},"填充色:",-1)})),uN={class:"colors"},dN=["onClick"],sN={key:1,class:"common"},fN=Object(j["createTextVNode"])(" 复制"),bN=Object(j["createTextVNode"])(" 删除"),mN=Object(j["createTextVNode"])(" 置顶"),pN=Object(j["createTextVNode"])(" 置底"),vN=Object(j["createTextVNode"])(" 上移"),ON=Object(j["createTextVNode"])(" 下移"),hN=Object(j["createTextVNode"])(" 左对齐"),jN=Object(j["createTextVNode"])(" 水平居中"),yN=Object(j["createTextVNode"])(" 右对齐"),gN=Object(j["createTextVNode"])(" 上对齐"),xN=Object(j["createTextVNode"])(" 垂直居中"),CN=Object(j["createTextVNode"])(" 下对齐");function kN(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconTextBold"),r=Object(j["resolveComponent"])("CheckboxButton"),i=Object(j["resolveComponent"])("IconTextItalic"),u=Object(j["resolveComponent"])("IconTextUnderline"),d=Object(j["resolveComponent"])("IconStrikethrough"),s=Object(j["resolveComponent"])("CheckboxButtonGroup"),f=Object(j["resolveComponent"])("IconFontSize"),b=Object(j["resolveComponent"])("Button"),m=Object(j["resolveComponent"])("ButtonGroup"),p=Object(j["resolveComponent"])("Divider"),v=Object(j["resolveComponent"])("IconAlignTextLeft"),O=Object(j["resolveComponent"])("RadioButton"),h=Object(j["resolveComponent"])("IconAlignTextCenter"),y=Object(j["resolveComponent"])("IconAlignTextRight"),g=Object(j["resolveComponent"])("RadioGroup"),x=Object(j["resolveComponent"])("IconCopy"),C=Object(j["resolveComponent"])("IconDelete"),k=Object(j["resolveComponent"])("IconSendToBack"),E=Object(j["resolveComponent"])("IconBringToFrontOne"),w=Object(j["resolveComponent"])("IconBringToFront"),N=Object(j["resolveComponent"])("IconSentToBack"),V=Object(j["resolveComponent"])("IconAlignLeft"),I=Object(j["resolveComponent"])("IconAlignVertically"),S=Object(j["resolveComponent"])("IconAlignRight"),B=Object(j["resolveComponent"])("IconAlignTop"),L=Object(j["resolveComponent"])("IconAlignHorizontally"),T=Object(j["resolveComponent"])("IconAlignBottom");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Jw,[Object(j["createElementVNode"])("div",Kw,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.tabs,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["tab",{active:e.activeTab===t.key}]),key:t.key,onClick:function(n){return e.activeTab=t.key}},Object(j["toDisplayString"])(t.label),11,Qw)})),128))]),Object(j["createElementVNode"])("div",$w,["style"===e.activeTab?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",eN,[Object(j["createVNode"])(s,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},checked:e.richTextAttrs.bold,onClick:t[0]||(t[0]=function(t){return e.emitRichTextCommand("bold")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a)]})),_:1},8,["checked"]),Object(j["createVNode"])(r,{style:{flex:"1"},checked:e.richTextAttrs.em,onClick:t[1]||(t[1]=function(t){return e.emitRichTextCommand("em")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i)]})),_:1},8,["checked"]),Object(j["createVNode"])(r,{style:{flex:"1"},checked:e.richTextAttrs.underline,onClick:t[2]||(t[2]=function(t){return e.emitRichTextCommand("underline")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u)]})),_:1},8,["checked"]),Object(j["createVNode"])(r,{style:{flex:"1"},checked:e.richTextAttrs.strikethrough,onClick:t[3]||(t[3]=function(t){return e.emitRichTextCommand("strikethrough")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d)]})),_:1},8,["checked"])]})),_:1}),Object(j["createVNode"])(m,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b,{style:{flex:"2"},onClick:t[4]||(t[4]=function(t){return e.emitRichTextCommand("fontsize-add")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f),tN]})),_:1}),Object(j["createVNode"])(b,{style:{flex:"2"},onClick:t[5]||(t[5]=function(t){return e.emitRichTextCommand("fontsize-reduce")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f),nN]})),_:1})]})),_:1}),Object(j["createVNode"])(p,{style:{margin:"20px 0"}}),Object(j["createVNode"])(g,{class:"row","button-style":"solid",value:e.richTextAttrs.align,onChange:t[6]||(t[6]=function(t){return e.emitRichTextCommand("align",t.target.value)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(O,{value:"left",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(v)]})),_:1}),Object(j["createVNode"])(O,{value:"center",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(h)]})),_:1}),Object(j["createVNode"])(O,{value:"right",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(y)]})),_:1})]})),_:1},8,["value"]),Object(j["createVNode"])(p,{style:{margin:"20px 0"}}),Object(j["createElementVNode"])("div",oN,[cN,Object(j["createElementVNode"])("div",lN,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.colors,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"color",key:t,onClick:function(n){return e.updateFontColor(t)}},[Object(j["createElementVNode"])("div",{class:"color-block",style:Object(j["normalizeStyle"])({backgroundColor:t})},null,4)],8,aN)})),128))])]),Object(j["createElementVNode"])("div",rN,[iN,Object(j["createElementVNode"])("div",uN,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.colors,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"color",key:t,onClick:function(n){return e.updateFill(t)}},[Object(j["createElementVNode"])("div",{class:"color-block",style:Object(j["normalizeStyle"])({backgroundColor:t})},null,4)],8,dN)})),128))])])])):Object(j["createCommentVNode"])("",!0),"common"===e.activeTab?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",sN,[Object(j["createVNode"])(m,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[7]||(t[7]=function(t){return e.copyElement()})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(x,{class:"icon"}),fN]})),_:1}),Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[8]||(t[8]=function(t){return e.deleteElement()})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(C,{class:"icon"}),bN]})),_:1})]})),_:1}),Object(j["createVNode"])(p,{style:{margin:"20px 0"}}),Object(j["createVNode"])(m,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[9]||(t[9]=function(t){return e.orderElement(e.handleElement,e.ElementOrderCommands.TOP)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(k,{class:"icon"}),mN]})),_:1}),Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[10]||(t[10]=function(t){return e.orderElement(e.handleElement,e.ElementOrderCommands.BOTTOM)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(E,{class:"icon"}),pN]})),_:1}),Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[11]||(t[11]=function(t){return e.orderElement(e.handleElement,e.ElementOrderCommands.UP)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(w,{class:"icon"}),vN]})),_:1}),Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[12]||(t[12]=function(t){return e.orderElement(e.handleElement,e.ElementOrderCommands.DOWN)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(N,{class:"icon"}),ON]})),_:1})]})),_:1}),Object(j["createVNode"])(p,{style:{margin:"20px 0"}}),Object(j["createVNode"])(m,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[13]||(t[13]=function(t){return e.alignElementToCanvas(e.ElementAlignCommands.LEFT)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(V,{class:"icon"}),hN]})),_:1}),Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[14]||(t[14]=function(t){return e.alignElementToCanvas(e.ElementAlignCommands.HORIZONTAL)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(I,{class:"icon"}),jN]})),_:1}),Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[15]||(t[15]=function(t){return e.alignElementToCanvas(e.ElementAlignCommands.RIGHT)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(S,{class:"icon"}),yN]})),_:1})]})),_:1}),Object(j["createVNode"])(m,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[16]||(t[16]=function(t){return e.alignElementToCanvas(e.ElementAlignCommands.TOP)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(B,{class:"icon"}),gN]})),_:1}),Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[17]||(t[17]=function(t){return e.alignElementToCanvas(e.ElementAlignCommands.VERTICAL)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(L,{class:"icon"}),xN]})),_:1}),Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[18]||(t[18]=function(t){return e.alignElementToCanvas(e.ElementAlignCommands.BOTTOM)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(T,{class:"icon"}),CN]})),_:1})]})),_:1})])):Object(j["createCommentVNode"])("",!0)])])}var EN=["#000000","#ffffff","#eeece1","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c","#c21401","#ff1e02","#ffc12a","#ffff3a","#90cf5b","#00af57"],wN=Object(j["defineComponent"])({name:"element-toolbar",setup:function(){var e=ue(),t=ae(),n=Object(y["c"])(e),o=n.handleElement,c=n.handleElementId,l=n.richTextAttrs,a=dt(),r=a.addHistorySnapshot,i=function(e,n){t.updateElement({id:e,props:n}),r()},u=[{key:"style",label:"样式"},{key:"common",label:"布局"}],d=Object(j["ref"])("common"),s=gt(),f=s.orderElement,b=Io(),m=b.alignElementToCanvas,p=ft(),v=p.addElementsFromData,O=vt(),h=O.deleteElement,g=function(){var e=JSON.parse(JSON.stringify(o.value));v([e])},x=function(e,t){Cl.emit(zc.RICH_TEXT_COMMAND,{action:{command:e,value:t}})},C=function(e){var t;if(o.value){if(("text"===o.value.type||"shape"===o.value.type&&null!==(t=o.value.text)&&void 0!==t&&t.content)&&Cl.emit(zc.RICH_TEXT_COMMAND,{action:{command:"color",value:e}}),"table"===o.value.type){for(var n=JSON.parse(JSON.stringify(o.value.data)),l=0;l=l.value?(e-20)/at:(t-20)/l.value/at}));Object(j["onMounted"])((function(){r.value.length&&t.setActiveElementIdList([]),0!==o.value&&e.updateSlideIndex(0)}));var p=Object(j["computed"])((function(){return{width:at*m.value+"px",height:at*l.value*m.value+"px"}})),v=Object(j["ref"])([]),O=function(){v.value=c.value?JSON.parse(JSON.stringify(c.value.elements)):[]};Object(j["watchEffect"])(O);var h=ko(v,d,m),g=h.dragElement,x=xo(v,d,m),C=x.scaleElement,k=function(e,n){var o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];r.value.includes(n.id)||(t.setActiveElementIdList([n.id]),t.setHandleElementId(n.id)),o&&g(e,n)},E=function(){t.setActiveElementIdList([])};return{contentRef:u,slideIndex:o,elementList:v,canvasScale:m,viewportStyles:p,backgroundStyle:b,activeElementIdList:r,alignmentLines:d,selectElement:k,handleClickBlankArea:E,scaleElement:C,handleElement:i}}});n("6baa");const FN=eo()(AN,[["render",hw],["__scopeId","data-v-f9ea6e88"]]);var RN=FN,PN={class:"header"},HN=Object(j["createTextVNode"])(" 退出播放");function qN(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ThumbnailSlide"),r=Object(j["resolveComponent"])("IconLogout"),i=Object(j["resolveComponent"])("MobileThumbnails");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"mobile-player",style:Object(j["normalizeStyle"])({width:e.playerSize.width+"px",height:e.playerSize.height+"px",transform:"rotate(90deg) translateY(-".concat(e.playerSize.height,"px)")})},[Object(j["createElementVNode"])("div",{class:"screen-slide-list",onClick:t[0]||(t[0]=function(t){return e.toolVisible=!e.toolVisible}),onTouchstart:t[1]||(t[1]=function(t){return e.touchStartListener(t)}),onTouchend:t[2]||(t[2]=function(t){return e.touchEndListener(t)})},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.slides,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["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(j["openBlock"])(),Object(j["createElementBlock"])("div",{key:0,class:"slide-content",style:Object(j["normalizeStyle"])({width:e.slideSize.width+"px",height:e.slideSize.height+"px"})},[Object(j["createVNode"])(a,{slide:t,size:e.slideSize.width},null,8,["slide","size"])],4)):Object(j["createCommentVNode"])("",!0)],2)})),128))],32),e.toolVisible?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[Object(j["createElementVNode"])("div",PN,[Object(j["createElementVNode"])("div",{class:"back",onClick:t[3]||(t[3]=function(t){return e.changeMode("preview")})},[Object(j["createVNode"])(r),HN])]),Object(j["createVNode"])(i,{class:"thumbnails"})],64)):Object(j["createCommentVNode"])("",!0)],4)}var UN=Object(j["defineComponent"])({name:"mobile-player",components:{ThumbnailSlide:ks,MobileThumbnails:Ww},props:{changeMode:{type:Function,required:!0}},setup:function(){var e=ae(),t=Object(y["c"])(e),n=t.slides,o=t.slideIndex,c=t.currentSlide,l=t.viewportRatio,a=Object(j["ref"])(!1),r=Object(j["ref"])({width:0,height:0});Object(j["onMounted"])((function(){0!==o.value&&e.updateSlideIndex(0),r.value={width:document.body.clientHeight,height:document.body.clientWidth}}));var i=Object(j["computed"])((function(){var e=r.value.height/r.value.width,t=0,n=0;return e>=l.value?(t=r.value.width,n=t*l.value):(n=r.value.height,t=n/l.value),{width:t,height:n}})),u=Object(j["ref"])(null),d=function(e){u.value={x:e.changedTouches[0].pageX,y:e.changedTouches[0].pageY}},s=function(t){if(u.value){var c=Math.abs(u.value.y-t.changedTouches[0].pageY),l=t.changedTouches[0].pageX-u.value.x;Math.abs(l)>c&&Math.abs(l)>50&&(u.value=null,l<0&&o.value>0&&e.updateSlideIndex(o.value-1),l>0&&o.valuec?1:Math.round(100*r/c)/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(j["onUnmounted"])(r),{alphaRef:l,gradientColor:c,handleMouseDown:i,color:o}}});n("f418");const $S=eo()(QS,[["render",US],["__scopeId","data-v-6f2cb744"]]);var eB=$S,tB=function(e){return Object(j["pushScopeId"])("data-v-1766620e"),e=e(),Object(j["popScopeId"])(),e},nB={class:"hue"},oB=tB((function(){return Object(j["createElementVNode"])("div",{class:"hue-picker"},null,-1)})),cB=[oB];function lB(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",nB,[Object(j["createElementVNode"])("div",{class:"hue-container",ref:"hueRef",onMousedown:t[0]||(t[0]=function(t){return e.handleMouseDown(t)})},[Object(j["createElementVNode"])("div",{class:"hue-pointer",style:Object(j["normalizeStyle"])({left:e.pointerLeft})},cB,4)],544)])}var aB=Object(j["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(j["ref"])(0),c=Object(j["ref"])(""),l=Object(j["computed"])((function(){var t=te()(e.value).toHsl();return-1!==e.hue&&(t.h=e.hue),t})),a=Object(j["computed"])((function(){return 0===l.value.h&&"right"===c.value?"100%":100*l.value.h/360+"%"}));Object(j["watch"])((function(){return e.value}),(function(){var t=te()(e.value).toHsl(),n=0===t.s?e.hue:t.h;0!==n&&n-o.value>0&&(c.value="right"),0!==n&&n-o.value<0&&(c.value="left"),o.value=n}));var r=Object(j["ref"])(),i=function(t){if(t.preventDefault(),r.value){var o,c,a=r.value.clientWidth,i=r.value.getBoundingClientRect().left+window.pageXOffset,u=t.pageX-i;u<0?o=0:u>a?o=360:(c=100*u/a,o=360*c/100),-1!==e.hue&&l.value.h===o||n("colorChange",{h:o,l:l.value.l,s:l.value.s,a:l.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(j["onUnmounted"])(u),{hueRef:r,handleMouseDown:d,pointerLeft:a}}});n("468f");const rB=eo()(aB,[["render",lB],["__scopeId","data-v-1766620e"]]);var iB=rB,uB=function(e){return Object(j["pushScopeId"])("data-v-8982eb4a"),e=e(),Object(j["popScopeId"])(),e},dB=uB((function(){return Object(j["createElementVNode"])("div",{class:"saturation-white"},null,-1)})),sB=uB((function(){return Object(j["createElementVNode"])("div",{class:"saturation-black"},null,-1)})),fB=uB((function(){return Object(j["createElementVNode"])("div",{class:"saturation-circle"},null,-1)})),bB=[fB];function mB(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"saturation",ref:"saturationRef",style:Object(j["normalizeStyle"])({background:e.bgColor}),onMousedown:t[0]||(t[0]=function(t){return e.handleMouseDown(t)})},[dB,sB,Object(j["createElementVNode"])("div",{class:"saturation-pointer",style:Object(j["normalizeStyle"])({top:e.pointerTop,left:e.pointerLeft})},bB,4)],36)}var pB=Object(j["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(j["computed"])((function(){var t=te()(e.value).toHsv();return-1!==e.hue&&(t.h=e.hue),t})),c=Object(j["computed"])((function(){return"hsl(".concat(o.value.h,", 100%, 50%)")})),l=Object(j["computed"])((function(){return-100*o.value.v+1+100+"%"})),a=Object(j["computed"])((function(){return 100*o.value.s+"%"})),r=Object(ne["throttle"])((function(e){n("colorChange",e)}),20,{leading:!0,trailing:!1}),i=Object(j["ref"])(),u=function(e){if(e.preventDefault(),i.value){var t=i.value.clientWidth,n=i.value.clientHeight,c=i.value.getBoundingClientRect().left+window.pageXOffset,l=i.value.getBoundingClientRect().top+window.pageYOffset,a=Object(ne["clamp"])(e.pageX-c,0,t),u=Object(ne["clamp"])(e.pageY-l,0,n),d=a/t,s=Object(ne["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(j["onUnmounted"])(d),{saturationRef:i,bgColor:c,handleMouseDown:s,pointerTop:l,pointerLeft:a}}});n("a46e");const vB=eo()(pB,[["render",mB],["__scopeId","data-v-8982eb4a"]]);var OB=vB,hB={class:"editable-input"},jB=["value"];function yB(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",hB,[Object(j["createElementVNode"])("input",{class:"input-content",value:e.val,onInput:t[0]||(t[0]=function(t){return e.handleInput(t)})},null,40,jB)])}var gB=Object(j["defineComponent"])({name:"editable-input",emits:["colorChange"],props:{value:{type:Object,required:!0}},setup:function(e,t){var n=t.emit,o=Object(j["computed"])((function(){var t="";return t=e.value.a<1?te()(e.value).toHex8String().toUpperCase():te()(e.value).toHexString().toUpperCase(),t.replace("#","")})),c=function(e){var t=e.target.value;t.length>=6&&n("colorChange",te()(t).toRgb())};return{val:o,handleInput:c}}});n("933d");const xB=eo()(gB,[["render",yB],["__scopeId","data-v-20bfe6b0"]]);var CB=xB,kB="RECENT_COLORS",EB=[["#7f7f7f","#f2f2f2"],["#0d0d0d","#808080"],["#1c1a10","#ddd8c3"],["#0e243d","#c6d9f0"],["#233f5e","#dae5f0"],["#632623","#f2dbdb"],["#4d602c","#eaf1de"],["#3f3150","#e6e0ec"],["#1e5867","#d9eef3"],["#99490f","#fee9da"]],wB=function(e,t,n){for(var o=te()(e).toRgb(),c=te()(t).toRgb(),l=(c.r-o.r)/n,a=(c.g-o.g)/n,r=(c.b-o.b)/n,i=[],u=0;ut&&(c.value=c.value.slice(0,t))}}),300,{trailing:!0});Object(j["onMounted"])((function(){var e=localStorage.getItem(kB);e&&(c.value=JSON.parse(e))})),Object(j["watch"])(c,(function(){var e=JSON.stringify(c.value);localStorage.setItem(kB,e)}));var d=function(e){"h"in e?(o.value=e.h,l.value=te()(e).toRgb()):(o.value=te()(e).toHsl().h,l.value=e),u()},s=function(){var e=document.querySelector(".canvas");if(e){var t=document.createElement("div");t.style.cssText="position: fixed; top: 0; left: 0; bottom: 0; right: 0; z-index: 9999; cursor: wait;",document.body.appendChild(t);var n=document.createElement("div");n.style.cssText="position: absolute; top: -100px; left: -100px; width: 16px; height: 16px; border: 1px solid #000; z-index: 999",t.appendChild(n);var c=e.getBoundingClientRect(),a=c.left,r=c.top,i=c.width,d=c.height,s=function(e){return(!e.tagName||"FOREIGNOBJECT"!==e.tagName.toUpperCase())&&(!e.classList||!e.classList.contains("operate"))};Object(fn["a"])(e,{filter:s,fontEmbedCSS:"",width:i,height:d,canvasWidth:i,canvasHeight:d,pixelRatio:1}).then((function(e){e.style.cssText="position: absolute; top: ".concat(r,"px; left: ").concat(a,"px; cursor: crosshair;"),t.style.cursor="default",t.appendChild(e);var c=e.getContext("2d");if(c){var i="",d=function(e){var t=e.x,o=e.y,l=t-a,u=o-r,d=Object(ve["a"])(c.getImageData(l,u,1,1).data,4),s=d[0],f=d[1],b=d[2],m=d[3];i="rgba(".concat(s,", ").concat(f,", ").concat(b,", ").concat((m/255).toFixed(2),")"),n.style.left=t+10+"px",n.style.top=o+10+"px",n.style.backgroundColor=i},s=function(){i="",n.style.left="-100px",n.style.top="-100px",n.style.backgroundColor=""},f=function n(c){if(i&&0===c.button){var a=te()(i);o.value=a.toHsl().h,l.value=a.toRgb(),u()}document.body.removeChild(t),e.removeEventListener("mousemove",d),e.removeEventListener("mouseleave",s),window.removeEventListener("mousedown",n)};e.addEventListener("mousemove",d),e.addEventListener("mouseleave",s),window.addEventListener("mousedown",f)}})).catch((function(){De["a"].error("取色吸管初始化失败"),document.body.removeChild(t)}))}};return{themeColors:VB,standardColors:IB,presetColors:a,color:l,hue:o,currentColor:r,changeColor:d,selectPresetColor:i,recentColors:c,pickColor:s}}});n("c685");const BB=eo()(SB,[["render",AS],["__scopeId","data-v-e0bde284"]]);var LB=BB,TB={key:0,class:"fullscreen-spin"};function _B(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("Spin");return e.loading?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",TB,[Object(j["createVNode"])(a,{tip:e.tip,size:"large"},null,8,["tip"])])):Object(j["createCommentVNode"])("",!0)}var MB=Object(j["defineComponent"])({name:"fullscreen-spin",props:{loading:{type:Boolean,default:!1},tip:{type:String,default:""}}});n("1756");const DB=eo()(MB,[["render",_B],["__scopeId","data-v-5e77feb8"]]);var zB=DB,AB={install:function(e){e.component("FileInput",sS),e.component("CheckboxButton",pS),e.component("CheckboxButtonGroup",yS),e.component("ColorPicker",LB),e.component("FullscreenSpin",zB)}};function FB(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("MenuContent");return Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],null,[Object(j["createElementVNode"])("div",{class:"mask",onContextmenu:t[0]||(t[0]=Object(j["withModifiers"])((function(t){return e.removeContextmenu()}),["prevent"])),onMousedown:t[1]||(t[1]=function(t){return e.removeContextmenu()})},null,32),Object(j["createElementVNode"])("div",{class:"contextmenu",style:Object(j["normalizeStyle"])({left:e.style.left+"px",top:e.style.top+"px"}),onContextmenu:t[2]||(t[2]=Object(j["withModifiers"])((function(){}),["prevent"]))},[Object(j["createVNode"])(a,{menus:e.menus,handleClickMenuItem:e.handleClickMenuItem},null,8,["menus","handleClickMenuItem"])],36)],64)}var RB={class:"menu-content"},PB=["onClick"],HB={class:"text"},qB={key:0,class:"sub-text"};function UB(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("menu-content",!0);return Object(j["openBlock"])(),Object(j["createElementBlock"])("ul",RB,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.menus,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:t.text||n},[t.hide?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createElementBlock"])("li",{key:0,class:Object(j["normalizeClass"])(["menu-item",{divider:t.divider,disable:t.disable}]),onClick:Object(j["withModifiers"])((function(n){return e.handleClickMenuItem(t)}),["stop"])},[t.divider?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{key:0,class:Object(j["normalizeClass"])(["menu-item-content",{"has-children":t.children,"has-handler":t.handler}])},[Object(j["createElementVNode"])("span",HB,Object(j["toDisplayString"])(t.text),1),t.subText&&!t.children?(Object(j["openBlock"])(),Object(j["createElementBlock"])("span",qB,Object(j["toDisplayString"])(t.subText),1)):Object(j["createCommentVNode"])("",!0),t.children&&t.children.length?(Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:1,class:"sub-menu",menus:t.children,handleClickMenuItem:e.handleClickMenuItem},null,8,["menus","handleClickMenuItem"])):Object(j["createCommentVNode"])("",!0)],2))],10,PB))],64)})),128))])}var WB=Object(j["defineComponent"])({name:"menu-content",props:{menus:{type:Array,required:!0},handleClickMenuItem:{type:Function,required:!0}}});n("0c74");const GB=eo()(WB,[["render",UB],["__scopeId","data-v-eb1555e8"]]);var XB=GB,YB=Object(j["defineComponent"])({name:"contextmenu",components:{MenuContent:XB},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(j["computed"])((function(){var t=170,n=30,o=11,c=5,l=e.axis,a=l.x,r=l.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*c,f=document.body.clientWidth,b=document.body.clientHeight;return{left:f<=a+d?a-d:a,top:b<=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 ZB=eo()(YB,[["render",FB]]);var JB=ZB,KB="CTX_CONTEXTMENU_HANDLER",QB=function(e,t,n){t.stopPropagation(),t.preventDefault();var o=n.value(e);if(o){var c=null,l=function t(){c&&(document.body.removeChild(c),c=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:l};c=document.createElement("div");var r=Object(j["createVNode"])(JB,a,null);Object(j["render"])(r,c),document.body.appendChild(c),e.classList.add("contextmenu-active"),document.body.addEventListener("scroll",l),window.addEventListener("resize",l)}},$B={mounted:function(e,t){e[KB]=function(n){return QB(e,n,t)},e.addEventListener("contextmenu",e[KB])},unmounted:function(e){e&&e[KB]&&(e.removeEventListener("contextmenu",e[KB]),delete e[KB])}},eL=$B,tL="CTX_CLICK_OUTSIDE_HANDLER",nL=function(e,t,n){var o=n.value,c=t.composedPath(),l=c?c.indexOf(e)<0:!e.contains(t.target);l&&o(t)},oL={mounted:function(e,t){e[tL]=function(n){return nL(e,n,t)},setTimeout((function(){document.addEventListener("click",e[tL])}),0)},unmounted:function(e){e[tL]&&(document.removeEventListener("click",e[tL]),delete e[tL])}},cL=oL,lL={install:function(e){e.directive("contextmenu",eL),e.directive("click-outside",cL)}},aL=Object(j["createApp"])(rV);aL.component("InputNumber",h["a"]),aL.component("Divider",O["a"]),aL.component("Button",v["a"]),aL.component("ButtonGroup",v["a"].Group),aL.component("Tooltip",p["a"]),aL.component("Popover",m["a"]),aL.component("Slider",b["a"]),aL.component("Select",f["a"]),aL.component("SelectOption",f["a"].Option),aL.component("SelectOptGroup",f["a"].OptGroup),aL.component("Switch",s["a"]),aL.component("Radio",d["a"]),aL.component("RadioGroup",d["a"].Group),aL.component("RadioButton",d["a"].Button),aL.component("Input",u["a"]),aL.component("InputGroup",u["a"].Group),aL.component("TextArea",u["a"].TextArea),aL.component("Modal",i["a"]),aL.component("Dropdown",r["a"]),aL.component("Menu",a["a"]),aL.component("MenuItem",a["a"].Item),aL.component("Checkbox",l["a"]),aL.component("Drawer",c["a"]),aL.component("Spin",o["a"]),aL.use(aS),aL.use(AB),aL.use(lL),aL.use(Object(y["a"])()),aL.mount("#app")},cfc7:function(e,t,n){},cfda:function(e,t,n){"use strict";n("78eb")},d4d8:function(e,t,n){"use strict";n("41ca")},d56f:function(e,t,n){"use strict";n("4a3d")},d582:function(e,t,n){"use strict";n("2a45")},d65a:function(e,t,n){},d72c:function(e,t,n){},d785:function(e,t,n){},d7a4:function(e,t,n){},d7a4d:function(e,t,n){"use strict";n("1ce8")},dab5:function(e,t,n){"use strict";n("6702")},db34:function(e,t,n){},de7e:function(e,t,n){"use strict";n("53cb")},de82:function(e,t,n){},dec5:function(e,t,n){},dec8:function(e,t,n){"use strict";n("4c71")},dfed:function(e,t,n){"use strict";n("33a6")},dffc:function(e,t,n){},e09a:function(e,t,n){},e1f8:function(e,t,n){},e412:function(e,t,n){"use strict";n("ec57")},e7b8:function(e,t,n){"use strict";n("46ba")},e80d:function(e,t,n){},ea09:function(e,t,n){},ec38:function(e,t,n){"use strict";n("3677")},ec57:function(e,t,n){},ed2c:function(e,t,n){},ed98:function(e,t,n){"use strict";n("cce0")},edc2:function(e,t,n){"use strict";n("b0c3")},ee0f:function(e,t,n){"use strict";n("f9ef")},ef2a:function(e,t,n){"use strict";n("6247")},f146:function(e,t,n){"use strict";n("0dd5")},f196:function(e,t,n){"use strict";n("717a")},f1ac:function(e,t,n){"use strict";n("ea09")},f212:function(e,t,n){"use strict";n("6cf8")},f258:function(e,t,n){},f418:function(e,t,n){"use strict";n("0f92")},f8b7:function(e,t,n){"use strict";n("ad93")},f8c7:function(e,t,n){"use strict";n("5a68")},f8e4:function(e,t,n){"use strict";n("d785")},f8ec:function(e,t,n){},f9ef:function(e,t,n){},fb37:function(e,t,n){"use strict";n("51ed")},fc12:function(e,t,n){"use strict";n("d72c")},fcf0:function(e,t,n){"use strict";n("838e")},fdcb:function(e,t,n){},fe89:function(e,t,n){},ff5e:function(e,t,n){},ff80:function(e,t,n){},ff9c:function(e,t,n){},ff9e:function(e,t,n){"use strict";n("4262")},ffb8:function(e,t,n){"use strict";n("3831")}}); +//# sourceMappingURL=app.c1a001e5.js.map \ No newline at end of file diff --git a/js/app.c1a001e5.js.map b/js/app.c1a001e5.js.map new file mode 100644 index 00000000..98de55ea --- /dev/null +++ b/js/app.c1a001e5.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/views/components/element/LatexElement/BaseLatexElement.vue?d655","webpack:///./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue?7dd3","webpack:///./src/views/components/element/VideoElement/ScreenVideoElement.vue?f49b","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LatexStylePanel.vue?43cd","webpack:///./src/views/Editor/Toolbar/index.vue?b585","webpack:///./src/views/components/element/ElementOutline.vue?b100","webpack:///./src/views/Editor/Canvas/ViewportBackground.vue?06f4","webpack:///./src/views/Editor/Toolbar/common/ElementFlip.vue?ced2","webpack:///./src/components/Contextmenu/MenuContent.vue?f410","webpack:///./src/views/Editor/Toolbar/common/ElementShadow.vue?4eb8","webpack:///./src/views/components/element/TableElement/CustomTextarea.vue?a980","webpack:///./src/App.vue?9bd9","webpack:///./src/views/Mobile/MobilePlayer.vue?4b5a","webpack:///./src/components/FullscreenSpin.vue?4232","webpack:///./src/views/Editor/ExportDialog/ExportJSON.vue?9bf8","webpack:///./src/views/Editor/EditorHeader/index.vue?52d8","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue?c113","webpack:///./src/views/components/element/LineElement/index.vue?a243","webpack:///./src/views/components/element/VideoElement/VideoPlayer/index.vue?fa43","webpack:///./src/views/Editor/index.vue?0794","webpack:///./src/views/components/element/ProsemirrorEditor.vue?89d6","webpack:///./src/views/Editor/Canvas/Ruler.vue?125e","webpack:///./src/views/Screen/WritingBoardTool.vue?e8af","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/MultiStylePanel.vue?a8c0","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue?de78","webpack:///./src/views/components/element/ImageElement/BaseImageElement.vue?9eed","webpack:///./src/views/components/element/ChartElement/index.vue?05e1","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue?6a07","webpack:///./src/views/components/element/TextElement/BaseTextElement.vue?b68c","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/AudioStylePanel.vue?499a","webpack:///./src/views/Screen/BaseView.vue?275f","webpack:///./src/views/components/element/ImageElement/ImageClipHandler.vue?3fab","webpack:///./src/views/Mobile/index.vue?2929","webpack:///./src/views/components/element/LineElement/BaseLineElement.vue?ba4f","webpack:///./src/views/components/element/TableElement/BaseTableElement.vue?ea96","webpack:///./src/views/Mobile/MobileEditor/ElementToolbar.vue?2cac","webpack:///./src/components/ColorPicker/Hue.vue?3cb1","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue?4c4d","webpack:///./src/views/components/element/VideoElement/BaseVideoElement.vue?2125","webpack:///./src/views/Editor/ExportDialog/ExportPPTX.vue?b7f9","webpack:///./src/views/Mobile/MobileThumbnails.vue?bdc9","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue?f076","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue?a7f1","webpack:///./src/views/Editor/Canvas/Operate/ImageElementOperate.vue?f32f","webpack:///./src/components/LaTeXEditor/index.vue?cae8","webpack:///./src/views/Editor/Remark/index.vue?976f","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue?26c4","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue?3b58","webpack:///./src/views/Editor/Toolbar/common/ElementFilter.vue?d0a0","webpack:///./src/views/Mobile/MobileEditor/index.vue?2f90","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue?4c9e","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue?f0f1","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue?a58c","webpack:///./src/views/Mobile/MobileEditor/SlideToolbar.vue?9ac0","webpack:///./src/components/ColorPicker/Checkboard.vue?dbe5","webpack:///./src/views/Editor/Canvas/Operate/ResizeHandler.vue?c5a9","webpack:///./src/views/Editor/Canvas/Operate/LineElementOperate.vue?07b0","webpack:///./src/views/Editor/EditorHeader/HotkeyDoc.vue?20df","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue?bcef","webpack:///./src/components/CheckboxButton.vue?f525","webpack:///./src/views/components/element/ChartElement/Chart.vue?e307","webpack:///./src/views/Editor/Canvas/Operate/RotateHandler.vue?e809","webpack:///./src/views/Mobile/MobileEditor/Header.vue?e732","webpack:///./src/views/Editor/ExportDialog/ExportPDF.vue?c0b3","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue?6e1f","webpack:///./src/views/Editor/Canvas/index.vue?540b","webpack:///./src/views/components/element/TableElement/StaticTable.vue?0130","webpack:///./src/components/ColorPicker/EditableInput.vue?f472","webpack:///./src/views/components/element/TableElement/EditableTable.vue?8c01","webpack:///./src/views/Screen/index.vue?4fbc","webpack:///./src/views/Screen/ScreenSlideList.vue?91d0","webpack:///./src/views/components/element/ChartElement/Chart.vue?b455","webpack:///./src/views/components/element/ImageElement/index.vue?ae49","webpack:///./src/views/Editor/Canvas/Operate/BorderLine.vue?ce7c","webpack:///./src/views/components/element/TableElement/index.vue?d75c","webpack:///./src/views/components/element/ChartElement/BaseChartElement.vue?7c6b","webpack:///./src/views/Editor/Toolbar/SlideDesignPanel.vue?cf37","webpack:///./src/components/ColorPicker/Saturation.vue?6538","webpack:///./src/views/components/element/AudioElement/ScreenAudioElement.vue?fcfe","webpack:///./src/views/components/ThumbnailSlide/index.vue?d419","webpack:///./src/views/Editor/ExportDialog/ExportSpecificFile.vue?ca1f","webpack:///./src/views/components/element/VideoElement/index.vue?1771","webpack:///./src/views/Editor/Canvas/MouseSelection.vue?f8ce","webpack:///./src/views/components/element/ShapeElement/index.vue?6a27","webpack:///./src/views/components/element/AudioElement/index.vue?8c57","webpack:///./src/views/Editor/ExportDialog/index.vue?0c28","webpack:///./src/components/Contextmenu/index.vue?694c","webpack:///./src/components/FileInput.vue?18d0","webpack:///./src/views/components/element/LatexElement/index.vue?f439","webpack:///./src/views/Editor/Canvas/Operate/LinkHandler.vue?c7f5","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/VideoStylePanel.vue?18d8","webpack:///./src/views/components/element/AudioElement/AudioPlayer.vue?9dd7","webpack:///./src/components/CheckboxButtonGroup.vue?4731","webpack:///./src/components/ColorPicker/index.vue?1352","webpack:///./src/components/WritingBoard.vue?a9d0","webpack:///./src/views/components/element/TextElement/index.vue?9ffc","webpack:///./src/App.vue?c32d","webpack:///./src/types/toolbar.ts","webpack:///./src/configs/font.ts","webpack:///./src/types/edit.ts","webpack:///./src/configs/hotkey.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/configs/storage.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?4903","webpack:///./src/types/slides.ts","webpack:///./src/utils/crypto.ts","webpack:///./src/utils/clipboard.ts","webpack:///./src/utils/element.ts","webpack:///./src/utils/textParser.ts","webpack:///./src/utils/image.ts","webpack:///./src/configs/canvas.ts","webpack:///./src/configs/shapes.ts","webpack:///./src/configs/chartTypes.ts","webpack:///./src/hooks/useHistorySnapshot.ts","webpack:///./src/hooks/useCreateElement.ts","webpack:///./src/hooks/useAddSlidesOrElements.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?2918","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?7ccd","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?4b7b","webpack:///./src/types/injectKey.ts","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?493e","webpack:///./src/hooks/useAlignElementToCanvas.ts","webpack:///./src/views/components/element/ImageElement/index.vue?492d","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?b997","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?1f43","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?da49","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?bf19","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?f476","webpack:///./src/views/components/element/ElementOutline.vue?e632","webpack:///./src/views/components/element/ElementOutline.vue","webpack:///./src/views/components/element/ElementOutline.vue?e7ed","webpack:///./src/views/components/element/ProsemirrorEditor.vue?9528","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/utils/prosemirror/commands/setTextIndent.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?de15","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?7a11","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?a681","webpack:///./src/views/components/element/ChartElement/Chart.vue?eb17","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?6a98","webpack:///./src/views/components/element/TableElement/EditableTable.vue?961f","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?ca84","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?d5f9","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?2af8","webpack:///./src/views/components/element/VideoElement/VideoPlayer/index.vue?7a25","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?6995","webpack:///./src/views/components/element/AudioElement/AudioPlayer.vue?ecf0","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?425f","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?e3ef","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue?af47","webpack:///./src/views/Editor/Canvas/Ruler.vue?27dd","webpack:///./src/views/Editor/Canvas/Ruler.vue","webpack:///./src/views/Editor/Canvas/Ruler.vue?8bb7","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue?85fd","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue?e33f","webpack:///./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue?420f","webpack:///./src/views/Editor/Canvas/hooks/useCommonOperate.ts","webpack:///./src/views/Editor/Canvas/Operate/ResizeHandler.vue?478c","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?625e","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?7234","webpack:///./src/views/Editor/Canvas/Operate/ImageElementOperate.vue?ca9d","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?a2af","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?c9be","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?f9d9","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?1076","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?67e0","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?2f13","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?204d","webpack:///./src/views/components/ThumbnailSlide/index.vue?4c45","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?5777","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?2ea4","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?324b","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?0cd1","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?551a","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue?a721","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue?258a","webpack:///./src/views/Editor/CanvasTool/LinePool.vue?1f23","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?3db6","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?dab2","webpack:///./src/views/Editor/CanvasTool/MediaInput.vue","webpack:///./src/views/Editor/CanvasTool/MediaInput.vue?23a0","webpack:///./src/components/LaTeXEditor/index.vue?4587","webpack:///./src/components/LaTeXEditor/hfmath.ts","webpack:///./src/configs/latex.ts","webpack:///./src/components/LaTeXEditor/FormulaContent.vue?7e2b","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?7dda","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/views/Editor/Toolbar/index.vue?2818","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/index.vue?984c","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue?6e18","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue?113e","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?cda4","webpack:///./src/views/Editor/Toolbar/common/ColorButton.vue?e7a0","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?0b08","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?41de","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?35da","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?20b0","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?0dd5","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?d445","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?c84c","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?cd0d","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?781e","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/AudioStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/AudioStylePanel.vue?82fb","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/MultiStylePanel.vue?0898","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/MultiStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/MultiStylePanel.vue?3f99","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/index.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/index.vue?ba7d","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue?e5f6","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue?9199","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue?0509","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?2585","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?603e","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue?09d8","webpack:///./src/views/Editor/Toolbar/MultiPositionPanel.vue?4dc6","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?3419","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?2a03","webpack:///./src/views/Editor/Remark/index.vue","webpack:///./src/views/Editor/Remark/index.vue?4c66","webpack:///./src/views/Editor/ExportDialog/index.vue?9a13","webpack:///./src/views/Editor/ExportDialog/ExportImage.vue?4c7c","webpack:///./src/views/Editor/ExportDialog/ExportImage.vue","webpack:///./src/views/Editor/ExportDialog/ExportImage.vue?e2fb","webpack:///./src/views/Editor/ExportDialog/ExportJSON.vue?c3d4","webpack:///./src/views/Editor/ExportDialog/ExportJSON.vue","webpack:///./src/views/Editor/ExportDialog/ExportJSON.vue?89c4","webpack:///./src/views/Editor/ExportDialog/ExportPDF.vue?5c9a","webpack:///./src/utils/print.ts","webpack:///./src/views/Editor/ExportDialog/ExportPDF.vue","webpack:///./src/views/Editor/ExportDialog/ExportPDF.vue?a6a5","webpack:///./src/views/Editor/ExportDialog/ExportPPTX.vue?8a4d","webpack:///./src/views/Editor/ExportDialog/ExportPPTX.vue","webpack:///./src/views/Editor/ExportDialog/ExportPPTX.vue?edaf","webpack:///./src/views/Editor/ExportDialog/ExportSpecificFile.vue?c7db","webpack:///./src/views/Editor/ExportDialog/ExportSpecificFile.vue","webpack:///./src/views/Editor/ExportDialog/ExportSpecificFile.vue?c496","webpack:///./src/views/Editor/ExportDialog/index.vue","webpack:///./src/views/Editor/ExportDialog/index.vue?5ed6","webpack:///./src/views/Editor/index.vue","webpack:///./src/views/Editor/index.vue?fb1c","webpack:///./src/views/Screen/index.vue?f3c3","webpack:///./src/views/Screen/BaseView.vue?b658","webpack:///./src/views/Screen/hooks/useExecPlay.ts","webpack:///./src/views/Screen/hooks/useSlideSize.ts","webpack:///./src/views/Screen/hooks/useFullscreen.ts","webpack:///./src/views/Screen/ScreenSlideList.vue?9ba7","webpack:///./src/views/Screen/ScreenSlide.vue?5e46","webpack:///./src/views/Screen/ScreenElement.vue?fd5d","webpack:///./src/views/components/element/ChartElement/ScreenChartElement.vue?b40b","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?d32e","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?ac4c","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/ScreenSlideList.vue","webpack:///./src/views/Screen/ScreenSlideList.vue?fd5d","webpack:///./src/views/Screen/SlideThumbnails.vue?6cb4","webpack:///./src/views/Screen/SlideThumbnails.vue","webpack:///./src/views/Screen/SlideThumbnails.vue?2aa3","webpack:///./src/views/Screen/WritingBoardTool.vue?5783","webpack:///./src/components/WritingBoard.vue?3e04","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/BaseView.vue","webpack:///./src/views/Screen/BaseView.vue?3e47","webpack:///./src/views/Screen/PresenterView.vue?a27e","webpack:///./src/views/Screen/PresenterView.vue","webpack:///./src/views/Screen/PresenterView.vue?6e6b","webpack:///./src/views/Screen/index.vue","webpack:///./src/views/Screen/index.vue?d18a","webpack:///./src/views/Mobile/index.vue?2f90","webpack:///./src/views/Mobile/MobileEditor/index.vue?559b","webpack:///./src/views/Mobile/MobileEditor/MobileEditableElement.vue?bc89","webpack:///./src/views/Mobile/MobileEditor/MobileEditableElement.vue","webpack:///./src/views/Mobile/MobileEditor/MobileEditableElement.vue?6c30","webpack:///./src/views/Mobile/MobileEditor/MobileOperate.vue?8a60","webpack:///./src/views/Mobile/MobileEditor/MobileOperate.vue","webpack:///./src/views/Mobile/MobileEditor/MobileOperate.vue?c9a6","webpack:///./src/views/Mobile/MobileEditor/SlideToolbar.vue?f466","webpack:///./src/views/Mobile/MobileThumbnails.vue?ef83","webpack:///./src/views/Mobile/MobileThumbnails.vue","webpack:///./src/views/Mobile/MobileThumbnails.vue?a0ad","webpack:///./src/views/Mobile/MobileEditor/SlideToolbar.vue","webpack:///./src/views/Mobile/MobileEditor/SlideToolbar.vue?a182","webpack:///./src/views/Mobile/MobileEditor/ElementToolbar.vue?6bd4","webpack:///./src/views/Mobile/MobileEditor/ElementToolbar.vue","webpack:///./src/views/Mobile/MobileEditor/ElementToolbar.vue?d8d2","webpack:///./src/views/Mobile/MobileEditor/Header.vue?88ab","webpack:///./src/views/Mobile/MobileEditor/Header.vue","webpack:///./src/views/Mobile/MobileEditor/Header.vue?6c75","webpack:///./src/views/Mobile/MobileEditor/index.vue","webpack:///./src/views/Mobile/MobileEditor/index.vue?8405","webpack:///./src/views/Mobile/MobilePlayer.vue?bc15","webpack:///./src/views/Mobile/MobilePlayer.vue","webpack:///./src/views/Mobile/MobilePlayer.vue?362c","webpack:///./src/views/Mobile/MobilePreview.vue?5915","webpack:///./src/views/Mobile/MobilePreview.vue","webpack:///./src/views/Mobile/MobilePreview.vue?a29a","webpack:///./src/views/Mobile/index.vue","webpack:///./src/views/Mobile/index.vue?4824","webpack:///./src/App.vue","webpack:///./src/App.vue?ae2f","webpack:///./src/registerServiceWorker.ts","webpack:///./src/plugins/icon.ts","webpack:///./src/components/FileInput.vue?352e","webpack:///./src/components/FileInput.vue","webpack:///./src/components/FileInput.vue?ae58","webpack:///./src/components/CheckboxButton.vue?57a3","webpack:///./src/components/CheckboxButton.vue","webpack:///./src/components/CheckboxButton.vue?b241","webpack:///./src/components/CheckboxButtonGroup.vue?74db","webpack:///./src/components/CheckboxButtonGroup.vue","webpack:///./src/components/CheckboxButtonGroup.vue?da6b","webpack:///./src/components/ColorPicker/index.vue?0de1","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?5ef3","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?9baf","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/ExportDialog/ExportImage.vue?9a08","webpack:///./src/views/Editor/CanvasTool/ChartPool.vue?d28e","webpack:///./src/views/Screen/ScreenElement.vue?4739","webpack:///./src/views/Editor/Toolbar/common/ElementOutline.vue?033f","webpack:///./src/views/Editor/Toolbar/common/ColorButton.vue?7b92","webpack:///./src/views/components/element/AudioElement/BaseAudioElement.vue?3687","webpack:///./src/views/Screen/SlideThumbnails.vue?9202","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue?81db","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue?739c","webpack:///./src/views/Screen/ScreenSlide.vue?5891","webpack:///./src/views/Editor/Thumbnails/LayoutPool.vue?17f5","webpack:///./src/views/Editor/Canvas/Operate/index.vue?eb9b","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue?c03e","webpack:///./src/components/LaTeXEditor/FormulaContent.vue?b12e","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue?6bea","webpack:///./src/views/Editor/Canvas/LinkDialog.vue?368f","webpack:///./src/views/Screen/PresenterView.vue?f1c8","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue?6ce9","webpack:///./src/views/components/element/ShapeElement/BaseShapeElement.vue?ada5","webpack:///./src/views/Mobile/MobileEditor/MobileOperate.vue?f0cc","webpack:///./src/components/ColorPicker/Alpha.vue?9bb4","webpack:///./src/views/Mobile/MobilePreview.vue?3777","webpack:///./src/views/Editor/Toolbar/SymbolPanel.vue?b898","webpack:///./src/views/Editor/Toolbar/MultiPositionPanel.vue?7dc9","webpack:///./src/views/Editor/Thumbnails/index.vue?2547","webpack:///./src/views/Editor/CanvasTool/LinePool.vue?aa30","webpack:///./src/views/Editor/CanvasTool/index.vue?0a18","webpack:///./src/views/Editor/CanvasTool/MediaInput.vue?2492","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","ToolbarStates","ElementOrderCommands","ElementAlignCommands","OperateBorderLines","OperateResizeHandlers","OperateLineHandlers","KEYS","SYS_FONTS","label","WEB_FONTS","view","empty","state","selection","dispatch","addMark","editorView","mark","tr","from","to","$from","$to","pos","findNodesWithSameMark","doc","markType","ii","finder","type","firstMark","fromNode","toNode","node","nodeAt","marks","find","fromPos","toPos","jj","nodeSize","equalNodeType","nodeType","Array","isArray","indexOf","findParentNodeClosestToPos","$pos","predicate","depth","before","start","findParentNode","_ref","findParentNodeOfType","isActiveOfParentNodeType","schema","nodes","getMarkAttrs","lastChild","attr","attrs","markActive","isInSet","storedMarks","rangeHasMark","getAttrValueInSelection","keepChecking","nodesBetween","_defaultAttrs","color","backcolor","fontsize","fontname","align","defaultAttrs","isBold","isEm","isUnderline","isStrikethrough","isSuperscript","isSubscript","isCode","link","isBulletList","isOrderedList","isBlockquote","bold","em","underline","strikethrough","superscript","subscript","code","bulletList","orderedList","blockquote","getFontsize","parseInt","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","wordSpace","themeColor","fontColor","backgroundColor","outline","text","useSlidesStore","theme","slides","slideIndex","viewportRatio","getters","currentSlide","currentSlideAnimations","animations","els","elIds","map","el","animation","includes","elId","formatedAnimations","trigger","last","autoNext","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","deleteElement","elementId","elementIdList","updateElement","elIdList","removeElementProps","propName","propsNames","nanoid","useMainStore","activeElementIdList","handleElementId","activeGroupElementId","canvasPercentage","canvasScale","canvasDragged","thumbnailsFocus","editorAreaFocus","disableHotkeys","showGridLines","showRuler","creatingElement","availableFonts","toolbarState","SLIDE_DESIGN","clipingImageElementId","richTextAttrs","selectedTableCells","isScaling","selectedSlidesIndex","dialogForExport","databaseId","activeElementList","slidesStore","handleElement","setActiveElementIdList","setHandleElementId","setActiveGroupElementId","setCanvasPercentage","percentage","setCanvasScale","scale","setCanvasDragged","isDragged","setThumbnailsFocus","isFocus","setEditorareaFocus","setDisableHotkeysState","disable","setGridLinesState","show","setRulerState","setCreatingElement","setAvailableFonts","setToolbarState","setClipingImageElementId","setRichtextAttrs","setSelectedTableCells","cells","setScalingState","updateSelectedSlidesIndex","setDialogForExport","LOCALSTORAGE_KEY_DISCARDED_DB","databaseNamePrefix","deleteDiscardedDB","now","Date","getTime","localStorageDiscardedDB","localStorage","getItem","localStorageDiscardedDBList","getDatabaseNames","databaseNames","discardedDBNames","split","prefix","time","delete","removeItem","version","stores","snapshots","table","db","useSnapshotStore","snapshotCursor","snapshotLength","canUndo","canRedo","setSnapshotCursor","cursor","setSnapshotLength","initSnapshotDatabase","newFirstSnapshot","add","addSnapshot","orderBy","keys","allKeys","needDeleteKeys","snapshot","snapshotLengthLimit","update","bulkDelete","unDo","mainStore","toArray","reDo","useKeyboardStore","ctrlKeyState","shiftKeyState","spaceKeyState","ctrlOrShiftKeyActive","setCtrlKeyState","active","setShiftKeyState","setSpaceKeyState","useScreenStore","setScreening","digit","len","navigator","userAgent","match","_hoisted_1","class","_hoisted_2","_hoisted_3","_component_EditorHeader","_component_Thumbnails","_component_CanvasTool","_component_Canvas","_component_Remark","_component_Toolbar","_component_ExportDialog","_component_Modal","remarkHeight","$event","visible","footer","centered","closable","destroyOnClose","onCancel","closeExportDialog","default","_","ShapePathFormulasKeys","ElementTypes","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","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","broken","mid","curve","cubic","c1","c2","p1","p2","htmlText","replace","paragraphs","string","paragraph","getImageSize","src","img","onload","imgWidth","clientWidth","imgHeight","clientHeight","onerror","file","reader","FileReader","addEventListener","readAsDataURL","VIEWPORT_SIZE","SHAPE_PATH_FORMULAS","ROUND_RECT","CUT_RECT_DIAGONAL","CUT_RECT_SINGLE","CUT_RECT_SAMESIDE","ROUND_RECT_DIAGONAL","ROUND_RECT_SINGLE","ROUND_RECT_SAMESIDE","MESSAGE","arrowWidth","arrowheight","ROUND_MESSAGE","L","lineWidth","RING_RECT","PLUS","SHAPE_LIST","pathFormula","special","outlined","CHART_TYPES","bar","horizontalBar","area","scatter","pie","ring","snapshotStore","addHistorySnapshot","trailing","redo","leading","undo","useHistorySnapshot","callback","setTimeout","createImageElement","createChartElement","newElement","chartType","gridColor","labels","legends","series","options","horizontalBars","showArea","showLine","donut","createTableElement","row","col","rowCells","colspan","rowspan","DEFAULT_CELL_WIDTH","DEFAULT_CELL_HEIGHT","colWidths","rowHeader","rowFooter","colHeader","colFooter","createTextElement","position","editorRef","querySelector","focus","createShapeElement","createLineElement","isBroken","isCurve","isCubic","createLatexElement","w","h","latex","strokeWidth","createVideoElement","createAudioElement","loop","autoplay","addElementsFromData","currentSlideElementIdList","inCurrentSlide","values","addSlidesFromData","newSlides","useCreateElement","useAddSlidesOrElements","createTextElementFromClipboard","pasteTextClipboardData","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","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","msRequestFullscreen","exitFullscreen","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","isFullscreen","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","webkitCurrentFullScreenElement","screenStore","enterScreening","enterScreeningFromStart","exitScreening","canvasScalePercentage","round","scaleCanvas","setCanvasScalePercentage","resetCanvas","keyboardStore","useSlideHandler","useCombineElement","useLockElement","useCopyAndPasteElement","useSelectAllElement","useMoveElement","useOrderElement","useScreening","useScaleCanvas","copy","cut","quickCopy","selectAll","combine","uncombine","remove","moveSlide","PAGEUP","PAGEDOWN","order","tabActiveElement","currentIndex","nextIndex","nextElementId","firstElement","keydownListener","ctrlKey","shiftKey","altKey","metaKey","ctrlOrMetaKeyActive","toUpperCase","SPACE","P","preventDefault","F5","C","X","D","Z","Y","A","G","F","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","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","href","target","_hoisted_32","_component_IconFolderClose","_component_MenuItem","_component_FileInput","_component_Menu","_component_Dropdown","_component_IconEdit","_component_IconPpt","_component_IconHelpcenter","_component_IconShare","_component_Tooltip","_component_IconGithub","_component_HotkeyDoc","_component_Drawer","overlay","accept","onChange","files","importSpecificFile","onClick","toggleGridLines","toggleRuler","goIssues","hotkeyDrawerVisible","mouseLeaveDelay","title","placement","onClose","childlessTags","closingTags","closingTagAncestorBreakers","li","dt","dd","tbody","thead","tfoot","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","exporting","exportImage","domRef","quality","ignoreWebfont","toImage","foreignObjectSpans","querySelectorAll","spanRef","removeAttribute","config","fontEmbedCSS","dataUrl","error","exportSpecificFile","_slides","blob","Blob","cover","readAsText","exportJSON","formatColor","_color","alpha","getAlpha","toHexString","formatHTML","html","ast","bulletFlag","indent","slices","obj","baseStyleObj","isBlockTag","lastSlice","breakLine","styleObj","styleAttr","styleArr","styleItem","_key","_value","dataIndentAttr","fontSize","highlight","strike","italic","fontFace","hyperlink","url","bullet","paraSpaceBefore","indentLevel","formatPoints","point","undefined","moveTo","getShadowOption","shadow","v","offset","angle","blur","getOutlineOption","transparency","dashType","getLinkOption","exportPPTX","masterOverwrite","pptx","layout","bgColor","bgAlpha","defineSlideMaster","pptxSlide","image","gradientColor","color1","color2","mix","remark","addNotes","textProps","valign","margin","lineSpacingMultiple","autoFit","charSpacing","paragraphSpace","addText","flipH","linkOption","filters","clip","shape","rounding","startX","startY","endX","endY","originW","originH","sizing","addImage","svgRef","base64SVG","fillColor","addShape","beginArrowType","endArrowType","chartData","chartColors","analogous","supplement","legend","showLegend","legendPos","legendColor","legendFontSize","ChartType","barDir","lineSize","lineSmooth","doughnut","holeSize","addChart","hiddenCells","rowData","cell","tableData","subThemeColors","_row","cellOptions","colW","border","pt","addTable","writeFile","fileName","hotkeys","hotkey","setup","__exports__","components","HotkeyDoc","useExport","open","_component_ElementCreateSelection","_component_AlignmentLine","_component_MultiSelectOperate","_component_Operate","_component_ViewportBackground","_component_MouseSelection","_component_EditableElement","_component_Ruler","_component_LinkDialog","_directive_contextmenu","_directive_click_outside","ref","onWheel","handleMousewheelCanvas","onMousedown","handleClickBlankArea","onCreated","insertElementFromCreateSelection","viewportStyles","alignmentLines","axis","scaleMultiElement","elementInfo","isSelected","isActive","isActiveGroupElement","isMultiSelect","rotateElement","scaleElement","openLinkDialog","dragLineElement","transform","mouseSelectionVisible","mouseSelection","quadrant","mouseSelectionQuadrant","elementIndex","selectElement","linkDialogVisible","contextmenus","removeEditorAreaFocus","injectKeySlideScale","injectKeySlideId","removeAllRanges","getSelection","canvasRef","viewportLeft","viewportTop","setViewportPosition","canvasWidth","canvasHeight","viewportActualWidth","viewportActualHeight","resizeObserver","ResizeObserver","observe","unobserve","dragViewport","isMouseDown","startPageX","pageX","startPageY","pageY","originLeft","originTop","onmousemove","currentPageX","currentPageY","onmouseup","viewportRef","updateMouseSelection","viewportRect","getBoundingClientRect","minSelectionRange","offsetWidth","offsetHeight","abs","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","isTouchEvent","MouseEvent","changedTouches","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","handleMousemove","revisedX","revisedY","currentPoints","currentOppositePoint","currentBaseLeft","currentBaseTop","moveX","moveY","handleMouseup","ontouchmove","ontouchend","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","midX","midY","c1X","c1Y","c2X","c2Y","START","adsorptionPoint","END","C1","C2","newEl","formatCreateSelection","selectionData","formatCreateSelectionForLine","_start","_end","zIndex","currentElementComponent","alignElementToCanvas","viewportWidth","viewportHeight","CENTER","VERTICAL","HORIZONTAL","_component_ImageClipHandler","_component_ImageOutline","isCliping","clipData","clipPath","clipShape","onClip","handleClip","shadowStyle","flipStyle","handleSelectElement","onTouchstart","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","_component_ImageRectOutline","_component_ImageEllipseOutline","_component_ImagePolygonOutline","overflow","stroke","outlineColor","outlineWidth","outlineStyle","Number","required","useElementOutline","Function","ImageRectOutline","ImageEllipseOutline","ImagePolygonOutline","useClipImage","clipWrapperPositionStyle","bottomImgPositionStyle","topImgWrapperPositionStyle","topImgPositionStyle","moveClipRange","cornerPoint","rotateClassName","scaleClipRange","edgePoints","emits","emit","isSettingClipRange","currentRange","getClipDataTransformInfo","topImgWrapperPosition","bottomWidth","bottomHeight","initClipPosition","clipedEmitData","keyboardListener","updateRange","retPosition","bottomPosition","originPositopn","minWidth","minHeight","targetWidth","targetHeight","ImageOutline","ImageClipHandler","useElementShadow","useElementFlip","useFilter","stopPropagation","originClip","centerOffsetX","centerOffsetY","rotatedCenterX","rotatedCenterY","_props","_component_ElementOutline","_component_ProsemirrorEditor","textShadow","letterSpacing","fontFamily","editable","textIndent","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","inclusive","schemaNodes","schemaMarks","htmlString","parser","DOMParser","parseFromString","firstElementChild","fromSchema","plugins","emitter","mitt","alignment","listItem","tasks","allowedNodeTypes","Set","has","task","setNodeMarkup","alignmentCommand","setSelection","isList","listType","itemType","blockRange","parentList","validContent","setNodeIndentMarkup","delta","minIndent","maxIndent","nodeAttrs","indentCommand","docChanged","Boolean","autoFocus","editorViewRef","handleInput","innerHTML","handleFocus","handleBlur","handleClick","handleKeydown","textContent","hasFocus","replaceRangeWith","setProps","handleDOMEvents","keydown","execCommand","removeMark","insertText","RICH_TEXT_COMMAND","off","ElementOutline","ProsemirrorEditor","canMove","realHeightCache","updateTextElementHeight","entries","contentRect","realHeight","checkEmptyText","pureText","isHandleElement","_component_GradientDefs","onDblclick","gradient","updateText","onBlur","gradientTransform","GradientDefs","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","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","onUpdateValue","onInsertExcelData","insertExcelData","formatText","hideCells","textDecoration","fontWeight","fontStyle","immediate","onFocus","onInput","contenteditable","textareaRef","onpaste","excelData","CustomTextarea","isStartSelect","startCell","endCell","set","newData","useSubThemeColor","reduce","a","b","removeSelectedCells","useHideCells","oldValue","selectedRange","button","isHideCell","selectCol","maxRow","selectRow","maxCol","deleteRow","_tableCells","targetCells","hideCellsPos","deleteCol","insertRow","insertCol","fillTable","rowCount","defaultCell","newRows","mergeCells","splitCells","originWidth","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","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","floor","sec","getBoundingClientRectViewLeft","playBarWrap","volumeBarRef","currentTime","duration","loaded","seek","play","pause","setVolume","muted","rate","buffered","thumbMove","clientX","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","colorList","mostReadable","includeFallbackColors","gridSize","getPath","imageSize","gradientRotate","gradientType","backgroundImage","backgroundRepeat","backgroundSize","GridLines","useSlideBackgroundStyle","sizeStyle","marker","markerSize","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","elementIndexListInAnimation","_component_RotateHandler","scaleWidth","inheritAttrs","RotateHandler","scaleHeight","handlers","ctrlHandler","ctrlHandler1","ctrlHandler2","cannotRotate","_component_Divider","removeLink","setLink","linkRegExp","useLink","LinkHandler","ImageElementOperate","TextElementOperate","ShapeElementOperate","LineElementOperate","TableElementOperate","CommonElementOperate","indexList","_component_Input","_component_SelectOption","_component_Select","_component_ThumbnailSlide","_component_Button","tabs","tab","address","placeholder","selectedSlide","save","_component_ThumbnailElement","cssVar","zoom","needScaleSize","_component_StaticTable","StaticTable","BaseImageElement","BaseTextElement","BaseShapeElement","BaseLineElement","BaseChartElement","BaseTableElement","BaseLatexElement","BaseVideoElement","BaseAudioElement","ThumbnailElement","ThumbnailSlide","success","EditableElement","MouseSelection","ViewportBackground","AlignmentLine","Ruler","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_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","insertImageElement","shapePoolVisible","onSelect","drawShape","linePoolVisible","drawLine","chartPoolVisible","tableGeneratorVisible","onInsert","latexEditorVisible","mediaInputVisible","onInsertVideo","onInsertAudio","canvasScaleVisible","canvasScalePresetList","applyCanvasPresetScale","shapeList","selectShape","lineList","selectLine","LINE_LIST","_component_IconChartLine","_component_IconChartHistogram","_component_IconChartPie","_component_IconChartHistogramOne","_component_IconChartLineArea","_component_IconChartRing","_component_IconChartScatter","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","_slide","currentTabs","currentPanelComponent","_component_SelectOptGroup","_component_IconAddText","_component_InputGroup","_component_ColorPicker","_component_IconText","_component_IconHighLight","_component_ButtonGroup","_component_IconTextBold","_component_CheckboxButton","_component_IconTextItalic","_component_IconTextUnderline","_component_IconStrikethrough","_component_IconFormat","_component_CheckboxButtonGroup","_component_IconUpOne","_component_IconDownOne","_component_IconCode","_component_IconQuote","_component_IconLinkOne","_component_IconAlignTextLeft","_component_RadioButton","_component_IconAlignTextCenter","_component_IconAlignTextRight","_component_RadioGroup","_component_IconList","_component_IconOrderedList","_component_IconIndentLeft","_component_IconIndentRight","_component_IconRowHeight","_component_IconVerticalSpacingBetweenItems","_component_IconFullwidth","_component_ColorButton","_component_ElementShadow","_component_ElementOpacity","presetStyles","emitBatchRichTextCommand","compact","emitRichTextCommand","suffixIcon","webFonts","fontSizeOptions","checked","linkPopoverVisible","disabled","updateLink","openLinkPopover","updateLineHeight","lineHeightOptions","updateParagraphSpace","paragraphSpaceOptions","updateWordSpace","wordSpaceOptions","updateTextIndent","textIndentOptions","updateFill","_component_Slider","updateOpacity","deep","_component_Switch","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","imageRatio","distance","_component_IconAlignTextTopOne","_component_IconAlignTextMiddleOne","_component_IconAlignTextBottomOne","fillType","updateFillType","updateGradient","updateTextAlign","gradientProps","_gradient","updateLine","_component_Checkbox","_component_IconCloseSmall","_component_ChartDataEditor","chartDataEditorVisible","updateOptions","stackBars","updateLegend","deleteThemeColor","presetThemesVisible","presetChartThemes","itemIndex","presetThemeColorHoverIndex","applyPresetTheme","addThemeColor","onSave","updateData","tempRangeSize","rangeLines","resizablePointStyle","changeSelectRange","autocomplete","focusCell","onPaste","handlePaste","clear","closeEditor","getTableData","CELL_WIDTH","CELL_HEIGHT","initData","_data","inputRef","moveNextRow","labelsItem","labelInputRef","legendsItem","seriesItem","valueInputRef","ChartDataEditor","_lineSmooth","_showLine","_showArea","_horizontalBars","_donut","_stackBars","optionProps","newOptions","_component_IconFill","textAttrs","updateTextAttrs","setTableRow","setTableCol","hasTheme","toggleTheme","minRowCount","minColCount","updateTextAttrState","selectedCell","textAttrProp","themeProp","_theme","newTableCells","newColSizeList","updateLatex","updateLatexData","setVideoPoster","updateVideo","updateAudio","updateFontStyle","TextStylePanel","ImageStylePanel","ShapeStylePanel","LineStylePanel","ChartStylePanel","TableStylePanel","LatexStylePanel","VideoStylePanel","AudioStylePanel","MultiStylePanel","activeGroupElement","_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","activeTab","animationTypes","effect","hoverPreviewAnimation","addAnimation","popoverMaskHide","handleAnimationId","animationSequence","handle","elType","animationEffect","runAnimation","deleteAnimation","handleElementAnimation","updateElementAnimationDuration","updateElementAnimationTrigger","openAnimationPool","ANIMATION_DEFAULT_DURATION","ANIMATION_DEFAULT_TRIGGER","ANIMATION_CLASS_PREFIX","ENTER_ANIMATIONS","EXIT_ANIMATIONS","ATTENTION_ANIMATIONS","animationEffects","elRef","animationName","classList","handleAnimationEnd","removeProperty","once","updateElementAnimation","animationItem","in","out","attention","_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_ANIMATION","multiSelectTabs","MULTI_POSITION","currentTabsValue","panelMap","ElementStylePanel","ElementPositionPanel","ElementAnimationPanel","SlideDesignPanel","SlideAnimationPanel","MultiPositionPanel","SymbolPanel","resize","newHeight","currentDialogComponent","_component_FullscreenSpin","renderSlides","rangeType","expImage","loading","tip","imageThumbnailsRef","padding","expPDF","createIframe","iframe","printNode","docType","styleSheets","styleSheet","cssRules","rule","cssText","head","write","print","iframeContentWindow","contentWindow","contentDocument","handleLoadIframe","pdfThumbnailsRef","pageSize","dialogMap","ExportImage","ExportJSON","ExportPDF","ExportPPTX","ExportSpecificFile","EditorHeader","Canvas","CanvasTool","Thumbnails","Toolbar","Remark","ExportDialog","useGlobalHotkey","usePasteEvent","_component_BaseView","_component_PresenterView","viewMode","changeViewMode","_component_ScreenSlideList","_component_SlideThumbnails","_component_WritingBoardTool","_component_IconLeftTwo","_component_IconRightTwo","_component_IconWrite","_component_IconMagic","_component_IconListView","_component_IconOffScreenOne","_component_IconFullScreenOne","_component_IconPower","laserPen","slideWidth","slideHeight","animationIndex","turnSlideToId","manualExitFullscreen","mousewheelListener","touchStartListener","onTouchend","touchEndListener","slideThumbnailModelVisible","turnSlideToIndex","writingBoardToolVisible","execPrev","execNext","rightToolsVisible","fullscreenState","inAnimation","playedSlidesMinIndex","endAnimationCount","classname","revokeAnimation","autoPlayTimer","closeAutoPlay","clearInterval","throttleMassage","autoPlay","setInterval","touchInfo","turnPrevSlide","turnNextSlide","wrapRef","setSlideContentSize","slideWrapRef","winWidth","winHeight","escExit","handleFullscreenChange","_component_ScreenSlide","_component_ScreenElement","visibility","needWaitAnimation","openLink","_component_BaseChartElement","audioPlayerRef","ScreenChartElement","ScreenVideoElement","ScreenAudioElement","elementIndexInAnimation","firstAnimation","ScreenElement","ScreenSlide","_component_IconArrowCircleLeft","turnSlide","_component_WritingBoard","_component_IconErase","_component_IconClear","_component_IconClose","writingBoardColor","blackboard","model","writingBoardModel","changeModel","clearCanvas","writingBoardColors","changeColor","closeWritingBoard","handleMousedown","onMouseup","onTouchmove","mouseInCanvas","mouse","rubberSize","penSize","markSize","writingBoardRef","lastTime","lastLineWidth","updateCanvasSize","initCanvas","lineCap","lineJoin","updateCtx","globalCompositeOperation","globalAlpha","draw","posX","posY","lastPosX","lastPosY","strokeStyle","beginPath","lineTo","closePath","erase","sinRadius","cosRadius","rectPoint1","rectPoint2","rectPoint3","rectPoint4","arc","restore","getDistance","getLineWidth","maxV","minV","maxWidth","handleMove","getMouseOffsetPosition","event","canvasRect","getImageDataURL","toDataURL","setImageDataURL","imageDataURL","Image","drawImage","WritingBoard","ScreenSlideList","SlideThumbnails","WritingBoardTool","useExecPlay","useSlideSize","useFullscreen","handleMousewheelThumbnails","remarkFontSize","currentSlideRemark","setRemarkFontSize","slideListWrapRef","thumbnailsRef","scrollBy","activeThumbnailRef","offsetLeft","scrollTo","behavior","BaseView","PresenterView","ESC","currentComponent","changeMode","_component_Header","_component_MobileOperate","_component_MobileEditableElement","_component_SlideToolbar","_component_ElementToolbar","_component_IconCopy","_component_IconDelete","_component_IconSquare","_component_IconRound","_component_MobileThumbnails","handleInputMark","insertTextElement","insertShapeElement","changeSlideIndex","MobileThumbnails","square","updateFontColor","_component_IconLogout","MobileEditableElement","MobileOperate","SlideToolbar","ElementToolbar","Header","contentRef","contentWidth","contentheight","contentRatio","playerSize","toolVisible","slideSize","playerRatio","_component_IconFullScreenPlay","screenWidth","mobileRef","_mode","componentMap","MobileEditor","MobilePlayer","MobilePreview","Editor","Screen","Mobile","onbeforeunload","discardedDB","discardedDBList","newDiscardedDB","setItem","ready","console","log","registered","cached","updatefound","updated","offline","icons","PlayOne","FullScreenPlay","Lock","Unlock","Ppt","Format","Picture","FullScreen","List","OrderedList","Helpcenter","FlipVertically","FlipHorizontally","FontSize","Code","TextBold","TextItalic","TextUnderline","Strikethrough","Edit","Quote","BackgroundColor","Group","Ungroup","Back","Next","Fullwidth","AlignTop","AlignLeft","AlignRight","AlignBottom","AlignVertically","AlignHorizontally","BringToFront","SendToBack","AlignTextLeft","AlignTextRight","AlignTextCenter","RowHeight","Write","InsertTable","AddText","Fill","Tailoring","Effects","ColorFilter","Down","Plus","Minus","Connection","BringToFrontOne","SentToBack","Github","ChartProportion","ChartHistogram","ChartHistogramOne","ChartLineArea","ChartRing","ChartScatter","ChartLine","ChartPie","Text","Rotate","LeftTwo","RightTwo","Platte","UpOne","DownOne","Close","CloseSmall","Undo","Transform","Click","Theme","ArrowCircleLeft","GraphicDesign","Logout","Erase","Clear","FolderClose","AlignTextTopOne","AlignTextBottomOne","AlignTextMiddleOne","Pause","VolumeMute","VolumeNotice","VolumeSmall","VideoTwo","Formula","LinkOne","FullScreenOne","OffScreenOne","Power","ListView","Magic","HighLight","Share","IndentLeft","IndentRight","VerticalSpacingBetweenItems","Copy","Delete","Square","Round","install","app","component","$slots","handleChange","_component_Saturation","_component_Checkboard","_component_Hue","_component_Alpha","_component_EditableInput","hue","onColorChange","currentColor","pickColor","selectPresetColor","presetColors","standardColors","recentColors","handleMouseDown","bgStyle","checkboardCache","renderCheckboard","white","grey","fillRect","translate","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","targetRef","maskRef","colorBlockRef","contains","pixelRatio","toFixed","handleMouseleave","tColor","_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","screenHeight","CTX_CONTEXTMENU_HANDLER","binding","vm","Contextmenu","ContextmenuDirective","mounted","unmounted","CTX_CLICK_OUTSIDE_HANDLER","clickListener","composedPath","isClickOutside","ClickOutsideDirective","directive","App","Option","OptGroup","Button","TextArea","Item","use","mount"],"mappings":"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6DCAA,W,sFCAA,W,oCCAA,W,kCCAA,W,oCCAA,W,2DCAA,W,2DCAA,W,2DCAA,W,oCCAA,W,2DCAA,W,oCCAA,W,oCCAA,W,6JCAA,W,oCCAA,W,6DCAA,W,wICAA,W,oCCAA,W,8JCAA,W,sFCAA,W,oCCAA,W,yGCAA,W,yDCAA,W,yDCAA,W,6DCAA,W,sFCAA,Y,6GCAA,W,oCCAA,W,kCCAA,W,+GCAA,W,oCCAA,W,oCCAA,W,kCCAA,W,oCCAA,W,oCCAA,W,6GCAA,W,kCCAA,W,kCCAA,W,kCCAA,W,oCCAA,W,+GCAA,W,0DCAA,W,kCCAA,W,2DCAA,W,8DCAA,W,oCCAA,W,2DCAA,W,oCCAA,W,oCCAA,W,oCCAA,W,sFCAA,W,oCCAA,W,2DCAA,W,yDCAA,W,kCCAA,W,yDCAA,W,yDCAA,W,kCCAA,W,kCCAA,W,uGCAA,W,yDCAA,W,gFCAA,W,yDCAA,W,gFCAA,W,wGCAA,W,gFCAA,W,gFCAA,W,kCCAA,W,kCCAA,W,yDCAA,W,kCCAA,W,yDCAA,W,sgBCEM,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,gECX5CsB,E,aAAlB,SAAkBA,GAChB,qBACA,gCACA,wBACA,8BACA,gCACA,sCACA,qCAPF,CAAkBA,MAAa,KCAxB,ICIKC,EAOAC,EAUMC,EAOAC,EAWAC,ECvCAC,EFALC,EAAY,CACvB,CAAEC,MAAO,QAASpC,MAAO,SACzB,CAAEoC,MAAO,OAAQpC,MAAO,mBACxB,CAAEoC,MAAO,KAAMpC,MAAO,UACtB,CAAEoC,MAAO,KAAMpC,MAAO,UACtB,CAAEoC,MAAO,KAAMpC,MAAO,SACtB,CAAEoC,MAAO,MAAOpC,MAAO,WACvB,CAAEoC,MAAO,KAAMpC,MAAO,YACtB,CAAEoC,MAAO,KAAMpC,M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zC,CACEvc,KAAM,KACNuU,SAAU,CACR,CACElO,QAAS,CAAC,IAAK,KACfC,KAAM,qCAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,uGACNkW,YAAapI,GAAsBoH,YAErC,CACEnV,QAAS,CAAC,IAAK,KACfC,KAAM,sDACNkW,YAAapI,GAAsBqH,mBAErC,CACEpV,QAAS,CAAC,IAAK,KACfC,KAAM,6CACNkW,YAAapI,GAAsBsH,iBAErC,CACErV,QAAS,CAAC,IAAK,KACfC,KAAM,qDACNkW,YAAapI,GAAsBuH,mBAErC,CACEtV,QAAS,CAAC,IAAK,KACfC,KAAM,wEACNkW,YAAapI,GAAsBwH,qBAErC,CACEvV,QAAS,CAAC,IAAK,KACfC,KAAM,yDACNkW,YAAapI,GAAsByH,mBAErC,CACExV,QAAS,CAAC,IAAK,KACfC,KAAM,+DACNkW,YAAapI,GAAsB0H,uBAKzC,CACE9b,KAAM,OACNuU,SAAU,CACR,CACElO,QAAS,CAAC,IAAK,KACfC,KAAM,uDAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,4CAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,uDAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,yDAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,yDAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,+CAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,uDAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,yCAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,uCAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6BAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6CAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,4CAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6CAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,iDAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,wDAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,iEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,gFAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,oHAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,uDAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,0DAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,sEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,uEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,kEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,+CAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6CAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6CAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,oHAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,4DACNkW,YAAapI,GAAsB+H,GAErC,CACE9V,QAAS,CAAC,IAAK,KACfC,KAAM,uEACNkW,YAAapI,GAAsBiI,WAErC,CACEhW,QAAS,CAAC,IAAK,KACfC,KAAM,iEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,mHACNkW,YAAapI,GAAsBkI,MAErC,CACEjW,QAAS,CAAC,IAAK,KACfC,KAAM,sHAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,gEACNkW,YAAapI,GAAsB2H,SAErC,CACE1V,QAAS,CAAC,IAAK,KACfC,KAAM,mIACNkW,YAAapI,GAAsB8H,eAErC,CACE7V,QAAS,CAAC,IAAK,KACfC,KAAM,qEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6CAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,2EAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,2HAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,2DAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,qDAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,qFAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,+JAKZ,CACEtG,KAAM,KACNuU,SAAU,CACR,CACElO,QAAS,CAAC,IAAK,KACfC,KAAM,6EAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6EAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6EAER,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","file":"js/app.c1a001e5.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!./MultiSelectOperate.vue?vue&type=style&index=0&id=55c8df22&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=0ef8b6c0&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=e3a2bd30&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=017ca85e&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=34c0a0a8&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!./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!./ElementShadow.vue?vue&type=style&index=0&id=6bafb099&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=00107680&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=a33e97ec&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!./MobilePlayer.vue?vue&type=style&index=0&id=2845ccb6&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=5e77feb8&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!./ExportJSON.vue?vue&type=style&index=0&id=54705363&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=f0cbd508&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=7017c6bc&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=5f3b7dc5&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=fcb929f4&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=5ff9efcc&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=50456657&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!./Ruler.vue?vue&type=style&index=0&id=6cc1801a&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=3ca1d362&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!./MultiStylePanel.vue?vue&type=style&index=0&id=e5e0fba2&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=f3479f82&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=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!./index.vue?vue&type=style&index=0&id=863d2c90&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=74cf8d68&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=81197444&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!./AudioStylePanel.vue?vue&type=style&index=0&id=58a36be6&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!./BaseView.vue?vue&type=style&index=0&id=54670d0c&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=2ec16714&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=efaecbfe&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=2cd24911&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!./ElementToolbar.vue?vue&type=style&index=0&id=332b9382&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!./ElementAnimationPanel.vue?vue&type=style&index=0&id=11684c24&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!./ExportPPTX.vue?vue&type=style&index=0&id=dad79818&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!./MobileThumbnails.vue?vue&type=style&index=0&id=0b484044&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=4f10fba6&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!./ImageElementOperate.vue?vue&type=style&index=0&id=db6d5ba6&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=0c89cf75&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=7ed67bb3&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=78e88e36&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!./ElementFilter.vue?vue&type=style&index=0&id=07b41654&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=f9ea6e88&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=4c746203&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!./ElementOpacity.vue?vue&type=style&index=0&id=5c7dbabc&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=ad75cd30&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!./SlideToolbar.vue?vue&type=style&index=0&id=70590190&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!./ResizeHandler.vue?vue&type=style&index=0&id=c9559332&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!./LineElementOperate.vue?vue&type=style&index=0&id=60f9f1f7&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=a2afb4ce&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=15b60d90&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=4074d5c2&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=79ce410e&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!./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!./Header.vue?vue&type=style&index=0&id=2c0b2c5e&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!./ExportPDF.vue?vue&type=style&index=0&id=7c83ddb5&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=3da8fdb7&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=743d966c&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!./EditableInput.vue?vue&type=style&index=0&id=20bfe6b0&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=12f568a6&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=18f794c8&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!./ScreenSlideList.vue?vue&type=style&index=0&id=01900375&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=79ce410e&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=fed8b698&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=1430bedc&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=1c016f8e&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=342d4bac&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=26058d12&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!./ScreenAudioElement.vue?vue&type=style&index=0&id=1adba489&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=025539cf&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!./ExportSpecificFile.vue?vue&type=style&index=0&id=1e43fa60&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=454973e4&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=25d4b5f8&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=81338b12&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=40b7d6a8&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=17be277c&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!./FileInput.vue?vue&type=style&index=0&id=0a87e9c4&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=50e5c825&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=2b77dbb0&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!./AudioPlayer.vue?vue&type=style&index=0&id=5530a7f2&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!./CheckboxButtonGroup.vue?vue&type=style&index=0&id=adf706aa&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=e0bde284&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=9ac1670a&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=8e51e5ca&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}","export 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}","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]","import { ShapePoolItem } from '@/configs/shapes'\r\nimport { LinePoolItem } from '@/configs/lines'\r\nimport { ImageClipDataRange } from './slides'\r\n\r\nexport enum ElementOrderCommands {\r\n UP = 'up',\r\n DOWN = 'down',\r\n TOP = 'top',\r\n BOTTOM = 'bottom',\r\n}\r\n\r\nexport 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 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 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 const enum OperateLineHandlers {\r\n START = 'start',\r\n END = 'end',\r\n C = 'ctrl',\r\n C1 = 'ctrl1',\r\n C2 = 'ctrl2',\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 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 P = 'P',\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 ESC = 'ESCAPE',\n PAGEUP = 'PAGEUP',\n PAGEDOWN = 'PAGEDOWN',\n F5 = 'F5',\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 { label: '打印', value: 'Ctrl + P' },\n { label: '关闭弹窗', value: 'ESC' },\n ],\n },\n {\n type: '幻灯片放映',\n children: [\n { label: '从头开始放映幻灯片', value: 'F5' },\n { label: '从当前开始放映幻灯片', value: 'Shift + F5' },\n { label: '切换上一页', value: '↑ / ← / PgUp' },\n { label: '切换下一页', value: '↓ / → / PgDown' },\n { label: '切换下一页', value: 'Enter / Space' },\n { label: '退出放映', value: 'ESC' },\n { label: '调整画笔笔触大小', value: '鼠标滚轮' },\n ],\n },\n {\n type: '幻灯片编辑',\n children: [\n { label: '新建幻灯片', value: 'Enter' },\n { label: '移动画布', value: 'Space + 鼠标拖拽' },\n { label: '缩放画布', value: 'Ctrl + 鼠标滚轮' },\n { label: '放大画布', value: 'Ctrl + =' },\n { label: '缩小画布', value: 'Ctrl + -' },\n { label: '使画布适应当前屏幕', value: 'Ctrl + 0' },\n { label: '上一页(未选中元素)', value: '↑ / ←' },\n { label: '下一页(未选中元素)', value: '↓ / →' },\n { label: '上一页', value: '鼠标上滚 / PgUp' },\n { label: '下一页', value: '鼠标下滚 / PgDown' },\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]","import { Node, NodeType, ResolvedPos, Mark, MarkType } from 'prosemirror-model'\nimport { EditorState, Selection } from 'prosemirror-state'\nimport { EditorView } from 'prosemirror-view'\nimport { selectAll } from 'prosemirror-commands'\n\nexport const autoSelectAll = (view: EditorView) => {\n const { empty } = view.state.selection\n if (empty) selectAll(view.state, view.dispatch)\n}\n\nexport const addMark = (editorView: EditorView, mark: Mark, selection?: { from: number; to: number; }) => {\n if (selection) {\n editorView.dispatch(editorView.state.tr.addMark(selection.from, selection.to, mark))\n }\n else {\n const { $from, $to } = editorView.state.selection\n editorView.dispatch(editorView.state.tr.addMark($from.pos, $to.pos, mark))\n }\n}\n\nexport const findNodesWithSameMark = (doc: Node, from: number, to: number, markType: MarkType) => {\n let ii = from\n const finder = (mark: Mark) => mark.type === markType\n let firstMark = null\n let fromNode = null\n let toNode = null\n\n while (ii <= to) {\n const node = doc.nodeAt(ii)\n if (!node || !node.marks) return null\n\n const mark = node.marks.find(finder)\n if (!mark) return null\n\n if (firstMark && mark !== firstMark) return null\n\n fromNode = fromNode || node\n firstMark = firstMark || mark\n toNode = node\n ii++\n }\n\n let fromPos = from\n let toPos = to\n\n let jj = 0\n ii = from - 1\n while (ii > jj) {\n const node = doc.nodeAt(ii)\n const mark = node && node.marks.find(finder)\n if (!mark || mark !== firstMark) break\n fromPos = ii\n fromNode = node\n ii--\n }\n\n ii = to + 1\n jj = doc.nodeSize - 2\n while (ii < jj) {\n const node = doc.nodeAt(ii)\n const mark = node && node.marks.find(finder)\n if (!mark || mark !== firstMark) break\n toPos = ii\n toNode = node\n ii++\n }\n\n return {\n mark: firstMark,\n from: {\n node: fromNode,\n pos: fromPos,\n },\n to: {\n node: toNode,\n pos: toPos,\n },\n }\n}\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 markActive = (state: EditorState, type: MarkType) => {\n const { from, $from, to, empty } = state.selection\n if (empty) return type.isInSet(state.storedMarks || $from.marks())\n return state.doc.rangeHasMark(from, to, type)\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 link = getAttrValue(marks, 'link', 'href') || ''\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 link: link,\n align: align,\n bulletList: isBulletList,\n orderedList: isOrderedList,\n blockquote: isBlockquote,\n }\n}\n\nexport type TextAttrs = ReturnType\n\nexport const getFontsize = (view: EditorView) => {\n const marks = getMarkAttrs(view)\n const fontsize = getAttrValue(marks, 'fontsize', 'fontsize') || _defaultAttrs.fontsize\n return parseInt(fontsize)\n}\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 link: '',\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: 'test-slide-1',\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, 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, 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 {\n id: 'test-slide-2',\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: 'Microsoft Yahei',\n defaultColor: '#333',\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: 'Microsoft Yahei',\n defaultColor: '#333',\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: '#5b9bd5',\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, 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: '#5b9bd5',\n fixedRatio: false,\n rotate: 0\n }\n ],\n background: {\n type: 'solid',\n color: '#fff',\n },\n },\n {\n id: 'test-slide-3',\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, 200],\n path: 'M 0 0 L 200 0 L 200 200 L 0 200 Z',\n fill: '#5b9bd5',\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, 200],\n path: 'M 0 0 L 200 0 L 200 200 L 0 200 Z',\n fill: '#5b9bd5',\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: 'Microsoft Yahei',\n defaultColor: '#333',\n wordSpace: 5\n }\n ],\n background: {\n type: 'solid',\n color: '#fff',\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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, PPTAnimation } 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\ninterface FormatedAnimation {\n animations: PPTAnimation[]\n autoNext: boolean\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?.animations) return []\n\n const els = currentSlide.elements\n const elIds = els.map(el => el.id)\n return currentSlide.animations.filter(animation => elIds.includes(animation.elId))\n },\n\n // 格式化的当前页动画\n // 将触发条件为“与上一动画同时”的项目向上合并到序列中的同一位置\n // 为触发条件为“上一动画之后”项目的上一项添加自动向下执行标记\n formatedAnimations(state) {\n const currentSlide = state.slides[state.slideIndex]\n if (!currentSlide?.animations) return []\n\n const els = currentSlide.elements\n const elIds = els.map(el => el.id)\n const animations = currentSlide.animations.filter(animation => elIds.includes(animation.elId))\n\n const formatedAnimations: FormatedAnimation[] = []\n for (const animation of animations) {\n if (animation.trigger === 'click' || !formatedAnimations.length) {\n formatedAnimations.push({ animations: [animation], autoNext: false })\n }\n else if (animation.trigger === 'meantime') {\n const last = formatedAnimations[formatedAnimations.length - 1]\n last.animations = last.animations.filter(item => item.elId !== animation.elId)\n last.animations.push(animation)\n formatedAnimations[formatedAnimations.length - 1] = last\n }\n else if (animation.trigger === 'auto') {\n const last = formatedAnimations[formatedAnimations.length - 1]\n last.autoNext = true\n formatedAnimations[formatedAnimations.length - 1] = last\n formatedAnimations.push({ animations: [animation], autoNext: false })\n }\n }\n return formatedAnimations\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 deleteElement(elementId: string | string[]) {\n const elementIdList = Array.isArray(elementId) ? elementId : [elementId]\n const currentSlideEls = this.slides[this.slideIndex].elements\n const newEls = currentSlideEls.filter(item => !elementIdList.includes(item.id))\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 { customAlphabet } from 'nanoid'\nimport { defineStore } from 'pinia'\nimport { CreatingElement } from '@/types/edit'\nimport { ToolbarStates } from '@/types/toolbar'\nimport { DialogForExportTypes } from '@/types/export'\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 canvasDragged: boolean\n thumbnailsFocus: boolean\n editorAreaFocus: boolean\n disableHotkeys: boolean\n showGridLines: boolean\n showRuler: boolean\n creatingElement: CreatingElement | null\n availableFonts: typeof SYS_FONTS\n toolbarState: ToolbarStates\n clipingImageElementId: string\n isScaling: boolean\n richTextAttrs: TextAttrs\n selectedTableCells: string[]\n selectedSlidesIndex: number[]\n dialogForExport: DialogForExportTypes\n databaseId: string\n}\n\nconst nanoid = customAlphabet('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz')\nexport const databaseId = nanoid(10)\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 canvasDragged: false, // 画布被拖拽移动\n thumbnailsFocus: false, // 左侧导航缩略图区域聚焦\n editorAreaFocus: false, // 编辑区域聚焦\n disableHotkeys: false, // 禁用快捷键\n showGridLines: false, // 显示网格线\n showRuler: false, // 显示标尺\n creatingElement: null, // 正在插入的元素信息,需要通过绘制插入的元素(文字、形状、线条)\n availableFonts: SYS_FONTS, // 当前环境可用字体\n toolbarState: ToolbarStates.SLIDE_DESIGN, // 右侧工具栏状态\n clipingImageElementId: '', // 当前正在裁剪的图片ID \n richTextAttrs: defaultRichTextAttrs, // 富文本状态\n selectedTableCells: [], // 选中的表格单元格\n isScaling: false, // 正在进行元素缩放\n selectedSlidesIndex: [], // 当前被选中的页面索引集合\n dialogForExport: '', // 导出面板\n databaseId, // 标识当前应用的indexedDB数据库ID\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 setCanvasDragged(isDragged: boolean) {\n this.canvasDragged = isDragged\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 setRulerState(show: boolean) {\n this.showRuler = 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: ToolbarStates) {\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 updateSelectedSlidesIndex(selectedSlidesIndex: number[]) {\n this.selectedSlidesIndex = selectedSlidesIndex\n },\n\n setDialogForExport(type: DialogForExportTypes) {\n this.dialogForExport = type\n },\n },\n})","export const LOCALSTORAGE_KEY_DISCARDED_DB = 'PPTIST_DISCARDED_DB'","import Dexie from 'dexie'\nimport { databaseId } from '@/store/main'\nimport { Slide } from '@/types/slides'\nimport { LOCALSTORAGE_KEY_DISCARDED_DB } from '@/configs/storage'\n\nexport interface Snapshot {\n index: number\n slides: Slide[]\n}\n\nconst databaseNamePrefix = 'PPTist'\n\n// 删除失效/过期的数据库\n// 应用关闭时(关闭或刷新浏览器),会将其数据库ID记录在 localStorage 中,表示该ID指向的数据库已失效\n// 当应用初始化时,检查当前所有数据库,将被记录失效的数据库删除\n// 另外,距离初始化时间超过12小时的数据库也将被删除(这是为了防止出现因以外未被正确删除的库)\nexport const deleteDiscardedDB = async () => {\n const now = new Date().getTime()\n\n const localStorageDiscardedDB = localStorage.getItem(LOCALSTORAGE_KEY_DISCARDED_DB)\n const localStorageDiscardedDBList: string[] = localStorageDiscardedDB ? JSON.parse(localStorageDiscardedDB) : []\n\n const databaseNames = await Dexie.getDatabaseNames()\n const discardedDBNames = databaseNames.filter(name => {\n if (name.indexOf(databaseNamePrefix) === -1) return false\n \n const [prefix, id, time] = name.split('_')\n if (prefix !== databaseNamePrefix || !id || !time) return true\n if (localStorageDiscardedDBList.includes(id)) return true\n if (now - (+time) >= 1000 * 60 * 60 * 12) return true\n\n return false\n })\n\n for (const name of discardedDBNames) Dexie.delete(name)\n localStorage.removeItem(LOCALSTORAGE_KEY_DISCARDED_DB)\n}\n\nclass PPTistDB extends Dexie {\n public snapshots: Dexie.Table\n\n public constructor() {\n super(`${databaseNamePrefix}_${databaseId}_${new Date().getTime()}`)\n this.version(1).stores({\n snapshots: '++id'\n })\n this.snapshots = this.table('snapshots')\n }\n}\n\nexport const db = new PPTistDB()","import { defineStore } from 'pinia'\nimport { IndexableTypeArray } from 'dexie'\nimport { db, deleteDiscardedDB, 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 await deleteDiscardedDB()\n \n const newFirstSnapshot = {\n index: slidesStore.slideIndex,\n slides: slidesStore.slides,\n }\n await db.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 db.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 db.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 db.snapshots.update(allKeys[snapshotLength - 2] as number, { index: slidesStore.slideIndex })\n }\n \n await db.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 db.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 db.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 spaceKeyState: boolean\n}\n\nexport const useKeyboardStore = defineStore('keyboard', {\n state: (): KeyboardState => ({\n ctrlKeyState: false, // ctrl键按下状态\n shiftKeyState: false, // shift键按下状态\n spaceKeyState: false, // space键按下状态\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 setSpaceKeyState(active: boolean) {\n this.spaceKeyState = 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 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, withCtx as _withCtx, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5ff9efcc\"),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 const _component_ExportDialog = _resolveComponent(\"ExportDialog\")!\n const _component_Modal = _resolveComponent(\"Modal\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"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 _createVNode(_component_Modal, {\n visible: !!_ctx.dialogForExport,\n footer: null,\n centered: \"\",\n closable: false,\n width: 680,\n destroyOnClose: \"\",\n onCancel: _cache[1] || (_cache[1] = ($event: any) => (_ctx.closeExportDialog()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_ExportDialog)\n ]),\n _: 1\n }, 8, [\"visible\"])\n ], 64))\n}","import { IBarChartOptions, ILineChartOptions, IPieChartOptions } from 'chartist'\n\nexport const enum ShapePathFormulasKeys {\n ROUND_RECT = 'roundRect',\n ROUND_RECT_DIAGONAL = 'roundRectDiagonal',\n ROUND_RECT_SINGLE = 'roundRectSingle',\n ROUND_RECT_SAMESIDE = 'roundRectSameSide',\n CUT_RECT_DIAGONAL = 'cutRectDiagonal',\n CUT_RECT_SINGLE = 'cutRectSingle',\n CUT_RECT_SAMESIDE = 'cutRectSameSide',\n MESSAGE = 'message',\n ROUND_MESSAGE = 'roundMessage',\n L = 'L',\n RING_RECT = 'ringRect',\n PLUS = 'plus',\n}\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 * \n * textIndent?: 段落首行缩进\n * \n * paragraphSpace?: 段间距,默认 5px\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 textIndent?: number\n paragraphSpace?: number\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\nexport type ImageClipDataRange = [[number, number], [number, number]]\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: ImageClipDataRange\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, 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 * \n * pathFormula?: 形状路径计算公式\n * 一般情况下,形状的大小变化时仅由宽高基于 viewBox 的缩放比例来调整形状,而 viewBox 本身和 path 不会变化,\n * 但也有一些形状希望能更精确的控制一些关键点的位置,此时就需要提供路径计算公式,通过在缩放时更新 viewBox 并重新计算 path 来重新绘制形状\n */\nexport interface PPTShapeElement extends PPTBaseElement {\n type: 'shape'\n viewBox: [number, 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 pathFormula?: ShapePathFormulasKeys\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 * \n * curve?: 三次曲线控制点位置([[x1, y1], [x2, y2]])\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 cubic?: [[number, number], [number, number]]\n}\n\n\nexport type PresetChartType = 'bar' | 'horizontalBar' | 'line' | 'area' | 'scatter' | 'pie' | 'ring'\nexport type ChartType = 'bar' | 'line' | 'pie'\nexport type ChartOptions = ILineChartOptions & IBarChartOptions & IPieChartOptions\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: 图表基础类型(bar/line/pie),所有图表类型都是由这三种基本类型衍生而来\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?: ChartOptions\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 * id: 动画id\n * \n * elId: 元素ID\n * \n * effect: 动画效果\n * \n * type: 动画类型(入场、退场、强调)\n * \n * duration: 动画持续时间\n * \n * trigger: 动画触发方式(click - 单击时、meantime - 与上一动画同时、auto - 上一动画之后)\n */\nexport interface PPTAnimation {\n id: string\n elId: string\n effect: string\n type: 'in' | 'out' | 'attention'\n duration: number\n trigger: 'click' | 'meantime' | 'auto'\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 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 { nanoid } from 'nanoid'\r\nimport { PPTElement, PPTLineElement } from '@/types/slides'\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] = nanoid(10)\r\n }\r\n elIdMap[element.id] = nanoid(10)\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 else if (element.curve) {\r\n const mid = element.curve.join(',')\r\n return `M${start} Q${mid} ${end}`\r\n }\r\n else if (element.cubic) {\r\n const [c1, c2] = element.cubic\r\n const p1 = c1.join(',')\r\n const p2 = c2.join(',')\r\n return `M${start} C${p1} ${p2} ${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}","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 { ShapePathFormulasKeys } from '@/types/slides'\n\nexport interface ShapePoolItem {\n viewBox: [number, number]\n path: string\n special?: boolean\n pathFormula?: ShapePathFormulasKeys\n outlined?: boolean\n}\n\ninterface ShapeListItem {\n type: string\n children: ShapePoolItem[]\n}\n\nexport const SHAPE_PATH_FORMULAS = {\n [ShapePathFormulasKeys.ROUND_RECT]: (width: number, height: number) => {\n const radius = Math.min(width, height) / 8\n return `M ${radius} 0 L ${width - radius} 0 Q ${width} 0 ${width} ${radius} L ${width} ${height - radius} Q ${width} ${height} ${width - radius} ${height} L ${radius} ${height} Q 0 ${height} 0 ${height - radius} L 0 ${radius} Q 0 0 ${radius} 0 Z`\n },\n [ShapePathFormulasKeys.CUT_RECT_DIAGONAL]: (width: number, height: number) => {\n const radius = Math.min(width, height) / 5\n return `M 0 ${height - radius} L 0 0 L ${width - radius} 0 L ${width} ${radius} L ${width} ${height} L ${radius} ${height} Z`\n },\n [ShapePathFormulasKeys.CUT_RECT_SINGLE]: (width: number, height: number) => {\n const radius = Math.min(width, height) / 5\n return `M 0 ${height} L 0 0 L ${width - radius} 0 L ${width} ${radius} L ${width} ${height} Z`\n },\n [ShapePathFormulasKeys.CUT_RECT_SAMESIDE]: (width: number, height: number) => {\n const radius = Math.min(width, height) / 5\n return `M 0 ${radius} L ${radius} 0 L ${width - radius} 0 L ${width} ${radius} L ${width} ${height} L 0 ${height} Z`\n },\n [ShapePathFormulasKeys.ROUND_RECT_DIAGONAL]: (width: number, height: number) => {\n const radius = Math.min(width, height) / 8\n return `M 0 0 L ${width - radius} 0 Q ${width} 0 ${width} ${radius} L ${width} ${height} L ${radius} ${height} Q 0 ${height} 0 ${height - radius} L 0 0 Z`\n },\n [ShapePathFormulasKeys.ROUND_RECT_SINGLE]: (width: number, height: number) => {\n const radius = Math.min(width, height) / 8\n return `M 0 0 L ${width - radius} 0 Q ${width} 0 ${width} ${radius} L ${width} ${height} L 0 ${height} L 0 0 Z`\n },\n [ShapePathFormulasKeys.ROUND_RECT_SAMESIDE]: (width: number, height: number) => {\n const radius = Math.min(width, height) / 8\n return `M 0 ${radius} Q 0 0 ${radius} 0 L ${width - radius} 0 Q ${width} 0 ${width} ${radius} L ${width} ${height} L 0 ${height} Z`\n },\n [ShapePathFormulasKeys.MESSAGE]: (width: number, height: number) => {\n const arrowWidth = width / 5\n const arrowheight = height / 5\n return `M 0 0 L ${width} 0 L ${width} ${height - arrowheight} L ${width / 2} ${height - arrowheight} L ${width / 2 - arrowWidth} ${height} L ${width / 2 - arrowWidth} ${height - arrowheight} L 0 ${height - arrowheight} Z`\n },\n [ShapePathFormulasKeys.ROUND_MESSAGE]: (width: number, height: number) => {\n const radius = Math.min(width, height) / 8\n const arrowWidth = width / 5\n const arrowheight = height / 5\n return `M 0 ${radius} Q 0 0 ${radius} 0 L ${width - radius} 0 Q ${width} 0 ${width} ${radius} L ${width} ${height - radius - arrowheight} Q ${width} ${height - arrowheight} ${width - radius} ${height - arrowheight} L ${width / 2} ${height - arrowheight} L ${width / 2 - arrowWidth} ${height} L ${width / 2 - arrowWidth} ${height - arrowheight} L ${radius} ${height - arrowheight} Q 0 ${height - arrowheight} 0 ${height - radius - arrowheight} L 0 ${radius} Z`\n },\n [ShapePathFormulasKeys.L]: (width: number, height: number) => {\n const lineWidth = Math.min(width, height) / 4\n return `M 0 0 L 0 ${height} L ${width} ${height} L ${width} ${height - lineWidth} L ${lineWidth} ${height - lineWidth} L ${lineWidth} 0 Z`\n },\n [ShapePathFormulasKeys.RING_RECT]: (width: number, height: number) => {\n const lineWidth = Math.min(width, height) / 4\n return `M 0 0 ${width} 0 ${width} ${height} L 0 ${height} L 0 0 Z M ${lineWidth} ${lineWidth} L ${lineWidth} ${height - lineWidth} L ${width - lineWidth} ${height - lineWidth} L ${width - lineWidth} ${lineWidth} Z`\n },\n [ShapePathFormulasKeys.PLUS]: (width: number, height: number) => {\n const lineWidth = Math.min(width, height) / 4\n return `M ${width / 2 - lineWidth / 2} 0 L ${width / 2 - lineWidth / 2} ${height / 2 - lineWidth / 2} L 0 ${height / 2 - lineWidth / 2} L 0 ${height / 2 + lineWidth / 2} L ${width / 2 - lineWidth / 2} ${height / 2 + lineWidth / 2} L ${width / 2 - lineWidth / 2} ${height} L ${width / 2 + lineWidth / 2} ${height} L ${width / 2 + lineWidth / 2} ${height / 2 + lineWidth / 2} L ${width} ${height / 2 + lineWidth / 2} L ${width} ${height / 2 - lineWidth / 2} L ${width / 2 + lineWidth / 2} ${height / 2 - lineWidth / 2} L ${width / 2 + lineWidth / 2} 0 Z`\n },\n}\n\nexport const SHAPE_LIST: ShapeListItem[] = [\n {\n type: '矩形',\n children: [\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 200 0 L 200 200 L 0 200 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 50 0 L 150 0 Q 200 0 200 50 L 200 150 Q 200 200 150 200 L 50 200 Q 0 200 0 150 L 0 50 Q 0 0 50 0 Z',\n pathFormula: ShapePathFormulasKeys.ROUND_RECT,\n },\n {\n viewBox: [200, 200],\n path: 'M 0 150 L 0 0 L 150 0 L 200 50 L 200 200 L 50 200 Z',\n pathFormula: ShapePathFormulasKeys.CUT_RECT_DIAGONAL,\n },\n {\n viewBox: [200, 200],\n path: 'M 0 200 L 0 0 L 150 0 L 200 50 L 200 200 Z',\n pathFormula: ShapePathFormulasKeys.CUT_RECT_SINGLE,\n },\n {\n viewBox: [200, 200],\n path: 'M 0 50 L 50 0 L 150 0 L 200 50 L 200 200 L 0 200 Z',\n pathFormula: ShapePathFormulasKeys.CUT_RECT_SAMESIDE,\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 150 0 Q 200 0 200 50 L 200 200 L 50 200 Q 0 200 0 150 L 0 0 Z',\n pathFormula: ShapePathFormulasKeys.ROUND_RECT_DIAGONAL,\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 150 0 Q 200 0 200 50 L 200 200 L 0 200 L 0 0 Z',\n pathFormula: ShapePathFormulasKeys.ROUND_RECT_SINGLE,\n },\n {\n viewBox: [200, 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 Z',\n pathFormula: ShapePathFormulasKeys.ROUND_RECT_SAMESIDE,\n },\n ]\n },\n\n {\n type: '常用形状',\n children: [\n {\n viewBox: [200, 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, 200],\n path: 'M 0 200 A 50 100 0 1 1 200 200 L 0 200 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 40 20 A 100 100 0 1 0 200 100 L 100 100 L 40 20 Z'\n },\n {\n viewBox: [200, 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, 200],\n path: 'M 160 20 A 100 100 0 1 0 200 100 L 100 100 L 160 20 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 A 100 100 102 1 0 200 100 L 100 0 Z'\n },\n {\n viewBox: [200, 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, 200],\n path: 'M 0 0 L 200 0 Q 200 200 0 200 L 0 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 0 200 L 200 200 L 100 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 0 200 L 200 200 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 50 0 L 200 0 L 150 200 L 0 200 L 50 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 150 0 L 200 200 L 50 200 L 0 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 50 0 L 150 0 L 200 200 L 0 200 L 50 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 0 100 L 100 200 L 200 100 L 100 0 Z'\n },\n {\n viewBox: [200, 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, 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, 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, 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, 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, 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, 200],\n path: 'M 50 0 A 25 50 0 1 0 50 200 L 150 200 A 25 50 0 1 0 150 0 L 50 0 Z'\n },\n {\n viewBox: [200, 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, 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, 200],\n path: 'M 200 0 L 200 200 L 0 200 L 0 100 L 200 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 200 100 L 200 200 L 0 200 L 0 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 200 0 L 100 0 L 0 100 L 0 200 L 200 0 Z'\n },\n {\n viewBox: [200, 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, 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 pathFormula: ShapePathFormulasKeys.L\n },\n {\n viewBox: [200, 200],\n path: 'M0 0 L200 0 L200 200 L0 200 L0 0 Z M50 50 L50 150 L150 150 L150 50 Z',\n pathFormula: ShapePathFormulasKeys.RING_RECT,\n },\n {\n viewBox: [200, 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, 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 pathFormula: ShapePathFormulasKeys.PLUS,\n },\n {\n viewBox: [200, 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, 200],\n path: 'M 0 0 L 200 0 L 200 160 L 100 160 L 60 200 L 60 160 L 0 160 Z',\n pathFormula: ShapePathFormulasKeys.MESSAGE,\n },\n {\n viewBox: [200, 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 pathFormula: ShapePathFormulasKeys.ROUND_MESSAGE,\n },\n {\n viewBox: [200, 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, 200],\n path: 'M 200 0 L 0 0 L 200 200 L 0 200 L 200 0 Z'\n },\n {\n viewBox: [200, 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, 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 viewBox: [200, 200],\n path: 'M 100 0 Q 0 50 0 175 Q 100 225 200 175 Q 200 50 100 0 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 100 A 50 50 0 1 1 200 100 L 100 200 L 0 100 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 60 60 L 0 100 L 60 140 L 100 200 L 140 140 L 200 100 L 140 60 L 100 0 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 80 40 L 20 20 L 40 80 L 0 100 L 40 120 L 20 180 L 80 160 L 100 200 L 120 160 L 180 180 L 160 120 L 200 100 L 160 80 L 180 20 L 120 40 L 100 0 Z',\n },\n ],\n },\n \n {\n type: '箭头',\n children: [\n {\n viewBox: [200, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 200],\n path: 'M 0 0 L 200 100 L 0 200 L 60 100 L 0 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 200 0 L 0 100 L 200 200 L 140 100 L 200 0 Z'\n },\n {\n viewBox: [200, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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 viewBox: [1024, 1024],\n path: 'M997.8886764 504.17210418L537.2729208 43.89182982c-13.97838539-13.97838539-36.56745619-13.97838539-50.5458416 0L26.1113236 504.17210418c-13.41924998 13.41924998-21.02349164 31.64706454-21.02349163 50.65766867 0 39.47496036 32.09437288 71.56933323 71.56933324 71.56933323h48.53295408V954.83524937c0 19.79339373 15.99127289 35.78466661 35.78466663 35.78466662H440.43066677V740.12724968h125.24633315v250.49266631h297.34821416c19.79339373 0 35.78466661-15.99127289 35.78466663-35.78466662V626.39910608h48.53295408c19.01060414 0 37.23841869-7.49241457 50.65766869-21.02349163 27.84494371-27.95677079 27.84494371-73.24673948-0.11182708-101.20351027z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M1009.13013121 349.27572283L674.72427717 14.86986879c-8.82158299-8.82158299-20.35749924-13.16451618-31.89341544-13.16451618s-23.07183245 4.34293316-31.89341547 13.16451618L392.29790453 233.6451272c-16.5574327-1.90003326-33.25058207-2.71433322-49.94373146-2.71433324-99.34459624 0-198.68919249 32.70771543-280.25490606 98.12314628-20.90036589 16.69314938-22.52896582 48.04369819-3.66434987 67.04403081l246.59717401 246.59717401-292.33368895 292.06225564c-3.52863319 3.52863319-5.83581644 8.27871636-6.24296642 13.30023282l-4.61436649 50.48659809c-1.22144996 12.75736619 8.95729967 23.6146991 21.57894918 23.6146991 0.6785833 0 1.35716662 0 2.03574992-0.13571666l50.48659809-4.61436649c5.02151649-0.40714999 9.77159962-2.71433322 13.30023282-6.24296643l292.33368896-292.33368896 246.59717402 246.59717401c8.82158299 8.82158299 20.35749924 13.16451618 31.89341544 13.16451618 13.16451618 0 26.19331567-5.70009979 35.15061536-16.82886604 76.40848044-95.40881307 108.16617924-214.83947521 95.27309638-330.33435417l218.63954175-218.63954173c17.50744934-17.37173267 17.50744934-45.8722316 0-63.51539759z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M976.62005979 160.47737905c-0.39452595-0.39452595-80.35178503 78.64217259-239.47725131 237.50462156l-111.6508437-111.65084369 237.89914752-237.89914752c-125.19623464-75.35445635-286.03131335-56.02268482-390.31767264 48.26367449-81.92988882 81.92988882-112.57140424 200.15616502-83.37648398 310.09739626l2.36715569 8.81107954-372.82702222 372.69551356c-8.15353628 8.15353628-8.15353628 21.56741857 0 29.72095487l185.95323084 185.95323084c8.15353628 8.15353628 21.56741857 8.15353628 29.72095485 0l372.56400493-372.56400493 8.81107953 2.3671557c110.07273989 29.32642892 228.29901608-1.18357785 310.36041356-83.24497533 104.41786795-104.2863593 123.74963948-265.12143802 49.97328693-390.05465535z',\n special: true,\n },\n ],\n },\n\n {\n type: '线性',\n children: [\n {\n viewBox: [1024, 1024],\n path: 'M953.5488 832.61667556c-24.08448-57.08913778-58.74574221-108.31644445-102.70947556-152.28017777-43.96373333-43.96373333-95.19104-78.49756444-152.28017777-102.70947558-0.50972445-0.25486222-1.01944888-0.38229333-1.52917334-0.63715555C776.41955556 519.64586667 828.02915556 426.23886221 828.02915556 320.85333332c0-174.58062221-141.44853334-316.02915556-316.02915556-316.02915554S195.97084444 146.27271111 195.97084444 320.85333332c0 105.38552889 51.6096 198.79253333 130.99918223 256.26396447-0.50972445 0.25486222-1.01944888 0.38229333-1.52917334 0.63715555-57.08913778 24.08448-108.31644445 58.61831112-152.28017777 102.70947554-43.96373333 43.96373333-78.49756444 95.19104-102.70947556 152.28017779C46.74901333 888.55893332 34.13333334 947.8144 32.85902222 1008.72647111c-0.12743111 5.7344 4.46008889 10.44935111 10.19448889 10.44935111h76.45866667c5.60696888 0 10.06705778-4.46008889 10.19448889-9.93962666 2.54862221-98.37681778 42.05226667-190.50951112 111.88451555-260.34176001 72.25344-72.25344 168.20906666-112.01194667 270.40881778-112.01194667s198.15537778 39.75850667 270.40881778 112.01194667C852.24106667 818.72668444 891.74471111 910.85937779 894.29333333 1009.23619556c0.12743111 5.60696888 4.58752 9.93962667 10.19448889 9.93962666h76.45866667c5.7344 0 10.32192-4.71495112 10.19448889-10.44935111-1.27431111-60.91207112-13.88999112-120.16753779-37.59217778-176.10979555zM512 540.03484444c-58.49088 0-113.54112-22.81016889-154.95623111-64.22527999S292.81848888 379.34421333 292.81848888 320.85333332c0-58.49088 22.81016889-113.54112 64.22528001-154.9562311S453.50912 101.67182221 512 101.67182221s113.54112 22.81016889 154.95623111 64.22528001S731.18151112 262.36245333 731.18151112 320.85333332c0 58.49088-22.81016889 113.54112-64.22528001 154.95623113S570.49088 540.03484444 512 540.03484444z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M985.31555555 111.50222222H38.68444445c-20.13866667 0-36.40888889 16.27022222-36.4088889 36.40888889v728.17777778c0 20.13866667 16.27022222 36.40888889 36.4088889 36.40888889h946.6311111c20.13866667 0 36.40888889-16.27022222 36.4088889-36.40888889V147.91111111c0-20.13866667-16.27022222-36.40888889-36.4088889-36.40888889z m-45.5111111 126.06577778V830.57777778H84.19555555V237.568l-31.40266666-24.46222222 44.71466666-57.45777778 48.6968889 37.888h731.70488888l48.69688889-37.888 44.71466667 57.45777778-31.51644444 24.46222222z M877.90933333 193.42222222L512 477.86666667 146.09066667 193.42222222l-48.69688889-37.888-44.71466667 57.45777778 31.40266667 24.46222222 388.66488889 302.19377778c22.98311111 17.86311111 55.18222222 17.86311111 78.16533333 0L939.80444445 237.568l31.40266666-24.46222222-44.71466666-57.45777778-48.58311112 37.77422222z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M985.31555555 88.74666667H38.68444445c-20.13866667 0-36.40888889 16.27022222-36.4088889 36.40888888v564.33777778c0 20.13866667 16.27022222 36.40888889 36.4088889 36.40888889h432.35555555v127.43111111H275.34222222c-10.01244445 0-18.20444445 8.192-18.20444444 18.20444445v54.61333333c0 5.00622222 4.096 9.10222222 9.10222222 9.10222222h491.52c5.00622222 0 9.10222222-4.096 9.10222222-9.10222222v-54.61333333c0-10.01244445-8.192-18.20444445-18.20444444-18.20444445H552.96V725.90222222h432.35555555c20.13866667 0 36.40888889-16.27022222 36.4088889-36.40888889V125.15555555c0-20.13866667-16.27022222-36.40888889-36.4088889-36.40888888z m-45.5111111 555.23555555H84.19555555V170.66666667h855.6088889v473.31555555z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m0 932.97777778c-233.69955555 0-423.25333333-189.55377778-423.25333333-423.25333333 0-101.26222222 35.61244445-194.33244445 95.00444444-267.15022222l595.39911111 595.39911111C706.33244445 899.64088889 613.26222222 935.25333333 512 935.25333333z m328.24888889-156.10311111L244.84977778 183.75111111C317.66755555 124.35911111 410.73777778 88.74666667 512 88.74666667c233.69955555 0 423.25333333 189.55377778 423.25333333 423.25333333 0 101.26222222-35.61244445 194.33244445-95.00444444 267.15022222z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M901.80266667 257.82044445L656.95288889 12.97066667c-6.82666667-6.82666667-16.04266667-10.69511111-25.71377778-10.69511112H147.91111111c-20.13866667 0-36.40888889 16.27022222-36.40888889 36.4088889v946.6311111c0 20.13866667 16.27022222 36.40888889 36.40888889 36.4088889h728.17777778c20.13866667 0 36.40888889-16.27022222 36.40888889-36.4088889V283.648c0-9.67111111-3.86844445-19.00088889-10.69511111-25.82755555zM828.52977778 300.37333333H614.4V86.24355555L828.52977778 300.37333333z m2.048 639.43111112H193.42222222V84.19555555h343.60888889v245.76c0 26.39644445 21.39022222 47.78666667 47.78666667 47.78666667h245.76v562.06222223z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M981.07392 55.79662222H42.92608c-31.22062222 0-50.71758221 34.02410666-35.04355556 61.16693334L304.28728889 620.82616888V927.42542221c0 22.55530667 18.09521779 40.77795555 40.52309333 40.77795557h334.37923556c22.42787556 0 40.52309333-18.22264888 40.52309333-40.77795557V620.82616888L1016.24490667 116.96355556c15.54659555-27.14282666-3.95036444-61.16693333-35.17098667-61.16693334zM628.47203556 876.45297779H395.52796444V677.66044445h233.07150222v198.79253334z m12.23338666-301.50200891l-12.10595556 21.15356445h-233.19893332l-12.10595556-21.15356445L130.59868445 147.54702221h762.8026311L640.70542222 574.95096888z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M980.62285431 4.54099753H654.39920987c-4.2719763 0-7.76722963 3.49525333-7.76722962 7.76722964v72.4941432c0 4.2719763 3.49525333 7.76722963 7.76722962 7.76722963h207.64393877L604.04167111 350.57107753c-64.72691358-49.83972347-143.69374815-76.7661195-226.67365136-76.7661195-99.54999309 0-193.27456395 38.83614815-263.5679921 109.25903012S4.54099753 547.08198717 4.54099753 646.63198025s38.83614815 193.27456395 109.25903012 263.5679921C184.09345581 980.62285431 277.81802667 1019.45900247 377.36801975 1019.45900247s193.27456395-38.83614815 263.5679921-109.25903012C711.35889383 839.90654419 750.19504197 746.18197333 750.19504197 646.63198025c0-82.9799032-26.92639605-161.68783013-76.63666567-226.41474372L931.4304 162.34521283V369.60079013c0 4.2719763 3.49525333 7.76722963 7.76722963 7.76722962h72.4941432c4.2719763 0 7.76722963-3.49525333 7.76722964-7.76722962V43.37714569c0-21.35988148-17.47626667-38.83614815-38.83614816-38.83614816zM377.36801975 921.07409383c-151.33152395 0-274.44211358-123.11058963-274.44211358-274.44211358s123.11058963-274.44211358 274.44211358-274.44211358 274.44211358 123.11058963 274.44211358 274.44211358-123.11058963 274.44211358-274.44211358 274.44211358z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M591.98717801 512l405.34042913-483.16579151c6.79427767-8.02960089 1.08090782-20.22841761-9.41933951-20.2284176h-123.22349044c-7.25752386 0-14.20621693 3.24272343-18.99309439 8.80167789L511.38233839 415.95362022 177.07299399 17.40746878c-4.63246205-5.55895447-11.58115512-8.80167789-18.99309439-8.80167789H34.85640916c-10.50024731 0-16.21361717 12.19881672-9.41933952 20.2284176L430.77749876 512 25.43706964 995.16579151c-6.79427767 8.02960089-1.08090782 20.22841761 9.41933952 20.2284176h123.22349044c7.25752386 0 14.20621693-3.24272343 18.99309439-8.80167789l334.3093444-398.54615144 334.30934441 398.54615144c4.63246205 5.55895447 11.58115512 8.80167789 18.99309439 8.80167789h123.22349044c10.50024731 0 16.21361717-12.19881672 9.41933951-20.2284176L591.98717801 512z',\n special: true,\n outlined: true,\n },\n ],\n }\n]","import { ChartType } from '@/types/slides'\n\ninterface ChartTypes {\n [propName: string]: ChartType\n}\n\nexport const CHART_TYPES: ChartTypes = {\n bar: 'bar',\n horizontalBar: 'bar',\n line: 'line',\n area: 'line',\n scatter: 'line',\n pie: 'pie',\n ring: 'pie',\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}","import { storeToRefs } from 'pinia'\nimport { nanoid } from 'nanoid'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { getImageSize } from '@/utils/image'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport { PPTLineElement, PPTElement, TableCell, TableCellStyle, PPTShapeElement, PPTChartElement, ChartOptions, PresetChartType } from '@/types/slides'\nimport { ShapePoolItem, SHAPE_PATH_FORMULAS } from '@/configs/shapes'\nimport { LinePoolItem } from '@/configs/lines'\nimport { CHART_TYPES } from '@/configs/chartTypes'\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, callback?: () => void) => {\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 if (callback) callback()\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: nanoid(10),\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 = (type: PresetChartType) => {\n const newElement: PPTChartElement = {\n type: 'chart',\n id: nanoid(10),\n chartType: CHART_TYPES[type],\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 let options: ChartOptions = {}\n if (type === 'horizontalBar') options = { horizontalBars: true }\n else if (type === 'area') options = { showArea: true }\n else if (type === 'scatter') options = { showLine: false }\n else if (type === 'ring') options = { donut: true }\n\n createElement({\n ...newElement,\n options,\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: nanoid(10), 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: nanoid(10),\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 const id = nanoid(10)\n createElement({\n type: 'text',\n id,\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 setTimeout(() => {\n const editorRef: HTMLElement | null = document.querySelector(`#editable-element-${id} .ProseMirror`)\n if (editorRef) editorRef.focus()\n }, 0)\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: nanoid(10),\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 if (data.pathFormula) {\n newElement.pathFormula = data.pathFormula\n newElement.viewBox = [width, height]\n newElement.path = SHAPE_PATH_FORMULAS[data.pathFormula](width, height)\n }\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: nanoid(10),\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 if (data.isCubic) newElement.cubic = [[(start[0] + end[0]) / 2, (start[1] + end[1]) / 2], [(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: nanoid(10),\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: nanoid(10),\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: nanoid(10),\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 { nanoid } from 'nanoid'\nimport { useSlidesStore, useMainStore } from '@/store'\nimport { PPTElement, Slide } from '@/types/slides'\nimport { createElementIdMap } from '@/utils/element'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { currentSlide } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n /**\n * 添加指定的元素数据(一组)\n * @param elements 元素列表数据\n */\n const addElementsFromData = (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 addSlidesFromData = (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 // 动画id替换\n if (slide.animations) {\n for (const animation of slide.animations) {\n animation.id = nanoid(10)\n animation.elId = elIdMap[animation.elId]\n }\n }\n return {\n ...slide,\n id: nanoid(10),\n }\n })\n slidesStore.addSlide(newSlides)\n addHistorySnapshot()\n }\n\n return {\n addElementsFromData,\n addSlidesFromData,\n }\n}","import { pasteCustomClipboardString } from '@/utils/clipboard'\nimport { parseText2Paragraphs } from '@/utils/textParser'\nimport useCreateElement from '@/hooks/useCreateElement'\nimport useAddSlidesOrElements from '@/hooks/useAddSlidesOrElements'\n\ninterface PasteTextClipboardDataOptions {\n onlySlide?: boolean\n onlyElements?: boolean\n}\n\nexport default () => {\n const { createTextElement } = useCreateElement()\n const { addElementsFromData, addSlidesFromData } = useAddSlidesOrElements()\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) addElementsFromData(data)\n else if (type === 'slides' && !onlyElements) addSlidesFromData(data)\n }\n\n // 普通文本\n else if (!onlyElements && !onlySlide) {\n const string = parseText2Paragraphs(clipboardData)\n createTextElementFromClipboard(string)\n }\n }\n\n return {\n pasteTextClipboardData,\n }\n}","import { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { nanoid } from 'nanoid'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { Slide } from '@/types/slides'\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'\nimport useAddSlidesOrElements from '@/hooks//useAddSlidesOrElements'\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { selectedSlidesIndex: _selectedSlidesIndex, activeElementIdList } = 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 } = usePasteTextClipboardData()\n const { addSlidesFromData } = useAddSlidesOrElements()\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 重置幻灯片\n const resetSlides = () => {\n const emptySlide: Slide = {\n id: nanoid(10),\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 if (activeElementIdList.value.length) mainStore.setActiveElementIdList([])\n slidesStore.updateSlideIndex(slideIndex.value - 1)\n }\n else if (command === KEYS.DOWN && slideIndex.value < slides.value.length - 1) {\n if (activeElementIdList.value.length) mainStore.setActiveElementIdList([])\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: nanoid(10),\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: nanoid(10),\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 addSlidesFromData([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 { nanoid } from 'nanoid'\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, 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 = nanoid(10)\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 { 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: ElementOrderCommands) => {\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 else if (docElm.msRequestFullscreen) docElm.msRequestFullscreen()\n}\n\n// 退出全屏\nexport const exitFullscreen = () => {\n if (document.exitFullscreen) document.exitFullscreen()\n else if (document.mozCancelFullScreen) document.mozCancelFullScreen()\n else if (document.webkitExitFullscreen) document.webkitExitFullscreen()\n else if (document.msExitFullscreen) document.msExitFullscreen()\n}\n\n// 判断是否全屏\nexport const isFullscreen = () => {\n const fullscreenElement = \n document.fullscreenElement ||\n document.mozFullScreenElement ||\n document.webkitFullscreenElement ||\n document.msFullscreenElement ||\n document.webkitCurrentFullScreenElement\n return !!fullscreenElement\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 { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\n\nexport default () => {\n const mainStore = useMainStore()\n const { canvasPercentage, canvasScale, canvasDragged } = storeToRefs(mainStore)\n\n const canvasScalePercentage = computed(() => Math.round(canvasScale.value * 100) + '%')\n\n /**\n * 缩放画布百分比\n * @param command 缩放命令:放大、缩小\n */\n const scaleCanvas = (command: '+' | '-') => {\n let percentage = canvasPercentage.value\n const step = 5\n const max = 200\n const min = 30\n if (command === '+' && percentage <= max) percentage += step\n if (command === '-' && percentage >= min) percentage -= step\n\n mainStore.setCanvasPercentage(percentage)\n }\n\n /**\n * 设置画布缩放比例\n * 但不是直接设置该值,而是通过设置画布可视区域百分比来动态计算\n * @param value 目标画布缩放比例\n */\n const setCanvasScalePercentage = (value: number) => {\n const percentage = Math.round(value / canvasScale.value * canvasPercentage.value) / 100\n mainStore.setCanvasPercentage(percentage)\n }\n\n /**\n * 重置画布尺寸和位置\n */\n const resetCanvas = () => {\n mainStore.setCanvasPercentage(90)\n if (canvasDragged) mainStore.setCanvasDragged(false)\n }\n\n return {\n canvasScalePercentage,\n setCanvasScalePercentage,\n scaleCanvas,\n resetCanvas,\n }\n}","import { onMounted, onUnmounted } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore, useKeyboardStore } from '@/store'\nimport { 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, spaceKeyState } = 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, enterScreeningFromStart } = useScreening()\n const { scaleCanvas, resetCanvas } = 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 moveSlide = (key: string) => {\n if (key === KEYS.PAGEUP) updateSlideIndex(KEYS.UP)\n else if (key === KEYS.PAGEDOWN) updateSlideIndex(KEYS.DOWN)\n }\n\n const order = (command: ElementOrderCommands) => {\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 if (!disableHotkeys.value && key === KEYS.SPACE) keyboardStore.setSpaceKeyState(true)\n\n \n if (ctrlOrMetaKeyActive && key === KEYS.P) {\n e.preventDefault()\n mainStore.setDialogForExport('pdf')\n return\n }\n if (shiftKey && key === KEYS.F5) {\n e.preventDefault()\n enterScreening()\n keyboardStore.setShiftKeyState(false)\n return\n }\n if (key === KEYS.F5) {\n e.preventDefault()\n enterScreeningFromStart()\n return\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.PAGEUP) {\n if (disableHotkeys.value) return\n e.preventDefault()\n moveSlide(KEYS.PAGEUP)\n }\n if (key === KEYS.PAGEDOWN) {\n if (disableHotkeys.value) return\n e.preventDefault()\n moveSlide(KEYS.PAGEDOWN)\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 resetCanvas()\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 if (spaceKeyState.value) keyboardStore.setSpaceKeyState(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-f0cbd508\"),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(\"导入 pptist 文件\")\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"导出 pptist 文件\")\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\"导出 PPTX\")\nconst _hoisted_9 = /*#__PURE__*/_createTextVNode(\"导出图片\")\nconst _hoisted_10 = /*#__PURE__*/_createTextVNode(\"导出 JSON\")\nconst _hoisted_11 = /*#__PURE__*/_createTextVNode(\"打印 / 导出 PDF\")\nconst _hoisted_12 = { class: \"menu-item\" }\nconst _hoisted_13 = /*#__PURE__*/_createTextVNode()\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"text\" }, \"编辑\", -1))\nconst _hoisted_15 = /*#__PURE__*/_createTextVNode(\"撤销\")\nconst _hoisted_16 = /*#__PURE__*/_createTextVNode(\"重做\")\nconst _hoisted_17 = /*#__PURE__*/_createTextVNode(\"添加页面\")\nconst _hoisted_18 = /*#__PURE__*/_createTextVNode(\"删除页面\")\nconst _hoisted_19 = /*#__PURE__*/_createTextVNode(\"重置幻灯片\")\nconst _hoisted_20 = { class: \"menu-item\" }\nconst _hoisted_21 = /*#__PURE__*/_createTextVNode()\nconst _hoisted_22 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"text\" }, \"演示\", -1))\nconst _hoisted_23 = /*#__PURE__*/_createTextVNode(\"从头开始\")\nconst _hoisted_24 = /*#__PURE__*/_createTextVNode(\"从当前页开始\")\nconst _hoisted_25 = { class: \"menu-item\" }\nconst _hoisted_26 = /*#__PURE__*/_createTextVNode()\nconst _hoisted_27 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"text\" }, \"帮助\", -1))\nconst _hoisted_28 = /*#__PURE__*/_createTextVNode(\"意见反馈\")\nconst _hoisted_29 = /*#__PURE__*/_createTextVNode(\"快捷键\")\nconst _hoisted_30 = { class: \"right\" }\nconst _hoisted_31 = {\n href: \"https://github.com/pipipi-pikachu/PPTist\",\n target: \"_blank\"\n}\nconst _hoisted_32 = { 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_FileInput = _resolveComponent(\"FileInput\")!\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_IconShare = _resolveComponent(\"IconShare\")!\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\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_FileInput, {\n accept: \".pptist\",\n onChange: _cache[0] || (_cache[0] = files => _ctx.importSpecificFile(files))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_MenuItem, null, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.setDialogForExport('pptist')))\n }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.setDialogForExport('pptx')))\n }, {\n default: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.setDialogForExport('image')))\n }, {\n default: _withCtx(() => [\n _hoisted_9\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.setDialogForExport('json')))\n }, {\n default: _withCtx(() => [\n _hoisted_10\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.setDialogForExport('pdf')))\n }, {\n default: _withCtx(() => [\n _hoisted_11\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[6] || (_cache[6] = ($event: any) => (_ctx.undo()))\n }, {\n default: _withCtx(() => [\n _hoisted_15\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.redo()))\n }, {\n default: _withCtx(() => [\n _hoisted_16\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.createSlide()))\n }, {\n default: _withCtx(() => [\n _hoisted_17\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.deleteSlide()))\n }, {\n default: _withCtx(() => [\n _hoisted_18\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[10] || (_cache[10] = ($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[11] || (_cache[11] = ($event: any) => (_ctx.toggleRuler()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.showRuler ? '关闭标尺' : '打开标尺'), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[12] || (_cache[12] = ($event: any) => (_ctx.resetSlides()))\n }, {\n default: _withCtx(() => [\n _hoisted_19\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_12, [\n _createVNode(_component_IconEdit),\n _hoisted_13,\n _hoisted_14\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[13] || (_cache[13] = ($event: any) => (_ctx.enterScreeningFromStart()))\n }, {\n default: _withCtx(() => [\n _hoisted_23\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[14] || (_cache[14] = ($event: any) => (_ctx.enterScreening()))\n }, {\n default: _withCtx(() => [\n _hoisted_24\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_20, [\n _createVNode(_component_IconPpt),\n _hoisted_21,\n _hoisted_22\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[15] || (_cache[15] = ($event: any) => (_ctx.goIssues()))\n }, {\n default: _withCtx(() => [\n _hoisted_28\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[16] || (_cache[16] = ($event: any) => (_ctx.hotkeyDrawerVisible = true))\n }, {\n default: _withCtx(() => [\n _hoisted_29\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_25, [\n _createVNode(_component_IconHelpcenter),\n _hoisted_26,\n _hoisted_27\n ])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_30, [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n title: \"导出\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"menu-item\",\n onClick: _cache[17] || (_cache[17] = ($event: any) => (_ctx.setDialogForExport('pptx')))\n }, [\n _createVNode(_component_IconShare, {\n size: \"18\",\n fill: \"#666\"\n })\n ])\n ]),\n _: 1\n }),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n title: \"幻灯片放映\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"menu-item\",\n onClick: _cache[18] || (_cache[18] = ($event: any) => (_ctx.enterScreening()))\n }, [\n _createVNode(_component_IconPpt, {\n size: \"19\",\n fill: \"#666\",\n style: {\"margin-top\":\"1px\"}\n })\n ])\n ]),\n _: 1\n }),\n _createElementVNode(\"a\", _hoisted_31, [\n _createElementVNode(\"div\", _hoisted_32, [\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 closable: false,\n visible: _ctx.hotkeyDrawerVisible,\n onClose: _cache[19] || (_cache[19] = ($event: any) => (_ctx.hotkeyDrawerVisible = false))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_HotkeyDoc)\n ]),\n _: 1\n }, 8, [\"visible\"])\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 { toPng, toJpeg } from 'html-to-image'\nimport { useSlidesStore } from '@/store'\nimport { PPTElementOutline, PPTElementShadow, PPTElementLink, Slide } from '@/types/slides'\nimport { getElementRange, getLineElementPath, getTableSubThemeColor } from '@/utils/element'\nimport { AST, toAST } from '@/utils/htmlParser'\nimport { SvgPoints, toPoints } from '@/utils/svgPathParser'\nimport { decrypt, encrypt } from '@/utils/crypto'\nimport { svg2Base64 } from '@/utils/svg2Base64'\nimport { message } from 'ant-design-vue'\nimport useAddSlidesOrElements from '@/hooks/useAddSlidesOrElements'\n\ninterface ExportImageConfig {\n quality: number\n width: number\n fontEmbedCSS?: string\n}\n\nexport default () => {\n const slidesStore = useSlidesStore()\n const { slides, theme, viewportRatio } = storeToRefs(slidesStore)\n\n const { addSlidesFromData } = useAddSlidesOrElements()\n\n const exporting = ref(false)\n\n // 导出图片\n const exportImage = (domRef: HTMLElement, format: string, quality: number, ignoreWebfont = true) => {\n exporting.value = true\n const toImage = format === 'png' ? toPng : toJpeg\n\n const foreignObjectSpans = domRef.querySelectorAll('foreignObject [xmlns]')\n foreignObjectSpans.forEach(spanRef => spanRef.removeAttribute('xmlns'))\n\n setTimeout(() => {\n const config: ExportImageConfig = {\n quality,\n width: 1600,\n }\n\n if (ignoreWebfont) config.fontEmbedCSS = ''\n\n toImage(domRef, config).then(dataUrl => {\n exporting.value = false\n saveAs(dataUrl, `pptist_slides.${format}`)\n }).catch(() => {\n exporting.value = false\n message.error('导出图片失败')\n })\n }, 200)\n }\n \n // 导出pptist文件(特有 .pptist 后缀文件)\n const exportSpecificFile = (_slides: Slide[]) => {\n const blob = new Blob([encrypt(JSON.stringify(_slides))], { type: '' })\n saveAs(blob, 'pptist_slides.pptist')\n }\n \n // 导入pptist文件\n const importSpecificFile = (files: File[], cover = false) => {\n const file = files[0]\n\n const reader = new FileReader()\n reader.addEventListener('load', () => {\n try {\n const slides = JSON.parse(decrypt(reader.result as string))\n if (cover) slidesStore.setSlides(slides)\n else addSlidesFromData(slides)\n }\n catch {\n message.error('无法正确读取 / 解析该文件')\n }\n })\n reader.readAsText(file)\n }\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 let bulletFlag = false\n let indent = 0\n\n const slices: pptxgen.TextProps[] = []\n const parse = (obj: AST[], baseStyleObj = {}) => {\n\n for (const item of obj) {\n const isBlockTag = 'tagName' in item && ['div', 'li', 'p'].includes(item.tagName)\n\n if (isBlockTag && 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 if (item.tagName === 'a') {\n const attr = item.attributes.find(attr => attr.key === 'href')\n styleObj['href'] = attr?.value || ''\n }\n if (item.tagName === 'ul') {\n styleObj['list-type'] = 'ul'\n }\n if (item.tagName === 'ol') {\n styleObj['list-type'] = 'ol'\n }\n if (item.tagName === 'li') {\n bulletFlag = true\n }\n if (item.tagName === 'p') {\n if ('attributes' in item) {\n const dataIndentAttr = item.attributes.find(attr => attr.key === 'data-indent')\n if (dataIndentAttr && dataIndentAttr.value) indent = +dataIndentAttr.value\n }\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(/ /g, ' ').replace(/>/g, '>').replace(/</g, '<').replace(/&/g, '&').replace(/\\n/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 if (styleObj['href']) options.hyperlink = { url: styleObj['href'] }\n\n if (bulletFlag && styleObj['list-type'] === 'ol') {\n options.bullet = { type: 'number', indent: 20 * 0.75 }\n options.paraSpaceBefore = 0.1\n bulletFlag = false\n }\n if (bulletFlag && styleObj['list-type'] === 'ul') {\n options.bullet = { indent: 20 * 0.75 }\n options.paraSpaceBefore = 0.1\n bulletFlag = false\n }\n if (indent) {\n options.indentLevel = indent\n indent = 0\n }\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 // 获取阴影配置\n const getShadowOption = (shadow: PPTElementShadow): pptxgen.ShadowProps => {\n const c = formatColor(shadow.color)\n const { h, v } = shadow\n\n let offset = 4\n let angle = 45\n\n if (h === 0 && v === 0) {\n offset = 4\n angle = 45\n }\n else if (h === 0) {\n if (v > 0) {\n offset = v\n angle = 90\n }\n else {\n offset = -v\n angle = 270\n }\n }\n else if (v === 0) {\n if (h > 0) {\n offset = h\n angle = 1\n }\n else {\n offset = -h\n angle = 180\n }\n }\n else if (h > 0 && v > 0) {\n offset = Math.max(h, v)\n angle = 45\n }\n else if (h > 0 && v < 0) {\n offset = Math.max(h, -v)\n angle = 315\n }\n else if (h < 0 && v > 0) {\n offset = Math.max(-h, v)\n angle = 135\n }\n else if (h < 0 && v < 0) {\n offset = Math.max(-h, -v)\n angle = 225\n }\n\n return {\n type: 'outer',\n color: c.color.replace('#', ''),\n opacity: c.alpha,\n blur: shadow.blur * 0.75,\n offset,\n angle,\n }\n }\n\n // 获取边框配置\n const getOutlineOption = (outline: PPTElementOutline): pptxgen.ShapeLineProps => {\n const c = formatColor(outline?.color || '#000000')\n return {\n color: c.color, \n transparency: (1 - c.alpha) * 100,\n width: (outline.width || 1) * 0.75, \n dashType: outline.style === 'solid' ? 'solid' : 'dash',\n }\n }\n\n // 获取超链接配置\n const getLinkOption = (link: PPTElementLink): pptxgen.HyperlinkProps | null => {\n const { type, target } = link\n if (type === 'web') return { url: target }\n if (type === 'slide') {\n const index = slides.value.findIndex(slide => slide.id === target)\n if (index !== -1) return { slide: index + 1 }\n }\n\n return null\n }\n\n // 导出PPTX文件\n const exportPPTX = (_slides: Slide[], masterOverwrite: boolean) => {\n exporting.value = true\n const pptx = new pptxgen()\n\n if (viewportRatio.value === 0.625) pptx.layout = 'LAYOUT_16x10'\n else if (viewportRatio.value === 0.75) pptx.layout = 'LAYOUT_4x3'\n else pptx.layout = 'LAYOUT_16x9'\n\n if (masterOverwrite) {\n const { color: bgColor, alpha: bgAlpha } = formatColor(theme.value.backgroundColor)\n pptx.defineSlideMaster({\n title: 'PPTIST_MASTER',\n background: { color: bgColor, transparency: (1 - bgAlpha) * 100 },\n })\n }\n\n for (const slide of _slides) {\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 if (slide.remark) pptxSlide.addNotes(slide.remark)\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: 'top',\n margin: 10 * 0.75,\n paraSpaceBefore: 5 * 0.75,\n lineSpacingMultiple: 1.5 / 1.25,\n autoFit: true,\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 / 1.25\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) options.shadow = getShadowOption(el.shadow)\n if (el.outline?.width) options.line = getOutlineOption(el.outline)\n if (el.opacity !== undefined) options.transparency = (1 - el.opacity) * 100\n if (el.paragraphSpace !== undefined) options.paraSpaceBefore = el.paragraphSpace * 0.75\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.link) {\n const linkOption = getLinkOption(el.link)\n if (linkOption) options.hyperlink = linkOption\n }\n if (el.filters?.opacity) options.transparency = 100 - parseInt(el.filters?.opacity)\n if (el.clip) {\n if (el.clip.shape === 'ellipse') options.rounding = true\n\n const [start, end] = el.clip.range\n const [startX, startY] = start\n const [endX, endY] = end\n\n const originW = el.width / ((endX - startX) / 100)\n const originH = el.height / ((endY - startY) / 100)\n\n options.w = originW / 100\n options.h = originH / 100\n\n options.sizing = {\n type: 'crop',\n x: startX / 100 * originW / 100,\n y: startY / 100 * originH / 100,\n w: (endX - startX) / 100 * originW / 100,\n h: (endY - startY) / 100 * originH / 100,\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 linkOption = getLinkOption(el.link)\n if (linkOption) options.hyperlink = linkOption\n }\n\n pptxSlide.addImage(options)\n }\n else {\n const scale = {\n x: el.width / el.viewBox[0],\n y: el.height / el.viewBox[1],\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.shadow) options.shadow = getShadowOption(el.shadow)\n if (el.outline?.width) options.line = getOutlineOption(el.outline)\n if (el.link) {\n const linkOption = getLinkOption(el.link)\n if (linkOption) options.hyperlink = linkOption\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 paraSpaceBefore: 5 * 0.75,\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 const c = formatColor(el.color)\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: c.color, \n transparency: (1 - c.alpha) * 100,\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 if (el.shadow) options.shadow = getShadowOption(el.shadow)\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 linkOption = getLinkOption(el.link)\n if (linkOption) options.hyperlink = linkOption\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 exportImage,\n exportJSON,\n importSpecificFile,\n exportSpecificFile,\n exportPPTX,\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-a2afb4ce\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"hotkey-doc\" }\nconst _hoisted_2 = { class: \"title\" }\nconst _hoisted_3 = { class: \"label\" }\nconst _hoisted_4 = { class: \"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 (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.hotkeys, (item) => {\n return (_openBlock(), _createElementBlock(_Fragment, {\n key: item.type\n }, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(item.type), 1),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.children, (hotkey) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"hotkey-item\",\n key: hotkey.label\n }, [\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(hotkey.label), 1),\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(hotkey.value), 1)\n ]))\n }), 128))\n ], 64))\n }), 128))\n ]))\n}","\nimport { defineComponent } from 'vue'\nimport { HOTKEY_DOC } from '@/configs/hotkey'\n\nexport default defineComponent({\n name: 'hotkey-doc',\n setup() {\n return {\n hotkeys: HOTKEY_DOC,\n }\n },\n})\n","import { render } from \"./HotkeyDoc.vue?vue&type=template&id=a2afb4ce&scoped=true&ts=true\"\nimport script from \"./HotkeyDoc.vue?vue&type=script&lang=ts\"\nexport * from \"./HotkeyDoc.vue?vue&type=script&lang=ts\"\n\nimport \"./HotkeyDoc.vue?vue&type=style&index=0&id=a2afb4ce&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-a2afb4ce\"]])\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, showRuler } = storeToRefs(mainStore)\n\n const { enterScreening, enterScreeningFromStart } = useScreening()\n const { createSlide, deleteSlide, resetSlides } = useSlideHandler()\n const { redo, undo } = useHistorySnapshot()\n const { importSpecificFile } = useExport()\n\n const setDialogForExport = mainStore.setDialogForExport\n\n const toggleGridLines = () => {\n mainStore.setGridLinesState(!showGridLines.value)\n }\n\n const toggleRuler = () => {\n mainStore.setRulerState(!showRuler.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 showRuler,\n hotkeyDrawerVisible,\n importSpecificFile,\n setDialogForExport,\n enterScreening,\n enterScreeningFromStart,\n createSlide,\n deleteSlide,\n toggleGridLines,\n toggleRuler,\n resetSlides,\n goIssues,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=f0cbd508&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=f0cbd508&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-f0cbd508\"]])\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-743d966c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"operates\" }\nconst _hoisted_2 = {\n key: 1,\n class: \"drag-mask\"\n}\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_Ruler = _resolveComponent(\"Ruler\")!\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 onWheel: _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 canvasScale: _ctx.canvasScale\n }, null, 8, [\"type\", \"axis\", \"length\", \"canvasScale\"]))\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.mouseSelectionVisible)\n ? (_openBlock(), _createBlock(_component_MouseSelection, {\n key: 0,\n top: _ctx.mouseSelection.top,\n left: _ctx.mouseSelection.left,\n width: _ctx.mouseSelection.width,\n height: _ctx.mouseSelection.height,\n quadrant: _ctx.mouseSelectionQuadrant\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 (_ctx.spaceKeyState)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2))\n : _createCommentVNode(\"\", true),\n (_ctx.showRuler)\n ? (_openBlock(), _createBlock(_component_Ruler, {\n key: 2,\n viewportStyles: _ctx.viewportStyles\n }, null, 8, [\"viewportStyles\"]))\n : _createCommentVNode(\"\", true),\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 ], 32)), [\n [_directive_contextmenu, _ctx.contextmenus],\n [_directive_click_outside, _ctx.removeEditorAreaFocus]\n ])\n}","import { InjectionKey, Ref } from 'vue'\n\nexport type SlideScale = Ref\nexport type SlideId = Ref\n\nexport const injectKeySlideScale: InjectionKey = Symbol()\nexport const injectKeySlideId: InjectionKey = Symbol()","// 清除文字选区\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, canvasDragged } = 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 watch(canvasDragged, () => {\n if (!canvasDragged.value) setViewportPosition()\n })\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 // 拖拽画布\n const dragViewport = (e: MouseEvent) => {\n let isMouseDown = true\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n\n const originLeft = viewportLeft.value\n const originTop = viewportTop.value\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n viewportLeft.value = originLeft + (currentPageX - startPageX)\n viewportTop.value = originTop + (currentPageY - startPageY)\n }\n\n document.onmouseup = () => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n mainStore.setCanvasDragged(true)\n }\n }\n\n return {\n viewportStyles,\n dragViewport,\n }\n}","import { Ref, ref } 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 mouseSelectionVisible = ref(false)\n const mouseSelectionQuadrant = ref(1)\n const mouseSelection = ref({\n top: 0,\n left: 0,\n width: 0,\n height: 0,\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 mouseSelection.value = {\n top: top,\n left: left,\n width: 0,\n height: 0,\n }\n mouseSelectionVisible.value = false\n mouseSelectionQuadrant.value = 4\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 mouseSelection.value = {\n ...mouseSelection.value,\n width: width,\n height: height,\n }\n mouseSelectionVisible.value = true\n mouseSelectionQuadrant.value = quadrant\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 = mouseSelection.value.left\n const mouseSelectionTop = mouseSelection.value.top\n const mouseSelectionWidth = mouseSelection.value.width\n const mouseSelectionHeight = mouseSelection.value.height\n\n const { minX, maxX, minY, maxY } = getElementRange(element)\n\n // 计算元素是否处在框选范围内时,四个框选方向的计算方式有差异\n let isInclude = false\n if (mouseSelectionQuadrant.value === 4) {\n isInclude = minX > mouseSelectionLeft && \n maxX < mouseSelectionLeft + mouseSelectionWidth && \n minY > mouseSelectionTop && \n maxY < mouseSelectionTop + mouseSelectionHeight\n }\n else if (mouseSelectionQuadrant.value === 1) {\n isInclude = minX > (mouseSelectionLeft - mouseSelectionWidth) && \n maxX < (mouseSelectionLeft - mouseSelectionWidth) + mouseSelectionWidth && \n minY > (mouseSelectionTop - mouseSelectionHeight) && \n maxY < (mouseSelectionTop - mouseSelectionHeight) + mouseSelectionHeight\n }\n else if (mouseSelectionQuadrant.value === 2) {\n isInclude = minX > mouseSelectionLeft && \n maxX < mouseSelectionLeft + mouseSelectionWidth && \n minY > (mouseSelectionTop - mouseSelectionHeight) && \n maxY < (mouseSelectionTop - mouseSelectionHeight) + mouseSelectionHeight\n }\n else if (mouseSelectionQuadrant.value === 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 mouseSelectionVisible.value = false\n }\n }\n\n return {\n mouseSelection,\n mouseSelectionVisible,\n mouseSelectionQuadrant,\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, PPTLineElement, PPTVideoElement, PPTAudioElement } 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: Exclude) => {\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 { SHAPE_PATH_FORMULAS } from '@/configs/shapes'\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 canvasScale: Ref,\n) => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { activeElementIdList, activeGroupElementId } = storeToRefs(mainStore)\n const { viewportRatio } = storeToRefs(slidesStore)\n const { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 缩放元素\n const scaleElement = (e: MouseEvent | TouchEvent, element: Exclude, command: OperateResizeHandlers) => {\n const isTouchEvent = !(e instanceof MouseEvent)\n if (isTouchEvent && (!e.changedTouches || !e.changedTouches[0])) return\n\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 = isTouchEvent ? e.changedTouches[0].pageX : e.pageX\n const startPageY = isTouchEvent ? e.changedTouches[0].pageY : 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 const handleMousemove = (e: MouseEvent | TouchEvent) => {\n if (!isMouseDown) return\n\n const currentPageX = e instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const currentPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].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 => {\n if (element.id !== el.id) return el\n if (el.type === 'shape' && 'pathFormula' in el && el.pathFormula) {\n return {\n ...el, left, top, width, height,\n viewBox: [width, height],\n path: SHAPE_PATH_FORMULAS[el.pathFormula](width, height),\n }\n }\n return { ...el, left, top, width, height }\n })\n }\n\n const handleMouseup = (e: MouseEvent | TouchEvent) => {\n isMouseDown = false\n \n document.ontouchmove = null\n document.ontouchend = null\n document.onmousemove = null\n document.onmouseup = null\n\n alignmentLines.value = []\n\n const currentPageX = e instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const currentPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].pageY\n \n if (startPageX === currentPageX && startPageY === currentPageY) return\n \n slidesStore.updateSlide({ elements: elementList.value })\n mainStore.setScalingState(false)\n \n addHistorySnapshot()\n }\n\n if (isTouchEvent) {\n document.ontouchmove = handleMousemove\n document.ontouchend = handleMouseup\n }\n else {\n document.onmousemove = handleMousemove\n document.onmouseup = handleMouseup\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 | TouchEvent, 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 | TouchEvent, 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 instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const startPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].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 canvasScale: Ref,\n) => {\n const slidesStore = useSlidesStore()\n const { activeElementIdList, activeGroupElementId } = storeToRefs(useMainStore())\n const { viewportRatio } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const dragElement = (e: MouseEvent | TouchEvent, element: PPTElement) => {\n const isTouchEvent = !(e instanceof MouseEvent)\n if (isTouchEvent && (!e.changedTouches || !e.changedTouches[0])) return\n\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 = isTouchEvent ? e.changedTouches[0].pageX : e.pageX\n const startPageY = isTouchEvent ? e.changedTouches[0].pageY : 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 const handleMousemove = (e: MouseEvent | TouchEvent) => {\n const currentPageX = e instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const currentPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].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 const handleMouseup = (e: MouseEvent | TouchEvent) => {\n isMouseDown = false\n \n document.ontouchmove = null\n document.ontouchend = null\n document.onmousemove = null\n document.onmouseup = null\n\n alignmentLines.value = []\n\n const currentPageX = e instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const currentPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].pageY\n\n if (startPageX === currentPageX && startPageY === currentPageY) return\n\n slidesStore.updateSlide({ elements: elementList.value })\n addHistorySnapshot()\n }\n\n if (isTouchEvent) {\n document.ontouchmove = handleMousemove\n document.ontouchend = handleMouseup\n }\n else {\n document.onmousemove = handleMousemove\n document.onmouseup = handleMouseup\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 { 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: OperateLineHandlers) => {\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 const [c1, c2] = element.cubic || [[0, 0], [0, 0]]\n let c1X = element.left + c1[0]\n let c1Y = element.top + c1[1]\n let c2X = element.left + c2[0]\n let c2Y = element.top + c2[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 if (command === OperateLineHandlers.C) {\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 else if (command === OperateLineHandlers.C1) {\n c1X = c1X + moveX\n c1Y = c1Y + moveY\n\n if (Math.abs(c1X - startX) < sorptionRange) c1X = startX\n if (Math.abs(c1Y - startY) < sorptionRange) c1Y = startY\n if (Math.abs(c1X - endX) < sorptionRange) c1X = endX\n if (Math.abs(c1Y - endY) < sorptionRange) c1Y = endY\n }\n else if (command === OperateLineHandlers.C2) {\n c2X = c2X + moveX\n c2Y = c2Y + moveY\n\n if (Math.abs(c2X - startX) < sorptionRange) c2X = startX\n if (Math.abs(c2Y - startY) < sorptionRange) c2Y = startY\n if (Math.abs(c2X - endX) < sorptionRange) c2X = endX\n if (Math.abs(c2Y - endY) < sorptionRange) c2Y = endY\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.START || command === OperateLineHandlers.END) {\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 if (element.cubic) newEl.cubic = [[(start[0] + end[0]) / 2, (start[1] + end[1]) / 2], [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]]\n }\n else if (command === OperateLineHandlers.C) {\n if (element.broken) newEl.broken = [midX - minX, midY - minY]\n if (element.curve) newEl.curve = [midX - minX, midY - minY]\n }\n else {\n if (element.cubic) newEl.cubic = [[c1X - minX, c1Y - minY], [c2X - minX, c2Y - 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 { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport { 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: ElementAlignCommands) => {\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, createElementBlock as _createElementBlock, withDirectives as _withDirectives, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-fed8b698\"),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 onTouchstart: _cache[3] || (_cache[3] = $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-74cf8d68\"),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 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=74cf8d68&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=74cf8d68&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-74cf8d68\"]])\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-b701edc6\"),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 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=b701edc6&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=b701edc6&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-b701edc6\"]])\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-4c746203\"),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 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=4c746203&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=4c746203&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-4c746203\"]])\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-2ec16714\"),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(true), _createElementBlock(_Fragment, null, _renderList(_ctx.cornerPoint, (point) => {\n return (_openBlock(), _createElementBlock(\"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 }), 128)),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.edgePoints, (point) => {\n return (_openBlock(), _createElementBlock(\"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 }), 128))\n ], 36)\n ], 4)), [\n [_directive_click_outside, _ctx.handleClip]\n ])\n}","\nimport { computed, defineComponent, onMounted, onUnmounted, PropType, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useKeyboardStore } from '@/store'\nimport { KEYS } from '@/configs/hotkey'\nimport { ImageClipedEmitData, OperateResizeHandlers } from '@/types/edit'\nimport { ImageClipDataRange, ImageElementClip } from '@/types/slides'\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 = ref({\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 = ref({\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n })\n\n // 顶层图片容器位置大小样式(裁剪高亮区域)\n const topImgWrapperPositionStyle = computed(() => {\n const { top, left, width, height } = topImgWrapperPosition.value\n return {\n top: top + '%',\n left: left + '%',\n width: width + '%',\n height: height + '%',\n }\n })\n\n // 顶层图片位置大小样式(裁剪区域图片)\n const topImgPositionStyle = computed(() => {\n const bottomWidth = imgPosition.value.width\n const bottomHeight = imgPosition.value.height\n \n const { top, left, width, height } = topImgWrapperPosition.value\n \n return {\n left: -left * (100 / width) + '%',\n top: -top * (100 / height) + '%',\n width: bottomWidth / width * 100 + '%',\n height: bottomHeight / height * 100 + '%',\n }\n })\n\n // 初始化裁剪位置信息\n const initClipPosition = () => {\n const { left, top } = getClipDataTransformInfo()\n topImgWrapperPosition.value = {\n left: left,\n top: top,\n width: 100,\n height: 100,\n }\n \n clipWrapperPositionStyle.value = {\n top: -top + '%',\n left: -left + '%',\n }\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.value.left - left) / 100 * props.width,\n top: (topImgWrapperPosition.value.top - top) / 100 * props.height,\n width: (topImgWrapperPosition.value.width - 100) / 100 * props.width,\n height: (topImgWrapperPosition.value.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 = { ...topImgWrapperPosition.value }\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.value = {\n ...topImgWrapperPosition.value,\n left: targetLeft,\n top: targetTop,\n }\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: OperateResizeHandlers) => {\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 = { ...topImgWrapperPosition.value }\n\n const aspectRatio = topImgWrapperPosition.value.width / topImgWrapperPosition.value.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.value = {\n left: targetLeft,\n top: targetTop,\n width: targetWidth,\n height: targetHeight,\n }\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 const cornerPoint = [\n OperateResizeHandlers.LEFT_TOP,\n OperateResizeHandlers.RIGHT_TOP,\n OperateResizeHandlers.LEFT_BOTTOM,\n OperateResizeHandlers.RIGHT_BOTTOM,\n ]\n const edgePoints = [\n OperateResizeHandlers.TOP,\n OperateResizeHandlers.BOTTOM,\n OperateResizeHandlers.LEFT,\n OperateResizeHandlers.RIGHT,\n ]\n\n return {\n clipWrapperPositionStyle,\n bottomImgPositionStyle,\n topImgWrapperPositionStyle,\n topImgPositionStyle,\n rotateClassName,\n edgePoints,\n cornerPoint,\n handleClip,\n moveClipRange,\n scaleClipRange,\n }\n },\n})\n","import { render } from \"./ImageClipHandler.vue?vue&type=template&id=2ec16714&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=2ec16714&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-2ec16714\"]])\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 | TouchEvent, element: PPTImageElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[] | null>,\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 | TouchEvent) => {\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=fed8b698&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=fed8b698&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-fed8b698\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, resolveDirective as _resolveDirective, openBlock as _openBlock, createElementBlock as _createElementBlock, withDirectives as _withDirectives, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8e51e5ca\"),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((_openBlock(), _createElementBlock(\"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[3] || (_cache[3] = $event => _ctx.handleSelectElement($event)),\n onTouchstart: _cache[4] || (_cache[4] = $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 style: _normalizeStyle({\n '--textIndent': `${_ctx.elementInfo.textIndent || 0}px`,\n '--paragraphSpace': `${_ctx.elementInfo.paragraphSpace === undefined ? 5 : _ctx.elementInfo.paragraphSpace}px`,\n }),\n onUpdate: _cache[0] || (_cache[0] = value => _ctx.updateContent(value)),\n onMousedown: _cache[1] || (_cache[1] = $event => _ctx.handleSelectElement($event, false)),\n onTouchstart: _cache[2] || (_cache[2] = $event => _ctx.handleSelectElement($event))\n }, null, 8, [\"elementId\", \"defaultColor\", \"defaultFontName\", \"editable\", \"value\", \"style\"]),\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-34c0a0a8\"),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 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=34c0a0a8&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=34c0a0a8&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-34c0a0a8\"]])\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-50456657\"),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 RichTextAction {\n command: string\n value?: string\n}\n\nexport interface RichTextCommand {\n target?: string\n action: RichTextAction | RichTextAction[]\n}\n\ntype Events = {\n [EmitterEvents.RICH_TEXT_COMMAND]: 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 indent: {\n default: 0,\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\n let align = (dom as HTMLElement).getAttribute('align') || textAlign || ''\n align = /(left|right|center|justify)/.test(align) ? align : ''\n\n const indent = +((dom as HTMLElement).getAttribute('data-indent') || 0)\n \n return { align, indent }\n }\n }\n ],\n toDOM: (node: Node) => {\n const { align, indent } = node.attrs\n let style = ''\n if (align && align !== 'left') style += `text-align: ${align};`\n\n const attr = { style }\n if (indent) attr['data-indent'] = indent\n\n return ['p', attr, 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 inline: true,\n group: 'inline',\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 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\nconst link: MarkSpec = {\n attrs: {\n href: {},\n title: { default: null },\n target: { default: '_blank' },\n },\n inclusive: false,\n parseDOM: [\n {\n tag: 'a[href]',\n getAttrs: dom => {\n const href = (dom as HTMLElement).getAttribute('href')\n const title = (dom as HTMLElement).getAttribute('title')\n return { href, title }\n }\n },\n ],\n toDOM: node => ['a', node.attrs, 0],\n}\n\nexport default {\n ...marks,\n subscript,\n superscript,\n strikethrough,\n underline,\n forecolor,\n backcolor,\n fontsize,\n fontname,\n link,\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\nexport const 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","import { Schema } from 'prosemirror-model'\nimport { TextSelection, AllSelection, Transaction } from 'prosemirror-state'\nimport { EditorView } from 'prosemirror-view'\nimport { isList } from './toggleList'\n\nfunction setNodeIndentMarkup(tr: Transaction, pos: number, delta: number): Transaction {\n if (!tr.doc) return tr\n\n const node = tr.doc.nodeAt(pos)\n if (!node) return tr\n\n const minIndent = 0\n const maxIndent = 7\n\n let indent = (node.attrs.indent || 0) + delta\n if (indent < minIndent) indent = minIndent\n if (indent > maxIndent) indent = maxIndent\n\n if (indent === node.attrs.indent) return tr\n\n const nodeAttrs = {\n ...node.attrs,\n indent,\n }\n\n return tr.setNodeMarkup(pos, node.type, nodeAttrs, node.marks)\n}\n\nconst setTextIndent = (tr: Transaction, schema: Schema, delta: number): Transaction => {\n const { selection, doc } = tr\n if (!selection || !doc) return tr\n\n if (!(selection instanceof TextSelection || selection instanceof AllSelection)) return tr\n\n const { from, to } = selection\n\n doc.nodesBetween(from, to, (node, pos) => {\n const nodeType = node.type\n\n if (nodeType.name === 'paragraph' || nodeType.name === 'blockquote') {\n tr = setNodeIndentMarkup(tr, pos, delta)\n return false\n } \n else if (isList(node, schema)) return false\n return true\n })\n\n return tr\n}\n\nexport const indentCommand = (view: EditorView, delta: number) => {\n const { state } = view\n const { schema, selection } = state\n\n const tr = setTextIndent(\n state.tr.setSelection(selection),\n schema,\n delta,\n )\n if (tr.docChanged) {\n view.dispatch(tr)\n return true\n }\n\n return false\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 } from 'prosemirror-commands'\nimport { initProsemirrorEditor, createDocument } from '@/utils/prosemirror'\nimport { findNodesWithSameMark, getTextAttrs, autoSelectAll, addMark, markActive, getFontsize } from '@/utils/prosemirror/utils'\nimport emitter, { EmitterEvents, RichTextCommand } from '@/utils/emitter'\nimport { alignmentCommand } from '@/utils/prosemirror/commands/setTextAlign'\nimport { indentCommand } from '@/utils/prosemirror/commands/setTextIndent'\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 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 = ({ target, action }: RichTextCommand) => {\n if (!target && handleElementId.value !== props.elementId) return\n if (target && target !== props.elementId) return\n\n const actions = ('command' in action) ? [action] : action\n\n for (const item of actions) {\n if (item.command === 'fontname' && item.value) {\n const mark = editorView.state.schema.marks.fontname.create({ fontname: item.value })\n autoSelectAll(editorView)\n addMark(editorView, mark)\n }\n else if (item.command === 'fontsize' && item.value) {\n const mark = editorView.state.schema.marks.fontsize.create({ fontsize: item.value })\n autoSelectAll(editorView)\n addMark(editorView, mark)\n }\n else if (item.command === 'fontsize-add') {\n const step = item.value ? +item.value : 2\n autoSelectAll(editorView)\n const fontsize = getFontsize(editorView) + step + 'px'\n const mark = editorView.state.schema.marks.fontsize.create({ fontsize })\n addMark(editorView, mark)\n }\n else if (item.command === 'fontsize-reduce') {\n const step = item.value ? +item.value : 2\n autoSelectAll(editorView)\n let fontsize = getFontsize(editorView) - step\n if (fontsize < 12) fontsize = 12\n const mark = editorView.state.schema.marks.fontsize.create({ fontsize: fontsize + 'px' })\n addMark(editorView, mark)\n }\n else if (item.command === 'color' && item.value) {\n const mark = editorView.state.schema.marks.forecolor.create({ color: item.value })\n autoSelectAll(editorView)\n addMark(editorView, mark)\n }\n else if (item.command === 'backcolor' && item.value) {\n const mark = editorView.state.schema.marks.backcolor.create({ backcolor: item.value })\n autoSelectAll(editorView)\n addMark(editorView, mark)\n }\n else if (item.command === 'bold') {\n autoSelectAll(editorView)\n toggleMark(editorView.state.schema.marks.strong)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'em') {\n autoSelectAll(editorView)\n toggleMark(editorView.state.schema.marks.em)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'underline') {\n autoSelectAll(editorView)\n toggleMark(editorView.state.schema.marks.underline)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'strikethrough') {\n autoSelectAll(editorView)\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 === 'indent' && item.value) {\n indentCommand(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 autoSelectAll(editorView)\n const { $from, $to } = editorView.state.selection\n editorView.dispatch(editorView.state.tr.removeMark($from.pos, $to.pos))\n }\n else if (item.command === 'link') {\n const markType = editorView.state.schema.marks.link\n const { from, to } = editorView.state.selection\n const result = findNodesWithSameMark(editorView.state.doc, from, to, markType)\n if (result) {\n if (item.value) {\n const mark = editorView.state.schema.marks.link.create({ href: item.value, title: item.value })\n addMark(editorView, mark, { from: result.from.pos, to: result.to.pos + 1 })\n }\n else editorView.dispatch(editorView.state.tr.removeMark(result.from.pos, result.to.pos + 1, markType))\n }\n else if (markActive(editorView.state, markType)) {\n if (item.value) {\n const mark = editorView.state.schema.marks.link.create({ href: item.value, title: item.value })\n addMark(editorView, mark)\n }\n else toggleMark(markType)(editorView.state, editorView.dispatch)\n }\n else if (item.value) {\n autoSelectAll(editorView)\n toggleMark(markType, { href: item.value, title: item.value })(editorView.state, editorView.dispatch)\n }\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=50456657&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=50456657&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-50456657\"]])\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 | TouchEvent, element: PPTTextElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[] | null>,\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 | TouchEvent, 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 const checkEmptyText = () => {\n const pureText = props.elementInfo.content.replaceAll(/<[^>]+>/g, '')\n if (!pureText) slidesStore.deleteElement(props.elementInfo.id)\n }\n\n const isHandleElement = computed(() => handleElementId.value === props.elementInfo.id)\n watch(isHandleElement, () => {\n if (!isHandleElement.value) checkEmptyText()\n })\n\n return {\n elementRef,\n shadowStyle,\n updateContent,\n handleSelectElement,\n checkEmptyText,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=8e51e5ca&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=8e51e5ca&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-8e51e5ca\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, 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-81338b12\"),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\"]\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((_openBlock(), _createElementBlock(\"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[4] || (_cache[4] = $event => _ctx.handleSelectElement($event)),\n onTouchstart: _cache[5] || (_cache[5] = $event => _ctx.handleSelectElement($event)),\n onDblclick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.editable = true))\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[0]}, ${_ctx.elementInfo.height / _ctx.elementInfo.viewBox[1]}) 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 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 || _ctx.text.content }]])\n }, [\n (_ctx.editable || _ctx.text.content)\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 onBlur: _cache[1] || (_cache[1] = ($event: any) => (_ctx.checkEmptyText())),\n onMousedown: _cache[2] || (_cache[2] = $event => _ctx.handleSelectElement($event, false)),\n onTouchstart: _cache[3] || (_cache[3] = $event => _ctx.handleSelectElement($event, false))\n }, null, 8, [\"elementId\", \"defaultColor\", \"defaultFontName\", \"editable\", \"value\"]))\n : _createCommentVNode(\"\", true)\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 | TouchEvent, element: PPTShapeElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[] | null>,\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 | TouchEvent, canMove = true) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo, canMove)\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 watch(handleElementId, () => {\n if (handleElementId.value !== props.elementInfo.id) {\n if (editable.value) editable.value = false\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 const checkEmptyText = () => {\n if (!props.elementInfo.text) return\n\n const pureText = props.elementInfo.text.content.replaceAll(/<[^>]+>/g, '')\n if (!pureText) {\n slidesStore.removeElementProps({ id: props.elementInfo.id, propName: 'text' })\n addHistorySnapshot()\n }\n }\n\n return {\n shadowStyle,\n outlineWidth,\n outlineStyle,\n outlineColor,\n flipStyle,\n editable,\n text,\n handleSelectElement,\n updateText,\n checkEmptyText,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=81338b12&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=81338b12&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-81338b12\"]])\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-5f3b7dc5\"),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 onTouchstart: _cache[1] || (_cache[1] = $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 \"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 | TouchEvent, element: PPTLineElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[] | null>,\n },\n },\n setup(props) {\n const handleSelectElement = (e: MouseEvent | TouchEvent) => {\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=5f3b7dc5&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=5f3b7dc5&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-5f3b7dc5\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, resolveDirective as _resolveDirective, openBlock as _openBlock, createElementBlock as _createElementBlock, withDirectives as _withDirectives, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } 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((_openBlock(), _createElementBlock(\"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 onTouchstart: _cache[1] || (_cache[1] = $event => _ctx.handleSelectElement($event)),\n onDblclick: _cache[2] || (_cache[2] = ($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, watch } from 'vue'\nimport { upperFirst } from 'lodash'\nimport tinycolor from 'tinycolor2'\nimport Chartist, {\n IChartistLineChart,\n IChartistBarChart,\n IChartistPieChart,\n} from 'chartist'\nimport { ChartData, ChartOptions, ChartType } from '@/types/slides'\nimport { injectKeySlideScale } from '@/types/injectKey'\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 = inject(injectKeySlideScale) || 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 () => props.options,\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=79ce410e&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=79ce410e&lang=scss&scoped=true\"\nimport \"./Chart.vue?vue&type=style&index=1&id=79ce410e&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-79ce410e\"]])\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 | TouchEvent, element: PPTChartElement, canMove?: boolean) => void>,\r\n required: true,\r\n },\r\n contextmenus: {\r\n type: Function as PropType<() => ContextmenuItem[] | null>,\r\n },\r\n },\r\n setup(props) {\r\n const handleSelectElement = (e: MouseEvent | TouchEvent) => {\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=863d2c90&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=863d2c90&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-863d2c90\"]])\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-1c016f8e\"),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((_openBlock(), _createElementBlock(\"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 onTouchstart: _cache[6] || (_cache[6] = $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 ])), [\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-12f568a6\"),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 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 { CSSProperties } from 'vue'\nimport { TableCellStyle } from '@/types/slides'\n\n/**\n * 计算单元格文本样式\n * @param style 单元格文本样式原数据\n */\nexport const getTextStyle = (style?: TableCellStyle): CSSProperties => {\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-00107680\"),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 return (_openBlock(), _createElementBlock(\"div\", {\n class: \"custom-textarea\",\n ref: \"textareaRef\",\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: any) => (_ctx.handleInput())),\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=00107680&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=00107680&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-00107680\"]])\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 { nanoid } from 'nanoid'\nimport { useMainStore } from '@/store'\nimport { PPTElementOutline, TableCell, TableTheme } from '@/types/slides'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport { KEYS } from '@/configs/hotkey'\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: nanoid(10),\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: nanoid(10),\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: nanoid(10),\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: nanoid(10),\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=12f568a6&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=12f568a6&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-12f568a6\"]])\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 | TouchEvent, element: PPTTableElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[] | null>,\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 | TouchEvent) => {\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=1c016f8e&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=1c016f8e&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-1c016f8e\"]])\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-50e5c825\"),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((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n onMousedown: _cache[0] || (_cache[0] = $event => _ctx.handleSelectElement($event)),\n onTouchstart: _cache[1] || (_cache[1] = $event => _ctx.handleSelectElement($event)),\n onDblclick: _cache[2] || (_cache[2] = ($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 ], 32)), [\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 | TouchEvent, element: PPTLatexElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[] | null>,\n },\n },\n setup(props) {\n const handleSelectElement = (e: MouseEvent | TouchEvent) => {\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=50e5c825&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=50e5c825&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-50e5c825\"]])\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((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n onMousedown: _cache[2] || (_cache[2] = $event => _ctx.handleSelectElement($event, false)),\n onTouchstart: _cache[3] || (_cache[3] = $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 onTouchstart: _cache[1] || (_cache[1] = $event => _ctx.handleSelectElement($event))\n }, null, 34)\n }), 64))\n ], 32)), [\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-fcb929f4\"),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: any) => (_ctx.handleMousedownVolumeBar())),\n onTouchstart: _cache[12] || (_cache[12] = ($event: any) => (_ctx.handleMousedownVolumeBar())),\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: any) => (_ctx.handleMousedownPlayBar())),\n onTouchstart: _cache[18] || (_cache[18] = ($event: any) => (_ctx.handleMousedownPlayBar())),\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=fcb929f4&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=fcb929f4&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-fcb929f4\"]])\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 | TouchEvent, element: PPTVideoElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[] | null>,\n },\n },\n setup(props) {\n const { canvasScale } = storeToRefs(useMainStore())\n\n const handleSelectElement = (e: MouseEvent | TouchEvent, 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=454973e4&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=454973e4&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-454973e4\"]])\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, createElementBlock as _createElementBlock, withDirectives as _withDirectives, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } 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((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n onMousedown: _cache[1] || (_cache[1] = $event => _ctx.handleSelectElement($event)),\n onTouchstart: _cache[2] || (_cache[2] = $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 ], 32)), [\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-5530a7f2\"),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: any) => (_ctx.handleMousedownVolumeBar())),\n onTouchstart: _cache[9] || (_cache[9] = ($event: any) => (_ctx.handleMousedownVolumeBar())),\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: any) => (_ctx.handleMousedownPlayBar())),\n onTouchstart: _cache[12] || (_cache[12] = ($event: any) => (_ctx.handleMousedownPlayBar())),\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=5530a7f2&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=5530a7f2&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-5530a7f2\"]])\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 | TouchEvent, element: PPTAudioElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[] | null>,\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 | TouchEvent) => {\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=40b7d6a8&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=40b7d6a8&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-40b7d6a8\"]])\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 | TouchEvent, 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=77b2166e&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-${_ctx.quadrant}`),\n style: _normalizeStyle({\n top: _ctx.top + 'px',\n left: _ctx.left + 'px',\n width: _ctx.width + 'px',\n height: _ctx.height + 'px',\n })\n }, null, 6))\n}","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\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=25d4b5f8&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=25d4b5f8&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-25d4b5f8\"]])\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 { 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 canvasScale: {\n type: Number,\n required: true,\n },\n },\n setup(props) {\n // 吸附对齐线的位置\n const left = computed(() => props.axis.x * props.canvasScale + 'px')\n const top = computed(() => props.axis.y * props.canvasScale + 'px')\n\n // 吸附对齐线的长度\n const sizeStyle = computed(() => {\n if (props.type === 'vertical') return { height: props.length * props.canvasScale + 'px' }\n return { width: props.length * props.canvasScale + 'px' }\n })\n\n return {\n left,\n top,\n sizeStyle,\n }\n },\n})\n","import { render } from \"./AlignmentLine.vue?vue&type=template&id=7017c6bc&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=7017c6bc&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-7017c6bc\"]])\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, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6cc1801a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"ruler\" }\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: \"h\",\n style: _normalizeStyle({\n width: _ctx.viewportStyles.width * _ctx.canvasScale + 'px',\n left: _ctx.viewportStyles.left + 'px',\n })\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(10, (marker) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"ruler-marker-100\", { 'hide': _ctx.markerSize < 36, 'omit': _ctx.markerSize < 72 }]),\n key: `marker-100-${marker}`\n }, [\n _createElementVNode(\"span\", null, _toDisplayString(marker * 100), 1)\n ], 2)\n }), 64))\n ], 4),\n _createElementVNode(\"div\", {\n class: \"v\",\n style: _normalizeStyle({\n height: _ctx.viewportStyles.height * _ctx.canvasScale + 'px',\n top: _ctx.viewportStyles.top + 'px',\n })\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(10, (marker) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"ruler-marker-100\", { 'hide': _ctx.markerSize < 36, 'omit': _ctx.markerSize < 72 }]),\n key: marker,\n style: _normalizeStyle({ height: _ctx.markerSize + 'px' })\n }, [\n _createElementVNode(\"span\", null, _toDisplayString(marker * 100), 1)\n ], 6)\n }), 64))\n ], 4)\n ]))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\n\ninterface ViewportStyles {\n top: number\n left: number\n width: number\n height: number\n}\n\nexport default defineComponent({\n props: {\n viewportStyles: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const { canvasScale } = storeToRefs(useMainStore())\n\n const markerSize = computed(() => {\n return props.viewportStyles.width * canvasScale.value / 10\n })\n\n return {\n canvasScale,\n markerSize,\n }\n },\n})\n","import { render } from \"./Ruler.vue?vue&type=template&id=6cc1801a&scoped=true&ts=true\"\nimport script from \"./Ruler.vue?vue&type=script&lang=ts\"\nexport * from \"./Ruler.vue?vue&type=script&lang=ts\"\n\nimport \"./Ruler.vue?vue&type=style&index=0&id=6cc1801a&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-6cc1801a\"]])\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-15b60d90\"),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\": \"2\"\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n ], 6))\n : _createCommentVNode(\"\", true)\n ], 544))\n}","\nimport { computed, defineComponent, onMounted, 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 = ref({\n x: 0,\n y: 0,\n })\n onMounted(() => {\n if (!selectionRef.value) return\n const { x, y } = selectionRef.value.getBoundingClientRect()\n offset.value = { x, 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.value.x + 'px',\n top: minY - offset.value.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=15b60d90&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=15b60d90&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-15b60d90\"]])\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.range.minX * _ctx.canvasScale + 'px',\n top: _ctx.range.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, _ctx.range, 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 { OperateResizeHandlers } 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=c9559332&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=c9559332&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-c9559332\"]])\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', _ctx.type, { 'wide': _ctx.isWide }])\n }, null, 2))\n}","\nimport { defineComponent, PropType } from 'vue'\nimport { OperateBorderLines } from '@/types/edit'\n\nexport default defineComponent({\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=1430bedc&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=1430bedc&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-1430bedc\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, ref, PropType, watchEffect } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport { getElementListRange } from '@/utils/element'\nimport { OperateResizeHandlers, 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: OperateResizeHandlers) => 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 = ref({\n minX: 0,\n maxX: 0,\n minY: 0,\n maxY: 0,\n })\n\n // 根据多选元素整体在画布中的范围,计算边框线和缩放点的位置信息\n const width = computed(() => (range.value.maxX - range.value.minX) * canvasScale.value)\n const height = computed(() => (range.value.maxY - range.value.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.value = { minX, maxX, minY, 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 range,\n canvasScale,\n borderLines,\n disableResize,\n resizeHandlers,\n }\n },\n})\n","import { render } from \"./MultiSelectOperate.vue?vue&type=template&id=55c8df22&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=55c8df22&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-55c8df22\"]])\n\nexport default __exports__","import { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, 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-3719d97c\"),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.rotate}deg)`,\r\n transformOrigin: `${_ctx.elementInfo.width * _ctx.canvasScale / 2}px ${_ctx.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.elementIndexListInAnimation.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.elementIndexListInAnimation, (index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"index-item\",\n key: index\n }, _toDisplayString(index + 1), 1))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.isActive && _ctx.elementInfo.link)\n ? (_openBlock(), _createBlock(_component_LinkHandler, {\n key: 2,\n elementInfo: _ctx.elementInfo,\n link: _ctx.elementInfo.link,\n openLinkDialog: _ctx.openLinkDialog,\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, null, 8, [\"elementInfo\", \"link\", \"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 { OperateResizeHandlers } 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: OperateResizeHandlers) => 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=db6d5ba6&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=db6d5ba6&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-db6d5ba6\"]])\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 { OperateResizeHandlers } 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: OperateResizeHandlers) => 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=115c48f0&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 { OperateResizeHandlers } 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: OperateResizeHandlers) => 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=08e569b7&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, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-60f9f1f7\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"line-element-operate\" }\nconst _hoisted_2 = [\"width\", \"height\", \"stroke\"]\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = [\"x1\", \"y1\", \"x2\", \"y2\"]\nconst _hoisted_5 = [\"x1\", \"y1\", \"x2\", \"y2\"]\nconst _hoisted_6 = [\"x1\", \"y1\", \"x2\", \"y2\"]\nconst _hoisted_7 = [\"x1\", \"y1\", \"x2\", \"y2\"]\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(), _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.handler,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.dragLineElement($event, _ctx.elementInfo, point.handler), [\"stop\"])\n }, null, 8, [\"style\", \"onMousedown\"]))\n }), 128)),\n (_openBlock(), _createElementBlock(\"svg\", {\n width: _ctx.svgWidth || 1,\n height: _ctx.svgHeight || 1,\n stroke: _ctx.elementInfo.color,\n overflow: \"visible\",\n style: _normalizeStyle({ transform: `scale(${_ctx.canvasScale})` })\n }, [\n (_ctx.elementInfo.curve)\n ? (_openBlock(), _createElementBlock(\"g\", _hoisted_3, [\n _createElementVNode(\"line\", {\n class: \"anchor-line\",\n x1: _ctx.elementInfo.start[0],\n y1: _ctx.elementInfo.start[1],\n x2: _ctx.elementInfo.curve[0],\n y2: _ctx.elementInfo.curve[1]\n }, null, 8, _hoisted_4),\n _createElementVNode(\"line\", {\n class: \"anchor-line\",\n x1: _ctx.elementInfo.end[0],\n y1: _ctx.elementInfo.end[1],\n x2: _ctx.elementInfo.curve[0],\n y2: _ctx.elementInfo.curve[1]\n }, null, 8, _hoisted_5)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.elementInfo.cubic)\n ? (_openBlock(true), _createElementBlock(_Fragment, { key: 1 }, _renderList(_ctx.elementInfo.cubic, (item, index) => {\n return (_openBlock(), _createElementBlock(\"g\", { key: index }, [\n (index === 0)\n ? (_openBlock(), _createElementBlock(\"line\", {\n key: 0,\n class: \"anchor-line\",\n x1: _ctx.elementInfo.start[0],\n y1: _ctx.elementInfo.start[1],\n x2: item[0],\n y2: item[1]\n }, null, 8, _hoisted_6))\n : _createCommentVNode(\"\", true),\n (index === 1)\n ? (_openBlock(), _createElementBlock(\"line\", {\n key: 1,\n class: \"anchor-line\",\n x1: _ctx.elementInfo.end[0],\n y1: _ctx.elementInfo.end[1],\n x2: item[0],\n y2: item[1]\n }, null, 8, _hoisted_7))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n : _createCommentVNode(\"\", true)\n ], 12, _hoisted_2))\n ], 64))\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 { OperateLineHandlers } from '@/types/edit'\n\nimport ResizeHandler from './ResizeHandler.vue'\n\nexport default defineComponent({\n name: 'line-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: OperateLineHandlers) => void>,\n required: true,\n },\n },\n setup(props) {\n const { canvasScale } = storeToRefs(useMainStore())\n\n const svgWidth = computed(() => Math.max(props.elementInfo.start[0], props.elementInfo.end[0]))\n const svgHeight = computed(() => Math.max(props.elementInfo.start[1], props.elementInfo.end[1]))\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 ctrlHandler = (props.elementInfo.curve || props.elementInfo.broken) as [number, number]\n\n handlers.push({\n handler: OperateLineHandlers.C,\n style: {\n left: ctrlHandler[0] * canvasScale.value + 'px',\n top: ctrlHandler[1] * canvasScale.value + 'px',\n }\n })\n }\n else if (props.elementInfo.cubic) {\n const [ctrlHandler1, ctrlHandler2] = props.elementInfo.cubic\n handlers.push({\n handler: OperateLineHandlers.C1,\n style: {\n left: ctrlHandler1[0] * canvasScale.value + 'px',\n top: ctrlHandler1[1] * canvasScale.value + 'px',\n }\n })\n handlers.push({\n handler: OperateLineHandlers.C2,\n style: {\n left: ctrlHandler2[0] * canvasScale.value + 'px',\n top: ctrlHandler2[1] * canvasScale.value + 'px',\n }\n })\n }\n\n return handlers\n })\n\n return {\n svgWidth,\n svgHeight,\n canvasScale,\n resizeHandlers,\n }\n },\n})\n","import { render } from \"./LineElementOperate.vue?vue&type=template&id=60f9f1f7&scoped=true&ts=true\"\nimport script from \"./LineElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./LineElementOperate.vue?vue&type=script&lang=ts\"\n\nimport \"./LineElementOperate.vue?vue&type=style&index=0&id=60f9f1f7&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-60f9f1f7\"]])\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 { OperateResizeHandlers } 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: OperateResizeHandlers) => 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=45c5e7da&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 { OperateResizeHandlers } 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: OperateResizeHandlers) => 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=474b1c2e&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-2b77dbb0\"),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.height * _ctx.canvasScale + 10 + 'px' })\n }, [\n (_ctx.link.type === 'web')\n ? (_openBlock(), _createElementBlock(\"a\", {\n key: 0,\n class: \"link\",\n href: _ctx.link.target,\n target: \"_blank\"\n }, _toDisplayString(_ctx.link.target), 9, _hoisted_1))\n : (_openBlock(), _createElementBlock(\"a\", _hoisted_2, \"幻灯片页面 \" + _toDisplayString(_ctx.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 { computed, defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { PPTElement, PPTElementLink } 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 link: {\n type: Object as PropType,\n required: true,\n },\n openLinkDialog: {\n type: Function as PropType<() => void>,\n required: true,\n },\n },\n setup(props) {\n const { canvasScale } = storeToRefs(useMainStore())\n\n const { removeLink } = useLink()\n\n const height = computed(() => props.elementInfo.type === 'line' ? 0 : props.elementInfo.height)\n\n return {\n canvasScale,\n height,\n removeLink,\n }\n },\n})\n","import { render } from \"./LinkHandler.vue?vue&type=template&id=2b77dbb0&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=2b77dbb0&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-2b77dbb0\"]])\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, PPTLineElement, PPTVideoElement, PPTAudioElement } from '@/types/slides'\r\nimport { OperateLineHandlers, OperateResizeHandlers } 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: Exclude) => void>,\r\n required: true,\r\n },\r\n scaleElement: {\r\n type: Function as PropType<(e: MouseEvent, element: Exclude, command: OperateResizeHandlers) => void>,\r\n required: true,\r\n },\r\n dragLineElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTLineElement, command: OperateLineHandlers) => 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 { formatedAnimations } = 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 elementIndexListInAnimation = computed(() => {\r\n const indexList = []\r\n for (let i = 0; i < formatedAnimations.value.length; i++) {\r\n const elIds = formatedAnimations.value[i].animations.map(item => item.elId)\r\n if (elIds.includes(props.elementInfo.id)) indexList.push(i)\r\n }\r\n return indexList\r\n })\r\n\r\n const rotate = computed(() => 'rotate' in props.elementInfo ? props.elementInfo.rotate : 0)\r\n const height = computed(() => 'height' in props.elementInfo ? props.elementInfo.height : 0)\r\n\r\n return {\r\n currentOperateComponent,\r\n canvasScale,\r\n toolbarState,\r\n elementIndexListInAnimation,\r\n rotate,\r\n height,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=3719d97c&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=3719d97c&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-3719d97c\"]])\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-6e74620a\"),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-025539cf\"),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, 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-81197444\"),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 style: _normalizeStyle(_ctx.cssVar),\n innerHTML: _ctx.elementInfo.content\n }, null, 12, _hoisted_1)\n ], 4)\n ], 4)\n ], 4))\n}","\nimport { defineComponent, PropType, computed, StyleValue } 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 const cssVar = computed(() => ({\n '--textIndent': `${props.elementInfo.textIndent || 0}px`,\n '--paragraphSpace': `${props.elementInfo.paragraphSpace === undefined ? 5 : props.elementInfo.paragraphSpace}px`,\n } as StyleValue))\n\n return {\n shadowStyle,\n cssVar,\n }\n },\n})\n","import { render } from \"./BaseTextElement.vue?vue&type=template&id=81197444&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=81197444&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-81197444\"]])\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-728513ea\"),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[0]}, ${_ctx.elementInfo.height / _ctx.elementInfo.viewBox[1]}) 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 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=728513ea&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=728513ea&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-728513ea\"]])\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-2cd24911\"),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: \"base-element-line\",\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 \"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: 'base-element-line',\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=2cd24911&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=2cd24911&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-2cd24911\"]])\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_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 width: _ctx.elementInfo.width * _ctx.zoom,\n height: _ctx.elementInfo.height * _ctx.zoom,\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 style: _normalizeStyle({ zoom: 1 / _ctx.zoom })\n }, null, 8, [\"width\", \"height\", \"type\", \"data\", \"options\", \"themeColor\", \"gridColor\", \"legends\", \"legend\", \"style\"])\n ], 4)\n ], 4)\n ], 4))\n}","\r\nimport { computed, defineComponent, inject, PropType, ref } from 'vue'\r\nimport { PPTChartElement } from '@/types/slides'\r\nimport { injectKeySlideScale } from '@/types/injectKey'\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 },\r\n setup() {\r\n const slideScale = inject(injectKeySlideScale) || ref(1)\r\n\r\n const needScaleSize = computed(() => slideScale.value < 1)\r\n const zoom = computed(() => needScaleSize.value ? 1 / slideScale.value : 1)\r\n\r\n return {\r\n needScaleSize,\r\n zoom,\r\n }\r\n },\r\n})\r\n","import { render } from \"./BaseChartElement.vue?vue&type=template&id=342d4bac&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=342d4bac&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-342d4bac\"]])\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 { injectKeySlideScale } from '@/types/injectKey'\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(injectKeySlideScale, 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=025539cf&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=025539cf&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-025539cf\"]])\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\ntype TypeKey = 'web' | 'slide'\ninterface TabItem {\n key: TypeKey\n label: string\n}\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')\n const address = ref('')\n const slideId = ref('')\n\n slideId.value = slides.value[0].id\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: TabItem[] = [\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=6e74620a&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=6e74620a&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-6e74620a\"]])\n\nexport default __exports__","\nimport { defineComponent, onMounted, 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 { injectKeySlideScale } from '@/types/injectKey'\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 Ruler from './Ruler.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 Ruler,\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 showRuler,\n creatingElement,\n canvasScale,\n } = storeToRefs(mainStore)\n const { currentSlide } = storeToRefs(useSlidesStore())\n const { ctrlKeyState, spaceKeyState } = 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 { dragViewport, viewportStyles } = useViewportSize(canvasRef)\n\n useDropImageOrText(canvasRef)\n\n const { mouseSelection, mouseSelectionVisible, mouseSelectionQuadrant, updateMouseSelection } = useMouseSelection(elementList, viewportRef)\n\n const { dragElement } = useDragElement(elementList, alignmentLines, canvasScale)\n const { dragLineElement } = useDragLineElement(elementList)\n const { selectElement } = useSelectElement(elementList, dragElement)\n const { scaleElement, scaleMultiElement } = useScaleElement(elementList, alignmentLines, canvasScale)\n const { rotateElement } = useRotateElement(elementList, viewportRef)\n\n const { selectAllElement } = useSelectAllElement()\n const { deleteAllElements } = useDeleteElement()\n const { pasteElement } = useCopyAndPasteElement()\n const { enterScreeningFromStart } = useScreening()\n const { updateSlideIndex } = useSlideHandler()\n\n // 组件渲染时,如果存在元素焦点,需要清除\n // 这种情况存在于:有焦点元素的情况下进入了放映模式,再退出时,需要清除原先的焦点(因为可能已经切换了页面)\n onMounted(() => {\n if (activeElementIdList.value.length) mainStore.setActiveElementIdList([])\n })\n\n // 点击画布的空白区域:清空焦点元素、设置画布焦点、清除文字选区\n const handleClickBlankArea = (e: MouseEvent) => {\n mainStore.setActiveElementIdList([])\n\n if (!spaceKeyState.value) updateMouseSelection(e)\n else dragViewport(e)\n\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 toggleRuler = () => {\n mainStore.setRulerState(!showRuler.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 subText: showRuler.value ? '√' : '',\n handler: toggleRuler,\n },\n {\n text: '重置当前页',\n handler: deleteAllElements,\n },\n { divider: true },\n {\n text: '幻灯片放映',\n subText: 'F5',\n handler: enterScreeningFromStart,\n },\n ]\n }\n\n provide(injectKeySlideScale, canvasScale)\n\n return {\n elementList,\n activeElementIdList,\n handleElementId,\n activeGroupElementId,\n canvasRef,\n viewportRef,\n viewportStyles,\n canvasScale,\n mouseSelection,\n mouseSelectionVisible,\n mouseSelectionQuadrant,\n creatingElement,\n alignmentLines,\n linkDialogVisible,\n spaceKeyState,\n showRuler,\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=743d966c&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=743d966c&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-743d966c\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, normalizeClass as _normalizeClass, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-e9ddaac8\"),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: \"viewport-size-preset\" }\nconst _hoisted_6 = [\"onClick\"]\nconst _hoisted_7 = { 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: _normalizeClass([\"handler-item\", { 'active': _ctx.creatingElement?.type === 'text' }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.drawText()))\n }, null, 8, [\"class\"])\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, {\n class: _normalizeClass([\"handler-item\", { 'active': _ctx.creatingElement?.type === 'shape' }])\n }, null, 8, [\"class\"])\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, {\n class: _normalizeClass([\"handler-item\", { 'active': _ctx.creatingElement?.type === 'line' }])\n }, null, 8, [\"class\"])\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 _createVNode(_component_Popover, {\n trigger: \"click\",\n visible: _ctx.canvasScaleVisible,\n \"onUpdate:visible\": _cache[19] || (_cache[19] = ($event: any) => ((_ctx.canvasScaleVisible) = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_5, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.canvasScalePresetList, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"preset-item\",\n key: item,\n onClick: ($event: any) => (_ctx.applyCanvasPresetScale(item))\n }, _toDisplayString(item) + \"%\", 9, _hoisted_6))\n }), 128))\n ])\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_ctx.canvasScalePercentage), 1)\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_component_IconPlus, {\n class: \"handler-item viewport-size\",\n onClick: _cache[20] || (_cache[20] = ($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[21] || (_cache[21] = ($event: any) => (_ctx.resetCanvas()))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _createVNode(_component_Modal, {\n visible: _ctx.latexEditorVisible,\n \"onUpdate:visible\": _cache[24] || (_cache[24] = ($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[22] || (_cache[22] = ($event: any) => (_ctx.latexEditorVisible = false)),\n onUpdate: _cache[23] || (_cache[23] = 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, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f3479f82\"),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 = [\"fill\", \"stroke\", \"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[0]}, ${18 / shape.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n class: _normalizeClass([\"shape-path\", { 'outlined': shape.outlined }]),\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n fill: shape.outlined ? '#999' : 'transparent',\n stroke: shape.outlined ? 'transparent' : '#999',\n \"stroke-width\": \"2\",\n d: shape.path\n }, null, 10, _hoisted_7)\n ], 8, _hoisted_6)\n ]))\n ], 8, _hoisted_4)\n ]))\n }), 128))\n ])\n ]))\n }), 128))\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=f3479f82&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=f3479f82&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-f3479f82\"]])\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-7fa1d412\"),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, i) => {\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, j) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"line-item\",\n key: j\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-${i}-${j}`,\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-${i}-${j}`,\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 \"marker-start\": line.points[0] ? `url(#${`preset-line-${i}-${j}`}-${line.points[0]}-start)` : '',\n \"marker-end\": line.points[1] ? `url(#${`preset-line-${i}-${j}`}-${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 isCubic?: 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 { path: 'M 0 0 C 20 0 0 20 20 20', style: 'solid', points: ['', 'arrow'], isCubic: 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=7fa1d412&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=7fa1d412&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-7fa1d412\"]])\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-64ca421e\"),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 const _component_IconChartHistogramOne = _resolveComponent(\"IconChartHistogramOne\")!\n const _component_IconChartLineArea = _resolveComponent(\"IconChartLineArea\")!\n const _component_IconChartRing = _resolveComponent(\"IconChartRing\")!\n const _component_IconChartScatter = _resolveComponent(\"IconChartScatter\")!\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 : (chart === 'horizontalBar')\n ? (_openBlock(), _createBlock(_component_IconChartHistogramOne, {\n key: 3,\n size: \"24\"\n }))\n : (chart === 'area')\n ? (_openBlock(), _createBlock(_component_IconChartLineArea, {\n key: 4,\n size: \"24\"\n }))\n : (chart === 'ring')\n ? (_openBlock(), _createBlock(_component_IconChartRing, {\n key: 5,\n size: \"24\"\n }))\n : (chart === 'scatter')\n ? (_openBlock(), _createBlock(_component_IconChartScatter, {\n key: 6,\n size: \"24\"\n }))\n : _createCommentVNode(\"\", true)\n ], 8, _hoisted_2)\n ]))\n }), 128))\n ]))\n}","\nimport { PresetChartType } from '@/types/slides'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n name: 'chart-pool',\n emits: ['select'],\n setup(props, { emit }) {\n const chartList: PresetChartType[] = ['bar', 'horizontalBar', 'line', 'area', 'scatter', 'pie', 'ring']\n\n const selectChart = (chart: PresetChartType) => {\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=64ca421e&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=64ca421e&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-64ca421e\"]])\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-310c58ae\"),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\ntype TypeKey = 'video' | 'audio'\ninterface TabItem {\n key: TypeKey\n label: string\n}\n\nexport default defineComponent({\n name: 'media-input',\n emits: ['insertVideo', 'insertAudio', 'close'],\n setup(props, { emit }) {\n const type = ref('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: TabItem[] = [\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=310c58ae&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=310c58ae&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-310c58ae\"]])\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-0c89cf75\"),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, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-cf0ca630\"),n=n(),_popScopeId(),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=cf0ca630&scoped=true&ts=true\"\nimport script from \"./FormulaContent.vue?vue&type=script&lang=ts\"\nexport * from \"./FormulaContent.vue?vue&type=script&lang=ts\"\n\nimport \"./FormulaContent.vue?vue&type=style&index=0&id=cf0ca630&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-cf0ca630\"]])\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\ninterface Tab {\n label: string\n value: 'symbol' | 'formula'\n}\n\nconst tabs: Tab[] = [\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' | 'formula'>('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=0c89cf75&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=0c89cf75&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-0c89cf75\"]])\n\nexport default __exports__","\nimport { defineComponent, 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 { creatingElement } = storeToRefs(mainStore)\n const { canUndo, canRedo } = storeToRefs(useSnapshotStore())\n\n const { redo, undo } = useHistorySnapshot()\n\n const {\n scaleCanvas,\n setCanvasScalePercentage,\n resetCanvas,\n canvasScalePercentage,\n } = useScaleCanvas()\n \n const canvasScalePresetList = [200, 150, 100, 80, 50]\n const canvasScaleVisible = ref(false)\n\n const applyCanvasPresetScale = (value: number) => {\n setCanvasScalePercentage(value)\n canvasScaleVisible.value = false\n }\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 resetCanvas,\n canvasScalePercentage,\n canvasScaleVisible,\n canvasScalePresetList,\n applyCanvasPresetScale,\n canUndo,\n canRedo,\n redo,\n undo,\n insertImageElement,\n shapePoolVisible,\n linePoolVisible,\n chartPoolVisible,\n tableGeneratorVisible,\n mediaInputVisible,\n latexEditorVisible,\n creatingElement,\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=e9ddaac8&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=e9ddaac8&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-e9ddaac8\"]])\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, openBlock as _openBlock, createElementBlock as _createElementBlock, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-17d8eefc\"),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((_openBlock(), _createElementBlock(\"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 ], 32)), [\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, enterScreeningFromStart } = 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: 'F5',\n handler: enterScreeningFromStart,\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: 'Shift + F5',\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=17d8eefc&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=17d8eefc&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-17d8eefc\"]])\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, resolveDynamicComponent as _resolveDynamicComponent, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-017ca85e\"),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 { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"element-style-panel\" }\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(), _createBlock(_resolveDynamicComponent(_ctx.currentPanelComponent)))\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-eafe485c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"text-style-panel\" }\nconst _hoisted_2 = { class: \"preset-style\" }\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"+\")\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\"-\")\nconst _hoisted_6 = { class: \"link-popover\" }\nconst _hoisted_7 = { class: \"btns\" }\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\"移除\")\nconst _hoisted_9 = /*#__PURE__*/_createTextVNode(\"确认\")\nconst _hoisted_10 = { class: \"row\" }\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"行间距:\", -1))\nconst _hoisted_12 = { class: \"row\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"段间距:\", -1))\nconst _hoisted_14 = { class: \"row\" }\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"字间距:\", -1))\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))\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_IconHighLight = _resolveComponent(\"IconHighLight\")!\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_IconFormat = _resolveComponent(\"IconFormat\")!\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_Input = _resolveComponent(\"Input\")!\n const _component_IconLinkOne = _resolveComponent(\"IconLinkOne\")!\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_IconIndentLeft = _resolveComponent(\"IconIndentLeft\")!\n const _component_IconIndentRight = _resolveComponent(\"IconIndentRight\")!\n const _component_IconRowHeight = _resolveComponent(\"IconRowHeight\")!\n const _component_IconVerticalSpacingBetweenItems = _resolveComponent(\"IconVerticalSpacingBetweenItems\")!\n const _component_IconFullwidth = _resolveComponent(\"IconFullwidth\")!\n const _component_ColorButton = _resolveComponent(\"ColorButton\")!\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 as string))\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 as string))\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\":\"3\"}\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\":\"3\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconHighLight),\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_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"增大字号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"font-size-btn\",\n style: {\"flex\":\"2\"},\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.emitRichTextCommand('fontsize-add')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFontSize),\n _hoisted_4\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 class: \"font-size-btn\",\n style: {\"flex\":\"2\"},\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.emitRichTextCommand('fontsize-reduce')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFontSize),\n _hoisted_5\n ]),\n _: 1\n })\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.bold,\n onClick: _cache[6] || (_cache[6] = ($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[7] || (_cache[7] = ($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[8] || (_cache[8] = ($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[9] || (_cache[9] = ($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 _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[10] || (_cache[10] = ($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_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[11] || (_cache[11] = ($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[12] || (_cache[12] = ($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[13] || (_cache[13] = ($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[14] || (_cache[14] = ($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_Popover, {\n placement: \"bottomRight\",\n trigger: \"click\",\n visible: _ctx.linkPopoverVisible,\n \"onUpdate:visible\": _cache[19] || (_cache[19] = ($event: any) => ((_ctx.linkPopoverVisible) = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_component_Input, {\n value: _ctx.link,\n \"onUpdate:value\": _cache[15] || (_cache[15] = ($event: any) => ((_ctx.link) = $event)),\n placeholder: \"请输入超链接\"\n }, null, 8, [\"value\"]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(_component_Button, {\n size: \"small\",\n disabled: !_ctx.richTextAttrs.link,\n onClick: _cache[16] || (_cache[16] = ($event: any) => (_ctx.updateLink())),\n style: {\"margin-right\":\"5px\"}\n }, {\n default: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n }, 8, [\"disabled\"]),\n _createVNode(_component_Button, {\n size: \"small\",\n type: \"primary\",\n onClick: _cache[17] || (_cache[17] = ($event: any) => (_ctx.updateLink(_ctx.link)))\n }, {\n default: _withCtx(() => [\n _hoisted_9\n ]),\n _: 1\n })\n ])\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: !!_ctx.richTextAttrs.link,\n onClick: _cache[18] || (_cache[18] = ($event: any) => (_ctx.openLinkPopover()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconLinkOne)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"visible\"])\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[20] || (_cache[20] = 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[21] || (_cache[21] = ($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[22] || (_cache[22] = ($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_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[23] || (_cache[23] = ($event: any) => (_ctx.emitRichTextCommand('indent', '-1')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconIndentLeft)\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[24] || (_cache[24] = ($event: any) => (_ctx.emitRichTextCommand('indent', '+1')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconIndentRight)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.lineHeight,\n onChange: _cache[25] || (_cache[25] = value => _ctx.updateLineHeight(value as number))\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_12, [\n _hoisted_13,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.paragraphSpace,\n onChange: _cache[26] || (_cache[26] = value => _ctx.updateParagraphSpace(value as number))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconVerticalSpacingBetweenItems)\n ]),\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.paragraphSpaceOptions, (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 _createElementVNode(\"div\", _hoisted_14, [\n _hoisted_15,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.wordSpace,\n onChange: _cache[27] || (_cache[27] = value => _ctx.updateWordSpace(value as number))\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 _createElementVNode(\"div\", _hoisted_16, [\n _hoisted_17,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.textIndent,\n onChange: _cache[28] || (_cache[28] = value => _ctx.updateTextIndent(value as number))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconIndentRight)\n ]),\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.textIndentOptions, (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 _createElementVNode(\"div\", _hoisted_18, [\n _hoisted_19,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.fill,\n \"onUpdate:modelValue\": _cache[29] || (_cache[29] = 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 _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-5c7dbabc\"),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 as number))\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=5c7dbabc&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=5c7dbabc&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-5c7dbabc\"]])\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-a6510a8a\"),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 as boolean))\n }, null, 8, [\"checked\"])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.hasOutline && _ctx.outline)\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 as 'dashed' | 'solid' }))\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 || '#000',\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 as number })),\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, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-204d666d\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"color-block\" }\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\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"content\",\n style: _normalizeStyle({ backgroundColor: _ctx.color })\n }, null, 4)\n ]),\n _createVNode(_component_IconPlatte, { class: \"color-btn-icon\" })\n ]),\n _: 1\n }))\n}","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\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=204d666d&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=204d666d&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-204d666d\"]])\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=a6510a8a&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=a6510a8a&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-a6510a8a\"]])\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-6bafb099\"),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 as boolean))\n }, null, 8, [\"checked\"])\n ])\n ]),\n (_ctx.hasShadow && _ctx.shadow)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_5, [\n _hoisted_6,\n _createVNode(_component_Slider, {\n class: \"slider\",\n min: -10,\n max: 10,\n step: 1,\n value: _ctx.shadow.h,\n onChange: _cache[1] || (_cache[1] = value => _ctx.updateShadow({ h: value as number }))\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _hoisted_8,\n _createVNode(_component_Slider, {\n class: \"slider\",\n min: -10,\n max: 10,\n step: 1,\n value: _ctx.shadow.v,\n onChange: _cache[2] || (_cache[2] = value => _ctx.updateShadow({ v: value as number }))\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 as number }))\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=6bafb099&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=6bafb099&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-6bafb099\"]])\n\nexport default __exports__","\nimport { defineComponent, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTTextElement } from '@/types/slides'\nimport emitter, { EmitterEvents, RichTextAction } from '@/utils/emitter'\nimport { WEB_FONTS } from '@/configs/font'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport { message } from 'ant-design-vue'\n\nimport ElementOpacity from '../common/ElementOpacity.vue'\nimport ElementOutline from '../common/ElementOutline.vue'\nimport ElementShadow from '../common/ElementShadow.vue'\nimport ColorButton from '../common/ColorButton.vue'\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 ColorButton,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement, handleElementId, richTextAttrs, availableFonts } = storeToRefs(useMainStore())\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateElement = (props: Partial) => {\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n }\n\n const fill = ref('#000')\n const lineHeight = ref()\n const wordSpace = ref()\n const textIndent = ref()\n const paragraphSpace = ref()\n\n watch(handleElement, () => {\n if (!handleElement.value || handleElement.value.type !== 'text') return\n\n fill.value = handleElement.value.fill || '#fff'\n lineHeight.value = handleElement.value.lineHeight || 1.5\n wordSpace.value = handleElement.value.wordSpace || 0\n textIndent.value = handleElement.value.textIndent || 0\n paragraphSpace.value = handleElement.value.paragraphSpace === undefined ? 5 : handleElement.value.paragraphSpace\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 const textIndentOptions = [0, 48, 96, 144, 192, 240, 288, 336]\n const paragraphSpaceOptions = [0, 5, 10, 15, 20, 25, 30, 40, 50, 80]\n\n // 设置行高\n const updateLineHeight = (value: number) => {\n updateElement({ lineHeight: value })\n }\n\n // 设置段间距\n const updateParagraphSpace = (value: number) => {\n updateElement({ paragraphSpace: value })\n }\n\n // 设置字间距\n const updateWordSpace = (value: number) => {\n updateElement({ wordSpace: value })\n }\n\n // 设置首行缩进\n const updateTextIndent = (value: number) => {\n updateElement({ textIndent: value })\n }\n\n // 设置文本框填充\n const updateFill = (value: string) => {\n updateElement({ fill: value })\n }\n\n // 发射富文本设置命令\n const emitRichTextCommand = (command: string, value?: string) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { action: { command, value } })\n }\n\n // 发射富文本设置命令(批量)\n const emitBatchRichTextCommand = (action: RichTextAction[]) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { action })\n }\n\n // 设置富文本超链接\n const link = ref('')\n const linkPopoverVisible = ref(false)\n\n watch(richTextAttrs, () => linkPopoverVisible.value = false)\n\n const openLinkPopover = () => {\n link.value = richTextAttrs.value.link\n linkPopoverVisible.value = true\n }\n const updateLink = (link?: string) => {\n if (link) {\n const linkRegExp = /^(https?):\\/\\/[\\w\\-]+(\\.[\\w\\-]+)+([\\w\\-.,@?^=%&:\\/~+#]*[\\w\\-@?^=%&\\/~+#])?$/\n if (!linkRegExp.test(link)) return message.error('不是正确的网页链接地址')\n }\n emitRichTextCommand('link', link)\n linkPopoverVisible.value = false\n }\n\n return {\n fill,\n lineHeight,\n wordSpace,\n textIndent,\n paragraphSpace,\n richTextAttrs,\n availableFonts,\n webFonts,\n fontSizeOptions,\n lineHeightOptions,\n wordSpaceOptions,\n textIndentOptions,\n paragraphSpaceOptions,\n updateLineHeight,\n updateParagraphSpace,\n updateWordSpace,\n updateTextIndent,\n updateFill,\n emitRichTextCommand,\n emitBatchRichTextCommand,\n presetStyles,\n link,\n linkPopoverVisible,\n openLinkPopover,\n updateLink,\n }\n },\n})\n","import { render } from \"./TextStylePanel.vue?vue&type=template&id=eafe485c&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=eafe485c&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-eafe485c\"]])\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-54b23b9e\"),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-07b41654\"),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 as boolean))\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: 0,\n step: filter.step,\n value: filter.value,\n onChange: value => _ctx.updateFilter(filter, value as number)\n }, null, 8, [\"max\", \"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=07b41654&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=07b41654&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-07b41654\"]])\n\nexport default __exports__","\nimport { defineComponent, Ref, 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: handleElement as Ref,\n clipImage,\n presetImageClip,\n replaceImage,\n resetImage,\n setBackgroundImage,\n }\n },\n})\n","import { render } from \"./ImageStylePanel.vue?vue&type=template&id=54b23b9e&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=54b23b9e&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-54b23b9e\"]])\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-42b07d61\"),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))\nconst _hoisted_14 = /*#__PURE__*/_createTextVNode(\"+\")\nconst _hoisted_15 = /*#__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_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_IconHighLight = _resolveComponent(\"IconHighLight\")!\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 as 'fill' | 'gradient'))\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 as 'linear' | 'radial' }))\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 as number }))\n }, null, 8, [\"value\"])\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_ElementFlip),\n _createVNode(_component_Divider),\n (_ctx.handleElement?.text?.content)\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 as string))\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 as string))\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\":\"3\"}\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[9] || (_cache[9] = 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\":\"3\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconHighLight),\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_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"增大字号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"font-size-btn\",\n style: {\"flex\":\"2\"},\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.emitRichTextCommand('fontsize-add')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFontSize),\n _hoisted_14\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 class: \"font-size-btn\",\n style: {\"flex\":\"2\"},\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_ctx.emitRichTextCommand('fontsize-reduce')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFontSize),\n _hoisted_15\n ]),\n _: 1\n })\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.bold,\n onClick: _cache[12] || (_cache[12] = ($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[13] || (_cache[13] = ($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[14] || (_cache[14] = ($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[15] || (_cache[15] = ($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[16] || (_cache[16] = 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[17] || (_cache[17] = 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 { defineComponent, Ref, 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, richTextAttrs, availableFonts } = storeToRefs(mainStore)\n\n const fill = ref('#000')\n const gradient = ref({\n type: 'linear', \n rotate: 0,\n color: ['#fff', '#fff'],\n })\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 || '#fff'\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, { action: { command, value } })\n }\n\n return {\n fill,\n gradient,\n fillType,\n textAlign,\n richTextAttrs,\n availableFonts,\n fontSizeOptions,\n webFonts,\n handleElement: handleElement as Ref,\n emitRichTextCommand,\n updateFillType,\n updateFill,\n updateGradient,\n updateTextAlign,\n }\n },\n})\n","import { render } from \"./ShapeStylePanel.vue?vue&type=template&id=42b07d61&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=42b07d61&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-42b07d61\"]])\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-ad75cd30\"),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 as 'solid' | 'dashed' }))\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 as number })),\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 as 'arrow' | 'dot', _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 as 'arrow' | 'dot'] }))\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, Ref } 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: handleElement as Ref,\n updateLine,\n }\n }\n})\n","import { render } from \"./LineStylePanel.vue?vue&type=template&id=ad75cd30&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=ad75cd30&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-ad75cd30\"]])\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, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1a47c852\"),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 = /*#__PURE__*/_createTextVNode(\"堆叠样式\")\nconst _hoisted_11 = {\n key: 2,\n class: \"row\"\n}\nconst _hoisted_12 = /*#__PURE__*/_createTextVNode(\"环形图样式\")\nconst _hoisted_13 = { class: \"row\" }\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"图例:\", -1))\nconst _hoisted_15 = /*#__PURE__*/_createTextVNode(\"不显示\")\nconst _hoisted_16 = /*#__PURE__*/_createTextVNode(\"显示在上方\")\nconst _hoisted_17 = /*#__PURE__*/_createTextVNode(\"显示在下方\")\nconst _hoisted_18 = { class: \"row\" }\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"背景填充:\", -1))\nconst _hoisted_20 = { class: \"row\" }\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"网格颜色:\", -1))\nconst _hoisted_22 = { style: {\"flex\":\"2\"} }\nconst _hoisted_23 = {\n class: \"color-btn-wrap\",\n style: {\"flex\":\"3\"}\n}\nconst _hoisted_24 = [\"onClick\"]\nconst _hoisted_25 = { class: \"preset-themes\" }\nconst _hoisted_26 = [\"onClick\", \"onMouseenter\"]\nconst _hoisted_27 = /*#__PURE__*/_createTextVNode(\"推荐主题\")\nconst _hoisted_28 = /*#__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 _createVNode(_component_Checkbox, {\n onChange: _cache[5] || (_cache[5] = e => _ctx.updateOptions({ stackBars: e.target.checked })),\n checked: _ctx.stackBars\n }, {\n default: _withCtx(() => [\n _hoisted_10\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.handleElement.chartType === 'pie')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n _createVNode(_component_Checkbox, {\n onChange: _cache[6] || (_cache[6] = e => _ctx.updateOptions({ donut: e.target.checked })),\n checked: _ctx.donut\n }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_13, [\n _hoisted_14,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.legend,\n onChange: _cache[7] || (_cache[7] = value => _ctx.updateLegend(value as '' | 'top' | 'bottom'))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"\" }, {\n default: _withCtx(() => [\n _hoisted_15\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"top\" }, {\n default: _withCtx(() => [\n _hoisted_16\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"bottom\" }, {\n default: _withCtx(() => [\n _hoisted_17\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_18, [\n _hoisted_19,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.fill,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = 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_20, [\n _hoisted_21,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.gridColor,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = 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_22, _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_23, [\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_24))\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[11] || (_cache[11] = ($event: any) => ((_ctx.presetThemesVisible) = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_25, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.presetChartThemes, (item, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"preset-theme\",\n key: index\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item, (color, itemIndex) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"preset-theme-color\", { 'select': _ctx.presetThemeColorHoverIndex[0] === index && itemIndex <= _ctx.presetThemeColorHoverIndex[1] }]),\n key: color,\n style: _normalizeStyle({ backgroundColor: color }),\n onClick: ($event: any) => (_ctx.applyPresetTheme(item, itemIndex)),\n onMouseenter: ($event: any) => (_ctx.presetThemeColorHoverIndex = [index, itemIndex]),\n onMouseleave: _cache[10] || (_cache[10] = ($event: any) => (_ctx.presetThemeColorHoverIndex = [-1, -1]))\n }, null, 46, _hoisted_26))\n }), 128))\n ]))\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_27\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[12] || (_cache[12] = ($event: any) => (_ctx.addThemeColor()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconPlus, { class: \"btn-icon\" }),\n _hoisted_28\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[15] || (_cache[15] = ($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[13] || (_cache[13] = ($event: any) => (_ctx.chartDataEditorVisible = false)),\n onSave: _cache[14] || (_cache[14] = 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, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { ChartData, ChartOptions, 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 const presetThemeColorHoverIndex = ref<[number, number]>([-1, -1])\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const fill = ref('#000')\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 const stackBars = ref(false)\n\n watch(handleElement, () => {\n if (!handleElement.value || handleElement.value.type !== 'chart') return\n fill.value = handleElement.value.fill || '#fff'\n\n if (handleElement.value.options) {\n const {\n lineSmooth: _lineSmooth,\n showLine: _showLine,\n showArea: _showArea,\n horizontalBars: _horizontalBars,\n donut: _donut,\n stackBars: _stackBars,\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 if (_stackBars !== undefined) stackBars.value = _stackBars\n }\n\n themeColor.value = handleElement.value.themeColor\n gridColor.value = handleElement.value.gridColor || '#333'\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: ChartOptions) => {\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[], index: number) => {\n const themeColor = colors.slice(0, index + 1)\n updateElement({ themeColor })\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 presetThemeColorHoverIndex,\n handleElement: handleElement as Ref,\n updateData,\n fill,\n updateFill,\n lineSmooth,\n showLine,\n showArea,\n horizontalBars,\n donut,\n stackBars,\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=1a47c852&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=1a47c852&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-1a47c852\"]])\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-3da8fdb7\"),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 as string }))\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 as string }))\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 as boolean))\n }, null, 8, [\"checked\"])\n ])\n ]),\n (_ctx.theme)\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 { nanoid } from 'nanoid'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTTableElement, TableCell, TableCellStyle, TableTheme } from '@/types/slides'\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: nanoid(10), 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: nanoid(10), 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 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=3da8fdb7&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=3da8fdb7&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-3da8fdb7\"]])\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-e3a2bd30\"),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 as number })),\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, 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: handleElement as Ref,\n latexEditorVisible,\n updateLatex,\n updateLatexData,\n }\n }\n})\n","import { render } from \"./LatexStylePanel.vue?vue&type=template&id=e3a2bd30&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=e3a2bd30&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-e3a2bd30\"]])\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-58a36be6\"),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 as boolean }))\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 as boolean }))\n }, null, 8, [\"checked\"])\n ])\n ])\n ]))\n}","\nimport { defineComponent, Ref } 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: handleElement as Ref,\n updateAudio,\n }\n }\n})\n","import { render } from \"./AudioStylePanel.vue?vue&type=template&id=58a36be6&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=58a36be6&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-58a36be6\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-e5e0fba2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"multi-style-panel\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"填充颜色:\", -1))\nconst _hoisted_4 = { class: \"row\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"边框样式:\", -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 = /*#__PURE__*/_createTextVNode(\"+\")\nconst _hoisted_13 = /*#__PURE__*/_createTextVNode(\"-\")\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_Divider = _resolveComponent(\"Divider\")!\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_InputNumber = _resolveComponent(\"InputNumber\")!\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_IconHighLight = _resolveComponent(\"IconHighLight\")!\n const _component_ButtonGroup = _resolveComponent(\"ButtonGroup\")!\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\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.fill,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = 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 _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.outline.style,\n onChange: _cache[1] || (_cache[1] = value => _ctx.updateOutline({ style: value as 'solid' | 'dashed' }))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"solid\" }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"dashed\" }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _hoisted_9,\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 || '#000',\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createVNode(_component_InputNumber, {\n value: _ctx.outline.width,\n onChange: _cache[3] || (_cache[3] = value => _ctx.updateOutline({ width: value as number })),\n style: {\"flex\":\"3\"}\n }, null, 8, [\"value\"])\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[4] || (_cache[4] = value => _ctx.updateFontStyle('fontname', value as string))\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[5] || (_cache[5] = value => _ctx.updateFontStyle('fontsize', value as string))\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[6] || (_cache[6] = value => _ctx.updateFontStyle('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\":\"3\"}\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[7] || (_cache[7] = value => _ctx.updateFontStyle('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\":\"3\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconHighLight),\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_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"增大字号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"font-size-btn\",\n style: {\"flex\":\"2\"},\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.updateFontStyle('fontsize-add', '2')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFontSize),\n _hoisted_12\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 class: \"font-size-btn\",\n style: {\"flex\":\"2\"},\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.updateFontStyle('fontsize-reduce', '2')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFontSize),\n _hoisted_13\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[10] || (_cache[10] = e => _ctx.updateFontStyle('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 ]))\n}","\nimport { defineComponent, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement, PPTElementOutline, TableCell } from '@/types/slides'\nimport emitter, { EmitterEvents } from '@/utils/emitter'\nimport { WEB_FONTS } from '@/configs/font'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ColorButton from '../common/ColorButton.vue'\n\nconst webFonts = WEB_FONTS\n\nexport default defineComponent({\n name: 'multi-style-panel',\n components: {\n ColorButton,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { richTextAttrs, availableFonts, activeElementList } = storeToRefs(useMainStore())\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateElement = (id: string, props: Partial) => {\n slidesStore.updateElement({ id, props })\n addHistorySnapshot()\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 fill = ref('#fff')\n const outline = ref({\n width: 0,\n color: '#fff',\n style: 'solid',\n })\n\n // 批量修改填充色(表格元素为单元格填充、音频元素为图标颜色)\n const updateFill = (value: string) => {\n for (const el of activeElementList.value) {\n if (\n el.type === 'text' ||\n el.type === 'shape' ||\n el.type === 'chart'\n ) updateElement(el.id, { fill: value })\n\n if (el.type === 'table') {\n const data: TableCell[][] = JSON.parse(JSON.stringify(el.data))\n for (let i = 0; i < data.length; i++) {\n for (let j = 0; j < data[i].length; j++) {\n const style = data[i][j].style || {}\n data[i][j].style = { ...style, backcolor: value }\n }\n }\n updateElement(el.id, { data })\n }\n\n if (el.type === 'audio') updateElement(el.id, { color: value })\n }\n fill.value = value\n }\n\n // 修改边框/线条样式\n const updateOutline = (outlineProps: Partial) => {\n\n for (const el of activeElementList.value) {\n if (\n el.type === 'text' ||\n el.type === 'image' ||\n el.type === 'shape' ||\n el.type === 'table' ||\n el.type === 'chart'\n ) {\n const outline = el.outline || { width: 2, color: '#000', style: 'solid' }\n const props = { outline: { ...outline, ...outlineProps } }\n updateElement(el.id, props)\n }\n\n if (el.type === 'line') updateElement(el.id, outlineProps)\n }\n outline.value = { ...outline.value, ...outlineProps }\n }\n\n // 修改文字样式\n const updateFontStyle = (command: string, value: string) => {\n for (const el of activeElementList.value) {\n if (el.type === 'text' || (el.type === 'shape' && el.text?.content)) {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { target: el.id, action: { command, value } })\n }\n if (el.type === 'table') {\n const data: TableCell[][] = JSON.parse(JSON.stringify(el.data))\n for (let i = 0; i < data.length; i++) {\n for (let j = 0; j < data[i].length; j++) {\n const style = data[i][j].style || {}\n data[i][j].style = { ...style, [command]: value }\n }\n }\n updateElement(el.id, { data })\n }\n if (el.type === 'latex' && command === 'color') {\n updateElement(el.id, { color: value })\n }\n }\n }\n\n return {\n webFonts,\n richTextAttrs,\n availableFonts,\n fontSizeOptions,\n fill,\n outline,\n updateFill,\n updateOutline,\n updateFontStyle,\n }\n }\n})\n","import { render } from \"./MultiStylePanel.vue?vue&type=template&id=e5e0fba2&scoped=true&ts=true\"\nimport script from \"./MultiStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./MultiStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./MultiStylePanel.vue?vue&type=style&index=0&id=e5e0fba2&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-e5e0fba2\"]])\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'\nimport MultiStylePanel from './MultiStylePanel.vue'\n\nconst 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\nexport default defineComponent({\n name: 'element-style-panel',\n setup() {\n const { activeElementIdList, activeElementList, handleElement, activeGroupElementId } = storeToRefs(useMainStore())\n\n const currentPanelComponent = computed(() => {\n if (activeElementIdList.value.length > 1) {\n if (!activeGroupElementId.value) return MultiStylePanel\n\n const activeGroupElement = activeElementList.value.find(item => item.id === activeGroupElementId.value)\n return activeGroupElement ? (panelMap[activeGroupElement.type] || null) : null\n }\n\n return handleElement.value ? (panelMap[handleElement.value.type] || null) : null\n })\n\n return {\n handleElement,\n currentPanelComponent,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=11443078&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-4f10fba6\"),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, _ctx.ElementOrderCommands.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, _ctx.ElementOrderCommands.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, _ctx.ElementOrderCommands.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, _ctx.ElementOrderCommands.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(_ctx.ElementAlignCommands.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(_ctx.ElementAlignCommands.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(_ctx.ElementAlignCommands.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(_ctx.ElementAlignCommands.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(_ctx.ElementAlignCommands.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(_ctx.ElementAlignCommands.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 as number)),\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 as number)),\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 as number)),\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 as number)),\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 as number)),\n style: {\"flex\":\"4\"}\n }, null, 8, [\"value\"])\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { computed, defineComponent, Ref, ref, watch } from 'vue'\nimport { round } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport { ElementAlignCommands, ElementOrderCommands } from '@/types/edit'\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: handleElement as Ref,\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 ElementOrderCommands,\n ElementAlignCommands,\n }\n },\n})\n","import { render } from \"./ElementPositionPanel.vue?vue&type=template&id=4f10fba6&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=4f10fba6&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-4f10fba6\"]])\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, 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-11684c24\"),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: \"tabs\" }\nconst _hoisted_4 = [\"onClick\"]\nconst _hoisted_5 = { class: \"type-title\" }\nconst _hoisted_6 = { class: \"pool-item-wrapper\" }\nconst _hoisted_7 = [\"onMouseenter\", \"onClick\"]\nconst _hoisted_8 = {\n key: 0,\n class: \"mask\"\n}\nconst _hoisted_9 = /*#__PURE__*/_createTextVNode(\" 添加动画 \")\nconst _hoisted_10 = {\n key: 1,\n class: \"tip\"\n}\nconst _hoisted_11 = /*#__PURE__*/_createTextVNode(\" 选中画布中的元素添加动画\")\nconst _hoisted_12 = { class: \"sequence-content\" }\nconst _hoisted_13 = { class: \"index\" }\nconst _hoisted_14 = { class: \"text\" }\nconst _hoisted_15 = { class: \"handler\" }\nconst _hoisted_16 = {\n key: 0,\n class: \"configs\"\n}\nconst _hoisted_17 = { class: \"config-item\" }\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"3\"} }, \"持续时长:\", -1))\nconst _hoisted_19 = { class: \"config-item\" }\nconst _hoisted_20 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"3\"} }, \"触发方式:\", -1))\nconst _hoisted_21 = /*#__PURE__*/_createTextVNode(\"主动触发\")\nconst _hoisted_22 = /*#__PURE__*/_createTextVNode(\"与上一动画同时\")\nconst _hoisted_23 = /*#__PURE__*/_createTextVNode(\"上一动画之后\")\nconst _hoisted_24 = { class: \"config-item\" }\nconst _hoisted_25 = /*#__PURE__*/_createTextVNode(\"更换动画\")\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_InputNumber = _resolveComponent(\"InputNumber\")!\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_Draggable = _resolveComponent(\"Draggable\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.handleElement)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createVNode(_component_Popover, {\n trigger: \"click\",\n visible: _ctx.animationPoolVisible,\n \"onUpdate:visible\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.animationPoolVisible) = $event)),\n onVisibleChange: _cache[3] || (_cache[3] = visible => _ctx.handlePopoverVisibleChange(visible))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.tabs, (tab) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['tab', tab.key, { 'active': _ctx.activeTab === tab.key }]),\n key: tab.key,\n onClick: ($event: any) => (_ctx.activeTab = tab.key)\n }, _toDisplayString(tab.label), 11, _hoisted_4))\n }), 128))\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.animationTypes, (key) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (_ctx.activeTab === key)\n ? (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['animation-pool', key]),\n key: key\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.animations[key], (effect) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"pool-type\",\n key: effect.name\n }, [\n _createElementVNode(\"div\", _hoisted_5, _toDisplayString(effect.name) + \":\", 1),\n _createElementVNode(\"div\", _hoisted_6, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(effect.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(key, item.value))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"animation-box\", [\n `${_ctx.prefix}animated`,\n `${_ctx.prefix}fast`,\n _ctx.hoverPreviewAnimation === item.value && `${_ctx.prefix}${item.value}`,\n ]])\n }, _toDisplayString(item.name), 3)\n ], 40, _hoisted_7))\n }), 128))\n ])\n ]))\n }), 128)),\n (!_ctx.popoverMaskHide)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8))\n : _createCommentVNode(\"\", true)\n ], 2))\n : _createCommentVNode(\"\", true)\n ], 64))\n }), 256))\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"element-animation-btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.handleAnimationId = ''))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconEffects, { style: {\"margin-right\":\"5px\"} }),\n _hoisted_9\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createVNode(_component_IconClick, { style: {\"margin-right\":\"5px\"} }),\n _hoisted_11\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 handle: \".sequence-content\",\n onEnd: _ctx.handleDragEnd,\n itemKey: \"id\"\n }, {\n item: _withCtx(({ element }) => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"sequence-item\", [element.type, { 'active': _ctx.handleElement?.id === element.elId }]])\n }, [\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"div\", _hoisted_13, _toDisplayString(element.index), 1),\n _createElementVNode(\"div\", _hoisted_14, \"【\" + _toDisplayString(element.elType) + \"】\" + _toDisplayString(element.animationEffect), 1),\n _createElementVNode(\"div\", _hoisted_15, [\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.effect, 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.id))\n }, null, 8, [\"onClick\"])\n ]),\n _: 2\n }, 1032, [\"mouseEnterDelay\"])\n ])\n ]),\n (_ctx.handleElementAnimation[0]?.elId === element.elId)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [\n _createVNode(_component_Divider, { style: {\"margin\":\"16px 0\"} }),\n _createElementVNode(\"div\", _hoisted_17, [\n _hoisted_18,\n _createVNode(_component_InputNumber, {\n min: 500,\n max: 3000,\n step: 500,\n value: element.duration,\n onChange: value => _ctx.updateElementAnimationDuration(element.id, value as number),\n style: {\"flex\":\"5\"}\n }, null, 8, [\"value\", \"onChange\"])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n _hoisted_20,\n _createVNode(_component_Select, {\n value: element.trigger,\n onChange: value => _ctx.updateElementAnimationTrigger(element.id, value as 'click' | 'meantime' | 'auto'),\n style: {\"flex\":\"5\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"click\" }, {\n default: _withCtx(() => [\n _hoisted_21\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"meantime\" }, {\n default: _withCtx(() => [\n _hoisted_22\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"auto\" }, {\n default: _withCtx(() => [\n _hoisted_23\n ]),\n _: 1\n })\n ]),\n _: 2\n }, 1032, [\"value\", \"onChange\"])\n ]),\n _createElementVNode(\"div\", _hoisted_24, [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: ($event: any) => (_ctx.openAnimationPool(element.id))\n }, {\n default: _withCtx(() => [\n _hoisted_25\n ]),\n _: 2\n }, 1032, [\"onClick\"])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onEnd\"])\n ]))\n}","export const ANIMATION_DEFAULT_DURATION = 1000\r\nexport const ANIMATION_DEFAULT_TRIGGER = 'click'\r\nexport const ANIMATION_CLASS_PREFIX = 'animate__'\r\n\r\nexport const ENTER_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]\r\n\r\nexport const EXIT_ANIMATIONS = [\r\n {\r\n type: 'bounce',\r\n name: '弹跳',\r\n children: [\r\n { name: '弹出', value: 'bounceOut' },\r\n { name: '向左弹出', value: 'bounceOutLeft' },\r\n { name: '向右弹出', value: 'bounceOutRight' },\r\n { name: '向上弹出', value: 'bounceOutUp' },\r\n { name: '向下弹出', value: 'bounceOutDown' },\r\n ],\r\n },\r\n {\r\n type: 'fade',\r\n name: '浮现',\r\n children: [\r\n { name: '浮出', value: 'fadeOut' },\r\n { name: '向下浮出', value: 'fadeOutDown' },\r\n { name: '向下长距浮出', value: 'fadeOutDownBig' },\r\n { name: '向左浮出', value: 'fadeOutLeft' },\r\n { name: '向左长距浮出', value: 'fadeOutLeftBig' },\r\n { name: '向右浮出', value: 'fadeOutRight' },\r\n { name: '向右长距浮出', value: 'fadeOutRightBig' },\r\n { name: '向上浮出', value: 'fadeOutUp' },\r\n { name: '向上长距浮出', value: 'fadeOutUpBig' },\r\n { name: '从左上浮出', value: 'fadeOutTopLeft' },\r\n { name: '从右上浮出', value: 'fadeOutTopRight' },\r\n { name: '从左下浮出', value: 'fadeOutBottomLeft' },\r\n { name: '从右下浮出', value: 'fadeOutBottomRight' },\r\n ],\r\n },\r\n {\r\n type: 'rotate',\r\n name: '旋转',\r\n children: [\r\n { name: '旋转退出', value: 'rotateOut' },\r\n { name: '绕左下退出', value: 'rotateOutDownLeft' },\r\n { name: '绕右下退出', value: 'rotateOutDownRight' },\r\n { name: '绕左上退出', value: 'rotateOutUpLeft' },\r\n { name: '绕右上退出', value: 'rotateOutUpRight' },\r\n ],\r\n },\r\n {\r\n type: 'zoom',\r\n name: '缩放',\r\n children: [\r\n { name: '缩小退出', value: 'zoomOut' },\r\n { name: '向下缩小退出', value: 'zoomOutDown' },\r\n { name: '从左缩小退出', value: 'zoomOutLeft' },\r\n { name: '从右缩小退出', value: 'zoomOutRight' },\r\n { name: '向上缩小退出', value: 'zoomOutUp' },\r\n ],\r\n },\r\n {\r\n type: 'slide',\r\n name: '滑出',\r\n children: [\r\n { name: '向下滑出', value: 'slideOutDown' },\r\n { name: '从左滑出', value: 'slideOutLeft' },\r\n { name: '从右滑出', value: 'slideOutRight' },\r\n { name: '向上滑出', value: 'slideOutUp' },\r\n ],\r\n },\r\n {\r\n type: 'flip',\r\n name: '翻转',\r\n children: [\r\n { name: 'X轴翻转退出', value: 'flipOutX' },\r\n { name: 'Y轴翻转退出', value: 'flipOutY' },\r\n ],\r\n },\r\n {\r\n type: 'back',\r\n name: '缩小滑出',\r\n children: [\r\n { name: '向下缩小滑出', value: 'backOutDown' },\r\n { name: '从左缩小滑出', value: 'backOutLeft' },\r\n { name: '从右缩小滑出', value: 'backOutRight' },\r\n { name: '向上缩小滑出', value: 'backOutUp' },\r\n ],\r\n },\r\n {\r\n type: 'lightSpeed',\r\n name: '飞出',\r\n children: [\r\n { name: '从右飞出', value: 'lightSpeedOutRight' },\r\n { name: '从左飞出', value: 'lightSpeedOutLeft' },\r\n ],\r\n },\r\n]\r\n\r\nexport const ATTENTION_ANIMATIONS = [\r\n {\r\n type: 'shake',\r\n name: '晃动',\r\n children: [\r\n { name: '左右摇晃', value: 'shakeX' },\r\n { name: '上下摇晃', value: 'shakeY' },\r\n { name: '摇头', value: 'headShake' },\r\n { name: '摆动', value: 'swing' },\r\n { name: '晃动', value: 'wobble' },\r\n { name: '惊恐', value: 'tada' },\r\n { name: '果冻', value: 'jello' },\r\n ],\r\n },\r\n {\r\n type: 'other',\r\n name: '其他',\r\n children: [\r\n { name: '弹跳', value: 'bounce' },\r\n { name: '闪烁', value: 'flash' },\r\n { name: '脉搏', value: 'pulse' },\r\n { name: '橡皮筋', value: 'rubberBand' },\r\n { name: '心跳(快)', value: 'heartBeat' },\r\n ],\r\n },\r\n]","\nimport { computed, defineComponent, ref, watch } from 'vue'\nimport { nanoid } from 'nanoid'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTAnimation } from '@/types/slides'\nimport { \n ENTER_ANIMATIONS,\n EXIT_ANIMATIONS,\n ATTENTION_ANIMATIONS,\n ANIMATION_DEFAULT_DURATION,\n ANIMATION_DEFAULT_TRIGGER,\n ANIMATION_CLASS_PREFIX,\n} from '@/configs/animation'\nimport { ELEMENT_TYPE_ZH } from '@/configs/element'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport Draggable from 'vuedraggable'\n\nconst animationEffects: { [key: string]: string } = {}\nfor (const effect of ENTER_ANIMATIONS) {\n for (const animation of effect.children) {\n animationEffects[animation.value] = animation.name\n }\n}\nfor (const effect of EXIT_ANIMATIONS) {\n for (const animation of effect.children) {\n animationEffects[animation.value] = animation.name\n }\n}\nfor (const effect of ATTENTION_ANIMATIONS) {\n for (const animation of effect.children) {\n animationEffects[animation.value] = animation.name\n }\n}\n\ntype AnimationType = 'in' | 'out' | 'attention'\ninterface TabItem {\n key: AnimationType\n label: string\n}\n\nconst animationTypes: AnimationType[] = ['in', 'out', 'attention']\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, formatedAnimations, currentSlideAnimations } = storeToRefs(slidesStore)\n\n const tabs: TabItem[] = [\n { key: 'in', label: '入场' },\n { key: 'out', label: '退场' },\n { key: 'attention', label: '强调' },\n ]\n const activeTab = ref('in')\n\n watch(() => handleElementId.value, () => {\n animationPoolVisible.value = false\n })\n\n const hoverPreviewAnimation = ref('')\n const animationPoolVisible = ref(false)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 当前页面的动画列表\n const animationSequence = computed(() => {\n const animationSequence = []\n for (let i = 0; i < formatedAnimations.value.length; i++) {\n const item = formatedAnimations.value[i]\n for (let j = 0; j < item.animations.length; j++) {\n const animation = item.animations[j]\n const el = currentSlide.value.elements.find(el => el.id === animation.elId)\n if (!el) continue\n\n const elType = ELEMENT_TYPE_ZH[el.type]\n const animationEffect = animationEffects[animation.effect]\n animationSequence.push({\n ...animation,\n index: j === 0 ? i + 1 : '',\n elType,\n animationEffect,\n })\n }\n }\n return animationSequence\n })\n\n // 当前选中元素的入场动画信息\n const handleElementAnimation = computed(() => {\n const animations = currentSlideAnimations.value\n const animation = animations.filter(item => item.elId === handleElementId.value)\n return animation || []\n })\n\n // 删除元素动画\n const deleteAnimation = (id: string) => {\n const animations = currentSlideAnimations.value.filter(item => item.id !== id)\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, effect: string, duration: number) => {\n const elRef = document.querySelector(`#editable-element-${elId} [class^=editable-element-]`)\n if (elRef) {\n const animationName = `${ANIMATION_CLASS_PREFIX}${effect}`\n document.documentElement.style.setProperty('--animate-duration', `${duration}ms`)\n elRef.classList.add(`${ANIMATION_CLASS_PREFIX}animated`, animationName)\n\n const handleAnimationEnd = () => {\n document.documentElement.style.removeProperty('--animate-duration')\n elRef.classList.remove(`${ANIMATION_CLASS_PREFIX}animated`, animationName)\n }\n elRef.addEventListener('animationend', handleAnimationEnd, { once: true })\n }\n }\n\n // 修改元素动画持续时间\n const updateElementAnimationDuration = (id: string, duration: number) => {\n if (duration < 100 || duration > 5000) return\n\n const animations = currentSlideAnimations.value.map(item => {\n if (item.id === id) return { ...item, duration }\n return item\n })\n slidesStore.updateSlide({ animations })\n addHistorySnapshot()\n }\n\n // 修改触发方式\n const updateElementAnimationTrigger = (id: string, trigger: 'click' | 'meantime' | 'auto') => {\n const animations = currentSlideAnimations.value.map(item => {\n if (item.id === id) return { ...item, trigger }\n return item\n })\n slidesStore.updateSlide({ animations })\n addHistorySnapshot()\n }\n\n // 修改元素动画,并执行一次预览\n const updateElementAnimation = (type: AnimationType, effect: string) => {\n const animations = currentSlideAnimations.value.map(item => {\n if (item.id === handleAnimationId.value) return { ...item, type, effect }\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 || ANIMATION_DEFAULT_DURATION\n\n runAnimation(handleElementId.value, effect, duration)\n }\n\n const handleAnimationId = ref('')\n // 添加元素动画,并执行一次预览\n const addAnimation = (type: AnimationType, effect: string) => {\n if (handleAnimationId.value) {\n updateElementAnimation(type, effect)\n return\n }\n\n const animations: PPTAnimation[] = JSON.parse(JSON.stringify(currentSlideAnimations.value))\n animations.push({\n id: nanoid(10),\n elId: handleElementId.value,\n type,\n effect,\n duration: ANIMATION_DEFAULT_DURATION,\n trigger: ANIMATION_DEFAULT_TRIGGER,\n })\n slidesStore.updateSlide({ animations })\n animationPoolVisible.value = false\n addHistorySnapshot()\n\n runAnimation(handleElementId.value, effect, ANIMATION_DEFAULT_DURATION)\n }\n\n // 动画选择面板打开600ms后再移除遮罩层,否则打开面板后迅速滑入鼠标预览会导致抖动\n const popoverMaskHide = ref(false)\n const handlePopoverVisibleChange = (visible: boolean) => {\n if (visible) {\n setTimeout(() => popoverMaskHide.value = true, 600)\n }\n else popoverMaskHide.value = false\n }\n\n const openAnimationPool = (elementId: string) => {\n animationPoolVisible.value = true\n handleAnimationId.value = elementId\n handlePopoverVisibleChange(true)\n }\n\n return {\n tabs,\n activeTab,\n handleAnimationId,\n handleElement,\n animationPoolVisible,\n animationSequence,\n hoverPreviewAnimation,\n handleElementAnimation,\n popoverMaskHide,\n animations: {\n in: ENTER_ANIMATIONS,\n out: EXIT_ANIMATIONS,\n attention: ATTENTION_ANIMATIONS,\n },\n prefix: ANIMATION_CLASS_PREFIX,\n animationTypes,\n addAnimation,\n deleteAnimation,\n handleDragEnd,\n runAnimation,\n updateElementAnimationDuration,\n updateElementAnimationTrigger,\n handlePopoverVisibleChange,\n openAnimationPool,\n }\n },\n})\n","import { render } from \"./ElementAnimationPanel.vue?vue&type=template&id=11684c24&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=11684c24&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-11684c24\"]])\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-26058d12\"),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 as 'gradient' | 'image' | 'solid'))\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 as 'repeat' | 'cover' | 'contain' }))\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 as 'linear' | 'radial' }))\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 as number }))\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 as number))\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 as string }))\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=26058d12&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=26058d12&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-26058d12\"]])\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-78e88e36\"),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=78e88e36&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=78e88e36&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-78e88e36\"]])\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-0a74a690\"),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(_ctx.ElementAlignCommands.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(_ctx.ElementAlignCommands.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(_ctx.ElementAlignCommands.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(_ctx.ElementAlignCommands.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(_ctx.ElementAlignCommands.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(_ctx.ElementAlignCommands.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 { 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: ElementAlignCommands) => {\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 { ElementAlignCommands } 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: ElementAlignCommands) => {\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 ElementAlignCommands,\n }\n },\n})\n","import { render } from \"./MultiPositionPanel.vue?vue&type=template&id=0a74a690&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=0a74a690&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-0a74a690\"]])\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-e93c4822\"),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 = (value: string) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { action: { command: 'insert', value } })\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=e93c4822&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=e93c4822&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-e93c4822\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { 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: ToolbarStates\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.EL_STYLE },\n { label: '位置', value: ToolbarStates.MULTI_POSITION },\n ]\n\n const setToolbarState = (value: ToolbarStates) => {\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: ToolbarStates[] = 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=017ca85e&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=017ca85e&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-017ca85e\"]])\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-7ed67bb3\"),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: Event) => {\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=7ed67bb3&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=7ed67bb3&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-7ed67bb3\"]])\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, resolveDynamicComponent as _resolveDynamicComponent, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-17be277c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"export-dialog\" }\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.tabs, (tab) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': tab.key === _ctx.dialogForExport }]),\n key: tab.key,\n onClick: ($event: any) => (_ctx.setDialogForExport(tab.key))\n }, _toDisplayString(tab.label), 11, _hoisted_3))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.currentDialogComponent), {\n onClose: _cache[0] || (_cache[0] = ($event: any) => (_ctx.setDialogForExport('')))\n }, null, 32))\n ])\n ]))\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createBlock as _createBlock, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-61e92928\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"export-img-dialog\" }\nconst _hoisted_2 = { class: \"thumbnails-view\" }\nconst _hoisted_3 = {\n class: \"thumbnails\",\n ref: \"imageThumbnailsRef\"\n}\nconst _hoisted_4 = { class: \"configs\" }\nconst _hoisted_5 = { class: \"row\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"导出格式:\", -1))\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"JPEG\")\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\"PNG\")\nconst _hoisted_9 = { class: \"row\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"导出范围:\", -1))\nconst _hoisted_11 = /*#__PURE__*/_createTextVNode(\"全部\")\nconst _hoisted_12 = /*#__PURE__*/_createTextVNode(\"当前页\")\nconst _hoisted_13 = /*#__PURE__*/_createTextVNode(\"自定义\")\nconst _hoisted_14 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_15 = [\"data-range\"]\nconst _hoisted_16 = { class: \"row\" }\nconst _hoisted_17 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"图片质量:\", -1))\nconst _hoisted_18 = { class: \"row\" }\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"忽略在线字体:\", -1))\nconst _hoisted_20 = { class: \"config-item\" }\nconst _hoisted_21 = { class: \"btns\" }\nconst _hoisted_22 = /*#__PURE__*/_createTextVNode(\"导出图片\")\nconst _hoisted_23 = /*#__PURE__*/_createTextVNode(\"关闭\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ThumbnailSlide = _resolveComponent(\"ThumbnailSlide\")!\n const _component_RadioButton = _resolveComponent(\"RadioButton\")!\n const _component_RadioGroup = _resolveComponent(\"RadioGroup\")!\n const _component_Slider = _resolveComponent(\"Slider\")!\n const _component_Switch = _resolveComponent(\"Switch\")!\n const _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_FullscreenSpin = _resolveComponent(\"FullscreenSpin\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.renderSlides, (slide) => {\n return (_openBlock(), _createBlock(_component_ThumbnailSlide, {\n class: \"thumbnail\",\n key: slide.id,\n slide: slide,\n size: 1600\n }, null, 8, [\"slide\"]))\n }), 128))\n ], 512)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _hoisted_6,\n _createVNode(_component_RadioGroup, {\n class: \"config-item\",\n value: _ctx.format,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.format) = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"50%\"},\n value: \"jpeg\"\n }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n }),\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"50%\"},\n value: \"png\"\n }, {\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_RadioGroup, {\n class: \"config-item\",\n value: _ctx.rangeType,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.rangeType) = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"33.33%\"},\n value: \"all\"\n }, {\n default: _withCtx(() => [\n _hoisted_11\n ]),\n _: 1\n }),\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"33.33%\"},\n value: \"current\"\n }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n }),\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"33.33%\"},\n value: \"custom\"\n }, {\n default: _withCtx(() => [\n _hoisted_13\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n (_ctx.rangeType === 'custom')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", {\n class: \"title\",\n \"data-range\": `(${_ctx.range[0]} ~ ${_ctx.range[1]})`\n }, \"自定义范围:\", 8, _hoisted_15),\n _createVNode(_component_Slider, {\n class: \"config-item\",\n range: \"\",\n min: 1,\n max: _ctx.slides.length,\n step: 1,\n value: _ctx.range,\n \"onUpdate:value\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.range) = $event))\n }, null, 8, [\"max\", \"value\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_16, [\n _hoisted_17,\n _createVNode(_component_Slider, {\n class: \"config-item\",\n min: 0,\n max: 1,\n step: 0.1,\n value: _ctx.quality,\n \"onUpdate:value\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.quality) = $event))\n }, null, 8, [\"step\", \"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_18, [\n _hoisted_19,\n _createElementVNode(\"div\", _hoisted_20, [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"导出时默认忽略在线字体,若您在幻灯片中使用了在线字体,且希望导出后保留相关样式,可选择关闭【忽略在线字体】选项,但要注意这将会增加导出用时。\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Switch, {\n checked: _ctx.ignoreWebfont,\n \"onUpdate:checked\": _cache[4] || (_cache[4] = ($event: any) => ((_ctx.ignoreWebfont) = $event))\n }, null, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_21, [\n _createVNode(_component_Button, {\n class: \"btn export\",\n type: \"primary\",\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.expImage()))\n }, {\n default: _withCtx(() => [\n _hoisted_22\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n class: \"btn close\",\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.close()))\n }, {\n default: _withCtx(() => [\n _hoisted_23\n ]),\n _: 1\n })\n ]),\n _createVNode(_component_FullscreenSpin, {\n loading: _ctx.exporting,\n tip: \"正在导出...\"\n }, null, 8, [\"loading\"])\n ]))\n}","\nimport { computed, defineComponent, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useExport from '@/hooks/useExport'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\n\nexport default defineComponent({\n name: 'export-img-dialog',\n components: {\n ThumbnailSlide,\n },\n setup(props, { emit }) {\n const { slides, currentSlide } = storeToRefs(useSlidesStore())\n\n const imageThumbnailsRef = ref()\n const rangeType = ref<'all' | 'current' | 'custom'>('all')\n const range = ref<[number, number]>([1, slides.value.length])\n const format = ref<'jpeg' | 'png'>('jpeg')\n const quality = ref(1)\n const ignoreWebfont = ref(true)\n\n const renderSlides = computed(() => {\n if (rangeType.value === 'all') return slides.value\n if (rangeType.value === 'current') return [currentSlide.value]\n return slides.value.filter((item, index) => {\n const [min, max] = range.value\n return index >= min - 1 && index <= max - 1\n })\n })\n\n const close = () => emit('close')\n\n const { exportImage, exporting } = useExport()\n\n const expImage = () => {\n if (!imageThumbnailsRef.value) return\n exportImage(imageThumbnailsRef.value, format.value, quality.value, ignoreWebfont.value)\n }\n \n return {\n imageThumbnailsRef,\n slides,\n rangeType,\n range,\n format,\n quality,\n ignoreWebfont,\n renderSlides,\n exporting,\n expImage,\n close,\n }\n },\n})\n","import { render } from \"./ExportImage.vue?vue&type=template&id=61e92928&scoped=true&ts=true\"\nimport script from \"./ExportImage.vue?vue&type=script&lang=ts\"\nexport * from \"./ExportImage.vue?vue&type=script&lang=ts\"\n\nimport \"./ExportImage.vue?vue&type=style&index=0&id=61e92928&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-61e92928\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, 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-54705363\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"export-json-dialog\" }\nconst _hoisted_2 = { class: \"preview\" }\nconst _hoisted_3 = { class: \"btns\" }\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"导出 JSON\")\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 _createElementVNode(\"pre\", null, _toDisplayString(_ctx.slides), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_Button, {\n class: \"btn export\",\n type: \"primary\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.exportJSON()))\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n class: \"btn close\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.close()))\n }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n })\n ])\n ]))\n}","\nimport { defineComponent } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useExport from '@/hooks/useExport'\n\nexport default defineComponent({\n name: 'export-json-dialog',\n setup(props, { emit }) {\n const close = () => emit('close')\n\n const { slides } = storeToRefs(useSlidesStore())\n\n const { exportJSON } = useExport()\n \n return {\n slides,\n exportJSON,\n close,\n }\n },\n})\n","import { render } from \"./ExportJSON.vue?vue&type=template&id=54705363&scoped=true&ts=true\"\nimport script from \"./ExportJSON.vue?vue&type=script&lang=ts\"\nexport * from \"./ExportJSON.vue?vue&type=script&lang=ts\"\n\nimport \"./ExportJSON.vue?vue&type=style&index=0&id=54705363&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-54705363\"]])\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, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7c83ddb5\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"export-pdf-dialog\" }\nconst _hoisted_2 = { class: \"thumbnails-view\" }\nconst _hoisted_3 = {\n class: \"thumbnails\",\n ref: \"pdfThumbnailsRef\"\n}\nconst _hoisted_4 = { class: \"configs\" }\nconst _hoisted_5 = { class: \"row\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"导出范围:\", -1))\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"全部幻灯片\")\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\"当前幻灯片\")\nconst _hoisted_9 = { class: \"row\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"每页数量:\", -1))\nconst _hoisted_11 = /*#__PURE__*/_createTextVNode(\"1\")\nconst _hoisted_12 = /*#__PURE__*/_createTextVNode(\"2\")\nconst _hoisted_13 = /*#__PURE__*/_createTextVNode(\"3\")\nconst _hoisted_14 = { class: \"row\" }\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"边缘留白:\", -1))\nconst _hoisted_16 = { class: \"config-item\" }\nconst _hoisted_17 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"tip\" }, \" 注意:若打印预览与实际样式不一致,请在弹出的打印窗口中勾选【背景图形】选项。 \", -1))\nconst _hoisted_18 = { class: \"btns\" }\nconst _hoisted_19 = /*#__PURE__*/_createTextVNode(\"打印 / 导出 PDF\")\nconst _hoisted_20 = /*#__PURE__*/_createTextVNode(\"关闭\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ThumbnailSlide = _resolveComponent(\"ThumbnailSlide\")!\n const _component_RadioButton = _resolveComponent(\"RadioButton\")!\n const _component_RadioGroup = _resolveComponent(\"RadioGroup\")!\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_Switch = _resolveComponent(\"Switch\")!\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 (_ctx.rangeType === 'current')\n ? (_openBlock(), _createBlock(_component_ThumbnailSlide, {\n key: 0,\n class: \"thumbnail\",\n slide: _ctx.currentSlide,\n size: 1600\n }, null, 8, [\"slide\"]))\n : (_openBlock(true), _createElementBlock(_Fragment, { key: 1 }, _renderList(_ctx.slides, (slide, index) => {\n return (_openBlock(), _createBlock(_component_ThumbnailSlide, {\n class: _normalizeClass([\"thumbnail\", { 'break-page': (index + 1) % _ctx.count === 0 }]),\n key: slide.id,\n slide: slide,\n size: 1600\n }, null, 8, [\"class\", \"slide\"]))\n }), 128))\n ], 512)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _hoisted_6,\n _createVNode(_component_RadioGroup, {\n class: \"config-item\",\n value: _ctx.rangeType,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.rangeType) = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"50%\"},\n value: \"all\"\n }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n }),\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"50%\"},\n value: \"current\"\n }, {\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_Select, {\n class: \"config-item\",\n value: _ctx.count,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.count) = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: 1 }, {\n default: _withCtx(() => [\n _hoisted_11\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: 2 }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: 3 }, {\n default: _withCtx(() => [\n _hoisted_13\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _hoisted_15,\n _createElementVNode(\"div\", _hoisted_16, [\n _createVNode(_component_Switch, {\n checked: _ctx.padding,\n \"onUpdate:checked\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.padding) = $event))\n }, null, 8, [\"checked\"])\n ])\n ]),\n _hoisted_17\n ]),\n _createElementVNode(\"div\", _hoisted_18, [\n _createVNode(_component_Button, {\n class: \"btn export\",\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.expPDF()))\n }, {\n default: _withCtx(() => [\n _hoisted_19\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n class: \"btn close\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.close()))\n }, {\n default: _withCtx(() => [\n _hoisted_20\n ]),\n _: 1\n })\n ])\n ]))\n}","interface PageSize {\n width: number\n height: number\n margin: number\n}\n\nconst createIframe = () => {\n const iframe = document.createElement('iframe')\n iframe.style.width = '0'\n iframe.style.height = '0'\n iframe.style.position = 'absolute'\n iframe.style.right = '0'\n iframe.style.top = '0'\n iframe.style.border = '0'\n\n document.body.appendChild(iframe)\n\n return iframe\n}\n\nconst writeContent = (doc: Document, printNode: HTMLElement, size: PageSize) => {\n const docType = ''\n\n let style = ''\n const styleSheets = document.styleSheets\n if (styleSheets) {\n for (const styleSheet of styleSheets) {\n if (!styleSheet.cssRules) continue\n\n for (const rule of styleSheet.cssRules) {\n style += rule.cssText\n }\n }\n }\n\n const { width, height, margin } = size\n const head = `\n \n \n \n `\n const body = '' + printNode.innerHTML + ''\n\n doc.open()\n doc.write(`\n ${docType}\n \n ${head}\n ${body}\n \n `)\n doc.close()\n}\n\nexport const print = (printNode: HTMLElement, size: PageSize) => {\n const iframe = createIframe()\n const iframeContentWindow = iframe.contentWindow\n\n if (!iframe.contentDocument || !iframeContentWindow) return\n writeContent(iframe.contentDocument, printNode, size)\n\n const handleLoadIframe = () => {\n iframeContentWindow.focus()\n iframeContentWindow.print()\n document.body.removeChild(iframe)\n }\n\n iframe.addEventListener('load', handleLoadIframe)\n}","\nimport { defineComponent, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { print } from '@/utils/print'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\n\nexport default defineComponent({\n name: 'export-pdf-dialog',\n components: {\n ThumbnailSlide,\n },\n setup(props, { emit }) {\n const { slides, currentSlide } = storeToRefs(useSlidesStore())\n\n const pdfThumbnailsRef = ref()\n const rangeType = ref<'all' | 'current'>('all')\n const count = ref(1)\n const padding = ref(true)\n\n const close = () => emit('close')\n\n const expPDF = () => {\n if (!pdfThumbnailsRef.value) return\n const pageSize = {\n width: 1600,\n height: rangeType.value === 'all' ? 900 * count.value : 900,\n margin: padding.value ? 50 : 0,\n }\n print(pdfThumbnailsRef.value, pageSize)\n }\n \n return {\n pdfThumbnailsRef,\n slides,\n currentSlide,\n rangeType,\n count,\n padding,\n expPDF,\n close,\n }\n },\n})\n","import { render } from \"./ExportPDF.vue?vue&type=template&id=7c83ddb5&scoped=true&ts=true\"\nimport script from \"./ExportPDF.vue?vue&type=script&lang=ts\"\nexport * from \"./ExportPDF.vue?vue&type=script&lang=ts\"\n\nimport \"./ExportPDF.vue?vue&type=style&index=0&id=7c83ddb5&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-7c83ddb5\"]])\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, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-dad79818\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"export-pptx-dialog\" }\nconst _hoisted_2 = { class: \"configs\" }\nconst _hoisted_3 = { class: \"row\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"导出范围:\", -1))\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\"全部\")\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\"当前页\")\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"自定义\")\nconst _hoisted_8 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_9 = [\"data-range\"]\nconst _hoisted_10 = { class: \"row\" }\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"覆盖默认母版:\", -1))\nconst _hoisted_12 = { class: \"config-item\" }\nconst _hoisted_13 = { class: \"btns\" }\nconst _hoisted_14 = /*#__PURE__*/_createTextVNode(\"导出 PPTX\")\nconst _hoisted_15 = /*#__PURE__*/_createTextVNode(\"关闭\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_RadioButton = _resolveComponent(\"RadioButton\")!\n const _component_RadioGroup = _resolveComponent(\"RadioGroup\")!\n const _component_Slider = _resolveComponent(\"Slider\")!\n const _component_Switch = _resolveComponent(\"Switch\")!\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_FullscreenSpin = _resolveComponent(\"FullscreenSpin\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createVNode(_component_RadioGroup, {\n class: \"config-item\",\n value: _ctx.rangeType,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.rangeType) = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"33.33%\"},\n value: \"all\"\n }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n }),\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"33.33%\"},\n value: \"current\"\n }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n }),\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"33.33%\"},\n value: \"custom\"\n }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n (_ctx.rangeType === 'custom')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createElementVNode(\"div\", {\n class: \"title\",\n \"data-range\": `(${_ctx.range[0]} ~ ${_ctx.range[1]})`\n }, \"自定义范围:\", 8, _hoisted_9),\n _createVNode(_component_Slider, {\n class: \"config-item\",\n range: \"\",\n min: 1,\n max: _ctx.slides.length,\n step: 1,\n value: _ctx.range,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.range) = $event))\n }, null, 8, [\"max\", \"value\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createElementVNode(\"div\", _hoisted_12, [\n _createVNode(_component_Switch, {\n checked: _ctx.masterOverwrite,\n \"onUpdate:checked\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.masterOverwrite) = $event))\n }, null, 8, [\"checked\"])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_13, [\n _createVNode(_component_Button, {\n class: \"btn export\",\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.exportPPTX(_ctx.selectedSlides, _ctx.masterOverwrite)))\n }, {\n default: _withCtx(() => [\n _hoisted_14\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n class: \"btn close\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.close()))\n }, {\n default: _withCtx(() => [\n _hoisted_15\n ]),\n _: 1\n })\n ]),\n _createVNode(_component_FullscreenSpin, {\n loading: _ctx.exporting,\n tip: \"正在导出...\"\n }, null, 8, [\"loading\"])\n ]))\n}","\nimport { computed, defineComponent, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useExport from '@/hooks/useExport'\n\nexport default defineComponent({\n name: 'export-pptx-dialog',\n setup(props, { emit }) {\n const { slides, currentSlide } = storeToRefs(useSlidesStore())\n\n const rangeType = ref<'all' | 'current' | 'custom'>('all')\n const range = ref<[number, number]>([1, slides.value.length])\n const masterOverwrite = ref(true)\n\n const selectedSlides = computed(() => {\n if (rangeType.value === 'all') return slides.value\n if (rangeType.value === 'current') return [currentSlide.value]\n return slides.value.filter((item, index) => {\n const [min, max] = range.value\n return index >= min - 1 && index <= max - 1\n })\n })\n\n const close = () => emit('close')\n\n const { exportPPTX, exporting } = useExport()\n \n return {\n slides,\n rangeType,\n range,\n masterOverwrite,\n exporting,\n selectedSlides,\n exportPPTX,\n close,\n }\n },\n})\n","import { render } from \"./ExportPPTX.vue?vue&type=template&id=dad79818&scoped=true&ts=true\"\nimport script from \"./ExportPPTX.vue?vue&type=script&lang=ts\"\nexport * from \"./ExportPPTX.vue?vue&type=script&lang=ts\"\n\nimport \"./ExportPPTX.vue?vue&type=style&index=0&id=dad79818&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-dad79818\"]])\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, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1e43fa60\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"export-pptist-dialog\" }\nconst _hoisted_2 = { class: \"configs\" }\nconst _hoisted_3 = { class: \"row\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"导出范围:\", -1))\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\"全部\")\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\"当前页\")\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"自定义\")\nconst _hoisted_8 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_9 = [\"data-range\"]\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"tip\" }, \" 提示:.pptist 是本应用的特有文件后缀,支持将该类型的文件导入回应用中。 \", -1))\nconst _hoisted_11 = { class: \"btns\" }\nconst _hoisted_12 = /*#__PURE__*/_createTextVNode(\"导出 .pptist 文件\")\nconst _hoisted_13 = /*#__PURE__*/_createTextVNode(\"关闭\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_RadioButton = _resolveComponent(\"RadioButton\")!\n const _component_RadioGroup = _resolveComponent(\"RadioGroup\")!\n const _component_Slider = _resolveComponent(\"Slider\")!\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 _hoisted_4,\n _createVNode(_component_RadioGroup, {\n class: \"config-item\",\n value: _ctx.rangeType,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.rangeType) = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"33.33%\"},\n value: \"all\"\n }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n }),\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"33.33%\"},\n value: \"current\"\n }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n }),\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"33.33%\"},\n value: \"custom\"\n }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n (_ctx.rangeType === 'custom')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createElementVNode(\"div\", {\n class: \"title\",\n \"data-range\": `(${_ctx.range[0]} ~ ${_ctx.range[1]})`\n }, \"自定义范围:\", 8, _hoisted_9),\n _createVNode(_component_Slider, {\n class: \"config-item\",\n range: \"\",\n min: 1,\n max: _ctx.slides.length,\n step: 1,\n value: _ctx.range,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.range) = $event))\n }, null, 8, [\"max\", \"value\"])\n ]))\n : _createCommentVNode(\"\", true),\n _hoisted_10\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n _createVNode(_component_Button, {\n class: \"btn export\",\n type: \"primary\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.exportSpecificFile(_ctx.selectedSlides)))\n }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n class: \"btn close\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.close()))\n }, {\n default: _withCtx(() => [\n _hoisted_13\n ]),\n _: 1\n })\n ])\n ]))\n}","\nimport { computed, defineComponent, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useExport from '@/hooks/useExport'\n\nexport default defineComponent({\n name: 'export-pptist-dialog',\n setup(props, { emit }) {\n const { slides, currentSlide } = storeToRefs(useSlidesStore())\n\n const rangeType = ref<'all' | 'current' | 'custom'>('all')\n const range = ref<[number, number]>([1, slides.value.length])\n\n const selectedSlides = computed(() => {\n if (rangeType.value === 'all') return slides.value\n if (rangeType.value === 'current') return [currentSlide.value]\n return slides.value.filter((item, index) => {\n const [min, max] = range.value\n return index >= min - 1 && index <= max - 1\n })\n })\n\n const close = () => emit('close')\n\n const { exportSpecificFile } = useExport()\n \n return {\n slides,\n rangeType,\n range,\n selectedSlides,\n exportSpecificFile,\n close,\n }\n },\n})\n","import { render } from \"./ExportSpecificFile.vue?vue&type=template&id=1e43fa60&scoped=true&ts=true\"\nimport script from \"./ExportSpecificFile.vue?vue&type=script&lang=ts\"\nexport * from \"./ExportSpecificFile.vue?vue&type=script&lang=ts\"\n\nimport \"./ExportSpecificFile.vue?vue&type=style&index=0&id=1e43fa60&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-1e43fa60\"]])\n\nexport default __exports__","\nimport { computed, defineComponent } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { DialogForExportTypes } from '@/types/export'\n\nimport ExportImage from './ExportImage.vue'\nimport ExportJSON from './ExportJSON.vue'\nimport ExportPDF from './ExportPDF.vue'\nimport ExportPPTX from './ExportPPTX.vue'\nimport ExportSpecificFile from './ExportSpecificFile.vue'\n\ninterface TabItem {\n key: DialogForExportTypes\n label: string\n}\n\nexport default defineComponent({\n name: 'export-dialog',\n setup() {\n const mainStore = useMainStore()\n const { dialogForExport } = storeToRefs(mainStore)\n\n const setDialogForExport = mainStore.setDialogForExport\n\n const tabs: TabItem[] = [\n { key: 'pptist', label: '导出 pptist 文件' },\n { key: 'pptx', label: '导出 PPTX' },\n { key: 'image', label: '导出图片' },\n { key: 'json', label: '导出 JSON' },\n { key: 'pdf', label: '打印 / 导出 PDF' },\n ]\n\n const currentDialogComponent = computed(() => {\n const dialogMap = {\n 'image': ExportImage,\n 'json': ExportJSON,\n 'pdf': ExportPDF,\n 'pptx': ExportPPTX,\n 'pptist': ExportSpecificFile,\n }\n return dialogMap[dialogForExport.value] || null\n })\n\n return {\n currentDialogComponent,\n tabs,\n dialogForExport,\n setDialogForExport,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=17be277c&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=17be277c&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-17be277c\"]])\n\nexport default __exports__","\nimport { defineComponent, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\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'\nimport ExportDialog from './ExportDialog/index.vue'\n\nexport default defineComponent({\n name: 'editor',\n components: {\n EditorHeader,\n Canvas,\n CanvasTool,\n Thumbnails,\n Toolbar,\n Remark,\n ExportDialog,\n },\n setup() {\n const mainStore = useMainStore()\n const { dialogForExport } = storeToRefs(mainStore)\n const closeExportDialog = () => mainStore.setDialogForExport('')\n\n const remarkHeight = ref(40)\n\n useGlobalHotkey()\n usePasteEvent()\n\n return {\n remarkHeight,\n dialogForExport,\n closeExportDialog,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=5ff9efcc&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=5ff9efcc&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-5ff9efcc\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, 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-18f794c8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"pptist-screen\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_BaseView = _resolveComponent(\"BaseView\")!\n const _component_PresenterView = _resolveComponent(\"PresenterView\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.viewMode === 'base')\n ? (_openBlock(), _createBlock(_component_BaseView, {\n key: 0,\n changeViewMode: _ctx.changeViewMode\n }, null, 8, [\"changeViewMode\"]))\n : (_ctx.viewMode === 'presenter')\n ? (_openBlock(), _createBlock(_component_PresenterView, {\n key: 1,\n changeViewMode: _ctx.changeViewMode\n }, null, 8, [\"changeViewMode\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}","import { resolveComponent as _resolveComponent, resolveDirective as _resolveDirective, createVNode as _createVNode, withDirectives as _withDirectives, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, withCtx as _withCtx, normalizeClass as _normalizeClass, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-54670d0c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"tools-left\" }\nconst _hoisted_2 = { class: \"content\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ScreenSlideList = _resolveComponent(\"ScreenSlideList\")!\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 _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_IconMagic = _resolveComponent(\"IconMagic\")!\n const _component_IconListView = _resolveComponent(\"IconListView\")!\n const _component_IconOffScreenOne = _resolveComponent(\"IconOffScreenOne\")!\n const _component_IconFullScreenOne = _resolveComponent(\"IconFullScreenOne\")!\n const _component_IconPower = _resolveComponent(\"IconPower\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"base-view\", { 'laser-pen': _ctx.laserPen }])\n }, [\n _withDirectives(_createVNode(_component_ScreenSlideList, {\n slideWidth: _ctx.slideWidth,\n slideHeight: _ctx.slideHeight,\n animationIndex: _ctx.animationIndex,\n turnSlideToId: _ctx.turnSlideToId,\n manualExitFullscreen: _ctx.manualExitFullscreen,\n onWheel: _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 }, null, 8, [\"slideWidth\", \"slideHeight\", \"animationIndex\", \"turnSlideToId\", \"manualExitFullscreen\"]), [\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 slideWidth: _ctx.slideWidth,\n slideHeight: _ctx.slideHeight,\n onClose: _cache[4] || (_cache[4] = ($event: any) => (_ctx.writingBoardToolVisible = false))\n }, null, 8, [\"slideWidth\", \"slideHeight\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_1, [\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 ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"tools-right\", { 'visible': _ctx.rightToolsVisible }]),\n onMouseleave: _cache[14] || (_cache[14] = ($event: any) => (_ctx.rightToolsVisible = false)),\n onMouseenter: _cache[15] || (_cache[15] = ($event: any) => (_ctx.rightToolsVisible = true))\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: \"tool-btn page-number\",\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.slideThumbnailModelVisible = true))\n }, \"幻灯片 \" + _toDisplayString(_ctx.slideIndex + 1) + \" / \" + _toDisplayString(_ctx.slides.length), 1),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: \"画笔工具\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconWrite, {\n class: \"tool-btn\",\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.writingBoardToolVisible = true))\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 _createVNode(_component_IconMagic, {\n class: _normalizeClass([\"tool-btn\", { 'active': _ctx.laserPen }]),\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.laserPen = !_ctx.laserPen))\n }, null, 8, [\"class\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: \"演讲者视图\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconListView, {\n class: \"tool-btn\",\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.changeViewMode('presenter')))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: _ctx.fullscreenState ? '退出全屏' : '进入全屏'\n }, {\n default: _withCtx(() => [\n (_ctx.fullscreenState)\n ? (_openBlock(), _createBlock(_component_IconOffScreenOne, {\n key: 0,\n class: \"tool-btn\",\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_ctx.manualExitFullscreen()))\n }))\n : (_openBlock(), _createBlock(_component_IconFullScreenOne, {\n key: 1,\n class: \"tool-btn\",\n onClick: _cache[12] || (_cache[12] = ($event: any) => (_ctx.enterFullscreen()))\n }))\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\", \"title\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: \"结束放映\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconPower, {\n class: \"tool-btn\",\n onClick: _cache[13] || (_cache[13] = ($event: any) => (_ctx.exitScreening()))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ])\n ], 34)\n ], 2))\n}","import { onMounted, onUnmounted, ref } from 'vue'\nimport { throttle } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { KEYS } from '@/configs/hotkey'\nimport { ANIMATION_CLASS_PREFIX } from '@/configs/animation'\n\nimport { message } from 'ant-design-vue'\n\nexport default () => {\n const slidesStore = useSlidesStore()\n const { slides, slideIndex, formatedAnimations } = storeToRefs(slidesStore)\n\n // 当前页的元素动画执行到的位置\n const animationIndex = ref(0)\n\n // 动画执行状态\n const inAnimation = ref(false)\n\n // 最小已播放页面索引\n const playedSlidesMinIndex = ref(slideIndex.value)\n\n // 执行元素动画\n const runAnimation = () => {\n // 正在执行动画时,禁止其他新的动画开始\n if (inAnimation.value) return\n\n const { animations, autoNext } = formatedAnimations.value[animationIndex.value]\n animationIndex.value += 1\n\n // 标记开始执行动画\n inAnimation.value = true\n\n let endAnimationCount = 0\n\n // 依次执行该位置中的全部动画\n for (const animation of animations) {\n const elRef: HTMLElement | null = document.querySelector(`#screen-element-${animation.elId} [class^=base-element-]`)\n if (!elRef) {\n endAnimationCount += 1\n continue\n }\n\n const animationName = `${ANIMATION_CLASS_PREFIX}${animation.effect}`\n \n // 执行动画前先清除原有的动画状态(如果有)\n elRef.style.removeProperty('--animate-duration')\n for (const classname of elRef.classList) {\n if (classname.indexOf(ANIMATION_CLASS_PREFIX) !== -1) elRef.classList.remove(classname, `${ANIMATION_CLASS_PREFIX}animated`)\n }\n \n // 执行动画\n elRef.style.setProperty('--animate-duration', `${animation.duration}ms`)\n elRef.classList.add(animationName, `${ANIMATION_CLASS_PREFIX}animated`)\n\n // 执行动画结束,将“退场”以外的动画状态清除\n const handleAnimationEnd = () => {\n if (animation.type !== 'out') {\n elRef.style.removeProperty('--animate-duration')\n elRef.classList.remove(animationName, `${ANIMATION_CLASS_PREFIX}animated`)\n }\n\n // 判断该位置上的全部动画都已经结束后,标记动画执行完成,并尝试继续向下执行(如果有需要)\n endAnimationCount += 1\n if (endAnimationCount === animations.length) {\n inAnimation.value = false\n if (autoNext) runAnimation()\n }\n }\n elRef.addEventListener('animationend', handleAnimationEnd, { once: true })\n }\n }\n\n // 撤销元素动画,除了将索引前移外,还需要清除动画状态\n const revokeAnimation = () => {\n animationIndex.value -= 1\n const { animations } = formatedAnimations.value[animationIndex.value]\n\n for (const animation of animations) {\n const elRef: HTMLElement | null = document.querySelector(`#screen-element-${animation.elId} [class^=base-element-]`)\n if (!elRef) continue\n \n elRef.style.removeProperty('--animate-duration')\n for (const classname of elRef.classList) {\n if (classname.indexOf(ANIMATION_CLASS_PREFIX) !== -1) elRef.classList.remove(classname, `${ANIMATION_CLASS_PREFIX}animated`)\n }\n }\n\n // 如果撤销时该位置有且仅有强调动画,则继续执行一次撤销\n if (animations.every(item => item.type === 'attention')) execPrev()\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 // 撤回到上一页时,若该页从未播放过(意味着不存在动画状态),需要将动画索引置为最小值(初始状态),否则置为最大值(最终状态)\n const execPrev = () => {\n if (formatedAnimations.value.length && animationIndex.value > 0) {\n revokeAnimation()\n }\n else if (slideIndex.value > 0) {\n slidesStore.updateSlideIndex(slideIndex.value - 1)\n if (slideIndex.value < playedSlidesMinIndex.value) {\n animationIndex.value = 0\n playedSlidesMinIndex.value = slideIndex.value\n }\n else animationIndex.value = formatedAnimations.value.length\n inAnimation.value = false\n }\n else {\n throttleMassage('已经是第一页了')\n inAnimation.value = false\n }\n }\n const execNext = () => {\n if (formatedAnimations.value.length && animationIndex.value < formatedAnimations.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 inAnimation.value = false\n }\n else {\n throttleMassage('已经是最后一页了')\n closeAutoPlay()\n inAnimation.value = false\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\n if (key === KEYS.UP || key === KEYS.LEFT || key === KEYS.PAGEUP) execPrev()\n else if (\n key === KEYS.DOWN || \n key === KEYS.RIGHT ||\n key === KEYS.SPACE || \n key === KEYS.ENTER ||\n key === KEYS.PAGEDOWN\n ) execNext()\n }\n\n onMounted(() => document.addEventListener('keydown', keydownListener))\n onUnmounted(() => document.removeEventListener('keydown', keydownListener))\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 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 return {\n autoPlayTimer,\n autoPlay,\n closeAutoPlay,\n mousewheelListener,\n touchStartListener,\n touchEndListener,\n turnPrevSlide,\n turnNextSlide,\n turnSlideToIndex,\n turnSlideToId,\n execPrev,\n execNext,\n animationIndex,\n }\n}","import { onMounted, onUnmounted, Ref, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\n\nexport default (wrapRef?: Ref) => {\n const slidesStore = useSlidesStore()\n const { viewportRatio } = storeToRefs(slidesStore)\n\n const slideWidth = ref(0)\n const slideHeight = ref(0)\n\n // 计算和更新幻灯片内容的尺寸(按比例自适应屏幕)\n const setSlideContentSize = () => {\n const slideWrapRef = wrapRef?.value || document.body\n const winWidth = slideWrapRef.clientWidth\n const winHeight = slideWrapRef.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 onMounted(() => {\n setSlideContentSize()\n window.addEventListener('resize', setSlideContentSize)\n })\n onUnmounted(() => {\n window.removeEventListener('resize', setSlideContentSize)\n })\n\n return {\n slideWidth,\n slideHeight,\n }\n}","import { onMounted, onUnmounted, ref } from 'vue'\nimport { isFullscreen, exitFullscreen } from '@/utils/fullscreen'\nimport useScreening from '@/hooks/useScreening'\n\nexport default () => {\n const fullscreenState = ref(true)\n const escExit = ref(true)\n\n const { exitScreening } = useScreening()\n\n const handleFullscreenChange = () => {\n fullscreenState.value = isFullscreen()\n if (!fullscreenState.value && escExit.value) exitScreening()\n\n escExit.value = true\n }\n\n onMounted(() => {\n fullscreenState.value = isFullscreen()\n document.addEventListener('fullscreenchange', handleFullscreenChange)\n document.addEventListener('webkitfullscreenchange', handleFullscreenChange) // Safari 兼容\n })\n onUnmounted(() => {\n document.removeEventListener('fullscreenchange', handleFullscreenChange)\n document.removeEventListener('webkitfullscreenchange', handleFullscreenChange)\n })\n\n const manualExitFullscreen = () => {\n if (!fullscreenState.value) return\n escExit.value = false\n exitFullscreen()\n }\n\n return {\n fullscreenState,\n manualExitFullscreen,\n }\n}","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, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-01900375\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"screen-slide-list\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ScreenSlide = _resolveComponent(\"ScreenSlide\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\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 || slide.animations?.length)\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 manualExitFullscreen: _ctx.manualExitFullscreen\n }, null, 8, [\"slide\", \"scale\", \"animationIndex\", \"turnSlideToId\", \"manualExitFullscreen\"])\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 2))\n }), 128))\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 manualExitFullscreen: _ctx.manualExitFullscreen\n }, null, 8, [\"elementInfo\", \"elementIndex\", \"animationIndex\", \"turnSlideToId\", \"manualExitFullscreen\"]))\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-0b036cf9\"),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 }, 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=64f0abfc&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-0ef8b6c0\"),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 } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { PPTVideoElement } from '@/types/slides'\nimport { injectKeySlideId, injectKeySlideScale } from '@/types/injectKey'\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 = inject(injectKeySlideScale) || ref(1)\n const slideId = inject(injectKeySlideId) || 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=0ef8b6c0&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=0ef8b6c0&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-0ef8b6c0\"]])\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-1adba489\"),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 } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { PPTAudioElement } from '@/types/slides'\nimport { injectKeySlideId, injectKeySlideScale } from '@/types/injectKey'\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 = inject(injectKeySlideScale) || ref(1)\n const slideId = inject(injectKeySlideId) || 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=1adba489&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=1adba489&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-1adba489\"]])\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 required: true,\n },\n turnSlideToId: {\n type: Function as PropType<(id: string) => void>,\n required: true,\n },\n manualExitFullscreen: {\n type: Function as PropType<() => 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 { formatedAnimations, theme } = storeToRefs(useSlidesStore())\n\n // 判断元素是否需要等待执行入场动画:等待执行入场的元素需要先隐藏\n const needWaitAnimation = computed(() => {\n // 该元素在本页动画序列中的位置\n const elementIndexInAnimation = formatedAnimations.value.findIndex(item => {\n const elIds = item.animations.map(item => item.elId)\n return elIds.includes(props.elementInfo.id)\n })\n\n // 该元素未设置过动画\n if (elementIndexInAnimation === -1) return false\n\n // 若该元素已执行过动画,都无须隐藏\n // 具体来说:若已执行的最后一个动画为入场,显然无须隐藏;若已执行的最后一个动画为退场,由于保留了退场动画结束状态,也无需额外隐藏\n if (elementIndexInAnimation < props.animationIndex) return false\n\n // 若该元素未执行过动画,获取其将要执行的第一个动画\n // 若将要执行的第一个动画为入场,则需要隐藏,否则无须隐藏\n const firstAnimation = formatedAnimations.value[elementIndexInAnimation].animations.find(item => item.elId === props.elementInfo.id)\n if (firstAnimation?.type === 'in') return true\n return false\n })\n\n // 打开元素绑定的超链接\n const openLink = () => {\n const link = props.elementInfo.link\n if (!link) return\n\n if (link.type === 'web') {\n props.manualExitFullscreen()\n window.open(link.target)\n }\n else if (link.type === 'slide') {\n 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=0b036cf9&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=0b036cf9&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-0b036cf9\"]])\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 { injectKeySlideId } from '@/types/injectKey'\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 required: true,\n },\n turnSlideToId: {\n type: Function as PropType<(id: string) => void>,\n required: true,\n },\n manualExitFullscreen: {\n type: Function as PropType<() => 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(injectKeySlideId, slideId)\n\n return {\n backgroundStyle,\n VIEWPORT_SIZE,\n viewportRatio,\n }\n },\n})\n","import { render } from \"./ScreenSlide.vue?vue&type=template&id=19ab4349&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=19ab4349&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-19ab4349\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, PropType, provide } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { injectKeySlideScale } from '@/types/injectKey'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\n\nimport ScreenSlide from './ScreenSlide.vue'\n\nexport default defineComponent({\n name: 'screen-slide-list',\n components: {\n ScreenSlide,\n },\n props: {\n slideWidth: {\n type: Number,\n required: true,\n },\n slideHeight: {\n type: Number,\n required: true,\n },\n animationIndex: {\n type: Number,\n required: true,\n },\n turnSlideToId: {\n type: Function as PropType<(id: string) => void>,\n required: true,\n },\n manualExitFullscreen: {\n type: Function as PropType<() => void>,\n required: true,\n },\n },\n setup(props) {\n const { slides, slideIndex, currentSlide } = storeToRefs(useSlidesStore())\n\n const scale = computed(() => props.slideWidth / VIEWPORT_SIZE)\n provide(injectKeySlideScale, scale)\n\n return {\n slides,\n slideIndex,\n currentSlide,\n scale,\n }\n },\n})\n","import { render } from \"./ScreenSlideList.vue?vue&type=template&id=01900375&scoped=true&ts=true\"\nimport script from \"./ScreenSlideList.vue?vue&type=script&lang=ts\"\nexport * from \"./ScreenSlideList.vue?vue&type=script&lang=ts\"\n\nimport \"./ScreenSlideList.vue?vue&type=style&index=0&id=01900375&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-01900375\"]])\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-11e5b856\"),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.turnSlide(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 required: true,\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 const turnSlide = (index: number) => {\n props.turnSlideToIndex(index)\n close()\n }\n\n return {\n slides,\n slideIndex,\n slidesLoadLimit,\n turnSlide,\n close,\n }\n },\n})\n","import { render } from \"./SlideThumbnails.vue?vue&type=template&id=11e5b856&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=11e5b856&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-11e5b856\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3ca1d362\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"writing-board-tool\" }\nconst _hoisted_2 = { class: \"colors\" }\nconst _hoisted_3 = [\"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_IconHighLight = _resolveComponent(\"IconHighLight\")!\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 _createElementVNode(\"div\", {\n class: \"writing-board-wrap\",\n style: _normalizeStyle({\n width: _ctx.slideWidth + 'px',\n height: _ctx.slideHeight + 'px',\n })\n }, [\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 ], 4),\n _createElementVNode(\"div\", {\n class: \"tools\",\n style: _normalizeStyle(_ctx.position)\n }, [\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.changeModel('pen')))\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 === 'mark' }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.changeModel('mark')))\n }, [\n _createVNode(_component_IconHighLight, { 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[2] || (_cache[2] = ($event: any) => (_ctx.changeModel('eraser')))\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[3] || (_cache[3] = ($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[4] || (_cache[4] = ($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_2, [\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_3))\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[5] || (_cache[5] = ($event: any) => (_ctx.closeWritingBoard()))\n }, [\n _createVNode(_component_IconClose, { class: \"icon\" })\n ])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ], 4)\n ]))\n}","import { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9ac1670a\"),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 const _component_IconHighLight = _resolveComponent(\"IconHighLight\")!\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 style: _normalizeStyle({\n width: _ctx.canvasWidth + 'px',\n height: _ctx.canvasHeight + 'px',\n }),\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 onWheel: _cache[8] || (_cache[8] = $event => _ctx.mousewheelListener($event))\n }, null, 36),\n (_ctx.mouseInCanvas)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n (_ctx.model === 'eraser')\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\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 (_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 - _ctx.penSize * 6 + _ctx.penSize / 2 + 'px',\n color: _ctx.color,\n })\n }, [\n (_ctx.model === 'pen')\n ? (_openBlock(), _createBlock(_component_IconWrite, {\n key: 0,\n class: \"icon\",\n size: _ctx.penSize * 6\n }, null, 8, [\"size\"]))\n : _createCommentVNode(\"\", true)\n ], 4))\n : _createCommentVNode(\"\", true),\n (_ctx.model === 'mark')\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 2,\n class: \"pen\",\n style: _normalizeStyle({\n left: _ctx.mouse.x - _ctx.markSize / 2 + 'px',\n top: _ctx.mouse.y + 'px',\n color: _ctx.color,\n })\n }, [\n (_ctx.model === 'mark')\n ? (_openBlock(), _createBlock(_component_IconHighLight, {\n key: 0,\n class: \"icon\",\n size: _ctx.markSize * 1.5\n }, null, 8, [\"size\"]))\n : _createCommentVNode(\"\", true)\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 64))\n : _createCommentVNode(\"\", true)\n ], 512))\n}","\nimport { computed, defineComponent, onMounted, onUnmounted, PropType, ref, watch } from 'vue'\nimport { throttle } from 'lodash'\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' | 'mark'>,\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 const penSize = ref(6)\n const rubberSize = ref(80)\n const markSize = ref(24)\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 = ref({\n x: 0,\n y: 0,\n })\n \n // 鼠标是否处在画布范围内:处在范围内才会显示画笔或橡皮\n const mouseInCanvas = ref(false)\n\n // 监听更新canvas尺寸\n const canvasWidth = ref(0)\n const canvasHeight = ref(0)\n\n const widthScale = computed(() => canvasRef.value ? canvasWidth.value / canvasRef.value.width : 1)\n const heightScale = computed(() => canvasRef.value ? canvasHeight.value / canvasRef.value.height : 1)\n\n const updateCanvasSize = () => {\n if (!writingBoardRef.value) return\n canvasWidth.value = writingBoardRef.value.clientWidth\n canvasHeight.value = writingBoardRef.value.clientHeight\n }\n const resizeObserver = new ResizeObserver(updateCanvasSize)\n onMounted(() => {\n if (writingBoardRef.value) resizeObserver.observe(writingBoardRef.value)\n })\n onUnmounted(() => {\n if (writingBoardRef.value) resizeObserver.unobserve(writingBoardRef.value)\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 ctx.lineCap = 'round'\n ctx.lineJoin = 'round'\n }\n onMounted(initCanvas)\n\n // 切换画笔模式时,更新 canvas ctx 配置\n const updateCtx = () => {\n if (!ctx) return\n if (props.model === 'mark') {\n ctx.globalCompositeOperation = 'xor'\n ctx.globalAlpha = 0.5\n }\n else if (props.model === 'pen') {\n ctx.globalCompositeOperation = 'source-over'\n ctx.globalAlpha = 1\n }\n }\n watch(() => props.model, updateCtx)\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.value / 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.value\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 if (props.model === 'mark') draw(x, y, markSize.value)\n else erase(x, y)\n\n lastPos = { x, y }\n lastTime = new Date().getTime()\n }\n\n // 获取鼠标在canvas中的相对位置\n const getMouseOffsetPosition = (e: MouseEvent | TouchEvent) => {\n if (!canvasRef.value) return [0, 0]\n const event = e instanceof MouseEvent ? e : e.changedTouches[0]\n const canvasRect = canvasRef.value.getBoundingClientRect()\n const x = event.pageX - canvasRect.x\n const y = event.pageY - canvasRect.y\n return [x, y]\n }\n\n // 处理鼠标(触摸)事件\n // 准备开始绘制/擦除墨迹(落笔)\n const handleMousedown = (e: MouseEvent | TouchEvent) => {\n const [mouseX, mouseY] = getMouseOffsetPosition(e)\n const x = mouseX / widthScale.value\n const y = mouseY / heightScale.value\n\n isMouseDown = true\n lastPos = { x, y }\n lastTime = new Date().getTime()\n\n if (!(e instanceof MouseEvent)) {\n mouse.value = { x: mouseX, y: mouseY }\n mouseInCanvas.value = true\n }\n }\n\n // 开始绘制/擦除墨迹(移动)\n const handleMousemove = (e: MouseEvent | TouchEvent) => {\n const [mouseX, mouseY] = getMouseOffsetPosition(e)\n const x = mouseX / widthScale.value\n const y = mouseY / heightScale.value\n\n mouse.value = { x: mouseX, y: mouseY }\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 // 获取 DataURL\n const getImageDataURL = () => {\n return canvasRef.value?.toDataURL()\n }\n \n // 设置 DataURL(绘制图片到 canvas)\n const setImageDataURL = (imageDataURL: string) => {\n const img = new Image()\n img.src = imageDataURL\n img.onload = () => {\n if (!ctx) return\n ctx.drawImage(img, 0, 0)\n }\n }\n\n // 滚动鼠标滚轮,调整笔触大小\n const mousewheelListener = throttle(function(e: WheelEvent) {\n if (props.model === 'eraser') {\n if (e.deltaY < 0 && rubberSize.value < 200) rubberSize.value += 20\n else if (e.deltaY > 0 && rubberSize.value > 20) rubberSize.value -= 20\n }\n if (props.model === 'pen') {\n if (e.deltaY < 0 && penSize.value < 10) penSize.value += 2\n else if (e.deltaY > 0 && penSize.value > 4) penSize.value -= 2\n }\n if (props.model === 'mark') {\n if (e.deltaY < 0 && markSize.value < 40) markSize.value += 4\n else if (e.deltaY > 0 && markSize.value > 16) markSize.value -= 4\n }\n }, 300, { leading: true, trailing: false })\n\n return {\n mouse,\n mouseInCanvas,\n penSize,\n rubberSize,\n markSize,\n writingBoardRef,\n canvasRef,\n canvasWidth,\n canvasHeight,\n handleMousedown,\n handleMousemove,\n handleMouseup,\n clearCanvas,\n getImageDataURL,\n setImageDataURL,\n mousewheelListener,\n }\n },\n})\n","import { render } from \"./WritingBoard.vue?vue&type=template&id=9ac1670a&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=9ac1670a&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-9ac1670a\"]])\n\nexport default __exports__","\nimport { defineComponent, PropType, ref, StyleValue } from 'vue'\nimport WritingBoard from '@/components/WritingBoard.vue'\n\nconst writingBoardColors = ['#000000', '#ffffff', '#1e497b', '#4e81bb', '#e2534d', '#9aba60', '#8165a0', '#47acc5', '#f9974c', '#ffff3a']\n\ntype WritingBoardModel = 'pen' | 'mark' | 'eraser'\n\nexport default defineComponent({\n name: 'writing-board-tool',\n emits: ['close'],\n components: {\n WritingBoard,\n },\n props: {\n slideWidth: {\n type: Number,\n required: true,\n },\n slideHeight: {\n type: Number,\n required: true,\n },\n position: {\n type: Object as PropType,\n default: () => ({\n right: '5px',\n bottom: '5px',\n })\n },\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 const changeModel = (model: WritingBoardModel) => {\n writingBoardModel.value = model\n }\n\n // 清除画布上的墨迹\n const clearCanvas = () => {\n writingBoardRef.value.clearCanvas()\n }\n\n // 修改画笔颜色,如果当前处于橡皮状态则先切换到画笔状态\n const changeColor = (color: string) => {\n if (writingBoardModel.value === 'eraser') 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 changeModel,\n clearCanvas,\n changeColor,\n closeWritingBoard,\n }\n },\n})\n","import { render } from \"./WritingBoardTool.vue?vue&type=template&id=3ca1d362&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=3ca1d362&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-3ca1d362\"]])\n\nexport default __exports__","\nimport { defineComponent, PropType, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport { enterFullscreen } from '@/utils/fullscreen'\nimport useScreening from '@/hooks/useScreening'\nimport useExecPlay from './hooks/useExecPlay'\nimport useSlideSize from './hooks/useSlideSize'\nimport useFullscreen from './hooks/useFullscreen'\n\nimport ScreenSlideList from './ScreenSlideList.vue'\nimport SlideThumbnails from './SlideThumbnails.vue'\nimport WritingBoardTool from './WritingBoardTool.vue'\n\nexport default defineComponent({\n name: 'screen',\n components: {\n ScreenSlideList,\n SlideThumbnails,\n WritingBoardTool,\n },\n props: {\n changeViewMode: {\n type: Function as PropType<(mode: 'base' | 'presenter') => void>,\n required: true,\n },\n },\n setup(props) {\n const { slides, slideIndex } = storeToRefs(useSlidesStore())\n\n const {\n autoPlayTimer,\n autoPlay,\n closeAutoPlay,\n mousewheelListener,\n touchStartListener,\n touchEndListener,\n turnPrevSlide,\n turnNextSlide,\n turnSlideToIndex,\n turnSlideToId,\n execPrev,\n execNext,\n animationIndex,\n } = useExecPlay()\n\n const { slideWidth, slideHeight } = useSlideSize()\n const { exitScreening } = useScreening()\n const { fullscreenState, manualExitFullscreen } = useFullscreen()\n\n const rightToolsVisible = ref(false)\n const writingBoardToolVisible = ref(false)\n const slideThumbnailModelVisible = ref(false)\n const laserPen = ref(false)\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 handler: () => rightToolsVisible.value = true,\n },\n {\n text: '查看所有幻灯片',\n handler: () => slideThumbnailModelVisible.value = true,\n },\n {\n text: '画笔工具',\n handler: () => writingBoardToolVisible.value = true,\n },\n {\n text: '演讲者视图',\n handler: () => props.changeViewMode('presenter'),\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 return {\n slides,\n slideIndex,\n slideWidth,\n slideHeight,\n mousewheelListener,\n touchStartListener,\n touchEndListener,\n animationIndex,\n contextmenus,\n execPrev,\n execNext,\n turnSlideToIndex,\n turnSlideToId,\n slideThumbnailModelVisible,\n writingBoardToolVisible,\n rightToolsVisible,\n fullscreenState,\n exitScreening,\n enterFullscreen,\n manualExitFullscreen,\n laserPen,\n }\n },\n})\n","import { render } from \"./BaseView.vue?vue&type=template&id=54670d0c&scoped=true&ts=true\"\nimport script from \"./BaseView.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseView.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseView.vue?vue&type=style&index=0&id=54670d0c&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-54670d0c\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, resolveDirective as _resolveDirective, withDirectives as _withDirectives, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, withModifiers as _withModifiers, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-ce50b150\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"presenter-view\" }\nconst _hoisted_2 = { class: \"toolbar\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"普通视图\", -1))\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"画笔\", -1))\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"激光笔\", -1))\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"结束放映\", -1))\nconst _hoisted_7 = { class: \"content\" }\nconst _hoisted_8 = [\"onClick\"]\nconst _hoisted_9 = { class: \"remark\" }\nconst _hoisted_10 = { class: \"header\" }\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"演讲者备注\", -1))\nconst _hoisted_12 = [\"innerHTML\"]\nconst _hoisted_13 = { class: \"remark-scale\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconListView = _resolveComponent(\"IconListView\")!\n const _component_IconWrite = _resolveComponent(\"IconWrite\")!\n const _component_IconMagic = _resolveComponent(\"IconMagic\")!\n const _component_IconOffScreenOne = _resolveComponent(\"IconOffScreenOne\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_IconPower = _resolveComponent(\"IconPower\")!\n const _component_ScreenSlideList = _resolveComponent(\"ScreenSlideList\")!\n const _component_WritingBoardTool = _resolveComponent(\"WritingBoardTool\")!\n const _component_ThumbnailSlide = _resolveComponent(\"ThumbnailSlide\")!\n const _component_IconMinus = _resolveComponent(\"IconMinus\")!\n const _component_IconPlus = _resolveComponent(\"IconPlus\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: \"tool-btn\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.changeViewMode('base')))\n }, [\n _createVNode(_component_IconListView, { class: \"tool-icon\" }),\n _hoisted_3\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"tool-btn\", { 'active': _ctx.writingBoardToolVisible }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.writingBoardToolVisible = !_ctx.writingBoardToolVisible))\n }, [\n _createVNode(_component_IconWrite, { class: \"tool-icon\" }),\n _hoisted_4\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"tool-btn\", { 'active': _ctx.laserPen }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.laserPen = !_ctx.laserPen))\n }, [\n _createVNode(_component_IconMagic, { class: \"tool-icon\" }),\n _hoisted_5\n ], 2),\n _createElementVNode(\"div\", {\n class: \"tool-btn\",\n onClick: _cache[3] || (_cache[3] = () => _ctx.fullscreenState ? _ctx.manualExitFullscreen() : _ctx.enterFullscreen())\n }, [\n (_ctx.fullscreenState)\n ? (_openBlock(), _createBlock(_component_IconOffScreenOne, {\n key: 0,\n class: \"tool-icon\"\n }))\n : (_openBlock(), _createBlock(_component_IconOffScreenOne, {\n key: 1,\n class: \"tool-icon\"\n })),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.fullscreenState ? '退出全屏' : '全屏'), 1)\n ]),\n _createVNode(_component_Divider, { class: \"divider\" }),\n _createElementVNode(\"div\", {\n class: \"tool-btn\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.exitScreening()))\n }, [\n _createVNode(_component_IconPower, { class: \"tool-icon\" }),\n _hoisted_6\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"slide-list-wrap\", { 'laser-pen': _ctx.laserPen }]),\n ref: \"slideListWrapRef\"\n }, [\n _withDirectives(_createVNode(_component_ScreenSlideList, {\n slideWidth: _ctx.slideWidth,\n slideHeight: _ctx.slideHeight,\n animationIndex: _ctx.animationIndex,\n turnSlideToId: _ctx.turnSlideToId,\n manualExitFullscreen: _ctx.manualExitFullscreen,\n onWheel: _cache[5] || (_cache[5] = $event => _ctx.mousewheelListener($event)),\n onTouchstart: _cache[6] || (_cache[6] = $event => _ctx.touchStartListener($event)),\n onTouchend: _cache[7] || (_cache[7] = $event => _ctx.touchEndListener($event))\n }, null, 8, [\"slideWidth\", \"slideHeight\", \"animationIndex\", \"turnSlideToId\", \"manualExitFullscreen\"]), [\n [_directive_contextmenu, _ctx.contextmenus]\n ]),\n (_ctx.writingBoardToolVisible)\n ? (_openBlock(), _createBlock(_component_WritingBoardTool, {\n key: 0,\n slideWidth: _ctx.slideWidth,\n slideHeight: _ctx.slideHeight,\n position: {\n left: '75px',\n top: '5px',\n },\n onClose: _cache[8] || (_cache[8] = ($event: any) => (_ctx.writingBoardToolVisible = false))\n }, null, 8, [\"slideWidth\", \"slideHeight\"]))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"div\", {\n class: \"thumbnails\",\n ref: \"thumbnailsRef\",\n onWheel: _cache[9] || (_cache[9] = _withModifiers($event => _ctx.handleMousewheelThumbnails($event), [\"prevent\"]))\n }, [\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: 120 / _ctx.viewportRatio,\n visible: index < _ctx.slidesLoadLimit\n }, null, 8, [\"slide\", \"size\", \"visible\"])\n ], 10, _hoisted_8))\n }), 128))\n ], 544)\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createElementVNode(\"span\", null, \"P \" + _toDisplayString(_ctx.slideIndex + 1) + \" / \" + _toDisplayString(_ctx.slides.length), 1)\n ]),\n _createElementVNode(\"div\", {\n class: \"remark-content\",\n style: _normalizeStyle({ fontSize: _ctx.remarkFontSize + 'px' }),\n innerHTML: _ctx.currentSlideRemark\n }, null, 12, _hoisted_12),\n _createElementVNode(\"div\", _hoisted_13, [\n _createElementVNode(\"div\", {\n class: _normalizeClass(['scale-btn', { 'disable': _ctx.remarkFontSize === 12 }]),\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.setRemarkFontSize(_ctx.remarkFontSize - 2)))\n }, [\n _createVNode(_component_IconMinus)\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass(['scale-btn', { 'disable': _ctx.remarkFontSize === 40 }]),\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_ctx.setRemarkFontSize(_ctx.remarkFontSize + 2)))\n }, [\n _createVNode(_component_IconPlus)\n ], 2)\n ])\n ])\n ]))\n}","\nimport { computed, defineComponent, nextTick, ref, watch, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport { enterFullscreen } from '@/utils/fullscreen'\nimport { parseText2Paragraphs } from '@/utils/textParser'\nimport useScreening from '@/hooks/useScreening'\nimport useLoadSlides from '@/hooks/useLoadSlides'\nimport useExecPlay from './hooks/useExecPlay'\nimport useSlideSize from './hooks/useSlideSize'\nimport useFullscreen from './hooks/useFullscreen'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\nimport ScreenSlideList from './ScreenSlideList.vue'\nimport WritingBoardTool from './WritingBoardTool.vue'\n\nexport default defineComponent({\n name: 'presenter-view',\n components: {\n ScreenSlideList,\n ThumbnailSlide,\n WritingBoardTool,\n },\n props: {\n changeViewMode: {\n type: Function as PropType<(mode: 'base' | 'presenter') => void>,\n required: true,\n },\n },\n setup(props) {\n const { slides, slideIndex, viewportRatio, currentSlide } = storeToRefs(useSlidesStore())\n\n const slideListWrapRef = ref()\n const thumbnailsRef = ref()\n const writingBoardToolVisible = ref(false)\n const laserPen = ref(false)\n\n const {\n mousewheelListener,\n touchStartListener,\n touchEndListener,\n turnPrevSlide,\n turnNextSlide,\n turnSlideToIndex,\n turnSlideToId,\n animationIndex,\n } = useExecPlay()\n\n const { slideWidth, slideHeight } = useSlideSize(slideListWrapRef)\n const { exitScreening } = useScreening()\n const { slidesLoadLimit } = useLoadSlides()\n const { fullscreenState, manualExitFullscreen } = useFullscreen()\n\n const remarkFontSize = ref(16)\n const currentSlideRemark = computed(() => {\n return parseText2Paragraphs(currentSlide.value.remark || '无备注')\n })\n\n const handleMousewheelThumbnails = (e: WheelEvent) => {\n if (!thumbnailsRef.value) return\n thumbnailsRef.value.scrollBy(e.deltaY, 0)\n }\n\n const setRemarkFontSize = (fontSize: number) => {\n if (fontSize < 12 || fontSize > 40) return\n remarkFontSize.value = fontSize\n }\n\n watch(slideIndex, () => {\n nextTick(() => {\n if (!thumbnailsRef.value) return\n\n const activeThumbnailRef: HTMLElement | null = thumbnailsRef.value.querySelector('.thumbnail.active')\n if (!activeThumbnailRef) return\n\n const width = thumbnailsRef.value.offsetWidth\n const offsetLeft = activeThumbnailRef.offsetLeft\n thumbnailsRef.value.scrollTo({ left: offsetLeft - width / 2, behavior: 'smooth' })\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 handler: () => writingBoardToolVisible.value = true,\n },\n {\n text: '普通视图',\n handler: () => props.changeViewMode('base'),\n },\n { divider: true },\n {\n text: '结束放映',\n subText: 'ESC',\n handler: exitScreening,\n },\n ]\n }\n\n return {\n slides,\n slideIndex,\n viewportRatio,\n remarkFontSize,\n currentSlideRemark,\n setRemarkFontSize,\n slideListWrapRef,\n thumbnailsRef,\n slideWidth,\n slideHeight,\n animationIndex,\n turnSlideToId,\n mousewheelListener,\n touchStartListener,\n touchEndListener,\n turnSlideToIndex,\n contextmenus,\n slidesLoadLimit,\n handleMousewheelThumbnails,\n exitScreening,\n fullscreenState,\n enterFullscreen,\n manualExitFullscreen,\n writingBoardToolVisible,\n laserPen,\n }\n },\n})\n","import { render } from \"./PresenterView.vue?vue&type=template&id=ce50b150&scoped=true&ts=true\"\nimport script from \"./PresenterView.vue?vue&type=script&lang=ts\"\nexport * from \"./PresenterView.vue?vue&type=script&lang=ts\"\n\nimport \"./PresenterView.vue?vue&type=style&index=0&id=ce50b150&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-ce50b150\"]])\n\nexport default __exports__","\nimport { defineComponent, onMounted, onUnmounted, ref } from 'vue'\nimport { KEYS } from '@/configs/hotkey'\nimport useScreening from '@/hooks/useScreening'\n\nimport BaseView from './BaseView.vue'\nimport PresenterView from './PresenterView.vue'\n\nexport default defineComponent({\n name: 'pptist-screen',\n components: {\n BaseView,\n PresenterView,\n },\n setup() {\n const viewMode = ref<'base' | 'presenter'>('base')\n\n const changeViewMode = (mode: 'base' | 'presenter') => {\n viewMode.value = mode\n }\n\n const { exitScreening } = useScreening()\n\n // 快捷键退出放映\n const keydownListener = (e: KeyboardEvent) => {\n const key = e.key.toUpperCase()\n if (key === KEYS.ESC) exitScreening()\n }\n\n onMounted(() => document.addEventListener('keydown', keydownListener))\n onUnmounted(() => document.removeEventListener('keydown', keydownListener))\n\n return {\n viewMode,\n changeViewMode,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=18f794c8&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=18f794c8&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-18f794c8\"]])\n\nexport default __exports__","import { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-efaecbfe\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mobile\" }\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(), _createBlock(_resolveDynamicComponent(_ctx.currentComponent), { changeMode: _ctx.changeMode }, null, 8, [\"changeMode\"]))\n ]))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f9ea6e88\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mobile-editor\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Header = _resolveComponent(\"Header\")!\n const _component_AlignmentLine = _resolveComponent(\"AlignmentLine\")!\n const _component_MobileOperate = _resolveComponent(\"MobileOperate\")!\n const _component_MobileEditableElement = _resolveComponent(\"MobileEditableElement\")!\n const _component_SlideToolbar = _resolveComponent(\"SlideToolbar\")!\n const _component_ElementToolbar = _resolveComponent(\"ElementToolbar\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Header, { changeMode: _ctx.changeMode }, null, 8, [\"changeMode\"]),\n _createElementVNode(\"div\", {\n class: \"content\",\n ref: \"contentRef\",\n onTouchstart: _cache[0] || (_cache[0] = ($event: any) => (_ctx.handleClickBlankArea()))\n }, [\n _createElementVNode(\"div\", {\n class: \"viewport-wrapper\",\n style: _normalizeStyle(_ctx.viewportStyles)\n }, [\n _createElementVNode(\"div\", {\n class: \"background\",\n style: _normalizeStyle(_ctx.backgroundStyle)\n }, null, 4),\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 canvasScale: _ctx.canvasScale\n }, null, 8, [\"type\", \"axis\", \"length\", \"canvasScale\"]))\n }), 128)),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.elementList, (element) => {\n return (_openBlock(), _createElementBlock(_Fragment, {\n key: element.id\n }, [\n (element.type !== 'line')\n ? (_openBlock(), _createBlock(_component_MobileOperate, {\n key: 0,\n elementInfo: element,\n isSelected: _ctx.activeElementIdList.includes(element.id),\n canvasScale: _ctx.canvasScale,\n scaleElement: _ctx.scaleElement\n }, null, 8, [\"elementInfo\", \"isSelected\", \"canvasScale\", \"scaleElement\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n }), 128)),\n _createElementVNode(\"div\", {\n class: \"viewport\",\n style: _normalizeStyle({ transform: `scale(${_ctx.canvasScale})` })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.elementList, (element, index) => {\n return (_openBlock(), _createBlock(_component_MobileEditableElement, {\n key: element.id,\n elementInfo: element,\n elementIndex: index + 1,\n selectElement: _ctx.selectElement\n }, null, 8, [\"elementInfo\", \"elementIndex\", \"selectElement\"]))\n }), 128))\n ], 4)\n ], 4)\n ], 544),\n _createVNode(_component_SlideToolbar),\n (_ctx.handleElement)\n ? (_openBlock(), _createBlock(_component_ElementToolbar, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ]))\n}","import { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, 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: \"mobile-editable-element\",\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: () => null\n }, null, 8, [\"elementInfo\", \"selectElement\", \"contextmenus\"]))\n ], 4))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { ElementTypes, PPTElement } from '@/types/slides'\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: 'mobile-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 selectElement: {\n type: Function as PropType<(e: TouchEvent, element: PPTElement, canMove?: boolean) => 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 return {\n currentElementComponent,\n }\n },\n})\n","import { render } from \"./MobileEditableElement.vue?vue&type=template&id=335b7454&ts=true\"\nimport script from \"./MobileEditableElement.vue?vue&type=script&lang=ts\"\nexport * from \"./MobileEditableElement.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\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: \"mobile-operate\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top * _ctx.canvasScale + 'px',\n left: _ctx.elementInfo.left * _ctx.canvasScale + 'px',\n transform: `rotate(${_ctx.rotate}deg)`,\n transformOrigin: `${_ctx.elementInfo.width * _ctx.canvasScale / 2}px ${_ctx.elementInfo.height * _ctx.canvasScale / 2}px`,\n })\n }, [\n (_ctx.isSelected)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\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 (_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 onTouchstart: _withModifiers($event => _ctx.scaleElement($event, _ctx.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onTouchstart\"]))\n }), 128))\n ], 64))\n : _createCommentVNode(\"\", true)\n ], 4))\n}","\nimport { defineComponent, PropType, computed } from 'vue'\nimport { PPTElement, PPTLineElement } from '@/types/slides'\nimport useCommonOperate from '@/views/Editor/Canvas/hooks/useCommonOperate'\nimport { OperateResizeHandlers } from '@/types/edit'\n\nimport BorderLine from '@/views/Editor/Canvas/Operate/BorderLine.vue'\nimport ResizeHandler from '@/views/Editor/Canvas/Operate/ResizeHandler.vue'\n\nexport default defineComponent({\n name: 'mobile-operate',\n components: {\n BorderLine,\n ResizeHandler,\n },\n props: {\n elementInfo: {\n type: Object as PropType>,\n required: true,\n },\n isSelected: {\n type: Boolean,\n required: true,\n },\n canvasScale: {\n type: Number,\n required: true,\n },\n scaleElement: {\n type: Function as PropType<(e: MouseEvent, element: Exclude, command: OperateResizeHandlers) => void>,\n required: true,\n },\n },\n setup(props) {\n const rotate = computed(() => 'rotate' in props.elementInfo ? props.elementInfo.rotate : 0)\n\n const scaleWidth = computed(() => props.elementInfo.width * props.canvasScale)\n const scaleHeight = computed(() => props.elementInfo.height * props.canvasScale)\n const {\n borderLines,\n resizeHandlers,\n textElementResizeHandlers,\n } = useCommonOperate(scaleWidth, scaleHeight)\n\n return {\n rotate,\n borderLines,\n resizeHandlers: props.elementInfo.type === 'text' || props.elementInfo.type === 'table' ? textElementResizeHandlers : resizeHandlers,\n }\n },\n})\n","import { render } from \"./MobileOperate.vue?vue&type=template&id=10f40a30&scoped=true&ts=true\"\nimport script from \"./MobileOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./MobileOperate.vue?vue&type=script&lang=ts\"\n\nimport \"./MobileOperate.vue?vue&type=style&index=0&id=10f40a30&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-10f40a30\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, 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-70590190\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"slide-toolbar\" }\nconst _hoisted_2 = { class: \"remark\" }\nconst _hoisted_3 = [\"value\"]\nconst _hoisted_4 = { class: \"toolbar\" }\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\" 新幻灯片\")\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\" 复制\")\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\" 删除\")\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\" 文字\")\nconst _hoisted_9 = /*#__PURE__*/_createTextVNode(\"图片 \")\nconst _hoisted_10 = /*#__PURE__*/_createTextVNode(\" 矩形\")\nconst _hoisted_11 = /*#__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_Button = _resolveComponent(\"Button\")!\n const _component_IconCopy = _resolveComponent(\"IconCopy\")!\n const _component_IconDelete = _resolveComponent(\"IconDelete\")!\n const _component_ButtonGroup = _resolveComponent(\"ButtonGroup\")!\n const _component_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_IconPicture = _resolveComponent(\"IconPicture\")!\n const _component_FileInput = _resolveComponent(\"FileInput\")!\n const _component_IconSquare = _resolveComponent(\"IconSquare\")!\n const _component_IconRound = _resolveComponent(\"IconRound\")!\n const _component_MobileThumbnails = _resolveComponent(\"MobileThumbnails\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"textarea\", {\n value: _ctx.remark,\n placeholder: \"点击输入演讲者备注\",\n onInput: _cache[0] || (_cache[0] = $event => _ctx.handleInputMark($event))\n }, null, 40, _hoisted_3)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.createSlide()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconPlus, { class: \"icon\" }),\n _hoisted_5\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.copyAndPasteSlide()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconCopy, { class: \"icon\" }),\n _hoisted_6\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.deleteSlide()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconDelete, { class: \"icon\" }),\n _hoisted_7\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[4] || (_cache[4] = ($event: any) => (_ctx.insertTextElement()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFontSize, { class: \"icon\" }),\n _hoisted_8\n ]),\n _: 1\n }),\n _createVNode(_component_Button, { style: {\"flex\":\"1\"} }, {\n default: _withCtx(() => [\n _createVNode(_component_FileInput, {\n onChange: _cache[5] || (_cache[5] = files => _ctx.insertImageElement(files))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconPicture, { class: \"icon\" }),\n _hoisted_9\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.insertShapeElement('square')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconSquare, { class: \"icon\" }),\n _hoisted_10\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.insertShapeElement('round')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconRound, { class: \"icon\" }),\n _hoisted_11\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _createVNode(_component_MobileThumbnails)\n ]))\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0b484044\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mobile-thumbnails\" }\nconst _hoisted_2 = [\"onClick\"]\nconst _hoisted_3 = { class: \"label\" }\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.slides, (slide, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"thumbnail-item\", { 'active': _ctx.slideIndex === index }]),\n key: slide.id,\n onClick: ($event: any) => (_ctx.changeSlideIndex(index))\n }, [\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(index + 1), 1),\n _createVNode(_component_ThumbnailSlide, {\n class: \"thumbnail\",\n slide: slide,\n size: 120,\n visible: index < _ctx.slidesLoadLimit\n }, null, 8, [\"slide\", \"visible\"])\n ], 10, _hoisted_2))\n }), 128))\n ]))\n}","\nimport { defineComponent } 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: 'mobile-thumbnails',\n components: {\n ThumbnailSlide,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { slides, slideIndex } = storeToRefs(slidesStore)\n\n const { slidesLoadLimit } = useLoadSlides()\n const changeSlideIndex = (index: number) => {\n slidesStore.updateSlideIndex(index)\n }\n\n return {\n slides,\n slideIndex,\n slidesLoadLimit,\n changeSlideIndex,\n }\n },\n})\n","import { render } from \"./MobileThumbnails.vue?vue&type=template&id=0b484044&scoped=true&ts=true\"\nimport script from \"./MobileThumbnails.vue?vue&type=script&lang=ts\"\nexport * from \"./MobileThumbnails.vue?vue&type=script&lang=ts\"\n\nimport \"./MobileThumbnails.vue?vue&type=style&index=0&id=0b484044&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-0b484044\"]])\n\nexport default __exports__","\nimport { computed, defineComponent } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useSlideHandler from '@/hooks/useSlideHandler'\nimport useCreateElement from '@/hooks/useCreateElement'\nimport { getImageDataURL } from '@/utils/image'\nimport { ShapePoolItem } from '@/configs/shapes'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\n\nimport MobileThumbnails from '../MobileThumbnails.vue'\n\nexport default defineComponent({\n name: 'slide-toolbar',\n components: {\n MobileThumbnails,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { viewportRatio, currentSlide } = storeToRefs(slidesStore)\n\n const { createSlide, copyAndPasteSlide, deleteSlide, } = useSlideHandler()\n const { createTextElement, createImageElement, createShapeElement } = useCreateElement()\n\n const insertTextElement = () => {\n const width = 400\n const height = 56\n\n createTextElement({\n left: (VIEWPORT_SIZE - width) / 2,\n top: (VIEWPORT_SIZE * viewportRatio.value - height) / 2,\n width,\n height,\n }, '

新添加文本

')\n }\n\n const insertImageElement = (files: File[]) => {\n if (!files || !files[0]) return\n getImageDataURL(files[0]).then(dataURL => createImageElement(dataURL))\n }\n\n const insertShapeElement = (type: 'square' | 'round') => {\n const square: ShapePoolItem = {\n viewBox: [200, 200],\n path: 'M 0 0 L 200 0 L 200 200 L 0 200 Z',\n }\n const round: ShapePoolItem = {\n viewBox: [200, 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 const shape = { square, round }\n\n const size = 200\n\n createShapeElement({\n left: (VIEWPORT_SIZE - size) / 2,\n top: (VIEWPORT_SIZE * viewportRatio.value - size) / 2,\n width: size,\n height: size,\n }, shape[type])\n }\n\n const remark = computed(() => currentSlide.value?.remark || '')\n\n const handleInputMark = (e: Event) => {\n const value = (e.target as HTMLTextAreaElement).value\n slidesStore.updateSlide({ remark: value })\n }\n\n return {\n remark,\n createSlide,\n copyAndPasteSlide,\n deleteSlide,\n insertTextElement,\n insertImageElement,\n insertShapeElement,\n handleInputMark,\n }\n },\n})\n","import { render } from \"./SlideToolbar.vue?vue&type=template&id=70590190&scoped=true&ts=true\"\nimport script from \"./SlideToolbar.vue?vue&type=script&lang=ts\"\nexport * from \"./SlideToolbar.vue?vue&type=script&lang=ts\"\n\nimport \"./SlideToolbar.vue?vue&type=style&index=0&id=70590190&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-70590190\"]])\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, withCtx as _withCtx, createTextVNode as _createTextVNode, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-332b9382\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-toolbar\" }\nconst _hoisted_2 = { class: \"tabs\" }\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = { class: \"content\" }\nconst _hoisted_5 = {\n key: 0,\n class: \"style\"\n}\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\"+\")\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"-\")\nconst _hoisted_8 = { class: \"row-block\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"文字颜色:\", -1))\nconst _hoisted_10 = { class: \"colors\" }\nconst _hoisted_11 = [\"onClick\"]\nconst _hoisted_12 = { class: \"row-block\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"填充色:\", -1))\nconst _hoisted_14 = { class: \"colors\" }\nconst _hoisted_15 = [\"onClick\"]\nconst _hoisted_16 = {\n key: 1,\n class: \"common\"\n}\nconst _hoisted_17 = /*#__PURE__*/_createTextVNode(\" 复制\")\nconst _hoisted_18 = /*#__PURE__*/_createTextVNode(\" 删除\")\nconst _hoisted_19 = /*#__PURE__*/_createTextVNode(\" 置顶\")\nconst _hoisted_20 = /*#__PURE__*/_createTextVNode(\" 置底\")\nconst _hoisted_21 = /*#__PURE__*/_createTextVNode(\" 上移\")\nconst _hoisted_22 = /*#__PURE__*/_createTextVNode(\" 下移\")\nconst _hoisted_23 = /*#__PURE__*/_createTextVNode(\" 左对齐\")\nconst _hoisted_24 = /*#__PURE__*/_createTextVNode(\" 水平居中\")\nconst _hoisted_25 = /*#__PURE__*/_createTextVNode(\" 右对齐\")\nconst _hoisted_26 = /*#__PURE__*/_createTextVNode(\" 上对齐\")\nconst _hoisted_27 = /*#__PURE__*/_createTextVNode(\" 垂直居中\")\nconst _hoisted_28 = /*#__PURE__*/_createTextVNode(\" 下对齐\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\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_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_ButtonGroup = _resolveComponent(\"ButtonGroup\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\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_IconCopy = _resolveComponent(\"IconCopy\")!\n const _component_IconDelete = _resolveComponent(\"IconDelete\")!\n const _component_IconSendToBack = _resolveComponent(\"IconSendToBack\")!\n const _component_IconBringToFrontOne = _resolveComponent(\"IconBringToFrontOne\")!\n const _component_IconBringToFront = _resolveComponent(\"IconBringToFront\")!\n const _component_IconSentToBack = _resolveComponent(\"IconSentToBack\")!\n const _component_IconAlignLeft = _resolveComponent(\"IconAlignLeft\")!\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\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.tabs, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': _ctx.activeTab === item.key }]),\n key: item.key,\n onClick: ($event: any) => (_ctx.activeTab = item.key)\n }, _toDisplayString(item.label), 11, _hoisted_3))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (_ctx.activeTab === 'style')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createVNode(_component_CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.bold,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.emitRichTextCommand('bold')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextBold)\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.em,\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.emitRichTextCommand('em')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextItalic)\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.underline,\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.emitRichTextCommand('underline')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextUnderline)\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.strikethrough,\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.emitRichTextCommand('strikethrough')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconStrikethrough)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"2\"},\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.emitRichTextCommand('fontsize-add')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFontSize),\n _hoisted_6\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"2\"},\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.emitRichTextCommand('fontsize-reduce')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFontSize),\n _hoisted_7\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_Divider, { style: {\"margin\":\"20px 0\"} }),\n _createVNode(_component_RadioGroup, {\n class: \"row\",\n \"button-style\": \"solid\",\n value: _ctx.richTextAttrs.align,\n onChange: _cache[6] || (_cache[6] = e => _ctx.emitRichTextCommand('align', e.target.value))\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 _createVNode(_component_RadioButton, {\n value: \"center\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextCenter)\n ]),\n _: 1\n }),\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, [\"value\"]),\n _createVNode(_component_Divider, { style: {\"margin\":\"20px 0\"} }),\n _createElementVNode(\"div\", _hoisted_8, [\n _hoisted_9,\n _createElementVNode(\"div\", _hoisted_10, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.colors, (color) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"color\",\n key: color,\n onClick: ($event: any) => (_ctx.updateFontColor(color))\n }, [\n _createElementVNode(\"div\", {\n class: \"color-block\",\n style: _normalizeStyle({ backgroundColor: color })\n }, null, 4)\n ], 8, _hoisted_11))\n }), 128))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _hoisted_13,\n _createElementVNode(\"div\", _hoisted_14, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.colors, (color) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"color\",\n key: color,\n onClick: ($event: any) => (_ctx.updateFill(color))\n }, [\n _createElementVNode(\"div\", {\n class: \"color-block\",\n style: _normalizeStyle({ backgroundColor: color })\n }, null, 4)\n ], 8, _hoisted_15))\n }), 128))\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.activeTab === 'common')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.copyElement()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconCopy, { class: \"icon\" }),\n _hoisted_17\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.deleteElement()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconDelete, { class: \"icon\" }),\n _hoisted_18\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_Divider, { style: {\"margin\":\"20px 0\"} }),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.orderElement(_ctx.handleElement, _ctx.ElementOrderCommands.TOP)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconSendToBack, { class: \"icon\" }),\n _hoisted_19\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.orderElement(_ctx.handleElement, _ctx.ElementOrderCommands.BOTTOM)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconBringToFrontOne, { class: \"icon\" }),\n _hoisted_20\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_ctx.orderElement(_ctx.handleElement, _ctx.ElementOrderCommands.UP)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconBringToFront, { class: \"icon\" }),\n _hoisted_21\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[12] || (_cache[12] = ($event: any) => (_ctx.orderElement(_ctx.handleElement, _ctx.ElementOrderCommands.DOWN)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconSentToBack, { class: \"icon\" }),\n _hoisted_22\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_Divider, { style: {\"margin\":\"20px 0\"} }),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[13] || (_cache[13] = ($event: any) => (_ctx.alignElementToCanvas(_ctx.ElementAlignCommands.LEFT)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignLeft, { class: \"icon\" }),\n _hoisted_23\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[14] || (_cache[14] = ($event: any) => (_ctx.alignElementToCanvas(_ctx.ElementAlignCommands.HORIZONTAL)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignVertically, { class: \"icon\" }),\n _hoisted_24\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[15] || (_cache[15] = ($event: any) => (_ctx.alignElementToCanvas(_ctx.ElementAlignCommands.RIGHT)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignRight, { class: \"icon\" }),\n _hoisted_25\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[16] || (_cache[16] = ($event: any) => (_ctx.alignElementToCanvas(_ctx.ElementAlignCommands.TOP)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTop, { class: \"icon\" }),\n _hoisted_26\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[17] || (_cache[17] = ($event: any) => (_ctx.alignElementToCanvas(_ctx.ElementAlignCommands.VERTICAL)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignHorizontally, { class: \"icon\" }),\n _hoisted_27\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[18] || (_cache[18] = ($event: any) => (_ctx.alignElementToCanvas(_ctx.ElementAlignCommands.BOTTOM)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignBottom, { class: \"icon\" }),\n _hoisted_28\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}","\nimport { defineComponent, Ref, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement, TableCell } from '@/types/slides'\nimport { ElementAlignCommands, ElementOrderCommands } from '@/types/edit'\nimport emitter, { EmitterEvents } from '@/utils/emitter'\nimport useOrderElement from '@/hooks/useOrderElement'\nimport useAlignElementToCanvas from '@/hooks/useAlignElementToCanvas'\nimport useDeleteElement from '@/hooks/useDeleteElement'\nimport useAddSlidesOrElements from '@/hooks/useAddSlidesOrElements'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\ninterface TabItem {\n key: 'style' | 'common'\n label: string\n}\n\nconst colors = ['#000000', '#ffffff', '#eeece1', '#1e497b', '#4e81bb', '#e2534d', '#9aba60', '#8165a0', '#47acc5', '#f9974c', '#c21401', '#ff1e02', '#ffc12a', '#ffff3a', '#90cf5b', '#00af57']\n\nexport default defineComponent({\n name: 'element-toolbar',\n setup() {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { handleElement, handleElementId, richTextAttrs } = storeToRefs(mainStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateElement = (id: string, props: Partial) => {\n slidesStore.updateElement({ id, props })\n addHistorySnapshot()\n }\n\n const tabs: TabItem[] = [\n { key: 'style', label: '样式' },\n { key: 'common', label: '布局' },\n ]\n const activeTab = ref('common')\n\n const { orderElement } = useOrderElement()\n const { alignElementToCanvas } = useAlignElementToCanvas()\n const { addElementsFromData } = useAddSlidesOrElements()\n const { deleteElement } = useDeleteElement()\n\n const copyElement = () => {\n const element: PPTElement = JSON.parse(JSON.stringify(handleElement.value))\n addElementsFromData([element])\n }\n\n const emitRichTextCommand = (command: string, value?: string) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { action: { command, value } })\n }\n\n const updateFontColor = (color: string) => {\n if (!handleElement.value) return\n if (handleElement.value.type === 'text' || (handleElement.value.type === 'shape' && handleElement.value.text?.content)) {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { action: { command: 'color', value: color } })\n }\n if (handleElement.value.type === 'table') {\n const data: TableCell[][] = JSON.parse(JSON.stringify(handleElement.value.data))\n for (let i = 0; i < data.length; i++) {\n for (let j = 0; j < data[i].length; j++) {\n const style = data[i][j].style || {}\n data[i][j].style = { ...style, color }\n }\n }\n updateElement(handleElementId.value, { data })\n }\n if (handleElement.value.type === 'latex') {\n updateElement(handleElementId.value, { color })\n }\n }\n\n const updateFill = (color: string) => {\n if (!handleElement.value) return\n if (\n handleElement.value.type === 'text' ||\n handleElement.value.type === 'shape' ||\n handleElement.value.type === 'chart'\n ) updateElement(handleElementId.value, { fill: color })\n\n if (handleElement.value.type === 'table') {\n const data: TableCell[][] = JSON.parse(JSON.stringify(handleElement.value.data))\n for (let i = 0; i < data.length; i++) {\n for (let j = 0; j < data[i].length; j++) {\n const style = data[i][j].style || {}\n data[i][j].style = { ...style, backcolor: color }\n }\n }\n updateElement(handleElementId.value, { data })\n }\n\n if (handleElement.value.type === 'audio') updateElement(handleElementId.value, { color })\n }\n\n return {\n handleElement: handleElement as Ref,\n tabs,\n activeTab,\n richTextAttrs,\n colors,\n orderElement,\n alignElementToCanvas,\n copyElement,\n deleteElement,\n emitRichTextCommand,\n updateFontColor,\n updateFill,\n ElementOrderCommands,\n ElementAlignCommands,\n }\n },\n})\n","import { render } from \"./ElementToolbar.vue?vue&type=template&id=332b9382&scoped=true&ts=true\"\nimport script from \"./ElementToolbar.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementToolbar.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementToolbar.vue?vue&type=style&index=0&id=332b9382&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-332b9382\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2c0b2c5e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mobile-editor-header\" }\nconst _hoisted_2 = { class: \"history\" }\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_IconBack = _resolveComponent(\"IconBack\")!\n const _component_IconNext = _resolveComponent(\"IconNext\")!\n const _component_IconLogout = _resolveComponent(\"IconLogout\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"history-item\", { 'disable': !_ctx.canUndo }]),\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.undo()), [\"stop\"]))\n }, [\n _createVNode(_component_IconBack),\n _hoisted_3\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"history-item\", { 'disable': !_ctx.canRedo }]),\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.redo()), [\"stop\"]))\n }, [\n _createVNode(_component_IconNext),\n _hoisted_4\n ], 2)\n ]),\n _createElementVNode(\"div\", {\n class: \"back\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.changeMode('preview')))\n }, [\n _createVNode(_component_IconLogout),\n _hoisted_5\n ])\n ]))\n}","\nimport { defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSnapshotStore } from '@/store'\nimport { Mode } from '@/types/mobile'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default defineComponent({\n name: 'mobile-editor-header',\n props: {\n changeMode: {\n type: Function as PropType<(mode: Mode) => void>,\n required: true,\n },\n },\n setup() {\n const { canUndo, canRedo } = storeToRefs(useSnapshotStore())\n const { redo, undo } = useHistorySnapshot()\n\n return {\n redo,\n undo,\n canUndo,\n canRedo,\n }\n },\n})\n","import { render } from \"./Header.vue?vue&type=template&id=2c0b2c5e&scoped=true&ts=true\"\nimport script from \"./Header.vue?vue&type=script&lang=ts\"\nexport * from \"./Header.vue?vue&type=script&lang=ts\"\n\nimport \"./Header.vue?vue&type=style&index=0&id=2c0b2c5e&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-2c0b2c5e\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, onMounted, PropType, ref, watchEffect } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport { AlignmentLineProps } from '@/types/edit'\nimport { Mode } from '@/types/mobile'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport useSlideBackgroundStyle from '@/hooks/useSlideBackgroundStyle'\nimport useDragElement from '@/views/Editor/Canvas/hooks/useDragElement'\nimport useScaleElement from '@/views/Editor/Canvas/hooks/useScaleElement'\n\nimport AlignmentLine from '@/views/Editor/Canvas/AlignmentLine.vue'\nimport MobileEditableElement from './MobileEditableElement.vue'\nimport MobileOperate from './MobileOperate.vue'\nimport SlideToolbar from './SlideToolbar.vue'\nimport ElementToolbar from './ElementToolbar.vue'\nimport Header from './Header.vue'\n\nexport default defineComponent({\n name: 'mobile-editor',\n components: {\n AlignmentLine,\n MobileEditableElement,\n MobileOperate,\n SlideToolbar,\n ElementToolbar,\n Header,\n },\n props: {\n changeMode: {\n type: Function as PropType<(mode: Mode) => void>,\n required: true,\n },\n },\n setup() {\n const slidesStore = useSlidesStore()\n const mainStore = useMainStore()\n const { slideIndex, currentSlide, viewportRatio } = storeToRefs(slidesStore)\n const { activeElementIdList, handleElement } = storeToRefs(mainStore)\n\n const contentRef = ref()\n\n const alignmentLines = ref([])\n\n const background = computed(() => currentSlide.value.background)\n const { backgroundStyle } = useSlideBackgroundStyle(background)\n\n const canvasScale = computed(() => {\n if (!contentRef.value) return 1\n const contentWidth = contentRef.value.clientWidth\n const contentheight = contentRef.value.clientHeight\n\n const contentRatio = contentheight / contentWidth\n if (contentRatio >= viewportRatio.value) return (contentWidth - 20) / VIEWPORT_SIZE\n return (contentheight - 20) / viewportRatio.value / VIEWPORT_SIZE\n })\n\n onMounted(() => {\n if (activeElementIdList.value.length) mainStore.setActiveElementIdList([])\n if (slideIndex.value !== 0) slidesStore.updateSlideIndex(0)\n })\n\n const viewportStyles = computed(() => ({\n width: VIEWPORT_SIZE * canvasScale.value + 'px',\n height: VIEWPORT_SIZE * viewportRatio.value * canvasScale.value + 'px',\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 { dragElement } = useDragElement(elementList, alignmentLines, canvasScale)\n const { scaleElement } = useScaleElement(elementList, alignmentLines, canvasScale)\n\n const selectElement = (e: TouchEvent, element: PPTElement, startMove = true) => {\n if (!activeElementIdList.value.includes(element.id)) {\n mainStore.setActiveElementIdList([element.id])\n mainStore.setHandleElementId(element.id)\n }\n if (startMove) dragElement(e, element)\n }\n\n const handleClickBlankArea = () => {\n mainStore.setActiveElementIdList([])\n }\n\n return {\n contentRef,\n slideIndex,\n elementList,\n canvasScale,\n viewportStyles,\n backgroundStyle,\n activeElementIdList,\n alignmentLines,\n selectElement,\n handleClickBlankArea,\n scaleElement,\n handleElement,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=f9ea6e88&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=f9ea6e88&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-f9ea6e88\"]])\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, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2845ccb6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"header\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\" 退出播放\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ThumbnailSlide = _resolveComponent(\"ThumbnailSlide\")!\n const _component_IconLogout = _resolveComponent(\"IconLogout\")!\n const _component_MobileThumbnails = _resolveComponent(\"MobileThumbnails\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"mobile-player\",\n style: _normalizeStyle({\n width: _ctx.playerSize.width + 'px',\n height: _ctx.playerSize.height + 'px',\n transform: `rotate(90deg) translateY(-${_ctx.playerSize.height}px)`,\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"screen-slide-list\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.toolVisible = !_ctx.toolVisible)),\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.slideSize.width + 'px',\n height: _ctx.slideSize.height + 'px',\n })\n }, [\n _createVNode(_component_ThumbnailSlide, {\n slide: slide,\n size: _ctx.slideSize.width\n }, null, 8, [\"slide\", \"size\"])\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 2))\n }), 128))\n ], 32),\n (_ctx.toolVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"back\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.changeMode('preview')))\n }, [\n _createVNode(_component_IconLogout),\n _hoisted_2\n ])\n ]),\n _createVNode(_component_MobileThumbnails, { class: \"thumbnails\" })\n ], 64))\n : _createCommentVNode(\"\", true)\n ], 4))\n}","\nimport { computed, defineComponent, onMounted, PropType, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { Mode } from '@/types/mobile'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\nimport MobileThumbnails from './MobileThumbnails.vue'\n\nexport default defineComponent({\n name: 'mobile-player',\n components: {\n ThumbnailSlide,\n MobileThumbnails,\n },\n props: {\n changeMode: {\n type: Function as PropType<(mode: Mode) => void>,\n required: true,\n },\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { slides, slideIndex, currentSlide, viewportRatio } = storeToRefs(slidesStore)\n\n const toolVisible = ref(false)\n\n const playerSize = ref({ width: 0, height: 0 })\n\n onMounted(() => {\n if (slideIndex.value !== 0) slidesStore.updateSlideIndex(0)\n\n playerSize.value = {\n width: document.body.clientHeight,\n height: document.body.clientWidth,\n }\n })\n\n const slideSize = computed(() => {\n const playerRatio = playerSize.value.height / playerSize.value.width\n\n let slideWidth = 0\n let slideHeight = 0\n\n if (playerRatio >= viewportRatio.value) {\n slideWidth = playerSize.value.width\n slideHeight = slideWidth * viewportRatio.value\n }\n else {\n slideHeight = playerSize.value.height\n slideWidth = slideHeight / viewportRatio.value\n }\n\n return {\n width: slideWidth,\n height: slideHeight,\n }\n })\n\n const touchInfo = ref<{ x: number; y: number; } | null>(null)\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 offsetY = Math.abs(touchInfo.value.y - e.changedTouches[0].pageY)\n const offsetX = e.changedTouches[0].pageX - touchInfo.value.x\n\n if ( Math.abs(offsetX) > offsetY && Math.abs(offsetX) > 50 ) {\n touchInfo.value = null\n\n if (offsetX < 0 && slideIndex.value > 0) slidesStore.updateSlideIndex(slideIndex.value - 1)\n if (offsetX > 0 && slideIndex.value < slides.value.length - 1) slidesStore.updateSlideIndex(slideIndex.value + 1)\n }\n }\n\n return {\n slides,\n slideIndex,\n currentSlide,\n playerSize,\n slideSize,\n toolVisible,\n touchStartListener,\n touchEndListener,\n }\n },\n})\n","import { render } from \"./MobilePlayer.vue?vue&type=template&id=2845ccb6&scoped=true&ts=true\"\nimport script from \"./MobilePlayer.vue?vue&type=script&lang=ts\"\nexport * from \"./MobilePlayer.vue?vue&type=script&lang=ts\"\n\nimport \"./MobilePlayer.vue?vue&type=style&index=0&id=2845ccb6&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-2845ccb6\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-04d332cb\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n class: \"mobile-preview\",\n ref: \"mobileRef\"\n}\nconst _hoisted_2 = { class: \"thumbnail-list\" }\nconst _hoisted_3 = { class: \"menu\" }\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_ThumbnailSlide = _resolveComponent(\"ThumbnailSlide\")!\n const _component_IconEdit = _resolveComponent(\"IconEdit\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_IconFullScreenPlay = _resolveComponent(\"IconFullScreenPlay\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\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.screenWidth - 10,\n visible: index < _ctx.slidesLoadLimit\n }, null, 8, [\"slide\", \"size\", \"visible\"])\n ]))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: \"menu-item\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.changeMode('editor')))\n }, [\n _createVNode(_component_IconEdit, { class: \"icon\" }),\n _hoisted_4\n ]),\n _createVNode(_component_Divider, {\n type: \"vertical\",\n style: {\"height\":\"30px\"}\n }),\n _createElementVNode(\"div\", {\n class: \"menu-item\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.changeMode('player')))\n }, [\n _createVNode(_component_IconFullScreenPlay, { class: \"icon\" }),\n _hoisted_5\n ])\n ])\n ], 512))\n}","\nimport { defineComponent, PropType, onMounted, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useLoadSlides from '@/hooks/useLoadSlides'\nimport { Mode } from '@/types/mobile'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\n\nexport default defineComponent({\n name: 'mobile-preview',\n components: {\n ThumbnailSlide,\n },\n props: {\n changeMode: {\n type: Function as PropType<(mode: Mode) => void>,\n required: true,\n },\n },\n setup() {\n const { slides } = storeToRefs(useSlidesStore())\n const { slidesLoadLimit } = useLoadSlides()\n\n const mobileRef = ref()\n const screenWidth = ref(0)\n\n onMounted(() => {\n if (!mobileRef.value) return\n screenWidth.value = mobileRef.value.clientWidth\n })\n\n return {\n slides,\n slidesLoadLimit,\n mobileRef,\n screenWidth,\n }\n },\n})\n","import { render } from \"./MobilePreview.vue?vue&type=template&id=04d332cb&scoped=true&ts=true\"\nimport script from \"./MobilePreview.vue?vue&type=script&lang=ts\"\nexport * from \"./MobilePreview.vue?vue&type=script&lang=ts\"\n\nimport \"./MobilePreview.vue?vue&type=style&index=0&id=04d332cb&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-04d332cb\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, ref } from 'vue'\nimport { Mode } from '@/types/mobile'\n\nimport MobileEditor from './MobileEditor/index.vue'\nimport MobilePlayer from './MobilePlayer.vue'\nimport MobilePreview from './MobilePreview.vue'\n\nexport default defineComponent({\n name: 'mobile',\n setup() {\n const mode = ref('preview')\n \n const changeMode = (_mode: Mode) => mode.value = _mode\n \n const currentComponent = computed(() => {\n const componentMap = {\n 'editor': MobileEditor,\n 'player': MobilePlayer,\n 'preview': MobilePreview,\n }\n return componentMap[mode.value] || null\n })\n\n return {\n currentComponent,\n changeMode,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=efaecbfe&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=efaecbfe&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-efaecbfe\"]])\n\nexport default __exports__","\nimport { defineComponent, onMounted } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useScreenStore, useMainStore, useSnapshotStore } from '@/store'\nimport { LOCALSTORAGE_KEY_DISCARDED_DB } from '@/configs/storage'\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/index.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 { databaseId } = storeToRefs(mainStore)\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 // 应用注销时向 localStorage 中记录下本次 indexedDB 的数据库ID,用于之后清除数据库\n window.addEventListener('unload', () => {\n const discardedDB = localStorage.getItem(LOCALSTORAGE_KEY_DISCARDED_DB)\n const discardedDBList: string[] = discardedDB ? JSON.parse(discardedDB) : []\n\n discardedDBList.push(databaseId.value)\n\n const newDiscardedDB = JSON.stringify(discardedDBList)\n localStorage.setItem(LOCALSTORAGE_KEY_DISCARDED_DB, newDiscardedDB)\n })\n\n return {\n screening,\n isPC: isPC(),\n }\n },\n})\n","import { render } from \"./App.vue?vue&type=template&id=a33e97ec&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=a33e97ec&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__","/* eslint-disable no-console */\n\nimport { register } from 'register-service-worker'\n\nif (process.env.NODE_ENV === 'production') {\n register(`${process.env.BASE_URL}service-worker.js`, {\n ready() {\n console.log(\n 'App is being served from cache by a service worker.\\n' +\n 'For more details, visit https://goo.gl/AFskqB'\n )\n },\n registered() {\n console.log('Service worker has been registered.')\n },\n cached() {\n console.log('Content has been cached for offline use.')\n },\n updatefound() {\n console.log('New content is downloading.')\n },\n updated() {\n console.log('New content is available; please refresh.')\n },\n offline() {\n console.log('No internet connection found. App is running in offline mode.')\n },\n error(error) {\n console.error('Error during service worker registration:', error)\n }\n })\n}\n","// https://iconpark.bytedance.com/official\n\nimport { App } from 'vue'\nimport {\n PlayOne,\n FullScreenPlay,\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 ChartHistogramOne,\n ChartLineArea,\n ChartRing,\n ChartScatter,\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 LinkOne,\n FullScreenOne,\n OffScreenOne,\n Power,\n ListView,\n Magic,\n HighLight,\n Share,\n IndentLeft,\n IndentRight,\n VerticalSpacingBetweenItems,\n Copy,\n Delete,\n Square,\n Round,\n} from '@icon-park/vue-next'\n\nconst icons = {\n PlayOne,\n FullScreenPlay,\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 ChartHistogramOne,\n ChartLineArea,\n ChartRing,\n ChartScatter,\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 LinkOne,\n FullScreenOne,\n OffScreenOne,\n Power,\n ListView,\n Magic,\n HighLight,\n Share,\n IndentLeft,\n IndentRight,\n VerticalSpacingBetweenItems,\n Copy,\n Delete,\n Square,\n Round,\n}\n\nexport default {\n install(app: App) {\n for (const key of Object.keys(icons)) {\n app.component(`Icon${key}`, icons[key])\n }\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-0a87e9c4\"),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: Event) => {\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=0a87e9c4&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=0a87e9c4&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-0a87e9c4\"]])\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': _ctx.checked }])\n }, [\n _renderSlot(_ctx.$slots, \"default\", {}, undefined, true)\n ], 2))\n}","\r\nimport { defineComponent } from 'vue'\r\n\r\nexport default defineComponent({\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=4074d5c2&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=4074d5c2&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-4074d5c2\"]])\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-adf706aa\"),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\nimport { defineComponent } from 'vue'\r\n\r\nexport default defineComponent({\r\n name: 'checkbox-button-group',\r\n})\r\n","import { render } from \"./CheckboxButtonGroup.vue?vue&type=template&id=adf706aa&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=adf706aa&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-adf706aa\"]])\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-e0bde284\"),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: \"picker-presets\" }\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 const _component_IconPlatte = _resolveComponent(\"IconPlatte\")!\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 class: \"input\",\n value: _ctx.color,\n onColorChange: _cache[3] || (_cache[3] = value => _ctx.changeColor(value))\n }, null, 8, [\"value\"]),\n _createElementVNode(\"div\", {\n class: \"straw\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.pickColor()))\n }, [\n _createVNode(_component_IconPlatte)\n ])\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 alpha\",\n onClick: ($event: any) => (_ctx.selectPresetColor(c))\n }, [\n _createElementVNode(\"div\", {\n class: \"picker-presets-color-content\",\n style: _normalizeStyle({ background: c })\n }, null, 4)\n ], 8, _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-20bfe6b0\"),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: Event) => {\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=20bfe6b0&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=20bfe6b0&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-20bfe6b0\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, onMounted, ref, watch } from 'vue'\nimport tinycolor, { ColorFormats } from 'tinycolor2'\nimport { debounce } from 'lodash'\nimport { toCanvas } from 'html-to-image'\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\nimport { message } from 'ant-design-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\nconst themeColors = ['#000000', '#ffffff', '#eeece1', '#1e497b', '#4e81bb', '#e2534d', '#9aba60', '#8165a0', '#47acc5', '#f9974c']\nconst standardColors = ['#c21401', '#ff1e02', '#ffc12a', '#ffff3a', '#90cf5b', '#00af57', '#00afee', '#0071be', '#00215f', '#72349d']\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 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 const pickColor = () => {\n const targetRef: HTMLElement | null = document.querySelector('.canvas')\n if (!targetRef) return\n\n const maskRef = document.createElement('div')\n maskRef.style.cssText = 'position: fixed; top: 0; left: 0; bottom: 0; right: 0; z-index: 9999; cursor: wait;'\n document.body.appendChild(maskRef)\n\n const colorBlockRef = document.createElement('div')\n colorBlockRef.style.cssText = 'position: absolute; top: -100px; left: -100px; width: 16px; height: 16px; border: 1px solid #000; z-index: 999'\n maskRef.appendChild(colorBlockRef)\n\n const { left, top, width, height } = targetRef.getBoundingClientRect()\n\n const filter = (node: HTMLElement) => {\n if (node.tagName && node.tagName.toUpperCase() === 'FOREIGNOBJECT') return false\n if (node.classList && node.classList.contains('operate')) return false\n return true\n }\n\n toCanvas(targetRef, { filter, fontEmbedCSS: '', width, height, canvasWidth: width, canvasHeight: height, pixelRatio: 1 }).then(canvasRef => {\n canvasRef.style.cssText = `position: absolute; top: ${top}px; left: ${left}px; cursor: crosshair;`\n maskRef.style.cursor = 'default'\n maskRef.appendChild(canvasRef)\n\n const ctx = canvasRef.getContext('2d')\n if (!ctx) return\n\n let currentColor = ''\n const handleMousemove = (e: MouseEvent) => {\n const x = e.x\n const y = e.y\n\n const mouseX = x - left\n const mouseY = y - top\n\n const [r, g, b, a] = ctx.getImageData(mouseX, mouseY, 1, 1).data\n currentColor = `rgba(${r}, ${g}, ${b}, ${(a / 255).toFixed(2)})`\n\n colorBlockRef.style.left = x + 10 + 'px'\n colorBlockRef.style.top = y + 10 + 'px'\n colorBlockRef.style.backgroundColor = currentColor\n }\n const handleMouseleave = () => {\n currentColor = ''\n colorBlockRef.style.left = '-100px'\n colorBlockRef.style.top = '-100px'\n colorBlockRef.style.backgroundColor = ''\n }\n const handleMousedown = (e: MouseEvent) => {\n if (currentColor && e.button === 0) {\n const tColor = tinycolor(currentColor)\n hue.value = tColor.toHsl().h\n color.value = tColor.toRgb()\n\n updateRecentColorsCache()\n }\n document.body.removeChild(maskRef)\n \n canvasRef.removeEventListener('mousemove', handleMousemove)\n canvasRef.removeEventListener('mouseleave', handleMouseleave)\n window.removeEventListener('mousedown', handleMousedown)\n }\n\n canvasRef.addEventListener('mousemove', handleMousemove)\n canvasRef.addEventListener('mouseleave', handleMouseleave)\n window.addEventListener('mousedown', handleMousedown)\n }).catch(() => {\n message.error('取色吸管初始化失败')\n document.body.removeChild(maskRef)\n })\n }\n\n return {\n themeColors,\n standardColors,\n presetColors,\n color,\n hue,\n currentColor,\n changeColor,\n selectPresetColor,\n recentColors,\n pickColor,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=e0bde284&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=e0bde284&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-e0bde284\"]])\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-5e77feb8\"),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 (_ctx.loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Spin, {\n tip: _ctx.tip,\n size: \"large\"\n }, null, 8, [\"tip\"])\n ]))\n : _createCommentVNode(\"\", true)\n}","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\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=5e77feb8&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=5e77feb8&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-5e77feb8\"]])\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'\nimport './registerServiceWorker'\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} 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)\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!./ExportImage.vue?vue&type=style&index=0&id=61e92928&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=64ca421e&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=0b036cf9&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=a6510a8a&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=204d666d&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!./SlideThumbnails.vue?vue&type=style&index=0&id=11e5b856&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=eafe485c&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=b701edc6&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=19ab4349&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!./index.vue?vue&type=style&index=0&id=3719d97c&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=54b23b9e&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!./FormulaContent.vue?vue&type=style&index=0&id=cf0ca630&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=42b07d61&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=6e74620a&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!./PresenterView.vue?vue&type=style&index=0&id=ce50b150&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=1a47c852&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=728513ea&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!./MobileOperate.vue?vue&type=style&index=0&id=10f40a30&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!./MobilePreview.vue?vue&type=style&index=0&id=04d332cb&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=e93c4822&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=0a74a690&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=17d8eefc&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=7fa1d412&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=e9ddaac8&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=310c58ae&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.d3e21c03.js b/js/app.d3e21c03.js deleted file mode 100644 index 6f762c2c..00000000 --- a/js/app.d3e21c03.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=[];sb){var m=e.nodeAt(c),p=m&&m.marks.find(l);if(!p||p!==a)break;s=c,r=m,c--}c=n+1,b=e.nodeSize-2;while(c-1||t.type===e},F=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}}},R=function(e){return function(t){return F(t.$from,e)}},P=function(e){return function(t){return R((function(t){return A(e,t)}))(t)}},H=function(e,t){var n=t.schema.nodes[e];return!!P(n)(t.selection)},q=function(e){var t,n,o=e.state,c=o.selection,l=o.doc,a=c.from,r=l.nodeAt(a)||l.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)||[]},U=function(e,t,n){var o,c=Object(T["a"])(e);try{for(c.s();!(o=c.n()).done;){var l=o.value;if(l.type.name===t&&l.attrs[n])return l.attrs[n]}}catch(a){c.e(a)}finally{c.f()}return null},W=function(e,t){var n,o=Object(T["a"])(e);try{for(o.s();!(n=o.n()).done;){var c=n.value;if(c.type.name===t)return!0}}catch(l){o.e(l)}finally{o.f()}return!1},G=function(e,t){var n=e.selection,o=n.from,c=n.$from,l=n.to,a=n.empty;return a?t.isInSet(e.storedMarks||c.marks()):e.doc.rangeHasMark(o,l,t)},X=function(e,t){var n=e.state,o=n.selection,c=n.doc,l=o.from,a=o.to,r=!0,i="";return c.nodesBetween(l,a,(function(e){return r&&e.attrs[t]&&(r=!1,i=e.attrs[t]),r})),i},Y={color:"#000",backcolor:"#000",fontsize:"20px",fontname:"微软雅黑",align:"left"},Z=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t=Object(L["a"])(Object(L["a"])({},Y),t);var n=q(e),o=W(n,"strong"),c=W(n,"em"),l=W(n,"underline"),a=W(n,"strikethrough"),r=W(n,"superscript"),i=W(n,"subscript"),u=W(n,"code"),d=U(n,"forecolor","color")||t.color,s=U(n,"backcolor","backcolor")||t.backcolor,f=U(n,"fontsize","fontsize")||t.fontsize,b=U(n,"fontname","fontname")||t.fontname,m=U(n,"link","href")||"",p=X(e,"align")||t.align,v=H("bullet_list",e.state),O=H("ordered_list",e.state),h=H("blockquote",e.state);return{bold:o,em:c,underline:l,strikethrough:a,superscript:r,subscript:i,code:u,color:d,backcolor:s,fontsize:f,fontname:b,link:m,align:p,bulletList:v,orderedList:O,blockquote:h}},J=function(e){var t=q(e),n=U(t,"fontsize","fontsize")||Y.fontsize;return parseInt(n)},K={bold:!1,em:!1,underline:!1,strikethrough:!1,superscript:!1,subscript:!1,code:!1,color:"#000",backcolor:"#000",fontsize:"20px",fontname:"微软雅黑",link:"",align:"left",bulletList:!1,orderedList:!1,blockquote:!1},Q=(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,c=100,l="a",a=document.createElement("canvas"),r=a.getContext("2d");if(!r)return!1;a.width=o,a.height=c,r.textAlign="center",r.fillStyle="black",r.textBaseline="middle";var i=function(e){r.clearRect(0,0,o,c),r.font="".concat(n,"px ").concat(e,", ").concat(t),r.fillText(l,o/2,c/2);var a=r.getImageData(0,0,o,c).data;return[].slice.call(a).filter((function(e){return 0!==e}))};return i(t).join("")!==i(e).join("")}),$=n("2909"),ee=(n("d81d"),n("ac1f"),n("5319"),n("5b81"),n("a434"),n("c740"),n("66cb")),te=n.n(ee),ne=n("2ef0"),oe=[{id:"test-slide-1",elements:[{type:"shape",id:"4cbRxp",left:0,top:200,width:546,height:362.5,viewBox:[200,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,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"}},{id:"test-slide-2",elements:[{type:"text",id:"ptNnUJ",left:145,top:148,width:711,height:77,lineHeight:1.2,content:"

在此处添加标题

",rotate:0,defaultFontName:"Microsoft Yahei",defaultColor:"#333"},{type:"text",id:"mRHvQN",left:207.50000000000003,top:249.84259259259264,width:585,height:56,content:"

在此处添加副标题

",rotate:0,defaultFontName:"Microsoft Yahei",defaultColor:"#333"},{type:"line",id:"7CQDwc",left:323.09259259259267,top:238.33333333333334,start:[0,0],end:[354.8148148148148,0],points:["",""],color:"#5b9bd5",style:"solid",width:4},{type:"shape",id:"09wqWw",left:-27.648148148148138,top:432.73148148148147,width:1056.2962962962963,height:162.96296296296296,viewBox:[200,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:"#5b9bd5",fixedRatio:!1,rotate:0}],background:{type:"solid",color:"#fff"}},{id:"test-slide-3",elements:[{type:"shape",id:"vSheCJ",left:183.5185185185185,top:175.5092592592593,width:605.1851851851851,height:185.18518518518516,viewBox:[200,200],path:"M 0 0 L 200 0 L 200 200 L 0 200 Z",fill:"#5b9bd5",fixedRatio:!1,rotate:0},{type:"shape",id:"Mpwv7x",left:211.29629629629628,top:201.80555555555557,width:605.1851851851851,height:185.18518518518516,viewBox:[200,200],path:"M 0 0 L 200 0 L 200 200 L 0 200 Z",fill:"#5b9bd5",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:"Microsoft Yahei",defaultColor:"#333",wordSpace:5}],background:{type:"solid",color:"#fff"}}],ce={themeColor:"#5b9bd5",fontColor:"#333",fontName:"Microsoft Yahei",backgroundColor:"#fff"},le=[{id:"template",elements:[{type:"shape",id:"4cbRxp",left:0,top:200,width:546,height:362.5,viewBox:[200,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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}}"}}],ae=Object(y["b"])("slides",{state:function(){return{theme:ce,slides:oe,slideIndex:0,viewportRatio:.5625}},getters:{currentSlide:function(e){return e.slides[e.slideIndex]},currentSlideAnimations:function(e){var t=e.slides[e.slideIndex];if(null===t||void 0===t||!t.animations)return[];var n=t.elements,o=n.map((function(e){return e.id}));return t.animations.filter((function(e){return o.includes(e.elId)}))},formatedAnimations:function(e){var t=e.slides[e.slideIndex];if(null===t||void 0===t||!t.animations)return[];var n,o=t.elements,c=o.map((function(e){return e.id})),l=t.animations.filter((function(e){return c.includes(e.elId)})),a=[],r=Object(T["a"])(l);try{var i=function(){var e=n.value;if("click"!==e.trigger&&a.length){if("meantime"===e.trigger){var t=a[a.length-1];t.animations=t.animations.filter((function(t){return t.elId!==e.elId})),t.animations.push(e),a[a.length-1]=t}else if("auto"===e.trigger){var o=a[a.length-1];o.autoNext=!0,a[a.length-1]=o,a.push({animations:[e],autoNext:!1})}}else a.push({animations:[e],autoNext:!1})};for(r.s();!(n=r.n()).done;)i()}catch(u){r.e(u)}finally{r.f()}return a},layouts:function(e){var t=e.theme,n=t.themeColor,o=t.fontColor,c=t.fontName,l=t.backgroundColor,a=te()(o).isDark()?"rgba(230, 230, 230, 0.5)":"rgba(180, 180, 180, 0.5)",r=JSON.stringify(le).replaceAll("{{themeColor}}",n).replaceAll("{{fontColor}}",o).replaceAll("{{fontName}}",c).replaceAll("{{backgroundColor}}",l).replaceAll("{{subColor}}",a);return JSON.parse(r)}},actions:{setTheme:function(e){this.theme=Object(L["a"])(Object(L["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($["a"])(n))),this.slideIndex=o},updateSlide:function(e){var t=this.slideIndex;this.slides[t]=Object(L["a"])(Object(L["a"])({},this.slides[t]),e)},deleteSlide:function(e){for(var t=this,n=Array.isArray(e)?e:[e],o=[],c=function(e){var c=t.slides.findIndex((function(t){return t.id===n[e]}));o.push(c)},l=0;lr&&(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($["a"])(n),Object($["a"])(t));this.slides[this.slideIndex].elements=o},deleteElement:function(e){var t=Array.isArray(e)?e:[e],n=this.slides[this.slideIndex].elements,o=n.filter((function(e){return!t.includes(e.id)}));this.slides[this.slideIndex].elements=o},updateElement:function(e){var t=e.id,n=e.props,o="string"===typeof t?[t]:t,c=this.slideIndex,l=this.slides[c],a=l.elements.map((function(e){return o.includes(e.id)?Object(L["a"])(Object(L["a"])({},e),n):e}));this.slides[c].elements=a},removeElementProps:function(e){var t=e.id,n=e.propName,o="string"===typeof n?[n]:n,c=this.slideIndex,l=this.slides[c],a=l.elements.map((function(e){return e.id===t?Object(ne["omit"])(e,o):e}));this.slides[c].elements=a}}}),re=Object(C["a"])("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"),ie=re(10),ue=Object(y["b"])("main",{state:function(){return{activeElementIdList:[],handleElementId:"",activeGroupElementId:"",canvasPercentage:90,canvasScale:1,canvasDragged:!1,thumbnailsFocus:!1,editorAreaFocus:!1,disableHotkeys:!1,showGridLines:!1,showRuler:!1,creatingElement:null,availableFonts:S,toolbarState:x.SLIDE_DESIGN,clipingImageElementId:"",richTextAttrs:K,selectedTableCells:[],isScaling:!1,selectedSlidesIndex:[],dialogForExport:"",databaseId:ie}},getters:{activeElementList:function(e){var t=ae(),n=t.currentSlide;return n&&n.elements?n.elements.filter((function(t){return e.activeElementIdList.includes(t.id)})):[]},handleElement:function(e){var t=ae(),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},setCanvasDragged:function(e){this.canvasDragged=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},setRulerState:function(e){this.showRuler=e},setCreatingElement:function(e){this.creatingElement=e},setAvailableFonts:function(){this.availableFonts=S.filter((function(e){return Q(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},updateSelectedSlidesIndex:function(e){this.selectedSlidesIndex=e},setDialogForExport:function(e){this.dialogForExport=e}}}),de=n("1da1"),se=(n("ddb0"),n("96cf"),n("d4ec")),fe=n("257e"),be=n("262e"),me=n("2caf"),pe=n("ade3"),ve=n("3835"),Oe=(n("1276"),n("4dec")),he="PPTIST_DISCARDED_DB",je="PPTist",ye=function(){var e=Object(de["a"])(regeneratorRuntime.mark((function e(){var t,n,o,c,l,a,r,i;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return t=(new Date).getTime(),n=localStorage.getItem(he),o=n?JSON.parse(n):[],e.next=5,Oe["a"].getDatabaseNames();case 5:c=e.sent,l=c.filter((function(e){if(-1===e.indexOf(je))return!1;var n=e.split("_"),c=Object(ve["a"])(n,3),l=c[0],a=c[1],r=c[2];return l!==je||!a||!r||(!!o.includes(a)||t-+r>=432e5)})),a=Object(T["a"])(l);try{for(a.s();!(r=a.n()).done;)i=r.value,Oe["a"].delete(i)}catch(u){a.e(u)}finally{a.f()}localStorage.removeItem(he);case 10:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),ge=function(e){Object(be["a"])(n,e);var t=Object(me["a"])(n);function n(){var e;return Object(se["a"])(this,n),e=t.call(this,"".concat(je,"_").concat(ie,"_").concat((new Date).getTime())),Object(pe["a"])(Object(fe["a"])(e),"snapshots",void 0),e.version(1).stores({snapshots:"++id"}),e.snapshots=e.table("snapshots"),e}return n}(Oe["a"]),xe=new ge,Ce=Object(y["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&&(c.push(o[0]),a--),a>=2&&xe.snapshots.update(o[a-2],{index:n.slideIndex}),t.next=15,xe.snapshots.bulkDelete(c);case 15:e.setSnapshotCursor(a-1),e.setSnapshotLength(a);case 17:case"end":return t.stop()}}),t)})))()},unDo:function(){var e=this;return Object(de["a"])(regeneratorRuntime.mark((function t(){var n,o,c,l,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=ae(),o=ue(),c=e.snapshotCursor-1,t.next=7,xe.snapshots.orderBy("id").toArray();case 7:l=t.sent,a=l[c],r=a.index,i=a.slides,u=r>i.length-1?i.length-1:r,n.setSlides(i),n.updateSlideIndex(u),e.setSnapshotCursor(c),o.setActiveElementIdList([]);case 15:case"end":return t.stop()}}),t)})))()},reDo:function(){var e=this;return Object(de["a"])(regeneratorRuntime.mark((function t(){var n,o,c,l,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=ae(),o=ue(),c=e.snapshotCursor+1,t.next=7,xe.snapshots.orderBy("id").toArray();case 7:l=t.sent,a=l[c],r=a.index,i=a.slides,u=r>i.length-1?i.length-1:r,n.setSlides(i),n.updateSlideIndex(u),e.setSnapshotCursor(c),o.setActiveElementIdList([]);case 15:case"end":return t.stop()}}),t)})))()}}}),ke=Object(y["b"])("keyboard",{state:function(){return{ctrlKeyState:!1,shiftKeyState:!1,spaceKeyState:!1}},getters:{ctrlOrShiftKeyActive:function(e){return e.ctrlKeyState||e.shiftKeyState}},actions:{setCtrlKeyState:function(e){this.ctrlKeyState=e},setShiftKeyState:function(e){this.shiftKeyState=e},setSpaceKeyState:function(e){this.spaceKeyState=e}}}),Ee=Object(y["b"])("screen",{state:function(){return{screening:!1}},actions:{setScreening:function(e){this.screening=e}}}),we=(n("466d"),function(e,t){return Object(ne["padStart"])(""+e,t,"0")}),Ne=function(){return!navigator.userAgent.match(/(iPhone|iPod|iPad|Android|Mobile|BlackBerry|Symbian|Windows Phone)/i)},Ve={class:"pptist-editor"},Ie={class:"layout-content"},Se={class:"layout-content-center"};function Be(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("EditorHeader"),r=Object(j["resolveComponent"])("Thumbnails"),i=Object(j["resolveComponent"])("CanvasTool"),u=Object(j["resolveComponent"])("Canvas"),d=Object(j["resolveComponent"])("Remark"),s=Object(j["resolveComponent"])("Toolbar"),f=Object(j["resolveComponent"])("ExportDialog"),b=Object(j["resolveComponent"])("Modal");return Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],null,[Object(j["createElementVNode"])("div",Ve,[Object(j["createVNode"])(a,{class:"layout-header"}),Object(j["createElementVNode"])("div",Ie,[Object(j["createVNode"])(r,{class:"layout-content-left"}),Object(j["createElementVNode"])("div",Se,[Object(j["createVNode"])(i,{class:"center-top"}),Object(j["createVNode"])(u,{class:"center-body",style:Object(j["normalizeStyle"])({height:"calc(100% - ".concat(e.remarkHeight+40,"px)")})},null,8,["style"]),Object(j["createVNode"])(d,{class:"center-bottom",height:e.remarkHeight,"onUpdate:height":t[0]||(t[0]=function(t){return e.remarkHeight=t}),style:Object(j["normalizeStyle"])({height:"".concat(e.remarkHeight,"px")})},null,8,["height","style"])]),Object(j["createVNode"])(s,{class:"layout-content-right"})])]),Object(j["createVNode"])(b,{visible:!!e.dialogForExport,footer:null,centered:"",closable:!1,width:680,destroyOnClose:"",onCancel:t[1]||(t[1]=function(t){return e.closeExportDialog()})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f)]})),_:1},8,["visible"])],64)}(function(e){e["UP"]="up",e["DOWN"]="down",e["TOP"]="top",e["BOTTOM"]="bottom"})(k||(k={})),function(e){e["TOP"]="top",e["BOTTOM"]="bottom",e["LEFT"]="left",e["RIGHT"]="right",e["VERTICAL"]="vertical",e["HORIZONTAL"]="horizontal",e["CENTER"]="center"}(E||(E={})),function(e){e["T"]="top",e["B"]="bottom",e["L"]="left",e["R"]="right"}(w||(w={})),function(e){e["LEFT_TOP"]="left-top",e["TOP"]="top",e["RIGHT_TOP"]="right-top",e["LEFT"]="left",e["RIGHT"]="right",e["LEFT_BOTTOM"]="left-bottom",e["BOTTOM"]="bottom",e["RIGHT_BOTTOM"]="right-bottom"}(N||(N={})),function(e){e["START"]="start",e["END"]="end",e["C"]="ctrl",e["C1"]="ctrl1",e["C2"]="ctrl2"}(V||(V={})),function(e){e["C"]="C",e["X"]="X",e["Z"]="Z",e["Y"]="Y",e["A"]="A",e["G"]="G",e["L"]="L",e["F"]="F",e["D"]="D",e["B"]="B",e["P"]="P",e["MINUS"]="-",e["EQUAL"]="=",e["DIGIT_0"]="0",e["DELETE"]="DELETE",e["UP"]="ARROWUP",e["DOWN"]="ARROWDOWN",e["LEFT"]="ARROWLEFT",e["RIGHT"]="ARROWRIGHT",e["ENTER"]="ENTER",e["SPACE"]=" ",e["TAB"]="TAB",e["BACKSPACE"]="BACKSPACE",e["ESC"]="ESCAPE",e["PAGEUP"]="PAGEUP",e["PAGEDOWN"]="PAGEDOWN",e["F5"]="F5"}(I||(I={}));var Le,Te,_e,Me=[{type:"通用",children:[{label:"剪切",value:"Ctrl + X"},{label:"复制",value:"Ctrl + C"},{label:"粘贴",value:"Ctrl + V"},{label:"快速复制粘贴",value:"Ctrl + D"},{label:"全选",value:"Ctrl + A"},{label:"撤销",value:"Ctrl + Z"},{label:"恢复",value:"Ctrl + Y"},{label:"删除",value:"Delete / Backspace"},{label:"多选",value:"按住 Ctrl 或 Shift"},{label:"打印",value:"Ctrl + P"},{label:"关闭弹窗",value:"ESC"}]},{type:"幻灯片放映",children:[{label:"从头开始放映幻灯片",value:"F5"},{label:"从当前开始放映幻灯片",value:"Shift + F5"},{label:"切换上一页",value:"↑ / ← / PgUp"},{label:"切换下一页",value:"↓ / → / PgDown"},{label:"切换下一页",value:"Enter / Space"},{label:"退出放映",value:"ESC"},{label:"调整画笔笔触大小",value:"鼠标滚轮"}]},{type:"幻灯片编辑",children:[{label:"新建幻灯片",value:"Enter"},{label:"移动画布",value:"Space + 鼠标拖拽"},{label:"缩放画布",value:"Ctrl + 鼠标滚轮"},{label:"放大画布",value:"Ctrl + ="},{label:"缩小画布",value:"Ctrl + -"},{label:"使画布适应当前屏幕",value:"Ctrl + 0"},{label:"上一页(未选中元素)",value:"↑ / ←"},{label:"下一页(未选中元素)",value:"↓ / →"},{label:"上一页",value:"鼠标上滚 / PgUp"},{label:"下一页",value:"鼠标下滚 / PgDown"}]},{type:"元素操作",children:[{label:"移动",value:"↑ / ← / ↓ / →"},{label:"锁定",value:"Ctrl + L"},{label:"组合",value:"Ctrl + G"},{label:"取消组合",value:"Ctrl + Shift + G"},{label:"置顶层",value:"Alt + F"},{label:"置底层",value:"Alt + B"},{label:"锁定宽高比例",value:"按住 Ctrl 或 Shift"},{label:"创建水平 / 垂直线条",value:"按住 Ctrl 或 Shift"},{label:"切换焦点元素",value:"Tab"},{label:"确认图片裁剪",value:"Enter"}]},{type:"表格编辑",children:[{label:"聚焦到下一个单元格",value:"Tab"},{label:"在上方插入一行",value:"Ctrl + ↑"},{label:"在下方插入一行",value:"Ctrl + ↓"},{label:"在左侧插入一列",value:"Ctrl + ←"},{label:"在右侧插入一列",value:"Ctrl + →"}]},{type:"图表数据编辑",children:[{label:"聚焦到下一行",value:"Enter"}]},{type:"文本编辑",children:[{label:"加粗",value:"Ctrl + B"},{label:"斜体",value:"Ctrl + I"},{label:"下划线",value:"Ctrl + U"},{label:"删除线",value:"Ctrl + D"}]}],De=(n("3b18"),n("f64c")),ze=(n("a630"),n("3ca3"),n("b311")),Ae=n.n(ze),Fe=(n("25f0"),n("3452")),Re=n.n(Fe),Pe="pptist",He=function(e){return Re.a.AES.encrypt(e,Pe).toString()},qe=function(e){var t=Re.a.AES.decrypt(e,Pe);return t.toString(Re.a.enc.Utf8)},Ue=function(e){return new Promise((function(t,n){var o=document.createElement("button"),c=new Ae.a(o,{text:function(){return e},action:function(){return"copy"},container:document.body});c.on("success",(function(e){c.destroy(),t(e)})),c.on("error",(function(e){c.destroy(),n(e)})),document.body.appendChild(o),o.click(),document.body.removeChild(o)}))},We=function(){return new Promise((function(e,t){var n;null!==(n=navigator.clipboard)&&void 0!==n&&n.readText?navigator.clipboard.readText().then((function(n){return n||t("剪贴板为空或者不包含文本"),e(n)})):t("浏览器不支持或禁止访问剪贴板,请使用快捷键 Ctrl + V")}))},Ge=function(e){var t;try{t=JSON.parse(qe(e))}catch(n){t=e}return t},Xe=function(e){var t=e.split("\r\n");""===t[t.length-1]&&t.pop();var n=-1,o=[];for(var c in t){if(o[c]=t[c].split("\t"),1===o[c].length)return null;if(-1===n)n=o[c].length;else if(n!==o[c].length)return null}return o},Ye=(n("159b"),function(e){var t=e.left,n=e.top,o=e.width,c=e.height,l=e.rotate,a=void 0===l?0:l,r=Math.sqrt(Math.pow(o,2)+Math.pow(c,2))/2,i=180*Math.atan(c/o)/Math.PI,u=(180-a-i)*Math.PI/180,d=(i-a)*Math.PI/180,s=t+o/2,f=n+c/2,b=[s+r*Math.cos(u),s+r*Math.cos(d),s-r*Math.cos(u),s-r*Math.cos(d)],m=[f-r*Math.sin(u),f-r*Math.sin(d),f+r*Math.sin(u),f+r*Math.sin(d)];return{xRange:[Math.min.apply(Math,b),Math.max.apply(Math,b)],yRange:[Math.min.apply(Math,m),Math.max.apply(Math,m)]}}),Ze=function(e){var t=Ye({left:e.left,top:e.top,width:e.width,height:e.height,rotate:0}),n=t.xRange,o=t.yRange,c=Ye({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),l=c.xRange,a=c.yRange;return{offsetX:l[0]-n[0],offsetY:a[0]-o[0]}},Je=function(e){var t,n,o,c;if("line"===e.type)t=e.left,n=e.left+Math.max(e.start[0],e.end[0]),o=e.top,c=e.top+Math.max(e.start[1],e.end[1]);else if("rotate"in e&&e.rotate){var l=e.left,a=e.top,r=e.width,i=e.height,u=e.rotate,d=Ye({left:l,top:a,width:r,height:i,rotate:u}),s=d.xRange,f=d.yRange;t=s[0],n=s[1],o=f[0],c=f[1]}else t=e.left,n=e.left+e.width,o=e.top,c=e.top+e.height;return{minX:t,maxX:n,minY:o,maxY:c}},Ke=function(e){var t=[],n=[],o=[],c=[];e.forEach((function(e){var l=Je(e),a=l.minX,r=l.maxX,i=l.minY,u=l.maxY;t.push(a),n.push(i),o.push(r),c.push(u)}));var l=Math.min.apply(Math,t),a=Math.max.apply(Math,o),r=Math.min.apply(Math,n),i=Math.max.apply(Math,c);return{minX:l,maxX:a,minY:r,maxY:i}},Qe=function(e){var t=[];return e.forEach((function(e){var n=t.findIndex((function(t){return t.value===e.value}));if(-1===n)t.push(e);else{var o=t[n],c=Math.min(o.range[0],e.range[0]),l=Math.max(o.range[1],e.range[1]),a=[c,l],r={value:e.value,range:a};t[n]=r}})),t},$e=function(e){var t,n={},o={},c=Object(T["a"])(e);try{for(c.s();!(t=c.n()).done;){var l=t.value,a=l.groupId;a&&!n[a]&&(n[a]=Object(C["b"])(10)),o[l.id]=Object(C["b"])(10)}}catch(r){c.e(r)}finally{c.f()}return{groupIdMap:n,elIdMap:o}},et=function(e){var t=te()(e);return[t.setAlpha(.3).toRgbString(),t.setAlpha(.1).toRgbString()]},tt=function(e){var t=e.start.join(","),n=e.end.join(",");if(e.broken){var o=e.broken.join(",");return"M".concat(t," L").concat(o," L").concat(n)}if(e.curve){var c=e.curve.join(",");return"M".concat(t," Q").concat(c," ").concat(n)}if(e.cubic){var l=Object(ve["a"])(e.cubic,2),a=l[0],r=l[1],i=a.join(","),u=r.join(",");return"M".concat(t," C").concat(i," ").concat(u," ").concat(n)}return"M".concat(t," L").concat(n)},nt=n("53ca"),ot=function(e){var t,n=e.replace(/[\n\r]+/g,"
"),o=n.split("
"),c="",l=Object(T["a"])(o);try{for(l.s();!(t=l.n()).done;){var a=t.value;a&&(c+="
".concat(a,"
"))}}catch(r){l.e(r)}finally{l.f()}return c},ct=(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}}))}),lt=function(e){return new Promise((function(t){var n=new FileReader;n.addEventListener("load",(function(){t(n.result)})),n.readAsDataURL(e)}))},at=1e3;(function(e){e["ROUND_RECT"]="roundRect",e["ROUND_RECT_DIAGONAL"]="roundRectDiagonal",e["ROUND_RECT_SINGLE"]="roundRectSingle",e["ROUND_RECT_SAMESIDE"]="roundRectSameSide",e["CUT_RECT_DIAGONAL"]="cutRectDiagonal",e["CUT_RECT_SINGLE"]="cutRectSingle",e["CUT_RECT_SAMESIDE"]="cutRectSameSide",e["MESSAGE"]="message",e["ROUND_MESSAGE"]="roundMessage",e["L"]="L",e["RING_RECT"]="ringRect",e["PLUS"]="plus"})(Le||(Le={})),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"}(Te||(Te={}));var rt=(_e={},Object(pe["a"])(_e,Le.ROUND_RECT,(function(e,t){var n=Math.min(e,t)/8;return"M ".concat(n," 0 L ").concat(e-n," 0 Q ").concat(e," 0 ").concat(e," ").concat(n," L ").concat(e," ").concat(t-n," Q ").concat(e," ").concat(t," ").concat(e-n," ").concat(t," L ").concat(n," ").concat(t," Q 0 ").concat(t," 0 ").concat(t-n," L 0 ").concat(n," Q 0 0 ").concat(n," 0 Z")})),Object(pe["a"])(_e,Le.CUT_RECT_DIAGONAL,(function(e,t){var n=Math.min(e,t)/5;return"M 0 ".concat(t-n," L 0 0 L ").concat(e-n," 0 L ").concat(e," ").concat(n," L ").concat(e," ").concat(t," L ").concat(n," ").concat(t," Z")})),Object(pe["a"])(_e,Le.CUT_RECT_SINGLE,(function(e,t){var n=Math.min(e,t)/5;return"M 0 ".concat(t," L 0 0 L ").concat(e-n," 0 L ").concat(e," ").concat(n," L ").concat(e," ").concat(t," Z")})),Object(pe["a"])(_e,Le.CUT_RECT_SAMESIDE,(function(e,t){var n=Math.min(e,t)/5;return"M 0 ".concat(n," L ").concat(n," 0 L ").concat(e-n," 0 L ").concat(e," ").concat(n," L ").concat(e," ").concat(t," L 0 ").concat(t," Z")})),Object(pe["a"])(_e,Le.ROUND_RECT_DIAGONAL,(function(e,t){var n=Math.min(e,t)/8;return"M 0 0 L ".concat(e-n," 0 Q ").concat(e," 0 ").concat(e," ").concat(n," L ").concat(e," ").concat(t," L ").concat(n," ").concat(t," Q 0 ").concat(t," 0 ").concat(t-n," L 0 0 Z")})),Object(pe["a"])(_e,Le.ROUND_RECT_SINGLE,(function(e,t){var n=Math.min(e,t)/8;return"M 0 0 L ".concat(e-n," 0 Q ").concat(e," 0 ").concat(e," ").concat(n," L ").concat(e," ").concat(t," L 0 ").concat(t," L 0 0 Z")})),Object(pe["a"])(_e,Le.ROUND_RECT_SAMESIDE,(function(e,t){var n=Math.min(e,t)/8;return"M 0 ".concat(n," Q 0 0 ").concat(n," 0 L ").concat(e-n," 0 Q ").concat(e," 0 ").concat(e," ").concat(n," L ").concat(e," ").concat(t," L 0 ").concat(t," Z")})),Object(pe["a"])(_e,Le.MESSAGE,(function(e,t){var n=e/5,o=t/5;return"M 0 0 L ".concat(e," 0 L ").concat(e," ").concat(t-o," L ").concat(e/2," ").concat(t-o," L ").concat(e/2-n," ").concat(t," L ").concat(e/2-n," ").concat(t-o," L 0 ").concat(t-o," Z")})),Object(pe["a"])(_e,Le.ROUND_MESSAGE,(function(e,t){var n=Math.min(e,t)/8,o=e/5,c=t/5;return"M 0 ".concat(n," Q 0 0 ").concat(n," 0 L ").concat(e-n," 0 Q ").concat(e," 0 ").concat(e," ").concat(n," L ").concat(e," ").concat(t-n-c," Q ").concat(e," ").concat(t-c," ").concat(e-n," ").concat(t-c," L ").concat(e/2," ").concat(t-c," L ").concat(e/2-o," ").concat(t," L ").concat(e/2-o," ").concat(t-c," L ").concat(n," ").concat(t-c," Q 0 ").concat(t-c," 0 ").concat(t-n-c," L 0 ").concat(n," Z")})),Object(pe["a"])(_e,Le.L,(function(e,t){var n=Math.min(e,t)/4;return"M 0 0 L 0 ".concat(t," L ").concat(e," ").concat(t," L ").concat(e," ").concat(t-n," L ").concat(n," ").concat(t-n," L ").concat(n," 0 Z")})),Object(pe["a"])(_e,Le.RING_RECT,(function(e,t){var n=Math.min(e,t)/4;return"M 0 0 ".concat(e," 0 ").concat(e," ").concat(t," L 0 ").concat(t," L 0 0 Z M ").concat(n," ").concat(n," L ").concat(n," ").concat(t-n," L ").concat(e-n," ").concat(t-n," L ").concat(e-n," ").concat(n," Z")})),Object(pe["a"])(_e,Le.PLUS,(function(e,t){var n=Math.min(e,t)/4;return"M ".concat(e/2-n/2," 0 L ").concat(e/2-n/2," ").concat(t/2-n/2," L 0 ").concat(t/2-n/2," L 0 ").concat(t/2+n/2," L ").concat(e/2-n/2," ").concat(t/2+n/2," L ").concat(e/2-n/2," ").concat(t," L ").concat(e/2+n/2," ").concat(t," L ").concat(e/2+n/2," ").concat(t/2+n/2," L ").concat(e," ").concat(t/2+n/2," L ").concat(e," ").concat(t/2-n/2," L ").concat(e/2+n/2," ").concat(t/2-n/2," L ").concat(e/2+n/2," 0 Z")})),_e),it=[{type:"矩形",children:[{viewBox:[200,200],path:"M 0 0 L 200 0 L 200 200 L 0 200 Z"},{viewBox:[200,200],path:"M 50 0 L 150 0 Q 200 0 200 50 L 200 150 Q 200 200 150 200 L 50 200 Q 0 200 0 150 L 0 50 Q 0 0 50 0 Z",pathFormula:Le.ROUND_RECT},{viewBox:[200,200],path:"M 0 150 L 0 0 L 150 0 L 200 50 L 200 200 L 50 200 Z",pathFormula:Le.CUT_RECT_DIAGONAL},{viewBox:[200,200],path:"M 0 200 L 0 0 L 150 0 L 200 50 L 200 200 Z",pathFormula:Le.CUT_RECT_SINGLE},{viewBox:[200,200],path:"M 0 50 L 50 0 L 150 0 L 200 50 L 200 200 L 0 200 Z",pathFormula:Le.CUT_RECT_SAMESIDE},{viewBox:[200,200],path:"M 0 0 L 150 0 Q 200 0 200 50 L 200 200 L 50 200 Q 0 200 0 150 L 0 0 Z",pathFormula:Le.ROUND_RECT_DIAGONAL},{viewBox:[200,200],path:"M 0 0 L 150 0 Q 200 0 200 50 L 200 200 L 0 200 L 0 0 Z",pathFormula:Le.ROUND_RECT_SINGLE},{viewBox:[200,200],path:"M 0 50 Q 0 0 50 0 L 150 0 Q 200 0 200 50 L 200 200 L 0 200 Z",pathFormula:Le.ROUND_RECT_SAMESIDE}]},{type:"常用形状",children:[{viewBox:[200,200],path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z"},{viewBox:[200,200],path:"M 0 200 A 50 100 0 1 1 200 200 L 0 200 Z"},{viewBox:[200,200],path:"M 40 20 A 100 100 0 1 0 200 100 L 100 100 L 40 20 Z"},{viewBox:[200,200],path:"M 100 0 A 100 100 102 1 0 200 100 L 100 100 L 100 0 Z"},{viewBox:[200,200],path:"M 160 20 A 100 100 0 1 0 200 100 L 100 100 L 160 20 Z"},{viewBox:[200,200],path:"M 100 0 A 100 100 102 1 0 200 100 L 100 0 Z"},{viewBox:[200,200],path:"M 100 0 A 100 100 102 1 0 200 100 L 200 0 L 100 0 Z"},{viewBox:[200,200],path:"M 0 0 L 200 0 Q 200 200 0 200 L 0 0 Z"},{viewBox:[200,200],path:"M 100 0 L 0 200 L 200 200 L 100 0 Z"},{viewBox:[200,200],path:"M 0 0 L 0 200 L 200 200 Z"},{viewBox:[200,200],path:"M 50 0 L 200 0 L 150 200 L 0 200 L 50 0 Z"},{viewBox:[200,200],path:"M 0 0 L 150 0 L 200 200 L 50 200 L 0 0 Z"},{viewBox:[200,200],path:"M 50 0 L 150 0 L 200 200 L 0 200 L 50 0 Z"},{viewBox:[200,200],path:"M 100 0 L 0 100 L 100 200 L 200 100 L 100 0 Z"},{viewBox:[200,200],path:"M 100 0 L 0 90 L 50 200 L 150 200 L 200 90 L 100 0 Z"},{viewBox:[200,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,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,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,200],path:"M 100 0 L 0 50 L 0 200 L 200 200 L 200 50 L 100 0 Z"},{viewBox:[200,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,200],path:"M 50 0 A 25 50 0 1 0 50 200 L 150 200 A 25 50 0 1 0 150 0 L 50 0 Z"},{viewBox:[200,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,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,200],path:"M 200 0 L 200 200 L 0 200 L 0 100 L 200 0 Z"},{viewBox:[200,200],path:"M 0 0 L 200 100 L 200 200 L 0 200 L 0 0 Z"},{viewBox:[200,200],path:"M 200 0 L 100 0 L 0 100 L 0 200 L 200 0 Z"},{viewBox:[200,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,200],path:"M 0 0 L 0 200 L 200 200 L 200 140 L 60 140 L 60 0 L 0 0 Z",pathFormula:Le.L},{viewBox:[200,200],path:"M0 0 L200 0 L200 200 L0 200 L0 0 Z M50 50 L50 150 L150 150 L150 50 Z",pathFormula:Le.RING_RECT},{viewBox:[200,200],path:"M0 100 A100 100 0 1 1 0 101 Z M150 100 A50 50 0 1 0 150 101 Z"},{viewBox:[200,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",pathFormula:Le.PLUS},{viewBox:[200,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,200],path:"M 0 0 L 200 0 L 200 160 L 100 160 L 60 200 L 60 160 L 0 160 Z",pathFormula:Le.MESSAGE},{viewBox:[200,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",pathFormula:Le.ROUND_MESSAGE},{viewBox:[200,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,200],path:"M 200 0 L 0 0 L 200 200 L 0 200 L 200 0 Z"},{viewBox:[200,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,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"},{viewBox:[200,200],path:"M 100 0 Q 0 50 0 175 Q 100 225 200 175 Q 200 50 100 0 Z"},{viewBox:[200,200],path:"M 0 100 A 50 50 0 1 1 200 100 L 100 200 L 0 100 Z"},{viewBox:[200,200],path:"M 100 0 L 60 60 L 0 100 L 60 140 L 100 200 L 140 140 L 200 100 L 140 60 L 100 0 Z"},{viewBox:[200,200],path:"M 100 0 L 80 40 L 20 20 L 40 80 L 0 100 L 40 120 L 20 180 L 80 160 L 100 200 L 120 160 L 180 180 L 160 120 L 200 100 L 160 80 L 180 20 L 120 40 L 100 0 Z"}]},{type:"箭头",children:[{viewBox:[200,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,200],path:"M 0 0 L 200 100 L 0 200 L 60 100 L 0 0 Z"},{viewBox:[200,200],path:"M 200 0 L 0 100 L 200 200 L 140 100 L 200 0 Z"},{viewBox:[200,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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},{viewBox:[1024,1024],path:"M997.8886764 504.17210418L537.2729208 43.89182982c-13.97838539-13.97838539-36.56745619-13.97838539-50.5458416 0L26.1113236 504.17210418c-13.41924998 13.41924998-21.02349164 31.64706454-21.02349163 50.65766867 0 39.47496036 32.09437288 71.56933323 71.56933324 71.56933323h48.53295408V954.83524937c0 19.79339373 15.99127289 35.78466661 35.78466663 35.78466662H440.43066677V740.12724968h125.24633315v250.49266631h297.34821416c19.79339373 0 35.78466661-15.99127289 35.78466663-35.78466662V626.39910608h48.53295408c19.01060414 0 37.23841869-7.49241457 50.65766869-21.02349163 27.84494371-27.95677079 27.84494371-73.24673948-0.11182708-101.20351027z",special:!0},{viewBox:[1024,1024],path:"M1009.13013121 349.27572283L674.72427717 14.86986879c-8.82158299-8.82158299-20.35749924-13.16451618-31.89341544-13.16451618s-23.07183245 4.34293316-31.89341547 13.16451618L392.29790453 233.6451272c-16.5574327-1.90003326-33.25058207-2.71433322-49.94373146-2.71433324-99.34459624 0-198.68919249 32.70771543-280.25490606 98.12314628-20.90036589 16.69314938-22.52896582 48.04369819-3.66434987 67.04403081l246.59717401 246.59717401-292.33368895 292.06225564c-3.52863319 3.52863319-5.83581644 8.27871636-6.24296642 13.30023282l-4.61436649 50.48659809c-1.22144996 12.75736619 8.95729967 23.6146991 21.57894918 23.6146991 0.6785833 0 1.35716662 0 2.03574992-0.13571666l50.48659809-4.61436649c5.02151649-0.40714999 9.77159962-2.71433322 13.30023282-6.24296643l292.33368896-292.33368896 246.59717402 246.59717401c8.82158299 8.82158299 20.35749924 13.16451618 31.89341544 13.16451618 13.16451618 0 26.19331567-5.70009979 35.15061536-16.82886604 76.40848044-95.40881307 108.16617924-214.83947521 95.27309638-330.33435417l218.63954175-218.63954173c17.50744934-17.37173267 17.50744934-45.8722316 0-63.51539759z",special:!0},{viewBox:[1024,1024],path:"M976.62005979 160.47737905c-0.39452595-0.39452595-80.35178503 78.64217259-239.47725131 237.50462156l-111.6508437-111.65084369 237.89914752-237.89914752c-125.19623464-75.35445635-286.03131335-56.02268482-390.31767264 48.26367449-81.92988882 81.92988882-112.57140424 200.15616502-83.37648398 310.09739626l2.36715569 8.81107954-372.82702222 372.69551356c-8.15353628 8.15353628-8.15353628 21.56741857 0 29.72095487l185.95323084 185.95323084c8.15353628 8.15353628 21.56741857 8.15353628 29.72095485 0l372.56400493-372.56400493 8.81107953 2.3671557c110.07273989 29.32642892 228.29901608-1.18357785 310.36041356-83.24497533 104.41786795-104.2863593 123.74963948-265.12143802 49.97328693-390.05465535z",special:!0}]},{type:"线性",children:[{viewBox:[1024,1024],path:"M953.5488 832.61667556c-24.08448-57.08913778-58.74574221-108.31644445-102.70947556-152.28017777-43.96373333-43.96373333-95.19104-78.49756444-152.28017777-102.70947558-0.50972445-0.25486222-1.01944888-0.38229333-1.52917334-0.63715555C776.41955556 519.64586667 828.02915556 426.23886221 828.02915556 320.85333332c0-174.58062221-141.44853334-316.02915556-316.02915556-316.02915554S195.97084444 146.27271111 195.97084444 320.85333332c0 105.38552889 51.6096 198.79253333 130.99918223 256.26396447-0.50972445 0.25486222-1.01944888 0.38229333-1.52917334 0.63715555-57.08913778 24.08448-108.31644445 58.61831112-152.28017777 102.70947554-43.96373333 43.96373333-78.49756444 95.19104-102.70947556 152.28017779C46.74901333 888.55893332 34.13333334 947.8144 32.85902222 1008.72647111c-0.12743111 5.7344 4.46008889 10.44935111 10.19448889 10.44935111h76.45866667c5.60696888 0 10.06705778-4.46008889 10.19448889-9.93962666 2.54862221-98.37681778 42.05226667-190.50951112 111.88451555-260.34176001 72.25344-72.25344 168.20906666-112.01194667 270.40881778-112.01194667s198.15537778 39.75850667 270.40881778 112.01194667C852.24106667 818.72668444 891.74471111 910.85937779 894.29333333 1009.23619556c0.12743111 5.60696888 4.58752 9.93962667 10.19448889 9.93962666h76.45866667c5.7344 0 10.32192-4.71495112 10.19448889-10.44935111-1.27431111-60.91207112-13.88999112-120.16753779-37.59217778-176.10979555zM512 540.03484444c-58.49088 0-113.54112-22.81016889-154.95623111-64.22527999S292.81848888 379.34421333 292.81848888 320.85333332c0-58.49088 22.81016889-113.54112 64.22528001-154.9562311S453.50912 101.67182221 512 101.67182221s113.54112 22.81016889 154.95623111 64.22528001S731.18151112 262.36245333 731.18151112 320.85333332c0 58.49088-22.81016889 113.54112-64.22528001 154.95623113S570.49088 540.03484444 512 540.03484444z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M985.31555555 111.50222222H38.68444445c-20.13866667 0-36.40888889 16.27022222-36.4088889 36.40888889v728.17777778c0 20.13866667 16.27022222 36.40888889 36.4088889 36.40888889h946.6311111c20.13866667 0 36.40888889-16.27022222 36.4088889-36.40888889V147.91111111c0-20.13866667-16.27022222-36.40888889-36.4088889-36.40888889z m-45.5111111 126.06577778V830.57777778H84.19555555V237.568l-31.40266666-24.46222222 44.71466666-57.45777778 48.6968889 37.888h731.70488888l48.69688889-37.888 44.71466667 57.45777778-31.51644444 24.46222222z M877.90933333 193.42222222L512 477.86666667 146.09066667 193.42222222l-48.69688889-37.888-44.71466667 57.45777778 31.40266667 24.46222222 388.66488889 302.19377778c22.98311111 17.86311111 55.18222222 17.86311111 78.16533333 0L939.80444445 237.568l31.40266666-24.46222222-44.71466666-57.45777778-48.58311112 37.77422222z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M985.31555555 88.74666667H38.68444445c-20.13866667 0-36.40888889 16.27022222-36.4088889 36.40888888v564.33777778c0 20.13866667 16.27022222 36.40888889 36.4088889 36.40888889h432.35555555v127.43111111H275.34222222c-10.01244445 0-18.20444445 8.192-18.20444444 18.20444445v54.61333333c0 5.00622222 4.096 9.10222222 9.10222222 9.10222222h491.52c5.00622222 0 9.10222222-4.096 9.10222222-9.10222222v-54.61333333c0-10.01244445-8.192-18.20444445-18.20444444-18.20444445H552.96V725.90222222h432.35555555c20.13866667 0 36.40888889-16.27022222 36.4088889-36.40888889V125.15555555c0-20.13866667-16.27022222-36.40888889-36.4088889-36.40888888z m-45.5111111 555.23555555H84.19555555V170.66666667h855.6088889v473.31555555z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m0 932.97777778c-233.69955555 0-423.25333333-189.55377778-423.25333333-423.25333333 0-101.26222222 35.61244445-194.33244445 95.00444444-267.15022222l595.39911111 595.39911111C706.33244445 899.64088889 613.26222222 935.25333333 512 935.25333333z m328.24888889-156.10311111L244.84977778 183.75111111C317.66755555 124.35911111 410.73777778 88.74666667 512 88.74666667c233.69955555 0 423.25333333 189.55377778 423.25333333 423.25333333 0 101.26222222-35.61244445 194.33244445-95.00444444 267.15022222z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M901.80266667 257.82044445L656.95288889 12.97066667c-6.82666667-6.82666667-16.04266667-10.69511111-25.71377778-10.69511112H147.91111111c-20.13866667 0-36.40888889 16.27022222-36.40888889 36.4088889v946.6311111c0 20.13866667 16.27022222 36.40888889 36.40888889 36.4088889h728.17777778c20.13866667 0 36.40888889-16.27022222 36.40888889-36.4088889V283.648c0-9.67111111-3.86844445-19.00088889-10.69511111-25.82755555zM828.52977778 300.37333333H614.4V86.24355555L828.52977778 300.37333333z m2.048 639.43111112H193.42222222V84.19555555h343.60888889v245.76c0 26.39644445 21.39022222 47.78666667 47.78666667 47.78666667h245.76v562.06222223z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M981.07392 55.79662222H42.92608c-31.22062222 0-50.71758221 34.02410666-35.04355556 61.16693334L304.28728889 620.82616888V927.42542221c0 22.55530667 18.09521779 40.77795555 40.52309333 40.77795557h334.37923556c22.42787556 0 40.52309333-18.22264888 40.52309333-40.77795557V620.82616888L1016.24490667 116.96355556c15.54659555-27.14282666-3.95036444-61.16693333-35.17098667-61.16693334zM628.47203556 876.45297779H395.52796444V677.66044445h233.07150222v198.79253334z m12.23338666-301.50200891l-12.10595556 21.15356445h-233.19893332l-12.10595556-21.15356445L130.59868445 147.54702221h762.8026311L640.70542222 574.95096888z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M980.62285431 4.54099753H654.39920987c-4.2719763 0-7.76722963 3.49525333-7.76722962 7.76722964v72.4941432c0 4.2719763 3.49525333 7.76722963 7.76722962 7.76722963h207.64393877L604.04167111 350.57107753c-64.72691358-49.83972347-143.69374815-76.7661195-226.67365136-76.7661195-99.54999309 0-193.27456395 38.83614815-263.5679921 109.25903012S4.54099753 547.08198717 4.54099753 646.63198025s38.83614815 193.27456395 109.25903012 263.5679921C184.09345581 980.62285431 277.81802667 1019.45900247 377.36801975 1019.45900247s193.27456395-38.83614815 263.5679921-109.25903012C711.35889383 839.90654419 750.19504197 746.18197333 750.19504197 646.63198025c0-82.9799032-26.92639605-161.68783013-76.63666567-226.41474372L931.4304 162.34521283V369.60079013c0 4.2719763 3.49525333 7.76722963 7.76722963 7.76722962h72.4941432c4.2719763 0 7.76722963-3.49525333 7.76722964-7.76722962V43.37714569c0-21.35988148-17.47626667-38.83614815-38.83614816-38.83614816zM377.36801975 921.07409383c-151.33152395 0-274.44211358-123.11058963-274.44211358-274.44211358s123.11058963-274.44211358 274.44211358-274.44211358 274.44211358 123.11058963 274.44211358 274.44211358-123.11058963 274.44211358-274.44211358 274.44211358z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M591.98717801 512l405.34042913-483.16579151c6.79427767-8.02960089 1.08090782-20.22841761-9.41933951-20.2284176h-123.22349044c-7.25752386 0-14.20621693 3.24272343-18.99309439 8.80167789L511.38233839 415.95362022 177.07299399 17.40746878c-4.63246205-5.55895447-11.58115512-8.80167789-18.99309439-8.80167789H34.85640916c-10.50024731 0-16.21361717 12.19881672-9.41933952 20.2284176L430.77749876 512 25.43706964 995.16579151c-6.79427767 8.02960089-1.08090782 20.22841761 9.41933952 20.2284176h123.22349044c7.25752386 0 14.20621693-3.24272343 18.99309439-8.80167789l334.3093444-398.54615144 334.30934441 398.54615144c4.63246205 5.55895447 11.58115512 8.80167789 18.99309439 8.80167789h123.22349044c10.50024731 0 16.21361717-12.19881672 9.41933951-20.2284176L591.98717801 512z",special:!0,outlined:!0}]}],ut={bar:"bar",horizontalBar:"bar",line:"line",area:"line",scatter:"line",pie:"pie",ring:"pie"},dt=function(){var e=Ce(),t=Object(ne["debounce"])((function(){e.addSnapshot()}),300,{trailing:!0}),n=Object(ne["throttle"])((function(){e.reDo()}),100,{leading:!0,trailing:!1}),o=Object(ne["throttle"])((function(){e.unDo()}),100,{leading:!0,trailing:!1});return{addHistorySnapshot:t,redo:n,undo:o}},st=function(){var e=ue(),t=ae(),n=Object(y["c"])(e),o=n.creatingElement,c=Object(y["c"])(t),l=c.theme,a=c.viewportRatio,r=dt(),i=r.addHistorySnapshot,u=function(n,c){t.addElement(n),e.setActiveElementIdList([n.id]),o.value&&e.setCreatingElement(null),setTimeout((function(){e.setEditorareaFocus(!0)}),0),c&&c(),i()},d=function(e){ct(e).then((function(t){var n=t.width,o=t.height,c=o/n;cat?(n=at,o=n*c):o>at*a.value&&(o=at*a.value,n=o/c),u({type:"image",id:Object(C["b"])(10),src:e,width:n,height:o,left:(at-n)/2,top:(at*a.value-o)/2,fixedRatio:!0,rotate:0})}))},s=function(e){var t={type:"chart",id:Object(C["b"])(10),chartType:ut[e],left:300,top:81.25,width:400,height:400,rotate:0,themeColor:[l.value.themeColor],gridColor:l.value.fontColor,data:{labels:["类别1","类别2","类别3","类别4","类别5"],legends:["系列1"],series:[[12,19,5,2,18]]}},n={};"horizontalBar"===e?n={horizontalBars:!0}:"area"===e?n={showArea:!0}:"scatter"===e?n={showLine:!1}:"ring"===e&&(n={donut:!0}),u(Object(L["a"])(Object(L["a"])({},t),{},{options:n}))},f=function(e,t){for(var n={fontname:l.value.fontName,color:l.value.fontColor},o=[],c=0;c1&&void 0!==arguments[1]?arguments[1]:"",n=e.left,o=e.top,c=e.width,a=e.height,r=Object(C["b"])(10);u({type:"text",id:r,left:n,top:o,width:c,height:a,content:t,rotate:0,defaultFontName:l.value.fontName,defaultColor:l.value.fontColor},(function(){setTimeout((function(){var e=document.querySelector("#editable-element-".concat(r," .ProseMirror"));e&&e.focus()}),0)}))},m=function(e,t){var n=e.left,o=e.top,c=e.width,a=e.height,r={type:"shape",id:Object(C["b"])(10),left:n,top:o,width:c,height:a,viewBox:t.viewBox,path:t.path,fill:l.value.themeColor,fixedRatio:!1,rotate:0};t.special&&(r.special=!0),t.pathFormula&&(r.pathFormula=t.pathFormula,r.viewBox=[c,a],r.path=rt[t.pathFormula](c,a)),u(r)},p=function(e,t){var n=e.left,o=e.top,c=e.start,a=e.end,r={type:"line",id:Object(C["b"])(10),left:n,top:o,start:c,end:a,points:t.points,color:l.value.themeColor,style:t.style,width:2};t.isBroken&&(r.broken=[(c[0]+a[0])/2,(c[1]+a[1])/2]),t.isCurve&&(r.curve=[(c[0]+a[0])/2,(c[1]+a[1])/2]),t.isCubic&&(r.cubic=[[(c[0]+a[0])/2,(c[1]+a[1])/2],[(c[0]+a[0])/2,(c[1]+a[1])/2]]),u(r)},v=function(e){u({type:"latex",id:Object(C["b"])(10),width:e.w,height:e.h,rotate:0,left:(at-e.w)/2,top:(at*a.value-e.h)/2,path:e.path,latex:e.latex,color:l.value.fontColor,strokeWidth:2,viewBox:[e.w,e.h],fixedRatio:!0})},O=function(e){u({type:"video",id:Object(C["b"])(10),width:500,height:300,rotate:0,left:(at-500)/2,top:(at*a.value-300)/2,src:e})},h=function(e){u({type:"audio",id:Object(C["b"])(10),width:50,height:50,rotate:0,left:(at-50)/2,top:(at*a.value-50)/2,loop:!1,autoplay:!1,fixedRatio:!0,color:l.value.themeColor,src:e})};return{createImageElement:d,createChartElement:s,createTableElement:f,createTextElement:b,createShapeElement:m,createLineElement:p,createLatexElement:v,createVideoElement:O,createAudioElement:h}},ft=(n("07ac"),function(){var e=ue(),t=ae(),n=Object(y["c"])(t),o=n.currentSlide,c=dt(),l=c.addHistorySnapshot,a=function(n){var c,a=$e(n),r=a.groupIdMap,i=a.elIdMap,u=o.value.elements.map((function(e){return e.id})),d=Object(T["a"])(n);try{for(d.s();!(c=d.n()).done;){var s=c.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(b){d.e(b)}finally{d.f()}t.addElement(n),e.setActiveElementIdList(Object.values(i)),l()},r=function(e){var n=e.map((function(e){var t,n=$e(e.elements),o=n.groupIdMap,c=n.elIdMap,l=Object(T["a"])(e.elements);try{for(l.s();!(t=l.n()).done;){var a=t.value;a.id=c[a.id],a.groupId&&(a.groupId=o[a.groupId])}}catch(d){l.e(d)}finally{l.f()}if(e.animations){var r,i=Object(T["a"])(e.animations);try{for(i.s();!(r=i.n()).done;){var u=r.value;u.id=Object(C["b"])(10),u.elId=c[u.elId]}}catch(d){i.e(d)}finally{i.f()}}return Object(L["a"])(Object(L["a"])({},e),{},{id:Object(C["b"])(10)})}));t.addSlide(n),l()};return{addElementsFromData:a,addSlidesFromData:r}}),bt=function(){var e=st(),t=e.createTextElement,n=ft(),o=n.addElementsFromData,c=n.addSlidesFromData,l=function(e){t({left:0,top:0,width:600,height:50},e)},a=function(e,t){var n=(null===t||void 0===t?void 0:t.onlySlide)||!1,a=(null===t||void 0===t?void 0:t.onlyElements)||!1,r=Ge(e);if("object"===Object(nt["a"])(r)){var i=r.type,u=r.data;"elements"!==i||n?"slides"!==i||a||c(u):o(u)}else if(!a&&!n){var d=ot(r);l(d)}};return{pasteTextClipboardData:a}},mt=function(){var e=ue(),t=ae(),n=Object(y["c"])(e),o=n.selectedSlidesIndex,c=n.activeElementIdList,l=Object(y["c"])(t),a=l.currentSlide,r=l.slides,i=l.theme,u=l.slideIndex,d=Object(j["computed"])((function(){return[].concat(Object($["a"])(o.value),[u.value])})),s=Object(j["computed"])((function(){return r.value.filter((function(e,t){return d.value.includes(t)}))})),f=Object(j["computed"])((function(){return s.value.map((function(e){return e.id}))})),b=bt(),m=b.pasteTextClipboardData,p=ft(),v=p.addSlidesFromData,O=dt(),h=O.addHistorySnapshot,g=function(){var n={id:Object(C["b"])(10),elements:[],background:{type:"solid",color:i.value.backgroundColor}};t.updateSlideIndex(0),e.setActiveElementIdList([]),t.setSlides([n])},x=function(n){n===I.UP&&u.value>0?(c.value.length&&e.setActiveElementIdList([]),t.updateSlideIndex(u.value-1)):n===I.DOWN&&u.value0&&void 0!==arguments[0]?arguments[0]:f.value;r.value.length===n.length?g():t.deleteSlide(n),e.updateSelectedSlidesIndex([]),h()},B=function(){var e=Object($["a"])(f.value);k(),S(e)},_=function(){var t=Array.from(Array(r.value.length),(function(e,t){return t}));e.setActiveElementIdList([]),e.updateSelectedSlidesIndex(t)};return{resetSlides:g,updateSlideIndex:x,copySlide:k,pasteSlide:E,createSlide:w,createSlideByTemplate:N,copyAndPasteSlide:V,deleteSlide:S,cutSlide:B,selectAllSlide:_}},pt=function(){var e=ue(),t=ae(),n=Object(y["c"])(e),o=n.activeElementIdList,c=Object(y["c"])(t),l=c.currentSlide,a=dt(),r=a.addHistorySnapshot,i=function(){var n,c=JSON.parse(JSON.stringify(l.value.elements)),a=Object(T["a"])(c);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:c}),e.setActiveElementIdList([]),r()},u=function(n){var o=JSON.parse(JSON.stringify(l.value.elements));if(n.groupId){var c,a=[],i=Object(T["a"])(o);try{for(i.s();!(c=i.n()).done;){var u=c.value;u.groupId===n.groupId&&(u.lock=!1,a.push(u.id))}}catch(b){i.e(b)}finally{i.f()}t.updateSlide({elements:o}),e.setActiveElementIdList(a)}else{var d,s=Object(T["a"])(o);try{for(s.s();!(d=s.n()).done;){var f=d.value;if(f.id===n.id){f.lock=!1;break}}}catch(b){s.e(b)}finally{s.f()}t.updateSlide({elements:o}),e.setActiveElementIdList([n.id])}r()};return{lockElement:i,unlockElement:u}},vt=function(){var e=ue(),t=ae(),n=Object(y["c"])(e),o=n.activeElementIdList,c=n.activeGroupElementId,l=Object(y["c"])(t),a=l.currentSlide,r=dt(),i=r.addHistorySnapshot,u=function(){if(o.value.length){var n=[];n=c.value?a.value.elements.filter((function(e){return e.id!==c.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}},Ot=function(){var e=ue(),t=ae(),n=Object(y["c"])(e),o=n.activeElementIdList,c=n.activeElementList,l=n.handleElementId,a=Object(y["c"])(t),r=a.currentSlide,i=dt(),u=i.addHistorySnapshot,d=Object(j["computed"])((function(){if(c.value.length<2)return!1;var e=c.value[0].groupId;if(!e)return!0;var t=c.value.every((function(t){return(t.groupId&&t.groupId)===e}));return!t})),s=function(){var e;if(c.value.length){var n,l=JSON.parse(JSON.stringify(r.value.elements)),a=Object(C["b"])(10),i=[],d=Object(T["a"])(l);try{for(d.s();!(n=d.n()).done;){var s=n.value;o.value.includes(s.id)&&(s.groupId=a,i.push(s))}}catch(p){d.e(p)}finally{d.f()}var f=l.findIndex((function(e){return e.id===i[i.length-1].id})),b=i.map((function(e){return e.id}));l=l.filter((function(e){return!b.includes(e.id)}));var m=f-i.length+1;(e=l).splice.apply(e,[m,0].concat(i)),t.updateSlide({elements:l}),u()}},f=function(){if(c.value.length){var n=c.value.some((function(e){return e.groupId}));if(n){var a,i=JSON.parse(JSON.stringify(r.value.elements)),d=Object(T["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(b){d.e(b)}finally{d.f()}t.updateSlide({elements:i});var f=l.value?[l.value]:[];e.setActiveElementIdList(f),u()}}};return{canCombine:d,combineElements:s,uncombineElements:f}},ht=function(){var e=ue(),t=Object(y["c"])(e),n=t.activeElementIdList,o=t.activeElementList,c=bt(),l=c.pasteTextClipboardData,a=vt(),r=a.deleteElement,i=function(){if(n.value.length){var t=He(JSON.stringify({type:"elements",data:o.value}));Ue(t).then((function(){e.setEditorareaFocus(!0)}))}},u=function(){i(),r()},d=function(){We().then((function(e){l(e)})).catch((function(e){return De["a"].warning(e)}))},s=function(){i(),d()};return{copyElement:i,cutElement:u,pasteElement:d,quickCopyElement:s}},jt=function(){var e=ue(),t=Object(y["c"])(ae()),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}},yt=function(){var e=ae(),t=Object(y["c"])(ue()),n=t.activeElementIdList,o=t.activeGroupElementId,c=Object(y["c"])(e),l=c.currentSlide,a=dt(),r=a.addHistorySnapshot,i=function(t){var c=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-=c;break;case I.RIGHT:n+=c;break;case I.UP:o-=c;break;case I.DOWN:o+=c;break;default:break}return Object(L["a"])(Object(L["a"])({},e),{},{left:n,top:o})};a=o.value?l.value.elements.map((function(e){return o.value===e.id?i(e):e})):l.value.elements.map((function(e){return n.value.includes(e.id)?i(e):e})),e.updateSlide({elements:a}),r()};return{moveElement:i}},gt=function(){var e=ae(),t=Object(y["c"])(e),n=t.currentSlide,o=dt(),c=o.addHistorySnapshot,l=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})),c=l(e,o),a=c.minLevel,r=c.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($["a"])(u)))}else n.splice.apply(n,[a+1,0].concat(Object($["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],b=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,b)}else n.splice(s+1,0,b)}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})),c=l(e,o),a=c.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($["a"])(i)))}else n.splice.apply(n,[a-1,0].concat(Object($["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 b=n.filter((function(e){return e.groupId===s.groupId}));n.splice(d-b.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})),c=l(e,o),a=c.minLevel,r=c.maxLevel;if(r===e.length-1)return null;var i=n.splice(a,o.length);n.push.apply(n,Object($["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})),c=l(e,o),a=c.minLevel;if(0===a)return;var r=n.splice(a,o.length);n.unshift.apply(n,Object($["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 l;o===k.UP?l=a(n.value.elements,t):o===k.DOWN?l=r(n.value.elements,t):o===k.TOP?l=i(n.value.elements,t):o===k.BOTTOM&&(l=u(n.value.elements,t)),l&&(e.updateSlide({elements:l}),c())};return{orderElement:d}},xt=function(){var e=document.documentElement;e.requestFullscreen?e.requestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullScreen?e.webkitRequestFullScreen():e.msRequestFullscreen&&e.msRequestFullscreen()},Ct=function(){document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.msExitFullscreen&&document.msExitFullscreen()},kt=function(){var e=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement||document.webkitCurrentFullScreenElement;return!!e},Et=function(){var e=Ee(),t=ae(),n=function(){xt(),e.setScreening(!0)},o=function(){t.updateSlideIndex(0),n()},c=function(){e.setScreening(!1),kt()&&Ct()};return{enterScreening:n,enterScreeningFromStart:o,exitScreening:c}},wt=function(){var e=ue(),t=Object(y["c"])(e),n=t.canvasPercentage,o=t.canvasScale,c=t.canvasDragged,l=Object(j["computed"])((function(){return Math.round(100*o.value)+"%"})),a=function(t){var o=n.value,c=5,l=200,a=30;"+"===t&&o<=l&&(o+=c),"-"===t&&o>=a&&(o-=c),e.setCanvasPercentage(o)},r=function(t){var c=Math.round(t/o.value*n.value)/100;e.setCanvasPercentage(c)},i=function(){e.setCanvasPercentage(90),c&&e.setCanvasDragged(!1)};return{canvasScalePercentage:l,setCanvasScalePercentage:r,scaleCanvas:a,resetCanvas:i}},Nt=function(){var e=ue(),t=ke(),n=Object(y["c"])(e),o=n.activeElementIdList,c=n.disableHotkeys,l=n.handleElement,a=n.handleElementId,r=n.editorAreaFocus,i=n.thumbnailsFocus,u=Object(y["c"])(ae()),d=u.currentSlide,s=Object(y["c"])(t),f=s.ctrlKeyState,b=s.shiftKeyState,m=s.spaceKeyState,p=mt(),v=p.updateSlideIndex,O=p.copySlide,h=p.createSlide,g=p.deleteSlide,x=p.cutSlide,C=p.copyAndPasteSlide,E=p.selectAllSlide,w=Ot(),N=w.combineElements,V=w.uncombineElements,S=vt(),B=S.deleteElement,L=pt(),T=L.lockElement,_=ht(),M=_.copyElement,D=_.cutElement,z=_.quickCopyElement,A=jt(),F=A.selectAllElement,R=yt(),P=R.moveElement,H=gt(),q=H.orderElement,U=dt(),W=U.redo,G=U.undo,X=Et(),Y=X.enterScreening,Z=X.enterScreeningFromStart,J=wt(),K=J.scaleCanvas,Q=J.resetCanvas,$=function(){o.value.length?M():i.value&&O()},ee=function(){o.value.length?D():i.value&&x()},te=function(){o.value.length?z():i.value&&C()},ne=function(){r.value&&F(),i.value&&E()},oe=function(){r.value&&T()},ce=function(){r.value&&N()},le=function(){r.value&&V()},re=function(){o.value.length?B():i.value&&g()},ie=function(e){o.value.length?P(e):e!==I.UP&&e!==I.DOWN||v(e)},de=function(e){e===I.PAGEUP?v(I.UP):e===I.PAGEDOWN&&v(I.DOWN)},se=function(e){l.value&&q(l.value,e)},fe=function(){i.value&&h()},be=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 c=d.value.elements[0];e.setActiveElementIdList([c.id])}},me=function(n){var o=n.ctrlKey,l=n.shiftKey,a=n.altKey,u=n.metaKey,d=o||u,s=n.key.toUpperCase();if(d&&!f.value&&t.setCtrlKeyState(!0),l&&!b.value&&t.setShiftKeyState(!0),c.value||s!==I.SPACE||t.setSpaceKeyState(!0),d&&s===I.P)return n.preventDefault(),void e.setDialogForExport("pdf");if(l&&s===I.F5)return n.preventDefault(),Y(),void t.setShiftKeyState(!1);if(s===I.F5)return n.preventDefault(),void Z();if(r.value||i.value){if(d&&s===I.C){if(c.value)return;n.preventDefault(),$()}if(d&&s===I.X){if(c.value)return;n.preventDefault(),ee()}if(d&&s===I.D){if(c.value)return;n.preventDefault(),te()}if(d&&s===I.Z){if(c.value)return;n.preventDefault(),G()}if(d&&s===I.Y){if(c.value)return;n.preventDefault(),W()}if(d&&s===I.A){if(c.value)return;n.preventDefault(),ne()}if(d&&s===I.L){if(c.value)return;n.preventDefault(),oe()}if(!l&&d&&s===I.G){if(c.value)return;n.preventDefault(),ce()}if(l&&d&&s===I.G){if(c.value)return;n.preventDefault(),le()}if(a&&s===I.F){if(c.value)return;n.preventDefault(),se(k.TOP)}if(a&&s===I.B){if(c.value)return;n.preventDefault(),se(k.BOTTOM)}if(s===I.DELETE||s===I.BACKSPACE){if(c.value)return;n.preventDefault(),re()}if(s===I.UP){if(c.value)return;n.preventDefault(),ie(I.UP)}if(s===I.DOWN){if(c.value)return;n.preventDefault(),ie(I.DOWN)}if(s===I.LEFT){if(c.value)return;n.preventDefault(),ie(I.LEFT)}if(s===I.RIGHT){if(c.value)return;n.preventDefault(),ie(I.RIGHT)}if(s===I.PAGEUP){if(c.value)return;n.preventDefault(),de(I.PAGEUP)}if(s===I.PAGEDOWN){if(c.value)return;n.preventDefault(),de(I.PAGEDOWN)}if(s===I.ENTER){if(c.value)return;n.preventDefault(),fe()}if(s===I.MINUS){if(c.value)return;n.preventDefault(),K("-")}if(s===I.EQUAL){if(c.value)return;n.preventDefault(),K("+")}if(s===I.DIGIT_0){if(c.value)return;n.preventDefault(),Q()}if(s===I.TAB){if(c.value)return;n.preventDefault(),be()}}},pe=function(){f.value&&t.setCtrlKeyState(!1),b.value&&t.setShiftKeyState(!1),m.value&&t.setSpaceKeyState(!1)};Object(j["onMounted"])((function(){document.addEventListener("keydown",me),document.addEventListener("keyup",pe),window.addEventListener("blur",pe)})),Object(j["onUnmounted"])((function(){document.removeEventListener("keydown",me),document.removeEventListener("keyup",pe),window.removeEventListener("blur",pe)}))},Vt=function(){var e=Object(y["c"])(ue()),t=e.editorAreaFocus,n=e.thumbnailsFocus,o=e.disableHotkeys,c=bt(),l=c.pasteTextClipboardData,a=st(),r=a.createImageElement,i=function(e){lt(e).then((function(e){return r(e)}))},u=function(e){if((t.value||n.value)&&!o.value&&e.clipboardData){var c=e.clipboardData.items,a=c[0];if(a){var r,u=Object(T["a"])(c);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 l(e)}))}}};Object(j["onMounted"])((function(){document.addEventListener("paste",u)})),Object(j["onUnmounted"])((function(){document.removeEventListener("paste",u)}))},It=function(e){return Object(j["pushScopeId"])("data-v-f0cbd508"),e=e(),Object(j["popScopeId"])(),e},St={class:"editor-header"},Bt={class:"left"},Lt={class:"menu-item"},Tt=Object(j["createTextVNode"])(),_t=It((function(){return Object(j["createElementVNode"])("span",{class:"text"},"文件",-1)})),Mt=Object(j["createTextVNode"])("导入 pptist 文件"),Dt=Object(j["createTextVNode"])("导出 pptist 文件"),zt=Object(j["createTextVNode"])("导出 PPTX"),At=Object(j["createTextVNode"])("导出图片"),Ft=Object(j["createTextVNode"])("导出 JSON"),Rt=Object(j["createTextVNode"])("打印 / 导出 PDF"),Pt={class:"menu-item"},Ht=Object(j["createTextVNode"])(),qt=It((function(){return Object(j["createElementVNode"])("span",{class:"text"},"编辑",-1)})),Ut=Object(j["createTextVNode"])("撤销"),Wt=Object(j["createTextVNode"])("重做"),Gt=Object(j["createTextVNode"])("添加页面"),Xt=Object(j["createTextVNode"])("删除页面"),Yt=Object(j["createTextVNode"])("重置幻灯片"),Zt={class:"menu-item"},Jt=Object(j["createTextVNode"])(),Kt=It((function(){return Object(j["createElementVNode"])("span",{class:"text"},"演示",-1)})),Qt=Object(j["createTextVNode"])("从头开始"),$t=Object(j["createTextVNode"])("从当前页开始"),en={class:"menu-item"},tn=Object(j["createTextVNode"])(),nn=It((function(){return Object(j["createElementVNode"])("span",{class:"text"},"帮助",-1)})),on=Object(j["createTextVNode"])("意见反馈"),cn=Object(j["createTextVNode"])("快捷键"),ln={class:"right"},an={href:"https://github.com/pipipi-pikachu/PPTist",target:"_blank"},rn={class:"menu-item"};function un(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconFolderClose"),r=Object(j["resolveComponent"])("MenuItem"),i=Object(j["resolveComponent"])("FileInput"),u=Object(j["resolveComponent"])("Menu"),d=Object(j["resolveComponent"])("Dropdown"),s=Object(j["resolveComponent"])("IconEdit"),f=Object(j["resolveComponent"])("IconPpt"),b=Object(j["resolveComponent"])("IconHelpcenter"),m=Object(j["resolveComponent"])("IconShare"),p=Object(j["resolveComponent"])("Tooltip"),v=Object(j["resolveComponent"])("IconGithub"),O=Object(j["resolveComponent"])("HotkeyDoc"),h=Object(j["resolveComponent"])("Drawer");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",St,[Object(j["createElementVNode"])("div",Bt,[Object(j["createVNode"])(d,{trigger:["click"]},{overlay:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,null,{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{accept:".pptist",onChange:t[0]||(t[0]=function(t){return e.importSpecificFile(t)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,null,{default:Object(j["withCtx"])((function(){return[Mt]})),_:1})]})),_:1}),Object(j["createVNode"])(r,{onClick:t[1]||(t[1]=function(t){return e.setDialogForExport("pptist")})},{default:Object(j["withCtx"])((function(){return[Dt]})),_:1}),Object(j["createVNode"])(r,{onClick:t[2]||(t[2]=function(t){return e.setDialogForExport("pptx")})},{default:Object(j["withCtx"])((function(){return[zt]})),_:1}),Object(j["createVNode"])(r,{onClick:t[3]||(t[3]=function(t){return e.setDialogForExport("image")})},{default:Object(j["withCtx"])((function(){return[At]})),_:1}),Object(j["createVNode"])(r,{onClick:t[4]||(t[4]=function(t){return e.setDialogForExport("json")})},{default:Object(j["withCtx"])((function(){return[Ft]})),_:1}),Object(j["createVNode"])(r,{onClick:t[5]||(t[5]=function(t){return e.setDialogForExport("pdf")})},{default:Object(j["withCtx"])((function(){return[Rt]})),_:1})]})),_:1})]})),default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",Lt,[Object(j["createVNode"])(a),Tt,_t])]})),_:1}),Object(j["createVNode"])(d,{trigger:["click"]},{overlay:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,null,{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{onClick:t[6]||(t[6]=function(t){return e.undo()})},{default:Object(j["withCtx"])((function(){return[Ut]})),_:1}),Object(j["createVNode"])(r,{onClick:t[7]||(t[7]=function(t){return e.redo()})},{default:Object(j["withCtx"])((function(){return[Wt]})),_:1}),Object(j["createVNode"])(r,{onClick:t[8]||(t[8]=function(t){return e.createSlide()})},{default:Object(j["withCtx"])((function(){return[Gt]})),_:1}),Object(j["createVNode"])(r,{onClick:t[9]||(t[9]=function(t){return e.deleteSlide()})},{default:Object(j["withCtx"])((function(){return[Xt]})),_:1}),Object(j["createVNode"])(r,{onClick:t[10]||(t[10]=function(t){return e.toggleGridLines()})},{default:Object(j["withCtx"])((function(){return[Object(j["createTextVNode"])(Object(j["toDisplayString"])(e.showGridLines?"关闭网格线":"打开网格线"),1)]})),_:1}),Object(j["createVNode"])(r,{onClick:t[11]||(t[11]=function(t){return e.toggleRuler()})},{default:Object(j["withCtx"])((function(){return[Object(j["createTextVNode"])(Object(j["toDisplayString"])(e.showRuler?"关闭标尺":"打开标尺"),1)]})),_:1}),Object(j["createVNode"])(r,{onClick:t[12]||(t[12]=function(t){return e.resetSlides()})},{default:Object(j["withCtx"])((function(){return[Yt]})),_:1})]})),_:1})]})),default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",Pt,[Object(j["createVNode"])(s),Ht,qt])]})),_:1}),Object(j["createVNode"])(d,{trigger:["click"]},{overlay:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,null,{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{onClick:t[13]||(t[13]=function(t){return e.enterScreeningFromStart()})},{default:Object(j["withCtx"])((function(){return[Qt]})),_:1}),Object(j["createVNode"])(r,{onClick:t[14]||(t[14]=function(t){return e.enterScreening()})},{default:Object(j["withCtx"])((function(){return[$t]})),_:1})]})),_:1})]})),default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",Zt,[Object(j["createVNode"])(f),Jt,Kt])]})),_:1}),Object(j["createVNode"])(d,{trigger:["click"]},{overlay:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,null,{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{onClick:t[15]||(t[15]=function(t){return e.goIssues()})},{default:Object(j["withCtx"])((function(){return[on]})),_:1}),Object(j["createVNode"])(r,{onClick:t[16]||(t[16]=function(t){return e.hotkeyDrawerVisible=!0})},{default:Object(j["withCtx"])((function(){return[cn]})),_:1})]})),_:1})]})),default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",en,[Object(j["createVNode"])(b),tn,nn])]})),_:1})]),Object(j["createElementVNode"])("div",ln,[Object(j["createVNode"])(p,{mouseLeaveDelay:0,title:"导出"},{default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",{class:"menu-item",onClick:t[17]||(t[17]=function(t){return e.setDialogForExport("pptx")})},[Object(j["createVNode"])(m,{size:"18",fill:"#666"})])]})),_:1}),Object(j["createVNode"])(p,{mouseLeaveDelay:0,title:"幻灯片放映"},{default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",{class:"menu-item",onClick:t[18]||(t[18]=function(t){return e.enterScreening()})},[Object(j["createVNode"])(f,{size:"19",fill:"#666",style:{"margin-top":"1px"}})])]})),_:1}),Object(j["createElementVNode"])("a",an,[Object(j["createElementVNode"])("div",rn,[Object(j["createVNode"])(v,{size:"18",fill:"#666"})])])]),Object(j["createVNode"])(h,{width:"320",placement:"right",closable:!1,visible:e.hotkeyDrawerVisible,onClose:t[19]||(t[19]=function(t){return e.hotkeyDrawerVisible=!1})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(O)]})),_:1},8,["visible"])])}n("9911"),n("cc71");var dn=n("21a6"),sn=n("8f74"),fn=n("e774"),bn=(n("00b4"),["style","script","template"]),mn=["html","head","body","p","dt","dd","li","option","thead","th","tbody","tr","td","tfoot","colgroup"],pn={li:["ul","ol","menu"],dt:["dl"],dd:["dl"],tbody:["table"],thead:["table"],tfoot:["table"],tr:["table"],td:["table"]},vn=["!doctype","area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],On=function(e,t){var n=t-e.position;hn(e,n)},hn=function(e,t){e.position=e.position+t},jn=function(e,t){var n=!1;while(!n){var o=e.indexOf("<",t);if(-1===o)return o;var c=e.charAt(o+1);if("/"===c||"!"===c||/[A-Za-z0-9]/.test(c))return o;t=o+1}return-1},yn=function(e){var t=e.str,n=jn(t,e.position);if(n!==e.position){-1===n&&(n=t.length);var o=t.slice(e.position,n);On(e,n),e.tokens.push({type:"text",content:o})}},gn=function(e){var t=e.str;hn(e,4);var n=t.indexOf("--\x3e",e.position),o=n+3;-1===n&&(n=o=t.length);var c=t.slice(e.position,n);On(e,o),e.tokens.push({type:"comment",content:c})},xn=function(e){var t=e.str,n=t.length,o=e.position;while(o"===c);if(l)break;o++}var a=o+1;while(a"===r);if(!i)break;a++}On(e,a);var u=t.slice(o,a);return e.tokens.push({type:"tag",content:u}),u},Cn=function(e){var t=e.str,n=e.tokens,o=e.position,c=null,l=o,a=[],r=t.length;while(o"===i;if(d){o!==l&&a.push(t.slice(l,o));break}var s=/\s/.test(i);if(s)o!==l&&a.push(t.slice(l,o)),l=o+1,o++;else{var f="'"===i||'"'===i;f?(c=i,o++):o++}}}On(e,o);for(var b="attribute",m=0;m1){var h=p+O;n.push({type:b,content:h}),m+=1;continue}var j=a[m+2];if(m+=1,j){var y=p+"="+j;n.push({type:b,content:y}),m+=1;continue}}}if(Object(ne["endsWith"])(p,"=")){var g=a[m+1];if(g&&-1===g.indexOf("=")){var x=p+g;n.push({type:b,content:x}),m+=1;continue}var C=p.slice(0,-1);n.push({type:b,content:C})}else n.push({type:b,content:p})}},kn=function(e,t){var n=t.str,o=t.tokens,c=e.toLowerCase(),l=n.length,a=t.position;while(a=0){var c=t[o].tagName;if(c===e)break;if(n.includes(c))return!0;o--}}return!1},Sn=function(e,t){e.splice(t)},Bn=function e(t){var n=t.stack,o=t.tokens,c=t.cursor,l=n[n.length-1].children,a=o.length;while(c-1)if(n[d].tagName===u){s=!0;break}while(c0){if(u===n[m].tagName){Sn(n,m);var p=m-1;l=n[p].children;break}m-=1}}var v=[],O=void 0;while(c127&&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},Un=function(e){var t,n,o,c,l,a,r,i="",u=0;e=qn(e);while(u>2,l=(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+Pn.charAt(c)+Pn.charAt(l)+Pn.charAt(a)+Pn.charAt(r);return i},Wn=function(e){var t=new XMLSerializer,n=t.serializeToString(e);return Hn+Un(n)},Gn=function(){var e=ae(),t=Object(y["c"])(e),n=t.slides,o=t.theme,c=t.viewportRatio,l=ft(),a=l.addSlidesFromData,r=Object(j["ref"])(!1),i=function(e,t,n){var o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];r.value=!0;var c="png"===t?fn["c"]:fn["b"],l=e.querySelectorAll("foreignObject [xmlns]");l.forEach((function(e){return e.removeAttribute("xmlns")})),setTimeout((function(){var l={quality:n,width:1600};o&&(l.fontEmbedCSS=""),c(e,l).then((function(e){r.value=!1,Object(dn["saveAs"])(e,"pptist_slides.".concat(t))})).catch((function(){r.value=!1,De["a"].error("导出图片失败")}))}),200)},u=function(e){var t=new Blob([He(JSON.stringify(e))],{type:""});Object(dn["saveAs"])(t,"pptist_slides.pptist")},d=function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=t[0],c=new FileReader;c.addEventListener("load",(function(){try{var t=JSON.parse(qe(c.result));n?e.setSlides(t):a(t)}catch(o){De["a"].error("无法正确读取 / 解析该文件")}})),c.readAsText(o)},s=function(){var e=new Blob([JSON.stringify(n.value)],{type:""});Object(dn["saveAs"])(e,"pptist_slides.json")},f=function(e){var t=te()(e),n=t.getAlpha(),o=0===n?"#ffffff":t.setAlpha(1).toHexString();return{alpha:n,color:o}},b=function(e){var t=Dn(e),n=!1,o=0,c=[],l=function e(t){var l,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=Object(T["a"])(t);try{for(r.s();!(l=r.n()).done;){var i=l.value,u="tagName"in i&&["div","li","p"].includes(i.tagName);if(u&&c.length){var d=c[c.length-1];d.options||(d.options={}),d.options.breakLine=!0}var s=Object(L["a"])({},a),b="attributes"in i?i.attributes.find((function(e){return"style"===e.key})):null;if(b&&b.value){var m,p=b.value.split(";"),v=Object(T["a"])(p);try{for(v.s();!(m=v.n()).done;){var O=m.value,h=O.split(": "),j=Object(ve["a"])(h,2),y=j[0],g=j[1],x=[Object(ne["trim"])(y),Object(ne["trim"])(g)],C=x[0],k=x[1];C&&k&&(s[C]=k)}}catch(I){v.e(I)}finally{v.f()}}if("tagName"in i){if("em"===i.tagName&&(s["font-style"]="italic"),"strong"===i.tagName&&(s["font-weight"]="bold"),"sup"===i.tagName&&(s["vertical-align"]="super"),"sub"===i.tagName&&(s["vertical-align"]="sub"),"a"===i.tagName){var E=i.attributes.find((function(e){return"href"===e.key}));s["href"]=(null===E||void 0===E?void 0:E.value)||""}if("ul"===i.tagName&&(s["list-type"]="ul"),"ol"===i.tagName&&(s["list-type"]="ol"),"li"===i.tagName&&(n=!0),"p"===i.tagName&&"attributes"in i){var w=i.attributes.find((function(e){return"data-indent"===e.key}));w&&w.value&&(o=+w.value)}}if("tagName"in i&&"br"===i.tagName)c.push({text:"",options:{breakLine:!0}});else if("content"in i){var N=i.content.replace(/ /g," ").replace(/>/g,">").replace(/</g,"<").replace(/&/g,"&").replace(/\n/g,""),V={};s["font-size"]&&(V.fontSize=.75*parseInt(s["font-size"])),s["color"]&&(V.color=f(s["color"]).color),s["background-color"]&&(V.highlight=f(s["background-color"]).color),s["text-decoration-line"]&&(-1!==s["text-decoration-line"].indexOf("underline")&&(V.underline={color:V.color||"#000000",style:"sng"}),-1!==s["text-decoration-line"].indexOf("line-through")&&(V.strike="sngStrike")),s["text-decoration"]&&(-1!==s["text-decoration"].indexOf("underline")&&(V.underline={color:V.color||"#000000",style:"sng"}),-1!==s["text-decoration"].indexOf("line-through")&&(V.strike="sngStrike")),s["vertical-align"]&&("super"===s["vertical-align"]&&(V.superscript=!0),"sub"===s["vertical-align"]&&(V.subscript=!0)),s["text-align"]&&(V.align=s["text-align"]),s["font-weight"]&&(V.bold="bold"===s["font-weight"]),s["font-style"]&&(V.italic="italic"===s["font-style"]),s["font-family"]&&(V.fontFace=s["font-family"]),s["href"]&&(V.hyperlink={url:s["href"]}),n&&"ol"===s["list-type"]&&(V.bullet={type:"number",indent:15},V.paraSpaceBefore=.1,n=!1),n&&"ul"===s["list-type"]&&(V.bullet={indent:15},V.paraSpaceBefore=.1,n=!1),o&&(V.indentLevel=o,o=0),c.push({text:N,options:V})}else"children"in i&&e(i.children,s)}}catch(I){r.e(I)}finally{r.f()}};return l(t),c},m=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}}))},p=function(e){var t=f(e.color),n=e.h,o=e.v,c=4,l=45;return 0===n&&0===o?(c=4,l=45):0===n?o>0?(c=o,l=90):(c=-o,l=270):0===o?n>0?(c=n,l=1):(c=-n,l=180):n>0&&o>0?(c=Math.max(n,o),l=45):n>0&&o<0?(c=Math.max(n,-o),l=315):n<0&&o>0?(c=Math.max(-n,o),l=135):n<0&&o<0&&(c=Math.max(-n,-o),l=225),{type:"outer",color:t.color.replace("#",""),opacity:t.alpha,blur:.75*e.blur,offset:c,angle:l}},v=function(e){var t=f((null===e||void 0===e?void 0:e.color)||"#000000");return{color:t.color,transparency:100*(1-t.alpha),width:.75*(e.width||1),dashType:"solid"===e.style?"solid":"dash"}},O=function(e){var t=e.type,o=e.target;if("web"===t)return{url:o};if("slide"===t){var c=n.value.findIndex((function(e){return e.id===o}));if(-1!==c)return{slide:c+1}}return null},h=function(e,t){r.value=!0;var n=new sn["a"];if(.625===c.value?n.layout="LAYOUT_16x10":.75===c.value?n.layout="LAYOUT_4x3":n.layout="LAYOUT_16x9",t){var l=f(o.value.backgroundColor),a=l.color,i=l.alpha;n.defineSlideMaster({title:"PPTIST_MASTER",background:{color:a,transparency:100*(1-i)}})}var u,d=Object(T["a"])(e);try{for(d.s();!(u=d.n()).done;){var s=u.value,h=n.addSlide();if(s.background){var j=s.background;if("image"===j.type&&j.image)h.background={data:j.image};else if("solid"===j.type&&j.color){var y=f(j.color);h.background={color:y.color,transparency:100*(1-y.alpha)}}else if("gradient"===j.type&&j.gradientColor){var g=Object(ve["a"])(j.gradientColor,2),x=g[0],C=g[1],k=te.a.mix(x,C).toHexString(),E=f(k);h.background={color:E.color,transparency:100*(1-E.alpha)}}}if(s.remark&&h.addNotes(s.remark),s.elements){var w,N=Object(T["a"])(s.elements);try{var V=function(){var e=w.value;if("text"===e.type){var t,o=b(e.content),c={x:e.left/100,y:e.top/100,w:e.width/100,h:e.height/100,fontSize:15,fontFace:"微软雅黑",color:"#000000",valign:"top",margin:7.5,paraSpaceBefore:3.75,lineSpacingMultiple:1.2,autoFit:!0};if(e.rotate&&(c.rotate=e.rotate),e.wordSpace&&(c.charSpacing=.75*e.wordSpace),e.lineHeight&&(c.lineSpacingMultiple=e.lineHeight/1.25),e.fill){var l=f(e.fill),a=void 0===e.opacity?1:e.opacity;c.fill={color:l.color,transparency:100*(1-l.alpha*a)}}e.defaultColor&&(c.color=f(e.defaultColor).color),e.defaultFontName&&(c.fontFace=e.defaultFontName),e.shadow&&(c.shadow=p(e.shadow)),null!==(t=e.outline)&&void 0!==t&&t.width&&(c.line=v(e.outline)),void 0!==e.opacity&&(c.transparency=100*(1-e.opacity)),void 0!==e.paragraphSpace&&(c.paraSpaceBefore=.75*e.paragraphSpace),h.addText(o,c)}else if("image"===e.type){var r,i,u={path:e.src,x:e.left/100,y:e.top/100,w:e.width/100,h:e.height/100};if(e.flipH&&(u.flipH=e.flipH),e.flipV&&(u.flipV=e.flipV),e.rotate&&(u.rotate=e.rotate),e.link){var d=O(e.link);d&&(u.hyperlink=d)}if(null!==(r=e.filters)&&void 0!==r&&r.opacity&&(u.transparency=100-parseInt(null===(i=e.filters)||void 0===i?void 0:i.opacity)),e.clip){"ellipse"===e.clip.shape&&(u.rounding=!0);var s=Object(ve["a"])(e.clip.range,2),j=s[0],y=s[1],g=Object(ve["a"])(j,2),x=g[0],C=g[1],k=Object(ve["a"])(y,2),E=k[0],N=k[1],V=e.width/((E-x)/100),I=e.height/((N-C)/100);u.w=V/100,u.h=I/100,u.sizing={type:"crop",x:x/100*V/100,y:C/100*I/100,w:(E-x)/100*V/100,h:(N-C)/100*I/100}}h.addImage(u)}else if("shape"===e.type){if(e.special){var S=document.querySelector(".thumbnail-list .base-element-".concat(e.id," svg")),B=Wn(S),L={data:B,x:e.left/100,y:e.top/100,w:e.width/100,h:e.height/100};if(e.rotate&&(L.rotate=e.rotate),e.link){var T=O(e.link);T&&(L.hyperlink=T)}h.addImage(L)}else{var _,M={x:e.width/e.viewBox[0],y:e.height/e.viewBox[1]},D=m(Rn(e.path),M),z=f(e.fill),A=void 0===e.opacity?1:e.opacity,F={x:e.left/100,y:e.top/100,w:e.width/100,h:e.height/100,fill:{color:z.color,transparency:100*(1-z.alpha*A)},points:D};if(e.flipH&&(F.flipH=e.flipH),e.flipV&&(F.flipV=e.flipV),e.shadow&&(F.shadow=p(e.shadow)),null!==(_=e.outline)&&void 0!==_&&_.width&&(F.line=v(e.outline)),e.link){var R=O(e.link);R&&(F.hyperlink=R)}h.addShape("custGeom",F)}if(e.text){var P=b(e.text.content),H={x:e.left/100,y:e.top/100,w:e.width/100,h:e.height/100,fontSize:15,fontFace:"微软雅黑",color:"#000000",paraSpaceBefore:3.75,valign:e.text.align};e.rotate&&(H.rotate=e.rotate),e.text.defaultColor&&(H.color=f(e.text.defaultColor).color),e.text.defaultFontName&&(H.fontFace=e.text.defaultFontName),h.addText(P,H)}}else if("line"===e.type){var q=tt(e),U=m(Rn(q)),W=Je(e),G=W.minX,X=W.maxX,Y=W.minY,Z=W.maxY,J=f(e.color),K={x:e.left/100,y:e.top/100,w:(X-G)/100,h:(Z-Y)/100,line:{color:J.color,transparency:100*(1-J.alpha),width:.75*e.width,dashType:"solid"===e.style?"solid":"dash",beginArrowType:e.points[0]?"arrow":"none",endArrowType:e.points[1]?"arrow":"none"},points:U};e.shadow&&(K.shadow=p(e.shadow)),h.addShape("custGeom",K)}else if("chart"===e.type){for(var Q=[],ee=0;ee1||he.rowspan>1)for(var je=me;je1?(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:0,elementList:e.elementList,scaleMultiElement:e.scaleMultiElement},null,8,["elementList","scaleMultiElement"])):Object(j["createCommentVNode"])("",!0),(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.elementList,(function(t){return Object(j["openBlock"])(),Object(j["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(j["createVNode"])(d)]),Object(j["createElementVNode"])("div",{class:"viewport",ref:"viewportRef",style:Object(j["normalizeStyle"])({transform:"scale(".concat(e.canvasScale,")")})},[e.mouseSelectionVisible?(Object(j["openBlock"])(),Object(j["createBlock"])(s,{key:0,top:e.mouseSelection.top,left:e.mouseSelection.left,width:e.mouseSelection.width,height:e.mouseSelection.height,quadrant:e.mouseSelectionQuadrant},null,8,["top","left","width","height","quadrant"])):Object(j["createCommentVNode"])("",!0),(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.elementList,(function(t,n){return Object(j["openBlock"])(),Object(j["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),e.spaceKeyState?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",ro)):Object(j["createCommentVNode"])("",!0),e.showRuler?(Object(j["openBlock"])(),Object(j["createBlock"])(b,{key:2,viewportStyles:e.viewportStyles},null,8,["viewportStyles"])):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])(p,{visible:e.linkDialogVisible,"onUpdate:visible":t[2]||(t[2]=function(t){return e.linkDialogVisible=t}),footer:null,centered:"",width:540,destroyOnClose:""},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(m,{onClose:t[1]||(t[1]=function(t){return e.linkDialogVisible=!1})})]})),_:1},8,["visible"])],32)),[[v,e.contextmenus],[O,e.removeEditorAreaFocus]])}n("a4d3"),n("e01a");var uo=Symbol(),so=Symbol(),fo=function(){var e=window.getSelection();e&&e.removeAllRanges()},bo=function(e){var t=Object(j["ref"])(0),n=Object(j["ref"])(0),o=ue(),c=Object(y["c"])(o),l=c.canvasPercentage,a=c.canvasDragged,r=Object(y["c"])(ae()),i=r.viewportRatio,u=function(){if(e.value){var c=e.value.clientWidth,a=e.value.clientHeight;if(a/c>i.value){var r=c*(l.value/100);o.setCanvasScale(r/at),t.value=(c-r)/2,n.value=(a-r*i.value)/2}else{var u=a*(l.value/100);o.setCanvasScale(u/(at*i.value)),t.value=(c-u/i.value)/2,n.value=(a-u)/2}}};Object(j["watch"])([l,i],u),Object(j["watch"])(a,(function(){a.value||u()}));var d=Object(j["computed"])((function(){return{width:at,height:at*i.value,left:t.value,top:n.value}})),s=new ResizeObserver(u);Object(j["onMounted"])((function(){e.value&&s.observe(e.value)})),Object(j["onUnmounted"])((function(){e.value&&s.unobserve(e.value)}));var f=function(e){var c=!0,l=e.pageX,a=e.pageY,r=t.value,i=n.value;document.onmousemove=function(e){if(c){var o=e.pageX,u=e.pageY;t.value=r+(o-l),n.value=i+(u-a)}},document.onmouseup=function(){c=!1,document.onmousemove=null,document.onmouseup=null,o.setCanvasDragged(!0)}};return{viewportStyles:d,dragViewport:f}},mo=function(e,t){var n=ue(),o=Object(y["c"])(n),c=o.canvasScale,l=Object(j["ref"])(!1),a=Object(j["ref"])(1),r=Object(j["ref"])({top:0,left:0,width:0,height:0}),i=function(o){if(t.value){var i=!0,u=t.value.getBoundingClientRect(),d=5,s=o.pageX,f=o.pageY,b=(s-u.x)/c.value,m=(f-u.y)/c.value;r.value={top:m,left:b,width:0,height:0},l.value=!1,a.value=4,document.onmousemove=function(e){if(i){var t=e.pageX,n=e.pageY,o=(t-s)/c.value,u=(n-f)/c.value,b=Math.abs(o),m=Math.abs(u);if(!(b0&&u>0?p=4:o<0&&u<0?p=1:o>0&&u<0?p=2:o<0&&u>0&&(p=3),r.value=Object(L["a"])(Object(L["a"])({},r.value),{},{width:b,height:m}),l.value=!0,a.value=p}}},document.onmouseup=function(){document.onmousemove=null,document.onmouseup=null,i=!1;for(var t=[],o=0;ou&&pd&&Ou-s&&pd-f&&Ou&&pd-f&&Ou-s&&pd&&O0&&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(L["a"])(Object(L["a"])({},e),{},{rotate:r}):e}))}},document.onmouseup=function(){l=!1,document.onmousemove=null,document.onmouseup=null,i!==r&&(n.updateSlide({elements:e.value}),a())}}};return{rotateElement:r}},ho={text:"文本",image:"图片",shape:"形状",line:"线条",chart:"图表",table:"表格",video:"视频",audio:"音频"},jo={text:20,image:20,shape:15,chart:200,table:20,video:250,audio:20},yo=function(e,t){var n=e.left,o=e.top,c=e.width,l=e.height,a=Math.sqrt(Math.pow(c,2)+Math.pow(l,2))/2,r=180*Math.atan(l/c)/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=c/2,b=l/2,m=n+f,p=o+b,v={left:m+a*Math.cos(i),top:p-a*Math.sin(i)},O={left:m+b*Math.cos(d),top:p-b*Math.sin(d)},h={left:m+a*Math.cos(u),top:p-a*Math.sin(u)},j={left:m+f*Math.cos(s),top:p+f*Math.sin(s)},y={left:m-a*Math.cos(i),top:p+a*Math.sin(i)},g={left:m-b*Math.sin(s),top:p+b*Math.cos(s)},x={left:m-a*Math.cos(u),top:p+a*Math.sin(u)},C={left:m-f*Math.cos(s),top:p-f*Math.sin(s)};return{leftTopPoint:v,topPoint:O,rightTopPoint:h,rightPoint:j,rightBottomPoint:y,bottomPoint:g,leftBottomPoint:x,leftPoint:C}},go=function(e,t){var n,o=(n={},Object(pe["a"])(n,N.RIGHT_BOTTOM,t.leftTopPoint),Object(pe["a"])(n,N.LEFT_BOTTOM,t.rightTopPoint),Object(pe["a"])(n,N.LEFT_TOP,t.rightBottomPoint),Object(pe["a"])(n,N.RIGHT_TOP,t.leftBottomPoint),Object(pe["a"])(n,N.TOP,t.bottomPoint),Object(pe["a"])(n,N.BOTTOM,t.topPoint),Object(pe["a"])(n,N.LEFT,t.rightPoint),Object(pe["a"])(n,N.RIGHT,t.leftPoint),n);return o[e]},xo=function(e,t,n){var o=ue(),c=ae(),l=Object(y["c"])(o),a=l.activeElementIdList,r=l.activeGroupElementId,i=Object(y["c"])(c),u=i.viewportRatio,d=Object(y["c"])(ke()),s=d.ctrlOrShiftKeyActive,f=dt(),b=f.addHistorySnapshot,m=function(l,i,d){var f=!(l instanceof MouseEvent);if(!f||l.changedTouches&&l.changedTouches[0]){var m=!0;o.setScalingState(!0);var p,v=i.left,O=i.top,h=i.width,j=i.height,y="rotate"in i&&i.rotate?i.rotate:0,g=Math.PI*y/180,x=s.value||"fixedRatio"in i&&i.fixedRatio,C=h/j,k=f?l.changedTouches[0].pageX:l.pageX,E=f?l.changedTouches[0].pageY:l.pageY,w=jo[i.type]||20,V=function(e){return e2&&void 0!==arguments[2])||arguments[2];if(r.value||n.setEditorareaFocus(!0),c.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=c.value.filter((function(e){return!f.includes(e)}))}else s=c.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(l.value!==i.id){var b=o instanceof MouseEvent?o.pageX:o.changedTouches[0].pageX,m=o instanceof MouseEvent?o.pageY:o.changedTouches[0].pageY;o.target.onmouseup=function(e){var t=e.pageX,o=e.pageY;b===t&&m===o&&(n.setActiveGroupElementId(i.id),e.target.onmouseup=null)}}}else{var p=[];if(p=u.value?[].concat(Object($["a"])(c.value),[i.id]):[i.id],i.groupId){var v=[];e.value.forEach((function(e){e.groupId===i.groupId&&v.push(e.id)})),p=[].concat(Object($["a"])(p),v)}n.setActiveElementIdList(Object(ne["uniq"])(p)),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}},ko=function(e,t,n){var o=ae(),c=Object(y["c"])(ue()),l=c.activeElementIdList,a=c.activeGroupElementId,r=Object(y["c"])(o),i=r.viewportRatio,u=dt(),d=u.addHistorySnapshot,s=function(c,r){var u=!(c instanceof MouseEvent);if((!u||c.changedTouches&&c.changedTouches[0])&&l.value.includes(r.id)){var s,f=!0,b=at,m=at*i.value,p=5,v=JSON.parse(JSON.stringify(e.value)),O=v.filter((function(e){return l.value.includes(e.id)})),h=r.left,j=r.top,y=r.width,g="height"in r&&r.height?r.height:0,x="rotate"in r&&r.rotate?r.rotate:0,C=u?c.changedTouches[0].pageX:c.pageX,k=u?c.changedTouches[0].pageY:c.pageY,E=null,w=r.id===a.value,N=[],V=[],I=Object(T["a"])(e.value);try{for(I.s();!(s=I.n()).done;){var S=s.value;if("line"!==S.type&&((!w||S.id!==r.id)&&(w||!l.value.includes(S.id)))){var B=void 0,_=void 0,M=void 0,D=void 0;if("rotate"in S&&S.rotate){var z=Ye({left:S.left,top:S.top,width:S.width,height:S.height,rotate:S.rotate}),A=z.xRange,F=z.yRange;B=A[0],_=F[0],M=A[1]-A[0],D=F[1]-F[0]}else B=S.left,_=S.top,M=S.width,D=S.height;var R=B+M,P=_+D,H=_+D/2,q=B+M/2,U={value:_,range:[B,R]},W={value:P,range:[B,R]},G={value:H,range:[B,R]},X={value:B,range:[_,P]},Y={value:R,range:[_,P]},Z={value:q,range:[_,P]};N.push(U,W,G),V.push(X,Y,Z)}}}catch(le){I.e(le)}finally{I.f()}var J={value:0,range:[0,b]},K={value:m,range:[0,b]},Q={value:m/2,range:[0,b]},ee={value:0,range:[0,m]},te={value:b,range:[0,m]},ne={value:b/2,range:[0,m]};N.push(J,K,Q),V.push(ee,te,ne),N=Qe(N),V=Qe(V);var oe=function(o){var c=o instanceof MouseEvent?o.pageX:o.changedTouches[0].pageX,a=o instanceof MouseEvent?o.pageY:o.changedTouches[0].pageY;if(!1!==E&&(E=Math.abs(C-c)v&&(G[0]=U-H,X[0]=0),p>O&&(G[1]=W-q,X[1]=0),e.value=e.value.map((function(e){if(e.id===c.id){var t=Object(L["a"])(Object(L["a"])({},e),{},{left:H,top:q,start:G,end:X});return a===V.START||a===V.END?(c.broken&&(t.broken=[(G[0]+X[0])/2,(G[1]+X[1])/2]),c.curve&&(t.curve=[(G[0]+X[0])/2,(G[1]+X[1])/2]),c.cubic&&(t.cubic=[[(G[0]+X[0])/2,(G[1]+X[1])/2],[(G[0]+X[0])/2,(G[1]+X[1])/2]])):a===V.C?(c.broken&&(t.broken=[j-H,y-q]),c.curve&&(t.curve=[j-H,y-q])):c.cubic&&(t.cubic=[[E-H,w-q],[N-H,I-q]]),t}return e}))}},document.onmouseup=function(n){r=!1,document.onmousemove=null,document.onmouseup=null;var o=n.pageX,c=n.pageY;u===o&&d===c||(t.updateSlide({elements:e.value}),l())}};return{dragLineElement:a}},wo=function(e){var t=ue(),n=Object(y["c"])(t),o=n.canvasScale,c=n.creatingElement,l=function(t){var n=t.start,c=t.end;if(e.value){var l=e.value.getBoundingClientRect(),a=Object(ve["a"])(n,2),r=a[0],i=a[1],u=Object(ve["a"])(c,2),d=u[0],s=u[1],f=Math.min(r,d),b=Math.max(r,d),m=Math.min(i,s),p=Math.max(i,s),v=(f-l.x)/o.value,O=(m-l.y)/o.value,h=(b-f)/o.value,j=(p-m)/o.value;return{left:v,top:O,width:h,height:j}}},a=function(t){var n=t.start,c=t.end;if(e.value){var l=e.value.getBoundingClientRect(),a=Object(ve["a"])(n,2),r=a[0],i=a[1],u=Object(ve["a"])(c,2),d=u[0],s=u[1],f=Math.min(r,d),b=Math.max(r,d),m=Math.min(i,s),p=Math.max(i,s),v=(f-l.x)/o.value,O=(m-l.y)/o.value,h=(b-f)/o.value,j=(p-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=st(),i=r.createTextElement,u=r.createShapeElement,d=r.createLineElement,s=function(e){if(c.value){var n=c.value.type;if("text"===n){var o=l(e);o&&i(o)}else if("shape"===n){var r=l(e);r&&u(r,c.value.data)}else if("line"===n){var s=a(e);s&&d(s,c.value.data)}t.setCreatingElement(null)}};return{insertElementFromCreateSelection:s}},No=["id"];function Vo(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"editable-element",ref:"elementRef",id:"editable-element-".concat(e.elementInfo.id),style:Object(j["normalizeStyle"])({zIndex:e.elementIndex})},[(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentElementComponent),{elementInfo:e.elementInfo,selectElement:e.selectElement,contextmenus:e.contextmenus},null,8,["elementInfo","selectElement","contextmenus"]))],12,No)}n("a9e3");var Io=function(){var e=ae(),t=Object(y["c"])(ue()),n=t.activeElementIdList,o=t.activeElementList,c=Object(y["c"])(e),l=c.currentSlide,a=c.viewportRatio,r=dt(),i=r.addHistorySnapshot,u=function(t){var c,r=at,u=at*a.value,d=Ke(o.value),s=d.minX,f=d.maxX,b=d.minY,m=d.maxY,p=JSON.parse(JSON.stringify(l.value.elements)),v=Object(T["a"])(p);try{for(v.s();!(c=v.n()).done;){var O=c.value;if(n.value.includes(O.id)){if(t===E.CENTER){var h=b+(m-b)/2-u/2,j=s+(f-s)/2-r/2;O.top=O.top-h,O.left=O.left-j}if(t===E.TOP){var y=b-0;O.top=O.top-y}else if(t===E.VERTICAL){var g=b+(m-b)/2-u/2;O.top=O.top-g}else if(t===E.BOTTOM){var x=m-u;O.top=O.top-x}else if(t===E.LEFT){var C=s-0;O.left=O.left-C}else if(t===E.HORIZONTAL){var k=s+(f-s)/2-r/2;O.left=O.left-k}else if(t===E.RIGHT){var w=f-r;O.left=O.left-w}}}}catch(N){v.e(N)}finally{v.f()}e.updateSlide({elements:p}),i()};return{alignElementToCanvas:u}},So=["src"];function Bo(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ImageClipHandler"),r=Object(j["resolveComponent"])("ImageOutline"),i=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["editable-element-image",{lock:e.elementInfo.lock}]),style:Object(j["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(j["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(j["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[e.isCliping?(Object(j["openBlock"])(),Object(j["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(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{key:1,class:"element-content",style:Object(j["normalizeStyle"])({filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):"",transform:e.flipStyle}),onMousedown:t[2]||(t[2]=function(t){return e.handleSelectElement(t)}),onTouchstart:t[3]||(t[3]=function(t){return e.handleSelectElement(t)})},[Object(j["createVNode"])(r,{elementInfo:e.elementInfo},null,8,["elementInfo"]),Object(j["createElementVNode"])("div",{class:"image-content",style:Object(j["normalizeStyle"])({clipPath:e.clipShape.style})},[Object(j["createElementVNode"])("img",{src:e.elementInfo.src,draggable:!1,style:Object(j["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(j["withModifiers"])((function(){}),["prevent"])),alt:""},null,44,So)],4)],36)),[[i,e.contextmenus]])],4)],6)}var Lo,To,_o=function(e){var t=Object(j["computed"])((function(){if(e.value){var t=e.value,n=t.h,o=t.v,c=t.blur,l=t.color;return"".concat(n,"px ").concat(o,"px ").concat(c,"px ").concat(l)}return""}));return{shadowStyle:t}},Mo=function(e,t){var n=Object(j["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"})(Lo||(Lo={})),function(e){e["RECT"]="rect",e["ROUNDRECT"]="roundRect",e["ELLIPSE"]="ellipse",e["TRIANGLE"]="triangle",e["PENTAGON"]="pentagon",e["RHOMBUS"]="rhombus",e["STAR"]="star"}(To||(To={}));var Do={rect:{name:"矩形",type:Lo.RECT,radius:"0",style:""},rect2:{name:"矩形2",type:Lo.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:Lo.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:Lo.RECT,radius:"10%",style:"inset(0 0 0 0 round 10% 10% 10% 10%)"},ellipse:{name:"圆形",type:Lo.ELLIPSE,style:"ellipse(50% 50% at 50% 50%)"},triangle:{name:"三角形",type:Lo.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:Lo.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:Lo.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:Lo.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:Lo.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:Lo.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:Lo.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:Lo.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:Lo.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:Lo.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")}}},zo=function(e){var t=Object(j["computed"])((function(){if(!e.value)return Do.rect;var t=e.value.shape||Lo.RECT;return Do[t]})),n=Object(j["computed"])((function(){if(!e.value)return{top:"0",left:"0",width:"100%",height:"100%"};var t=Object(ve["a"])(e.value.range,2),n=t[0],o=t[1],c=(o[0]-n[0])/100,l=(o[1]-n[1])/100,a=n[0]/c,r=n[1]/l;return{left:-a+"%",top:-r+"%",width:100/c+"%",height:100/l+"%"}}));return{clipShape:t,imgPosition:n}},Ao=(n("b64b"),function(e){var t=Object(j["computed"])((function(){if(!e.value)return"";for(var t="",n=0,o=Object.keys(e.value);n45&&e.rotate<135&&(d=(u-l)/c.value/e.width*100,s=-(i-o)/c.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-l)/c.value/e.width*100,s=(i-o)/c.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),b.value=Object(L["a"])(Object(L["a"])({},b.value),{},{left:f,top:m})}},document.onmouseup=function(){n=!1,document.onmousemove=null,document.onmouseup=null,g(),setTimeout((function(){i.value=!1}),0)}},C=function(t,n){i.value=!0;var o=!0,l=50/e.width*100,r=50/e.height*100,u=t.pageX,d=t.pageY,f=s.value,m=Object(L["a"])({},b.value),p=b.value.width/b.value.height;document.onmousemove=function(t){if(o){var i,s,v,O,h=t.pageX,j=t.pageY,y=(h-u)/c.value/e.width*100,g=(j-d)/c.value/e.height*100;e.rotate>45&&e.rotate<135&&(y=(j-d)/c.value/e.width*100,g=-(h-u)/c.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)/c.value/e.width*100,g=(h-u)/c.value/e.height*100),a.value&&(n!==N.RIGHT_BOTTOM&&n!==N.LEFT_TOP||(g=y/p),n!==N.LEFT_BOTTOM&&n!==N.RIGHT_TOP||(g=-y/p)),n===N.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})),E=[N.LEFT_TOP,N.RIGHT_TOP,N.LEFT_BOTTOM,N.RIGHT_BOTTOM],w=[N.TOP,N.BOTTOM,N.LEFT,N.RIGHT];return{clipWrapperPositionStyle:r,bottomImgPositionStyle:f,topImgWrapperPositionStyle:m,topImgPositionStyle:p,rotateClassName:k,edgePoints:w,cornerPoint:E,handleClip:O,moveClipRange:x,scaleClipRange:C}}});n("42c7");const yc=eo()(jc,[["render",hc],["__scopeId","data-v-2ec16714"]]);var gc=yc,xc=Object(j["defineComponent"])({name:"editable-element-image",components:{ImageOutline:ic,ImageClipHandler:gc},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=ue(),n=ae(),o=Object(y["c"])(t),c=o.clipingImageElementId,l=Object(j["computed"])((function(){return c.value===e.elementInfo.id})),a=dt(),r=a.addHistorySnapshot,i=Object(j["computed"])((function(){return e.elementInfo.shadow})),u=_o(i),d=u.shadowStyle,s=Object(j["computed"])((function(){return e.elementInfo.flipH})),f=Object(j["computed"])((function(){return e.elementInfo.flipV})),b=Mo(s,f),m=b.flipStyle,p=Object(j["computed"])((function(){return e.elementInfo.clip})),v=zo(p),O=v.clipShape,h=v.imgPosition,g=Object(j["computed"])((function(){return e.elementInfo.filters})),x=Ao(g),C=x.filter,k=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))},E=function(o){if(t.setClipingImageElementId(""),o){var c=o.range,l=o.position,a=e.elementInfo.clip||{shape:"rect",range:[[0,0],[100,100]]},i=e.elementInfo.left+l.left,u=e.elementInfo.top+l.top,d=e.elementInfo.width+l.width,s=e.elementInfo.height+l.height,f=0,b=0;if(e.elementInfo.rotate){var m=i+d/2-(e.elementInfo.left+e.elementInfo.width/2),p=-(u+s/2-(e.elementInfo.top+e.elementInfo.height/2)),v=-e.elementInfo.rotate*Math.PI/180,O=m*Math.cos(v)-p*Math.sin(v),h=m*Math.sin(v)+p*Math.cos(v);f=O-m,b=-(h-p)}var j={clip:Object(L["a"])(Object(L["a"])({},a),{},{range:c}),left:i+f,top:u+b,width:d,height:s};n.updateElement({id:e.elementInfo.id,props:j}),r()}};return{isCliping:l,handleClip:E,clipingImageElementId:c,shadowStyle:d,handleSelectElement:k,clipShape:O,imgPosition:h,filter:C,flipStyle:m}}});n("9a51");const Cc=eo()(xc,[["render",Bo],["__scopeId","data-v-fed8b698"]]);var kc=Cc,Ec=function(e){return Object(j["pushScopeId"])("data-v-77a8ccf7"),e=e(),Object(j["popScopeId"])(),e},wc=Ec((function(){return Object(j["createElementVNode"])("div",{class:"drag-handler top"},null,-1)})),Nc=Ec((function(){return Object(j["createElementVNode"])("div",{class:"drag-handler bottom"},null,-1)}));function Vc(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ElementOutline"),r=Object(j["resolveComponent"])("ProsemirrorEditor"),i=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["editable-element-text",{lock:e.elementInfo.lock}]),ref:"elementRef",style:Object(j["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"})},[Object(j["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(j["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"element-content",style:Object(j["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[4]||(t[4]=function(t){return e.handleSelectElement(t)}),onTouchstart:t[5]||(t[5]=function(t){return e.handleSelectElement(t)})},[Object(j["createVNode"])(a,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(j["createVNode"])(r,{class:"text",elementId:e.elementInfo.id,defaultColor:e.elementInfo.defaultColor,defaultFontName:e.elementInfo.defaultFontName,editable:!e.elementInfo.lock,value:e.elementInfo.content,style:Object(j["normalizeStyle"])({"--textIndent":"".concat(e.elementInfo.textIndent||0,"px"),"--paragraphSpace":"".concat(void 0===e.elementInfo.paragraphSpace?5:e.elementInfo.paragraphSpace,"px")}),onUpdate:t[0]||(t[0]=function(t){return e.updateContent(t)}),onBlur:t[1]||(t[1]=function(t){return e.checkEmptyText()}),onMousedown:t[2]||(t[2]=function(t){return e.handleSelectElement(t,!1)}),onTouchstart:t[3]||(t[3]=function(t){return e.handleSelectElement(t)})},null,8,["elementId","defaultColor","defaultFontName","editable","value","style"]),wc,Nc],36)),[[i,e.contextmenus]])],4)],6)}var Ic=["width","height"],Sc=["d","stroke","stroke-width","stroke-dasharray"];function Bc(e,t,n,o,c,l){return e.outline?(Object(j["openBlock"])(),Object(j["createElementBlock"])("svg",{key:0,class:"element-outline",overflow:"visible",width:e.width,height:e.height},[Object(j["createElementVNode"])("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",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,Sc)],8,Ic)):Object(j["createCommentVNode"])("",!0)}var Lc=Object(j["defineComponent"])({name:"element-outline",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},outline:{type:Object}},setup:function(e){var t=Uo(Object(j["toRef"])(e,"outline")),n=t.outlineWidth,o=t.outlineStyle,c=t.outlineColor;return{outlineWidth:n,outlineStyle:o,outlineColor:c}}});n("0543");const Tc=eo()(Lc,[["render",Bc],["__scopeId","data-v-34c0a0a8"]]);var _c=Tc,Mc={class:"prosemirror-editor",ref:"editorViewRef"};function Dc(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Mc,null,512)}var zc,Ac=n("5313"),Fc=n("576a"),Rc=n("304a"),Pc=n("7f06"),Hc=n("8726"),qc=n("23f1"),Uc=n("1a16"),Wc=n("665f"),Gc=n("f95e"),Xc=function(e){var t={},n=function(e,n){return t[e]=n};return n("Alt-ArrowUp",_["c"]),n("Alt-ArrowDown",_["b"]),n("Ctrl-z",Hc["c"]),n("Ctrl-y",Hc["b"]),n("Backspace",Gc["f"]),n("Escape",_["e"]),n("Ctrl-b",Object(_["f"])(e.marks.strong)),n("Ctrl-i",Object(_["f"])(e.marks.em)),n("Ctrl-u",Object(_["f"])(e.marks.underline)),n("Ctrl-d",Object(_["f"])(e.marks.strikethrough)),n("Enter",Object(Wc["f"])(e.nodes.list_item)),n("Mod-[",Object(Wc["b"])(e.nodes.list_item)),n("Mod-]",Object(Wc["e"])(e.nodes.list_item)),t},Yc=function(e){return Object(Gc["g"])(/^\s*>\s$/,e)},Zc=function(e){return Object(Gc["g"])(/^(\d+)\.\s$/,e,(function(e){return{order:+e[1]}}),(function(e,t){return t.childCount+t.attrs.order===+e[1]}))},Jc=function(e){return Object(Gc["g"])(/^\s*([-+*])\s$/,e)},Kc=function(e){return Object(Gc["e"])(/^```$/,e)},Qc=function(e){var t=[].concat(Object($["a"])(Gc["d"]),[Gc["a"],Gc["b"]]);return t.push(Yc(e.nodes.blockquote)),t.push(Zc(e.nodes.ordered_list)),t.push(Jc(e.nodes.bullet_list)),t.push(Kc(e.nodes.code_block)),Object(Gc["c"])({rules:t})},$c=function(e){return[Qc(e),Object(Pc["b"])(Xc(e)),Object(Pc["b"])(_["a"]),Object(qc["a"])(),Object(Uc["a"])(),Object(Hc["a"])()]},el=n("2210"),tl=Object(L["a"])(Object(L["a"])({},Wc["d"]),{},{content:"list_item+",group:"block"}),nl=Object(L["a"])(Object(L["a"])({},Wc["a"]),{},{content:"list_item+",group:"block"}),ol=Object(L["a"])(Object(L["a"])({},Wc["c"]),{},{content:"paragraph block*",group:"block"}),cl={attrs:{align:{default:""},indent:{default:0}},content:"inline*",group:"block",parseDOM:[{tag:"p",getAttrs:function(e){var t=e.style.textAlign,n=e.getAttribute("align")||t||"";n=/(left|right|center|justify)/.test(n)?n:"";var o=+(e.getAttribute("data-indent")||0);return{align:n,indent:o}}}],toDOM:function(e){var t=e.attrs,n=t.align,o=t.indent,c="";n&&"left"!==n&&(c+="text-align: ".concat(n,";"));var l={style:c};return o&&(l["data-indent"]=o),["p",l,0]}},ll=Object(L["a"])(Object(L["a"])({},el["b"]),{},{ordered_list:tl,bullet_list:nl,list_item:ol,paragraph:cl}),al={excludes:"subscript",parseDOM:[{tag:"sub"},{style:"vertical-align",getAttrs:function(e){return"sub"===e&&null}}],toDOM:function(){return["sub",0]}},rl={excludes:"superscript",parseDOM:[{tag:"sup"},{style:"vertical-align",getAttrs:function(e){return"super"===e&&null}}],toDOM:function(){return["sup",0]}},il={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]}},ul={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]}},dl={attrs:{color:{}},inline:!0,group:"inline",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]}},sl={attrs:{backcolor:{}},inline:!0,group:"inline",parseDOM:[{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]}},fl={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]}},bl={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]}},ml={attrs:{href:{},title:{default:null},target:{default:"_blank"}},inclusive:!1,parseDOM:[{tag:"a[href]",getAttrs:function(e){var t=e.getAttribute("href"),n=e.getAttribute("title");return{href:t,title:n}}}],toDOM:function(e){return["a",e.attrs,0]}},pl=Object(L["a"])(Object(L["a"])({},el["a"]),{},{subscript:al,superscript:rl,strikethrough:il,underline:ul,forecolor:dl,backcolor:sl,fontsize:fl,fontname:bl,link:ml}),vl=ll,Ol=pl,hl=new Rc["i"]({nodes:vl,marks:Ol}),jl=function(e){var t="
".concat(e,"
"),n=new window.DOMParser,o=n.parseFromString(t,"text/html").body.firstElementChild;return Rc["a"].fromSchema(hl).parse(o)},yl=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return new Fc["c"](e,Object(L["a"])({state:Ac["b"].create({doc:jl(t),plugins:$c(hl)})},n))},gl=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"})(zc||(zc={}));var xl=Object(gl["a"])(),Cl=xl,kl=(n("6062"),function(e,t,n){var o=e,c=o.selection,l=o.doc;if(!c||!l)return e;var a=c.from,r=c.to,i=t.nodes,u=i.blockquote,d=i.list_item,s=i.paragraph,f=[];n=n||"";var b=new Set([u,d,s]);return l.nodesBetween(a,r,(function(e,t){var o=e.type,c=e.attrs.align||"";return c!==n&&b.has(o)&&f.push({node:e,pos:t,nodeType:o}),!0})),f.length?(f.forEach((function(t){var o=t.node,c=t.pos,l=t.nodeType,a=o.attrs;a=n?Object(L["a"])(Object(L["a"])({},a),{},{align:n}):Object(L["a"])(Object(L["a"])({},a),{},{align:null}),e=e.setNodeMarkup(c,l,a,o.marks)})),e):e}),El=function(e,t){var n=e.state,o=n.schema,c=n.selection,l=kl(n.tr.setSelection(c),o,t);e.dispatch(l)},wl=function(e,t){return e.type===t.nodes.bullet_list||e.type===t.nodes.ordered_list},Nl=function(e,t){return function(n,o){var c=n.schema,l=n.selection,a=l.$from,r=l.$to,i=a.blockRange(r);if(!i)return!1;var u=R((function(e){return wl(e,c)}))(l);if(i.depth>=1&&u&&i.depth-u.depth<=1){if(u.node.type===e)return Object(Wc["b"])(t)(n,o);if(wl(u.node,c)&&e.validContent(u.node.content)){var d=n.tr;return d.setNodeMarkup(u.pos,e),o&&o(d),!1}}return Object(Wc["g"])(e)(n,o)}};function Vl(e,t,n){if(!e.doc)return e;var o=e.doc.nodeAt(t);if(!o)return e;var c=0,l=7,a=(o.attrs.indent||0)+n;if(al&&(a=l),a===o.attrs.indent)return e;var r=Object(L["a"])(Object(L["a"])({},o.attrs),{},{indent:a});return e.setNodeMarkup(t,o.type,r,o.marks)}var Il=function(e,t,n){var o=e,c=o.selection,l=o.doc;if(!c||!l)return e;if(!(c instanceof Ac["g"]||c instanceof Ac["a"]))return e;var a=c.from,r=c.to;return l.nodesBetween(a,r,(function(o,c){var l=o.type;return"paragraph"===l.name||"blockquote"===l.name?(e=Vl(e,c,n),!1):!wl(o,t)})),e},Sl=function(e,t){var n=e.state,o=n.schema,c=n.selection,l=Il(n.tr.setSelection(c),o,t);return!!l.docChanged&&(e.dispatch(l),!0)},Bl=Object(j["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,c=ue(),l=Object(y["c"])(c),a=l.handleElementId,r=Object(j["ref"])(),i=Object(ne["debounce"])((function(){o("update",n.dom.innerHTML)}),300,{trailing:!0}),u=function(){c.setDisableHotkeysState(!0),o("focus")},d=function(){c.setDisableHotkeysState(!1),o("blur")},s=Object(ne["debounce"])((function(){var t=Z(n,{color:e.defaultColor,fontname:e.defaultFontName});c.setRichtextAttrs(t)}),30,{trailing:!0}),f=function(){i(),s()},b=Object(j["computed"])((function(){return e.value}));Object(j["watch"])(b,(function(){if(n&&!n.hasFocus()){var e=n.state,t=e.doc,o=e.tr;n.dispatch(o.replaceRangeWith(0,t.content.size,jl(b.value)))}})),Object(j["watch"])((function(){return e.editable}),(function(){n.setProps({editable:function(){return e.editable}})})),Object(j["onMounted"])((function(){n=yl(r.value,b.value,{handleDOMEvents:{focus:u,blur:d,keydown:f,click:s},editable:function(){return e.editable}}),e.autoFocus&&n.focus()})),Object(j["onUnmounted"])((function(){n&&n.destroy()}));var m=function(t){var o=t.target,c=t.action;if((o||a.value===e.elementId)&&(!o||o===e.elementId)){var l,r="command"in c?[c]:c,u=Object(T["a"])(r);try{for(u.s();!(l=u.n()).done;){var d=l.value;if("fontname"===d.command&&d.value){var f=n.state.schema.marks.fontname.create({fontname:d.value});M(n),D(n,f)}else if("fontsize"===d.command&&d.value){var b=n.state.schema.marks.fontsize.create({fontsize:d.value});M(n),D(n,b)}else if("fontsize-add"===d.command){var m=d.value?+d.value:2;M(n);var p=J(n)+m+"px",v=n.state.schema.marks.fontsize.create({fontsize:p});D(n,v)}else if("fontsize-reduce"===d.command){var O=d.value?+d.value:2;M(n);var h=J(n)-O;h<12&&(h=12);var j=n.state.schema.marks.fontsize.create({fontsize:h+"px"});D(n,j)}else if("color"===d.command&&d.value){var y=n.state.schema.marks.forecolor.create({color:d.value});M(n),D(n,y)}else if("backcolor"===d.command&&d.value){var g=n.state.schema.marks.backcolor.create({backcolor:d.value});M(n),D(n,g)}else if("bold"===d.command)M(n),Object(_["f"])(n.state.schema.marks.strong)(n.state,n.dispatch);else if("em"===d.command)M(n),Object(_["f"])(n.state.schema.marks.em)(n.state,n.dispatch);else if("underline"===d.command)M(n),Object(_["f"])(n.state.schema.marks.underline)(n.state,n.dispatch);else if("strikethrough"===d.command)M(n),Object(_["f"])(n.state.schema.marks.strikethrough)(n.state,n.dispatch);else if("subscript"===d.command)Object(_["f"])(n.state.schema.marks.subscript)(n.state,n.dispatch);else if("superscript"===d.command)Object(_["f"])(n.state.schema.marks.superscript)(n.state,n.dispatch);else if("blockquote"===d.command)Object(_["g"])(n.state.schema.nodes.blockquote)(n.state,n.dispatch);else if("code"===d.command)Object(_["f"])(n.state.schema.marks.code)(n.state,n.dispatch);else if("align"===d.command&&d.value)El(n,d.value);else if("indent"===d.command&&d.value)Sl(n,+d.value);else if("bulletList"===d.command){var x=n.state.schema.nodes,C=x.bullet_list,k=x.list_item;Nl(C,k)(n.state,n.dispatch)}else if("orderedList"===d.command){var E=n.state.schema.nodes,w=E.ordered_list,N=E.list_item;Nl(w,N)(n.state,n.dispatch)}else if("clear"===d.command){M(n);var V=n.state.selection,I=V.$from,S=V.$to;n.dispatch(n.state.tr.removeMark(I.pos,S.pos))}else if("link"===d.command){var B=n.state.schema.marks.link,L=n.state.selection,A=L.from,F=L.to,R=z(n.state.doc,A,F,B);if(R)if(d.value){var P=n.state.schema.marks.link.create({href:d.value,title:d.value});D(n,P,{from:R.from.pos,to:R.to.pos+1})}else n.dispatch(n.state.tr.removeMark(R.from.pos,R.to.pos+1,B));else if(G(n.state,B))if(d.value){var H=n.state.schema.marks.link.create({href:d.value,title:d.value});D(n,H)}else Object(_["f"])(B)(n.state,n.dispatch);else d.value&&(M(n),Object(_["f"])(B,{href:d.value,title:d.value})(n.state,n.dispatch))}else"insert"===d.command&&d.value&&n.dispatch(n.state.tr.insertText(d.value))}}catch(q){u.e(q)}finally{u.f()}n.focus(),i(),s()}};return Cl.on(zc.RICH_TEXT_COMMAND,m),Object(j["onUnmounted"])((function(){Cl.off(zc.RICH_TEXT_COMMAND,m)})),{editorViewRef:r}}});n("2a8a");const Ll=eo()(Bl,[["render",Dc],["__scopeId","data-v-50456657"]]);var Tl=Ll,_l=Object(j["defineComponent"])({name:"editable-element-text",components:{ElementOutline:_c,ProsemirrorEditor:Tl},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=ue(),n=ae(),o=Object(y["c"])(t),c=o.handleElementId,l=o.isScaling,a=dt(),r=a.addHistorySnapshot,i=Object(j["ref"])(),u=Object(j["computed"])((function(){return e.elementInfo.shadow})),d=_o(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))},b=Object(j["ref"])(-1);Object(j["watch"])(l,(function(){c.value===e.elementInfo.id&&(l.value||-1===b.value||(n.updateElement({id:e.elementInfo.id,props:{height:b.value}}),b.value=-1))}));var m=function(t){var o=t[0].contentRect;if(i.value){var c=o.height;e.elementInfo.height!==c&&(l.value?b.value=c:n.updateElement({id:e.elementInfo.id,props:{height:c}}))}},p=new ResizeObserver(m);Object(j["onMounted"])((function(){i.value&&p.observe(i.value)})),Object(j["onUnmounted"])((function(){i.value&&p.unobserve(i.value)}));var v=function(t){n.updateElement({id:e.elementInfo.id,props:{content:t}}),r()},O=function(){var t=e.elementInfo.content.replaceAll(/<[^>]+>/g,"");t||n.deleteElement(e.elementInfo.id)};return{elementRef:i,shadowStyle:s,updateContent:v,handleSelectElement:f,checkEmptyText:O}}});n("08e7");const Ml=eo()(_l,[["render",Vc],["__scopeId","data-v-77a8ccf7"]]);var Dl=Ml,zl=["width","height"],Al={key:0},Fl=["transform"],Rl=["d","fill","stroke","stroke-width","stroke-dasharray"];function Pl(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("GradientDefs"),r=Object(j["resolveComponent"])("ProsemirrorEditor"),i=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["editable-element-shape",{lock:e.elementInfo.lock}]),style:Object(j["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(j["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(j["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"element-content",style:Object(j["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[4]||(t[4]=function(t){return e.handleSelectElement(t)}),onTouchstart:t[5]||(t[5]=function(t){return e.handleSelectElement(t)}),onDblclick:t[6]||(t[6]=function(t){return e.editable=!0})},[(Object(j["openBlock"])(),Object(j["createElementBlock"])("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height},[e.elementInfo.gradient?(Object(j["openBlock"])(),Object(j["createElementBlock"])("defs",Al,[Object(j["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(j["createCommentVNode"])("",!0),Object(j["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(j["createElementVNode"])("path",{class:"shape-path","vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",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,Rl)],8,Fl)],8,zl)),Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["shape-text",[e.text.align,{editable:e.editable||e.text.content}]])},[e.editable||e.text.content?(Object(j["openBlock"])(),Object(j["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)}),onBlur:t[1]||(t[1]=function(t){return e.checkEmptyText()}),onMousedown:t[2]||(t[2]=function(t){return e.handleSelectElement(t,!1)}),onTouchstart:t[3]||(t[3]=function(t){return e.handleSelectElement(t,!1)})},null,8,["elementId","defaultColor","defaultFontName","editable","value"])):Object(j["createCommentVNode"])("",!0)],2)],36)),[[i,e.contextmenus]])],4)],6)}var Hl=["id","gradientTransform"],ql=["stop-color"],Ul=["stop-color"],Wl=["id"],Gl=["stop-color"],Xl=["stop-color"];function Yl(e,t,n,o,c,l){return"linear"===e.type?(Object(j["openBlock"])(),Object(j["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(j["createElementVNode"])("stop",{offset:"0%","stop-color":e.color1},null,8,ql),Object(j["createElementVNode"])("stop",{offset:"100%","stop-color":e.color2},null,8,Ul)],8,Hl)):(Object(j["openBlock"])(),Object(j["createElementBlock"])("radialGradient",{key:1,id:e.id},[Object(j["createElementVNode"])("stop",{offset:"0%","stop-color":e.color1},null,8,Gl),Object(j["createElementVNode"])("stop",{offset:"100%","stop-color":e.color2},null,8,Xl)],8,Wl))}var Zl=Object(j["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 Jl=eo()(Zl,[["render",Yl]]);var Kl=Jl,Ql=Object(j["defineComponent"])({name:"editable-element-shape",components:{GradientDefs:Kl,ProsemirrorEditor:Tl},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=ue(),n=ae(),o=Object(y["c"])(t),c=o.handleElementId,l=dt(),a=l.addHistorySnapshot,r=function(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo,n))},i=Object(j["computed"])((function(){return e.elementInfo.outline})),u=Uo(i),d=u.outlineWidth,s=u.outlineStyle,f=u.outlineColor,b=Object(j["computed"])((function(){return e.elementInfo.shadow})),m=_o(b),p=m.shadowStyle,v=Object(j["computed"])((function(){return e.elementInfo.flipH})),O=Object(j["computed"])((function(){return e.elementInfo.flipV})),h=Mo(v,O),g=h.flipStyle,x=Object(j["ref"])(!1);Object(j["watch"])(c,(function(){c.value!==e.elementInfo.id&&x.value&&(x.value=!1)}));var C=Object(j["computed"])((function(){var t={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"};return e.elementInfo.text?e.elementInfo.text:t})),k=function(t){var o=Object(L["a"])(Object(L["a"])({},C.value),{},{content:t});n.updateElement({id:e.elementInfo.id,props:{text:o}}),a()},E=function(){if(e.elementInfo.text){var t=e.elementInfo.text.content.replaceAll(/<[^>]+>/g,"");t||(n.removeElementProps({id:e.elementInfo.id,propName:"text"}),a())}};return{shadowStyle:p,outlineWidth:d,outlineStyle:s,outlineColor:f,flipStyle:g,editable:x,text:C,handleSelectElement:r,updateText:k,checkEmptyText:E}}});n("afe9");const $l=eo()(Ql,[["render",Pl],["__scopeId","data-v-81338b12"]]);var ea=$l,ta=["width","height"],na=["d","stroke","stroke-width","stroke-dasharray","marker-start","marker-end"],oa=["d"];function ca(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("LinePointMarker"),r=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["editable-element-shape",{lock:e.elementInfo.lock}]),style:Object(j["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px"})},[Object(j["createElementVNode"])("div",{class:"element-content",style:Object(j["normalizeStyle"])({filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):""}),onMousedown:t[0]||(t[0]=function(t){return e.handleSelectElement(t)}),onTouchstart:t[1]||(t[1]=function(t){return e.handleSelectElement(t)})},[(Object(j["openBlock"])(),Object(j["createElementBlock"])("svg",{overflow:"visible",width:e.svgWidth,height:e.svgHeight},[Object(j["createElementVNode"])("defs",null,[e.elementInfo.points[0]?(Object(j["openBlock"])(),Object(j["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(j["createCommentVNode"])("",!0),e.elementInfo.points[1]?(Object(j["openBlock"])(),Object(j["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(j["createCommentVNode"])("",!0)]),Object(j["createElementVNode"])("path",{class:"line-point",d:e.path,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.width,"stroke-dasharray":e.lineDashArray,fill:"none","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,na),Object(j["withDirectives"])(Object(j["createElementVNode"])("path",{class:"line-path",d:e.path,stroke:"transparent","stroke-width":"20",fill:"none"},null,8,oa),[[r,e.contextmenus]])],8,ta))],36)],6)}var la=["id","markerWidth","markerHeight","refX","refY"],aa=["d","fill","transform"];function ra(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["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(j["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,aa)],8,la)}var ia={dot:"m0 5a5 5 0 1 0 10 0a5 5 0 1 0 -10 0z",arrow:"M0,0 L10,5 0,10 Z"},ua={"arrow-start":180,"arrow-end":0},da=Object(j["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(j["computed"])((function(){return ia[e.type]})),n=Object(j["computed"])((function(){return ua["".concat(e.type,"-").concat(e.position)]||0})),o=Object(j["computed"])((function(){return e.baseSize<2?2:e.baseSize}));return{path:t,rotate:n,size:o}}});const sa=eo()(da,[["render",ra]]);var fa=sa,ba=Object(j["defineComponent"])({name:"editable-element-shape",components:{LinePointMarker:fa},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(j["computed"])((function(){return e.elementInfo.shadow})),o=_o(n),c=o.shadowStyle,l=Object(j["computed"])((function(){var t=Math.abs(e.elementInfo.start[0]-e.elementInfo.end[0]);return t<24?24:t})),a=Object(j["computed"])((function(){var t=Math.abs(e.elementInfo.start[1]-e.elementInfo.end[1]);return t<24?24:t})),r=Object(j["computed"])((function(){return"dashed"===e.elementInfo.style?"10 6":"0 0"})),i=Object(j["computed"])((function(){return tt(e.elementInfo)}));return{handleSelectElement:t,shadowStyle:c,svgWidth:l,svgHeight:a,lineDashArray:r,path:i}}});n("1c30");const ma=eo()(ba,[["render",ca],["__scopeId","data-v-5f3b7dc5"]]);var pa=ma;function va(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ElementOutline"),r=Object(j["resolveComponent"])("Chart"),i=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["editable-element-chart",{lock:e.elementInfo.lock}]),style:Object(j["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(j["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(j["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"element-content",style:Object(j["normalizeStyle"])({backgroundColor:e.elementInfo.fill}),onMousedown:t[0]||(t[0]=function(t){return e.handleSelectElement(t)}),onTouchstart:t[1]||(t[1]=function(t){return e.handleSelectElement(t)}),onDblclick:t[2]||(t[2]=function(t){return e.openDataEditor()})},[Object(j["createVNode"])(a,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(j["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 Oa(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"chart",style:Object(j["normalizeStyle"])({flexDirection:"top"===e.legend?"column-reverse":"column"})},[Object(j["createElementVNode"])("div",{class:"chart-content",ref:"chartRef",style:Object(j["normalizeStyle"])({width:e.width+"px",height:e.chartHeight+"px",transform:"scale(".concat(1/e.slideScale,")")})},null,4),e.legend?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{key:0,class:"legends",style:Object(j["normalizeStyle"])({transform:"scale(".concat(1/e.slideScale,")")})},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.legends,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"legend",key:n,style:Object(j["normalizeStyle"])({color:e.gridColor})},[Object(j["createElementVNode"])("div",{class:"block",style:Object(j["normalizeStyle"])({backgroundColor:e.themeColors[n]})},null,4),Object(j["createTextVNode"])(" "+Object(j["toDisplayString"])(t),1)],4)})),128))],4)):Object(j["createCommentVNode"])("",!0)],4)}var ha=n("ba48"),ja=n.n(ha),ya=(n("aa97"),Object(j["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(j["ref"])(),o=Object(j["inject"])(uo)||Object(j["ref"])(1),c=Object(j["computed"])((function(){return e.legend?e.height-20:e.height})),l=function(){var t=e.options||{},n=Object(L["a"])(Object(L["a"])({},t),{},{width:e.width*o.value,height:c.value*o.value}),l="pie"===e.type?Object(L["a"])(Object(L["a"])({},e.data),{},{series:e.data.series[0]}):e.data;return{data:l,options:n}},a=function(){if(n.value){var o=Object(ne["upperFirst"])(e.type),c=l(),a=c.data,r=c.options;t=new ja.a[o](n.value,a,r)}},r=function(){if(t){var e=l(),n=e.data,o=e.options;t.update(n,o)}else a()};Object(j["watch"])([function(){return e.width},function(){return e.height},function(){return e.data},function(){return e.options},o],r),Object(j["onMounted"])(a);var i=Object(j["computed"])((function(){var t=[];if(e.themeColor.length>=10)t=e.themeColor;else if(1===e.themeColor.length)t=te()(e.themeColor[0]).analogous(10).map((function(e){return e.toHexString()}));else{var n=e.themeColor.length,o=te()(e.themeColor[n-1]).analogous(11-n).map((function(e){return e.toHexString()}));t=[].concat(Object($["a"])(e.themeColor.slice(0,n-1)),Object($["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(j["watch"])(i,u),Object(j["onMounted"])(u);var d=function(){n.value&&e.gridColor&&n.value.style.setProperty("--grid-color",e.gridColor)};return Object(j["watch"])((function(){return e.gridColor}),d),Object(j["onMounted"])(d),{chartHeight:c,themeColors:i,slideScale:o,chartRef:n}}}));n("97a7"),n("8749");const ga=eo()(ya,[["render",Oa],["__scopeId","data-v-79ce410e"]]);var xa=ga,Ca=Object(j["defineComponent"])({name:"editable-element-chart",components:{ElementOutline:_c,Chart:xa},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(){Cl.emit(zc.OPEN_CHART_DATA_EDITOR)};return{handleSelectElement:t,openDataEditor:n}}});n("3e3f");const ka=eo()(Ca,[["render",va],["__scopeId","data-v-863d2c90"]]);var Ea=ka,wa={class:"element-content"};function Na(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("EditableTable"),r=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["editable-element-table",{lock:e.elementInfo.lock}]),ref:"elementRef",style:Object(j["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"})},[Object(j["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(j["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createElementBlock"])("div",wa,[Object(j["createVNode"])(a,{onMousedown:t[0]||(t[0]=Object(j["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(j["openBlock"])(),Object(j["createElementBlock"])("div",{key:0,class:Object(j["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)}),onTouchstart:t[6]||(t[6]=function(t){return e.handleSelectElement(t)})},[Object(j["createElementVNode"])("div",{class:"mask-tip",style:Object(j["normalizeStyle"])({transform:"scale(".concat(1/e.canvasScale,")")})},"双击编辑",4)],34)):Object(j["createCommentVNode"])("",!0)])),[[r,e.contextmenus]])],4)],6)}var Va={key:0,class:"handler"},Ia=["onMousedown"],Sa=["width"],Ba=["rowspan","colspan","data-cell-index","onMousedown","onMouseenter"],La=["innerHTML"];function Ta(e,t,n,o,c,l){var a,r,i,u,d,s=Object(j["resolveComponent"])("CustomTextarea"),f=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"editable-table",style:Object(j["normalizeStyle"])({width:e.totalWidth+"px"})},[e.editable?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Va,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.dragLinePosition,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"drag-line",key:n,style:Object(j["normalizeStyle"])({left:t+"px"}),onMousedown:function(t){return e.handleMousedownColHandler(t,n)}},null,44,Ia)})),128))])):Object(j["createCommentVNode"])("",!0),Object(j["createElementVNode"])("table",{class:Object(j["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(j["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(j["createElementVNode"])("colgroup",null,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.colSizeList,(function(e,t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("col",{span:"1",key:t,width:e},null,8,Sa)})),128))]),Object(j["createElementVNode"])("tbody",null,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.tableCells,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])("tr",{key:n},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(t,(function(t,o){return Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createElementBlock"])("td",{class:Object(j["normalizeClass"])(["cell",{selected:e.selectedCells.includes("".concat(n,"_").concat(o))&&e.selectedCells.length>1,active:e.activedCell==="".concat(n,"_").concat(o)}]),style:Object(j["normalizeStyle"])(Object(L["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(j["openBlock"])(),Object(j["createBlock"])(s,{key:0,class:Object(j["normalizeClass"])(["cell-text",{active:e.activedCell==="".concat(n,"_").concat(o)}]),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(j["openBlock"])(),Object(j["createElementBlock"])("div",{key:1,class:"cell-text",innerHTML:e.formatText(t.text)},null,8,La))],46,Ba)),[[j["vShow"],!e.hideCells.includes("".concat(n,"_").concat(o))],[f,function(t){return e.contextmenus(t)}]])})),128))])})),128))])],6)],4)}var _a=function(e){if(!e)return{};var t=e.bold,n=e.em,o=e.underline,c=e.strikethrough,l=e.color,a=e.backcolor,r=e.fontsize,i=e.fontname,u=e.align,d="".concat(o?"underline":""," ").concat(c?"line-through":"");return" "===d&&(d="none"),{fontWeight:t?"bold":"normal",fontStyle:n?"italic":"normal",textDecoration:d,color:l||"#000",backgroundColor:a||"",fontSize:r||"14px",fontFamily:i||"微软雅黑",textAlign:u||"left"}},Ma=function(e){return e.replace(/\n/g,"
").replace(/ /g," ")},Da=function(e){var t=Object(j["computed"])((function(){for(var t=[],n=0;n1||l.rowspan>1)for(var a=n;a=d&&m<=f&&v>=s&&v<=b&&u.push("".concat(m,"_").concat(v));return u}));Object(j["watch"])(g,(function(e,t){Object(ne["isEqual"])(e,t)||n("changeSelectedCells",g.value)}));var x=Object(j["computed"])((function(){return g.value.length>1?null:g.value[0]})),k=Object(j["computed"])((function(){if(!a.value.length)return null;var e=Object(ve["a"])(a.value,2),t=e[0],n=e[1];if(!r.value.length)return{row:[t,t],col:[n,n]};var o=Object(ve["a"])(r.value,2),c=o[0],l=o[1];if(t===c&&n===l)return{row:[t,t],col:[n,n]};var i=Math.min(t,c),u=Math.min(n,l),d=Math.max(t,c),s=Math.max(n,l);return{row:[i,d],col:[u,s]}})),E=function(){return l.value=!1},w=function(e,t,n){0===e.button&&(r.value=[],l.value=!0,a.value=[t,n])},N=function(e,t){l.value&&(r.value=[e,t])};Object(j["onMounted"])((function(){document.addEventListener("mouseup",E)})),Object(j["onUnmounted"])((function(){document.removeEventListener("mouseup",E)}));var V=function(e,t){return h.value.includes("".concat(e,"_").concat(t))},S=function(e){var t=i.value.length-1;a.value=[0,e],r.value=[t,e]},B=function(e){var t=i.value[e].length-1;a.value=[e,0],r.value=[e,t]},T=function(){var e=i.value.length-1,t=i.value[e].length-1;a.value=[0,0],r.value=[e,t]},_=function(e){for(var t=JSON.parse(JSON.stringify(i.value)),n=i.value[e],o=[],c=0;c=0;u--)if(!V(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=[],c=0;c=0;u--)if(!V(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)},D=function(e){for(var t=JSON.parse(JSON.stringify(i.value)),n=[],o=0;oi.value.length&&(a=t+c-i.value.length),o+l>i.value[0].length&&(r=o+l-i.value[0].length),(a||r)&&A(a,r),Object(j["nextTick"])((function(){for(var a=0;a1,n=e[0].length>1;return{canDeleteRow:t,canDeleteCol:n}},Z=function(e,t){var n=g.value.length>1,o=i.value[e][t],c=n,l=!n&&(o.rowspan>1||o.colspan>1);return{canMerge:c,canSplit:l}},J=function(e){var t=e.dataset.cellIndex,n=+t.split("_")[0],o=+t.split("_")[1];g.value.includes("".concat(n,"_").concat(o))||(a.value=[n,o],r.value=[]);var c=Z(n,o),l=c.canMerge,i=c.canSplit,u=Y(),d=u.canDeleteRow,s=u.canDeleteCol;return[{text:"插入列",children:[{text:"到左侧",handler:function(){return z(o)}},{text:"到右侧",handler:function(){return z(o+1)}}]},{text:"插入行",children:[{text:"到上方",handler:function(){return D(n)}},{text:"到下方",handler:function(){return D(n+1)}}]},{text:"删除列",disable:!s,handler:function(){return M(o)}},{text:"删除行",disable:!d,handler:function(){return _(n)}},{divider:!0},{text:"合并单元格",disable:!l,handler:F},{text:"取消合并单元格",disable:!i,handler:function(){return R(n,o)}},{divider:!0},{text:"选中当前列",handler:function(){return S(o)}},{text:"选中当前行",handler:function(){return B(n)}},{text:"选中全部单元格",handler:T}]};return{getTextStyle:_a,dragLinePosition:p,tableCells:i,colSizeList:f,totalWidth:b,hideCells:h,selectedCells:g,activedCell:x,selectedRange:k,handleCellMousedown:w,handleCellMouseenter:N,selectCol:S,selectRow:B,handleMousedownColHandler:P,contextmenus:J,handleInput:W,insertExcelData:G,subThemeColor:s,formatText:Ma}}});n("94f86");const Ua=eo()(qa,[["render",Ta],["__scopeId","data-v-12f568a6"]]);var Wa=Ua,Ga=Object(j["defineComponent"])({name:"editable-element-table",components:{EditableTable:Wa},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=ue(),n=ae(),o=Object(y["c"])(t),c=o.canvasScale,l=o.handleElementId,a=o.isScaling,r=Object(j["ref"])(),i=dt(),u=i.addHistorySnapshot,d=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))},s=Object(j["ref"])(!1);Object(j["watch"])(l,(function(){l.value!==e.elementInfo.id&&(s.value=!1)})),Object(j["watch"])(s,(function(){t.setDisableHotkeysState(s.value)}));var f=function(){e.elementInfo.lock||(s.value=!0)},b=Object(j["ref"])(-1);Object(j["watch"])(a,(function(){l.value===e.elementInfo.id&&(a.value&&(s.value=!1),a.value||-1===b.value||(n.updateElement({id:e.elementInfo.id,props:{height:b.value}}),b.value=-1))}));var m=function(t){var o=t[0].contentRect;if(r.value){var c=o.height;e.elementInfo.height!==c&&(a.value?b.value=c:n.updateElement({id:e.elementInfo.id,props:{height:c}}))}},p=new ResizeObserver(m);Object(j["onMounted"])((function(){r.value&&p.observe(r.value)})),Object(j["onUnmounted"])((function(){r.value&&p.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})),c=t.map((function(e){return e/o}));n.updateElement({id:e.elementInfo.id,props:{width:o,colWidths:c}}),u()},h=function(e){Object(j["nextTick"])((function(){return t.setSelectedTableCells(e)}))};return{elementRef:r,canvasScale:c,handleSelectElement:d,updateTableCells:v,updateColWidths:O,editable:s,startEdit:f,updateSelectedCells:h}}});n("9e6c");const Xa=eo()(Ga,[["render",Na],["__scopeId","data-v-1c016f8e"]]);var Ya=Xa,Za=["width","height","stroke","stroke-width"],Ja=["transform"],Ka=["d"];function Qa(e,t,n,o,c,l){var a=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["editable-element-latex",{lock:e.elementInfo.lock}]),style:Object(j["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(j["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(j["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"element-content",onMousedown:t[0]||(t[0]=function(t){return e.handleSelectElement(t)}),onTouchstart:t[1]||(t[1]=function(t){return e.handleSelectElement(t)}),onDblclick:t[2]||(t[2]=function(t){return e.openLatexEditor()})},[(Object(j["openBlock"])(),Object(j["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(j["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(j["createElementVNode"])("path",{d:e.elementInfo.path},null,8,Ka)],8,Ja)],8,Za))],32)),[[a,e.contextmenus]])],4)],6)}var $a=Object(j["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(){Cl.emit(zc.OPEN_LATEX_EDITOR)};return{handleSelectElement:t,openLatexEditor:n}}});n("bfa0");const er=eo()($a,[["render",Qa],["__scopeId","data-v-50e5c825"]]);var tr=er;function nr(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("VideoPlayer"),r=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["editable-element-video",{lock:e.elementInfo.lock}]),style:Object(j["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(j["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(j["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"element-content",onMousedown:t[2]||(t[2]=function(t){return e.handleSelectElement(t,!1)}),onTouchstart:t[3]||(t[3]=function(t){return e.handleSelectElement(t,!1)})},[Object(j["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(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(["t","b","l","r"],(function(n){return Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["handler-border",n]),key:n,onMousedown:t[0]||(t[0]=function(t){return e.handleSelectElement(t)}),onTouchstart:t[1]||(t[1]=function(t){return e.handleSelectElement(t)})},null,34)})),64))],32)),[[r,e.contextmenus]])],4)],6)}var or=function(e){return Object(j["pushScopeId"])("data-v-fcb929f4"),e=e(),Object(j["popScopeId"])(),e},cr=["src","poster"],lr={class:"bezel"},ar=or((function(){return Object(j["createElementVNode"])("div",{class:"controller-mask"},null,-1)})),rr={class:"controller"},ir={class:"icons icons-left"},ur={class:"icon-content"},dr={class:"volume"},sr={class:"icon-content"},fr={class:"volume-bar",ref:"volumeBarRef"},br=or((function(){return Object(j["createElementVNode"])("span",{class:"thumb"},null,-1)})),mr=[br],pr={class:"time"},vr={class:"ptime"},Or=Object(j["createTextVNode"])(" / "),hr={class:"dtime"},jr={class:"icons icons-right"},yr={class:"speed"},gr={class:"icon speed-icon"},xr=["onClick"],Cr=or((function(){return Object(j["createElementVNode"])("span",{class:"icon-content"},"循环",-1)})),kr=[Cr],Er={class:"bar"},wr=or((function(){return Object(j["createElementVNode"])("span",{class:"thumb"},null,-1)})),Nr=[wr];function Vr(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconPause"),r=Object(j["resolveComponent"])("IconPlayOne"),i=Object(j["resolveComponent"])("IconVolumeMute"),u=Object(j["resolveComponent"])("IconVolumeNotice"),d=Object(j["resolveComponent"])("IconVolumeSmall");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["video-player",{"hide-controller":e.hideController}]),style:Object(j["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(j["createElementVNode"])("div",{class:"video-wrap",onClick:t[8]||(t[8]=function(t){return e.toggle()})},[Object(j["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,cr),Object(j["createElementVNode"])("div",lr,[Object(j["createElementVNode"])("span",{class:Object(j["normalizeClass"])(["bezel-icon",{"bezel-transition":e.bezelTransition}]),onAnimationend:t[7]||(t[7]=function(t){return e.bezelTransition=!1})},[e.paused?(Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:0})):(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:1}))],34)])]),ar,Object(j["createElementVNode"])("div",rr,[Object(j["createElementVNode"])("div",ir,[Object(j["createElementVNode"])("div",{class:"icon play-icon",onClick:t[9]||(t[9]=function(t){return e.toggle()})},[Object(j["createElementVNode"])("span",ur,[e.paused?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0})):(Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:1}))])]),Object(j["createElementVNode"])("div",dr,[Object(j["createElementVNode"])("div",{class:"icon volume-icon",onClick:t[10]||(t[10]=function(t){return e.toggleVolume()})},[Object(j["createElementVNode"])("span",sr,[0===e.volume?(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:0})):1===e.volume?(Object(j["openBlock"])(),Object(j["createBlock"])(u,{key:1})):(Object(j["openBlock"])(),Object(j["createBlock"])(d,{key:2}))])]),Object(j["createElementVNode"])("div",{class:"volume-bar-wrap",onMousedown:t[11]||(t[11]=function(t){return e.handleMousedownVolumeBar()}),onTouchstart:t[12]||(t[12]=function(t){return e.handleMousedownVolumeBar()}),onClick:t[13]||(t[13]=function(t){return e.handleClickVolumeBar(t)})},[Object(j["createElementVNode"])("div",fr,[Object(j["createElementVNode"])("div",{class:"volume-bar-inner",style:Object(j["normalizeStyle"])({width:e.volumeBarWidth})},mr,4)],512)],32)]),Object(j["createElementVNode"])("span",pr,[Object(j["createElementVNode"])("span",vr,Object(j["toDisplayString"])(e.ptime),1),Or,Object(j["createElementVNode"])("span",hr,Object(j["toDisplayString"])(e.dtime),1)])]),Object(j["createElementVNode"])("div",jr,[Object(j["createElementVNode"])("div",yr,[Object(j["createElementVNode"])("div",gr,[Object(j["createElementVNode"])("span",{class:"icon-content",onClick:t[14]||(t[14]=function(t){return e.speedMenuVisible=!e.speedMenuVisible})},"倍速"),e.speedMenuVisible?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{key:0,class:"speed-menu",onMouseleave:t[15]||(t[15]=function(t){return e.speedMenuVisible=!1})},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.speedOptions,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["speed-menu-item",{active:t.value===e.playbackRate}]),key:t.label,onClick:function(n){return e.speed(t.value)}},Object(j["toDisplayString"])(t.label),11,xr)})),128))],32)):Object(j["createCommentVNode"])("",!0)])]),Object(j["createElementVNode"])("div",{class:"loop",onClick:t[16]||(t[16]=function(t){return e.toggleLoop()})},[Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["icon loop-icon",{active:e.loop}])},kr,2)])]),Object(j["createElementVNode"])("div",{class:"bar-wrap",ref:"playBarWrap",onMousedown:t[17]||(t[17]=function(t){return e.handleMousedownPlayBar()}),onTouchstart:t[18]||(t[18]=function(t){return e.handleMousedownPlayBar()}),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(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["bar-time",{hidden:!e.playBarTimeVisible}]),style:Object(j["normalizeStyle"])({left:e.playBarTimeLeft})},Object(j["toDisplayString"])(e.playBarTime),7),Object(j["createElementVNode"])("div",Er,[Object(j["createElementVNode"])("div",{class:"loaded",style:Object(j["normalizeStyle"])({width:e.loadedBarWidth})},null,4),Object(j["createElementVNode"])("div",{class:"played",style:Object(j["normalizeStyle"])({width:e.playedBarWidth})},Nr,4)])],544)])],38)}var Ir=function(e,t){Object(j["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 c=new o;c.loadSource(e),c.attachMedia(t.value)}}else if("flv"===n){var l=window.flvjs;if(l&&l.isSupported()){var a=l.createPlayer({type:"flv",url:e});a.attachMediaElement(t.value),a.load()}}}}))},Sr=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),c=Math.floor(e-3600*n-60*o);return(n>0?[n,o,c]:[o,c]).map(t).join(":")},Br=function(e){return e.getBoundingClientRect().left},Lr=Object(j["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(j["ref"])(),n=Object(j["ref"])(),o=Object(j["ref"])(),c=Object(j["ref"])(.5),l=Object(j["ref"])(!0),a=Object(j["ref"])(0),r=Object(j["ref"])(0),i=Object(j["ref"])(0),u=Object(j["ref"])(!1),d=Object(j["ref"])(!1),s=Object(j["ref"])(1),f=Object(j["ref"])(!1),b=Object(j["ref"])("00:00"),m=Object(j["ref"])("0"),p=Object(j["computed"])((function(){return Sr(a.value)})),v=Object(j["computed"])((function(){return Sr(r.value)})),O=Object(j["computed"])((function(){return a.value/r.value*100+"%"})),h=Object(j["computed"])((function(){return i.value/r.value*100+"%"})),y=Object(j["computed"])((function(){return 100*c.value+"%"})),g=Object(j["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&&(l.value=!1,t.value.play(),d.value=!0)},E=function(){t.value&&(l.value=!0,t.value.pause(),d.value=!0)},w=function(){l.value?k():E()},N=function(e){t.value&&(e=Math.max(e,0),e=Math.min(e,1),t.value.volume=e,c.value=e,t.value.muted&&0!==e&&(t.value.muted=!1))},V=function(e){t.value&&(t.value.playbackRate=e),s.value=e},I=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()):E()},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 De["a"].error("视频加载失败")},_=function(e){if(t.value&&n.value){var o="clientX"in e?e.clientX:e.changedTouches[0].clientX,c=(o-Br(n.value))/n.value.clientWidth;c=Math.max(c,0),c=Math.min(c,1);var l=c*r.value;t.value.currentTime=l,a.value=l}},M=function e(o){if(t.value&&n.value){var c="clientX"in o?o.clientX:o.changedTouches[0].clientX,l=(c-Br(n.value))/n.value.clientWidth;l=Math.max(l,0),l=Math.min(l,1);var i=l*r.value;t.value.currentTime=i,a.value=i,document.removeEventListener("mousemove",_),document.removeEventListener("touchmove",_),document.removeEventListener("mouseup",e),document.removeEventListener("touchend",e)}},D=function(){document.addEventListener("mousemove",_),document.addEventListener("touchmove",_),document.addEventListener("mouseup",M),document.addEventListener("touchend",M)},z=function(e){if(o.value){var t="clientX"in e?e.clientX:e.changedTouches[0].clientX,n=(t-Br(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-Br(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 c=r.value*(o/n.value.offsetWidth);m.value="".concat(o-(c>=3600?25:20),"px"),b.value=Sr(c),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},U=Object(j["ref"])(-1),W=Object(j["ref"])(!1),G=function(){W.value=!1,clearTimeout(U.value),U.value=setTimeout((function(){var e;null!==(e=t.value)&&void 0!==e&&e.played.length&&(W.value=!0)}),3e3)};return Ir(e.src,t),{videoRef:t,playBarWrap:n,volumeBarRef:o,volume:c,loop:u,paused:l,ptime:p,dtime:v,playBarTime:b,playBarTimeVisible:f,playBarTimeLeft:m,playedBarWidth:O,loadedBarWidth:h,volumeBarWidth:y,hideController:W,bezelTransition:d,playbackRate:s,speedMenuVisible:g,speedOptions:x,seek:C,play:k,pause:E,toggle:w,setVolume:N,speed:V,handleDurationchange:I,handleTimeupdate:S,handleEnded:B,handleProgress:L,handleMousedownPlayBar:D,handleMousedownVolumeBar:F,handleClickVolumeBar:R,handleMousemovePlayBar:P,toggleVolume:H,toggleLoop:q,autoHideController:G,handleError:T}}});n("1d8f");const Tr=eo()(Lr,[["render",Vr],["__scopeId","data-v-fcb929f4"]]);var _r=Tr,Mr=Object(j["defineComponent"])({name:"editable-element-video",components:{VideoPlayer:_r},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=Object(y["c"])(ue()),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("aa3e");const Dr=eo()(Mr,[["render",nr],["__scopeId","data-v-454973e4"]]);var zr=Dr;function Ar(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconVolumeNotice"),r=Object(j["resolveComponent"])("AudioPlayer"),i=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["editable-element-audio",{lock:e.elementInfo.lock}]),style:Object(j["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(j["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(j["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"element-content",onMousedown:t[1]||(t[1]=function(t){return e.handleSelectElement(t)}),onTouchstart:t[2]||(t[2]=function(t){return e.handleSelectElement(t)})},[Object(j["createVNode"])(a,{class:"audio-icon",style:Object(j["normalizeStyle"])({fontSize:e.audioIconSize,color:e.elementInfo.color})},null,8,["style"]),e.handleElementId===e.elementInfo.id?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,class:"audio-player",style:Object(j["normalizeStyle"])(Object(L["a"])({},e.audioPlayerPosition)),src:e.elementInfo.src,loop:e.elementInfo.loop,scale:e.canvasScale,onMousedown:t[0]||(t[0]=Object(j["withModifiers"])((function(){}),["stop"]))},null,8,["style","src","loop","scale"])):Object(j["createCommentVNode"])("",!0)],32)),[[i,e.contextmenus]])],4)],6)}var Fr=function(e){return Object(j["pushScopeId"])("data-v-5530a7f2"),e=e(),Object(j["popScopeId"])(),e},Rr=["src","autoplay"],Pr={class:"controller"},Hr={class:"icons"},qr={class:"icon-content"},Ur={class:"volume"},Wr={class:"icon-content"},Gr={class:"volume-bar",ref:"volumeBarRef"},Xr=Fr((function(){return Object(j["createElementVNode"])("span",{class:"thumb"},null,-1)})),Yr=[Xr],Zr={class:"time"},Jr={class:"ptime"},Kr=Object(j["createTextVNode"])(" / "),Qr={class:"dtime"},$r={class:"bar"},ei=Fr((function(){return Object(j["createElementVNode"])("span",{class:"thumb"},null,-1)})),ti=[ei];function ni(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconPlayOne"),r=Object(j["resolveComponent"])("IconPause"),i=Object(j["resolveComponent"])("IconVolumeMute"),u=Object(j["resolveComponent"])("IconVolumeNotice"),d=Object(j["resolveComponent"])("IconVolumeSmall");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"audio-player",style:Object(j["normalizeStyle"])({transform:"scale(".concat(1/e.scale,")")})},[Object(j["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,Rr),Object(j["createElementVNode"])("div",Pr,[Object(j["createElementVNode"])("div",Hr,[Object(j["createElementVNode"])("div",{class:"icon play-icon",onClick:t[6]||(t[6]=function(t){return e.toggle()})},[Object(j["createElementVNode"])("span",qr,[e.paused?(Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:0})):(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:1}))])]),Object(j["createElementVNode"])("div",Ur,[Object(j["createElementVNode"])("div",{class:"icon volume-icon",onClick:t[7]||(t[7]=function(t){return e.toggleVolume()})},[Object(j["createElementVNode"])("span",Wr,[0===e.volume?(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:0})):1===e.volume?(Object(j["openBlock"])(),Object(j["createBlock"])(u,{key:1})):(Object(j["openBlock"])(),Object(j["createBlock"])(d,{key:2}))])]),Object(j["createElementVNode"])("div",{class:"volume-bar-wrap",onMousedown:t[8]||(t[8]=function(t){return e.handleMousedownVolumeBar()}),onTouchstart:t[9]||(t[9]=function(t){return e.handleMousedownVolumeBar()}),onClick:t[10]||(t[10]=function(t){return e.handleClickVolumeBar(t)})},[Object(j["createElementVNode"])("div",Gr,[Object(j["createElementVNode"])("div",{class:"volume-bar-inner",style:Object(j["normalizeStyle"])({width:e.volumeBarWidth})},Yr,4)],512)],32)])]),Object(j["createElementVNode"])("span",Zr,[Object(j["createElementVNode"])("span",Jr,Object(j["toDisplayString"])(e.ptime),1),Kr,Object(j["createElementVNode"])("span",Qr,Object(j["toDisplayString"])(e.dtime),1)]),Object(j["createElementVNode"])("div",{class:"bar-wrap",ref:"playBarWrap",onMousedown:t[11]||(t[11]=function(t){return e.handleMousedownPlayBar()}),onTouchstart:t[12]||(t[12]=function(t){return e.handleMousedownPlayBar()}),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(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["bar-time",{hidden:!e.playBarTimeVisible}]),style:Object(j["normalizeStyle"])({left:e.playBarTimeLeft})},Object(j["toDisplayString"])(e.playBarTime),7),Object(j["createElementVNode"])("div",$r,[Object(j["createElementVNode"])("div",{class:"loaded",style:Object(j["normalizeStyle"])({width:e.loadedBarWidth})},null,4),Object(j["createElementVNode"])("div",{class:"played",style:Object(j["normalizeStyle"])({width:e.playedBarWidth})},ti,4)])],544)])],4)}var oi=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),c=Math.floor(e-3600*n-60*o);return(n>0?[n,o,c]:[o,c]).map(t).join(":")},ci=function(e){return e.getBoundingClientRect().left},li=Object(j["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(j["ref"])(),n=Object(j["ref"])(),o=Object(j["ref"])(),c=Object(j["ref"])(.5),l=Object(j["ref"])(!0),a=Object(j["ref"])(0),r=Object(j["ref"])(0),i=Object(j["ref"])(0),u=Object(j["ref"])(!1),d=Object(j["ref"])("00:00"),s=Object(j["ref"])("0"),f=Object(j["computed"])((function(){return oi(a.value)})),b=Object(j["computed"])((function(){return oi(r.value)})),m=Object(j["computed"])((function(){return a.value/r.value*100+"%"})),p=Object(j["computed"])((function(){return i.value/r.value*100+"%"})),v=Object(j["computed"])((function(){return 100*c.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&&(l.value=!1,t.value.play())},y=function(){t.value&&(l.value=!0,t.value.pause())},g=function(){l.value?h():y()},x=function(e){t.value&&(e=Math.max(e,0),e=Math.min(e,1),t.value.volume=e,c.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},E=function(){l.value=!1},w=function(){e.loop?(O(0),h()):y()},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},V=function(){return De["a"].error("视频加载失败")},I=function(e){if(t.value&&n.value){var o="clientX"in e?e.clientX:e.changedTouches[0].clientX,c=(o-ci(n.value))/n.value.clientWidth;c=Math.max(c,0),c=Math.min(c,1);var l=c*r.value;t.value.currentTime=l,a.value=l}},S=function e(o){if(t.value&&n.value){var c="clientX"in o?o.clientX:o.changedTouches[0].clientX,l=(c-ci(n.value))/n.value.clientWidth;l=Math.max(l,0),l=Math.min(l,1);var i=l*r.value;t.value.currentTime=i,a.value=i,document.removeEventListener("mousemove",I),document.removeEventListener("touchmove",I),document.removeEventListener("mouseup",e),document.removeEventListener("touchend",e)}},B=function(){document.addEventListener("mousemove",I),document.addEventListener("touchmove",I),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-ci(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)},_=function(){document.addEventListener("mousemove",L),document.addEventListener("touchmove",L),document.addEventListener("mouseup",T),document.addEventListener("touchend",T)},M=function(e){if(o.value){var t=(e.clientX-ci(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 c=r.value*(o/n.value.offsetWidth);s.value="".concat(o-(c>=3600?25:20),"px"),d.value=oi(c),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:c,paused:l,ptime:f,dtime:b,playBarTime:d,playBarTimeVisible:u,playBarTimeLeft:s,playedBarWidth:m,loadedBarWidth:p,volumeBarWidth:v,play:h,pause:y,toggle:g,setVolume:x,handleDurationchange:C,handleTimeupdate:k,handlePlayed:E,handleEnded:w,handleProgress:N,handleError:V,handleMousedownPlayBar:B,handleMousedownVolumeBar:_,handleClickVolumeBar:M,handleMousemovePlayBar:D,toggleVolume:z}}});n("c558");const ai=eo()(li,[["render",ni],["__scopeId","data-v-5530a7f2"]]);var ri=ai,ii=Object(j["defineComponent"])({name:"editable-element-audio",components:{AudioPlayer:ri},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=Object(y["c"])(ue()),n=t.canvasScale,o=t.handleElementId,c=Object(y["c"])(ae()),l=c.viewportRatio,a=Object(j["computed"])((function(){return Math.min(e.elementInfo.width,e.elementInfo.height)+"px"})),r=Object(j["computed"])((function(){var t=at,o=at*l.value,c=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+c>=t&&(s=r-c),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("b14d");const ui=eo()(ii,[["render",Ar],["__scopeId","data-v-40b7d6a8"]]);var di=ui,si=Object(j["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(j["computed"])((function(){var t,n=(t={},Object(pe["a"])(t,Te.IMAGE,kc),Object(pe["a"])(t,Te.TEXT,Dl),Object(pe["a"])(t,Te.SHAPE,ea),Object(pe["a"])(t,Te.LINE,pa),Object(pe["a"])(t,Te.CHART,Ea),Object(pe["a"])(t,Te.TABLE,Ya),Object(pe["a"])(t,Te.LATEX,tr),Object(pe["a"])(t,Te.VIDEO,zr),Object(pe["a"])(t,Te.AUDIO,di),t);return n[e.elementInfo.type]||null})),n=gt(),o=n.orderElement,c=Io(),l=c.alignElementToCanvas,a=Ot(),r=a.combineElements,i=a.uncombineElements,u=vt(),d=u.deleteElement,s=pt(),f=s.lockElement,b=s.unlockElement,m=ht(),p=m.copyElement,v=m.pasteElement,O=m.cutElement,h=jt(),y=h.selectAllElement,g=function(){return e.elementInfo.lock?[{text:"解锁",handler:function(){return b(e.elementInfo)}}]:[{text:"剪切",subText:"Ctrl + X",handler:O},{text:"复制",subText:"Ctrl + C",handler:p},{text:"粘贴",subText:"Ctrl + V",handler:v},{divider:!0},{text:"水平居中",handler:function(){return l(E.HORIZONTAL)},children:[{text:"水平垂直居中",handler:function(){return l(E.CENTER)}},{text:"水平居中",handler:function(){return l(E.HORIZONTAL)}},{text:"左对齐",handler:function(){return l(E.LEFT)}},{text:"右对齐",handler:function(){return l(E.RIGHT)}}]},{text:"垂直居中",handler:function(){return l(E.VERTICAL)},children:[{text:"水平垂直居中",handler:function(){return l(E.CENTER)}},{text:"垂直居中",handler:function(){return l(E.VERTICAL)}},{text:"顶部对齐",handler:function(){return l(E.TOP)}},{text:"底部对齐",handler:function(){return l(E.BOTTOM)}}]},{divider:!0},{text:"置于顶层",disable:e.isMultiSelect&&!e.elementInfo.groupId,handler:function(){return o(e.elementInfo,k.TOP)},children:[{text:"置于顶层",handler:function(){return o(e.elementInfo,k.TOP)}},{text:"上移一层",handler:function(){return o(e.elementInfo,k.UP)}}]},{text:"置于底层",disable:e.isMultiSelect&&!e.elementInfo.groupId,handler:function(){return o(e.elementInfo,k.BOTTOM)},children:[{text:"置于底层",handler:function(){return o(e.elementInfo,k.BOTTOM)}},{text:"下移一层",handler:function(){return o(e.elementInfo,k.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:y},{text:"锁定",subText:"Ctrl + L",handler:f},{text:"删除",subText:"Delete",handler:d}]};return{currentElementComponent:t,contextmenus:g}}});const fi=eo()(si,[["render",Vo]]);var bi=fi;function mi(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])("mouse-selection quadrant-".concat(e.quadrant)),style:Object(j["normalizeStyle"])({top:e.top+"px",left:e.left+"px",width:e.width+"px",height:e.height+"px"})},null,6)}var pi=Object(j["defineComponent"])({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("aa92");const vi=eo()(pi,[["render",mi],["__scopeId","data-v-25d4b5f8"]]);var Oi=vi;function hi(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("GridLines");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"viewport-background",style:Object(j["normalizeStyle"])(e.backgroundStyle)},[e.showGridLines?(Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:0})):Object(j["createCommentVNode"])("",!0)],4)}var ji={class:"grid-lines"},yi=["d","stroke"];function gi(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("svg",ji,[Object(j["createElementVNode"])("path",{style:Object(j["normalizeStyle"])({transform:"scale(".concat(e.canvasScale,")")}),d:e.path,fill:"none",stroke:e.gridColor,"stroke-width":"0.3","stroke-dasharray":"5"},null,12,yi)])}var xi=Object(j["defineComponent"])({name:"grid-lines",setup:function(){var e=Object(y["c"])(ue()),t=e.canvasScale,n=Object(y["c"])(ae()),o=n.currentSlide,c=n.viewportRatio,l=Object(j["computed"])((function(){var e;return null===(e=o.value)||void 0===e?void 0:e.background})),a=Object(j["computed"])((function(){var e,t=(null===(e=l.value)||void 0===e?void 0:e.color)||"#fff",n=["#000","#fff"];return te.a.mostReadable(t,n,{includeFallbackColors:!0}).setAlpha(.5).toRgbString()})),r=50,i=function(){for(var e=at,t=at*c.value,n="",o=0;o<=Math.floor(t/r);o++)n+="M0 ".concat(o*r," L").concat(e," ").concat(o*r," ");for(var l=0;l<=Math.floor(e/r);l++)n+="M".concat(l*r," 0 L").concat(l*r," ").concat(t," ");return n};return{canvasScale:t,gridColor:a,width:at,height:at*c.value,path:i()}}});n("ffb8");const Ci=eo()(xi,[["render",gi],["__scopeId","data-v-9b94cc34"]]);var ki=Ci,Ei=function(e){var t=Object(j["computed"])((function(){if(!e.value)return{backgroundColor:"#fff"};var t=e.value,n=t.type,o=t.color,c=t.image,l=t.imageSize,a=t.gradientColor,r=t.gradientRotate,i=t.gradientType;if("solid"===n)return{backgroundColor:o};if("image"===n)return c?"repeat"===l?{backgroundImage:"url(".concat(c),backgroundRepeat:"repeat",backgroundSize:"contain"}:{backgroundImage:"url(".concat(c),backgroundRepeat:"no-repeat",backgroundSize:l||"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}},wi=Object(j["defineComponent"])({name:"viewport-background",components:{GridLines:ki},setup:function(){var e=Object(y["c"])(ue()),t=e.showGridLines,n=Object(y["c"])(ae()),o=n.currentSlide,c=Object(j["computed"])((function(){var e;return null===(e=o.value)||void 0===e?void 0:e.background})),l=Ei(c),a=l.backgroundStyle;return{showGridLines:t,backgroundStyle:a}}});n("06b6");const Ni=eo()(wi,[["render",hi],["__scopeId","data-v-4d0018d8"]]);var Vi=Ni;function Ii(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"alignment-line",style:Object(j["normalizeStyle"])({left:e.left,top:e.top})},[Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["line",e.type]),style:Object(j["normalizeStyle"])(e.sizeStyle)},null,6)],4)}var Si=Object(j["defineComponent"])({name:"alignment-line",props:{type:{type:String,required:!0},axis:{type:Object,required:!0},length:{type:Number,required:!0},canvasScale:{type:Number,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){return e.axis.x*e.canvasScale+"px"})),n=Object(j["computed"])((function(){return e.axis.y*e.canvasScale+"px"})),o=Object(j["computed"])((function(){return"vertical"===e.type?{height:e.length*e.canvasScale+"px"}:{width:e.length*e.canvasScale+"px"}}));return{left:t,top:n,sizeStyle:o}}});n("19f0");const Bi=eo()(Si,[["render",Ii],["__scopeId","data-v-7017c6bc"]]);var Li=Bi,Ti={class:"ruler"};function _i(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Ti,[Object(j["createElementVNode"])("div",{class:"h",style:Object(j["normalizeStyle"])({width:e.viewportStyles.width*e.canvasScale+"px",left:e.viewportStyles.left+"px"})},[(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(10,(function(t){return Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["ruler-marker-100",{hide:e.markerSize<36,omit:e.markerSize<72}]),key:"marker-100-".concat(t)},[Object(j["createElementVNode"])("span",null,Object(j["toDisplayString"])(100*t),1)],2)})),64))],4),Object(j["createElementVNode"])("div",{class:"v",style:Object(j["normalizeStyle"])({height:e.viewportStyles.height*e.canvasScale+"px",top:e.viewportStyles.top+"px"})},[(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(10,(function(t){return Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["ruler-marker-100",{hide:e.markerSize<36,omit:e.markerSize<72}]),key:t,style:Object(j["normalizeStyle"])({height:e.markerSize+"px"})},[Object(j["createElementVNode"])("span",null,Object(j["toDisplayString"])(100*t),1)],6)})),64))],4)])}var Mi=Object(j["defineComponent"])({props:{viewportStyles:{type:Object,required:!0}},setup:function(e){var t=Object(y["c"])(ue()),n=t.canvasScale,o=Object(j["computed"])((function(){return e.viewportStyles.width*n.value/10}));return{canvasScale:n,markerSize:o}}});n("30b8");const Di=eo()(Mi,[["render",_i],["__scopeId","data-v-6cc1801a"]]);var zi=Di,Ai=["width","height"],Fi=["d"];function Ri(e,t,n,o,c,l){var a,r;return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"element-create-selection",ref:"selectionRef",onMousedown:t[0]||(t[0]=Object(j["withModifiers"])((function(t){return e.createSelection(t)}),["stop"])),onContextmenu:t[1]||(t[1]=Object(j["withModifiers"])((function(){}),["stop","prevent"]))},[e.start&&e.end?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{key:0,class:Object(j["normalizeClass"])(["selection",null===(a=e.creatingElement)||void 0===a?void 0:a.type]),style:Object(j["normalizeStyle"])(e.position)},["line"===(null===(r=e.creatingElement)||void 0===r?void 0:r.type)&&e.lineData?(Object(j["openBlock"])(),Object(j["createElementBlock"])("svg",{key:0,overflow:"visible",width:e.lineData.svgWidth,height:e.lineData.svgHeight},[Object(j["createElementVNode"])("path",{d:e.lineData.path,stroke:"#d14424",fill:"none","stroke-width":"2"},null,8,Fi)],8,Ai)):Object(j["createCommentVNode"])("",!0)],6)):Object(j["createCommentVNode"])("",!0)],544)}var Pi=Object(j["defineComponent"])({name:"element-create-selection",emits:["created"],setup:function(e,t){var n=t.emit,o=ue(),c=Object(y["c"])(o),l=c.creatingElement,a=Object(y["c"])(ke()),r=a.ctrlOrShiftKeyActive,i=Object(j["ref"])(),u=Object(j["ref"])(),d=Object(j["ref"])(),s=Object(j["ref"])({x:0,y:0});Object(j["onMounted"])((function(){if(d.value){var e=d.value.getBoundingClientRect(),t=e.x,n=e.y;s.value={x:t,y:n}}}));var f=function(e){var t=!0,c=e.pageX,a=e.pageY;i.value=[c,a],document.onmousemove=function(e){if(l.value&&t){var n=e.pageX,o=e.pageY;if(r.value){var i=n-c,d=o-a,s=Math.abs(i),f=Math.abs(d);if("shape"===l.value.type){var b=d>0&&i<0||d<0&&i>0;s>f?o=b?a-i:a+i:n=b?c-d:c+d}else"line"===l.value.type&&(s>f?o=a:n=c)}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,b=30;if("line"===(null===(r=l.value)||void 0===r?void 0:r.type)&&(Math.abs(s-c)>=b||Math.abs(f-a)>=b))n("created",{start:i.value,end:u.value});else if("line"!==(null===(d=l.value)||void 0===d?void 0:d.type)&&Math.abs(s-c)>=b&&Math.abs(f-a)>=b)n("created",{start:i.value,end:u.value});else{var m=200,p=Math.min(s,c),v=Math.min(f,a),O=Math.max(s,c),h=Math.max(f,a),j=O-p>=b?O-p:m,y=h-v>=b?h-v:m;n("created",{start:[p,v],end:[p+j,v+y]})}}else setTimeout((function(){return o.setCreatingElement(null)}),0)}},b=Object(j["computed"])((function(){if(!i.value||!u.value)return null;if(!l.value||"line"!==l.value.type)return null;var e=Object(ve["a"])(i.value,2),t=e[0],n=e[1],o=Object(ve["a"])(u.value,2),c=o[0],a=o[1],r=Math.min(t,c),d=Math.max(t,c),s=Math.min(n,a),f=Math.max(n,a),b=d-r>=24?d-r:24,m=f-s>=24?f-s:24,p=t===r?0:d-r,v=n===s?0:f-s,O=c===r?0:d-r,h=a===s?0:f-s,j="M".concat(p,", ").concat(v," L").concat(O,", ").concat(h);return{svgWidth:b,svgHeight:m,startX:p,startY:v,endX:O,endY:h,path:j}})),m=Object(j["computed"])((function(){if(!i.value||!u.value)return{};var e=Object(ve["a"])(i.value,2),t=e[0],n=e[1],o=Object(ve["a"])(u.value,2),c=o[0],l=o[1],a=Math.min(t,c),r=Math.max(t,c),d=Math.min(n,l),f=Math.max(n,l),b=r-a,m=f-d;return{left:a-s.value.x+"px",top:d-s.value.y+"px",width:b+"px",height:m+"px"}}));return{selectionRef:d,start:i,end:u,creatingElement:l,createSelection:f,lineData:b,position:m}}});n("80f7");const Hi=eo()(Pi,[["render",Ri],["__scopeId","data-v-15b60d90"]]);var qi=Hi;function Ui(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("BorderLine"),r=Object(j["resolveComponent"])("ResizeHandler");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"multi-select-operate",style:Object(j["normalizeStyle"])({left:e.range.minX*e.canvasScale+"px",top:e.range.minY*e.canvasScale+"px"})},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:e.type,type:e.type,style:Object(j["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.disableResize?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],{key:0},Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:t.direction,type:t.direction,style:Object(j["normalizeStyle"])(t.style),onMousedown:Object(j["withModifiers"])((function(n){return e.scaleMultiElement(n,e.range,t.direction)}),["stop"])},null,8,["type","style","onMousedown"])})),128))],4)}var Wi=function(e,t){var n=Object(j["computed"])((function(){return[{direction:N.LEFT_TOP,style:{}},{direction:N.TOP,style:{left:e.value/2+"px"}},{direction:N.RIGHT_TOP,style:{left:e.value+"px"}},{direction:N.LEFT,style:{top:t.value/2+"px"}},{direction:N.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}},{direction:N.LEFT_BOTTOM,style:{top:t.value+"px"}},{direction:N.BOTTOM,style:{left:e.value/2+"px",top:t.value+"px"}},{direction:N.RIGHT_BOTTOM,style:{left:e.value+"px",top:t.value+"px"}}]})),o=Object(j["computed"])((function(){return[{direction:N.LEFT,style:{top:t.value/2+"px"}},{direction:N.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}}]})),c=Object(j["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:c}};function Gi(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["resize-handler",e.rotateClassName,e.type])},null,2)}var Xi=Object(j["defineComponent"])({name:"resize-handler",props:{type:{type:String,default:""},rotate:{type:Number,default:0}},setup:function(e){var t=Object(j["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("7f52");const Yi=eo()(Xi,[["render",Gi],["__scopeId","data-v-c9559332"]]);var Zi=Yi;function Ji(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["border-line",e.type,{wide:e.isWide}])},null,2)}var Ki=Object(j["defineComponent"])({name:"border-line",props:{type:{type:String,required:!0},isWide:{type:Boolean,default:!1}}});n("9d5f");const Qi=eo()(Ki,[["render",Ji],["__scopeId","data-v-1430bedc"]]);var $i=Qi,eu=Object(j["defineComponent"])({name:"multi-select-operate",components:{ResizeHandler:Zi,BorderLine:$i},props:{elementList:{type:Array,required:!0},scaleMultiElement:{type:Function,required:!0}},setup:function(e){var t=Object(y["c"])(ue()),n=t.activeElementIdList,o=t.canvasScale,c=Object(j["computed"])((function(){return e.elementList.filter((function(e){return n.value.includes(e.id)}))})),l=Object(j["ref"])({minX:0,maxX:0,minY:0,maxY:0}),a=Object(j["computed"])((function(){return(l.value.maxX-l.value.minX)*o.value})),r=Object(j["computed"])((function(){return(l.value.maxY-l.value.minY)*o.value})),i=Wi(a,r),u=i.resizeHandlers,d=i.borderLines,s=function(){var e=Ke(c.value),t=e.minX,n=e.maxX,o=e.minY,a=e.maxY;l.value={minX:t,maxX:n,minY:o,maxY:a}};Object(j["watchEffect"])(s);var f=Object(j["computed"])((function(){return c.value.some((function(e){return!!("image"!==e.type&&"shape"!==e.type||e.rotate)}))}));return{range:l,canvasScale:o,borderLines:d,disableResize:f,resizeHandlers:u}}});n("008f");const tu=eo()(eu,[["render",Ui],["__scopeId","data-v-55c8df22"]]);var nu=tu,ou={key:1,class:"animation-index"};function cu(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("LinkHandler");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["operate",{"multi-select":e.isMultiSelect&&!e.isActive}]),style:Object(j["normalizeStyle"])({top:e.elementInfo.top*e.canvasScale+"px",left:e.elementInfo.left*e.canvasScale+"px",transform:"rotate(".concat(e.rotate,"deg)"),transformOrigin:"".concat(e.elementInfo.width*e.canvasScale/2,"px ").concat(e.height*e.canvasScale/2,"px")})},[e.isSelected?(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["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(j["createCommentVNode"])("",!0),"elAnimation"===e.toolbarState&&e.elementIndexListInAnimation.length?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",ou,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.elementIndexListInAnimation,(function(e){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"index-item",key:e},Object(j["toDisplayString"])(e+1),1)})),128))])):Object(j["createCommentVNode"])("",!0),e.isActive&&e.elementInfo.link?(Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:2,elementInfo:e.elementInfo,link:e.elementInfo.link,openLinkDialog:e.openLinkDialog,onMousedown:t[0]||(t[0]=Object(j["withModifiers"])((function(){}),["stop"]))},null,8,["elementInfo","link","openLinkDialog"])):Object(j["createCommentVNode"])("",!0)],6)}function lu(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("BorderLine"),r=Object(j["resolveComponent"])("ResizeHandler"),i=Object(j["resolveComponent"])("RotateHandler");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["image-element-operate",{cliping:e.isCliping}])},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{class:"operate-border-line",key:e.type,type:e.type,style:Object(j["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(j["normalizeStyle"])(t.style),onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(j["createVNode"])(i,{class:"operate-rotate-handler",style:Object(j["normalizeStyle"])({left:e.scaleWidth/2+"px"}),onMousedown:t[0]||(t[0]=Object(j["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64)):Object(j["createCommentVNode"])("",!0)],2)}var au={class:"rotate-handler"};function ru(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",au)}var iu={name:"rotate-handler"};n("8754");const uu=eo()(iu,[["render",ru],["__scopeId","data-v-9a549510"]]);var du=uu,su=Object(j["defineComponent"])({name:"image-element-operate",inheritAttrs:!1,components:{RotateHandler:du,ResizeHandler:Zi,BorderLine:$i},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(y["c"])(ue()),n=t.canvasScale,o=t.clipingImageElementId,c=Object(j["computed"])((function(){return o.value===e.elementInfo.id})),l=Object(j["computed"])((function(){return e.elementInfo.width*n.value})),a=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),r=Wi(l,a),i=r.resizeHandlers,u=r.borderLines;return{isCliping:c,scaleWidth:l,resizeHandlers:i,borderLines:u}}});n("5efd");const fu=eo()(su,[["render",lu],["__scopeId","data-v-db6d5ba6"]]);var bu=fu,mu={class:"text-element-operate"};function pu(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("BorderLine"),r=Object(j["resolveComponent"])("ResizeHandler"),i=Object(j["resolveComponent"])("RotateHandler");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",mu,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{class:"operate-border-line",key:e.type,type:e.type,style:Object(j["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.textElementResizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(j["normalizeStyle"])(t.style),onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(j["createVNode"])(i,{class:"operate-rotate-handler",style:Object(j["normalizeStyle"])({left:e.scaleWidth/2+"px"}),onMousedown:t[0]||(t[0]=Object(j["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64)):Object(j["createCommentVNode"])("",!0)])}var vu=Object(j["defineComponent"])({name:"text-element-operate",inheritAttrs:!1,components:{RotateHandler:du,ResizeHandler:Zi,BorderLine:$i},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(y["c"])(ue()),n=t.canvasScale,o=Object(j["computed"])((function(){return e.elementInfo.width*n.value})),c=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),l=Wi(o,c),a=l.textElementResizeHandlers,r=l.borderLines;return{scaleWidth:o,textElementResizeHandlers:a,borderLines:r}}});const Ou=eo()(vu,[["render",pu]]);var hu=Ou,ju={class:"shape-element-operate"};function yu(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("BorderLine"),r=Object(j["resolveComponent"])("ResizeHandler"),i=Object(j["resolveComponent"])("RotateHandler");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",ju,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{class:"operate-border-line",key:e.type,type:e.type,style:Object(j["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(j["normalizeStyle"])(t.style),onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(j["createVNode"])(i,{class:"operate-rotate-handler",style:Object(j["normalizeStyle"])({left:e.scaleWidth/2+"px"}),onMousedown:t[0]||(t[0]=Object(j["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64)):Object(j["createCommentVNode"])("",!0)])}var gu=Object(j["defineComponent"])({name:"shape-element-operate",inheritAttrs:!1,components:{RotateHandler:du,ResizeHandler:Zi,BorderLine:$i},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(y["c"])(ue()),n=t.canvasScale,o=Object(j["computed"])((function(){return e.elementInfo.width*n.value})),c=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),l=Wi(o,c),a=l.resizeHandlers,r=l.borderLines;return{scaleWidth:o,resizeHandlers:a,borderLines:r}}});const xu=eo()(gu,[["render",yu]]);var Cu=xu,ku={class:"line-element-operate"},Eu=["width","height","stroke"],wu={key:0},Nu=["x1","y1","x2","y2"],Vu=["x1","y1","x2","y2"],Iu=["x1","y1","x2","y2"],Su=["x1","y1","x2","y2"];function Bu(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ResizeHandler");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",ku,[e.handlerVisible?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{class:"operate-resize-handler",key:t.handler,style:Object(j["normalizeStyle"])(t.style),onMousedown:Object(j["withModifiers"])((function(n){return e.dragLineElement(n,e.elementInfo,t.handler)}),["stop"])},null,8,["style","onMousedown"])})),128)),(Object(j["openBlock"])(),Object(j["createElementBlock"])("svg",{width:e.svgWidth||1,height:e.svgHeight||1,stroke:e.elementInfo.color,overflow:"visible",style:Object(j["normalizeStyle"])({transform:"scale(".concat(e.canvasScale,")")})},[e.elementInfo.curve?(Object(j["openBlock"])(),Object(j["createElementBlock"])("g",wu,[Object(j["createElementVNode"])("line",{class:"anchor-line",x1:e.elementInfo.start[0],y1:e.elementInfo.start[1],x2:e.elementInfo.curve[0],y2:e.elementInfo.curve[1]},null,8,Nu),Object(j["createElementVNode"])("line",{class:"anchor-line",x1:e.elementInfo.end[0],y1:e.elementInfo.end[1],x2:e.elementInfo.curve[0],y2:e.elementInfo.curve[1]},null,8,Vu)])):Object(j["createCommentVNode"])("",!0),e.elementInfo.cubic?(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],{key:1},Object(j["renderList"])(e.elementInfo.cubic,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])("g",{key:n},[0===n?(Object(j["openBlock"])(),Object(j["createElementBlock"])("line",{key:0,class:"anchor-line",x1:e.elementInfo.start[0],y1:e.elementInfo.start[1],x2:t[0],y2:t[1]},null,8,Iu)):Object(j["createCommentVNode"])("",!0),1===n?(Object(j["openBlock"])(),Object(j["createElementBlock"])("line",{key:1,class:"anchor-line",x1:e.elementInfo.end[0],y1:e.elementInfo.end[1],x2:t[0],y2:t[1]},null,8,Su)):Object(j["createCommentVNode"])("",!0)])})),128)):Object(j["createCommentVNode"])("",!0)],12,Eu))],64)):Object(j["createCommentVNode"])("",!0)])}var Lu=Object(j["defineComponent"])({name:"line-element-operate",inheritAttrs:!1,components:{ResizeHandler:Zi},props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},dragLineElement:{type:Function,required:!0}},setup:function(e){var t=Object(y["c"])(ue()),n=t.canvasScale,o=Object(j["computed"])((function(){return Math.max(e.elementInfo.start[0],e.elementInfo.end[0])})),c=Object(j["computed"])((function(){return Math.max(e.elementInfo.start[1],e.elementInfo.end[1])})),l=Object(j["computed"])((function(){var t=[{handler:V.START,style:{left:e.elementInfo.start[0]*n.value+"px",top:e.elementInfo.start[1]*n.value+"px"}},{handler:V.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:V.C,style:{left:o[0]*n.value+"px",top:o[1]*n.value+"px"}})}else if(e.elementInfo.cubic){var c=Object(ve["a"])(e.elementInfo.cubic,2),l=c[0],a=c[1];t.push({handler:V.C1,style:{left:l[0]*n.value+"px",top:l[1]*n.value+"px"}}),t.push({handler:V.C2,style:{left:a[0]*n.value+"px",top:a[1]*n.value+"px"}})}return t}));return{svgWidth:o,svgHeight:c,canvasScale:n,resizeHandlers:l}}});n("8010");const Tu=eo()(Lu,[["render",Bu],["__scopeId","data-v-60f9f1f7"]]);var _u=Tu,Mu={class:"table-element-operate"};function Du(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("BorderLine"),r=Object(j["resolveComponent"])("ResizeHandler"),i=Object(j["resolveComponent"])("RotateHandler");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Mu,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{class:"operate-border-line",key:e.type,type:e.type,style:Object(j["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.textElementResizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(j["normalizeStyle"])(t.style),onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(j["createVNode"])(i,{class:"operate-rotate-handler",style:Object(j["normalizeStyle"])({left:e.scaleWidth/2+"px"}),onMousedown:t[0]||(t[0]=Object(j["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64)):Object(j["createCommentVNode"])("",!0)])}var zu=Object(j["defineComponent"])({name:"table-element-operate",inheritAttrs:!1,components:{RotateHandler:du,ResizeHandler:Zi,BorderLine:$i},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(y["c"])(ue()),n=t.canvasScale,o=Object(j["computed"])((function(){return e.elementInfo.outline.width||1})),c=Object(j["computed"])((function(){return(e.elementInfo.width+o.value)*n.value})),l=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),a=Wi(c,l),r=a.textElementResizeHandlers,i=a.borderLines;return{scaleWidth:c,textElementResizeHandlers:r,borderLines:i}}});const Au=eo()(zu,[["render",Du]]);var Fu=Au,Ru={class:"common-element-operate"};function Pu(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("BorderLine"),r=Object(j["resolveComponent"])("ResizeHandler"),i=Object(j["resolveComponent"])("RotateHandler");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Ru,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{class:"operate-border-line",key:e.type,type:e.type,style:Object(j["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(j["normalizeStyle"])(t.style),onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),e.cannotRotate?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:0,class:"operate-rotate-handler",style:Object(j["normalizeStyle"])({left:e.scaleWidth/2+"px"}),onMousedown:t[0]||(t[0]=Object(j["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"]))],64)):Object(j["createCommentVNode"])("",!0)])}var Hu=Object(j["defineComponent"])({name:"common-element-operate",inheritAttrs:!1,components:{RotateHandler:du,ResizeHandler:Zi,BorderLine:$i},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(y["c"])(ue()),n=t.canvasScale,o=Object(j["computed"])((function(){return e.elementInfo.width*n.value})),c=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),l=Wi(o,c),a=l.resizeHandlers,r=l.borderLines,i=Object(j["computed"])((function(){return["video","audio"].includes(e.elementInfo.type)}));return{scaleWidth:o,resizeHandlers:a,borderLines:r,cannotRotate:i}}});const qu=eo()(Hu,[["render",Pu]]);var Uu=qu,Wu=["href"],Gu={key:1,class:"link"},Xu={class:"btns"};function Yu(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("Divider");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"link-handler",style:Object(j["normalizeStyle"])({top:e.height*e.canvasScale+10+"px"})},["web"===e.link.type?(Object(j["openBlock"])(),Object(j["createElementBlock"])("a",{key:0,class:"link",href:e.link.target,target:"_blank"},Object(j["toDisplayString"])(e.link.target),9,Wu)):(Object(j["openBlock"])(),Object(j["createElementBlock"])("a",Gu,"幻灯片页面 "+Object(j["toDisplayString"])(e.link.target),1)),Object(j["createElementVNode"])("div",Xu,[Object(j["createElementVNode"])("div",{class:"btn",onClick:t[0]||(t[0]=function(t){return e.openLinkDialog()})},"更换"),Object(j["createVNode"])(a,{type:"vertical"}),Object(j["createElementVNode"])("div",{class:"btn",onClick:t[1]||(t[1]=function(t){return e.removeLink(e.elementInfo)})},"移除")])],4)}var Zu=function(){var e=ae(),t=dt(),n=t.addHistorySnapshot,o=function(t,o){var c=/^(https?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-.,@?^=%&:\/~+#]*[\w\-@?^=%&\/~+#])?$/;if("web"===o.type&&!c.test(o.target))return De["a"].error("不是正确的网页链接地址"),!1;var l={link:o};return e.updateElement({id:t.id,props:l}),n(),!0},c=function(t){e.removeElementProps({id:t.id,propName:"link"}),n()};return{setLink:o,removeLink:c}},Ju=Object(j["defineComponent"])({name:"link-handler",props:{elementInfo:{type:Object,required:!0},link:{type:Object,required:!0},openLinkDialog:{type:Function,required:!0}},setup:function(e){var t=Object(y["c"])(ue()),n=t.canvasScale,o=Zu(),c=o.removeLink,l=Object(j["computed"])((function(){return"line"===e.elementInfo.type?0:e.elementInfo.height}));return{canvasScale:n,height:l,removeLink:c}}});n("c15d");const Ku=eo()(Ju,[["render",Yu],["__scopeId","data-v-2b77dbb0"]]);var Qu=Ku,$u=Object(j["defineComponent"])({name:"operate",components:{LinkHandler:Qu},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(y["c"])(ue()),n=t.canvasScale,o=t.toolbarState,c=Object(y["c"])(ae()),l=c.formatedAnimations,a=Object(j["computed"])((function(){var t,n=(t={},Object(pe["a"])(t,Te.IMAGE,bu),Object(pe["a"])(t,Te.TEXT,hu),Object(pe["a"])(t,Te.SHAPE,Cu),Object(pe["a"])(t,Te.LINE,_u),Object(pe["a"])(t,Te.TABLE,Fu),Object(pe["a"])(t,Te.CHART,Uu),Object(pe["a"])(t,Te.LATEX,Uu),Object(pe["a"])(t,Te.VIDEO,Uu),Object(pe["a"])(t,Te.AUDIO,Uu),t);return n[e.elementInfo.type]||null})),r=Object(j["computed"])((function(){for(var t=[],n=0;n0?le("-"):e.deltaY<0&&le("+"):e.deltaY>0?re(I.DOWN):e.deltaY<0&&re(I.UP)},de=function(){e.setGridLinesState(!a.value)},se=function(){e.setRulerState(!r.value)},fe=wo(p),be=fe.insertElementFromCreateSelection,me=function(){return[{text:"粘贴",subText:"Ctrl + V",handler:Z},{text:"全选",subText:"Ctrl + A",handler:W},{text:"网格线",subText:a.value?"√":"",handler:de},{text:"标尺",subText:r.value?"√":"",handler:se},{text:"重置当前页",handler:X},{divider:!0},{text:"幻灯片放映",subText:"F5",handler:K}]};return Object(j["provide"])(uo,u),{elementList:g,activeElementIdList:n,handleElementId:c,activeGroupElementId:o,canvasRef:C,viewportRef:p,viewportStyles:w,canvasScale:u,mouseSelection:V,mouseSelectionVisible:S,mouseSelectionQuadrant:B,creatingElement:i,alignmentLines:v,linkDialogVisible:O,spaceKeyState:m,showRuler:r,openLinkDialog:h,handleClickBlankArea:ee,removeEditorAreaFocus:te,insertElementFromCreateSelection:be,selectElement:A,rotateElement:q,scaleElement:R,dragLineElement:D,scaleMultiElement:P,handleMousewheelCanvas:ie,contextmenus:me}}});n("92637");const Is=eo()(Vs,[["render",io],["__scopeId","data-v-743d966c"]]);var Ss=Is,Bs={class:"canvas-tool"},Ls={class:"left-handler"},Ts={class:"add-element-handler"},_s={class:"right-handler"},Ms={class:"viewport-size-preset"},Ds=["onClick"],zs={class:"text"};function As(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconBack"),r=Object(j["resolveComponent"])("Tooltip"),i=Object(j["resolveComponent"])("IconNext"),u=Object(j["resolveComponent"])("IconFontSize"),d=Object(j["resolveComponent"])("IconPicture"),s=Object(j["resolveComponent"])("FileInput"),f=Object(j["resolveComponent"])("ShapePool"),b=Object(j["resolveComponent"])("IconGraphicDesign"),m=Object(j["resolveComponent"])("Popover"),p=Object(j["resolveComponent"])("LinePool"),v=Object(j["resolveComponent"])("IconConnection"),O=Object(j["resolveComponent"])("ChartPool"),h=Object(j["resolveComponent"])("IconChartProportion"),y=Object(j["resolveComponent"])("TableGenerator"),g=Object(j["resolveComponent"])("IconInsertTable"),x=Object(j["resolveComponent"])("IconFormula"),C=Object(j["resolveComponent"])("MediaInput"),k=Object(j["resolveComponent"])("IconVideoTwo"),E=Object(j["resolveComponent"])("IconMinus"),w=Object(j["resolveComponent"])("IconPlus"),N=Object(j["resolveComponent"])("IconFullScreen"),V=Object(j["resolveComponent"])("LaTeXEditor"),I=Object(j["resolveComponent"])("Modal");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Bs,[Object(j["createElementVNode"])("div",Ls,[Object(j["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"撤销"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{class:Object(j["normalizeClass"])(["handler-item",{disable:!e.canUndo}]),onClick:t[0]||(t[0]=function(t){return e.undo()})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"重做"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{class:Object(j["normalizeClass"])(["handler-item",{disable:!e.canRedo}]),onClick:t[1]||(t[1]=function(t){return e.redo()})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"])]),Object(j["createElementVNode"])("div",Ts,[Object(j["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入文字"},{default:Object(j["withCtx"])((function(){var n;return[Object(j["createVNode"])(u,{class:Object(j["normalizeClass"])(["handler-item",{active:"text"===(null===(n=e.creatingElement)||void 0===n?void 0:n.type)}]),onClick:t[2]||(t[2]=function(t){return e.drawText()})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(s,{onChange:t[3]||(t[3]=function(t){return e.insertImageElement(t)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入图片"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(m,{trigger:"click",visible:e.shapePoolVisible,"onUpdate:visible":t[5]||(t[5]=function(t){return e.shapePoolVisible=t})},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f,{onSelect:t[4]||(t[4]=function(t){return e.drawShape(t)})})]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入形状"},{default:Object(j["withCtx"])((function(){var t;return[Object(j["createVNode"])(b,{class:Object(j["normalizeClass"])(["handler-item",{active:"shape"===(null===(t=e.creatingElement)||void 0===t?void 0:t.type)}])},null,8,["class"])]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(j["createVNode"])(m,{trigger:"click",visible:e.linePoolVisible,"onUpdate:visible":t[7]||(t[7]=function(t){return e.linePoolVisible=t})},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(p,{onSelect:t[6]||(t[6]=function(t){return e.drawLine(t)})})]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入线条"},{default:Object(j["withCtx"])((function(){var t;return[Object(j["createVNode"])(v,{class:Object(j["normalizeClass"])(["handler-item",{active:"line"===(null===(t=e.creatingElement)||void 0===t?void 0:t.type)}])},null,8,["class"])]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(j["createVNode"])(m,{trigger:"click",visible:e.chartPoolVisible,"onUpdate:visible":t[9]||(t[9]=function(t){return e.chartPoolVisible=t})},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(O,{onSelect:t[8]||(t[8]=function(t){e.createChartElement(t),e.chartPoolVisible=!1})})]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入图表"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(h,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(j["createVNode"])(m,{trigger:"click",visible:e.tableGeneratorVisible,"onUpdate:visible":t[12]||(t[12]=function(t){return e.tableGeneratorVisible=t})},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(y,{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(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入表格"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(g,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(j["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入公式"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(x,{class:"handler-item",onClick:t[13]||(t[13]=function(t){return e.latexEditorVisible=!0})})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(m,{trigger:"click",visible:e.mediaInputVisible,"onUpdate:visible":t[17]||(t[17]=function(t){return e.mediaInputVisible=t})},{content:Object(j["withCtx"])((function(){return[Object(j["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(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入音视频"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(k,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"])]),Object(j["createElementVNode"])("div",_s,[Object(j["createVNode"])(E,{class:"handler-item viewport-size",onClick:t[18]||(t[18]=function(t){return e.scaleCanvas("-")})}),Object(j["createVNode"])(m,{trigger:"click",visible:e.canvasScaleVisible,"onUpdate:visible":t[19]||(t[19]=function(t){return e.canvasScaleVisible=t})},{content:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",Ms,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.canvasScalePresetList,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"preset-item",key:t,onClick:function(n){return e.applyCanvasPresetScale(t)}},Object(j["toDisplayString"])(t)+"%",9,Ds)})),128))])]})),default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("span",zs,Object(j["toDisplayString"])(e.canvasScalePercentage),1)]})),_:1},8,["visible"]),Object(j["createVNode"])(w,{class:"handler-item viewport-size",onClick:t[20]||(t[20]=function(t){return e.scaleCanvas("+")})}),Object(j["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"适应屏幕"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(N,{class:"handler-item viewport-size-adaptation",onClick:t[21]||(t[21]=function(t){return e.resetCanvas()})})]})),_:1},8,["mouseEnterDelay"])]),Object(j["createVNode"])(I,{visible:e.latexEditorVisible,"onUpdate:visible":t[24]||(t[24]=function(t){return e.latexEditorVisible=t}),footer:null,centered:"",width:880,destroyOnClose:""},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(V,{onClose:t[22]||(t[22]=function(t){return e.latexEditorVisible=!1}),onUpdate:t[23]||(t[23]=function(t){e.createLatexElement(t),e.latexEditorVisible=!1})})]})),_:1},8,["visible"])])}var Fs={class:"shape-pool"},Rs={class:"category-name"},Ps={class:"shape-list"},Hs=["onClick"],qs={overflow:"visible",width:"18",height:"18"},Us=["transform"],Ws=["fill","stroke","d"];function Gs(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Fs,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.shapeList,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"category",key:t.type},[Object(j["createElementVNode"])("div",Rs,Object(j["toDisplayString"])(t.type),1),Object(j["createElementVNode"])("div",Ps,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(t.children,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"shape-item",key:n},[Object(j["createElementVNode"])("div",{class:"shape-content",onClick:function(n){return e.selectShape(t)}},[(Object(j["openBlock"])(),Object(j["createElementBlock"])("svg",qs,[Object(j["createElementVNode"])("g",{transform:"scale(".concat(18/t.viewBox[0],", ").concat(18/t.viewBox[1],") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(j["createElementVNode"])("path",{class:Object(j["normalizeClass"])(["shape-path",{outlined:t.outlined}]),"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:t.outlined?"#999":"transparent",stroke:t.outlined?"transparent":"#999","stroke-width":"2",d:t.path},null,10,Ws)],8,Us)]))],8,Hs)])})),128))])])})),128))])}var Xs=Object(j["defineComponent"])({name:"shape-pool",emits:["select"],setup:function(e,t){var n=t.emit,o=it,c=function(e){n("select",e)};return{shapeList:o,selectShape:c}}});n("38ba8");const Ys=eo()(Xs,[["render",Gs],["__scopeId","data-v-f3479f82"]]);var Zs=Ys,Js={class:"line-pool"},Ks={class:"category-name"},Qs={class:"line-list"},$s=["onClick"],ef={overflow:"visible",width:"20",height:"20"},tf=["d","stroke-dasharray","marker-start","marker-end"];function nf(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("LinePointMarker");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Js,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.lineList,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"category",key:t.type},[Object(j["createElementVNode"])("div",Ks,Object(j["toDisplayString"])(t.type),1),Object(j["createElementVNode"])("div",Qs,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(t.children,(function(t,o){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"line-item",key:o},[Object(j["createElementVNode"])("div",{class:"line-content",onClick:function(n){return e.selectLine(t)}},[(Object(j["openBlock"])(),Object(j["createElementBlock"])("svg",ef,[Object(j["createElementVNode"])("defs",null,[t.points[0]?(Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:0,class:"line-marker",id:"preset-line-".concat(n,"-").concat(o),position:"start",type:t.points[0],color:"currentColor",baseSize:2},null,8,["id","type"])):Object(j["createCommentVNode"])("",!0),t.points[1]?(Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:1,class:"line-marker",id:"preset-line-".concat(n,"-").concat(o),position:"end",type:t.points[1],color:"currentColor",baseSize:2},null,8,["id","type"])):Object(j["createCommentVNode"])("",!0)]),Object(j["createElementVNode"])("path",{class:"line-path",d:t.path,stroke:"currentColor",fill:"none","stroke-width":"2","stroke-dasharray":"solid"===t.style?"0, 0":"4, 1","marker-start":t.points[0]?"url(#".concat("preset-line-".concat(n,"-").concat(o),"-",t.points[0],"-start)"):"","marker-end":t.points[1]?"url(#".concat("preset-line-".concat(n,"-").concat(o),"-",t.points[1],"-end)"):""},null,8,tf)]))],8,$s)])})),128))])])})),128))])}var of=[{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},{path:"M 0 0 C 20 0 0 20 20 20",style:"solid",points:["","arrow"],isCubic:!0}]}],cf=Object(j["defineComponent"])({name:"line-pool",emits:["select"],components:{LinePointMarker:fa},setup:function(e,t){var n=t.emit,o=of,c=function(e){n("select",e)};return{lineList:o,selectLine:c}}});n("fc12");const lf=eo()(cf,[["render",nf],["__scopeId","data-v-7fa1d412"]]);var af=lf,rf={class:"chart-pool"},uf=["onClick"];function df(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconChartLine"),r=Object(j["resolveComponent"])("IconChartHistogram"),i=Object(j["resolveComponent"])("IconChartPie"),u=Object(j["resolveComponent"])("IconChartHistogramOne"),d=Object(j["resolveComponent"])("IconChartLineArea"),s=Object(j["resolveComponent"])("IconChartRing"),f=Object(j["resolveComponent"])("IconChartScatter");return Object(j["openBlock"])(),Object(j["createElementBlock"])("ul",rf,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.chartList,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])("li",{class:"chart-item",key:n},[Object(j["createElementVNode"])("div",{class:"chart-content",onClick:function(n){return e.selectChart(t)}},["line"===t?(Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:0,size:"24"})):"bar"===t?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:1,size:"24"})):"pie"===t?(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:2,size:"24"})):"horizontalBar"===t?(Object(j["openBlock"])(),Object(j["createBlock"])(u,{key:3,size:"24"})):"area"===t?(Object(j["openBlock"])(),Object(j["createBlock"])(d,{key:4,size:"24"})):"ring"===t?(Object(j["openBlock"])(),Object(j["createBlock"])(s,{key:5,size:"24"})):"scatter"===t?(Object(j["openBlock"])(),Object(j["createBlock"])(f,{key:6,size:"24"})):Object(j["createCommentVNode"])("",!0)],8,uf)])})),128))])}var sf=Object(j["defineComponent"])({name:"chart-pool",emits:["select"],setup:function(e,t){var n=t.emit,o=["bar","horizontalBar","line","area","scatter","pie","ring"],c=function(e){n("select",e)};return{chartList:o,selectChart:c}}});n("d4d8");const ff=eo()(sf,[["render",df],["__scopeId","data-v-64ca421e"]]);var bf=ff,mf=function(e){return Object(j["pushScopeId"])("data-v-e325ce98"),e=e(),Object(j["popScopeId"])(),e},pf={class:"table-generator"},vf={class:"title"},Of={class:"lef"},hf=["onMouseenter"],jf={key:1,class:"custom"},yf={class:"row"},gf=mf((function(){return Object(j["createElementVNode"])("div",{class:"label",style:{flex:"1"}},"行数:",-1)})),xf={class:"row"},Cf=mf((function(){return Object(j["createElementVNode"])("div",{class:"label",style:{flex:"1"}},"列数:",-1)})),kf={class:"btns"},Ef=Object(j["createTextVNode"])("取消"),wf=Object(j["createTextVNode"])("确认");function Nf(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("InputNumber"),r=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",pf,[Object(j["createElementVNode"])("div",vf,[Object(j["createElementVNode"])("div",Of,"表格 "+Object(j["toDisplayString"])(e.endCell.length?"".concat(e.endCell[0]," x ").concat(e.endCell[1]):""),1),Object(j["createElementVNode"])("div",{class:"right",onClick:t[0]||(t[0]=function(t){return e.isCustom=!e.isCustom})},Object(j["toDisplayString"])(e.isCustom?"返回":"自定义"),1)]),e.isCustom?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",jf,[Object(j["createElementVNode"])("div",yf,[gf,Object(j["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(j["createElementVNode"])("div",xf,[Cf,Object(j["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(j["createElementVNode"])("div",kf,[Object(j["createVNode"])(r,{class:"btn",onClick:t[5]||(t[5]=function(t){return e.close()})},{default:Object(j["withCtx"])((function(){return[Ef]})),_:1}),Object(j["createVNode"])(r,{class:"btn",type:"primary",onClick:t[6]||(t[6]=function(t){return e.insertCustomTable()})},{default:Object(j["withCtx"])((function(){return[wf]})),_:1})])])):(Object(j["openBlock"])(),Object(j["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(j["createElementVNode"])("tbody",null,[(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(10,(function(t){return Object(j["createElementVNode"])("tr",{key:t},[(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(10,(function(n){return Object(j["createElementVNode"])("td",{onMouseenter:function(o){return e.endCell=[t,n]},key:n},[Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["cell",{active:e.endCell.length&&t<=e.endCell[0]&&n<=e.endCell[1]}])},null,2)],40,hf)})),64))])})),64))])],32))])}var Vf=Object(j["defineComponent"])({name:"table-generator",emits:["insert","close"],setup:function(e,t){var n=t.emit,o=Object(j["ref"])([]),c=Object(j["ref"])(3),l=Object(j["ref"])(3),a=Object(j["ref"])(!1),r=function(){if(o.value.length){var e=Object(ve["a"])(o.value,2),t=e[0],c=e[1];n("insert",{row:t,col:c})}},i=function(){return c.value<1||c.value>20||l.value<1||l.value>20?De["a"].warning("行数/列数必须在0~20之间!"):(n("insert",{row:c.value,col:l.value}),void(a.value=!1))},u=function(){n("close"),a.value=!1};return{endCell:o,customRow:c,customCol:l,handleClickTable:r,insertCustomTable:i,isCustom:a,close:u}}});n("5a68c");const If=eo()(Vf,[["render",Nf],["__scopeId","data-v-e325ce98"]]);var Sf=If,Bf={class:"media-input"},Lf={class:"tabs"},Tf=["onClick"],_f={class:"btns"},Mf=Object(j["createTextVNode"])("取消"),Df=Object(j["createTextVNode"])("确认"),zf={class:"btns"},Af=Object(j["createTextVNode"])("取消"),Ff=Object(j["createTextVNode"])("确认");function Rf(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("Input"),r=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Bf,[Object(j["createElementVNode"])("div",Lf,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.tabs,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["tab",{active:e.type===t.key}]),key:t.key,onClick:function(n){return e.type=t.key}},Object(j["toDisplayString"])(t.label),11,Tf)})),128))]),"video"===e.type?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[Object(j["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(j["createElementVNode"])("div",_f,[Object(j["createVNode"])(r,{onClick:t[1]||(t[1]=function(t){return e.close()}),style:{"margin-right":"10px"}},{default:Object(j["withCtx"])((function(){return[Mf]})),_:1}),Object(j["createVNode"])(r,{type:"primary",onClick:t[2]||(t[2]=function(t){return e.insertVideo()})},{default:Object(j["withCtx"])((function(){return[Df]})),_:1})])],64)):Object(j["createCommentVNode"])("",!0),"audio"===e.type?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:1},[Object(j["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(j["createElementVNode"])("div",zf,[Object(j["createVNode"])(r,{onClick:t[4]||(t[4]=function(t){return e.close()}),style:{"margin-right":"10px"}},{default:Object(j["withCtx"])((function(){return[Af]})),_:1}),Object(j["createVNode"])(r,{type:"primary",onClick:t[5]||(t[5]=function(t){return e.insertAudio()})},{default:Object(j["withCtx"])((function(){return[Ff]})),_:1})])],64)):Object(j["createCommentVNode"])("",!0)])}var Pf=Object(j["defineComponent"])({name:"media-input",emits:["insertVideo","insertAudio","close"],setup:function(e,t){var n=t.emit,o=Object(j["ref"])("video"),c=Object(j["ref"])("https://mazwai.com/videvo_files/video/free/2019-01/small_watermarked/181004_04_Dolphins-Whale_06_preview.webm"),l=Object(j["ref"])("https://freesound.org/data/previews/614/614107_11861866-lq.mp3"),a=[{key:"video",label:"视频"},{key:"audio",label:"音频"}],r=function(){if(!c.value)return De["a"].error("请先输入正确的视频地址");n("insertVideo",c.value)},i=function(){if(!l.value)return De["a"].error("请先输入正确的音频地址");n("insertAudio",l.value)},u=function(){return n("close")};return{type:o,videoSrc:c,audioSrc:l,tabs:a,insertVideo:r,insertAudio:i,close:u}}});n("ff9e");const Hf=eo()(Pf,[["render",Rf],["__scopeId","data-v-310c58ae"]]);var qf=Hf,Uf={class:"latex-editor"},Wf={class:"container"},Gf={class:"left"},Xf={class:"input-area"},Yf={class:"preview"},Zf={key:0,class:"placeholder"},Jf={key:1,class:"preview-content"},Kf={class:"right"},Qf={class:"tabs"},$f=["onClick"],eb={class:"content"},tb={key:0,class:"symbol"},nb={class:"symbol-tabs"},ob=["onClick"],cb={class:"symbol-pool"},lb=["onClick"],ab={key:1,class:"formula"},rb={class:"formula-title"},ib=["onClick"],ub={class:"footer"},db=Object(j["createTextVNode"])("取消"),sb=Object(j["createTextVNode"])("确定");function fb(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("TextArea"),r=Object(j["resolveComponent"])("FormulaContent"),i=Object(j["resolveComponent"])("SymbolContent"),u=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Uf,[Object(j["createElementVNode"])("div",Wf,[Object(j["createElementVNode"])("div",Gf,[Object(j["createElementVNode"])("div",Xf,[Object(j["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(j["createElementVNode"])("div",Yf,[e.latex?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Jf,[Object(j["createVNode"])(r,{width:518,height:138,latex:e.latex},null,8,["latex"])])):(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Zf,"公式预览"))])]),Object(j["createElementVNode"])("div",Kf,[Object(j["createElementVNode"])("div",Qf,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.tabs,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["tab",{active:t.value===e.toolbarState}]),key:t.value,onClick:function(n){return e.toolbarState=t.value}},Object(j["toDisplayString"])(t.label),11,$f)})),128))]),Object(j["createElementVNode"])("div",eb,["symbol"===e.toolbarState?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",tb,[Object(j["createElementVNode"])("div",nb,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.symbolList,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["symbol-tab",{active:e.selectedSymbolKey===t.type}]),key:t.type,onClick:function(n){return e.selectedSymbolKey=t.type}},Object(j["toDisplayString"])(t.label),11,ob)})),128))]),Object(j["createElementVNode"])("div",cb,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.symbolPool,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"symbol-item",key:t.latex,onClick:function(n){return e.insertSymbol(t.latex)}},[Object(j["createVNode"])(i,{latex:t.latex},null,8,["latex"])],8,lb)})),128))])])):(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",ab,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.formulaList,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"formula-item",key:t.label},[Object(j["createElementVNode"])("div",rb,Object(j["toDisplayString"])(t.label),1),Object(j["createElementVNode"])("div",{class:"formula-item-content",onClick:function(n){return e.latex=t.latex}},[Object(j["createVNode"])(r,{width:236,height:60,latex:t.latex},null,8,["latex"])],8,ib)])})),128))]))])])]),Object(j["createElementVNode"])("div",ub,[Object(j["createVNode"])(u,{class:"btn",onClick:t[1]||(t[1]=function(t){return e.close()})},{default:Object(j["withCtx"])((function(){return[db]})),_:1}),Object(j["createVNode"])(u,{class:"btn",type:"primary",onClick:t[2]||(t[2]=function(t){return e.update()})},{default:Object(j["withCtx"])((function(){return[sb]})),_:1})])])}var bb=n("e5ca");bb["a"].SUB_SUP_SCALE=.5;var mb=[{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"}],pb=[{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"}]}],vb=["width","height"],Ob=["transform"],hb=["d"];function jb(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["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(j["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(j["createElementVNode"])("path",{d:e.pathd},null,8,hb)],8,Ob)],8,vb)}var yb=Object(j["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(j["ref"])({x:0,y:0,w:0,h:0}),n=Object(j["ref"])("");Object(j["watch"])((function(){return e.latex}),(function(){var o=new bb["b"](e.latex);n.value=o.pathd({}),t.value=o.box({})}),{immediate:!0});var o=Object(j["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}}});n("edc2");const gb=eo()(yb,[["render",jb],["__scopeId","data-v-cf0ca630"]]);var xb=gb,Cb=["innerHTML"];function kb(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"symbol-content",innerHTML:e.svg},null,8,Cb)}var Eb=Object(j["defineComponent"])({name:"symbol-content",props:{latex:{type:String,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){var t=new bb["b"](e.latex);return t.svg({SCALE_X:10,SCALE_Y:10})}));return{svg:t}}});const wb=eo()(Eb,[["render",kb]]);var Nb=wb,Vb=[{label:"常用符号",value:"symbol"},{label:"预置公式",value:"formula"}],Ib=Object(j["defineComponent"])({name:"latex-editor",emits:["update","close"],components:{FormulaContent:xb,SymbolContent:Nb},props:{value:{type:String,default:""}},setup:function(e,t){var n=t.emit,o=Object(j["ref"])(""),c=Object(j["ref"])("symbol"),l=Object(j["ref"])(),a=Object(j["ref"])(pb[0].type),r=Object(j["computed"])((function(){var e=pb.find((function(e){return e.type===a.value}));return(null===e||void 0===e?void 0:e.children)||[]}));Object(j["onMounted"])((function(){e.value&&(o.value=e.value)}));var i=function(){if(o.value){var e=new bb["b"](o.value),t=e.pathd({}),c=e.box({});n("update",{latex:o.value,path:t,w:c.w+32,h:c.h+32})}},u=function(){return n("close")},d=function(e){l.value&&(l.value.focus(),document.execCommand("insertText",!1,e))};return{tabs:Vb,latex:o,toolbarState:c,selectedSymbolKey:a,formulaList:mb,symbolList:pb,symbolPool:r,textAreaRef:l,update:i,close:u,insertSymbol:d}}});n("5f57");const Sb=eo()(Ib,[["render",fb],["__scopeId","data-v-0c89cf75"]]);var Bb=Sb,Lb=Object(j["defineComponent"])({name:"canvas-tool",components:{ShapePool:Zs,LinePool:af,ChartPool:bf,TableGenerator:Sf,MediaInput:qf,LaTeXEditor:Bb},setup:function(){var e=ue(),t=Object(y["c"])(e),n=t.creatingElement,o=Object(y["c"])(Ce()),c=o.canUndo,l=o.canRedo,a=dt(),r=a.redo,i=a.undo,u=wt(),d=u.scaleCanvas,s=u.setCanvasScalePercentage,f=u.resetCanvas,b=u.canvasScalePercentage,m=[200,150,100,80,50],p=Object(j["ref"])(!1),v=function(e){s(e),p.value=!1},O=st(),h=O.createImageElement,g=O.createChartElement,x=O.createTableElement,C=O.createLatexElement,k=O.createVideoElement,E=O.createAudioElement,w=function(e){var t=e[0];t&<(t).then((function(e){return h(e)}))},N=Object(j["ref"])(!1),V=Object(j["ref"])(!1),I=Object(j["ref"])(!1),S=Object(j["ref"])(!1),B=Object(j["ref"])(!1),L=Object(j["ref"])(!1),T=function(){e.setCreatingElement({type:"text"})},_=function(t){e.setCreatingElement({type:"shape",data:t}),N.value=!1},M=function(t){e.setCreatingElement({type:"line",data:t}),V.value=!1};return{scaleCanvas:d,resetCanvas:f,canvasScalePercentage:b,canvasScaleVisible:p,canvasScalePresetList:m,applyCanvasPresetScale:v,canUndo:c,canRedo:l,redo:r,undo:i,insertImageElement:w,shapePoolVisible:N,linePoolVisible:V,chartPoolVisible:I,tableGeneratorVisible:S,mediaInputVisible:B,latexEditorVisible:L,creatingElement:n,drawText:T,drawShape:_,drawLine:M,createChartElement:g,createTableElement:x,createLatexElement:C,createVideoElement:k,createAudioElement:E}}});n("fcf0");const Tb=eo()(Lb,[["render",As],["__scopeId","data-v-e9ddaac8"]]);var _b=Tb,Mb={class:"add-slide"},Db=Object(j["createTextVNode"])("添加幻灯片"),zb={class:"select-btn"},Ab=["onMousedown"];function Fb(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconPlus"),r=Object(j["resolveComponent"])("LayoutPool"),i=Object(j["resolveComponent"])("IconDown"),u=Object(j["resolveComponent"])("Popover"),d=Object(j["resolveComponent"])("ThumbnailSlide"),s=Object(j["resolveComponent"])("Draggable"),f=Object(j["resolveDirective"])("contextmenu"),b=Object(j["resolveDirective"])("click-outside");return Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"thumbnails",onMousedown:t[3]||(t[3]=function(){return e.setThumbnailsFocus(!0)})},[Object(j["createElementVNode"])("div",Mb,[Object(j["createElementVNode"])("div",{class:"btn",onClick:t[0]||(t[0]=function(t){return e.createSlide()})},[Object(j["createVNode"])(a,{class:"icon"}),Db]),Object(j["createVNode"])(u,{trigger:"click",placement:"bottomLeft",visible:e.presetLayoutPopoverVisible,"onUpdate:visible":t[2]||(t[2]=function(t){return e.presetLayoutPopoverVisible=t})},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{onSelect:t[1]||(t[1]=function(t){e.createSlideByTemplate(t),e.presetLayoutPopoverVisible=!1})})]})),default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",zb,[Object(j["createVNode"])(i)])]})),_:1},8,["visible"])]),Object(j["createVNode"])(s,{class:"thumbnail-list",modelValue:e.slides,animation:300,scroll:!0,scrollSensitivity:50,setData:null,onEnd:e.handleDragEnd,itemKey:"id"},{item:Object(j["withCtx"])((function(t){var n=t.element,o=t.index;return[Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["thumbnail-item",{active:e.slideIndex===o,selected:e.selectedSlidesIndex.includes(o)}]),onMousedown:function(t){return e.handleClickSlideThumbnail(t,o)}},[Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["label",{"offset-left":o>=99}])},Object(j["toDisplayString"])(e.fillDigit(o+1,2)),3),Object(j["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(j["onMounted"])(c),Object(j["onUnmounted"])((function(){n.value&&clearTimeout(n.value)})),{slidesLoadLimit:o}},Pb=n("b76a"),Hb=n.n(Pb),qb={class:"layout-pool"},Ub=["onClick"];function Wb(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ThumbnailSlide");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",qb,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.layouts,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"layout-item",key:t.id,onClick:function(n){return e.selectSlideTemplate(t)}},[Object(j["createVNode"])(a,{class:"thumbnail",slide:t,size:180},null,8,["slide"])],8,Ub)})),128))])}var Gb=Object(j["defineComponent"])({name:"layout-pool",emits:["select"],components:{ThumbnailSlide:ks},setup:function(e,t){var n=t.emit,o=Object(y["c"])(ae()),c=o.layouts,l=function(e){n("select",e)};return{layouts:c,selectSlideTemplate:l}}});n("e7b8");const Xb=eo()(Gb,[["render",Wb],["__scopeId","data-v-741b366e"]]);var Yb=Xb,Zb=Object(j["defineComponent"])({name:"thumbnails",components:{Draggable:Hb.a,ThumbnailSlide:ks,LayoutPool:Yb},setup:function(){var e=ue(),t=ae(),n=ke(),o=Object(y["c"])(e),c=o.selectedSlidesIndex,l=o.thumbnailsFocus,a=Object(y["c"])(t),r=a.slides,i=a.slideIndex,u=Object(y["c"])(n),d=u.ctrlKeyState,s=u.shiftKeyState,f=Rb(),b=f.slidesLoadLimit,m=Object(j["computed"])((function(){return[].concat(Object($["a"])(c.value),[i.value])})),p=Object(j["ref"])(!1),v=mt(),O=v.copySlide,h=v.pasteSlide,g=v.createSlide,x=v.createSlideByTemplate,C=v.copyAndPasteSlide,k=v.deleteSlide,E=v.cutSlide,w=v.selectAllSlide,N=function(n){e.setActiveElementIdList([]),i.value!==n&&t.updateSlideIndex(n)},V=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 c=m.value.filter((function(e){return e!==n}));e.updateSelectedSlidesIndex(c),N(m.value[0])}else if(m.value.includes(n)){var l=m.value.filter((function(e){return e!==n}));e.updateSelectedSlidesIndex(l)}else{var a=[].concat(Object($["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($["a"])(m.value)),u=n;n1&&void 0!==arguments[1]?arguments[1]:0,l=o.value,a=s(),r=a.originClipRange,i=a.originWidth,f=a.originHeight,b=a.originLeft,m=a.originTop;if(n){var p,v=f/i,O=0,h=100;if(v>n){var j=(1-n/v)/2*100;p=[[O,j],[h,h-j]]}else{var y=(1-v/n)/2*100;p=[[y,O],[h-y,h]]}t.updateElement({id:c.value,props:{clip:Object(L["a"])(Object(L["a"])({},l.clip),{},{shape:e,range:p}),left:b+i*(p[0][0]/100),top:m+f*(p[0][1]/100),width:i*(p[1][0]-p[0][0])/100,height:f*(p[1][1]-p[0][1])/100}})}else t.updateElement({id:c.value,props:{clip:Object(L["a"])(Object(L["a"])({},l.clip),{},{shape:e,range:r})}});d(),u()},b=function(e){var n=e[0];n&&(lt(n).then((function(e){var n={src:e};t.updateElement({id:c.value,props:n})})),u())},m=function(){var e=o.value;if(e.clip){var n=s(),l=n.originWidth,a=n.originHeight,r=n.originLeft,i=n.originTop;t.updateElement({id:c.value,props:{left:r,top:i,width:l,height:a}})}t.removeElementProps({id:c.value,propName:["clip","outline","flip","shadow","filters"]}),u()},p=function(){var e=o.value,n=Object(L["a"])(Object(L["a"])({},a.value.background),{},{type:"image",image:e.src,imageSize:"cover"});t.updateSlide({background:n}),u()};return{clipPanelVisible:r,shapeClipPathOptions:tv,ratioClipOptions:nv,handleElement:o,clipImage:d,presetImageClip:f,replaceImage:b,resetImage:m,setBackgroundImage:p}}});n("ed98");const cv=eo()(ov,[["render",Mp],["__scopeId","data-v-54b23b9e"]]);var lv=cv,av=function(e){return Object(j["pushScopeId"])("data-v-42b07d61"),e=e(),Object(j["popScopeId"])(),e},rv={class:"shape-style-panel"},iv={class:"row"},uv=Object(j["createTextVNode"])("纯色填充"),dv=Object(j["createTextVNode"])("渐变填充"),sv=av((function(){return Object(j["createElementVNode"])("div",{style:{flex:"1"}},null,-1)})),fv=Object(j["createTextVNode"])("线性渐变"),bv=Object(j["createTextVNode"])("径向渐变"),mv={class:"row"},pv=av((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"起点颜色:",-1)})),vv={class:"row"},Ov=av((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"终点颜色:",-1)})),hv={key:0,class:"row"},jv=av((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"渐变角度:",-1)})),yv=Object(j["createTextVNode"])("+"),gv=Object(j["createTextVNode"])("-");function xv(e,t,n,o,c,l){var a,r,i=Object(j["resolveComponent"])("SelectOption"),u=Object(j["resolveComponent"])("Select"),d=Object(j["resolveComponent"])("ColorPicker"),s=Object(j["resolveComponent"])("ColorButton"),f=Object(j["resolveComponent"])("Popover"),b=Object(j["resolveComponent"])("Slider"),m=Object(j["resolveComponent"])("ElementFlip"),p=Object(j["resolveComponent"])("Divider"),v=Object(j["resolveComponent"])("IconFontSize"),O=Object(j["resolveComponent"])("SelectOptGroup"),h=Object(j["resolveComponent"])("IconAddText"),y=Object(j["resolveComponent"])("InputGroup"),g=Object(j["resolveComponent"])("IconText"),x=Object(j["resolveComponent"])("Button"),C=Object(j["resolveComponent"])("Tooltip"),k=Object(j["resolveComponent"])("IconHighLight"),E=Object(j["resolveComponent"])("ButtonGroup"),w=Object(j["resolveComponent"])("IconTextBold"),N=Object(j["resolveComponent"])("CheckboxButton"),V=Object(j["resolveComponent"])("IconTextItalic"),I=Object(j["resolveComponent"])("IconTextUnderline"),S=Object(j["resolveComponent"])("IconFormat"),B=Object(j["resolveComponent"])("CheckboxButtonGroup"),L=Object(j["resolveComponent"])("IconAlignTextLeft"),T=Object(j["resolveComponent"])("RadioButton"),_=Object(j["resolveComponent"])("IconAlignTextCenter"),M=Object(j["resolveComponent"])("IconAlignTextRight"),D=Object(j["resolveComponent"])("RadioGroup"),z=Object(j["resolveComponent"])("IconAlignTextTopOne"),A=Object(j["resolveComponent"])("IconAlignTextMiddleOne"),F=Object(j["resolveComponent"])("IconAlignTextBottomOne"),R=Object(j["resolveComponent"])("ElementOutline"),P=Object(j["resolveComponent"])("ElementShadow"),H=Object(j["resolveComponent"])("ElementOpacity");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",rv,[Object(j["createElementVNode"])("div",iv,[Object(j["createVNode"])(u,{style:{flex:"10"},value:e.fillType,onChange:t[0]||(t[0]=function(t){return e.updateFillType(t)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{value:"fill"},{default:Object(j["withCtx"])((function(){return[uv]})),_:1}),Object(j["createVNode"])(i,{value:"gradient"},{default:Object(j["withCtx"])((function(){return[dv]})),_:1})]})),_:1},8,["value"]),sv,"fill"===e.fillType?(Object(j["openBlock"])(),Object(j["createBlock"])(f,{key:0,trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d,{modelValue:e.fill,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.updateFill(t)})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(s,{color:e.fill,style:{flex:"10"}},null,8,["color"])]})),_:1})):(Object(j["openBlock"])(),Object(j["createBlock"])(u,{key:1,style:{flex:"10"},value:e.gradient.type,onChange:t[2]||(t[2]=function(t){return e.updateGradient({type:t})})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{value:"linear"},{default:Object(j["withCtx"])((function(){return[fv]})),_:1}),Object(j["createVNode"])(i,{value:"radial"},{default:Object(j["withCtx"])((function(){return[bv]})),_:1})]})),_:1},8,["value"]))]),"gradient"===e.fillType?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[Object(j["createElementVNode"])("div",mv,[pv,Object(j["createVNode"])(f,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d,{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(j["withCtx"])((function(){return[Object(j["createVNode"])(s,{color:e.gradient.color[0],style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createElementVNode"])("div",vv,[Ov,Object(j["createVNode"])(f,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d,{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(j["withCtx"])((function(){return[Object(j["createVNode"])(s,{color:e.gradient.color[1],style:{flex:"3"}},null,8,["color"])]})),_:1})]),"linear"===e.gradient.type?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",hv,[jv,Object(j["createVNode"])(b,{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(j["createCommentVNode"])("",!0)],64)):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])(m),Object(j["createVNode"])(p),null!==(a=e.handleElement)&&void 0!==a&&null!==(r=a.text)&&void 0!==r&&r.content?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:1},[Object(j["createVNode"])(y,{compact:"",class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,{style:{flex:"3"},value:e.richTextAttrs.fontname,onChange:t[6]||(t[6]=function(t){return e.emitRichTextCommand("fontname",t)})},{suffixIcon:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(v)]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(O,{label:"系统字体"},{default:Object(j["withCtx"])((function(){return[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.availableFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:e.value,value:e.value},{default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("span",{style:Object(j["normalizeStyle"])({fontFamily:e.value})},Object(j["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(j["createVNode"])(O,{label:"在线字体"},{default:Object(j["withCtx"])((function(){return[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.webFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:e.value,value:e.value},{default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("span",null,Object(j["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"]),Object(j["createVNode"])(u,{style:{flex:"2"},value:e.richTextAttrs.fontsize,onChange:t[7]||(t[7]=function(t){return e.emitRichTextCommand("fontsize",t)})},{suffixIcon:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(h)]})),default:Object(j["withCtx"])((function(){return[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.fontSizeOptions,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:e,value:e},{default:Object(j["withCtx"])((function(){return[Object(j["createTextVNode"])(Object(j["toDisplayString"])(e),1)]})),_:2},1032,["value"])})),128))]})),_:1},8,["value"])]})),_:1}),Object(j["createVNode"])(E,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d,{modelValue:e.richTextAttrs.color,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.emitRichTextCommand("color",t)})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(x,{class:"text-color-btn",style:{flex:"3"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(g),Object(j["createElementVNode"])("div",{class:"text-color-block",style:Object(j["normalizeStyle"])({backgroundColor:e.richTextAttrs.color})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(f,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d,{modelValue:e.richTextAttrs.backcolor,"onUpdate:modelValue":t[9]||(t[9]=function(t){return e.emitRichTextCommand("backcolor",t)})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字高亮"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(x,{class:"text-color-btn",style:{flex:"3"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(k),Object(j["createElementVNode"])("div",{class:"text-color-block",style:Object(j["normalizeStyle"])({backgroundColor:e.richTextAttrs.backcolor})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"增大字号"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(x,{class:"font-size-btn",style:{flex:"2"},onClick:t[10]||(t[10]=function(t){return e.emitRichTextCommand("fontsize-add")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(v),yv]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"减小字号"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(x,{class:"font-size-btn",style:{flex:"2"},onClick:t[11]||(t[11]=function(t){return e.emitRichTextCommand("fontsize-reduce")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(v),gv]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(B,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"加粗"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(N,{style:{flex:"1"},checked:e.richTextAttrs.bold,onClick:t[12]||(t[12]=function(t){return e.emitRichTextCommand("bold")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(w)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"斜体"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(N,{style:{flex:"1"},checked:e.richTextAttrs.em,onClick:t[13]||(t[13]=function(t){return e.emitRichTextCommand("em")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(V)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下划线"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(N,{style:{flex:"1"},checked:e.richTextAttrs.underline,onClick:t[14]||(t[14]=function(t){return e.emitRichTextCommand("underline")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(I)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"清除格式"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(N,{style:{flex:"1"},onClick:t[15]||(t[15]=function(t){return e.emitRichTextCommand("clear")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(S)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(D,{class:"row","button-style":"solid",value:e.richTextAttrs.align,onChange:t[16]||(t[16]=function(t){return e.emitRichTextCommand("align",t.target.value)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(T,{value:"left",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(L)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(T,{value:"center",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(_)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(T,{value:"right",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(M)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"]),Object(j["createVNode"])(D,{class:"row","button-style":"solid",value:e.textAlign,onChange:t[17]||(t[17]=function(t){return e.updateTextAlign(t.target.value)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"顶对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(T,{value:"top",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(z)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(T,{value:"middle",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(A)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(C,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"底对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(T,{value:"bottom",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(F)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"]),Object(j["createVNode"])(p)],64)):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])(R),Object(j["createVNode"])(p),Object(j["createVNode"])(P),Object(j["createVNode"])(p),Object(j["createVNode"])(H)])}var Cv=B,kv=Object(j["defineComponent"])({name:"shape-style-panel",components:{ElementOpacity:Tm,ElementOutline:tp,ElementShadow:hp,ElementFlip:Hp,ColorButton:Qm},setup:function(){var e=ue(),t=ae(),n=Object(y["c"])(e),o=n.handleElement,c=n.handleElementId,l=n.richTextAttrs,a=n.availableFonts,r=Object(j["ref"])("#000"),i=Object(j["ref"])({type:"linear",rotate:0,color:["#fff","#fff"]}),u=Object(j["ref"])("fill"),d=Object(j["ref"])("middle");Object(j["watch"])(o,(function(){var e,t;o.value&&"shape"===o.value.type&&(r.value=o.value.fill||"#fff",i.value=o.value.gradient||{type:"linear",rotate:0,color:[r.value,"#fff"]},u.value=o.value.gradient?"gradient":"fill",d.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 s=dt(),f=s.addHistorySnapshot,b=function(e){t.updateElement({id:c.value,props:e}),f()},m=function(e){"fill"===e?(t.removeElementProps({id:c.value,propName:"gradient"}),f()):b({gradient:i.value})},p=function(e){if(i.value){var t=Object(L["a"])(Object(L["a"])({},i.value),e);b({gradient:t})}},v=function(e){b({fill:e})},O=function(e){var t=o.value,n={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"},c=t.text||n;b({text:Object(L["a"])(Object(L["a"])({},c),{},{align:e})})},h=["12px","14px","16px","18px","20px","22px","24px","28px","32px","36px","40px","44px","48px","54px","60px","66px","72px","76px","80px","88px","96px","104px","112px","120px"],g=function(e,t){Cl.emit(zc.RICH_TEXT_COMMAND,{action:{command:e,value:t}})};return{fill:r,gradient:i,fillType:u,textAlign:d,richTextAttrs:l,availableFonts:a,fontSizeOptions:h,webFonts:Cv,handleElement:o,emitRichTextCommand:g,updateFillType:m,updateFill:v,updateGradient:p,updateTextAlign:O}}});n("ee0f");const Ev=eo()(kv,[["render",xv],["__scopeId","data-v-42b07d61"]]);var wv=Ev,Nv=function(e){return Object(j["pushScopeId"])("data-v-ad75cd30"),e=e(),Object(j["popScopeId"])(),e},Vv={class:"line-style-panel"},Iv={class:"row"},Sv=Nv((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"线条样式:",-1)})),Bv=Object(j["createTextVNode"])("实线"),Lv=Object(j["createTextVNode"])("虚线"),Tv={class:"row"},_v=Nv((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"线条颜色:",-1)})),Mv={class:"row"},Dv=Nv((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"线条宽度:",-1)})),zv={class:"row"},Av=Nv((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"起点样式:",-1)})),Fv=Object(j["createTextVNode"])("无"),Rv=Object(j["createTextVNode"])("箭头"),Pv=Object(j["createTextVNode"])("圆点"),Hv={class:"row"},qv=Nv((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"终点样式:",-1)})),Uv=Object(j["createTextVNode"])("无"),Wv=Object(j["createTextVNode"])("箭头"),Gv=Object(j["createTextVNode"])("圆点");function Xv(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("SelectOption"),r=Object(j["resolveComponent"])("Select"),i=Object(j["resolveComponent"])("ColorPicker"),u=Object(j["resolveComponent"])("ColorButton"),d=Object(j["resolveComponent"])("Popover"),s=Object(j["resolveComponent"])("InputNumber"),f=Object(j["resolveComponent"])("Divider"),b=Object(j["resolveComponent"])("ElementShadow");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Vv,[Object(j["createElementVNode"])("div",Iv,[Sv,Object(j["createVNode"])(r,{style:{flex:"3"},value:e.handleElement.style,onChange:t[0]||(t[0]=function(t){return e.updateLine({style:t})})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{value:"solid"},{default:Object(j["withCtx"])((function(){return[Bv]})),_:1}),Object(j["createVNode"])(a,{value:"dashed"},{default:Object(j["withCtx"])((function(){return[Lv]})),_:1})]})),_:1},8,["value"])]),Object(j["createElementVNode"])("div",Tv,[_v,Object(j["createVNode"])(d,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{modelValue:e.handleElement.color,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.updateLine({color:t})})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,{color:e.handleElement.color,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createElementVNode"])("div",Mv,[Dv,Object(j["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(j["createElementVNode"])("div",zv,[Av,Object(j["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(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{value:""},{default:Object(j["withCtx"])((function(){return[Fv]})),_:1}),Object(j["createVNode"])(a,{value:"arrow"},{default:Object(j["withCtx"])((function(){return[Rv]})),_:1}),Object(j["createVNode"])(a,{value:"dot"},{default:Object(j["withCtx"])((function(){return[Pv]})),_:1})]})),_:1},8,["value"])]),Object(j["createElementVNode"])("div",Hv,[qv,Object(j["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(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{value:""},{default:Object(j["withCtx"])((function(){return[Uv]})),_:1}),Object(j["createVNode"])(a,{value:"arrow"},{default:Object(j["withCtx"])((function(){return[Wv]})),_:1}),Object(j["createVNode"])(a,{value:"dot"},{default:Object(j["withCtx"])((function(){return[Gv]})),_:1})]})),_:1},8,["value"])]),Object(j["createVNode"])(f),Object(j["createVNode"])(b)])}var Yv=Object(j["defineComponent"])({name:"line-style-panel",components:{ElementShadow:hp,ColorButton:Qm},setup:function(){var e=ae(),t=Object(y["c"])(ue()),n=t.handleElement,o=dt(),c=o.addHistorySnapshot,l=function(t){n.value&&(e.updateElement({id:n.value.id,props:t}),c())};return{handleElement:n,updateLine:l}}});n("7686");const Zv=eo()(Yv,[["render",Xv],["__scopeId","data-v-ad75cd30"]]);var Jv=Zv,Kv=function(e){return Object(j["pushScopeId"])("data-v-1a47c852"),e=e(),Object(j["popScopeId"])(),e},Qv={class:"chart-style-panel"},$v=Object(j["createTextVNode"])(" 编辑图表数据 "),eO={class:"row"},tO=Object(j["createTextVNode"])("面积图样式"),nO=Object(j["createTextVNode"])("散点图样式"),oO={class:"row"},cO=Object(j["createTextVNode"])("使用平滑曲线"),lO={key:1,class:"row"},aO=Object(j["createTextVNode"])("条形图样式"),rO=Object(j["createTextVNode"])("堆叠样式"),iO={key:2,class:"row"},uO=Object(j["createTextVNode"])("环形图样式"),dO={class:"row"},sO=Kv((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"图例:",-1)})),fO=Object(j["createTextVNode"])("不显示"),bO=Object(j["createTextVNode"])("显示在上方"),mO=Object(j["createTextVNode"])("显示在下方"),pO={class:"row"},vO=Kv((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"背景填充:",-1)})),OO={class:"row"},hO=Kv((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"网格颜色:",-1)})),jO={style:{flex:"2"}},yO={class:"color-btn-wrap",style:{flex:"3"}},gO=["onClick"],xO={class:"preset-themes"},CO=["onClick","onMouseenter"],kO=Object(j["createTextVNode"])("推荐主题"),EO=Object(j["createTextVNode"])(" 添加主题色 ");function wO(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconEdit"),r=Object(j["resolveComponent"])("Button"),i=Object(j["resolveComponent"])("Divider"),u=Object(j["resolveComponent"])("Checkbox"),d=Object(j["resolveComponent"])("SelectOption"),s=Object(j["resolveComponent"])("Select"),f=Object(j["resolveComponent"])("ColorPicker"),b=Object(j["resolveComponent"])("ColorButton"),m=Object(j["resolveComponent"])("Popover"),p=Object(j["resolveComponent"])("IconCloseSmall"),v=Object(j["resolveComponent"])("Tooltip"),O=Object(j["resolveComponent"])("IconPlus"),h=Object(j["resolveComponent"])("ButtonGroup"),y=Object(j["resolveComponent"])("ElementOutline"),g=Object(j["resolveComponent"])("ChartDataEditor"),x=Object(j["resolveComponent"])("Modal");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Qv,[Object(j["createVNode"])(r,{class:"full-width-btn",onClick:t[0]||(t[0]=function(t){return e.chartDataEditorVisible=!0})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{class:"btn-icon"}),$v]})),_:1}),Object(j["createVNode"])(i),"line"===e.handleElement.chartType?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[Object(j["createElementVNode"])("div",eO,[Object(j["createVNode"])(u,{onChange:t[1]||(t[1]=function(t){return e.updateOptions({showArea:t.target.checked})}),checked:e.showArea,style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[tO]})),_:1},8,["checked"]),Object(j["createVNode"])(u,{onChange:t[2]||(t[2]=function(t){return e.updateOptions({showLine:!t.target.checked})}),checked:!e.showLine,style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[nO]})),_:1},8,["checked"])]),Object(j["createElementVNode"])("div",oO,[Object(j["createVNode"])(u,{onChange:t[3]||(t[3]=function(t){return e.updateOptions({lineSmooth:t.target.checked})}),checked:e.lineSmooth},{default:Object(j["withCtx"])((function(){return[cO]})),_:1},8,["checked"])])],64)):Object(j["createCommentVNode"])("",!0),"bar"===e.handleElement.chartType?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",lO,[Object(j["createVNode"])(u,{onChange:t[4]||(t[4]=function(t){return e.updateOptions({horizontalBars:t.target.checked})}),checked:e.horizontalBars},{default:Object(j["withCtx"])((function(){return[aO]})),_:1},8,["checked"]),Object(j["createVNode"])(u,{onChange:t[5]||(t[5]=function(t){return e.updateOptions({stackBars:t.target.checked})}),checked:e.stackBars},{default:Object(j["withCtx"])((function(){return[rO]})),_:1},8,["checked"])])):Object(j["createCommentVNode"])("",!0),"pie"===e.handleElement.chartType?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",iO,[Object(j["createVNode"])(u,{onChange:t[6]||(t[6]=function(t){return e.updateOptions({donut:t.target.checked})}),checked:e.donut},{default:Object(j["withCtx"])((function(){return[uO]})),_:1},8,["checked"])])):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])(i),Object(j["createElementVNode"])("div",dO,[sO,Object(j["createVNode"])(s,{style:{flex:"3"},value:e.legend,onChange:t[7]||(t[7]=function(t){return e.updateLegend(t)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d,{value:""},{default:Object(j["withCtx"])((function(){return[fO]})),_:1}),Object(j["createVNode"])(d,{value:"top"},{default:Object(j["withCtx"])((function(){return[bO]})),_:1}),Object(j["createVNode"])(d,{value:"bottom"},{default:Object(j["withCtx"])((function(){return[mO]})),_:1})]})),_:1},8,["value"])]),Object(j["createVNode"])(i),Object(j["createElementVNode"])("div",pO,[vO,Object(j["createVNode"])(m,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f,{modelValue:e.fill,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.updateFill(t)})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b,{color:e.fill,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createElementVNode"])("div",OO,[hO,Object(j["createVNode"])(m,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f,{modelValue:e.gridColor,"onUpdate:modelValue":t[9]||(t[9]=function(t){return e.updateGridColor(t)})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b,{color:e.gridColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])(i),(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.themeColor,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"row",key:n},[Object(j["createElementVNode"])("div",jO,Object(j["toDisplayString"])(0===n?"主题配色:":""),1),Object(j["createVNode"])(m,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f,{modelValue:t,"onUpdate:modelValue":function(t){return e.updateTheme(t,n)}},null,8,["modelValue","onUpdate:modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",yO,[Object(j["createVNode"])(b,{color:t,style:{width:"100%"}},null,8,["color"]),Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除"},{default:Object(j["withCtx"])((function(){return[0!==n?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{key:0,class:"delete-color-btn",onClick:Object(j["withModifiers"])((function(t){return e.deleteThemeColor(n)}),["stop"])},[Object(j["createVNode"])(p)],8,gO)):Object(j["createCommentVNode"])("",!0)]})),_:2},1032,["mouseEnterDelay"])])]})),_:2},1024)])})),128)),Object(j["createVNode"])(h,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(m,{trigger:"click",visible:e.presetThemesVisible,"onUpdate:visible":t[11]||(t[11]=function(t){return e.presetThemesVisible=t})},{content:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",xO,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.presetChartThemes,(function(n,o){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"preset-theme",key:o},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(n,(function(c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["preset-theme-color",{select:e.presetThemeColorHoverIndex[0]===o&&l<=e.presetThemeColorHoverIndex[1]}]),key:c,style:Object(j["normalizeStyle"])({backgroundColor:c}),onClick:function(t){return e.applyPresetTheme(n,l)},onMouseenter:function(t){return e.presetThemeColorHoverIndex=[o,l]},onMouseleave:t[10]||(t[10]=function(t){return e.presetThemeColorHoverIndex=[-1,-1]})},null,46,CO)})),128))])})),128))])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{class:"no-padding",style:{flex:"2"}},{default:Object(j["withCtx"])((function(){return[kO]})),_:1})]})),_:1},8,["visible"]),Object(j["createVNode"])(r,{class:"no-padding",disabled:e.themeColor.length>=10,style:{flex:"3"},onClick:t[12]||(t[12]=function(t){return e.addThemeColor()})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(O,{class:"btn-icon"}),EO]})),_:1},8,["disabled"])]})),_:1}),Object(j["createVNode"])(i),Object(j["createVNode"])(y),Object(j["createVNode"])(x,{visible:e.chartDataEditorVisible,"onUpdate:visible":t[15]||(t[15]=function(t){return e.chartDataEditorVisible=t}),footer:null,centered:"",closable:!1,width:648,destroyOnClose:""},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(g,{data:e.handleElement.data,onClose:t[13]||(t[13]=function(t){return e.chartDataEditorVisible=!1}),onSave:t[14]||(t[14]=function(t){return e.updateData(t)})},null,8,["data"])]})),_:1},8,["visible"])])}var NO={class:"chart-data-editor"},VO={class:"editor-content"},IO={class:"range-box"},SO=["id","onFocus","onPaste"],BO={class:"btns"},LO={class:"left"},TO=Object(j["createTextVNode"])("清空"),_O={class:"right"},MO=Object(j["createTextVNode"])("取消"),DO=Object(j["createTextVNode"])("确认");function zO(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",NO,[Object(j["createElementVNode"])("div",VO,[Object(j["createElementVNode"])("div",IO,[Object(j["createElementVNode"])("div",{class:"temp-range",style:Object(j["normalizeStyle"])({width:e.tempRangeSize.width+"px",height:e.tempRangeSize.height+"px"})},null,4),(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.rangeLines,(function(e){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["range-line",e.type]),key:e.type,style:Object(j["normalizeStyle"])(e.style)},null,6)})),128)),Object(j["createElementVNode"])("div",{class:"resizable",style:Object(j["normalizeStyle"])(e.resizablePointStyle),onMousedown:t[0]||(t[0]=Object(j["withModifiers"])((function(t){return e.changeSelectRange(t)}),["stop"]))},null,36)]),Object(j["createElementVNode"])("table",null,[Object(j["createElementVNode"])("tbody",null,[(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(31,(function(t){return Object(j["createElementVNode"])("tr",{key:t},[(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(7,(function(n){return Object(j["createElementVNode"])("td",{key:n,class:Object(j["normalizeClass"])({head:1===n&&t<=e.selectedRange[1]||1===t&&n<=e.selectedRange[0]})},[Object(j["createElementVNode"])("input",{class:Object(j["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,SO)],2)})),64))])})),64))])])]),Object(j["createElementVNode"])("div",BO,[Object(j["createElementVNode"])("div",LO,[Object(j["createVNode"])(a,{class:"btn",onClick:t[1]||(t[1]=function(t){return e.clear()})},{default:Object(j["withCtx"])((function(){return[TO]})),_:1})]),Object(j["createElementVNode"])("div",_O,[Object(j["createVNode"])(a,{class:"btn",onClick:t[2]||(t[2]=function(t){return e.closeEditor()})},{default:Object(j["withCtx"])((function(){return[MO]})),_:1}),Object(j["createVNode"])(a,{type:"primary",class:"btn",onClick:t[3]||(t[3]=function(t){return e.getTableData()}),style:{"margin-left":"10px"}},{default:Object(j["withCtx"])((function(){return[DO]})),_:1})])])])}var AO=100,FO=32,RO=Object(j["defineComponent"])({name:"chart-data-editor",emits:["save","close"],props:{data:{type:Object,required:!0}},setup:function(e,t){var n=t.emit,o=Object(j["ref"])([0,0]),c=Object(j["ref"])({width:0,height:0}),l=Object(j["ref"])(null),a=Object(j["computed"])((function(){var e=o.value[0]*AO,t=o.value[1]*FO;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(j["computed"])((function(){var e=o.value[0]*AO,t=o.value[1]*FO;return{left:e+"px",top:t+"px"}})),i=function(){var t=[],n=e.data,c=n.labels,l=n.legends,a=n.series,r=c.length,i=a.length;t.push([""].concat(Object($["a"])(l)));for(var u=0;u.5*AO&&(i+=AO-i%AO),u%FO>.5*FO&&(u+=FO-u%FO);var d=Math.round(u/FO),s=Math.round(i/AO);d<3&&(d=3),s<2&&(s=2),o.value=[s,d],c.value={width:0,height:0}}}};return{tempRangeSize:c,rangeLines:a,resizablePointStyle:r,selectedRange:o,focusCell:l,changeSelectRange:p,getTableData:s,closeEditor:m,clear:f,handlePaste:b}}});n("6856");const PO=eo()(RO,[["render",zO],["__scopeId","data-v-9a62f784"]]);var HO=PO,qO=[["#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"]],UO=Object(j["defineComponent"])({name:"chart-style-panel",components:{ElementOutline:tp,ChartDataEditor:HO,ColorButton:Qm},setup:function(){var e=ue(),t=ae(),n=Object(y["c"])(e),o=n.handleElement,c=n.handleElementId,l=Object(y["c"])(t),a=l.theme,r=Object(j["ref"])(!1),i=Object(j["ref"])(!1),u=Object(j["ref"])([-1,-1]),d=dt(),s=d.addHistorySnapshot,f=Object(j["ref"])("#000"),b=Object(j["ref"])([]),m=Object(j["ref"])(""),p=Object(j["ref"])(""),v=Object(j["ref"])(!0),O=Object(j["ref"])(!0),h=Object(j["ref"])(!1),g=Object(j["ref"])(!1),x=Object(j["ref"])(!1),C=Object(j["ref"])(!1);Object(j["watch"])(o,(function(){if(o.value&&"chart"===o.value.type){if(f.value=o.value.fill||"#fff",o.value.options){var e=o.value.options,t=e.lineSmooth,n=e.showLine,c=e.showArea,l=e.horizontalBars,a=e.donut,r=e.stackBars;void 0!==t&&(v.value=t),void 0!==n&&(O.value=n),void 0!==c&&(h.value=c),void 0!==l&&(g.value=l),void 0!==a&&(x.value=a),void 0!==r&&(C.value=r)}b.value=o.value.themeColor,m.value=o.value.gridColor||"#333",p.value=o.value.legend||""}}),{deep:!0,immediate:!0});var k=function(e){t.updateElement({id:c.value,props:e}),s()},E=function(e){r.value=!1,k({data:e})},w=function(e){k({fill:e})},N=function(e){var t=o.value,n=Object(L["a"])(Object(L["a"])({},t.options),e);k({options:n})},V=function(e,t){var n={themeColor:b.value.map((function(n,o){return o===t?e:n}))};k(n)},I=function(){var e={themeColor:[].concat(Object($["a"])(b.value),[a.value.themeColor])};k(e)},S=function(e,t){var n=e.slice(0,t+1);k({themeColor:n}),i.value=!1},B=function(e){var t={themeColor:b.value.filter((function(t,n){return n!==e}))};k(t)},T=function(e){k({gridColor:e})},_=function(e){k({legend:e})},M=function(){return r.value=!0};return Cl.on(zc.OPEN_CHART_DATA_EDITOR,M),Object(j["onUnmounted"])((function(){Cl.off(zc.OPEN_CHART_DATA_EDITOR,M)})),{chartDataEditorVisible:r,presetThemesVisible:i,presetThemeColorHoverIndex:u,handleElement:o,updateData:E,fill:f,updateFill:w,lineSmooth:v,showLine:O,showArea:h,horizontalBars:g,donut:x,stackBars:C,updateOptions:N,themeColor:b,gridColor:m,legend:p,updateTheme:V,addThemeColor:I,deleteThemeColor:B,updateGridColor:T,updateLegend:_,presetChartThemes:qO,applyPresetTheme:S}}});n("f196");const WO=eo()(UO,[["render",wO],["__scopeId","data-v-1a47c852"]]);var GO=WO,XO=function(e){return Object(j["pushScopeId"])("data-v-3da8fdb7"),e=e(),Object(j["popScopeId"])(),e},YO={class:"table-style-panel"},ZO={class:"row"},JO=XO((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"行数:",-1)})),KO={class:"set-count",style:{flex:"3"}},QO={class:"count-text"},$O={class:"row"},eh=XO((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"列数:",-1)})),th={class:"set-count",style:{flex:"3"}},nh={class:"count-text"},oh={class:"row theme-switch"},ch=XO((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"启用主题表格:",-1)})),lh={class:"switch-wrapper",style:{flex:"3"}},ah={class:"row"},rh=Object(j["createTextVNode"])("标题行"),ih=Object(j["createTextVNode"])("汇总行"),uh={class:"row"},dh=Object(j["createTextVNode"])("第一列"),sh=Object(j["createTextVNode"])("最后一列"),fh={class:"row"},bh=XO((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"主题颜色:",-1)}));function mh(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconFontSize"),r=Object(j["resolveComponent"])("SelectOption"),i=Object(j["resolveComponent"])("SelectOptGroup"),u=Object(j["resolveComponent"])("Select"),d=Object(j["resolveComponent"])("IconAddText"),s=Object(j["resolveComponent"])("InputGroup"),f=Object(j["resolveComponent"])("ColorPicker"),b=Object(j["resolveComponent"])("IconText"),m=Object(j["resolveComponent"])("Button"),p=Object(j["resolveComponent"])("Tooltip"),v=Object(j["resolveComponent"])("Popover"),O=Object(j["resolveComponent"])("IconFill"),h=Object(j["resolveComponent"])("ButtonGroup"),y=Object(j["resolveComponent"])("IconTextBold"),g=Object(j["resolveComponent"])("CheckboxButton"),x=Object(j["resolveComponent"])("IconTextItalic"),C=Object(j["resolveComponent"])("IconTextUnderline"),k=Object(j["resolveComponent"])("IconStrikethrough"),E=Object(j["resolveComponent"])("CheckboxButtonGroup"),w=Object(j["resolveComponent"])("IconAlignTextLeft"),N=Object(j["resolveComponent"])("RadioButton"),V=Object(j["resolveComponent"])("IconAlignTextCenter"),I=Object(j["resolveComponent"])("IconAlignTextRight"),S=Object(j["resolveComponent"])("RadioGroup"),B=Object(j["resolveComponent"])("Divider"),L=Object(j["resolveComponent"])("ElementOutline"),T=Object(j["resolveComponent"])("IconMinus"),_=Object(j["resolveComponent"])("IconPlus"),M=Object(j["resolveComponent"])("Switch"),D=Object(j["resolveComponent"])("Checkbox"),z=Object(j["resolveComponent"])("ColorButton");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",YO,[Object(j["createVNode"])(s,{compact:"",class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,{style:{flex:"3"},value:e.textAttrs.fontname,onChange:t[0]||(t[0]=function(t){return e.updateTextAttrs({fontname:t})})},{suffixIcon:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a)]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{label:"系统字体"},{default:Object(j["withCtx"])((function(){return[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.availableFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:e.value,value:e.value},{default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("span",{style:Object(j["normalizeStyle"])({fontFamily:e.value})},Object(j["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(j["createVNode"])(i,{label:"在线字体"},{default:Object(j["withCtx"])((function(){return[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.webFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:e.value,value:e.value},{default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("span",null,Object(j["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"]),Object(j["createVNode"])(u,{style:{flex:"2"},value:e.textAttrs.fontsize,onChange:t[1]||(t[1]=function(t){return e.updateTextAttrs({fontsize:t})})},{suffixIcon:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d)]})),default:Object(j["withCtx"])((function(){return[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.fontSizeOptions,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:e,value:e},{default:Object(j["withCtx"])((function(){return[Object(j["createTextVNode"])(Object(j["toDisplayString"])(e),1)]})),_:2},1032,["value"])})),128))]})),_:1},8,["value"])]})),_:1}),Object(j["createVNode"])(h,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(v,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f,{modelValue:e.textAttrs.color,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.updateTextAttrs({color:t})})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(p,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(m,{class:"text-color-btn",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b),Object(j["createElementVNode"])("div",{class:"text-color-block",style:Object(j["normalizeStyle"])({backgroundColor:e.textAttrs.color})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(v,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f,{modelValue:e.textAttrs.backcolor,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.updateTextAttrs({backcolor:t})})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(p,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"单元格填充"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(m,{class:"text-color-btn",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(O),Object(j["createElementVNode"])("div",{class:"text-color-block",style:Object(j["normalizeStyle"])({backgroundColor:e.textAttrs.backcolor})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1})]})),_:1}),Object(j["createVNode"])(E,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(p,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"加粗"},{default:Object(j["withCtx"])((function(){return[Object(j["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(j["withCtx"])((function(){return[Object(j["createVNode"])(y)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(p,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"斜体"},{default:Object(j["withCtx"])((function(){return[Object(j["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(j["withCtx"])((function(){return[Object(j["createVNode"])(x)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(p,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下划线"},{default:Object(j["withCtx"])((function(){return[Object(j["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(j["withCtx"])((function(){return[Object(j["createVNode"])(C)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(p,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除线"},{default:Object(j["withCtx"])((function(){return[Object(j["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(j["withCtx"])((function(){return[Object(j["createVNode"])(k)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["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(j["withCtx"])((function(){return[Object(j["createVNode"])(p,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(N,{value:"left",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(w)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(p,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(N,{value:"center",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(V)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(p,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(N,{value:"right",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(I)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"]),Object(j["createVNode"])(B),Object(j["createVNode"])(L,{fixed:!0}),Object(j["createVNode"])(B),Object(j["createElementVNode"])("div",ZO,[JO,Object(j["createElementVNode"])("div",KO,[Object(j["createVNode"])(m,{class:"btn",disabled:e.rowCount<=1,onClick:t[9]||(t[9]=function(t){return e.setTableRow(e.rowCount-1)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(T)]})),_:1},8,["disabled"]),Object(j["createElementVNode"])("div",QO,Object(j["toDisplayString"])(e.rowCount),1),Object(j["createVNode"])(m,{class:"btn",disabled:e.rowCount>=30,onClick:t[10]||(t[10]=function(t){return e.setTableRow(e.rowCount+1)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(_)]})),_:1},8,["disabled"])])]),Object(j["createElementVNode"])("div",$O,[eh,Object(j["createElementVNode"])("div",th,[Object(j["createVNode"])(m,{class:"btn",disabled:e.colCount<=1,onClick:t[11]||(t[11]=function(t){return e.setTableCol(e.colCount-1)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(T)]})),_:1},8,["disabled"]),Object(j["createElementVNode"])("div",nh,Object(j["toDisplayString"])(e.colCount),1),Object(j["createVNode"])(m,{class:"btn",disabled:e.colCount>=30,onClick:t[12]||(t[12]=function(t){return e.setTableCol(e.colCount+1)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(_)]})),_:1},8,["disabled"])])]),Object(j["createVNode"])(B),Object(j["createElementVNode"])("div",oh,[ch,Object(j["createElementVNode"])("div",lh,[Object(j["createVNode"])(M,{checked:e.hasTheme,onChange:t[13]||(t[13]=function(t){return e.toggleTheme(t)})},null,8,["checked"])])]),e.theme?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[Object(j["createElementVNode"])("div",ah,[Object(j["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(j["withCtx"])((function(){return[rh]})),_:1},8,["checked"]),Object(j["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(j["withCtx"])((function(){return[ih]})),_:1},8,["checked"])]),Object(j["createElementVNode"])("div",uh,[Object(j["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(j["withCtx"])((function(){return[dh]})),_:1},8,["checked"]),Object(j["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(j["withCtx"])((function(){return[sh]})),_:1},8,["checked"])]),Object(j["createElementVNode"])("div",fh,[bh,Object(j["createVNode"])(v,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f,{modelValue:e.theme.color,"onUpdate:modelValue":t[18]||(t[18]=function(t){return e.updateTheme({color:t})})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(z,{color:e.theme.color,style:{flex:"3"}},null,8,["color"])]})),_:1})])],64)):Object(j["createCommentVNode"])("",!0)])}var ph=B,vh=Object(j["defineComponent"])({name:"table-style-panel",components:{ElementOutline:tp,ColorButton:Qm},setup:function(){var e=ae(),t=Object(y["c"])(ue()),n=t.handleElement,o=t.handleElementId,c=t.selectedTableCells,l=t.availableFonts,a=Object(j["computed"])((function(){return e.theme.themeColor})),r=["12px","14px","16px","18px","20px","22px","24px","28px","32px"],i=Object(j["ref"])({bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"#000",fontsize:"12px",fontname:"微软雅黑",align:"left"}),u=Object(j["ref"])(),d=Object(j["ref"])(!1),s=Object(j["ref"])(0),f=Object(j["ref"])(0),b=Object(j["ref"])(0),m=Object(j["ref"])(0);Object(j["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,b.value=n.value.data.length,m.value=n.value.data[0].length)}),{deep:!0,immediate:!0});var p=dt(),v=p.addHistorySnapshot,O=function(){if(n.value&&"table"===n.value.type){var e=0,t=0;if(c.value.length){var o=c.value[0];e=+o.split("_")[0],t=+o.split("_")[1]}var l=n.value.data[e][t].style;i.value=l?{bold:!!l.bold,em:!!l.em,underline:!!l.underline,strikethrough:!!l.strikethrough,color:l.color||"#000",backcolor:l.backcolor||"#000",fontsize:l.fontsize||"12px",fontname:l.fontname||"微软雅黑",align:l.align||"left"}:{bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"#000",fontsize:"12px",fontname:"微软雅黑",align:"left"}}};Object(j["onMounted"])((function(){c.value.length&&O()})),Object(j["watch"])(c,O);var h=function(t){e.updateElement({id:o.value,props:t}),v()},g=function(e){for(var t=n.value,o=JSON.parse(JSON.stringify(t.data)),l=0;lo){var c=new Array(f.value).fill({id:Object(C["b"])(10),colspan:1,rowspan:1,text:""}),l=new Array(e-o).fill(c),a=JSON.parse(JSON.stringify(t.data));a.push.apply(a,Object($["a"])(l)),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,c=t.data,l=t.colWidths.map((function(e){return e*t.width}));if(e>o){var a;c=c.map((function(t){var n=new Array(e-o).fill({id:Object(C["b"])(10),colspan:1,rowspan:1,text:""});return t.push.apply(t,Object($["a"])(n)),t}));var r=new Array(e-o).fill(100);(a=l).push.apply(a,Object($["a"])(r))}else c=c.map((function(t){return t.slice(0,e)})),l=l.slice(0,e);var i=l.reduce((function(e,t){return e+t})),u=l.map((function(e){return e/i})),d={width:i,data:c,colWidths:u};h(d)};return{availableFonts:l,fontSizeOptions:r,textAttrs:i,updateTextAttrs:g,theme:u,rowCount:s,colCount:f,minRowCount:b,minColCount:m,hasTheme:d,toggleTheme:k,updateTheme:x,setTableRow:E,setTableCol:w,webFonts:ph}}});n("91e0");const Oh=eo()(vh,[["render",mh],["__scopeId","data-v-3da8fdb7"]]);var hh=Oh,jh=function(e){return Object(j["pushScopeId"])("data-v-e3a2bd30"),e=e(),Object(j["popScopeId"])(),e},yh={class:"latex-style-panel"},gh={class:"row"},xh=Object(j["createTextVNode"])("编辑 LaTeX"),Ch={class:"row"},kh=jh((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"颜色:",-1)})),Eh={class:"row"},wh=jh((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"粗细:",-1)}));function Nh(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("Button"),r=Object(j["resolveComponent"])("Divider"),i=Object(j["resolveComponent"])("ColorPicker"),u=Object(j["resolveComponent"])("ColorButton"),d=Object(j["resolveComponent"])("Popover"),s=Object(j["resolveComponent"])("InputNumber"),f=Object(j["resolveComponent"])("LaTeXEditor"),b=Object(j["resolveComponent"])("Modal");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",yh,[Object(j["createElementVNode"])("div",gh,[Object(j["createVNode"])(a,{style:{flex:"1"},onClick:t[0]||(t[0]=function(t){return e.latexEditorVisible=!0})},{default:Object(j["withCtx"])((function(){return[xh]})),_:1})]),Object(j["createVNode"])(r),Object(j["createElementVNode"])("div",Ch,[kh,Object(j["createVNode"])(d,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{modelValue:e.handleElement.color,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.updateLatex({color:t})})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,{color:e.handleElement.color,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createElementVNode"])("div",Eh,[wh,Object(j["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(j["createVNode"])(b,{visible:e.latexEditorVisible,"onUpdate:visible":t[5]||(t[5]=function(t){return e.latexEditorVisible=t}),footer:null,centered:"",width:880,destroyOnClose:""},{default:Object(j["withCtx"])((function(){return[Object(j["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 Vh=Object(j["defineComponent"])({name:"latex-style-panel",components:{ColorButton:Qm,LaTeXEditor:Bb},setup:function(){var e=ae(),t=Object(y["c"])(ue()),n=t.handleElement,o=Object(j["ref"])(!1),c=dt(),l=c.addHistorySnapshot,a=function(t){n.value&&(e.updateElement({id:n.value.id,props:t}),l())},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 Cl.on(zc.OPEN_LATEX_EDITOR,i),Object(j["onUnmounted"])((function(){Cl.off(zc.OPEN_LATEX_EDITOR,i)})),{handleElement:n,latexEditorVisible:o,updateLatex:a,updateLatexData:r}}});n("04ba");const Ih=eo()(Vh,[["render",Nh],["__scopeId","data-v-e3a2bd30"]]);var Sh=Ih,Bh=function(e){return Object(j["pushScopeId"])("data-v-61bcaa2a"),e=e(),Object(j["popScopeId"])(),e},Lh={class:"video-style-panel"},Th=Bh((function(){return Object(j["createElementVNode"])("div",{class:"title"},"视频预览封面",-1)})),_h={class:"background-image-wrapper"},Mh={class:"background-image"},Dh={class:"row"},zh=Object(j["createTextVNode"])("重置封面");function Ah(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconPlus"),r=Object(j["resolveComponent"])("FileInput"),i=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Lh,[Th,Object(j["createElementVNode"])("div",_h,[Object(j["createVNode"])(r,{onChange:t[0]||(t[0]=function(t){return e.setVideoPoster(t)})},{default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",Mh,[Object(j["createElementVNode"])("div",{class:"content",style:Object(j["normalizeStyle"])({backgroundImage:"url(".concat(e.handleElement.poster,")")})},[Object(j["createVNode"])(a)],4)])]})),_:1})]),Object(j["createElementVNode"])("div",Dh,[Object(j["createVNode"])(i,{style:{flex:"1"},onClick:t[1]||(t[1]=function(t){return e.updateVideo({poster:""})})},{default:Object(j["withCtx"])((function(){return[zh]})),_:1})])])}var Fh=Object(j["defineComponent"])({name:"video-style-panel",setup:function(){var e=ae(),t=Object(y["c"])(ue()),n=t.handleElement,o=dt(),c=o.addHistorySnapshot,l=function(t){n.value&&(e.updateElement({id:n.value.id,props:t}),c())},a=function(e){var t=e[0];t&<(t).then((function(e){return l({poster:e})}))};return{handleElement:n,updateVideo:l,setVideoPoster:a}}});n("c43a");const Rh=eo()(Fh,[["render",Ah],["__scopeId","data-v-61bcaa2a"]]);var Ph=Rh,Hh=function(e){return Object(j["pushScopeId"])("data-v-58a36be6"),e=e(),Object(j["popScopeId"])(),e},qh={class:"audio-style-panel"},Uh={class:"row"},Wh=Hh((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"图标颜色:",-1)})),Gh={class:"row switch-row"},Xh=Hh((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"自动播放:",-1)})),Yh={class:"switch-wrapper",style:{flex:"3"}},Zh={class:"row switch-row"},Jh=Hh((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"循环播放:",-1)})),Kh={class:"switch-wrapper",style:{flex:"3"}};function Qh(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ColorPicker"),r=Object(j["resolveComponent"])("ColorButton"),i=Object(j["resolveComponent"])("Popover"),u=Object(j["resolveComponent"])("Switch");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",qh,[Object(j["createElementVNode"])("div",Uh,[Wh,Object(j["createVNode"])(i,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{modelValue:e.handleElement.color,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.updateAudio({color:t})})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{color:e.handleElement.color,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createElementVNode"])("div",Gh,[Xh,Object(j["createElementVNode"])("div",Yh,[Object(j["createVNode"])(u,{checked:e.handleElement.autoplay,onChange:t[1]||(t[1]=function(t){return e.updateAudio({autoplay:t})})},null,8,["checked"])])]),Object(j["createElementVNode"])("div",Zh,[Jh,Object(j["createElementVNode"])("div",Kh,[Object(j["createVNode"])(u,{checked:e.handleElement.loop,onChange:t[2]||(t[2]=function(t){return e.updateAudio({loop:t})})},null,8,["checked"])])])])}var $h=Object(j["defineComponent"])({name:"audio-style-panel",components:{ColorButton:Qm},setup:function(){var e=ae(),t=Object(y["c"])(ue()),n=t.handleElement,o=dt(),c=o.addHistorySnapshot,l=function(t){n.value&&(e.updateElement({id:n.value.id,props:t}),c())};return{handleElement:n,updateAudio:l}}});n("413c");const ej=eo()($h,[["render",Qh],["__scopeId","data-v-58a36be6"]]);var tj=ej,nj=function(e){return Object(j["pushScopeId"])("data-v-e5e0fba2"),e=e(),Object(j["popScopeId"])(),e},oj={class:"multi-style-panel"},cj={class:"row"},lj=nj((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"填充颜色:",-1)})),aj={class:"row"},rj=nj((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"边框样式:",-1)})),ij=Object(j["createTextVNode"])("实线边框"),uj=Object(j["createTextVNode"])("虚线边框"),dj={class:"row"},sj=nj((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"边框颜色:",-1)})),fj={class:"row"},bj=nj((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"边框粗细:",-1)})),mj=Object(j["createTextVNode"])("+"),pj=Object(j["createTextVNode"])("-");function vj(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ColorPicker"),r=Object(j["resolveComponent"])("ColorButton"),i=Object(j["resolveComponent"])("Popover"),u=Object(j["resolveComponent"])("Divider"),d=Object(j["resolveComponent"])("SelectOption"),s=Object(j["resolveComponent"])("Select"),f=Object(j["resolveComponent"])("InputNumber"),b=Object(j["resolveComponent"])("IconFontSize"),m=Object(j["resolveComponent"])("SelectOptGroup"),p=Object(j["resolveComponent"])("IconAddText"),v=Object(j["resolveComponent"])("InputGroup"),O=Object(j["resolveComponent"])("IconText"),h=Object(j["resolveComponent"])("Button"),y=Object(j["resolveComponent"])("Tooltip"),g=Object(j["resolveComponent"])("IconHighLight"),x=Object(j["resolveComponent"])("ButtonGroup"),C=Object(j["resolveComponent"])("IconAlignTextLeft"),k=Object(j["resolveComponent"])("RadioButton"),E=Object(j["resolveComponent"])("IconAlignTextCenter"),w=Object(j["resolveComponent"])("IconAlignTextRight"),N=Object(j["resolveComponent"])("RadioGroup");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",oj,[Object(j["createElementVNode"])("div",cj,[lj,Object(j["createVNode"])(i,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{modelValue:e.fill,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.updateFill(t)})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{color:e.fill,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])(u),Object(j["createElementVNode"])("div",aj,[rj,Object(j["createVNode"])(s,{style:{flex:"3"},value:e.outline.style,onChange:t[1]||(t[1]=function(t){return e.updateOutline({style:t})})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d,{value:"solid"},{default:Object(j["withCtx"])((function(){return[ij]})),_:1}),Object(j["createVNode"])(d,{value:"dashed"},{default:Object(j["withCtx"])((function(){return[uj]})),_:1})]})),_:1},8,["value"])]),Object(j["createElementVNode"])("div",dj,[sj,Object(j["createVNode"])(i,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{modelValue:e.outline.color,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.updateOutline({color:t})})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{color:e.outline.color||"#000",style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createElementVNode"])("div",fj,[bj,Object(j["createVNode"])(f,{value:e.outline.width,onChange:t[3]||(t[3]=function(t){return e.updateOutline({width:t})}),style:{flex:"3"}},null,8,["value"])]),Object(j["createVNode"])(u),Object(j["createVNode"])(v,{compact:"",class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(s,{style:{flex:"3"},value:e.richTextAttrs.fontname,onChange:t[4]||(t[4]=function(t){return e.updateFontStyle("fontname",t)})},{suffixIcon:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b)]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(m,{label:"系统字体"},{default:Object(j["withCtx"])((function(){return[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.availableFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(d,{key:e.value,value:e.value},{default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("span",{style:Object(j["normalizeStyle"])({fontFamily:e.value})},Object(j["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(j["createVNode"])(m,{label:"在线字体"},{default:Object(j["withCtx"])((function(){return[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.webFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(d,{key:e.value,value:e.value},{default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("span",null,Object(j["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"]),Object(j["createVNode"])(s,{style:{flex:"2"},value:e.richTextAttrs.fontsize,onChange:t[5]||(t[5]=function(t){return e.updateFontStyle("fontsize",t)})},{suffixIcon:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(p)]})),default:Object(j["withCtx"])((function(){return[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.fontSizeOptions,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(d,{key:e,value:e},{default:Object(j["withCtx"])((function(){return[Object(j["createTextVNode"])(Object(j["toDisplayString"])(e),1)]})),_:2},1032,["value"])})),128))]})),_:1},8,["value"])]})),_:1}),Object(j["createVNode"])(x,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{modelValue:e.richTextAttrs.color,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.updateFontStyle("color",t)})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(y,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(h,{class:"text-color-btn",style:{flex:"3"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(O),Object(j["createElementVNode"])("div",{class:"text-color-block",style:Object(j["normalizeStyle"])({backgroundColor:e.richTextAttrs.color})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(i,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{modelValue:e.richTextAttrs.backcolor,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.updateFontStyle("backcolor",t)})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(y,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字高亮"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(h,{class:"text-color-btn",style:{flex:"3"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(g),Object(j["createElementVNode"])("div",{class:"text-color-block",style:Object(j["normalizeStyle"])({backgroundColor:e.richTextAttrs.backcolor})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(y,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"增大字号"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(h,{class:"font-size-btn",style:{flex:"2"},onClick:t[8]||(t[8]=function(t){return e.updateFontStyle("fontsize-add","2")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b),mj]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(y,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"减小字号"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(h,{class:"font-size-btn",style:{flex:"2"},onClick:t[9]||(t[9]=function(t){return e.updateFontStyle("fontsize-reduce","2")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b),pj]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(N,{class:"row","button-style":"solid",value:e.richTextAttrs.align,onChange:t[10]||(t[10]=function(t){return e.updateFontStyle("align",t.target.value)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(y,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(k,{value:"left",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(C)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(y,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(k,{value:"center",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(E)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(y,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(k,{value:"right",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(w)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"])])}var Oj=B,hj=Object(j["defineComponent"])({name:"multi-style-panel",components:{ColorButton:Qm},setup:function(){var e=ae(),t=Object(y["c"])(ue()),n=t.richTextAttrs,o=t.availableFonts,c=t.activeElementList,l=dt(),a=l.addHistorySnapshot,r=function(t,n){e.updateElement({id:t,props:n}),a()},i=["12px","14px","16px","18px","20px","22px","24px","28px","32px","36px","40px","44px","48px","54px","60px","66px","72px","76px","80px","88px","96px","104px","112px","120px"],u=Object(j["ref"])("#fff"),d=Object(j["ref"])({width:0,color:"#fff",style:"solid"}),s=function(e){var t,n=Object(T["a"])(c.value);try{for(n.s();!(t=n.n()).done;){var o=t.value;if("text"!==o.type&&"shape"!==o.type&&"chart"!==o.type||r(o.id,{fill:e}),"table"===o.type){for(var l=JSON.parse(JSON.stringify(o.data)),a=0;a1){if(!c.value)return gj;var e=n.value.find((function(e){return e.id===c.value}));return e&&xj[e.type]||null}return o.value&&xj[o.value.type]||null}));return{handleElement:o,currentPanelComponent:l}}});const kj=eo()(Cj,[["render",cm]]);var Ej=kj,wj=function(e){return Object(j["pushScopeId"])("data-v-4f10fba6"),e=e(),Object(j["popScopeId"])(),e},Nj={class:"element-positopn-panel"},Vj=wj((function(){return Object(j["createElementVNode"])("div",{class:"title"},"层级:",-1)})),Ij=Object(j["createTextVNode"])(" 置于顶层"),Sj=Object(j["createTextVNode"])(" 置于底层"),Bj=Object(j["createTextVNode"])(" 上移一层"),Lj=Object(j["createTextVNode"])(" 下移一层"),Tj=wj((function(){return Object(j["createElementVNode"])("div",{class:"title"},"对齐:",-1)})),_j={class:"row"},Mj=wj((function(){return Object(j["createElementVNode"])("div",{style:{flex:"3"}},"位置:",-1)})),Dj=wj((function(){return Object(j["createElementVNode"])("div",{style:{flex:"1"}},null,-1)})),zj=Object(j["createStaticVNode"])('
X
Y
',1),Aj={class:"row"},Fj=wj((function(){return Object(j["createElementVNode"])("div",{style:{flex:"3"}},"大小:",-1)})),Rj={key:1,style:{flex:"1"}},Pj=Object(j["createStaticVNode"])('
',1),Hj={class:"row"},qj=wj((function(){return Object(j["createElementVNode"])("div",{style:{flex:"3"}},"旋转:",-1)})),Uj=wj((function(){return Object(j["createElementVNode"])("div",{style:{flex:"1"}},null,-1)}));function Wj(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconSendToBack"),r=Object(j["resolveComponent"])("Button"),i=Object(j["resolveComponent"])("IconBringToFrontOne"),u=Object(j["resolveComponent"])("ButtonGroup"),d=Object(j["resolveComponent"])("IconBringToFront"),s=Object(j["resolveComponent"])("IconSentToBack"),f=Object(j["resolveComponent"])("Divider"),b=Object(j["resolveComponent"])("IconAlignLeft"),m=Object(j["resolveComponent"])("Tooltip"),p=Object(j["resolveComponent"])("IconAlignVertically"),v=Object(j["resolveComponent"])("IconAlignRight"),O=Object(j["resolveComponent"])("IconAlignTop"),h=Object(j["resolveComponent"])("IconAlignHorizontally"),y=Object(j["resolveComponent"])("IconAlignBottom"),g=Object(j["resolveComponent"])("InputNumber"),x=Object(j["resolveComponent"])("IconLock"),C=Object(j["resolveComponent"])("IconUnlock"),k=Object(j["resolveComponent"])("IconRotate");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Nj,[Vj,Object(j["createVNode"])(u,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[0]||(t[0]=function(t){return e.orderElement(e.handleElement,e.ElementOrderCommands.TOP)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{class:"btn-icon"}),Ij]})),_:1}),Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[1]||(t[1]=function(t){return e.orderElement(e.handleElement,e.ElementOrderCommands.BOTTOM)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{class:"btn-icon"}),Sj]})),_:1})]})),_:1}),Object(j["createVNode"])(u,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[2]||(t[2]=function(t){return e.orderElement(e.handleElement,e.ElementOrderCommands.UP)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d,{class:"btn-icon"}),Bj]})),_:1}),Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[3]||(t[3]=function(t){return e.orderElement(e.handleElement,e.ElementOrderCommands.DOWN)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(s,{class:"btn-icon"}),Lj]})),_:1})]})),_:1}),Object(j["createVNode"])(f),Tj,Object(j["createVNode"])(u,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[4]||(t[4]=function(t){return e.alignElementToCanvas(e.ElementAlignCommands.LEFT)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"水平居中"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[5]||(t[5]=function(t){return e.alignElementToCanvas(e.ElementAlignCommands.HORIZONTAL)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(p)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[6]||(t[6]=function(t){return e.alignElementToCanvas(e.ElementAlignCommands.RIGHT)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(v)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(u,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[7]||(t[7]=function(t){return e.alignElementToCanvas(e.ElementAlignCommands.TOP)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(O)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"垂直居中"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[8]||(t[8]=function(t){return e.alignElementToCanvas(e.ElementAlignCommands.VERTICAL)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(h)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[9]||(t[9]=function(t){return e.alignElementToCanvas(e.ElementAlignCommands.BOTTOM)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(y)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(f),Object(j["createElementVNode"])("div",_j,[Mj,Object(j["createVNode"])(g,{step:5,value:e.left,onChange:t[10]||(t[10]=function(t){return e.updateLeft(t)}),style:{flex:"4"}},null,8,["value"]),Dj,Object(j["createVNode"])(g,{step:5,value:e.top,onChange:t[11]||(t[11]=function(t){return e.updateTop(t)}),style:{flex:"4"}},null,8,["value"])]),zj,"line"!==e.handleElement.type?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[Object(j["createElementVNode"])("div",Aj,[Fj,Object(j["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(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[e.fixedRatio?(Object(j["openBlock"])(),Object(j["createBlock"])(m,{key:0,mouseLeaveDelay:0,mouseEnterDelay:.5,title:"解除宽高比锁定"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(x,{style:{flex:"1"},class:"icon-btn",onClick:t[13]||(t[13]=function(t){return e.updateFixedRatio(!1)})})]})),_:1},8,["mouseEnterDelay"])):(Object(j["openBlock"])(),Object(j["createBlock"])(m,{key:1,mouseLeaveDelay:0,mouseEnterDelay:.5,title:"宽高比锁定"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(C,{style:{flex:"1"},class:"icon-btn",onClick:t[14]||(t[14]=function(t){return e.updateFixedRatio(!0)})})]})),_:1},8,["mouseEnterDelay"]))],64)):(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Rj)),Object(j["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"])]),Pj],64)):Object(j["createCommentVNode"])("",!0),["line","video","audio"].includes(e.handleElement.type)?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:1},[Object(j["createVNode"])(f),Object(j["createElementVNode"])("div",Hj,[qj,Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"逆时针旋转"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(k,{class:"icon-btn",onClick:t[16]||(t[16]=function(t){return e.updateRotate45("-")}),style:{flex:"2"}})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"顺时针旋转"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(k,{class:"icon-btn",onClick:t[17]||(t[17]=function(t){return e.updateRotate45("+")}),style:Object(j["normalizeStyle"])({flex:2,transform:"rotateY(180deg)"})},null,8,["style"])]})),_:1},8,["mouseEnterDelay"]),Uj,Object(j["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 Gj=Object(j["defineComponent"])({name:"element-positopn-panel",setup:function(){var e=ae(),t=Object(y["c"])(ue()),n=t.handleElement,o=t.handleElementId,c=Object(j["ref"])(0),l=Object(j["ref"])(0),a=Object(j["ref"])(0),r=Object(j["ref"])(0),i=Object(j["ref"])(0),u=Object(j["ref"])(!1),d=Object(j["computed"])((function(){return n.value&&jo[n.value.type]||20}));Object(j["watch"])(n,(function(){n.value&&(c.value=Object(ne["round"])(n.value.left,1),l.value=Object(ne["round"])(n.value.top,1),u.value="fixedRatio"in n.value&&!!n.value.fixedRatio,"line"!==n.value.type&&(a.value=Object(ne["round"])(n.value.width,1),r.value=Object(ne["round"])(n.value.height,1),i.value="rotate"in n.value&&void 0!==n.value.rotate?Object(ne["round"])(n.value.rotate,1):0))}),{deep:!0,immediate:!0});var s=gt(),f=s.orderElement,b=Io(),m=b.alignElementToCanvas,p=dt(),v=p.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()},g=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()},w=function(t){var n={fixedRatio:t};e.updateElement({id:o.value,props:n}),v()},N=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 c={rotate:n};e.updateElement({id:o.value,props:c}),v()};return{handleElement:n,orderElement:f,alignElementToCanvas:m,left:c,top:l,width:a,height:r,rotate:i,fixedRatio:u,minSize:d,updateLeft:O,updateTop:h,updateWidth:g,updateHeight:x,updateRotate:C,updateFixedRatio:w,updateRotate45:N,ElementOrderCommands:k,ElementAlignCommands:E}}});n("568a");const Xj=eo()(Gj,[["render",Wj],["__scopeId","data-v-4f10fba6"]]);var Yj=Xj,Zj=function(e){return Object(j["pushScopeId"])("data-v-11684c24"),e=e(),Object(j["popScopeId"])(),e},Jj={class:"element-animation-panel"},Kj={key:0,class:"element-animation"},Qj={class:"tabs"},$j=["onClick"],ey={class:"type-title"},ty={class:"pool-item-wrapper"},ny=["onMouseenter","onClick"],oy={key:0,class:"mask"},cy=Object(j["createTextVNode"])(" 添加动画 "),ly={key:1,class:"tip"},ay=Object(j["createTextVNode"])(" 选中画布中的元素添加动画"),ry={class:"sequence-content"},iy={class:"index"},uy={class:"text"},dy={class:"handler"},sy={key:0,class:"configs"},fy={class:"config-item"},by=Zj((function(){return Object(j["createElementVNode"])("div",{style:{flex:"3"}},"持续时长:",-1)})),my={class:"config-item"},py=Zj((function(){return Object(j["createElementVNode"])("div",{style:{flex:"3"}},"触发方式:",-1)})),vy=Object(j["createTextVNode"])("主动触发"),Oy=Object(j["createTextVNode"])("与上一动画同时"),hy=Object(j["createTextVNode"])("上一动画之后"),jy={class:"config-item"},yy=Object(j["createTextVNode"])("更换动画");function gy(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconEffects"),r=Object(j["resolveComponent"])("Button"),i=Object(j["resolveComponent"])("Popover"),u=Object(j["resolveComponent"])("IconClick"),d=Object(j["resolveComponent"])("Divider"),s=Object(j["resolveComponent"])("IconPlayOne"),f=Object(j["resolveComponent"])("Tooltip"),b=Object(j["resolveComponent"])("IconCloseSmall"),m=Object(j["resolveComponent"])("InputNumber"),p=Object(j["resolveComponent"])("SelectOption"),v=Object(j["resolveComponent"])("Select"),O=Object(j["resolveComponent"])("Draggable");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Jj,[e.handleElement?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Kj,[Object(j["createVNode"])(i,{trigger:"click",visible:e.animationPoolVisible,"onUpdate:visible":t[2]||(t[2]=function(t){return e.animationPoolVisible=t}),onVisibleChange:t[3]||(t[3]=function(t){return e.handlePopoverVisibleChange(t)})},{content:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",Qj,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.tabs,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["tab",t.key,{active:e.activeTab===t.key}]),key:t.key,onClick:function(n){return e.activeTab=t.key}},Object(j["toDisplayString"])(t.label),11,$j)})),128))]),(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.animationTypes,(function(n){return Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],null,[e.activeTab===n?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["animation-pool",n]),key:n},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.animations[n],(function(o){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"pool-type",key:o.name},[Object(j["createElementVNode"])("div",ey,Object(j["toDisplayString"])(o.name)+":",1),Object(j["createElementVNode"])("div",ty,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(o.children,(function(o){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"pool-item",key:o.name,onMouseenter:function(t){return e.hoverPreviewAnimation=o.value},onMouseleave:t[0]||(t[0]=function(t){return e.hoverPreviewAnimation=""}),onClick:function(t){return e.addAnimation(n,o.value)}},[Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["animation-box",["".concat(e.prefix,"animated"),"".concat(e.prefix,"fast"),e.hoverPreviewAnimation===o.value&&"".concat(e.prefix).concat(o.value)]])},Object(j["toDisplayString"])(o.name),3)],40,ny)})),128))])])})),128)),e.popoverMaskHide?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",oy))],2)):Object(j["createCommentVNode"])("",!0)],64)})),256))]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{class:"element-animation-btn",onClick:t[1]||(t[1]=function(t){return e.handleAnimationId=""})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{style:{"margin-right":"5px"}}),cy]})),_:1})]})),_:1},8,["visible"])])):(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",ly,[Object(j["createVNode"])(u,{style:{"margin-right":"5px"}}),ay])),Object(j["createVNode"])(d),Object(j["createVNode"])(O,{class:"animation-sequence",modelValue:e.animationSequence,animation:300,scroll:!0,scrollSensitivity:50,handle:".sequence-content",onEnd:e.handleDragEnd,itemKey:"id"},{item:Object(j["withCtx"])((function(t){var n,o,c=t.element;return[Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["sequence-item",[c.type,{active:(null===(n=e.handleElement)||void 0===n?void 0:n.id)===c.elId}]])},[Object(j["createElementVNode"])("div",ry,[Object(j["createElementVNode"])("div",iy,Object(j["toDisplayString"])(c.index),1),Object(j["createElementVNode"])("div",uy,"【"+Object(j["toDisplayString"])(c.elType)+"】"+Object(j["toDisplayString"])(c.animationEffect),1),Object(j["createElementVNode"])("div",dy,[Object(j["createVNode"])(f,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"预览"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(s,{class:"handler-btn",onClick:function(t){return e.runAnimation(c.elId,c.effect,c.duration)}},null,8,["onClick"])]})),_:2},1032,["mouseEnterDelay"]),Object(j["createVNode"])(f,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b,{class:"handler-btn",onClick:function(t){return e.deleteAnimation(c.id)}},null,8,["onClick"])]})),_:2},1032,["mouseEnterDelay"])])]),(null===(o=e.handleElementAnimation[0])||void 0===o?void 0:o.elId)===c.elId?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",sy,[Object(j["createVNode"])(d,{style:{margin:"16px 0"}}),Object(j["createElementVNode"])("div",fy,[by,Object(j["createVNode"])(m,{min:500,max:3e3,step:500,value:c.duration,onChange:function(t){return e.updateElementAnimationDuration(c.id,t)},style:{flex:"5"}},null,8,["value","onChange"])]),Object(j["createElementVNode"])("div",my,[py,Object(j["createVNode"])(v,{value:c.trigger,onChange:function(t){return e.updateElementAnimationTrigger(c.id,t)},style:{flex:"5"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(p,{value:"click"},{default:Object(j["withCtx"])((function(){return[vy]})),_:1}),Object(j["createVNode"])(p,{value:"meantime"},{default:Object(j["withCtx"])((function(){return[Oy]})),_:1}),Object(j["createVNode"])(p,{value:"auto"},{default:Object(j["withCtx"])((function(){return[hy]})),_:1})]})),_:2},1032,["value","onChange"])]),Object(j["createElementVNode"])("div",jy,[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:function(t){return e.openAnimationPool(c.id)}},{default:Object(j["withCtx"])((function(){return[yy]})),_:2},1032,["onClick"])])])):Object(j["createCommentVNode"])("",!0)],2)]})),_:1},8,["modelValue","onEnd"])])}var xy,Cy=1e3,ky="click",Ey="animate__",wy=[{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"}]}],Ny=[{type:"bounce",name:"弹跳",children:[{name:"弹出",value:"bounceOut"},{name:"向左弹出",value:"bounceOutLeft"},{name:"向右弹出",value:"bounceOutRight"},{name:"向上弹出",value:"bounceOutUp"},{name:"向下弹出",value:"bounceOutDown"}]},{type:"fade",name:"浮现",children:[{name:"浮出",value:"fadeOut"},{name:"向下浮出",value:"fadeOutDown"},{name:"向下长距浮出",value:"fadeOutDownBig"},{name:"向左浮出",value:"fadeOutLeft"},{name:"向左长距浮出",value:"fadeOutLeftBig"},{name:"向右浮出",value:"fadeOutRight"},{name:"向右长距浮出",value:"fadeOutRightBig"},{name:"向上浮出",value:"fadeOutUp"},{name:"向上长距浮出",value:"fadeOutUpBig"},{name:"从左上浮出",value:"fadeOutTopLeft"},{name:"从右上浮出",value:"fadeOutTopRight"},{name:"从左下浮出",value:"fadeOutBottomLeft"},{name:"从右下浮出",value:"fadeOutBottomRight"}]},{type:"rotate",name:"旋转",children:[{name:"旋转退出",value:"rotateOut"},{name:"绕左下退出",value:"rotateOutDownLeft"},{name:"绕右下退出",value:"rotateOutDownRight"},{name:"绕左上退出",value:"rotateOutUpLeft"},{name:"绕右上退出",value:"rotateOutUpRight"}]},{type:"zoom",name:"缩放",children:[{name:"缩小退出",value:"zoomOut"},{name:"向下缩小退出",value:"zoomOutDown"},{name:"从左缩小退出",value:"zoomOutLeft"},{name:"从右缩小退出",value:"zoomOutRight"},{name:"向上缩小退出",value:"zoomOutUp"}]},{type:"slide",name:"滑出",children:[{name:"向下滑出",value:"slideOutDown"},{name:"从左滑出",value:"slideOutLeft"},{name:"从右滑出",value:"slideOutRight"},{name:"向上滑出",value:"slideOutUp"}]},{type:"flip",name:"翻转",children:[{name:"X轴翻转退出",value:"flipOutX"},{name:"Y轴翻转退出",value:"flipOutY"}]},{type:"back",name:"缩小滑出",children:[{name:"向下缩小滑出",value:"backOutDown"},{name:"从左缩小滑出",value:"backOutLeft"},{name:"从右缩小滑出",value:"backOutRight"},{name:"向上缩小滑出",value:"backOutUp"}]},{type:"lightSpeed",name:"飞出",children:[{name:"从右飞出",value:"lightSpeedOutRight"},{name:"从左飞出",value:"lightSpeedOutLeft"}]}],Vy=[{type:"shake",name:"晃动",children:[{name:"左右摇晃",value:"shakeX"},{name:"上下摇晃",value:"shakeY"},{name:"摇头",value:"headShake"},{name:"摆动",value:"swing"},{name:"晃动",value:"wobble"},{name:"惊恐",value:"tada"},{name:"果冻",value:"jello"}]},{type:"other",name:"其他",children:[{name:"弹跳",value:"bounce"},{name:"闪烁",value:"flash"},{name:"脉搏",value:"pulse"},{name:"橡皮筋",value:"rubberBand"},{name:"心跳(快)",value:"heartBeat"}]}],Iy={},Sy=Object(T["a"])(wy);try{for(Sy.s();!(xy=Sy.n()).done;){var By,Ly=xy.value,Ty=Object(T["a"])(Ly.children);try{for(Ty.s();!(By=Ty.n()).done;){var _y=By.value;Iy[_y.value]=_y.name}}catch(rL){Ty.e(rL)}finally{Ty.f()}}}catch(rL){Sy.e(rL)}finally{Sy.f()}var My,Dy=Object(T["a"])(Ny);try{for(Dy.s();!(My=Dy.n()).done;){var zy,Ay=My.value,Fy=Object(T["a"])(Ay.children);try{for(Fy.s();!(zy=Fy.n()).done;){var Ry=zy.value;Iy[Ry.value]=Ry.name}}catch(rL){Fy.e(rL)}finally{Fy.f()}}}catch(rL){Dy.e(rL)}finally{Dy.f()}var Py,Hy=Object(T["a"])(Vy);try{for(Hy.s();!(Py=Hy.n()).done;){var qy,Uy=Py.value,Wy=Object(T["a"])(Uy.children);try{for(Wy.s();!(qy=Wy.n()).done;){var Gy=qy.value;Iy[Gy.value]=Gy.name}}catch(rL){Wy.e(rL)}finally{Wy.f()}}}catch(rL){Hy.e(rL)}finally{Hy.f()}var Xy=["in","out","attention"],Yy=Object(j["defineComponent"])({name:"element-animation-panel",components:{Draggable:Hb.a},setup:function(){var e=ae(),t=Object(y["c"])(ue()),n=t.handleElement,o=t.handleElementId,c=Object(y["c"])(e),l=c.currentSlide,a=c.formatedAnimations,r=c.currentSlideAnimations,i=[{key:"in",label:"入场"},{key:"out",label:"退场"},{key:"attention",label:"强调"}],u=Object(j["ref"])("in");Object(j["watch"])((function(){return o.value}),(function(){s.value=!1}));var d=Object(j["ref"])(""),s=Object(j["ref"])(!1),f=dt(),b=f.addHistorySnapshot,m=Object(j["computed"])((function(){for(var e=[],t=0;t5e3)){var o=r.value.map((function(e){return e.id===t?Object(L["a"])(Object(L["a"])({},e),{},{duration:n}):e}));e.updateSlide({animations:o}),b()}},x=function(t,n){var o=r.value.map((function(e){return e.id===t?Object(L["a"])(Object(L["a"])({},e),{},{trigger:n}):e}));e.updateSlide({animations:o}),b()},k=function(t,n){var c=r.value.map((function(e){return e.id===E.value?Object(L["a"])(Object(L["a"])({},e),{},{type:t,effect:n}):e}));e.updateSlide({animations:c}),s.value=!1,b();var l=r.value.find((function(e){return e.elId===o.value})),a=(null===l||void 0===l?void 0:l.duration)||Cy;h(o.value,n,a)},E=Object(j["ref"])(""),w=function(t,n){if(E.value)k(t,n);else{var c=JSON.parse(JSON.stringify(r.value));c.push({id:Object(C["b"])(10),elId:o.value,type:t,effect:n,duration:Cy,trigger:ky}),e.updateSlide({animations:c}),s.value=!1,b(),h(o.value,n,Cy)}},N=Object(j["ref"])(!1),V=function(e){e?setTimeout((function(){return N.value=!0}),600):N.value=!1},I=function(e){s.value=!0,E.value=e,V(!0)};return{tabs:i,activeTab:u,handleAnimationId:E,handleElement:n,animationPoolVisible:s,animationSequence:m,hoverPreviewAnimation:d,handleElementAnimation:p,popoverMaskHide:N,animations:{in:wy,out:Ny,attention:Vy},prefix:Ey,animationTypes:Xy,addAnimation:w,deleteAnimation:v,handleDragEnd:O,runAnimation:h,updateElementAnimationDuration:g,updateElementAnimationTrigger:x,handlePopoverVisibleChange:V,openAnimationPool:I}}});n("4aec");const Zy=eo()(Yy,[["render",gy],["__scopeId","data-v-11684c24"]]);var Jy=Zy,Ky=function(e){return Object(j["pushScopeId"])("data-v-26058d12"),e=e(),Object(j["popScopeId"])(),e},Qy={class:"slide-design-panel"},$y=Ky((function(){return Object(j["createElementVNode"])("div",{class:"title"},"背景填充",-1)})),eg={class:"row"},tg=Object(j["createTextVNode"])("纯色填充"),ng=Object(j["createTextVNode"])("图片填充"),og=Object(j["createTextVNode"])("渐变填充"),cg=Ky((function(){return Object(j["createElementVNode"])("div",{style:{flex:"1"}},null,-1)})),lg=Object(j["createTextVNode"])("缩放"),ag=Object(j["createTextVNode"])("拼贴"),rg=Object(j["createTextVNode"])("缩放铺满"),ig=Object(j["createTextVNode"])("线性渐变"),ug=Object(j["createTextVNode"])("径向渐变"),dg={key:0,class:"background-image-wrapper"},sg={class:"background-image"},fg={key:1,class:"background-gradient-wrapper"},bg={class:"row"},mg=Ky((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"起点颜色:",-1)})),pg={class:"row"},vg=Ky((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"终点颜色:",-1)})),Og={key:0,class:"row"},hg=Ky((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"渐变角度:",-1)})),jg={class:"row"},yg=Object(j["createTextVNode"])("应用背景到全部"),gg={class:"row"},xg=Ky((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"画布尺寸:",-1)})),Cg=Object(j["createTextVNode"])("宽屏 16 : 9"),kg=Object(j["createTextVNode"])("宽屏 16 :10"),Eg=Object(j["createTextVNode"])("标准 4 :3"),wg=Ky((function(){return Object(j["createElementVNode"])("div",{class:"title"},"全局主题",-1)})),Ng={class:"row"},Vg=Ky((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"字体:",-1)})),Ig={class:"row"},Sg=Ky((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"字体颜色:",-1)})),Bg={class:"row"},Lg=Ky((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"背景颜色:",-1)})),Tg={class:"row"},_g=Ky((function(){return Object(j["createElementVNode"])("div",{style:{flex:"2"}},"主题色:",-1)})),Mg=Object(j["createTextVNode"])(" 预置主题 "),Dg={key:2,class:"theme-list"},zg=["onClick"],Ag={class:"theme-item-content"},Fg={class:"row"},Rg=Object(j["createTextVNode"])("应用主题到全部");function Pg(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("SelectOption"),r=Object(j["resolveComponent"])("Select"),i=Object(j["resolveComponent"])("ColorPicker"),u=Object(j["resolveComponent"])("ColorButton"),d=Object(j["resolveComponent"])("Popover"),s=Object(j["resolveComponent"])("IconPlus"),f=Object(j["resolveComponent"])("FileInput"),b=Object(j["resolveComponent"])("Slider"),m=Object(j["resolveComponent"])("Button"),p=Object(j["resolveComponent"])("Divider"),v=Object(j["resolveComponent"])("SelectOptGroup"),O=Object(j["resolveComponent"])("IconDown");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Qy,[$y,Object(j["createElementVNode"])("div",eg,[Object(j["createVNode"])(r,{style:{flex:"10"},value:e.background.type,onChange:t[0]||(t[0]=function(t){return e.updateBackgroundType(t)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{value:"solid"},{default:Object(j["withCtx"])((function(){return[tg]})),_:1}),Object(j["createVNode"])(a,{value:"image"},{default:Object(j["withCtx"])((function(){return[ng]})),_:1}),Object(j["createVNode"])(a,{value:"gradient"},{default:Object(j["withCtx"])((function(){return[og]})),_:1})]})),_:1},8,["value"]),cg,"solid"===e.background.type?(Object(j["openBlock"])(),Object(j["createBlock"])(d,{key:0,trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{modelValue:e.background.color,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.updateBackground({color:t})})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,{color:e.background.color||"#fff",style:{flex:"10"}},null,8,["color"])]})),_:1})):"image"===e.background.type?(Object(j["openBlock"])(),Object(j["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(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{value:"contain"},{default:Object(j["withCtx"])((function(){return[lg]})),_:1}),Object(j["createVNode"])(a,{value:"repeat"},{default:Object(j["withCtx"])((function(){return[ag]})),_:1}),Object(j["createVNode"])(a,{value:"cover"},{default:Object(j["withCtx"])((function(){return[rg]})),_:1})]})),_:1},8,["value"])):(Object(j["openBlock"])(),Object(j["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(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{value:"linear"},{default:Object(j["withCtx"])((function(){return[ig]})),_:1}),Object(j["createVNode"])(a,{value:"radial"},{default:Object(j["withCtx"])((function(){return[ug]})),_:1})]})),_:1},8,["value"]))]),"image"===e.background.type?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",dg,[Object(j["createVNode"])(f,{onChange:t[4]||(t[4]=function(t){return e.uploadBackgroundImage(t)})},{default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("div",sg,[Object(j["createElementVNode"])("div",{class:"content",style:Object(j["normalizeStyle"])({backgroundImage:"url(".concat(e.background.image,")")})},[Object(j["createVNode"])(s)],4)])]})),_:1})])):Object(j["createCommentVNode"])("",!0),"gradient"===e.background.type?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",fg,[Object(j["createElementVNode"])("div",bg,[mg,Object(j["createVNode"])(d,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["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(j["withCtx"])((function(){return[Object(j["createVNode"])(u,{color:e.background.gradientColor[0],style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createElementVNode"])("div",pg,[vg,Object(j["createVNode"])(d,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["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(j["withCtx"])((function(){return[Object(j["createVNode"])(u,{color:e.background.gradientColor[1],style:{flex:"3"}},null,8,["color"])]})),_:1})]),"linear"===e.background.gradientType?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Og,[hg,Object(j["createVNode"])(b,{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(j["createCommentVNode"])("",!0)])):Object(j["createCommentVNode"])("",!0),Object(j["createElementVNode"])("div",jg,[Object(j["createVNode"])(m,{style:{flex:"1"},onClick:t[8]||(t[8]=function(t){return e.applyBackgroundAllSlide()})},{default:Object(j["withCtx"])((function(){return[yg]})),_:1})]),Object(j["createVNode"])(p),Object(j["createElementVNode"])("div",gg,[xg,Object(j["createVNode"])(r,{style:{flex:"3"},value:e.viewportRatio,onChange:t[9]||(t[9]=function(t){return e.updateViewportRatio(t)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{value:.5625},{default:Object(j["withCtx"])((function(){return[Cg]})),_:1},8,["value"]),Object(j["createVNode"])(a,{value:.625},{default:Object(j["withCtx"])((function(){return[kg]})),_:1},8,["value"]),Object(j["createVNode"])(a,{value:.75},{default:Object(j["withCtx"])((function(){return[Eg]})),_:1},8,["value"])]})),_:1},8,["value"])]),Object(j["createVNode"])(p),wg,Object(j["createElementVNode"])("div",Ng,[Vg,Object(j["createVNode"])(r,{style:{flex:"3"},value:e.theme.fontName,onChange:t[10]||(t[10]=function(t){return e.updateTheme({fontName:t})})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(v,{label:"系统字体"},{default:Object(j["withCtx"])((function(){return[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.availableFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:e.value,value:e.value},{default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("span",{style:Object(j["normalizeStyle"])({fontFamily:e.value})},Object(j["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(j["createVNode"])(v,{label:"在线字体"},{default:Object(j["withCtx"])((function(){return[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.webFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:e.value,value:e.value},{default:Object(j["withCtx"])((function(){return[Object(j["createElementVNode"])("span",null,Object(j["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"])]),Object(j["createElementVNode"])("div",Ig,[Sg,Object(j["createVNode"])(d,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{modelValue:e.theme.fontColor,"onUpdate:modelValue":t[11]||(t[11]=function(t){return e.updateTheme({fontColor:t})})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,{color:e.theme.fontColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createElementVNode"])("div",Bg,[Lg,Object(j["createVNode"])(d,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{modelValue:e.theme.backgroundColor,"onUpdate:modelValue":t[12]||(t[12]=function(t){return e.updateTheme({backgroundColor:t})})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,{color:e.theme.backgroundColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createElementVNode"])("div",Tg,[_g,Object(j["createVNode"])(d,{trigger:"click"},{content:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{modelValue:e.theme.themeColor,"onUpdate:modelValue":t[13]||(t[13]=function(t){return e.updateTheme({themeColor:t})})},null,8,["modelValue"])]})),default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,{color:e.theme.themeColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["title dropdown",{active:e.showPresetThemes}]),onClick:t[14]||(t[14]=function(t){return e.togglePresetThemesVisible()}),style:{"margin-top":"20px"}},[Mg,Object(j["createVNode"])(O,{class:"icon"})],2),e.showPresetThemes?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Dg,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.themes,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"theme-item",key:n,style:Object(j["normalizeStyle"])({backgroundColor:t.background}),onClick:function(n){return e.updateTheme({fontColor:t.text,backgroundColor:t.background,themeColor:t.color})}},[Object(j["createElementVNode"])("div",Ag,[Object(j["createElementVNode"])("div",{class:"text",style:Object(j["normalizeStyle"])({color:t.text})},"Aa",4),Object(j["createElementVNode"])("div",{class:"color-block",style:Object(j["normalizeStyle"])({backgroundColor:t.color})},null,4)])],12,zg)})),128))])):Object(j["createCommentVNode"])("",!0),Object(j["createElementVNode"])("div",Fg,[Object(j["createVNode"])(m,{style:{flex:"1"},onClick:t[15]||(t[15]=function(t){return e.applyThemeAllSlide()})},{default:Object(j["withCtx"])((function(){return[Rg]})),_:1})])])}var Hg=[{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"}],qg=Hg,Ug=B,Wg=Object(j["defineComponent"])({name:"slide-design-panel",components:{ColorButton:Qm},setup:function(){var e=ae(),t=Object(y["c"])(ue()),n=t.availableFonts,o=Object(y["c"])(e),c=o.slides,l=o.currentSlide,a=o.viewportRatio,r=o.theme,i=Object(j["computed"])((function(){return l.value.background?l.value.background:{type:"solid",value:"#fff"}})),u=dt(),d=u.addHistorySnapshot,s=function(t){if("solid"===t){var n=Object(L["a"])(Object(L["a"])({},i.value),{},{type:"solid",color:i.value.color||"#fff"});e.updateSlide({background:n})}else if("image"===t){var o=Object(L["a"])(Object(L["a"])({},i.value),{},{type:"image",image:i.value.image||"",imageSize:i.value.imageSize||"cover"});e.updateSlide({background:o})}else{var c=Object(L["a"])(Object(L["a"])({},i.value),{},{type:"gradient",gradientType:i.value.gradientType||"linear",gradientColor:i.value.gradientColor||["#fff","#fff"],gradientRotate:i.value.gradientRotate||0});e.updateSlide({background:c})}d()},f=function(t){e.updateSlide({background:Object(L["a"])(Object(L["a"])({},i.value),t)}),d()},b=function(e){var t=e[0];t&<(t).then((function(e){return f({image:e})}))},m=function(){var t=c.value.map((function(e){return Object(L["a"])(Object(L["a"])({},e),{},{background:l.value.background})}));e.setSlides(t),d()},p=function(t){e.setTheme(t)},v=function(){var t,n=JSON.parse(JSON.stringify(c.value)),o=r.value,l=o.themeColor,a=o.backgroundColor,i=o.fontColor,u=o.fontName,s=Object(T["a"])(n);try{for(s.s();!(t=s.n()).done;){var f=t.value;f.background&&"image"===f.background.type||(f.background=Object(L["a"])(Object(L["a"])({},f.background),{},{type:"solid",color:a}));var b,m=f.elements,p=Object(T["a"])(m);try{for(p.s();!(b=p.n()).done;){var v=b.value;if("shape"===v.type)v.fill=l;else if("line"===v.type)v.color=l;else if("text"===v.type)v.defaultColor=i,v.defaultFontName=u,v.fill&&(v.fill=l);else if("table"===v.type){v.theme&&(v.theme.color=l);var O,h=Object(T["a"])(v.data);try{for(h.s();!(O=h.n()).done;){var j,y=O.value,g=Object(T["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(rL){g.e(rL)}finally{g.f()}}}catch(rL){h.e(rL)}finally{h.f()}}else"chart"===v.type?(v.themeColor=[l],v.gridColor=i):"latex"===v.type?v.color=i:"audio"===v.type&&(v.color=l)}}catch(rL){p.e(rL)}finally{p.f()}}}catch(rL){s.e(rL)}finally{s.f()}e.setSlides(n),d()},O=Object(j["ref"])(!0),h=function(){O.value=!O.value},g=function(t){e.setViewportRatio(t)};return{availableFonts:n,background:i,updateBackgroundType:s,updateBackground:f,uploadBackgroundImage:b,applyBackgroundAllSlide:m,themes:qg,theme:r,webFonts:Ug,updateTheme:p,applyThemeAllSlide:v,viewportRatio:a,updateViewportRatio:g,showPresetThemes:O,togglePresetThemesVisible:h}}});n("a26f");const Gg=eo()(Wg,[["render",Pg],["__scopeId","data-v-26058d12"]]);var Xg=Gg,Yg={class:"slide-animation-panel"},Zg={class:"animation-pool"},Jg=["onClick"],Kg={class:"animation-text"},Qg=Object(j["createTextVNode"])("应用到全部");function $g(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Yg,[Object(j["createElementVNode"])("div",Zg,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.animations,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["animation-item",{active:e.currentTurningMode===t.value}]),key:t.label,onClick:function(n){return e.updateTurningMode(t.value)}},[Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["animation-block",t.value])},null,2),Object(j["createElementVNode"])("div",Kg,Object(j["toDisplayString"])(t.label),1)],10,Jg)})),128))]),Object(j["createVNode"])(a,{style:{width:"100%"},onClick:t[0]||(t[0]=function(t){return e.applyAllSlide()})},{default:Object(j["withCtx"])((function(){return[Qg]})),_:1})])}var ex=Object(j["defineComponent"])({name:"slide-animation-panel",setup:function(){var e=ae(),t=Object(y["c"])(e),n=t.slides,o=t.currentSlide,c=Object(j["computed"])((function(){return o.value.turningMode||"slideY"})),l=[{label:"无",value:"no"},{label:"淡入淡出",value:"fade"},{label:"左右推移",value:"slideX"},{label:"上下推移",value:"slideY"}],a=dt(),r=a.addHistorySnapshot,i=function(t){t!==c.value&&(e.updateSlide({turningMode:t}),r())},u=function(){var t=n.value.map((function(e){return Object(L["a"])(Object(L["a"])({},e),{},{turningMode:o.value.turningMode})}));e.setSlides(t),r()};return{currentTurningMode:c,animations:l,updateTurningMode:i,applyAllSlide:u}}});n("6527");const tx=eo()(ex,[["render",$g],["__scopeId","data-v-78e88e36"]]);var nx=tx,ox={class:"multi-position-panel"},cx=Object(j["createTextVNode"])("水平均匀分布"),lx=Object(j["createTextVNode"])("垂直均匀分布"),ax=Object(j["createTextVNode"])("组合"),rx=Object(j["createTextVNode"])("取消组合");function ix(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconAlignLeft"),r=Object(j["resolveComponent"])("Button"),i=Object(j["resolveComponent"])("Tooltip"),u=Object(j["resolveComponent"])("IconAlignHorizontally"),d=Object(j["resolveComponent"])("IconAlignRight"),s=Object(j["resolveComponent"])("ButtonGroup"),f=Object(j["resolveComponent"])("IconAlignTop"),b=Object(j["resolveComponent"])("IconAlignVertically"),m=Object(j["resolveComponent"])("IconAlignBottom"),p=Object(j["resolveComponent"])("Divider"),v=Object(j["resolveComponent"])("IconGroup"),O=Object(j["resolveComponent"])("IconUngroup");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",ox,[Object(j["createVNode"])(s,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[0]||(t[0]=function(t){return e.alignElement(e.ElementAlignCommands.LEFT)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"水平居中"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[1]||(t[1]=function(t){return e.alignElement(e.ElementAlignCommands.HORIZONTAL)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[2]||(t[2]=function(t){return e.alignElement(e.ElementAlignCommands.RIGHT)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(s,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[3]||(t[3]=function(t){return e.alignElement(e.ElementAlignCommands.TOP)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"垂直居中"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[4]||(t[4]=function(t){return e.alignElement(e.ElementAlignCommands.VERTICAL)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下对齐"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[5]||(t[5]=function(t){return e.alignElement(e.ElementAlignCommands.BOTTOM)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(m)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),e.displayItemCount>2?(Object(j["openBlock"])(),Object(j["createBlock"])(s,{key:0,class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[6]||(t[6]=function(t){return e.uniformHorizontalDisplay()})},{default:Object(j["withCtx"])((function(){return[cx]})),_:1}),Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[7]||(t[7]=function(t){return e.uniformVerticalDisplay()})},{default:Object(j["withCtx"])((function(){return[lx]})),_:1})]})),_:1})):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])(p),Object(j["createVNode"])(s,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{disabled:!e.canCombine,onClick:t[8]||(t[8]=function(t){return e.combineElements()}),style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(v,{style:{"margin-right":"3px"}}),ax]})),_:1},8,["disabled"]),Object(j["createVNode"])(r,{disabled:e.canCombine,onClick:t[9]||(t[9]=function(t){return e.uncombineElements()}),style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(O,{style:{"margin-right":"3px"}}),rx]})),_:1},8,["disabled"])]})),_:1})])}var ux=function(){var e=ae(),t=Object(y["c"])(ue()),n=t.activeElementIdList,o=t.activeElementList,c=Object(y["c"])(e),l=c.currentSlide,a=dt(),r=a.addHistorySnapshot,i=function(t){var c,a=Ke(o.value),i=a.minX,u=a.maxX,d=a.minY,s=a.maxY,f=JSON.parse(JSON.stringify(l.value.elements)),b={},m=Object(T["a"])(o.value);try{var p=function(){var e=c.value;if(e.groupId&&!b[e.groupId]){var t=o.value.filter((function(t){return t.groupId===e.groupId}));b[e.groupId]=Ke(t)}};for(m.s();!(c=m.n()).done;)p()}catch(rL){m.e(rL)}finally{m.f()}if(t===E.LEFT)f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=b[e.groupId],o=t.minX-i;e.left=e.left-o}else if("rotate"in e&&e.rotate){var c=Ze({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),l=c.offsetX;e.left=i-l}else e.left=i}));else if(t===E.RIGHT)f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=b[e.groupId],o=t.maxX-u;e.left=e.left-o}else{var c="line"===e.type?Math.max(e.start[0],e.end[0]):e.width;if("rotate"in e&&e.rotate){var l=Ze({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),a=l.offsetX;e.left=u-c+a}else e.left=u-c}}));else if(t===E.TOP)f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=b[e.groupId],o=t.minY-d;e.top=e.top-o}else if("rotate"in e&&e.rotate){var c=Ze({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),l=c.offsetY;e.top=d-l}else e.top=d}));else if(t===E.BOTTOM)f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=b[e.groupId],o=t.maxY-s;e.top=e.top-o}else{var c="line"===e.type?Math.max(e.start[1],e.end[1]):e.height;if("rotate"in e&&e.rotate){var l=Ze({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),a=l.offsetY;e.top=s-c+a}else e.top=s-c}}));else if(t===E.HORIZONTAL){var v=(i+u)/2;f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=b[e.groupId],o=(t.maxX+t.minX)/2,c=o-v;e.left=e.left-c}else{var l="line"===e.type?Math.max(e.start[0],e.end[0]):e.width;e.left=v-l/2}}))}else if(t===E.VERTICAL){var O=(d+s)/2;f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=b[e.groupId],o=(t.maxY+t.minY)/2,c=o-O;e.top=e.top-c}else{var l="line"===e.type?Math.max(e.start[1],e.end[1]):e.height;e.top=O-l/2}}))}e.updateSlide({elements:f}),r()};return{alignActiveElement:i}},dx=(n("4e82"),function(){var e=ae(),t=Object(y["c"])(ue()),n=t.activeElementIdList,o=t.activeElementList,c=Object(y["c"])(e),l=c.currentSlide,a=dt(),r=a.addHistorySnapshot,i=Object(j["computed"])((function(){var e,t=0,n=[],c=Object(T["a"])(o.value);try{for(c.s();!(e=c.n()).done;){var l=e.value;l.groupId?n.includes(l.groupId)||(n.push(l.groupId),t+=1):t+=1}}catch(rL){c.e(rL)}finally{c.f()}return t})),u=function(){var t,c=Ke(o.value),a=c.minX,i=c.maxX,u=JSON.parse(JSON.stringify(o.value)),d=JSON.parse(JSON.stringify(l.value.elements)),s=[],f=[],b=Object(T["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(L["a"])(Object(L["a"])({},t),{},{els:[].concat(Object($["a"])(t.els),[e])}):t})):f.push({groupId:e.groupId,els:[e]})}else{var o=Je(e),c=o.minX,l=o.maxX;s.push({min:c,max:l,el:e})}};for(b.s();!(t=b.n()).done;)m()}catch(rL){b.e(rL)}finally{b.f()}var p,v=[],O=Object(T["a"])(f);try{for(O.s();!(p=O.n()).done;){var h=p.value,j=Ke(h.els),y=j.minX,g=j.maxX;v.push({min:y,max:g,els:h.els})}}catch(rL){O.e(rL)}finally{O.f()}var x=[].concat(s,v);x.sort((function(e,t){return e.min-t.min}));var C,k=0,E=Object(T["a"])(x);try{for(E.s();!(C=E.n()).done;){var w=C.value,N=w.max-w.min;k+=N}}catch(rL){E.e(rL)}finally{E.f()}var V=(i-a-k)/(x.length-1),I=[],S=x[0],B={min:S.min,max:S.max};if("el"in S)I.push({pos:S.min,el:S.el});else{var _,M=Object(T["a"])(S.els);try{for(M.s();!(_=M.n()).done;){var D=_.value,z=Je(D),A=z.minX;I.push({pos:A,el:D})}}catch(rL){M.e(rL)}finally{M.f()}}for(var F=1;F","l","o","g","l","g","l","n","⨂","⨁","⨄","⨃","⨅","⨆","√","∛","∜","∝","∞","∟","∠","∡","∢","∧","∨","∩","∪","∫","∬","∭","∮","∯","∰","∱","∲","∳","∴","∵","∼","∽","∾","∿","≃","≄","≅","≆","≇","≈","≊","≋","≌","≍","≎","≏","≐","≑","≒","≓","≔","≕","≤","≥","≦","≧","≨","≩","≪","≫","≺","≻","≼","≽","≾","≿","⊀","⊁","⊂","⊃","⊄","⊅","⊆","⊇","⊈","⊉","⊊","⊋","⊏","⊐","⊑","⊒","⊓","⊔","⊢","⊣","⊤","⊥","⊦","⊧","⊨","⊩","⊪","⊫","⊬","⊭","⊮","⊯","⊲","⊳","⊴","⊵","⋀","⋁","⋂","⋃","⋉","⋊","⋋","⋌","⟨","⟩","⟪","⟫","⟮","⟯","⧼","⧽","⦰"]},{key:"arrow",label:"箭头",children:["←","↑","→","↓","↔","↕","↖","↗","↘","↙","↚","↛","↜","↝","↞","↟","↠","↡","↢","↣","↤","↥","↦","↧","↨","↫","↬","↭","↮","↯","↰","↱","↲","↳","↴","↵","↶","↷","↸","↹","↺","↻","↼","↽","↾","↿","⇀","⇁","⇂","⇃","⇄","⇅","⇆","⇇","⇈","⇉","⇊","⇋","⇌","⇍","⇎","⇏","⇐","⇑","⇒","⇓","⇔","⇕","⇖","⇗","⇘","⇙","⇚","⇛","⇜","⇝","⇞","⇟","⇠","⇡","⇢","⇣","⇤","⇥","⇦","⇧","⇨","⇩","⇪","⇫","⇬","⇭","⇮","⇯","⇰","⇱","⇲","⇳","⇴","⇵","⇶","⇷","⇸","⇹","⇺","⇻","⇼","⇽","⇾","⇿"]},{key:"graph",label:"图形",children:["▢","▣","▤","▥","▦","▧","▨","▩","▭","▮","▯","▰","▱","▲","▷","▼","◁","◈","◉","◍","◐","◑","◒","◓","◔","◕","◧","◨","◩","◪","◫","◬","◭","◮"]}],xx=gx,Cx=Object(j["defineComponent"])({name:"symbol-panel",setup:function(){var e=Object(j["ref"])(xx[0].key),t=Object(j["computed"])((function(){var t=xx.find((function(t){return t.key===e.value}));return(null===t||void 0===t?void 0:t.children)||[]})),n=function(e){Cl.emit(zc.RICH_TEXT_COMMAND,{action:{command:"insert",value:e}})};return{symbolPoolList:xx,symbolPool:t,selectedSymbolKey:e,selectSymbol:n}}});n("f8c7");const kx=eo()(Cx,[["render",yx],["__scopeId","data-v-e93c4822"]]);var Ex=kx,wx=Object(j["defineComponent"])({name:"toolbar",setup:function(){var e=ue(),t=Object(y["c"])(e),n=t.activeElementIdList,o=t.handleElement,c=t.toolbarState,l=Object(j["computed"])((function(){var e;return"text"===(null===(e=o.value)||void 0===e?void 0:e.type)?[{label:"样式",value:x.EL_STYLE},{label:"符号",value:x.SYMBOL},{label:"位置",value:x.EL_POSITION},{label:"动画",value:x.EL_ANIMATION}]:[{label:"样式",value:x.EL_STYLE},{label:"位置",value:x.EL_POSITION},{label:"动画",value:x.EL_ANIMATION}]})),a=[{label:"设计",value:x.SLIDE_DESIGN},{label:"切换",value:x.SLIDE_ANIMATION},{label:"动画",value:x.EL_ANIMATION}],r=[{label:"样式",value:x.EL_STYLE},{label:"位置",value:x.MULTI_POSITION}],i=function(t){e.setToolbarState(t)},u=Object(j["computed"])((function(){return n.value.length?n.value.length>1?r:l.value:a}));Object(j["watch"])(u,(function(){var t=u.value.map((function(e){return e.value}));t.includes(c.value)||e.setToolbarState(t[0])}));var d=Object(j["computed"])((function(){var e,t=(e={},Object(pe["a"])(e,x.EL_STYLE,Ej),Object(pe["a"])(e,x.EL_POSITION,Yj),Object(pe["a"])(e,x.EL_ANIMATION,Jy),Object(pe["a"])(e,x.SLIDE_DESIGN,Xg),Object(pe["a"])(e,x.SLIDE_ANIMATION,nx),Object(pe["a"])(e,x.MULTI_POSITION,bx),Object(pe["a"])(e,x.SYMBOL,Ex),e);return t[c.value]||null}));return{toolbarState:c,currentTabs:u,setToolbarState:i,currentPanelComponent:d}}});n("0510");const Nx=eo()(wx,[["render",nm],["__scopeId","data-v-017ca85e"]]);var Vx=Nx,Ix={class:"remark"},Sx=["value"];function Bx(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Ix,[Object(j["createElementVNode"])("div",{class:"resize-handler",onMousedown:t[0]||(t[0]=function(t){return e.resize(t)})},null,32),Object(j["createElementVNode"])("textarea",{value:e.remark,placeholder:"点击输入演讲者备注",onInput:t[1]||(t[1]=function(t){return e.handleInput(t)})},null,40,Sx)])}var Lx=Object(j["defineComponent"])({name:"remark",emits:["update:height"],props:{height:{type:Number,required:!0}},setup:function(e,t){var n=t.emit,o=ae(),c=Object(y["c"])(o),l=c.currentSlide,a=Object(j["computed"])((function(){var e;return(null===(e=l.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,c=t.pageY,l=e.height;document.onmousemove=function(e){if(o){var t=e.pageY,a=t-c,r=-a+l;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("6339");const Tx=eo()(Lx,[["render",Bx],["__scopeId","data-v-7ed67bb3"]]);var _x=Tx,Mx={class:"export-dialog"},Dx={class:"tabs"},zx=["onClick"],Ax={class:"content"};function Fx(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Mx,[Object(j["createElementVNode"])("div",Dx,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.tabs,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["tab",{active:t.key===e.dialogForExport}]),key:t.key,onClick:function(n){return e.setDialogForExport(t.key)}},Object(j["toDisplayString"])(t.label),11,zx)})),128))]),Object(j["createElementVNode"])("div",Ax,[(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentDialogComponent),{onClose:t[0]||(t[0]=function(t){return e.setDialogForExport("")})},null,32))])])}var Rx=function(e){return Object(j["pushScopeId"])("data-v-61e92928"),e=e(),Object(j["popScopeId"])(),e},Px={class:"export-img-dialog"},Hx={class:"thumbnails-view"},qx={class:"thumbnails",ref:"imageThumbnailsRef"},Ux={class:"configs"},Wx={class:"row"},Gx=Rx((function(){return Object(j["createElementVNode"])("div",{class:"title"},"导出格式:",-1)})),Xx=Object(j["createTextVNode"])("JPEG"),Yx=Object(j["createTextVNode"])("PNG"),Zx={class:"row"},Jx=Rx((function(){return Object(j["createElementVNode"])("div",{class:"title"},"导出范围:",-1)})),Kx=Object(j["createTextVNode"])("全部"),Qx=Object(j["createTextVNode"])("当前页"),$x=Object(j["createTextVNode"])("自定义"),eC={key:0,class:"row"},tC=["data-range"],nC={class:"row"},oC=Rx((function(){return Object(j["createElementVNode"])("div",{class:"title"},"图片质量:",-1)})),cC={class:"row"},lC=Rx((function(){return Object(j["createElementVNode"])("div",{class:"title"},"忽略在线字体:",-1)})),aC={class:"config-item"},rC={class:"btns"},iC=Object(j["createTextVNode"])("导出图片"),uC=Object(j["createTextVNode"])("关闭");function dC(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ThumbnailSlide"),r=Object(j["resolveComponent"])("RadioButton"),i=Object(j["resolveComponent"])("RadioGroup"),u=Object(j["resolveComponent"])("Slider"),d=Object(j["resolveComponent"])("Switch"),s=Object(j["resolveComponent"])("Tooltip"),f=Object(j["resolveComponent"])("Button"),b=Object(j["resolveComponent"])("FullscreenSpin");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Px,[Object(j["createElementVNode"])("div",Hx,[Object(j["createElementVNode"])("div",qx,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.renderSlides,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{class:"thumbnail",key:e.id,slide:e,size:1600},null,8,["slide"])})),128))],512)]),Object(j["createElementVNode"])("div",Ux,[Object(j["createElementVNode"])("div",Wx,[Gx,Object(j["createVNode"])(i,{class:"config-item",value:e.format,"onUpdate:value":t[0]||(t[0]=function(t){return e.format=t})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{width:"50%"},value:"jpeg"},{default:Object(j["withCtx"])((function(){return[Xx]})),_:1}),Object(j["createVNode"])(r,{style:{width:"50%"},value:"png"},{default:Object(j["withCtx"])((function(){return[Yx]})),_:1})]})),_:1},8,["value"])]),Object(j["createElementVNode"])("div",Zx,[Jx,Object(j["createVNode"])(i,{class:"config-item",value:e.rangeType,"onUpdate:value":t[1]||(t[1]=function(t){return e.rangeType=t})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{width:"33.33%"},value:"all"},{default:Object(j["withCtx"])((function(){return[Kx]})),_:1}),Object(j["createVNode"])(r,{style:{width:"33.33%"},value:"current"},{default:Object(j["withCtx"])((function(){return[Qx]})),_:1}),Object(j["createVNode"])(r,{style:{width:"33.33%"},value:"custom"},{default:Object(j["withCtx"])((function(){return[$x]})),_:1})]})),_:1},8,["value"])]),"custom"===e.rangeType?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",eC,[Object(j["createElementVNode"])("div",{class:"title","data-range":"(".concat(e.range[0]," ~ ").concat(e.range[1],")")},"自定义范围:",8,tC),Object(j["createVNode"])(u,{class:"config-item",range:"",min:1,max:e.slides.length,step:1,value:e.range,"onUpdate:value":t[2]||(t[2]=function(t){return e.range=t})},null,8,["max","value"])])):Object(j["createCommentVNode"])("",!0),Object(j["createElementVNode"])("div",nC,[oC,Object(j["createVNode"])(u,{class:"config-item",min:0,max:1,step:.1,value:e.quality,"onUpdate:value":t[3]||(t[3]=function(t){return e.quality=t})},null,8,["step","value"])]),Object(j["createElementVNode"])("div",cC,[lC,Object(j["createElementVNode"])("div",aC,[Object(j["createVNode"])(s,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"导出时默认忽略在线字体,若您在幻灯片中使用了在线字体,且希望导出后保留相关样式,可选择关闭【忽略在线字体】选项,但要注意这将会增加导出用时。"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d,{checked:e.ignoreWebfont,"onUpdate:checked":t[4]||(t[4]=function(t){return e.ignoreWebfont=t})},null,8,["checked"])]})),_:1},8,["mouseEnterDelay"])])])]),Object(j["createElementVNode"])("div",rC,[Object(j["createVNode"])(f,{class:"btn export",type:"primary",onClick:t[5]||(t[5]=function(t){return e.expImage()})},{default:Object(j["withCtx"])((function(){return[iC]})),_:1}),Object(j["createVNode"])(f,{class:"btn close",onClick:t[6]||(t[6]=function(t){return e.close()})},{default:Object(j["withCtx"])((function(){return[uC]})),_:1})]),Object(j["createVNode"])(b,{loading:e.exporting,tip:"正在导出..."},null,8,["loading"])])}var sC=Object(j["defineComponent"])({name:"export-img-dialog",components:{ThumbnailSlide:ks},setup:function(e,t){var n=t.emit,o=Object(y["c"])(ae()),c=o.slides,l=o.currentSlide,a=Object(j["ref"])(),r=Object(j["ref"])("all"),i=Object(j["ref"])([1,c.value.length]),u=Object(j["ref"])("jpeg"),d=Object(j["ref"])(1),s=Object(j["ref"])(!0),f=Object(j["computed"])((function(){return"all"===r.value?c.value:"current"===r.value?[l.value]:c.value.filter((function(e,t){var n=Object(ve["a"])(i.value,2),o=n[0],c=n[1];return t>=o-1&&t<=c-1}))})),b=function(){return n("close")},m=Gn(),p=m.exportImage,v=m.exporting,O=function(){a.value&&p(a.value,u.value,d.value,s.value)};return{imageThumbnailsRef:a,slides:c,rangeType:r,range:i,format:u,quality:d,ignoreWebfont:s,renderSlides:f,exporting:v,expImage:O,close:b}}});n("cfda");const fC=eo()(sC,[["render",dC],["__scopeId","data-v-61e92928"]]);var bC=fC,mC={class:"export-json-dialog"},pC={class:"preview"},vC={class:"btns"},OC=Object(j["createTextVNode"])("导出 JSON"),hC=Object(j["createTextVNode"])("关闭");function jC(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",mC,[Object(j["createElementVNode"])("div",pC,[Object(j["createElementVNode"])("pre",null,Object(j["toDisplayString"])(e.slides),1)]),Object(j["createElementVNode"])("div",vC,[Object(j["createVNode"])(a,{class:"btn export",type:"primary",onClick:t[0]||(t[0]=function(t){return e.exportJSON()})},{default:Object(j["withCtx"])((function(){return[OC]})),_:1}),Object(j["createVNode"])(a,{class:"btn close",onClick:t[1]||(t[1]=function(t){return e.close()})},{default:Object(j["withCtx"])((function(){return[hC]})),_:1})])])}var yC=Object(j["defineComponent"])({name:"export-json-dialog",setup:function(e,t){var n=t.emit,o=function(){return n("close")},c=Object(y["c"])(ae()),l=c.slides,a=Gn(),r=a.exportJSON;return{slides:l,exportJSON:r,close:o}}});n("18cc");const gC=eo()(yC,[["render",jC],["__scopeId","data-v-54705363"]]);var xC=gC,CC=function(e){return Object(j["pushScopeId"])("data-v-7c83ddb5"),e=e(),Object(j["popScopeId"])(),e},kC={class:"export-pdf-dialog"},EC={class:"thumbnails-view"},wC={class:"thumbnails",ref:"pdfThumbnailsRef"},NC={class:"configs"},VC={class:"row"},IC=CC((function(){return Object(j["createElementVNode"])("div",{class:"title"},"导出范围:",-1)})),SC=Object(j["createTextVNode"])("全部幻灯片"),BC=Object(j["createTextVNode"])("当前幻灯片"),LC={class:"row"},TC=CC((function(){return Object(j["createElementVNode"])("div",{class:"title"},"每页数量:",-1)})),_C=Object(j["createTextVNode"])("1"),MC=Object(j["createTextVNode"])("2"),DC=Object(j["createTextVNode"])("3"),zC={class:"row"},AC=CC((function(){return Object(j["createElementVNode"])("div",{class:"title"},"边缘留白:",-1)})),FC={class:"config-item"},RC=CC((function(){return Object(j["createElementVNode"])("div",{class:"tip"}," 注意:若打印预览与实际样式不一致,请在弹出的打印窗口中勾选【背景图形】选项。 ",-1)})),PC={class:"btns"},HC=Object(j["createTextVNode"])("打印 / 导出 PDF"),qC=Object(j["createTextVNode"])("关闭");function UC(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ThumbnailSlide"),r=Object(j["resolveComponent"])("RadioButton"),i=Object(j["resolveComponent"])("RadioGroup"),u=Object(j["resolveComponent"])("SelectOption"),d=Object(j["resolveComponent"])("Select"),s=Object(j["resolveComponent"])("Switch"),f=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",kC,[Object(j["createElementVNode"])("div",EC,[Object(j["createElementVNode"])("div",wC,["current"===e.rangeType?(Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:0,class:"thumbnail",slide:e.currentSlide,size:1600},null,8,["slide"])):(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],{key:1},Object(j["renderList"])(e.slides,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{class:Object(j["normalizeClass"])(["thumbnail",{"break-page":(n+1)%e.count===0}]),key:t.id,slide:t,size:1600},null,8,["class","slide"])})),128))],512)]),Object(j["createElementVNode"])("div",NC,[Object(j["createElementVNode"])("div",VC,[IC,Object(j["createVNode"])(i,{class:"config-item",value:e.rangeType,"onUpdate:value":t[0]||(t[0]=function(t){return e.rangeType=t})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{width:"50%"},value:"all"},{default:Object(j["withCtx"])((function(){return[SC]})),_:1}),Object(j["createVNode"])(r,{style:{width:"50%"},value:"current"},{default:Object(j["withCtx"])((function(){return[BC]})),_:1})]})),_:1},8,["value"])]),Object(j["createElementVNode"])("div",LC,[TC,Object(j["createVNode"])(d,{class:"config-item",value:e.count,"onUpdate:value":t[1]||(t[1]=function(t){return e.count=t})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,{value:1},{default:Object(j["withCtx"])((function(){return[_C]})),_:1}),Object(j["createVNode"])(u,{value:2},{default:Object(j["withCtx"])((function(){return[MC]})),_:1}),Object(j["createVNode"])(u,{value:3},{default:Object(j["withCtx"])((function(){return[DC]})),_:1})]})),_:1},8,["value"])]),Object(j["createElementVNode"])("div",zC,[AC,Object(j["createElementVNode"])("div",FC,[Object(j["createVNode"])(s,{checked:e.padding,"onUpdate:checked":t[2]||(t[2]=function(t){return e.padding=t})},null,8,["checked"])])]),RC]),Object(j["createElementVNode"])("div",PC,[Object(j["createVNode"])(f,{class:"btn export",type:"primary",onClick:t[3]||(t[3]=function(t){return e.expPDF()})},{default:Object(j["withCtx"])((function(){return[HC]})),_:1}),Object(j["createVNode"])(f,{class:"btn close",onClick:t[4]||(t[4]=function(t){return e.close()})},{default:Object(j["withCtx"])((function(){return[qC]})),_:1})])])}var WC=function(){var e=document.createElement("iframe");return e.style.width="0",e.style.height="0",e.style.position="absolute",e.style.right="0",e.style.top="0",e.style.border="0",document.body.appendChild(e),e},GC=function(e,t,n){var o="",c="",l=document.styleSheets;if(l){var a,r=Object(T["a"])(l);try{for(r.s();!(a=r.n()).done;){var i=a.value;if(i.cssRules){var u,d=Object(T["a"])(i.cssRules);try{for(d.s();!(u=d.n()).done;){var s=u.value;c+=s.cssText}}catch(rL){d.e(rL)}finally{d.f()}}}}catch(rL){r.e(rL)}finally{r.f()}}var f=n.width,b=n.height,m=n.margin,p='\n \n \n \n "),v=""+t.innerHTML+"";e.open(),e.write("\n ".concat(o,"\n \n ").concat(p,"\n ").concat(v,"\n \n ")),e.close()},XC=function(e,t){var n=WC(),o=n.contentWindow;if(n.contentDocument&&o){GC(n.contentDocument,e,t);var c=function(){o.focus(),o.print(),document.body.removeChild(n)};n.addEventListener("load",c)}},YC=Object(j["defineComponent"])({name:"export-pdf-dialog",components:{ThumbnailSlide:ks},setup:function(e,t){var n=t.emit,o=Object(y["c"])(ae()),c=o.slides,l=o.currentSlide,a=Object(j["ref"])(),r=Object(j["ref"])("all"),i=Object(j["ref"])(1),u=Object(j["ref"])(!0),d=function(){return n("close")},s=function(){if(a.value){var e={width:1600,height:"all"===r.value?900*i.value:900,margin:u.value?50:0};XC(a.value,e)}};return{pdfThumbnailsRef:a,slides:c,currentSlide:l,rangeType:r,count:i,padding:u,expPDF:s,close:d}}});n("8ad9");const ZC=eo()(YC,[["render",UC],["__scopeId","data-v-7c83ddb5"]]);var JC=ZC,KC=function(e){return Object(j["pushScopeId"])("data-v-dad79818"),e=e(),Object(j["popScopeId"])(),e},QC={class:"export-pptx-dialog"},$C={class:"configs"},ek={class:"row"},tk=KC((function(){return Object(j["createElementVNode"])("div",{class:"title"},"导出范围:",-1)})),nk=Object(j["createTextVNode"])("全部"),ok=Object(j["createTextVNode"])("当前页"),ck=Object(j["createTextVNode"])("自定义"),lk={key:0,class:"row"},ak=["data-range"],rk={class:"row"},ik=KC((function(){return Object(j["createElementVNode"])("div",{class:"title"},"覆盖默认母版:",-1)})),uk={class:"config-item"},dk={class:"btns"},sk=Object(j["createTextVNode"])("导出 PPTX"),fk=Object(j["createTextVNode"])("关闭");function bk(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("RadioButton"),r=Object(j["resolveComponent"])("RadioGroup"),i=Object(j["resolveComponent"])("Slider"),u=Object(j["resolveComponent"])("Switch"),d=Object(j["resolveComponent"])("Button"),s=Object(j["resolveComponent"])("FullscreenSpin");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",QC,[Object(j["createElementVNode"])("div",$C,[Object(j["createElementVNode"])("div",ek,[tk,Object(j["createVNode"])(r,{class:"config-item",value:e.rangeType,"onUpdate:value":t[0]||(t[0]=function(t){return e.rangeType=t})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{style:{width:"33.33%"},value:"all"},{default:Object(j["withCtx"])((function(){return[nk]})),_:1}),Object(j["createVNode"])(a,{style:{width:"33.33%"},value:"current"},{default:Object(j["withCtx"])((function(){return[ok]})),_:1}),Object(j["createVNode"])(a,{style:{width:"33.33%"},value:"custom"},{default:Object(j["withCtx"])((function(){return[ck]})),_:1})]})),_:1},8,["value"])]),"custom"===e.rangeType?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",lk,[Object(j["createElementVNode"])("div",{class:"title","data-range":"(".concat(e.range[0]," ~ ").concat(e.range[1],")")},"自定义范围:",8,ak),Object(j["createVNode"])(i,{class:"config-item",range:"",min:1,max:e.slides.length,step:1,value:e.range,"onUpdate:value":t[1]||(t[1]=function(t){return e.range=t})},null,8,["max","value"])])):Object(j["createCommentVNode"])("",!0),Object(j["createElementVNode"])("div",rk,[ik,Object(j["createElementVNode"])("div",uk,[Object(j["createVNode"])(u,{checked:e.masterOverwrite,"onUpdate:checked":t[2]||(t[2]=function(t){return e.masterOverwrite=t})},null,8,["checked"])])])]),Object(j["createElementVNode"])("div",dk,[Object(j["createVNode"])(d,{class:"btn export",type:"primary",onClick:t[3]||(t[3]=function(t){return e.exportPPTX(e.selectedSlides,e.masterOverwrite)})},{default:Object(j["withCtx"])((function(){return[sk]})),_:1}),Object(j["createVNode"])(d,{class:"btn close",onClick:t[4]||(t[4]=function(t){return e.close()})},{default:Object(j["withCtx"])((function(){return[fk]})),_:1})]),Object(j["createVNode"])(s,{loading:e.exporting,tip:"正在导出..."},null,8,["loading"])])}var mk=Object(j["defineComponent"])({name:"export-pptx-dialog",setup:function(e,t){var n=t.emit,o=Object(y["c"])(ae()),c=o.slides,l=o.currentSlide,a=Object(j["ref"])("all"),r=Object(j["ref"])([1,c.value.length]),i=Object(j["ref"])(!0),u=Object(j["computed"])((function(){return"all"===a.value?c.value:"current"===a.value?[l.value]:c.value.filter((function(e,t){var n=Object(ve["a"])(r.value,2),o=n[0],c=n[1];return t>=o-1&&t<=c-1}))})),d=function(){return n("close")},s=Gn(),f=s.exportPPTX,b=s.exporting;return{slides:c,rangeType:a,range:r,masterOverwrite:i,exporting:b,selectedSlides:u,exportPPTX:f,close:d}}});n("4d4d");const pk=eo()(mk,[["render",bk],["__scopeId","data-v-dad79818"]]);var vk=pk,Ok=function(e){return Object(j["pushScopeId"])("data-v-1e43fa60"),e=e(),Object(j["popScopeId"])(),e},hk={class:"export-pptist-dialog"},jk={class:"configs"},yk={class:"row"},gk=Ok((function(){return Object(j["createElementVNode"])("div",{class:"title"},"导出范围:",-1)})),xk=Object(j["createTextVNode"])("全部"),Ck=Object(j["createTextVNode"])("当前页"),kk=Object(j["createTextVNode"])("自定义"),Ek={key:0,class:"row"},wk=["data-range"],Nk=Ok((function(){return Object(j["createElementVNode"])("div",{class:"tip"}," 提示:.pptist 是本应用的特有文件后缀,支持将该类型的文件导入回应用中。 ",-1)})),Vk={class:"btns"},Ik=Object(j["createTextVNode"])("导出 .pptist 文件"),Sk=Object(j["createTextVNode"])("关闭");function Bk(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("RadioButton"),r=Object(j["resolveComponent"])("RadioGroup"),i=Object(j["resolveComponent"])("Slider"),u=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",hk,[Object(j["createElementVNode"])("div",jk,[Object(j["createElementVNode"])("div",yk,[gk,Object(j["createVNode"])(r,{class:"config-item",value:e.rangeType,"onUpdate:value":t[0]||(t[0]=function(t){return e.rangeType=t})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{style:{width:"33.33%"},value:"all"},{default:Object(j["withCtx"])((function(){return[xk]})),_:1}),Object(j["createVNode"])(a,{style:{width:"33.33%"},value:"current"},{default:Object(j["withCtx"])((function(){return[Ck]})),_:1}),Object(j["createVNode"])(a,{style:{width:"33.33%"},value:"custom"},{default:Object(j["withCtx"])((function(){return[kk]})),_:1})]})),_:1},8,["value"])]),"custom"===e.rangeType?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Ek,[Object(j["createElementVNode"])("div",{class:"title","data-range":"(".concat(e.range[0]," ~ ").concat(e.range[1],")")},"自定义范围:",8,wk),Object(j["createVNode"])(i,{class:"config-item",range:"",min:1,max:e.slides.length,step:1,value:e.range,"onUpdate:value":t[1]||(t[1]=function(t){return e.range=t})},null,8,["max","value"])])):Object(j["createCommentVNode"])("",!0),Nk]),Object(j["createElementVNode"])("div",Vk,[Object(j["createVNode"])(u,{class:"btn export",type:"primary",onClick:t[2]||(t[2]=function(t){return e.exportSpecificFile(e.selectedSlides)})},{default:Object(j["withCtx"])((function(){return[Ik]})),_:1}),Object(j["createVNode"])(u,{class:"btn close",onClick:t[3]||(t[3]=function(t){return e.close()})},{default:Object(j["withCtx"])((function(){return[Sk]})),_:1})])])}var Lk=Object(j["defineComponent"])({name:"export-pptist-dialog",setup:function(e,t){var n=t.emit,o=Object(y["c"])(ae()),c=o.slides,l=o.currentSlide,a=Object(j["ref"])("all"),r=Object(j["ref"])([1,c.value.length]),i=Object(j["computed"])((function(){return"all"===a.value?c.value:"current"===a.value?[l.value]:c.value.filter((function(e,t){var n=Object(ve["a"])(r.value,2),o=n[0],c=n[1];return t>=o-1&&t<=c-1}))})),u=function(){return n("close")},d=Gn(),s=d.exportSpecificFile;return{slides:c,rangeType:a,range:r,selectedSlides:i,exportSpecificFile:s,close:u}}});n("a812");const Tk=eo()(Lk,[["render",Bk],["__scopeId","data-v-1e43fa60"]]);var _k=Tk,Mk=Object(j["defineComponent"])({name:"export-dialog",setup:function(){var e=ue(),t=Object(y["c"])(e),n=t.dialogForExport,o=e.setDialogForExport,c=[{key:"pptist",label:"导出 pptist 文件"},{key:"pptx",label:"导出 PPTX"},{key:"image",label:"导出图片"},{key:"json",label:"导出 JSON"},{key:"pdf",label:"打印 / 导出 PDF"}],l=Object(j["computed"])((function(){var e={image:bC,json:xC,pdf:JC,pptx:vk,pptist:_k};return e[n.value]||null}));return{currentDialogComponent:l,tabs:c,dialogForExport:n,setDialogForExport:o}}});n("b54c");const Dk=eo()(Mk,[["render",Fx],["__scopeId","data-v-17be277c"]]);var zk=Dk,Ak=Object(j["defineComponent"])({name:"editor",components:{EditorHeader:lo,Canvas:Ss,CanvasTool:_b,Thumbnails:Kb,Toolbar:Vx,Remark:_x,ExportDialog:zk},setup:function(){var e=ue(),t=Object(y["c"])(e),n=t.dialogForExport,o=function(){return e.setDialogForExport("")},c=Object(j["ref"])(40);return Nt(),Vt(),{remarkHeight:c,dialogForExport:n,closeExportDialog:o}}});n("2540");const Fk=eo()(Ak,[["render",Be],["__scopeId","data-v-5ff9efcc"]]);var Rk=Fk,Pk={class:"pptist-screen"};function Hk(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("BaseView"),r=Object(j["resolveComponent"])("PresenterView");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Pk,["base"===e.viewMode?(Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:0,changeViewMode:e.changeViewMode},null,8,["changeViewMode"])):"presenter"===e.viewMode?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:1,changeViewMode:e.changeViewMode},null,8,["changeViewMode"])):Object(j["createCommentVNode"])("",!0)])}var qk={class:"tools-left"},Uk={class:"content"};function Wk(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ScreenSlideList"),r=Object(j["resolveComponent"])("SlideThumbnails"),i=Object(j["resolveComponent"])("WritingBoardTool"),u=Object(j["resolveComponent"])("IconLeftTwo"),d=Object(j["resolveComponent"])("IconRightTwo"),s=Object(j["resolveComponent"])("IconWrite"),f=Object(j["resolveComponent"])("Tooltip"),b=Object(j["resolveComponent"])("IconMagic"),m=Object(j["resolveComponent"])("IconListView"),p=Object(j["resolveComponent"])("IconOffScreenOne"),v=Object(j["resolveComponent"])("IconFullScreenOne"),O=Object(j["resolveComponent"])("IconPower"),h=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["base-view",{"laser-pen":e.laserPen}])},[Object(j["withDirectives"])(Object(j["createVNode"])(a,{slideWidth:e.slideWidth,slideHeight:e.slideHeight,animationIndex:e.animationIndex,turnSlideToId:e.turnSlideToId,manualExitFullscreen:e.manualExitFullscreen,onWheel: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)})},null,8,["slideWidth","slideHeight","animationIndex","turnSlideToId","manualExitFullscreen"]),[[h,e.contextmenus]]),e.slideThumbnailModelVisible?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,turnSlideToIndex:e.turnSlideToIndex,onClose:t[3]||(t[3]=function(t){return e.slideThumbnailModelVisible=!1})},null,8,["turnSlideToIndex"])):Object(j["createCommentVNode"])("",!0),e.writingBoardToolVisible?(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:1,slideWidth:e.slideWidth,slideHeight:e.slideHeight,onClose:t[4]||(t[4]=function(t){return e.writingBoardToolVisible=!1})},null,8,["slideWidth","slideHeight"])):Object(j["createCommentVNode"])("",!0),Object(j["createElementVNode"])("div",qk,[Object(j["createVNode"])(u,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:t[5]||(t[5]=function(t){return e.execPrev()})}),Object(j["createVNode"])(d,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:t[6]||(t[6]=function(t){return e.execNext()})})]),Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["tools-right",{visible:e.rightToolsVisible}]),onMouseleave:t[14]||(t[14]=function(t){return e.rightToolsVisible=!1}),onMouseenter:t[15]||(t[15]=function(t){return e.rightToolsVisible=!0})},[Object(j["createElementVNode"])("div",Uk,[Object(j["createElementVNode"])("div",{class:"tool-btn page-number",onClick:t[7]||(t[7]=function(t){return e.slideThumbnailModelVisible=!0})},"幻灯片 "+Object(j["toDisplayString"])(e.slideIndex+1)+" / "+Object(j["toDisplayString"])(e.slides.length),1),Object(j["createVNode"])(f,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"画笔工具"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(s,{class:"tool-btn",onClick:t[8]||(t[8]=function(t){return e.writingBoardToolVisible=!0})})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(f,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"激光笔"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b,{class:Object(j["normalizeClass"])(["tool-btn",{active:e.laserPen}]),onClick:t[9]||(t[9]=function(t){return e.laserPen=!e.laserPen})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(f,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"演讲者视图"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(m,{class:"tool-btn",onClick:t[10]||(t[10]=function(t){return e.changeViewMode("presenter")})})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(f,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:e.fullscreenState?"退出全屏":"进入全屏"},{default:Object(j["withCtx"])((function(){return[e.fullscreenState?(Object(j["openBlock"])(),Object(j["createBlock"])(p,{key:0,class:"tool-btn",onClick:t[11]||(t[11]=function(t){return e.manualExitFullscreen()})})):(Object(j["openBlock"])(),Object(j["createBlock"])(v,{key:1,class:"tool-btn",onClick:t[12]||(t[12]=function(t){return e.enterFullscreen()})}))]})),_:1},8,["mouseEnterDelay","title"]),Object(j["createVNode"])(f,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"结束放映"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(O,{class:"tool-btn",onClick:t[13]||(t[13]=function(t){return e.exitScreening()})})]})),_:1},8,["mouseEnterDelay"])])],34)],2)}var Gk=function(){var e=ae(),t=Object(y["c"])(e),n=t.slides,o=t.slideIndex,c=t.formatedAnimations,l=Object(j["ref"])(0),a=Object(j["ref"])(!1),r=Object(j["ref"])(o.value),i=function e(){if(!a.value){var t=c.value[l.value],n=t.animations,o=t.autoNext;l.value+=1,a.value=!0;var r,i=0,u=Object(T["a"])(n);try{var d=function(){var t=r.value,c=document.querySelector("#screen-element-".concat(t.elId," [class^=base-element-]"));if(!c)return i+=1,"continue";var l="".concat(Ey).concat(t.effect);c.style.removeProperty("--animate-duration");var u,d=Object(T["a"])(c.classList);try{for(d.s();!(u=d.n()).done;){var s=u.value;-1!==s.indexOf(Ey)&&c.classList.remove(s,"".concat(Ey,"animated"))}}catch(rL){d.e(rL)}finally{d.f()}c.style.setProperty("--animate-duration","".concat(t.duration,"ms")),c.classList.add(l,"".concat(Ey,"animated"));var f=function(){"out"!==t.type&&(c.style.removeProperty("--animate-duration"),c.classList.remove(l,"".concat(Ey,"animated"))),i+=1,i===n.length&&(a.value=!1,o&&e())};c.addEventListener("animationend",f,{once:!0})};for(u.s();!(r=u.n()).done;)d()}catch(rL){u.e(rL)}finally{u.f()}}},u=function(){l.value-=1;var e,t=c.value[l.value].animations,n=Object(T["a"])(t);try{for(n.s();!(e=n.n()).done;){var o=e.value,a=document.querySelector("#screen-element-".concat(o.elId," [class^=base-element-]"));if(a){a.style.removeProperty("--animate-duration");var r,i=Object(T["a"])(a.classList);try{for(i.s();!(r=i.n()).done;){var u=r.value;-1!==u.indexOf(Ey)&&a.classList.remove(u,"".concat(Ey,"animated"))}}catch(rL){i.e(rL)}finally{i.f()}}}}catch(rL){n.e(rL)}finally{n.f()}t.every((function(e){return"attention"===e.type}))&&b()},d=Object(j["ref"])(0),s=function(){d.value&&(clearInterval(d.value),d.value=0)};Object(j["onUnmounted"])(s);var f=Object(ne["throttle"])((function(e){De["a"].success(e)}),1e3,{leading:!0,trailing:!1}),b=function(){c.value.length&&l.value>0?u():o.value>0?(e.updateSlideIndex(o.value-1),o.value0&&m()}),500,{leading:!0,trailing:!1}),O=Object(j["ref"])(null),h=function(e){O.value={x:e.changedTouches[0].pageX,y:e.changedTouches[0].pageY}},g=function(e){if(O.value){var t=Math.abs(O.value.x-e.changedTouches[0].pageX),n=e.changedTouches[0].pageY-O.value.y;Math.abs(n)>t&&Math.abs(n)>50&&(O.value=null,n>0?b():m())}},x=function(e){var t=e.key.toUpperCase();t===I.UP||t===I.LEFT||t===I.PAGEUP?b():t!==I.DOWN&&t!==I.RIGHT&&t!==I.SPACE&&t!==I.ENTER&&t!==I.PAGEDOWN||m()};Object(j["onMounted"])((function(){return document.addEventListener("keydown",x)})),Object(j["onUnmounted"])((function(){return document.removeEventListener("keydown",x)}));var C=function(){e.updateSlideIndex(o.value-1),l.value=0},k=function(){e.updateSlideIndex(o.value+1),l.value=0},E=function(t){e.updateSlideIndex(t),l.value=0},w=function(t){var o=n.value.findIndex((function(e){return e.id===t}));-1!==o&&(e.updateSlideIndex(o),l.value=0)};return{autoPlayTimer:d,autoPlay:p,closeAutoPlay:s,mousewheelListener:v,touchStartListener:h,touchEndListener:g,turnPrevSlide:C,turnNextSlide:k,turnSlideToIndex:E,turnSlideToId:w,execPrev:b,execNext:m,animationIndex:l}},Xk=function(e){var t=ae(),n=Object(y["c"])(t),o=n.viewportRatio,c=Object(j["ref"])(0),l=Object(j["ref"])(0),a=function(){var t,n,a=(null===e||void 0===e?void 0:e.value)||document.body,r=a.clientWidth,i=a.clientHeight;i/r===o.value?(t=r,n=i):i/r>o.value?(t=r,n=r*o.value):(t=i/o.value,n=i),c.value=t,l.value=n};return Object(j["onMounted"])((function(){a(),window.addEventListener("resize",a)})),Object(j["onUnmounted"])((function(){window.removeEventListener("resize",a)})),{slideWidth:c,slideHeight:l}},Yk=function(){var e=Object(j["ref"])(!0),t=Object(j["ref"])(!0),n=Et(),o=n.exitScreening,c=function(){e.value=kt(),!e.value&&t.value&&o(),t.value=!0};Object(j["onMounted"])((function(){e.value=kt(),document.addEventListener("fullscreenchange",c),document.addEventListener("webkitfullscreenchange",c)})),Object(j["onUnmounted"])((function(){document.removeEventListener("fullscreenchange",c),document.removeEventListener("webkitfullscreenchange",c)}));var l=function(){e.value&&(t.value=!1,Ct())};return{fullscreenState:e,manualExitFullscreen:l}},Zk={class:"screen-slide-list"};function Jk(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ScreenSlide");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Zk,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.slides,(function(t,n){var o;return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["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||null!==(o=t.animations)&&void 0!==o&&o.length?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{key:0,class:"slide-content",style:Object(j["normalizeStyle"])({width:e.slideWidth+"px",height:e.slideHeight+"px"})},[Object(j["createVNode"])(a,{slide:t,scale:e.scale,animationIndex:e.animationIndex,turnSlideToId:e.turnSlideToId,manualExitFullscreen:e.manualExitFullscreen},null,8,["slide","scale","animationIndex","turnSlideToId","manualExitFullscreen"])],4)):Object(j["createCommentVNode"])("",!0)],2)})),128))])}function Kk(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ScreenElement");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"screen-slide",style:Object(j["normalizeStyle"])({width:e.VIEWPORT_SIZE+"px",height:e.VIEWPORT_SIZE*e.viewportRatio+"px",transform:"scale(".concat(e.scale,")")})},[Object(j["createElementVNode"])("div",{class:"background",style:Object(j["normalizeStyle"])(Object(L["a"])({},e.backgroundStyle))},null,4),(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.slide.elements,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:t.id,elementInfo:t,elementIndex:n+1,animationIndex:e.animationIndex,turnSlideToId:e.turnSlideToId,manualExitFullscreen:e.manualExitFullscreen},null,8,["elementInfo","elementIndex","animationIndex","turnSlideToId","manualExitFullscreen"])})),128))],4)}var Qk=["id","title"];function $k(e,t,n,o,c,l){var a;return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["screen-element",{link:e.elementInfo.link}]),id:"screen-element-".concat(e.elementInfo.id),style:Object(j["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(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentElementComponent),{elementInfo:e.elementInfo},null,8,["elementInfo"]))],14,Qk)}function eE(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("BaseChartElement");return Object(j["openBlock"])(),Object(j["createBlock"])(a,{class:"screen-element-chart",elementInfo:e.elementInfo},null,8,["elementInfo"])}var tE=Object(j["defineComponent"])({name:"screen-element-chart",components:{BaseChartElement:qd},props:{elementInfo:{type:Object,required:!0}}});const nE=eo()(tE,[["render",eE]]);var oE=nE,cE={class:"element-content"};function lE(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("VideoPlayer");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"screen-element-video",style:Object(j["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(j["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(j["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(j["createElementVNode"])("div",cE,[e.inCurrentSlide?(Object(j["openBlock"])(),Object(j["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(j["createCommentVNode"])("",!0)])],4)],4)}var aE=Object(j["defineComponent"])({name:"screen-element-video",components:{VideoPlayer:_r},props:{elementInfo:{type:Object,required:!0}},setup:function(){var e=Object(y["c"])(ae()),t=e.currentSlide,n=Object(j["inject"])(uo)||Object(j["ref"])(1),o=Object(j["inject"])(so)||Object(j["ref"])(""),c=Object(j["computed"])((function(){return t.value.id===o.value}));return{scale:n,inCurrentSlide:c}}});n("0419");const rE=eo()(aE,[["render",lE],["__scopeId","data-v-0ef8b6c0"]]);var iE=rE,uE={class:"element-content"};function dE(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconVolumeNotice"),r=Object(j["resolveComponent"])("AudioPlayer");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"screen-element-audio",style:Object(j["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(j["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(j["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(j["createElementVNode"])("div",uE,[Object(j["createVNode"])(a,{class:"audio-icon",style:Object(j["normalizeStyle"])({fontSize:e.audioIconSize,color:e.elementInfo.color}),onClick:t[0]||(t[0]=function(t){return e.toggle()})},null,8,["style"]),e.inCurrentSlide?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,class:"audio-player",ref:"audioPlayerRef",style:Object(j["normalizeStyle"])(Object(L["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(j["createCommentVNode"])("",!0)])],4)],4)}var sE=Object(j["defineComponent"])({name:"screen-element-audio",components:{AudioPlayer:ri},props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(y["c"])(ae()),n=t.viewportRatio,o=t.currentSlide,c=Object(j["inject"])(uo)||Object(j["ref"])(1),l=Object(j["inject"])(so)||Object(j["ref"])(""),a=Object(j["computed"])((function(){return o.value.id===l.value})),r=Object(j["computed"])((function(){return Math.min(e.elementInfo.width,e.elementInfo.height)+"px"})),i=Object(j["computed"])((function(){var t=at,o=at*n.value,l=280/c.value,a=50/c.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"}})),u=Object(j["ref"])(),d=function(){u.value&&u.value.toggle()};return{scale:c,inCurrentSlide:a,audioIconSize:r,audioPlayerPosition:i,audioPlayerRef:u,toggle:d}}});n("a52e");const fE=eo()(sE,[["render",dE],["__scopeId","data-v-1adba489"]]);var bE=fE,mE=Object(j["defineComponent"])({name:"screen-element",props:{elementInfo:{type:Object,required:!0},elementIndex:{type:Number,required:!0},animationIndex:{type:Number,required:!0},turnSlideToId:{type:Function,required:!0},manualExitFullscreen:{type:Function,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){var t,n=(t={},Object(pe["a"])(t,Te.IMAGE,jd),Object(pe["a"])(t,Te.TEXT,kd),Object(pe["a"])(t,Te.SHAPE,Td),Object(pe["a"])(t,Te.LINE,Fd),Object(pe["a"])(t,Te.CHART,oE),Object(pe["a"])(t,Te.TABLE,ts),Object(pe["a"])(t,Te.LATEX,us),Object(pe["a"])(t,Te.VIDEO,iE),Object(pe["a"])(t,Te.AUDIO,bE),t);return n[e.elementInfo.type]||null})),n=Object(y["c"])(ae()),o=n.formatedAnimations,c=n.theme,l=Object(j["computed"])((function(){var t=o.value.findIndex((function(t){var n=t.animations.map((function(e){return e.elId}));return n.includes(e.elementInfo.id)}));if(-1===t)return!1;if(t=o?r:a-i/o*a,-1===d?n:1*n/3+2*d/3},w=function(t,n){var o=(new Date).getTime();if("pen"===e.model){var c=k(t,n),l=o-u,i=E(c,l);x(t,n,i),d=i}else"mark"===e.model?x(t,n,a.value):C(t,n);r={x:t,y:n},u=(new Date).getTime()},N=function(e){if(!o.value)return[0,0];var t=e instanceof MouseEvent?e:e.changedTouches[0],n=o.value.getBoundingClientRect(),c=t.pageX-n.x,l=t.pageY-n.y;return[c,l]},V=function(e){var t=N(e),n=Object(ve["a"])(t,2),o=n[0],c=n[1],l=o/p.value,a=c/v.value;i=!0,r={x:l,y:a},u=(new Date).getTime(),e instanceof MouseEvent||(s.value={x:o,y:c},f.value=!0)},I=function(e){var t=N(e),n=Object(ve["a"])(t,2),o=n[0],c=n[1],l=o/p.value,a=c/v.value;s.value={x:o,y:c},i&&w(l,a)},S=function(){i&&(i=!1)},B=function(){t&&o.value&&t.clearRect(0,0,o.value.width,o.value.height)},L=function(){var e;return null===(e=o.value)||void 0===e?void 0:e.toDataURL()},T=function(e){var n=new Image;n.src=e,n.onload=function(){t&&t.drawImage(n,0,0)}},_=Object(ne["throttle"])((function(t){"eraser"===e.model&&(t.deltaY<0&&l.value<200?l.value+=20:t.deltaY>0&&l.value>20&&(l.value-=20)),"pen"===e.model&&(t.deltaY<0&&c.value<10?c.value+=2:t.deltaY>0&&c.value>4&&(c.value-=2)),"mark"===e.model&&(t.deltaY<0&&a.value<40?a.value+=4:t.deltaY>0&&a.value>16&&(a.value-=4))}),300,{leading:!0,trailing:!1});return{mouse:s,mouseInCanvas:f,penSize:c,rubberSize:l,markSize:a,writingBoardRef:n,canvasRef:o,canvasWidth:b,canvasHeight:m,handleMousedown:V,handleMousemove:I,handleMouseup:S,clearCanvas:B,getImageDataURL:L,setImageDataURL:T,mousewheelListener:_}}});n("c6ae");const FE=eo()(AE,[["render",zE],["__scopeId","data-v-9ac1670a"]]);var RE=FE,PE=["#000000","#ffffff","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c","#ffff3a"],HE=Object(j["defineComponent"])({name:"writing-board-tool",emits:["close"],components:{WritingBoard:RE},props:{slideWidth:{type:Number,required:!0},slideHeight:{type:Number,required:!0},position:{type:Object,default:function(){return{right:"5px",bottom:"5px"}}}},setup:function(e,t){var n=t.emit,o=Object(j["ref"])(),c=Object(j["ref"])("#e2534d"),l=Object(j["ref"])("pen"),a=Object(j["ref"])(!1),r=function(e){l.value=e},i=function(){o.value.clearCanvas()},u=function(e){"eraser"===l.value&&(l.value="pen"),c.value=e},d=function(){n("close")};return{writingBoardRef:o,writingBoardColors:PE,writingBoardColor:c,writingBoardModel:l,blackboard:a,changeModel:r,clearCanvas:i,changeColor:u,closeWritingBoard:d}}});n("3147");const qE=eo()(HE,[["render",_E],["__scopeId","data-v-3ca1d362"]]);var UE=qE,WE=Object(j["defineComponent"])({name:"screen",components:{ScreenSlideList:xE,SlideThumbnails:SE,WritingBoardTool:UE},props:{changeViewMode:{type:Function,required:!0}},setup:function(e){var t=Object(y["c"])(ae()),n=t.slides,o=t.slideIndex,c=Gk(),l=c.autoPlayTimer,a=c.autoPlay,r=c.closeAutoPlay,i=c.mousewheelListener,u=c.touchStartListener,d=c.touchEndListener,s=c.turnPrevSlide,f=c.turnNextSlide,b=c.turnSlideToIndex,m=c.turnSlideToId,p=c.execPrev,v=c.execNext,O=c.animationIndex,h=Xk(),g=h.slideWidth,x=h.slideHeight,C=Et(),k=C.exitScreening,E=Yk(),w=E.fullscreenState,N=E.manualExitFullscreen,V=Object(j["ref"])(!1),I=Object(j["ref"])(!1),S=Object(j["ref"])(!1),B=Object(j["ref"])(!1),L=function(){return[{text:"上一页",subText:"↑ ←",disable:o.value<=0,handler:function(){return s()}},{text:"下一页",subText:"↓ →",disable:o.value>=n.value.length-1,handler:function(){return f()}},{text:"第一页",disable:0===o.value,handler:function(){return b(0)}},{text:"最后一页",disable:o.value===n.value.length-1,handler:function(){return b(n.value.length-1)}},{divider:!0},{text:"显示工具栏",handler:function(){return V.value=!0}},{text:"查看所有幻灯片",handler:function(){return S.value=!0}},{text:"画笔工具",handler:function(){return I.value=!0}},{text:"演讲者视图",handler:function(){return e.changeViewMode("presenter")}},{divider:!0},{text:l.value?"取消自动放映":"自动放映",handler:l.value?r:a},{text:"结束放映",subText:"ESC",handler:k}]};return{slides:n,slideIndex:o,slideWidth:g,slideHeight:x,mousewheelListener:i,touchStartListener:u,touchEndListener:d,animationIndex:O,contextmenus:L,execPrev:p,execNext:v,turnSlideToIndex:b,turnSlideToId:m,slideThumbnailModelVisible:S,writingBoardToolVisible:I,rightToolsVisible:V,fullscreenState:w,exitScreening:k,enterFullscreen:xt,manualExitFullscreen:N,laserPen:B}}});n("4236");const GE=eo()(WE,[["render",Wk],["__scopeId","data-v-54670d0c"]]);var XE=GE,YE=function(e){return Object(j["pushScopeId"])("data-v-ce50b150"),e=e(),Object(j["popScopeId"])(),e},ZE={class:"presenter-view"},JE={class:"toolbar"},KE=YE((function(){return Object(j["createElementVNode"])("span",null,"普通视图",-1)})),QE=YE((function(){return Object(j["createElementVNode"])("span",null,"画笔",-1)})),$E=YE((function(){return Object(j["createElementVNode"])("span",null,"激光笔",-1)})),ew=YE((function(){return Object(j["createElementVNode"])("span",null,"结束放映",-1)})),tw={class:"content"},nw=["onClick"],ow={class:"remark"},cw={class:"header"},lw=YE((function(){return Object(j["createElementVNode"])("span",null,"演讲者备注",-1)})),aw=["innerHTML"],rw={class:"remark-scale"};function iw(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconListView"),r=Object(j["resolveComponent"])("IconWrite"),i=Object(j["resolveComponent"])("IconMagic"),u=Object(j["resolveComponent"])("IconOffScreenOne"),d=Object(j["resolveComponent"])("Divider"),s=Object(j["resolveComponent"])("IconPower"),f=Object(j["resolveComponent"])("ScreenSlideList"),b=Object(j["resolveComponent"])("WritingBoardTool"),m=Object(j["resolveComponent"])("ThumbnailSlide"),p=Object(j["resolveComponent"])("IconMinus"),v=Object(j["resolveComponent"])("IconPlus"),O=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",ZE,[Object(j["createElementVNode"])("div",JE,[Object(j["createElementVNode"])("div",{class:"tool-btn",onClick:t[0]||(t[0]=function(t){return e.changeViewMode("base")})},[Object(j["createVNode"])(a,{class:"tool-icon"}),KE]),Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["tool-btn",{active:e.writingBoardToolVisible}]),onClick:t[1]||(t[1]=function(t){return e.writingBoardToolVisible=!e.writingBoardToolVisible})},[Object(j["createVNode"])(r,{class:"tool-icon"}),QE],2),Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["tool-btn",{active:e.laserPen}]),onClick:t[2]||(t[2]=function(t){return e.laserPen=!e.laserPen})},[Object(j["createVNode"])(i,{class:"tool-icon"}),$E],2),Object(j["createElementVNode"])("div",{class:"tool-btn",onClick:t[3]||(t[3]=function(){return e.fullscreenState?e.manualExitFullscreen():e.enterFullscreen()})},[e.fullscreenState?(Object(j["openBlock"])(),Object(j["createBlock"])(u,{key:0,class:"tool-icon"})):(Object(j["openBlock"])(),Object(j["createBlock"])(u,{key:1,class:"tool-icon"})),Object(j["createElementVNode"])("span",null,Object(j["toDisplayString"])(e.fullscreenState?"退出全屏":"全屏"),1)]),Object(j["createVNode"])(d,{class:"divider"}),Object(j["createElementVNode"])("div",{class:"tool-btn",onClick:t[4]||(t[4]=function(t){return e.exitScreening()})},[Object(j["createVNode"])(s,{class:"tool-icon"}),ew])]),Object(j["createElementVNode"])("div",tw,[Object(j["createElementVNode"])("div",{class:Object(j["normalizeClass"])(["slide-list-wrap",{"laser-pen":e.laserPen}]),ref:"slideListWrapRef"},[Object(j["withDirectives"])(Object(j["createVNode"])(f,{slideWidth:e.slideWidth,slideHeight:e.slideHeight,animationIndex:e.animationIndex,turnSlideToId:e.turnSlideToId,manualExitFullscreen:e.manualExitFullscreen,onWheel:t[5]||(t[5]=function(t){return e.mousewheelListener(t)}),onTouchstart:t[6]||(t[6]=function(t){return e.touchStartListener(t)}),onTouchend:t[7]||(t[7]=function(t){return e.touchEndListener(t)})},null,8,["slideWidth","slideHeight","animationIndex","turnSlideToId","manualExitFullscreen"]),[[O,e.contextmenus]]),e.writingBoardToolVisible?(Object(j["openBlock"])(),Object(j["createBlock"])(b,{key:0,slideWidth:e.slideWidth,slideHeight:e.slideHeight,position:{left:"75px",top:"5px"},onClose:t[8]||(t[8]=function(t){return e.writingBoardToolVisible=!1})},null,8,["slideWidth","slideHeight"])):Object(j["createCommentVNode"])("",!0)],2),Object(j["createElementVNode"])("div",{class:"thumbnails",ref:"thumbnailsRef",onWheel:t[9]||(t[9]=Object(j["withModifiers"])((function(t){return e.handleMousewheelThumbnails(t)}),["prevent"]))},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.slides,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["thumbnail",{active:n===e.slideIndex}]),key:t.id,onClick:function(t){return e.turnSlideToIndex(n)}},[Object(j["createVNode"])(m,{slide:t,size:120/e.viewportRatio,visible:n40||(B.value=e)};Object(j["watch"])(o,(function(){Object(j["nextTick"])((function(){if(r.value){var e=r.value.querySelector(".thumbnail.active");if(e){var t=r.value.offsetWidth,n=e.offsetLeft;r.value.scrollTo({left:n-t/2,behavior:"smooth"})}}}))}));var M=function(){return[{text:"上一页",subText:"↑ ←",disable:o.value<=0,handler:function(){return m()}},{text:"下一页",subText:"↓ →",disable:o.value>=n.value.length-1,handler:function(){return p()}},{text:"第一页",disable:0===o.value,handler:function(){return v(0)}},{text:"最后一页",disable:o.value===n.value.length-1,handler:function(){return v(n.value.length-1)}},{divider:!0},{text:"画笔工具",handler:function(){return i.value=!0}},{text:"普通视图",handler:function(){return e.changeViewMode("base")}},{divider:!0},{text:"结束放映",subText:"ESC",handler:E}]};return{slides:n,slideIndex:o,viewportRatio:c,remarkFontSize:B,currentSlideRemark:L,setRemarkFontSize:_,slideListWrapRef:a,thumbnailsRef:r,slideWidth:x,slideHeight:C,animationIndex:h,turnSlideToId:O,mousewheelListener:s,touchStartListener:f,touchEndListener:b,turnSlideToIndex:v,contextmenus:M,slidesLoadLimit:N,handleMousewheelThumbnails:T,exitScreening:E,fullscreenState:I,enterFullscreen:xt,manualExitFullscreen:S,writingBoardToolVisible:i,laserPen:u}}});n("f146");const dw=eo()(uw,[["render",iw],["__scopeId","data-v-ce50b150"]]);var sw=dw,fw=Object(j["defineComponent"])({name:"pptist-screen",components:{BaseView:XE,PresenterView:sw},setup:function(){var e=Object(j["ref"])("base"),t=function(t){e.value=t},n=Et(),o=n.exitScreening,c=function(e){var t=e.key.toUpperCase();t===I.ESC&&o()};return Object(j["onMounted"])((function(){return document.addEventListener("keydown",c)})),Object(j["onUnmounted"])((function(){return document.removeEventListener("keydown",c)})),{viewMode:e,changeViewMode:t}}});n("953f");const bw=eo()(fw,[["render",Hk],["__scopeId","data-v-18f794c8"]]);var mw=bw,pw={class:"mobile"};function vw(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",pw,[(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentComponent),{changeMode:e.changeMode},null,8,["changeMode"]))])}var Ow={class:"mobile-editor"};function hw(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("Header"),r=Object(j["resolveComponent"])("AlignmentLine"),i=Object(j["resolveComponent"])("MobileOperate"),u=Object(j["resolveComponent"])("MobileEditableElement"),d=Object(j["resolveComponent"])("SlideToolbar"),s=Object(j["resolveComponent"])("ElementToolbar");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Ow,[Object(j["createVNode"])(a,{changeMode:e.changeMode},null,8,["changeMode"]),Object(j["createElementVNode"])("div",{class:"content",ref:"contentRef",onTouchstart:t[0]||(t[0]=function(t){return e.handleClickBlankArea()})},[Object(j["createElementVNode"])("div",{class:"viewport-wrapper",style:Object(j["normalizeStyle"])(e.viewportStyles)},[Object(j["createElementVNode"])("div",{class:"background",style:Object(j["normalizeStyle"])(e.backgroundStyle)},null,4),(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.alignmentLines,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:n,type:t.type,axis:t.axis,length:t.length,canvasScale:e.canvasScale},null,8,["type","axis","length","canvasScale"])})),128)),(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.elementList,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:t.id},["line"!==t.type?(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:0,elementInfo:t,isSelected:e.activeElementIdList.includes(t.id),canvasScale:e.canvasScale,scaleElement:e.scaleElement},null,8,["elementInfo","isSelected","canvasScale","scaleElement"])):Object(j["createCommentVNode"])("",!0)],64)})),128)),Object(j["createElementVNode"])("div",{class:"viewport",style:Object(j["normalizeStyle"])({transform:"scale(".concat(e.canvasScale,")")})},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.elementList,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])(u,{key:t.id,elementInfo:t,elementIndex:n+1,selectElement:e.selectElement},null,8,["elementInfo","elementIndex","selectElement"])})),128))],4)],4)],544),Object(j["createVNode"])(d),e.handleElement?(Object(j["openBlock"])(),Object(j["createBlock"])(s,{key:0})):Object(j["createCommentVNode"])("",!0)])}function jw(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"mobile-editable-element",style:Object(j["normalizeStyle"])({zIndex:e.elementIndex})},[(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentElementComponent),{elementInfo:e.elementInfo,selectElement:e.selectElement,contextmenus:function(){return null}},null,8,["elementInfo","selectElement","contextmenus"]))],4)}var yw=Object(j["defineComponent"])({name:"mobile-editable-element",props:{elementInfo:{type:Object,required:!0},elementIndex:{type:Number,required:!0},selectElement:{type:Function,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){var t,n=(t={},Object(pe["a"])(t,Te.IMAGE,kc),Object(pe["a"])(t,Te.TEXT,Dl),Object(pe["a"])(t,Te.SHAPE,ea),Object(pe["a"])(t,Te.LINE,pa),Object(pe["a"])(t,Te.CHART,Ea),Object(pe["a"])(t,Te.TABLE,Ya),Object(pe["a"])(t,Te.LATEX,tr),Object(pe["a"])(t,Te.VIDEO,zr),Object(pe["a"])(t,Te.AUDIO,di),t);return n[e.elementInfo.type]||null}));return{currentElementComponent:t}}});const gw=eo()(yw,[["render",jw]]);var xw=gw;function Cw(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("BorderLine"),r=Object(j["resolveComponent"])("ResizeHandler");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"mobile-operate",style:Object(j["normalizeStyle"])({top:e.elementInfo.top*e.canvasScale+"px",left:e.elementInfo.left*e.canvasScale+"px",transform:"rotate(".concat(e.rotate,"deg)"),transformOrigin:"".concat(e.elementInfo.width*e.canvasScale/2,"px ").concat(e.elementInfo.height*e.canvasScale/2,"px")})},[e.isSelected?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(a,{class:"operate-border-line",key:e.type,type:e.type,style:Object(j["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(j["normalizeStyle"])(t.style),onTouchstart:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onTouchstart"])})),128))],64)):Object(j["createCommentVNode"])("",!0)],4)}var kw=Object(j["defineComponent"])({name:"mobile-operate",components:{BorderLine:$i,ResizeHandler:Zi},props:{elementInfo:{type:Object,required:!0},isSelected:{type:Boolean,required:!0},canvasScale:{type:Number,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){return"rotate"in e.elementInfo?e.elementInfo.rotate:0})),n=Object(j["computed"])((function(){return e.elementInfo.width*e.canvasScale})),o=Object(j["computed"])((function(){return e.elementInfo.height*e.canvasScale})),c=Wi(n,o),l=c.borderLines,a=c.resizeHandlers,r=c.textElementResizeHandlers;return{rotate:t,borderLines:l,resizeHandlers:"text"===e.elementInfo.type||"table"===e.elementInfo.type?r:a}}});n("f212");const Ew=eo()(kw,[["render",Cw],["__scopeId","data-v-10f40a30"]]);var ww=Ew,Nw={class:"slide-toolbar"},Vw={class:"remark"},Iw=["value"],Sw={class:"toolbar"},Bw=Object(j["createTextVNode"])(" 新幻灯片"),Lw=Object(j["createTextVNode"])(" 复制"),Tw=Object(j["createTextVNode"])(" 删除"),_w=Object(j["createTextVNode"])(" 文字"),Mw=Object(j["createTextVNode"])("图片 "),Dw=Object(j["createTextVNode"])(" 矩形"),zw=Object(j["createTextVNode"])(" 圆形");function Aw(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconPlus"),r=Object(j["resolveComponent"])("Button"),i=Object(j["resolveComponent"])("IconCopy"),u=Object(j["resolveComponent"])("IconDelete"),d=Object(j["resolveComponent"])("ButtonGroup"),s=Object(j["resolveComponent"])("IconFontSize"),f=Object(j["resolveComponent"])("IconPicture"),b=Object(j["resolveComponent"])("FileInput"),m=Object(j["resolveComponent"])("IconSquare"),p=Object(j["resolveComponent"])("IconRound"),v=Object(j["resolveComponent"])("MobileThumbnails");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Nw,[Object(j["createElementVNode"])("div",Vw,[Object(j["createElementVNode"])("textarea",{value:e.remark,placeholder:"点击输入演讲者备注",onInput:t[0]||(t[0]=function(t){return e.handleInputMark(t)})},null,40,Iw)]),Object(j["createElementVNode"])("div",Sw,[Object(j["createVNode"])(d,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[1]||(t[1]=function(t){return e.createSlide()})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a,{class:"icon"}),Bw]})),_:1}),Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[2]||(t[2]=function(t){return e.copyAndPasteSlide()})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i,{class:"icon"}),Lw]})),_:1}),Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[3]||(t[3]=function(t){return e.deleteSlide()})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u,{class:"icon"}),Tw]})),_:1})]})),_:1}),Object(j["createVNode"])(d,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[4]||(t[4]=function(t){return e.insertTextElement()})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(s,{class:"icon"}),_w]})),_:1}),Object(j["createVNode"])(r,{style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b,{onChange:t[5]||(t[5]=function(t){return e.insertImageElement(t)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f,{class:"icon"}),Mw]})),_:1})]})),_:1}),Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[6]||(t[6]=function(t){return e.insertShapeElement("square")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(m,{class:"icon"}),Dw]})),_:1}),Object(j["createVNode"])(r,{style:{flex:"1"},onClick:t[7]||(t[7]=function(t){return e.insertShapeElement("round")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(p,{class:"icon"}),zw]})),_:1})]})),_:1})]),Object(j["createVNode"])(v)])}var Fw={class:"mobile-thumbnails"},Rw=["onClick"],Pw={class:"label"};function Hw(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ThumbnailSlide");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Fw,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.slides,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["thumbnail-item",{active:e.slideIndex===n}]),key:t.id,onClick:function(t){return e.changeSlideIndex(n)}},[Object(j["createElementVNode"])("div",Pw,Object(j["toDisplayString"])(n+1),1),Object(j["createVNode"])(a,{class:"thumbnail",slide:t,size:120,visible:n新添加文本

')},b=function(e){e&&e[0]&<(e[0]).then((function(e){return d(e)}))},m=function(e){var t={viewBox:[200,200],path:"M 0 0 L 200 0 L 200 200 L 0 200 Z"},o={viewBox:[200,200],path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z"},c={square:t,round:o},l=200;s({left:(at-l)/2,top:(at*n.value-l)/2,width:l,height:l},c[e])},p=Object(j["computed"])((function(){var e;return(null===(e=o.value)||void 0===e?void 0:e.remark)||""})),v=function(t){var n=t.target.value;e.updateSlide({remark:n})};return{remark:p,createSlide:l,copyAndPasteSlide:a,deleteSlide:r,insertTextElement:f,insertImageElement:b,insertShapeElement:m,handleInputMark:v}}});n("79ac");const Xw=eo()(Gw,[["render",Aw],["__scopeId","data-v-70590190"]]);var Yw=Xw,Zw=function(e){return Object(j["pushScopeId"])("data-v-332b9382"),e=e(),Object(j["popScopeId"])(),e},Jw={class:"element-toolbar"},Kw={class:"tabs"},Qw=["onClick"],$w={class:"content"},eN={key:0,class:"style"},tN=Object(j["createTextVNode"])("+"),nN=Object(j["createTextVNode"])("-"),oN={class:"row-block"},cN=Zw((function(){return Object(j["createElementVNode"])("div",{class:"label"},"文字颜色:",-1)})),lN={class:"colors"},aN=["onClick"],rN={class:"row-block"},iN=Zw((function(){return Object(j["createElementVNode"])("div",{class:"label"},"填充色:",-1)})),uN={class:"colors"},dN=["onClick"],sN={key:1,class:"common"},fN=Object(j["createTextVNode"])(" 复制"),bN=Object(j["createTextVNode"])(" 删除"),mN=Object(j["createTextVNode"])(" 置顶"),pN=Object(j["createTextVNode"])(" 置底"),vN=Object(j["createTextVNode"])(" 上移"),ON=Object(j["createTextVNode"])(" 下移"),hN=Object(j["createTextVNode"])(" 左对齐"),jN=Object(j["createTextVNode"])(" 水平居中"),yN=Object(j["createTextVNode"])(" 右对齐"),gN=Object(j["createTextVNode"])(" 上对齐"),xN=Object(j["createTextVNode"])(" 垂直居中"),CN=Object(j["createTextVNode"])(" 下对齐");function kN(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("IconTextBold"),r=Object(j["resolveComponent"])("CheckboxButton"),i=Object(j["resolveComponent"])("IconTextItalic"),u=Object(j["resolveComponent"])("IconTextUnderline"),d=Object(j["resolveComponent"])("IconStrikethrough"),s=Object(j["resolveComponent"])("CheckboxButtonGroup"),f=Object(j["resolveComponent"])("IconFontSize"),b=Object(j["resolveComponent"])("Button"),m=Object(j["resolveComponent"])("ButtonGroup"),p=Object(j["resolveComponent"])("Divider"),v=Object(j["resolveComponent"])("IconAlignTextLeft"),O=Object(j["resolveComponent"])("RadioButton"),h=Object(j["resolveComponent"])("IconAlignTextCenter"),y=Object(j["resolveComponent"])("IconAlignTextRight"),g=Object(j["resolveComponent"])("RadioGroup"),x=Object(j["resolveComponent"])("IconCopy"),C=Object(j["resolveComponent"])("IconDelete"),k=Object(j["resolveComponent"])("IconSendToBack"),E=Object(j["resolveComponent"])("IconBringToFrontOne"),w=Object(j["resolveComponent"])("IconBringToFront"),N=Object(j["resolveComponent"])("IconSentToBack"),V=Object(j["resolveComponent"])("IconAlignLeft"),I=Object(j["resolveComponent"])("IconAlignVertically"),S=Object(j["resolveComponent"])("IconAlignRight"),B=Object(j["resolveComponent"])("IconAlignTop"),L=Object(j["resolveComponent"])("IconAlignHorizontally"),T=Object(j["resolveComponent"])("IconAlignBottom");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",Jw,[Object(j["createElementVNode"])("div",Kw,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.tabs,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["normalizeClass"])(["tab",{active:e.activeTab===t.key}]),key:t.key,onClick:function(n){return e.activeTab=t.key}},Object(j["toDisplayString"])(t.label),11,Qw)})),128))]),Object(j["createElementVNode"])("div",$w,["style"===e.activeTab?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",eN,[Object(j["createVNode"])(s,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(r,{style:{flex:"1"},checked:e.richTextAttrs.bold,onClick:t[0]||(t[0]=function(t){return e.emitRichTextCommand("bold")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(a)]})),_:1},8,["checked"]),Object(j["createVNode"])(r,{style:{flex:"1"},checked:e.richTextAttrs.em,onClick:t[1]||(t[1]=function(t){return e.emitRichTextCommand("em")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(i)]})),_:1},8,["checked"]),Object(j["createVNode"])(r,{style:{flex:"1"},checked:e.richTextAttrs.underline,onClick:t[2]||(t[2]=function(t){return e.emitRichTextCommand("underline")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(u)]})),_:1},8,["checked"]),Object(j["createVNode"])(r,{style:{flex:"1"},checked:e.richTextAttrs.strikethrough,onClick:t[3]||(t[3]=function(t){return e.emitRichTextCommand("strikethrough")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(d)]})),_:1},8,["checked"])]})),_:1}),Object(j["createVNode"])(m,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b,{style:{flex:"2"},onClick:t[4]||(t[4]=function(t){return e.emitRichTextCommand("fontsize-add")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f),tN]})),_:1}),Object(j["createVNode"])(b,{style:{flex:"2"},onClick:t[5]||(t[5]=function(t){return e.emitRichTextCommand("fontsize-reduce")})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(f),nN]})),_:1})]})),_:1}),Object(j["createVNode"])(p,{style:{margin:"20px 0"}}),Object(j["createVNode"])(g,{class:"row","button-style":"solid",value:e.richTextAttrs.align,onChange:t[6]||(t[6]=function(t){return e.emitRichTextCommand("align",t.target.value)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(O,{value:"left",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(v)]})),_:1}),Object(j["createVNode"])(O,{value:"center",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(h)]})),_:1}),Object(j["createVNode"])(O,{value:"right",style:{flex:"1"}},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(y)]})),_:1})]})),_:1},8,["value"]),Object(j["createVNode"])(p,{style:{margin:"20px 0"}}),Object(j["createElementVNode"])("div",oN,[cN,Object(j["createElementVNode"])("div",lN,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.colors,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"color",key:t,onClick:function(n){return e.updateFontColor(t)}},[Object(j["createElementVNode"])("div",{class:"color-block",style:Object(j["normalizeStyle"])({backgroundColor:t})},null,4)],8,aN)})),128))])]),Object(j["createElementVNode"])("div",rN,[iN,Object(j["createElementVNode"])("div",uN,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.colors,(function(t){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"color",key:t,onClick:function(n){return e.updateFill(t)}},[Object(j["createElementVNode"])("div",{class:"color-block",style:Object(j["normalizeStyle"])({backgroundColor:t})},null,4)],8,dN)})),128))])])])):Object(j["createCommentVNode"])("",!0),"common"===e.activeTab?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",sN,[Object(j["createVNode"])(m,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[7]||(t[7]=function(t){return e.copyElement()})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(x,{class:"icon"}),fN]})),_:1}),Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[8]||(t[8]=function(t){return e.deleteElement()})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(C,{class:"icon"}),bN]})),_:1})]})),_:1}),Object(j["createVNode"])(p,{style:{margin:"20px 0"}}),Object(j["createVNode"])(m,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[9]||(t[9]=function(t){return e.orderElement(e.handleElement,e.ElementOrderCommands.TOP)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(k,{class:"icon"}),mN]})),_:1}),Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[10]||(t[10]=function(t){return e.orderElement(e.handleElement,e.ElementOrderCommands.BOTTOM)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(E,{class:"icon"}),pN]})),_:1}),Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[11]||(t[11]=function(t){return e.orderElement(e.handleElement,e.ElementOrderCommands.UP)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(w,{class:"icon"}),vN]})),_:1}),Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[12]||(t[12]=function(t){return e.orderElement(e.handleElement,e.ElementOrderCommands.DOWN)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(N,{class:"icon"}),ON]})),_:1})]})),_:1}),Object(j["createVNode"])(p,{style:{margin:"20px 0"}}),Object(j["createVNode"])(m,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[13]||(t[13]=function(t){return e.alignElementToCanvas(e.ElementAlignCommands.LEFT)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(V,{class:"icon"}),hN]})),_:1}),Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[14]||(t[14]=function(t){return e.alignElementToCanvas(e.ElementAlignCommands.HORIZONTAL)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(I,{class:"icon"}),jN]})),_:1}),Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[15]||(t[15]=function(t){return e.alignElementToCanvas(e.ElementAlignCommands.RIGHT)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(S,{class:"icon"}),yN]})),_:1})]})),_:1}),Object(j["createVNode"])(m,{class:"row"},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[16]||(t[16]=function(t){return e.alignElementToCanvas(e.ElementAlignCommands.TOP)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(B,{class:"icon"}),gN]})),_:1}),Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[17]||(t[17]=function(t){return e.alignElementToCanvas(e.ElementAlignCommands.VERTICAL)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(L,{class:"icon"}),xN]})),_:1}),Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[18]||(t[18]=function(t){return e.alignElementToCanvas(e.ElementAlignCommands.BOTTOM)})},{default:Object(j["withCtx"])((function(){return[Object(j["createVNode"])(T,{class:"icon"}),CN]})),_:1})]})),_:1})])):Object(j["createCommentVNode"])("",!0)])])}var EN=["#000000","#ffffff","#eeece1","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c","#c21401","#ff1e02","#ffc12a","#ffff3a","#90cf5b","#00af57"],wN=Object(j["defineComponent"])({name:"element-toolbar",setup:function(){var e=ue(),t=ae(),n=Object(y["c"])(e),o=n.handleElement,c=n.handleElementId,l=n.richTextAttrs,a=dt(),r=a.addHistorySnapshot,i=function(e,n){t.updateElement({id:e,props:n}),r()},u=[{key:"style",label:"样式"},{key:"common",label:"布局"}],d=Object(j["ref"])("common"),s=gt(),f=s.orderElement,b=Io(),m=b.alignElementToCanvas,p=ft(),v=p.addElementsFromData,O=vt(),h=O.deleteElement,g=function(){var e=JSON.parse(JSON.stringify(o.value));v([e])},x=function(e,t){Cl.emit(zc.RICH_TEXT_COMMAND,{action:{command:e,value:t}})},C=function(e){var t;if(o.value){if(("text"===o.value.type||"shape"===o.value.type&&null!==(t=o.value.text)&&void 0!==t&&t.content)&&Cl.emit(zc.RICH_TEXT_COMMAND,{action:{command:"color",value:e}}),"table"===o.value.type){for(var n=JSON.parse(JSON.stringify(o.value.data)),l=0;l=l.value?(e-20)/at:(t-20)/l.value/at}));Object(j["onMounted"])((function(){r.value.length&&t.setActiveElementIdList([]),0!==o.value&&e.updateSlideIndex(0)}));var p=Object(j["computed"])((function(){return{width:at*m.value+"px",height:at*l.value*m.value+"px"}})),v=Object(j["ref"])([]),O=function(){v.value=c.value?JSON.parse(JSON.stringify(c.value.elements)):[]};Object(j["watchEffect"])(O);var h=ko(v,d,m),g=h.dragElement,x=xo(v,d,m),C=x.scaleElement,k=function(e,n){var o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];r.value.includes(n.id)||(t.setActiveElementIdList([n.id]),t.setHandleElementId(n.id)),o&&g(e,n)},E=function(){t.setActiveElementIdList([])};return{contentRef:u,slideIndex:o,elementList:v,canvasScale:m,viewportStyles:p,backgroundStyle:b,activeElementIdList:r,alignmentLines:d,selectElement:k,handleClickBlankArea:E,scaleElement:C,handleElement:i}}});n("6baa");const FN=eo()(AN,[["render",hw],["__scopeId","data-v-f9ea6e88"]]);var RN=FN,PN={class:"header"},HN=Object(j["createTextVNode"])(" 退出播放");function qN(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("ThumbnailSlide"),r=Object(j["resolveComponent"])("IconLogout"),i=Object(j["resolveComponent"])("MobileThumbnails");return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"mobile-player",style:Object(j["normalizeStyle"])({width:e.playerSize.width+"px",height:e.playerSize.height+"px",transform:"rotate(90deg) translateY(-".concat(e.playerSize.height,"px)")})},[Object(j["createElementVNode"])("div",{class:"screen-slide-list",onClick:t[0]||(t[0]=function(t){return e.toolVisible=!e.toolVisible}),onTouchstart:t[1]||(t[1]=function(t){return e.touchStartListener(t)}),onTouchend:t[2]||(t[2]=function(t){return e.touchEndListener(t)})},[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.slides,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:Object(j["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(j["openBlock"])(),Object(j["createElementBlock"])("div",{key:0,class:"slide-content",style:Object(j["normalizeStyle"])({width:e.slideSize.width+"px",height:e.slideSize.height+"px"})},[Object(j["createVNode"])(a,{slide:t,size:e.slideSize.width},null,8,["slide","size"])],4)):Object(j["createCommentVNode"])("",!0)],2)})),128))],32),e.toolVisible?(Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:0},[Object(j["createElementVNode"])("div",PN,[Object(j["createElementVNode"])("div",{class:"back",onClick:t[3]||(t[3]=function(t){return e.changeMode("preview")})},[Object(j["createVNode"])(r),HN])]),Object(j["createVNode"])(i,{class:"thumbnails"})],64)):Object(j["createCommentVNode"])("",!0)],4)}var UN=Object(j["defineComponent"])({name:"mobile-player",components:{ThumbnailSlide:ks,MobileThumbnails:Ww},props:{changeMode:{type:Function,required:!0}},setup:function(){var e=ae(),t=Object(y["c"])(e),n=t.slides,o=t.slideIndex,c=t.currentSlide,l=t.viewportRatio,a=Object(j["ref"])(!1),r=Object(j["ref"])({width:0,height:0});Object(j["onMounted"])((function(){0!==o.value&&e.updateSlideIndex(0),r.value={width:document.body.clientHeight,height:document.body.clientWidth}}));var i=Object(j["computed"])((function(){var e=r.value.height/r.value.width,t=0,n=0;return e>=l.value?(t=r.value.width,n=t*l.value):(n=r.value.height,t=n/l.value),{width:t,height:n}})),u=Object(j["ref"])(null),d=function(e){u.value={x:e.changedTouches[0].pageX,y:e.changedTouches[0].pageY}},s=function(t){if(u.value){var c=Math.abs(u.value.y-t.changedTouches[0].pageY),l=t.changedTouches[0].pageX-u.value.x;Math.abs(l)>c&&Math.abs(l)>50&&(u.value=null,l<0&&o.value>0&&e.updateSlideIndex(o.value-1),l>0&&o.valuec?1:Math.round(100*r/c)/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(j["onUnmounted"])(r),{alphaRef:l,gradientColor:c,handleMouseDown:i,color:o}}});n("f418");const $S=eo()(QS,[["render",US],["__scopeId","data-v-6f2cb744"]]);var eB=$S,tB=function(e){return Object(j["pushScopeId"])("data-v-1766620e"),e=e(),Object(j["popScopeId"])(),e},nB={class:"hue"},oB=tB((function(){return Object(j["createElementVNode"])("div",{class:"hue-picker"},null,-1)})),cB=[oB];function lB(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",nB,[Object(j["createElementVNode"])("div",{class:"hue-container",ref:"hueRef",onMousedown:t[0]||(t[0]=function(t){return e.handleMouseDown(t)})},[Object(j["createElementVNode"])("div",{class:"hue-pointer",style:Object(j["normalizeStyle"])({left:e.pointerLeft})},cB,4)],544)])}var aB=Object(j["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(j["ref"])(0),c=Object(j["ref"])(""),l=Object(j["computed"])((function(){var t=te()(e.value).toHsl();return-1!==e.hue&&(t.h=e.hue),t})),a=Object(j["computed"])((function(){return 0===l.value.h&&"right"===c.value?"100%":100*l.value.h/360+"%"}));Object(j["watch"])((function(){return e.value}),(function(){var t=te()(e.value).toHsl(),n=0===t.s?e.hue:t.h;0!==n&&n-o.value>0&&(c.value="right"),0!==n&&n-o.value<0&&(c.value="left"),o.value=n}));var r=Object(j["ref"])(),i=function(t){if(t.preventDefault(),r.value){var o,c,a=r.value.clientWidth,i=r.value.getBoundingClientRect().left+window.pageXOffset,u=t.pageX-i;u<0?o=0:u>a?o=360:(c=100*u/a,o=360*c/100),-1!==e.hue&&l.value.h===o||n("colorChange",{h:o,l:l.value.l,s:l.value.s,a:l.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(j["onUnmounted"])(u),{hueRef:r,handleMouseDown:d,pointerLeft:a}}});n("468f");const rB=eo()(aB,[["render",lB],["__scopeId","data-v-1766620e"]]);var iB=rB,uB=function(e){return Object(j["pushScopeId"])("data-v-8982eb4a"),e=e(),Object(j["popScopeId"])(),e},dB=uB((function(){return Object(j["createElementVNode"])("div",{class:"saturation-white"},null,-1)})),sB=uB((function(){return Object(j["createElementVNode"])("div",{class:"saturation-black"},null,-1)})),fB=uB((function(){return Object(j["createElementVNode"])("div",{class:"saturation-circle"},null,-1)})),bB=[fB];function mB(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{class:"saturation",ref:"saturationRef",style:Object(j["normalizeStyle"])({background:e.bgColor}),onMousedown:t[0]||(t[0]=function(t){return e.handleMouseDown(t)})},[dB,sB,Object(j["createElementVNode"])("div",{class:"saturation-pointer",style:Object(j["normalizeStyle"])({top:e.pointerTop,left:e.pointerLeft})},bB,4)],36)}var pB=Object(j["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(j["computed"])((function(){var t=te()(e.value).toHsv();return-1!==e.hue&&(t.h=e.hue),t})),c=Object(j["computed"])((function(){return"hsl(".concat(o.value.h,", 100%, 50%)")})),l=Object(j["computed"])((function(){return-100*o.value.v+1+100+"%"})),a=Object(j["computed"])((function(){return 100*o.value.s+"%"})),r=Object(ne["throttle"])((function(e){n("colorChange",e)}),20,{leading:!0,trailing:!1}),i=Object(j["ref"])(),u=function(e){if(e.preventDefault(),i.value){var t=i.value.clientWidth,n=i.value.clientHeight,c=i.value.getBoundingClientRect().left+window.pageXOffset,l=i.value.getBoundingClientRect().top+window.pageYOffset,a=Object(ne["clamp"])(e.pageX-c,0,t),u=Object(ne["clamp"])(e.pageY-l,0,n),d=a/t,s=Object(ne["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(j["onUnmounted"])(d),{saturationRef:i,bgColor:c,handleMouseDown:s,pointerTop:l,pointerLeft:a}}});n("a46e");const vB=eo()(pB,[["render",mB],["__scopeId","data-v-8982eb4a"]]);var OB=vB,hB={class:"editable-input"},jB=["value"];function yB(e,t,n,o,c,l){return Object(j["openBlock"])(),Object(j["createElementBlock"])("div",hB,[Object(j["createElementVNode"])("input",{class:"input-content",value:e.val,onInput:t[0]||(t[0]=function(t){return e.handleInput(t)})},null,40,jB)])}var gB=Object(j["defineComponent"])({name:"editable-input",emits:["colorChange"],props:{value:{type:Object,required:!0}},setup:function(e,t){var n=t.emit,o=Object(j["computed"])((function(){var t="";return t=e.value.a<1?te()(e.value).toHex8String().toUpperCase():te()(e.value).toHexString().toUpperCase(),t.replace("#","")})),c=function(e){var t=e.target.value;t.length>=6&&n("colorChange",te()(t).toRgb())};return{val:o,handleInput:c}}});n("933d");const xB=eo()(gB,[["render",yB],["__scopeId","data-v-20bfe6b0"]]);var CB=xB,kB="RECENT_COLORS",EB=[["#7f7f7f","#f2f2f2"],["#0d0d0d","#808080"],["#1c1a10","#ddd8c3"],["#0e243d","#c6d9f0"],["#233f5e","#dae5f0"],["#632623","#f2dbdb"],["#4d602c","#eaf1de"],["#3f3150","#e6e0ec"],["#1e5867","#d9eef3"],["#99490f","#fee9da"]],wB=function(e,t,n){for(var o=te()(e).toRgb(),c=te()(t).toRgb(),l=(c.r-o.r)/n,a=(c.g-o.g)/n,r=(c.b-o.b)/n,i=[],u=0;ut&&(c.value=c.value.slice(0,t))}}),300,{trailing:!0});Object(j["onMounted"])((function(){var e=localStorage.getItem(kB);e&&(c.value=JSON.parse(e))})),Object(j["watch"])(c,(function(){var e=JSON.stringify(c.value);localStorage.setItem(kB,e)}));var d=function(e){"h"in e?(o.value=e.h,l.value=te()(e).toRgb()):(o.value=te()(e).toHsl().h,l.value=e),u()},s=function(){var e=document.querySelector(".canvas");if(e){var t=document.createElement("div");t.style.cssText="position: fixed; top: 0; left: 0; bottom: 0; right: 0; z-index: 9999; cursor: wait;",document.body.appendChild(t);var n=document.createElement("div");n.style.cssText="position: absolute; top: -100px; left: -100px; width: 16px; height: 16px; border: 1px solid #000; z-index: 999",t.appendChild(n);var c=e.getBoundingClientRect(),a=c.left,r=c.top,i=c.width,d=c.height,s=function(e){return(!e.tagName||"FOREIGNOBJECT"!==e.tagName.toUpperCase())&&(!e.classList||!e.classList.contains("operate"))};Object(fn["a"])(e,{filter:s,fontEmbedCSS:"",width:i,height:d,canvasWidth:i,canvasHeight:d,pixelRatio:1}).then((function(e){e.style.cssText="position: absolute; top: ".concat(r,"px; left: ").concat(a,"px; cursor: crosshair;"),t.style.cursor="default",t.appendChild(e);var c=e.getContext("2d");if(c){var i="",d=function(e){var t=e.x,o=e.y,l=t-a,u=o-r,d=Object(ve["a"])(c.getImageData(l,u,1,1).data,4),s=d[0],f=d[1],b=d[2],m=d[3];i="rgba(".concat(s,", ").concat(f,", ").concat(b,", ").concat((m/255).toFixed(2),")"),n.style.left=t+10+"px",n.style.top=o+10+"px",n.style.backgroundColor=i},s=function(){i="",n.style.left="-100px",n.style.top="-100px",n.style.backgroundColor=""},f=function n(c){if(i&&0===c.button){var a=te()(i);o.value=a.toHsl().h,l.value=a.toRgb(),u()}document.body.removeChild(t),e.removeEventListener("mousemove",d),e.removeEventListener("mouseleave",s),window.removeEventListener("mousedown",n)};e.addEventListener("mousemove",d),e.addEventListener("mouseleave",s),window.addEventListener("mousedown",f)}})).catch((function(){De["a"].error("取色吸管初始化失败"),document.body.removeChild(t)}))}};return{themeColors:VB,standardColors:IB,presetColors:a,color:l,hue:o,currentColor:r,changeColor:d,selectPresetColor:i,recentColors:c,pickColor:s}}});n("c685");const BB=eo()(SB,[["render",AS],["__scopeId","data-v-e0bde284"]]);var LB=BB,TB={key:0,class:"fullscreen-spin"};function _B(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("Spin");return e.loading?(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",TB,[Object(j["createVNode"])(a,{tip:e.tip,size:"large"},null,8,["tip"])])):Object(j["createCommentVNode"])("",!0)}var MB=Object(j["defineComponent"])({name:"fullscreen-spin",props:{loading:{type:Boolean,default:!1},tip:{type:String,default:""}}});n("1756");const DB=eo()(MB,[["render",_B],["__scopeId","data-v-5e77feb8"]]);var zB=DB,AB={install:function(e){e.component("FileInput",sS),e.component("CheckboxButton",pS),e.component("CheckboxButtonGroup",yS),e.component("ColorPicker",LB),e.component("FullscreenSpin",zB)}};function FB(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("MenuContent");return Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],null,[Object(j["createElementVNode"])("div",{class:"mask",onContextmenu:t[0]||(t[0]=Object(j["withModifiers"])((function(t){return e.removeContextmenu()}),["prevent"])),onMousedown:t[1]||(t[1]=function(t){return e.removeContextmenu()})},null,32),Object(j["createElementVNode"])("div",{class:"contextmenu",style:Object(j["normalizeStyle"])({left:e.style.left+"px",top:e.style.top+"px"}),onContextmenu:t[2]||(t[2]=Object(j["withModifiers"])((function(){}),["prevent"]))},[Object(j["createVNode"])(a,{menus:e.menus,handleClickMenuItem:e.handleClickMenuItem},null,8,["menus","handleClickMenuItem"])],36)],64)}var RB={class:"menu-content"},PB=["onClick"],HB={class:"text"},qB={key:0,class:"sub-text"};function UB(e,t,n,o,c,l){var a=Object(j["resolveComponent"])("menu-content",!0);return Object(j["openBlock"])(),Object(j["createElementBlock"])("ul",RB,[(Object(j["openBlock"])(!0),Object(j["createElementBlock"])(j["Fragment"],null,Object(j["renderList"])(e.menus,(function(t,n){return Object(j["openBlock"])(),Object(j["createElementBlock"])(j["Fragment"],{key:t.text||n},[t.hide?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createElementBlock"])("li",{key:0,class:Object(j["normalizeClass"])(["menu-item",{divider:t.divider,disable:t.disable}]),onClick:Object(j["withModifiers"])((function(n){return e.handleClickMenuItem(t)}),["stop"])},[t.divider?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createElementBlock"])("div",{key:0,class:Object(j["normalizeClass"])(["menu-item-content",{"has-children":t.children,"has-handler":t.handler}])},[Object(j["createElementVNode"])("span",HB,Object(j["toDisplayString"])(t.text),1),t.subText&&!t.children?(Object(j["openBlock"])(),Object(j["createElementBlock"])("span",qB,Object(j["toDisplayString"])(t.subText),1)):Object(j["createCommentVNode"])("",!0),t.children&&t.children.length?(Object(j["openBlock"])(),Object(j["createBlock"])(a,{key:1,class:"sub-menu",menus:t.children,handleClickMenuItem:e.handleClickMenuItem},null,8,["menus","handleClickMenuItem"])):Object(j["createCommentVNode"])("",!0)],2))],10,PB))],64)})),128))])}var WB=Object(j["defineComponent"])({name:"menu-content",props:{menus:{type:Array,required:!0},handleClickMenuItem:{type:Function,required:!0}}});n("0c74");const GB=eo()(WB,[["render",UB],["__scopeId","data-v-eb1555e8"]]);var XB=GB,YB=Object(j["defineComponent"])({name:"contextmenu",components:{MenuContent:XB},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(j["computed"])((function(){var t=170,n=30,o=11,c=5,l=e.axis,a=l.x,r=l.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*c,f=document.body.clientWidth,b=document.body.clientHeight;return{left:f<=a+d?a-d:a,top:b<=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 ZB=eo()(YB,[["render",FB]]);var JB=ZB,KB="CTX_CONTEXTMENU_HANDLER",QB=function(e,t,n){t.stopPropagation(),t.preventDefault();var o=n.value(e);if(o){var c=null,l=function t(){c&&(document.body.removeChild(c),c=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:l};c=document.createElement("div");var r=Object(j["createVNode"])(JB,a,null);Object(j["render"])(r,c),document.body.appendChild(c),e.classList.add("contextmenu-active"),document.body.addEventListener("scroll",l),window.addEventListener("resize",l)}},$B={mounted:function(e,t){e[KB]=function(n){return QB(e,n,t)},e.addEventListener("contextmenu",e[KB])},unmounted:function(e){e&&e[KB]&&(e.removeEventListener("contextmenu",e[KB]),delete e[KB])}},eL=$B,tL="CTX_CLICK_OUTSIDE_HANDLER",nL=function(e,t,n){var o=n.value,c=t.composedPath(),l=c?c.indexOf(e)<0:!e.contains(t.target);l&&o(t)},oL={mounted:function(e,t){e[tL]=function(n){return nL(e,n,t)},setTimeout((function(){document.addEventListener("click",e[tL])}),0)},unmounted:function(e){e[tL]&&(document.removeEventListener("click",e[tL]),delete e[tL])}},cL=oL,lL={install:function(e){e.directive("contextmenu",eL),e.directive("click-outside",cL)}},aL=Object(j["createApp"])(rV);aL.component("InputNumber",h["a"]),aL.component("Divider",O["a"]),aL.component("Button",v["a"]),aL.component("ButtonGroup",v["a"].Group),aL.component("Tooltip",p["a"]),aL.component("Popover",m["a"]),aL.component("Slider",b["a"]),aL.component("Select",f["a"]),aL.component("SelectOption",f["a"].Option),aL.component("SelectOptGroup",f["a"].OptGroup),aL.component("Switch",s["a"]),aL.component("Radio",d["a"]),aL.component("RadioGroup",d["a"].Group),aL.component("RadioButton",d["a"].Button),aL.component("Input",u["a"]),aL.component("InputGroup",u["a"].Group),aL.component("TextArea",u["a"].TextArea),aL.component("Modal",i["a"]),aL.component("Dropdown",r["a"]),aL.component("Menu",a["a"]),aL.component("MenuItem",a["a"].Item),aL.component("Checkbox",l["a"]),aL.component("Drawer",c["a"]),aL.component("Spin",o["a"]),aL.use(aS),aL.use(AB),aL.use(lL),aL.use(Object(y["a"])()),aL.mount("#app")},cfc7:function(e,t,n){},cfda:function(e,t,n){"use strict";n("78eb")},d4d8:function(e,t,n){"use strict";n("41ca")},d56f:function(e,t,n){"use strict";n("4a3d")},d582:function(e,t,n){"use strict";n("2a45")},d65a:function(e,t,n){},d72c:function(e,t,n){},d785:function(e,t,n){},d7a4:function(e,t,n){},d7a4d:function(e,t,n){"use strict";n("1ce8")},dab5:function(e,t,n){"use strict";n("6702")},db34:function(e,t,n){},de7e:function(e,t,n){"use strict";n("53cb")},de82:function(e,t,n){},dec5:function(e,t,n){},dec8:function(e,t,n){"use strict";n("4c71")},dfed:function(e,t,n){"use strict";n("33a6")},dffc:function(e,t,n){},e09a:function(e,t,n){},e1f8:function(e,t,n){},e412:function(e,t,n){"use strict";n("ec57")},e7b8:function(e,t,n){"use strict";n("46ba")},e80d:function(e,t,n){},ea09:function(e,t,n){},ec38:function(e,t,n){"use strict";n("3677")},ec57:function(e,t,n){},ed2c:function(e,t,n){},ed98:function(e,t,n){"use strict";n("cce0")},edc2:function(e,t,n){"use strict";n("b0c3")},ee0f:function(e,t,n){"use strict";n("f9ef")},ef2a:function(e,t,n){"use strict";n("6247")},f146:function(e,t,n){"use strict";n("0dd5")},f196:function(e,t,n){"use strict";n("717a")},f1ac:function(e,t,n){"use strict";n("ea09")},f212:function(e,t,n){"use strict";n("6cf8")},f258:function(e,t,n){},f418:function(e,t,n){"use strict";n("0f92")},f8b7:function(e,t,n){"use strict";n("ad93")},f8c7:function(e,t,n){"use strict";n("5a68")},f8e4:function(e,t,n){"use strict";n("d785")},f8ec:function(e,t,n){},f9ef:function(e,t,n){},fb37:function(e,t,n){"use strict";n("51ed")},fc12:function(e,t,n){"use strict";n("d72c")},fcf0:function(e,t,n){"use strict";n("838e")},fdcb:function(e,t,n){},fe89:function(e,t,n){},ff5e:function(e,t,n){},ff80:function(e,t,n){},ff9c:function(e,t,n){},ff9e:function(e,t,n){"use strict";n("4262")},ffb8:function(e,t,n){"use strict";n("3831")}}); -//# sourceMappingURL=app.d3e21c03.js.map \ No newline at end of file diff --git a/js/app.d3e21c03.js.map b/js/app.d3e21c03.js.map deleted file mode 100644 index b7affe17..00000000 --- a/js/app.d3e21c03.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/Canvas/Operate/MultiSelectOperate.vue?7dd3","webpack:///./src/views/components/element/VideoElement/ScreenVideoElement.vue?f49b","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LatexStylePanel.vue?43cd","webpack:///./src/views/Editor/Toolbar/index.vue?b585","webpack:///./src/views/components/element/ElementOutline.vue?b100","webpack:///./src/views/Editor/Canvas/ViewportBackground.vue?06f4","webpack:///./src/views/components/element/TextElement/index.vue?cf9f","webpack:///./src/views/Editor/Toolbar/common/ElementFlip.vue?ced2","webpack:///./src/components/Contextmenu/MenuContent.vue?f410","webpack:///./src/views/Editor/Toolbar/common/ElementShadow.vue?4eb8","webpack:///./src/views/components/element/TableElement/CustomTextarea.vue?a980","webpack:///./src/App.vue?9bd9","webpack:///./src/views/Mobile/MobilePlayer.vue?4b5a","webpack:///./src/components/FullscreenSpin.vue?4232","webpack:///./src/views/Editor/ExportDialog/ExportJSON.vue?9bf8","webpack:///./src/views/Editor/EditorHeader/index.vue?52d8","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue?c113","webpack:///./src/views/components/element/LineElement/index.vue?a243","webpack:///./src/views/components/element/VideoElement/VideoPlayer/index.vue?fa43","webpack:///./src/views/Editor/index.vue?0794","webpack:///./src/views/components/element/ProsemirrorEditor.vue?89d6","webpack:///./src/views/Editor/Canvas/Ruler.vue?125e","webpack:///./src/views/Screen/WritingBoardTool.vue?e8af","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/MultiStylePanel.vue?a8c0","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue?de78","webpack:///./src/views/components/element/ImageElement/BaseImageElement.vue?9eed","webpack:///./src/views/components/element/ChartElement/index.vue?05e1","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue?6a07","webpack:///./src/views/components/element/TextElement/BaseTextElement.vue?b68c","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/AudioStylePanel.vue?499a","webpack:///./src/views/Screen/BaseView.vue?275f","webpack:///./src/views/components/element/ImageElement/ImageClipHandler.vue?3fab","webpack:///./src/views/Mobile/index.vue?2929","webpack:///./src/views/components/element/LineElement/BaseLineElement.vue?ba4f","webpack:///./src/views/components/element/TableElement/BaseTableElement.vue?ea96","webpack:///./src/views/Mobile/MobileEditor/ElementToolbar.vue?2cac","webpack:///./src/components/ColorPicker/Hue.vue?3cb1","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue?4c4d","webpack:///./src/views/components/element/VideoElement/BaseVideoElement.vue?2125","webpack:///./src/views/Editor/ExportDialog/ExportPPTX.vue?b7f9","webpack:///./src/views/Mobile/MobileThumbnails.vue?bdc9","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue?f076","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue?a7f1","webpack:///./src/views/Editor/Canvas/Operate/ImageElementOperate.vue?f32f","webpack:///./src/components/LaTeXEditor/index.vue?cae8","webpack:///./src/views/Editor/Remark/index.vue?976f","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue?26c4","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue?3b58","webpack:///./src/views/Editor/Toolbar/common/ElementFilter.vue?d0a0","webpack:///./src/views/Mobile/MobileEditor/index.vue?2f90","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue?4c9e","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue?f0f1","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue?a58c","webpack:///./src/views/Mobile/MobileEditor/SlideToolbar.vue?9ac0","webpack:///./src/components/ColorPicker/Checkboard.vue?dbe5","webpack:///./src/views/Editor/Canvas/Operate/ResizeHandler.vue?c5a9","webpack:///./src/views/Editor/Canvas/Operate/LineElementOperate.vue?07b0","webpack:///./src/views/Editor/EditorHeader/HotkeyDoc.vue?20df","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue?bcef","webpack:///./src/components/CheckboxButton.vue?f525","webpack:///./src/views/components/element/ChartElement/Chart.vue?e307","webpack:///./src/views/Editor/Canvas/Operate/RotateHandler.vue?e809","webpack:///./src/views/Mobile/MobileEditor/Header.vue?e732","webpack:///./src/views/Editor/ExportDialog/ExportPDF.vue?c0b3","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue?6e1f","webpack:///./src/views/Editor/Canvas/index.vue?540b","webpack:///./src/views/components/element/TableElement/StaticTable.vue?0130","webpack:///./src/components/ColorPicker/EditableInput.vue?f472","webpack:///./src/views/components/element/TableElement/EditableTable.vue?8c01","webpack:///./src/views/Screen/index.vue?4fbc","webpack:///./src/views/Screen/ScreenSlideList.vue?91d0","webpack:///./src/views/components/element/ChartElement/Chart.vue?b455","webpack:///./src/views/components/element/ImageElement/index.vue?ae49","webpack:///./src/views/Editor/Canvas/Operate/BorderLine.vue?ce7c","webpack:///./src/views/components/element/TableElement/index.vue?d75c","webpack:///./src/views/components/element/ChartElement/BaseChartElement.vue?7c6b","webpack:///./src/views/Editor/Toolbar/SlideDesignPanel.vue?cf37","webpack:///./src/components/ColorPicker/Saturation.vue?6538","webpack:///./src/views/components/element/AudioElement/ScreenAudioElement.vue?fcfe","webpack:///./src/views/components/ThumbnailSlide/index.vue?d419","webpack:///./src/views/Editor/ExportDialog/ExportSpecificFile.vue?ca1f","webpack:///./src/views/components/element/VideoElement/index.vue?1771","webpack:///./src/views/Editor/Canvas/MouseSelection.vue?f8ce","webpack:///./src/views/components/element/ShapeElement/index.vue?6a27","webpack:///./src/views/components/element/AudioElement/index.vue?8c57","webpack:///./src/views/Editor/ExportDialog/index.vue?0c28","webpack:///./src/components/Contextmenu/index.vue?694c","webpack:///./src/components/FileInput.vue?18d0","webpack:///./src/views/components/element/LatexElement/index.vue?f439","webpack:///./src/views/Editor/Canvas/Operate/LinkHandler.vue?c7f5","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/VideoStylePanel.vue?18d8","webpack:///./src/views/components/element/AudioElement/AudioPlayer.vue?9dd7","webpack:///./src/components/CheckboxButtonGroup.vue?4731","webpack:///./src/components/ColorPicker/index.vue?1352","webpack:///./src/components/WritingBoard.vue?a9d0","webpack:///./src/App.vue?c32d","webpack:///./src/types/toolbar.ts","webpack:///./src/configs/font.ts","webpack:///./src/types/edit.ts","webpack:///./src/configs/hotkey.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/configs/storage.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?4903","webpack:///./src/types/slides.ts","webpack:///./src/utils/crypto.ts","webpack:///./src/utils/clipboard.ts","webpack:///./src/utils/element.ts","webpack:///./src/utils/textParser.ts","webpack:///./src/utils/image.ts","webpack:///./src/configs/canvas.ts","webpack:///./src/configs/shapes.ts","webpack:///./src/configs/chartTypes.ts","webpack:///./src/hooks/useHistorySnapshot.ts","webpack:///./src/hooks/useCreateElement.ts","webpack:///./src/hooks/useAddSlidesOrElements.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?2918","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?7ccd","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?4b7b","webpack:///./src/types/injectKey.ts","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?493e","webpack:///./src/hooks/useAlignElementToCanvas.ts","webpack:///./src/views/components/element/ImageElement/index.vue?492d","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?b997","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?1f43","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?da49","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?bf19","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?203a","webpack:///./src/views/components/element/ElementOutline.vue?e632","webpack:///./src/views/components/element/ElementOutline.vue","webpack:///./src/views/components/element/ElementOutline.vue?e7ed","webpack:///./src/views/components/element/ProsemirrorEditor.vue?9528","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/utils/prosemirror/commands/setTextIndent.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?de15","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?7a11","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?a681","webpack:///./src/views/components/element/ChartElement/Chart.vue?eb17","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?6a98","webpack:///./src/views/components/element/TableElement/EditableTable.vue?961f","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?ca84","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?d5f9","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?2af8","webpack:///./src/views/components/element/VideoElement/VideoPlayer/index.vue?7a25","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?6995","webpack:///./src/views/components/element/AudioElement/AudioPlayer.vue?ecf0","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?425f","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?e3ef","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue?af47","webpack:///./src/views/Editor/Canvas/Ruler.vue?27dd","webpack:///./src/views/Editor/Canvas/Ruler.vue","webpack:///./src/views/Editor/Canvas/Ruler.vue?8bb7","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue?85fd","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue?e33f","webpack:///./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue?420f","webpack:///./src/views/Editor/Canvas/hooks/useCommonOperate.ts","webpack:///./src/views/Editor/Canvas/Operate/ResizeHandler.vue?478c","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?625e","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?7234","webpack:///./src/views/Editor/Canvas/Operate/ImageElementOperate.vue?ca9d","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?a2af","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?c9be","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?f9d9","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?1076","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?67e0","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?2f13","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?204d","webpack:///./src/views/components/ThumbnailSlide/index.vue?4c45","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?5777","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?2ea4","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?324b","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?0cd1","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?551a","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue?a721","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue?258a","webpack:///./src/views/Editor/CanvasTool/LinePool.vue?1f23","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?3db6","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?dab2","webpack:///./src/views/Editor/CanvasTool/MediaInput.vue","webpack:///./src/views/Editor/CanvasTool/MediaInput.vue?23a0","webpack:///./src/components/LaTeXEditor/index.vue?4587","webpack:///./src/components/LaTeXEditor/hfmath.ts","webpack:///./src/configs/latex.ts","webpack:///./src/components/LaTeXEditor/FormulaContent.vue?7e2b","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?7dda","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/views/Editor/Toolbar/index.vue?2818","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/index.vue?984c","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue?6e18","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue?113e","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?cda4","webpack:///./src/views/Editor/Toolbar/common/ColorButton.vue?e7a0","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?0b08","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?41de","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?35da","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?20b0","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?0dd5","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?d445","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?c84c","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?cd0d","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?781e","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/AudioStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/AudioStylePanel.vue?82fb","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/MultiStylePanel.vue?0898","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/MultiStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/MultiStylePanel.vue?3f99","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/index.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/index.vue?ba7d","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue?e5f6","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue?9199","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue?0509","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?2585","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?603e","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue?09d8","webpack:///./src/views/Editor/Toolbar/MultiPositionPanel.vue?4dc6","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?3419","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?2a03","webpack:///./src/views/Editor/Remark/index.vue","webpack:///./src/views/Editor/Remark/index.vue?4c66","webpack:///./src/views/Editor/ExportDialog/index.vue?9a13","webpack:///./src/views/Editor/ExportDialog/ExportImage.vue?4c7c","webpack:///./src/views/Editor/ExportDialog/ExportImage.vue","webpack:///./src/views/Editor/ExportDialog/ExportImage.vue?e2fb","webpack:///./src/views/Editor/ExportDialog/ExportJSON.vue?c3d4","webpack:///./src/views/Editor/ExportDialog/ExportJSON.vue","webpack:///./src/views/Editor/ExportDialog/ExportJSON.vue?89c4","webpack:///./src/views/Editor/ExportDialog/ExportPDF.vue?5c9a","webpack:///./src/utils/print.ts","webpack:///./src/views/Editor/ExportDialog/ExportPDF.vue","webpack:///./src/views/Editor/ExportDialog/ExportPDF.vue?a6a5","webpack:///./src/views/Editor/ExportDialog/ExportPPTX.vue?8a4d","webpack:///./src/views/Editor/ExportDialog/ExportPPTX.vue","webpack:///./src/views/Editor/ExportDialog/ExportPPTX.vue?edaf","webpack:///./src/views/Editor/ExportDialog/ExportSpecificFile.vue?c7db","webpack:///./src/views/Editor/ExportDialog/ExportSpecificFile.vue","webpack:///./src/views/Editor/ExportDialog/ExportSpecificFile.vue?c496","webpack:///./src/views/Editor/ExportDialog/index.vue","webpack:///./src/views/Editor/ExportDialog/index.vue?5ed6","webpack:///./src/views/Editor/index.vue","webpack:///./src/views/Editor/index.vue?fb1c","webpack:///./src/views/Screen/index.vue?f3c3","webpack:///./src/views/Screen/BaseView.vue?b658","webpack:///./src/views/Screen/hooks/useExecPlay.ts","webpack:///./src/views/Screen/hooks/useSlideSize.ts","webpack:///./src/views/Screen/hooks/useFullscreen.ts","webpack:///./src/views/Screen/ScreenSlideList.vue?9ba7","webpack:///./src/views/Screen/ScreenSlide.vue?5e46","webpack:///./src/views/Screen/ScreenElement.vue?fd5d","webpack:///./src/views/components/element/ChartElement/ScreenChartElement.vue?b40b","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?d32e","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?ac4c","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/ScreenSlideList.vue","webpack:///./src/views/Screen/ScreenSlideList.vue?fd5d","webpack:///./src/views/Screen/SlideThumbnails.vue?6cb4","webpack:///./src/views/Screen/SlideThumbnails.vue","webpack:///./src/views/Screen/SlideThumbnails.vue?2aa3","webpack:///./src/views/Screen/WritingBoardTool.vue?5783","webpack:///./src/components/WritingBoard.vue?3e04","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/BaseView.vue","webpack:///./src/views/Screen/BaseView.vue?3e47","webpack:///./src/views/Screen/PresenterView.vue?a27e","webpack:///./src/views/Screen/PresenterView.vue","webpack:///./src/views/Screen/PresenterView.vue?6e6b","webpack:///./src/views/Screen/index.vue","webpack:///./src/views/Screen/index.vue?d18a","webpack:///./src/views/Mobile/index.vue?2f90","webpack:///./src/views/Mobile/MobileEditor/index.vue?559b","webpack:///./src/views/Mobile/MobileEditor/MobileEditableElement.vue?bc89","webpack:///./src/views/Mobile/MobileEditor/MobileEditableElement.vue","webpack:///./src/views/Mobile/MobileEditor/MobileEditableElement.vue?6c30","webpack:///./src/views/Mobile/MobileEditor/MobileOperate.vue?8a60","webpack:///./src/views/Mobile/MobileEditor/MobileOperate.vue","webpack:///./src/views/Mobile/MobileEditor/MobileOperate.vue?c9a6","webpack:///./src/views/Mobile/MobileEditor/SlideToolbar.vue?f466","webpack:///./src/views/Mobile/MobileThumbnails.vue?ef83","webpack:///./src/views/Mobile/MobileThumbnails.vue","webpack:///./src/views/Mobile/MobileThumbnails.vue?a0ad","webpack:///./src/views/Mobile/MobileEditor/SlideToolbar.vue","webpack:///./src/views/Mobile/MobileEditor/SlideToolbar.vue?a182","webpack:///./src/views/Mobile/MobileEditor/ElementToolbar.vue?6bd4","webpack:///./src/views/Mobile/MobileEditor/ElementToolbar.vue","webpack:///./src/views/Mobile/MobileEditor/ElementToolbar.vue?d8d2","webpack:///./src/views/Mobile/MobileEditor/Header.vue?88ab","webpack:///./src/views/Mobile/MobileEditor/Header.vue","webpack:///./src/views/Mobile/MobileEditor/Header.vue?6c75","webpack:///./src/views/Mobile/MobileEditor/index.vue","webpack:///./src/views/Mobile/MobileEditor/index.vue?8405","webpack:///./src/views/Mobile/MobilePlayer.vue?bc15","webpack:///./src/views/Mobile/MobilePlayer.vue","webpack:///./src/views/Mobile/MobilePlayer.vue?362c","webpack:///./src/views/Mobile/MobilePreview.vue?5915","webpack:///./src/views/Mobile/MobilePreview.vue","webpack:///./src/views/Mobile/MobilePreview.vue?a29a","webpack:///./src/views/Mobile/index.vue","webpack:///./src/views/Mobile/index.vue?4824","webpack:///./src/App.vue","webpack:///./src/App.vue?ae2f","webpack:///./src/registerServiceWorker.ts","webpack:///./src/plugins/icon.ts","webpack:///./src/components/FileInput.vue?352e","webpack:///./src/components/FileInput.vue","webpack:///./src/components/FileInput.vue?ae58","webpack:///./src/components/CheckboxButton.vue?57a3","webpack:///./src/components/CheckboxButton.vue","webpack:///./src/components/CheckboxButton.vue?b241","webpack:///./src/components/CheckboxButtonGroup.vue?74db","webpack:///./src/components/CheckboxButtonGroup.vue","webpack:///./src/components/CheckboxButtonGroup.vue?da6b","webpack:///./src/components/ColorPicker/index.vue?0de1","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?5ef3","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?9baf","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/ExportDialog/ExportImage.vue?9a08","webpack:///./src/views/Editor/CanvasTool/ChartPool.vue?d28e","webpack:///./src/views/Screen/ScreenElement.vue?4739","webpack:///./src/views/Editor/Toolbar/common/ElementOutline.vue?033f","webpack:///./src/views/Editor/Toolbar/common/ColorButton.vue?7b92","webpack:///./src/views/components/element/AudioElement/BaseAudioElement.vue?3687","webpack:///./src/views/Screen/SlideThumbnails.vue?9202","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue?81db","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue?739c","webpack:///./src/views/Screen/ScreenSlide.vue?5891","webpack:///./src/views/Editor/Thumbnails/LayoutPool.vue?17f5","webpack:///./src/views/Editor/Canvas/Operate/index.vue?eb9b","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue?c03e","webpack:///./src/components/LaTeXEditor/FormulaContent.vue?b12e","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue?6bea","webpack:///./src/views/Editor/Canvas/LinkDialog.vue?368f","webpack:///./src/views/Screen/PresenterView.vue?f1c8","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue?6ce9","webpack:///./src/views/components/element/ShapeElement/BaseShapeElement.vue?ada5","webpack:///./src/views/Mobile/MobileEditor/MobileOperate.vue?f0cc","webpack:///./src/components/ColorPicker/Alpha.vue?9bb4","webpack:///./src/views/Mobile/MobilePreview.vue?3777","webpack:///./src/views/Editor/Toolbar/SymbolPanel.vue?b898","webpack:///./src/views/Editor/Toolbar/MultiPositionPanel.vue?7dc9","webpack:///./src/views/Editor/Thumbnails/index.vue?2547","webpack:///./src/views/Editor/CanvasTool/LinePool.vue?aa30","webpack:///./src/views/Editor/CanvasTool/index.vue?0a18","webpack:///./src/views/Editor/CanvasTool/MediaInput.vue?2492","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","ToolbarStates","ElementOrderCommands","ElementAlignCommands","OperateBorderLines","OperateResizeHandlers","OperateLineHandlers","KEYS","SYS_FONTS","label","WEB_FONTS","view","empty","state","selection","dispatch","addMark","editorView","mark","tr","from","to","$from","$to","pos","findNodesWithSameMark","doc","markType","ii","finder","type","firstMark","fromNode","toNode","node","nodeAt","marks","find","fromPos","toPos","jj","nodeSize","equalNodeType","nodeType","Array","isArray","indexOf","findParentNodeClosestToPos","$pos","predicate","depth","before","start","findParentNode","_ref","findParentNodeOfType","isActiveOfParentNodeType","schema","nodes","getMarkAttrs","lastChild","attr","attrs","markActive","isInSet","storedMarks","rangeHasMark","getAttrValueInSelection","keepChecking","nodesBetween","_defaultAttrs","color","backcolor","fontsize","fontname","align","defaultAttrs","isBold","isEm","isUnderline","isStrikethrough","isSuperscript","isSubscript","isCode","link","isBulletList","isOrderedList","isBlockquote","bold","em","underline","strikethrough","superscript","subscript","code","bulletList","orderedList","blockquote","getFontsize","parseInt","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","wordSpace","themeColor","fontColor","backgroundColor","outline","text","useSlidesStore","theme","slides","slideIndex","viewportRatio","getters","currentSlide","currentSlideAnimations","animations","els","elIds","map","el","animation","includes","elId","formatedAnimations","trigger","last","autoNext","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","deleteElement","elementId","elementIdList","updateElement","elIdList","removeElementProps","propName","propsNames","nanoid","useMainStore","activeElementIdList","handleElementId","activeGroupElementId","canvasPercentage","canvasScale","canvasDragged","thumbnailsFocus","editorAreaFocus","disableHotkeys","showGridLines","showRuler","creatingElement","availableFonts","toolbarState","SLIDE_DESIGN","clipingImageElementId","richTextAttrs","selectedTableCells","isScaling","selectedSlidesIndex","dialogForExport","databaseId","activeElementList","slidesStore","handleElement","setActiveElementIdList","setHandleElementId","setActiveGroupElementId","setCanvasPercentage","percentage","setCanvasScale","scale","setCanvasDragged","isDragged","setThumbnailsFocus","isFocus","setEditorareaFocus","setDisableHotkeysState","disable","setGridLinesState","show","setRulerState","setCreatingElement","setAvailableFonts","setToolbarState","setClipingImageElementId","setRichtextAttrs","setSelectedTableCells","cells","setScalingState","updateSelectedSlidesIndex","setDialogForExport","LOCALSTORAGE_KEY_DISCARDED_DB","databaseNamePrefix","deleteDiscardedDB","now","Date","getTime","localStorageDiscardedDB","localStorage","getItem","localStorageDiscardedDBList","getDatabaseNames","databaseNames","discardedDBNames","split","prefix","time","delete","removeItem","version","stores","snapshots","table","db","useSnapshotStore","snapshotCursor","snapshotLength","canUndo","canRedo","setSnapshotCursor","cursor","setSnapshotLength","initSnapshotDatabase","newFirstSnapshot","add","addSnapshot","orderBy","keys","allKeys","needDeleteKeys","snapshot","snapshotLengthLimit","update","bulkDelete","unDo","mainStore","toArray","reDo","useKeyboardStore","ctrlKeyState","shiftKeyState","spaceKeyState","ctrlOrShiftKeyActive","setCtrlKeyState","active","setShiftKeyState","setSpaceKeyState","useScreenStore","setScreening","digit","len","navigator","userAgent","match","_hoisted_1","class","_hoisted_2","_hoisted_3","_component_EditorHeader","_component_Thumbnails","_component_CanvasTool","_component_Canvas","_component_Remark","_component_Toolbar","_component_ExportDialog","_component_Modal","remarkHeight","$event","visible","footer","centered","closable","destroyOnClose","onCancel","closeExportDialog","default","_","ShapePathFormulasKeys","ElementTypes","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","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","broken","mid","curve","cubic","c1","c2","p1","p2","htmlText","replace","paragraphs","string","paragraph","getImageSize","src","img","onload","imgWidth","clientWidth","imgHeight","clientHeight","onerror","file","reader","FileReader","addEventListener","readAsDataURL","VIEWPORT_SIZE","SHAPE_PATH_FORMULAS","ROUND_RECT","CUT_RECT_DIAGONAL","CUT_RECT_SINGLE","CUT_RECT_SAMESIDE","ROUND_RECT_DIAGONAL","ROUND_RECT_SINGLE","ROUND_RECT_SAMESIDE","MESSAGE","arrowWidth","arrowheight","ROUND_MESSAGE","L","lineWidth","RING_RECT","PLUS","SHAPE_LIST","pathFormula","special","outlined","CHART_TYPES","bar","horizontalBar","area","scatter","pie","ring","snapshotStore","addHistorySnapshot","trailing","redo","leading","undo","useHistorySnapshot","callback","setTimeout","createImageElement","createChartElement","newElement","chartType","gridColor","labels","legends","series","options","horizontalBars","showArea","showLine","donut","createTableElement","row","col","rowCells","colspan","rowspan","DEFAULT_CELL_WIDTH","DEFAULT_CELL_HEIGHT","colWidths","rowHeader","rowFooter","colHeader","colFooter","createTextElement","position","editorRef","querySelector","focus","createShapeElement","createLineElement","isBroken","isCurve","isCubic","createLatexElement","w","h","latex","strokeWidth","createVideoElement","createAudioElement","loop","autoplay","addElementsFromData","currentSlideElementIdList","inCurrentSlide","values","addSlidesFromData","newSlides","useCreateElement","useAddSlidesOrElements","createTextElementFromClipboard","pasteTextClipboardData","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","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","msRequestFullscreen","exitFullscreen","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","isFullscreen","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","webkitCurrentFullScreenElement","screenStore","enterScreening","enterScreeningFromStart","exitScreening","canvasScalePercentage","round","scaleCanvas","setCanvasScalePercentage","resetCanvas","keyboardStore","useSlideHandler","useCombineElement","useLockElement","useCopyAndPasteElement","useSelectAllElement","useMoveElement","useOrderElement","useScreening","useScaleCanvas","copy","cut","quickCopy","selectAll","combine","uncombine","remove","moveSlide","PAGEUP","PAGEDOWN","order","tabActiveElement","currentIndex","nextIndex","nextElementId","firstElement","keydownListener","ctrlKey","shiftKey","altKey","metaKey","ctrlOrMetaKeyActive","toUpperCase","SPACE","P","preventDefault","F5","C","X","D","Z","Y","A","G","F","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","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","href","target","_hoisted_32","_component_IconFolderClose","_component_MenuItem","_component_FileInput","_component_Menu","_component_Dropdown","_component_IconEdit","_component_IconPpt","_component_IconHelpcenter","_component_IconShare","_component_Tooltip","_component_IconGithub","_component_HotkeyDoc","_component_Drawer","overlay","accept","onChange","files","importSpecificFile","onClick","toggleGridLines","toggleRuler","goIssues","hotkeyDrawerVisible","mouseLeaveDelay","title","placement","onClose","childlessTags","closingTags","closingTagAncestorBreakers","li","dt","dd","tbody","thead","tfoot","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","exporting","exportImage","domRef","quality","ignoreWebfont","toImage","foreignObjectSpans","querySelectorAll","spanRef","removeAttribute","config","fontEmbedCSS","dataUrl","error","exportSpecificFile","_slides","blob","Blob","cover","readAsText","exportJSON","formatColor","_color","alpha","getAlpha","toHexString","formatHTML","html","ast","bulletFlag","indent","slices","obj","baseStyleObj","isBlockTag","lastSlice","breakLine","styleObj","styleAttr","styleArr","styleItem","_key","_value","dataIndentAttr","fontSize","highlight","strike","italic","fontFace","hyperlink","url","bullet","paraSpaceBefore","indentLevel","formatPoints","point","undefined","moveTo","getShadowOption","shadow","v","offset","angle","blur","getOutlineOption","transparency","dashType","getLinkOption","exportPPTX","masterOverwrite","pptx","layout","bgColor","bgAlpha","defineSlideMaster","pptxSlide","image","gradientColor","color1","color2","mix","remark","addNotes","textProps","valign","margin","lineSpacingMultiple","autoFit","charSpacing","paragraphSpace","addText","flipH","linkOption","filters","clip","shape","rounding","startX","startY","endX","endY","originW","originH","sizing","addImage","svgRef","base64SVG","fillColor","addShape","beginArrowType","endArrowType","chartData","chartColors","analogous","supplement","legend","showLegend","legendPos","legendColor","legendFontSize","ChartType","barDir","lineSize","lineSmooth","doughnut","holeSize","addChart","hiddenCells","rowData","cell","tableData","subThemeColors","_row","cellOptions","colW","border","pt","addTable","writeFile","fileName","hotkeys","hotkey","setup","__exports__","components","HotkeyDoc","useExport","open","_component_ElementCreateSelection","_component_AlignmentLine","_component_MultiSelectOperate","_component_Operate","_component_ViewportBackground","_component_MouseSelection","_component_EditableElement","_component_Ruler","_component_LinkDialog","_directive_contextmenu","_directive_click_outside","ref","onWheel","handleMousewheelCanvas","onMousedown","handleClickBlankArea","onCreated","insertElementFromCreateSelection","viewportStyles","alignmentLines","axis","scaleMultiElement","elementInfo","isSelected","isActive","isActiveGroupElement","isMultiSelect","rotateElement","scaleElement","openLinkDialog","dragLineElement","transform","mouseSelectionVisible","mouseSelection","quadrant","mouseSelectionQuadrant","elementIndex","selectElement","linkDialogVisible","contextmenus","removeEditorAreaFocus","injectKeySlideScale","injectKeySlideId","removeAllRanges","getSelection","canvasRef","viewportLeft","viewportTop","setViewportPosition","canvasWidth","canvasHeight","viewportActualWidth","viewportActualHeight","resizeObserver","ResizeObserver","observe","unobserve","dragViewport","isMouseDown","startPageX","pageX","startPageY","pageY","originLeft","originTop","onmousemove","currentPageX","currentPageY","onmouseup","viewportRef","updateMouseSelection","viewportRect","getBoundingClientRect","minSelectionRange","offsetWidth","offsetHeight","abs","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","isTouchEvent","MouseEvent","changedTouches","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","handleMousemove","revisedX","revisedY","currentPoints","currentOppositePoint","currentBaseLeft","currentBaseTop","moveX","moveY","handleMouseup","ontouchmove","ontouchend","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","midX","midY","c1X","c1Y","c2X","c2Y","START","adsorptionPoint","END","C1","C2","newEl","formatCreateSelection","selectionData","formatCreateSelectionForLine","_start","_end","zIndex","currentElementComponent","alignElementToCanvas","viewportWidth","viewportHeight","CENTER","VERTICAL","HORIZONTAL","_component_ImageClipHandler","_component_ImageOutline","isCliping","clipData","clipPath","clipShape","onClip","handleClip","shadowStyle","flipStyle","handleSelectElement","onTouchstart","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","_component_ImageRectOutline","_component_ImageEllipseOutline","_component_ImagePolygonOutline","overflow","stroke","outlineColor","outlineWidth","outlineStyle","Number","required","useElementOutline","Function","ImageRectOutline","ImageEllipseOutline","ImagePolygonOutline","useClipImage","clipWrapperPositionStyle","bottomImgPositionStyle","topImgWrapperPositionStyle","topImgPositionStyle","moveClipRange","cornerPoint","rotateClassName","scaleClipRange","edgePoints","emits","emit","isSettingClipRange","currentRange","getClipDataTransformInfo","topImgWrapperPosition","bottomWidth","bottomHeight","initClipPosition","clipedEmitData","keyboardListener","updateRange","retPosition","bottomPosition","originPositopn","minWidth","minHeight","targetWidth","targetHeight","ImageOutline","ImageClipHandler","useElementShadow","useElementFlip","useFilter","stopPropagation","originClip","centerOffsetX","centerOffsetY","rotatedCenterX","rotatedCenterY","_props","_component_ElementOutline","_component_ProsemirrorEditor","textShadow","letterSpacing","fontFamily","editable","textIndent","onUpdate","updateContent","onBlur","checkEmptyText","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","inclusive","schemaNodes","schemaMarks","htmlString","parser","DOMParser","parseFromString","firstElementChild","fromSchema","plugins","emitter","mitt","alignment","listItem","tasks","allowedNodeTypes","Set","has","task","setNodeMarkup","alignmentCommand","setSelection","isList","listType","itemType","blockRange","parentList","validContent","setNodeIndentMarkup","delta","minIndent","maxIndent","nodeAttrs","indentCommand","docChanged","Boolean","autoFocus","editorViewRef","handleInput","innerHTML","handleFocus","handleBlur","handleClick","handleKeydown","textContent","hasFocus","replaceRangeWith","setProps","handleDOMEvents","keydown","execCommand","removeMark","insertText","RICH_TEXT_COMMAND","off","ElementOutline","ProsemirrorEditor","canMove","realHeightCache","updateTextElementHeight","entries","contentRect","realHeight","pureText","_component_GradientDefs","onDblclick","gradient","updateText","gradientTransform","GradientDefs","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","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","onUpdateValue","onInsertExcelData","insertExcelData","formatText","hideCells","textDecoration","fontWeight","fontStyle","immediate","onFocus","onInput","contenteditable","textareaRef","onpaste","excelData","CustomTextarea","isStartSelect","startCell","endCell","set","newData","useSubThemeColor","reduce","a","b","removeSelectedCells","useHideCells","oldValue","selectedRange","button","isHideCell","selectCol","maxRow","selectRow","maxCol","deleteRow","_tableCells","targetCells","hideCellsPos","deleteCol","insertRow","insertCol","fillTable","rowCount","defaultCell","newRows","mergeCells","splitCells","originWidth","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","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","floor","sec","getBoundingClientRectViewLeft","playBarWrap","volumeBarRef","currentTime","duration","loaded","seek","play","pause","setVolume","muted","rate","buffered","thumbMove","clientX","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","colorList","mostReadable","includeFallbackColors","gridSize","getPath","imageSize","gradientRotate","gradientType","backgroundImage","backgroundRepeat","backgroundSize","GridLines","useSlideBackgroundStyle","sizeStyle","marker","markerSize","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","elementIndexListInAnimation","_component_RotateHandler","scaleWidth","inheritAttrs","RotateHandler","scaleHeight","handlers","ctrlHandler","ctrlHandler1","ctrlHandler2","cannotRotate","_component_Divider","removeLink","setLink","linkRegExp","useLink","LinkHandler","ImageElementOperate","TextElementOperate","ShapeElementOperate","LineElementOperate","TableElementOperate","CommonElementOperate","indexList","_component_Input","_component_SelectOption","_component_Select","_component_ThumbnailSlide","_component_Button","tabs","tab","address","placeholder","selectedSlide","save","_component_ThumbnailElement","cssVar","zoom","needScaleSize","_component_StaticTable","StaticTable","BaseImageElement","BaseTextElement","BaseShapeElement","BaseLineElement","BaseChartElement","BaseTableElement","BaseLatexElement","BaseVideoElement","BaseAudioElement","ThumbnailElement","ThumbnailSlide","success","EditableElement","MouseSelection","ViewportBackground","AlignmentLine","Ruler","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_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","insertImageElement","shapePoolVisible","onSelect","drawShape","linePoolVisible","drawLine","chartPoolVisible","tableGeneratorVisible","onInsert","latexEditorVisible","mediaInputVisible","onInsertVideo","onInsertAudio","canvasScaleVisible","canvasScalePresetList","applyCanvasPresetScale","shapeList","selectShape","lineList","selectLine","LINE_LIST","_component_IconChartLine","_component_IconChartHistogram","_component_IconChartPie","_component_IconChartHistogramOne","_component_IconChartLineArea","_component_IconChartRing","_component_IconChartScatter","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","_slide","currentTabs","currentPanelComponent","_component_SelectOptGroup","_component_IconAddText","_component_InputGroup","_component_ColorPicker","_component_IconText","_component_IconHighLight","_component_ButtonGroup","_component_IconTextBold","_component_CheckboxButton","_component_IconTextItalic","_component_IconTextUnderline","_component_IconStrikethrough","_component_IconFormat","_component_CheckboxButtonGroup","_component_IconUpOne","_component_IconDownOne","_component_IconCode","_component_IconQuote","_component_IconLinkOne","_component_IconAlignTextLeft","_component_RadioButton","_component_IconAlignTextCenter","_component_IconAlignTextRight","_component_RadioGroup","_component_IconList","_component_IconOrderedList","_component_IconIndentLeft","_component_IconIndentRight","_component_IconRowHeight","_component_IconVerticalSpacingBetweenItems","_component_IconFullwidth","_component_ColorButton","_component_ElementShadow","_component_ElementOpacity","presetStyles","emitBatchRichTextCommand","compact","emitRichTextCommand","suffixIcon","webFonts","fontSizeOptions","checked","linkPopoverVisible","disabled","updateLink","openLinkPopover","updateLineHeight","lineHeightOptions","updateParagraphSpace","paragraphSpaceOptions","updateWordSpace","wordSpaceOptions","updateTextIndent","textIndentOptions","updateFill","_component_Slider","updateOpacity","deep","_component_Switch","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","imageRatio","distance","_component_IconAlignTextTopOne","_component_IconAlignTextMiddleOne","_component_IconAlignTextBottomOne","fillType","updateFillType","updateGradient","updateTextAlign","gradientProps","_gradient","updateLine","_component_Checkbox","_component_IconCloseSmall","_component_ChartDataEditor","chartDataEditorVisible","updateOptions","stackBars","updateLegend","deleteThemeColor","presetThemesVisible","presetChartThemes","itemIndex","presetThemeColorHoverIndex","applyPresetTheme","addThemeColor","onSave","updateData","tempRangeSize","rangeLines","resizablePointStyle","changeSelectRange","autocomplete","focusCell","onPaste","handlePaste","clear","closeEditor","getTableData","CELL_WIDTH","CELL_HEIGHT","initData","_data","inputRef","moveNextRow","labelsItem","labelInputRef","legendsItem","seriesItem","valueInputRef","ChartDataEditor","_lineSmooth","_showLine","_showArea","_horizontalBars","_donut","_stackBars","optionProps","newOptions","_component_IconFill","textAttrs","updateTextAttrs","setTableRow","setTableCol","hasTheme","toggleTheme","minRowCount","minColCount","updateTextAttrState","selectedCell","textAttrProp","themeProp","_theme","newTableCells","newColSizeList","updateLatex","updateLatexData","setVideoPoster","updateVideo","updateAudio","updateFontStyle","TextStylePanel","ImageStylePanel","ShapeStylePanel","LineStylePanel","ChartStylePanel","TableStylePanel","LatexStylePanel","VideoStylePanel","AudioStylePanel","MultiStylePanel","activeGroupElement","_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","activeTab","animationTypes","effect","hoverPreviewAnimation","addAnimation","popoverMaskHide","handleAnimationId","animationSequence","handle","elType","animationEffect","runAnimation","deleteAnimation","handleElementAnimation","updateElementAnimationDuration","updateElementAnimationTrigger","openAnimationPool","ANIMATION_DEFAULT_DURATION","ANIMATION_DEFAULT_TRIGGER","ANIMATION_CLASS_PREFIX","ENTER_ANIMATIONS","EXIT_ANIMATIONS","ATTENTION_ANIMATIONS","animationEffects","elRef","animationName","classList","handleAnimationEnd","removeProperty","once","updateElementAnimation","animationItem","in","out","attention","_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_ANIMATION","multiSelectTabs","MULTI_POSITION","currentTabsValue","panelMap","ElementStylePanel","ElementPositionPanel","ElementAnimationPanel","SlideDesignPanel","SlideAnimationPanel","MultiPositionPanel","SymbolPanel","resize","newHeight","currentDialogComponent","_component_FullscreenSpin","renderSlides","rangeType","expImage","loading","tip","imageThumbnailsRef","padding","expPDF","createIframe","iframe","printNode","docType","styleSheets","styleSheet","cssRules","rule","cssText","head","write","print","iframeContentWindow","contentWindow","contentDocument","handleLoadIframe","pdfThumbnailsRef","pageSize","dialogMap","ExportImage","ExportJSON","ExportPDF","ExportPPTX","ExportSpecificFile","EditorHeader","Canvas","CanvasTool","Thumbnails","Toolbar","Remark","ExportDialog","useGlobalHotkey","usePasteEvent","_component_BaseView","_component_PresenterView","viewMode","changeViewMode","_component_ScreenSlideList","_component_SlideThumbnails","_component_WritingBoardTool","_component_IconLeftTwo","_component_IconRightTwo","_component_IconWrite","_component_IconMagic","_component_IconListView","_component_IconOffScreenOne","_component_IconFullScreenOne","_component_IconPower","laserPen","slideWidth","slideHeight","animationIndex","turnSlideToId","manualExitFullscreen","mousewheelListener","touchStartListener","onTouchend","touchEndListener","slideThumbnailModelVisible","turnSlideToIndex","writingBoardToolVisible","execPrev","execNext","rightToolsVisible","fullscreenState","inAnimation","playedSlidesMinIndex","endAnimationCount","classname","revokeAnimation","autoPlayTimer","closeAutoPlay","clearInterval","throttleMassage","autoPlay","setInterval","touchInfo","turnPrevSlide","turnNextSlide","wrapRef","setSlideContentSize","slideWrapRef","winWidth","winHeight","escExit","handleFullscreenChange","_component_ScreenSlide","_component_ScreenElement","visibility","needWaitAnimation","openLink","_component_BaseChartElement","audioPlayerRef","ScreenChartElement","ScreenVideoElement","ScreenAudioElement","elementIndexInAnimation","firstAnimation","ScreenElement","ScreenSlide","_component_IconArrowCircleLeft","turnSlide","_component_WritingBoard","_component_IconErase","_component_IconClear","_component_IconClose","writingBoardColor","blackboard","model","writingBoardModel","changeModel","clearCanvas","writingBoardColors","changeColor","closeWritingBoard","handleMousedown","onMouseup","onTouchmove","mouseInCanvas","mouse","rubberSize","penSize","markSize","writingBoardRef","lastTime","lastLineWidth","updateCanvasSize","initCanvas","lineCap","lineJoin","updateCtx","globalCompositeOperation","globalAlpha","draw","posX","posY","lastPosX","lastPosY","strokeStyle","beginPath","lineTo","closePath","erase","sinRadius","cosRadius","rectPoint1","rectPoint2","rectPoint3","rectPoint4","arc","restore","getDistance","getLineWidth","maxV","minV","maxWidth","handleMove","getMouseOffsetPosition","event","canvasRect","getImageDataURL","toDataURL","setImageDataURL","imageDataURL","Image","drawImage","WritingBoard","ScreenSlideList","SlideThumbnails","WritingBoardTool","useExecPlay","useSlideSize","useFullscreen","handleMousewheelThumbnails","remarkFontSize","currentSlideRemark","setRemarkFontSize","slideListWrapRef","thumbnailsRef","scrollBy","activeThumbnailRef","offsetLeft","scrollTo","behavior","BaseView","PresenterView","ESC","currentComponent","changeMode","_component_Header","_component_MobileOperate","_component_MobileEditableElement","_component_SlideToolbar","_component_ElementToolbar","_component_IconCopy","_component_IconDelete","_component_IconSquare","_component_IconRound","_component_MobileThumbnails","handleInputMark","insertTextElement","insertShapeElement","changeSlideIndex","MobileThumbnails","square","updateFontColor","_component_IconLogout","MobileEditableElement","MobileOperate","SlideToolbar","ElementToolbar","Header","contentRef","contentWidth","contentheight","contentRatio","playerSize","toolVisible","slideSize","playerRatio","_component_IconFullScreenPlay","screenWidth","mobileRef","_mode","componentMap","MobileEditor","MobilePlayer","MobilePreview","Editor","Screen","Mobile","onbeforeunload","discardedDB","discardedDBList","newDiscardedDB","setItem","ready","console","log","registered","cached","updatefound","updated","offline","icons","PlayOne","FullScreenPlay","Lock","Unlock","Ppt","Format","Picture","FullScreen","List","OrderedList","Helpcenter","FlipVertically","FlipHorizontally","FontSize","Code","TextBold","TextItalic","TextUnderline","Strikethrough","Edit","Quote","BackgroundColor","Group","Ungroup","Back","Next","Fullwidth","AlignTop","AlignLeft","AlignRight","AlignBottom","AlignVertically","AlignHorizontally","BringToFront","SendToBack","AlignTextLeft","AlignTextRight","AlignTextCenter","RowHeight","Write","InsertTable","AddText","Fill","Tailoring","Effects","ColorFilter","Down","Plus","Minus","Connection","BringToFrontOne","SentToBack","Github","ChartProportion","ChartHistogram","ChartHistogramOne","ChartLineArea","ChartRing","ChartScatter","ChartLine","ChartPie","Text","Rotate","LeftTwo","RightTwo","Platte","UpOne","DownOne","Close","CloseSmall","Undo","Transform","Click","Theme","ArrowCircleLeft","GraphicDesign","Logout","Erase","Clear","FolderClose","AlignTextTopOne","AlignTextBottomOne","AlignTextMiddleOne","Pause","VolumeMute","VolumeNotice","VolumeSmall","VideoTwo","Formula","LinkOne","FullScreenOne","OffScreenOne","Power","ListView","Magic","HighLight","Share","IndentLeft","IndentRight","VerticalSpacingBetweenItems","Copy","Delete","Square","Round","install","app","component","$slots","handleChange","_component_Saturation","_component_Checkboard","_component_Hue","_component_Alpha","_component_EditableInput","hue","onColorChange","currentColor","pickColor","selectPresetColor","presetColors","standardColors","recentColors","handleMouseDown","bgStyle","checkboardCache","renderCheckboard","white","grey","fillRect","translate","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","targetRef","maskRef","colorBlockRef","contains","pixelRatio","toFixed","handleMouseleave","tColor","_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","screenHeight","CTX_CONTEXTMENU_HANDLER","binding","vm","Contextmenu","ContextmenuDirective","mounted","unmounted","CTX_CLICK_OUTSIDE_HANDLER","clickListener","composedPath","isClickOutside","ClickOutsideDirective","directive","App","Option","OptGroup","Button","TextArea","Item","use","mount"],"mappings":"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mFCAA,W,6DCAA,W,sFCAA,W,oCCAA,W,kCCAA,W,oCCAA,W,2DCAA,W,2DCAA,W,2DCAA,W,oCCAA,W,2DCAA,W,oCCAA,W,oCCAA,W,sICAA,W,oCCAA,W,6DCAA,W,wICAA,W,oCCAA,W,8JCAA,W,sFCAA,W,oCCAA,W,yGCAA,W,yDCAA,W,yDCAA,W,6DCAA,W,sFCAA,Y,6GCAA,W,oCCAA,W,kCCAA,W,+GCAA,W,oCCAA,W,oCCAA,W,kCCAA,W,oCCAA,W,oCCAA,W,6GCAA,W,kCCAA,W,kCCAA,W,kCCAA,W,oCCAA,W,+GCAA,W,0DCAA,W,kCCAA,W,2DCAA,W,8DCAA,W,oCCAA,W,2DCAA,W,oCCAA,W,oCCAA,W,oCCAA,W,sFCAA,W,oCCAA,W,kFCAA,W,yDCAA,W,kCCAA,W,yDCAA,W,yDCAA,W,kCCAA,W,kCCAA,W,uGCAA,W,yDCAA,W,gFCAA,W,yDCAA,W,gFCAA,W,wGCAA,W,gFCAA,W,gFCAA,W,kCCAA,W,kCCAA,W,yDCAA,W,kCCAA,W,6hBCEM,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,gECX5CsB,E,aAAlB,SAAkBA,GAChB,qBACA,gCACA,wBACA,8BACA,gCACA,sCACA,qCAPF,CAAkBA,MAAa,KCAxB,ICIKC,EAOAC,EAUMC,EAOAC,EAWAC,ECvCAC,EFALC,EAAY,CACvB,CAAEC,MAAO,QAASpC,MAAO,SACzB,CAAEoC,MAAO,OAAQpC,MAAO,mBACxB,CAAEoC,MAAO,KAAMpC,MAAO,UACtB,CAAEoC,MAAO,KAAMpC,MAAO,UACtB,CAAEoC,MAAO,KAAMpC,MAAO,SACtB,CAAEoC,MAAO,MAAOpC,MAAO,WACvB,CAAEoC,MAAO,KAAMpC,MAAO,YACtB,CAAEoC,MAAO,KAAMpC,M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zC,CACEvc,KAAM,KACNuU,SAAU,CACR,CACElO,QAAS,CAAC,IAAK,KACfC,KAAM,qCAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,uGACNkW,YAAapI,GAAsBoH,YAErC,CACEnV,QAAS,CAAC,IAAK,KACfC,KAAM,sDACNkW,YAAapI,GAAsBqH,mBAErC,CACEpV,QAAS,CAAC,IAAK,KACfC,KAAM,6CACNkW,YAAapI,GAAsBsH,iBAErC,CACErV,QAAS,CAAC,IAAK,KACfC,KAAM,qDACNkW,YAAapI,GAAsBuH,mBAErC,CACEtV,QAAS,CAAC,IAAK,KACfC,KAAM,wEACNkW,YAAapI,GAAsBwH,qBAErC,CACEvV,QAAS,CAAC,IAAK,KACfC,KAAM,yDACNkW,YAAapI,GAAsByH,mBAErC,CACExV,QAAS,CAAC,IAAK,KACfC,KAAM,+DACNkW,YAAapI,GAAsB0H,uBAKzC,CACE9b,KAAM,OACNuU,SAAU,CACR,CACElO,QAAS,CAAC,IAAK,KACfC,KAAM,uDAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,4CAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,uDAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,yDAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,yDAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,+CAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,uDAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,yCAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,uCAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6BAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6CAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,4CAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6CAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,iDAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,wDAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,iEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,gFAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,oHAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,uDAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,0DAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,sEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,uEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,kEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,+CAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6CAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6CAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,oHAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,4DACNkW,YAAapI,GAAsB+H,GAErC,CACE9V,QAAS,CAAC,IAAK,KACfC,KAAM,uEACNkW,YAAapI,GAAsBiI,WAErC,CACEhW,QAAS,CAAC,IAAK,KACfC,KAAM,iEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,mHACNkW,YAAapI,GAAsBkI,MAErC,CACEjW,QAAS,CAAC,IAAK,KACfC,KAAM,sHAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,gEACNkW,YAAapI,GAAsB2H,SAErC,CACE1V,QAAS,CAAC,IAAK,KACfC,KAAM,mIACNkW,YAAapI,GAAsB8H,eAErC,CACE7V,QAAS,CAAC,IAAK,KACfC,KAAM,qEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6CAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,2EAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,2HAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,2DAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,qDAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,qFAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,+JAKZ,CACEtG,KAAM,KACNuU,SAAU,CACR,CACElO,QAAS,CAAC,IAAK,KACfC,KAAM,6EAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6EAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6EAER,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","file":"js/app.d3e21c03.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!./MultiSelectOperate.vue?vue&type=style&index=0&id=55c8df22&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=0ef8b6c0&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=e3a2bd30&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=017ca85e&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=34c0a0a8&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!./index.vue?vue&type=style&index=0&id=77a8ccf7&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!./ElementShadow.vue?vue&type=style&index=0&id=6bafb099&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=00107680&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=a33e97ec&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!./MobilePlayer.vue?vue&type=style&index=0&id=2845ccb6&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=5e77feb8&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!./ExportJSON.vue?vue&type=style&index=0&id=54705363&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=f0cbd508&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=7017c6bc&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=5f3b7dc5&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=fcb929f4&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=5ff9efcc&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=50456657&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!./Ruler.vue?vue&type=style&index=0&id=6cc1801a&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=3ca1d362&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!./MultiStylePanel.vue?vue&type=style&index=0&id=e5e0fba2&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=f3479f82&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=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!./index.vue?vue&type=style&index=0&id=863d2c90&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=74cf8d68&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=81197444&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!./AudioStylePanel.vue?vue&type=style&index=0&id=58a36be6&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!./BaseView.vue?vue&type=style&index=0&id=54670d0c&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=2ec16714&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=efaecbfe&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=2cd24911&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!./ElementToolbar.vue?vue&type=style&index=0&id=332b9382&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!./ElementAnimationPanel.vue?vue&type=style&index=0&id=11684c24&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!./ExportPPTX.vue?vue&type=style&index=0&id=dad79818&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!./MobileThumbnails.vue?vue&type=style&index=0&id=0b484044&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=4f10fba6&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!./ImageElementOperate.vue?vue&type=style&index=0&id=db6d5ba6&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=0c89cf75&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=7ed67bb3&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=78e88e36&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!./ElementFilter.vue?vue&type=style&index=0&id=07b41654&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=f9ea6e88&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=4c746203&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!./ElementOpacity.vue?vue&type=style&index=0&id=5c7dbabc&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=ad75cd30&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!./SlideToolbar.vue?vue&type=style&index=0&id=70590190&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!./ResizeHandler.vue?vue&type=style&index=0&id=c9559332&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!./LineElementOperate.vue?vue&type=style&index=0&id=60f9f1f7&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=a2afb4ce&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=15b60d90&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=4074d5c2&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=79ce410e&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!./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!./Header.vue?vue&type=style&index=0&id=2c0b2c5e&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!./ExportPDF.vue?vue&type=style&index=0&id=7c83ddb5&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=3da8fdb7&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=743d966c&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!./EditableInput.vue?vue&type=style&index=0&id=20bfe6b0&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=12f568a6&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=18f794c8&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!./ScreenSlideList.vue?vue&type=style&index=0&id=01900375&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=79ce410e&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=fed8b698&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=1430bedc&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=1c016f8e&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=342d4bac&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=26058d12&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!./ScreenAudioElement.vue?vue&type=style&index=0&id=1adba489&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=025539cf&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!./ExportSpecificFile.vue?vue&type=style&index=0&id=1e43fa60&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=454973e4&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=25d4b5f8&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=81338b12&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=40b7d6a8&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=17be277c&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!./FileInput.vue?vue&type=style&index=0&id=0a87e9c4&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=50e5c825&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=2b77dbb0&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!./AudioPlayer.vue?vue&type=style&index=0&id=5530a7f2&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!./CheckboxButtonGroup.vue?vue&type=style&index=0&id=adf706aa&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=e0bde284&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=9ac1670a&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}","export 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}","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]","import { ShapePoolItem } from '@/configs/shapes'\r\nimport { LinePoolItem } from '@/configs/lines'\r\nimport { ImageClipDataRange } from './slides'\r\n\r\nexport enum ElementOrderCommands {\r\n UP = 'up',\r\n DOWN = 'down',\r\n TOP = 'top',\r\n BOTTOM = 'bottom',\r\n}\r\n\r\nexport 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 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 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 const enum OperateLineHandlers {\r\n START = 'start',\r\n END = 'end',\r\n C = 'ctrl',\r\n C1 = 'ctrl1',\r\n C2 = 'ctrl2',\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 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 P = 'P',\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 ESC = 'ESCAPE',\n PAGEUP = 'PAGEUP',\n PAGEDOWN = 'PAGEDOWN',\n F5 = 'F5',\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 { label: '打印', value: 'Ctrl + P' },\n { label: '关闭弹窗', value: 'ESC' },\n ],\n },\n {\n type: '幻灯片放映',\n children: [\n { label: '从头开始放映幻灯片', value: 'F5' },\n { label: '从当前开始放映幻灯片', value: 'Shift + F5' },\n { label: '切换上一页', value: '↑ / ← / PgUp' },\n { label: '切换下一页', value: '↓ / → / PgDown' },\n { label: '切换下一页', value: 'Enter / Space' },\n { label: '退出放映', value: 'ESC' },\n { label: '调整画笔笔触大小', value: '鼠标滚轮' },\n ],\n },\n {\n type: '幻灯片编辑',\n children: [\n { label: '新建幻灯片', value: 'Enter' },\n { label: '移动画布', value: 'Space + 鼠标拖拽' },\n { label: '缩放画布', value: 'Ctrl + 鼠标滚轮' },\n { label: '放大画布', value: 'Ctrl + =' },\n { label: '缩小画布', value: 'Ctrl + -' },\n { label: '使画布适应当前屏幕', value: 'Ctrl + 0' },\n { label: '上一页(未选中元素)', value: '↑ / ←' },\n { label: '下一页(未选中元素)', value: '↓ / →' },\n { label: '上一页', value: '鼠标上滚 / PgUp' },\n { label: '下一页', value: '鼠标下滚 / PgDown' },\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]","import { Node, NodeType, ResolvedPos, Mark, MarkType } from 'prosemirror-model'\nimport { EditorState, Selection } from 'prosemirror-state'\nimport { EditorView } from 'prosemirror-view'\nimport { selectAll } from 'prosemirror-commands'\n\nexport const autoSelectAll = (view: EditorView) => {\n const { empty } = view.state.selection\n if (empty) selectAll(view.state, view.dispatch)\n}\n\nexport const addMark = (editorView: EditorView, mark: Mark, selection?: { from: number; to: number; }) => {\n if (selection) {\n editorView.dispatch(editorView.state.tr.addMark(selection.from, selection.to, mark))\n }\n else {\n const { $from, $to } = editorView.state.selection\n editorView.dispatch(editorView.state.tr.addMark($from.pos, $to.pos, mark))\n }\n}\n\nexport const findNodesWithSameMark = (doc: Node, from: number, to: number, markType: MarkType) => {\n let ii = from\n const finder = (mark: Mark) => mark.type === markType\n let firstMark = null\n let fromNode = null\n let toNode = null\n\n while (ii <= to) {\n const node = doc.nodeAt(ii)\n if (!node || !node.marks) return null\n\n const mark = node.marks.find(finder)\n if (!mark) return null\n\n if (firstMark && mark !== firstMark) return null\n\n fromNode = fromNode || node\n firstMark = firstMark || mark\n toNode = node\n ii++\n }\n\n let fromPos = from\n let toPos = to\n\n let jj = 0\n ii = from - 1\n while (ii > jj) {\n const node = doc.nodeAt(ii)\n const mark = node && node.marks.find(finder)\n if (!mark || mark !== firstMark) break\n fromPos = ii\n fromNode = node\n ii--\n }\n\n ii = to + 1\n jj = doc.nodeSize - 2\n while (ii < jj) {\n const node = doc.nodeAt(ii)\n const mark = node && node.marks.find(finder)\n if (!mark || mark !== firstMark) break\n toPos = ii\n toNode = node\n ii++\n }\n\n return {\n mark: firstMark,\n from: {\n node: fromNode,\n pos: fromPos,\n },\n to: {\n node: toNode,\n pos: toPos,\n },\n }\n}\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 markActive = (state: EditorState, type: MarkType) => {\n const { from, $from, to, empty } = state.selection\n if (empty) return type.isInSet(state.storedMarks || $from.marks())\n return state.doc.rangeHasMark(from, to, type)\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 link = getAttrValue(marks, 'link', 'href') || ''\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 link: link,\n align: align,\n bulletList: isBulletList,\n orderedList: isOrderedList,\n blockquote: isBlockquote,\n }\n}\n\nexport type TextAttrs = ReturnType\n\nexport const getFontsize = (view: EditorView) => {\n const marks = getMarkAttrs(view)\n const fontsize = getAttrValue(marks, 'fontsize', 'fontsize') || _defaultAttrs.fontsize\n return parseInt(fontsize)\n}\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 link: '',\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: 'test-slide-1',\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, 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, 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 {\n id: 'test-slide-2',\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: 'Microsoft Yahei',\n defaultColor: '#333',\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: 'Microsoft Yahei',\n defaultColor: '#333',\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: '#5b9bd5',\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, 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: '#5b9bd5',\n fixedRatio: false,\n rotate: 0\n }\n ],\n background: {\n type: 'solid',\n color: '#fff',\n },\n },\n {\n id: 'test-slide-3',\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, 200],\n path: 'M 0 0 L 200 0 L 200 200 L 0 200 Z',\n fill: '#5b9bd5',\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, 200],\n path: 'M 0 0 L 200 0 L 200 200 L 0 200 Z',\n fill: '#5b9bd5',\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: 'Microsoft Yahei',\n defaultColor: '#333',\n wordSpace: 5\n }\n ],\n background: {\n type: 'solid',\n color: '#fff',\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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, PPTAnimation } 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\ninterface FormatedAnimation {\n animations: PPTAnimation[]\n autoNext: boolean\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?.animations) return []\n\n const els = currentSlide.elements\n const elIds = els.map(el => el.id)\n return currentSlide.animations.filter(animation => elIds.includes(animation.elId))\n },\n\n // 格式化的当前页动画\n // 将触发条件为“与上一动画同时”的项目向上合并到序列中的同一位置\n // 为触发条件为“上一动画之后”项目的上一项添加自动向下执行标记\n formatedAnimations(state) {\n const currentSlide = state.slides[state.slideIndex]\n if (!currentSlide?.animations) return []\n\n const els = currentSlide.elements\n const elIds = els.map(el => el.id)\n const animations = currentSlide.animations.filter(animation => elIds.includes(animation.elId))\n\n const formatedAnimations: FormatedAnimation[] = []\n for (const animation of animations) {\n if (animation.trigger === 'click' || !formatedAnimations.length) {\n formatedAnimations.push({ animations: [animation], autoNext: false })\n }\n else if (animation.trigger === 'meantime') {\n const last = formatedAnimations[formatedAnimations.length - 1]\n last.animations = last.animations.filter(item => item.elId !== animation.elId)\n last.animations.push(animation)\n formatedAnimations[formatedAnimations.length - 1] = last\n }\n else if (animation.trigger === 'auto') {\n const last = formatedAnimations[formatedAnimations.length - 1]\n last.autoNext = true\n formatedAnimations[formatedAnimations.length - 1] = last\n formatedAnimations.push({ animations: [animation], autoNext: false })\n }\n }\n return formatedAnimations\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 deleteElement(elementId: string | string[]) {\n const elementIdList = Array.isArray(elementId) ? elementId : [elementId]\n const currentSlideEls = this.slides[this.slideIndex].elements\n const newEls = currentSlideEls.filter(item => !elementIdList.includes(item.id))\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 { customAlphabet } from 'nanoid'\nimport { defineStore } from 'pinia'\nimport { CreatingElement } from '@/types/edit'\nimport { ToolbarStates } from '@/types/toolbar'\nimport { DialogForExportTypes } from '@/types/export'\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 canvasDragged: boolean\n thumbnailsFocus: boolean\n editorAreaFocus: boolean\n disableHotkeys: boolean\n showGridLines: boolean\n showRuler: boolean\n creatingElement: CreatingElement | null\n availableFonts: typeof SYS_FONTS\n toolbarState: ToolbarStates\n clipingImageElementId: string\n isScaling: boolean\n richTextAttrs: TextAttrs\n selectedTableCells: string[]\n selectedSlidesIndex: number[]\n dialogForExport: DialogForExportTypes\n databaseId: string\n}\n\nconst nanoid = customAlphabet('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz')\nexport const databaseId = nanoid(10)\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 canvasDragged: false, // 画布被拖拽移动\n thumbnailsFocus: false, // 左侧导航缩略图区域聚焦\n editorAreaFocus: false, // 编辑区域聚焦\n disableHotkeys: false, // 禁用快捷键\n showGridLines: false, // 显示网格线\n showRuler: false, // 显示标尺\n creatingElement: null, // 正在插入的元素信息,需要通过绘制插入的元素(文字、形状、线条)\n availableFonts: SYS_FONTS, // 当前环境可用字体\n toolbarState: ToolbarStates.SLIDE_DESIGN, // 右侧工具栏状态\n clipingImageElementId: '', // 当前正在裁剪的图片ID \n richTextAttrs: defaultRichTextAttrs, // 富文本状态\n selectedTableCells: [], // 选中的表格单元格\n isScaling: false, // 正在进行元素缩放\n selectedSlidesIndex: [], // 当前被选中的页面索引集合\n dialogForExport: '', // 导出面板\n databaseId, // 标识当前应用的indexedDB数据库ID\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 setCanvasDragged(isDragged: boolean) {\n this.canvasDragged = isDragged\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 setRulerState(show: boolean) {\n this.showRuler = 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: ToolbarStates) {\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 updateSelectedSlidesIndex(selectedSlidesIndex: number[]) {\n this.selectedSlidesIndex = selectedSlidesIndex\n },\n\n setDialogForExport(type: DialogForExportTypes) {\n this.dialogForExport = type\n },\n },\n})","export const LOCALSTORAGE_KEY_DISCARDED_DB = 'PPTIST_DISCARDED_DB'","import Dexie from 'dexie'\nimport { databaseId } from '@/store/main'\nimport { Slide } from '@/types/slides'\nimport { LOCALSTORAGE_KEY_DISCARDED_DB } from '@/configs/storage'\n\nexport interface Snapshot {\n index: number\n slides: Slide[]\n}\n\nconst databaseNamePrefix = 'PPTist'\n\n// 删除失效/过期的数据库\n// 应用关闭时(关闭或刷新浏览器),会将其数据库ID记录在 localStorage 中,表示该ID指向的数据库已失效\n// 当应用初始化时,检查当前所有数据库,将被记录失效的数据库删除\n// 另外,距离初始化时间超过12小时的数据库也将被删除(这是为了防止出现因以外未被正确删除的库)\nexport const deleteDiscardedDB = async () => {\n const now = new Date().getTime()\n\n const localStorageDiscardedDB = localStorage.getItem(LOCALSTORAGE_KEY_DISCARDED_DB)\n const localStorageDiscardedDBList: string[] = localStorageDiscardedDB ? JSON.parse(localStorageDiscardedDB) : []\n\n const databaseNames = await Dexie.getDatabaseNames()\n const discardedDBNames = databaseNames.filter(name => {\n if (name.indexOf(databaseNamePrefix) === -1) return false\n \n const [prefix, id, time] = name.split('_')\n if (prefix !== databaseNamePrefix || !id || !time) return true\n if (localStorageDiscardedDBList.includes(id)) return true\n if (now - (+time) >= 1000 * 60 * 60 * 12) return true\n\n return false\n })\n\n for (const name of discardedDBNames) Dexie.delete(name)\n localStorage.removeItem(LOCALSTORAGE_KEY_DISCARDED_DB)\n}\n\nclass PPTistDB extends Dexie {\n public snapshots: Dexie.Table\n\n public constructor() {\n super(`${databaseNamePrefix}_${databaseId}_${new Date().getTime()}`)\n this.version(1).stores({\n snapshots: '++id'\n })\n this.snapshots = this.table('snapshots')\n }\n}\n\nexport const db = new PPTistDB()","import { defineStore } from 'pinia'\nimport { IndexableTypeArray } from 'dexie'\nimport { db, deleteDiscardedDB, 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 await deleteDiscardedDB()\n \n const newFirstSnapshot = {\n index: slidesStore.slideIndex,\n slides: slidesStore.slides,\n }\n await db.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 db.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 db.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 db.snapshots.update(allKeys[snapshotLength - 2] as number, { index: slidesStore.slideIndex })\n }\n \n await db.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 db.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 db.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 spaceKeyState: boolean\n}\n\nexport const useKeyboardStore = defineStore('keyboard', {\n state: (): KeyboardState => ({\n ctrlKeyState: false, // ctrl键按下状态\n shiftKeyState: false, // shift键按下状态\n spaceKeyState: false, // space键按下状态\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 setSpaceKeyState(active: boolean) {\n this.spaceKeyState = 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 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, withCtx as _withCtx, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5ff9efcc\"),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 const _component_ExportDialog = _resolveComponent(\"ExportDialog\")!\n const _component_Modal = _resolveComponent(\"Modal\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"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 _createVNode(_component_Modal, {\n visible: !!_ctx.dialogForExport,\n footer: null,\n centered: \"\",\n closable: false,\n width: 680,\n destroyOnClose: \"\",\n onCancel: _cache[1] || (_cache[1] = ($event: any) => (_ctx.closeExportDialog()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_ExportDialog)\n ]),\n _: 1\n }, 8, [\"visible\"])\n ], 64))\n}","import { IBarChartOptions, ILineChartOptions, IPieChartOptions } from 'chartist'\n\nexport const enum ShapePathFormulasKeys {\n ROUND_RECT = 'roundRect',\n ROUND_RECT_DIAGONAL = 'roundRectDiagonal',\n ROUND_RECT_SINGLE = 'roundRectSingle',\n ROUND_RECT_SAMESIDE = 'roundRectSameSide',\n CUT_RECT_DIAGONAL = 'cutRectDiagonal',\n CUT_RECT_SINGLE = 'cutRectSingle',\n CUT_RECT_SAMESIDE = 'cutRectSameSide',\n MESSAGE = 'message',\n ROUND_MESSAGE = 'roundMessage',\n L = 'L',\n RING_RECT = 'ringRect',\n PLUS = 'plus',\n}\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 * \n * textIndent?: 段落首行缩进\n * \n * paragraphSpace?: 段间距,默认 5px\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 textIndent?: number\n paragraphSpace?: number\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\nexport type ImageClipDataRange = [[number, number], [number, number]]\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: ImageClipDataRange\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, 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 * \n * pathFormula?: 形状路径计算公式\n * 一般情况下,形状的大小变化时仅由宽高基于 viewBox 的缩放比例来调整形状,而 viewBox 本身和 path 不会变化,\n * 但也有一些形状希望能更精确的控制一些关键点的位置,此时就需要提供路径计算公式,通过在缩放时更新 viewBox 并重新计算 path 来重新绘制形状\n */\nexport interface PPTShapeElement extends PPTBaseElement {\n type: 'shape'\n viewBox: [number, 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 pathFormula?: ShapePathFormulasKeys\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 * \n * curve?: 三次曲线控制点位置([[x1, y1], [x2, y2]])\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 cubic?: [[number, number], [number, number]]\n}\n\n\nexport type PresetChartType = 'bar' | 'horizontalBar' | 'line' | 'area' | 'scatter' | 'pie' | 'ring'\nexport type ChartType = 'bar' | 'line' | 'pie'\nexport type ChartOptions = ILineChartOptions & IBarChartOptions & IPieChartOptions\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: 图表基础类型(bar/line/pie),所有图表类型都是由这三种基本类型衍生而来\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?: ChartOptions\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 * id: 动画id\n * \n * elId: 元素ID\n * \n * effect: 动画效果\n * \n * type: 动画类型(入场、退场、强调)\n * \n * duration: 动画持续时间\n * \n * trigger: 动画触发方式(click - 单击时、meantime - 与上一动画同时、auto - 上一动画之后)\n */\nexport interface PPTAnimation {\n id: string\n elId: string\n effect: string\n type: 'in' | 'out' | 'attention'\n duration: number\n trigger: 'click' | 'meantime' | 'auto'\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 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 { nanoid } from 'nanoid'\r\nimport { PPTElement, PPTLineElement } from '@/types/slides'\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] = nanoid(10)\r\n }\r\n elIdMap[element.id] = nanoid(10)\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 else if (element.curve) {\r\n const mid = element.curve.join(',')\r\n return `M${start} Q${mid} ${end}`\r\n }\r\n else if (element.cubic) {\r\n const [c1, c2] = element.cubic\r\n const p1 = c1.join(',')\r\n const p2 = c2.join(',')\r\n return `M${start} C${p1} ${p2} ${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}","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 { ShapePathFormulasKeys } from '@/types/slides'\n\nexport interface ShapePoolItem {\n viewBox: [number, number]\n path: string\n special?: boolean\n pathFormula?: ShapePathFormulasKeys\n outlined?: boolean\n}\n\ninterface ShapeListItem {\n type: string\n children: ShapePoolItem[]\n}\n\nexport const SHAPE_PATH_FORMULAS = {\n [ShapePathFormulasKeys.ROUND_RECT]: (width: number, height: number) => {\n const radius = Math.min(width, height) / 8\n return `M ${radius} 0 L ${width - radius} 0 Q ${width} 0 ${width} ${radius} L ${width} ${height - radius} Q ${width} ${height} ${width - radius} ${height} L ${radius} ${height} Q 0 ${height} 0 ${height - radius} L 0 ${radius} Q 0 0 ${radius} 0 Z`\n },\n [ShapePathFormulasKeys.CUT_RECT_DIAGONAL]: (width: number, height: number) => {\n const radius = Math.min(width, height) / 5\n return `M 0 ${height - radius} L 0 0 L ${width - radius} 0 L ${width} ${radius} L ${width} ${height} L ${radius} ${height} Z`\n },\n [ShapePathFormulasKeys.CUT_RECT_SINGLE]: (width: number, height: number) => {\n const radius = Math.min(width, height) / 5\n return `M 0 ${height} L 0 0 L ${width - radius} 0 L ${width} ${radius} L ${width} ${height} Z`\n },\n [ShapePathFormulasKeys.CUT_RECT_SAMESIDE]: (width: number, height: number) => {\n const radius = Math.min(width, height) / 5\n return `M 0 ${radius} L ${radius} 0 L ${width - radius} 0 L ${width} ${radius} L ${width} ${height} L 0 ${height} Z`\n },\n [ShapePathFormulasKeys.ROUND_RECT_DIAGONAL]: (width: number, height: number) => {\n const radius = Math.min(width, height) / 8\n return `M 0 0 L ${width - radius} 0 Q ${width} 0 ${width} ${radius} L ${width} ${height} L ${radius} ${height} Q 0 ${height} 0 ${height - radius} L 0 0 Z`\n },\n [ShapePathFormulasKeys.ROUND_RECT_SINGLE]: (width: number, height: number) => {\n const radius = Math.min(width, height) / 8\n return `M 0 0 L ${width - radius} 0 Q ${width} 0 ${width} ${radius} L ${width} ${height} L 0 ${height} L 0 0 Z`\n },\n [ShapePathFormulasKeys.ROUND_RECT_SAMESIDE]: (width: number, height: number) => {\n const radius = Math.min(width, height) / 8\n return `M 0 ${radius} Q 0 0 ${radius} 0 L ${width - radius} 0 Q ${width} 0 ${width} ${radius} L ${width} ${height} L 0 ${height} Z`\n },\n [ShapePathFormulasKeys.MESSAGE]: (width: number, height: number) => {\n const arrowWidth = width / 5\n const arrowheight = height / 5\n return `M 0 0 L ${width} 0 L ${width} ${height - arrowheight} L ${width / 2} ${height - arrowheight} L ${width / 2 - arrowWidth} ${height} L ${width / 2 - arrowWidth} ${height - arrowheight} L 0 ${height - arrowheight} Z`\n },\n [ShapePathFormulasKeys.ROUND_MESSAGE]: (width: number, height: number) => {\n const radius = Math.min(width, height) / 8\n const arrowWidth = width / 5\n const arrowheight = height / 5\n return `M 0 ${radius} Q 0 0 ${radius} 0 L ${width - radius} 0 Q ${width} 0 ${width} ${radius} L ${width} ${height - radius - arrowheight} Q ${width} ${height - arrowheight} ${width - radius} ${height - arrowheight} L ${width / 2} ${height - arrowheight} L ${width / 2 - arrowWidth} ${height} L ${width / 2 - arrowWidth} ${height - arrowheight} L ${radius} ${height - arrowheight} Q 0 ${height - arrowheight} 0 ${height - radius - arrowheight} L 0 ${radius} Z`\n },\n [ShapePathFormulasKeys.L]: (width: number, height: number) => {\n const lineWidth = Math.min(width, height) / 4\n return `M 0 0 L 0 ${height} L ${width} ${height} L ${width} ${height - lineWidth} L ${lineWidth} ${height - lineWidth} L ${lineWidth} 0 Z`\n },\n [ShapePathFormulasKeys.RING_RECT]: (width: number, height: number) => {\n const lineWidth = Math.min(width, height) / 4\n return `M 0 0 ${width} 0 ${width} ${height} L 0 ${height} L 0 0 Z M ${lineWidth} ${lineWidth} L ${lineWidth} ${height - lineWidth} L ${width - lineWidth} ${height - lineWidth} L ${width - lineWidth} ${lineWidth} Z`\n },\n [ShapePathFormulasKeys.PLUS]: (width: number, height: number) => {\n const lineWidth = Math.min(width, height) / 4\n return `M ${width / 2 - lineWidth / 2} 0 L ${width / 2 - lineWidth / 2} ${height / 2 - lineWidth / 2} L 0 ${height / 2 - lineWidth / 2} L 0 ${height / 2 + lineWidth / 2} L ${width / 2 - lineWidth / 2} ${height / 2 + lineWidth / 2} L ${width / 2 - lineWidth / 2} ${height} L ${width / 2 + lineWidth / 2} ${height} L ${width / 2 + lineWidth / 2} ${height / 2 + lineWidth / 2} L ${width} ${height / 2 + lineWidth / 2} L ${width} ${height / 2 - lineWidth / 2} L ${width / 2 + lineWidth / 2} ${height / 2 - lineWidth / 2} L ${width / 2 + lineWidth / 2} 0 Z`\n },\n}\n\nexport const SHAPE_LIST: ShapeListItem[] = [\n {\n type: '矩形',\n children: [\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 200 0 L 200 200 L 0 200 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 50 0 L 150 0 Q 200 0 200 50 L 200 150 Q 200 200 150 200 L 50 200 Q 0 200 0 150 L 0 50 Q 0 0 50 0 Z',\n pathFormula: ShapePathFormulasKeys.ROUND_RECT,\n },\n {\n viewBox: [200, 200],\n path: 'M 0 150 L 0 0 L 150 0 L 200 50 L 200 200 L 50 200 Z',\n pathFormula: ShapePathFormulasKeys.CUT_RECT_DIAGONAL,\n },\n {\n viewBox: [200, 200],\n path: 'M 0 200 L 0 0 L 150 0 L 200 50 L 200 200 Z',\n pathFormula: ShapePathFormulasKeys.CUT_RECT_SINGLE,\n },\n {\n viewBox: [200, 200],\n path: 'M 0 50 L 50 0 L 150 0 L 200 50 L 200 200 L 0 200 Z',\n pathFormula: ShapePathFormulasKeys.CUT_RECT_SAMESIDE,\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 150 0 Q 200 0 200 50 L 200 200 L 50 200 Q 0 200 0 150 L 0 0 Z',\n pathFormula: ShapePathFormulasKeys.ROUND_RECT_DIAGONAL,\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 150 0 Q 200 0 200 50 L 200 200 L 0 200 L 0 0 Z',\n pathFormula: ShapePathFormulasKeys.ROUND_RECT_SINGLE,\n },\n {\n viewBox: [200, 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 Z',\n pathFormula: ShapePathFormulasKeys.ROUND_RECT_SAMESIDE,\n },\n ]\n },\n\n {\n type: '常用形状',\n children: [\n {\n viewBox: [200, 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, 200],\n path: 'M 0 200 A 50 100 0 1 1 200 200 L 0 200 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 40 20 A 100 100 0 1 0 200 100 L 100 100 L 40 20 Z'\n },\n {\n viewBox: [200, 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, 200],\n path: 'M 160 20 A 100 100 0 1 0 200 100 L 100 100 L 160 20 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 A 100 100 102 1 0 200 100 L 100 0 Z'\n },\n {\n viewBox: [200, 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, 200],\n path: 'M 0 0 L 200 0 Q 200 200 0 200 L 0 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 0 200 L 200 200 L 100 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 0 200 L 200 200 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 50 0 L 200 0 L 150 200 L 0 200 L 50 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 150 0 L 200 200 L 50 200 L 0 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 50 0 L 150 0 L 200 200 L 0 200 L 50 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 0 100 L 100 200 L 200 100 L 100 0 Z'\n },\n {\n viewBox: [200, 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, 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, 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, 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, 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, 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, 200],\n path: 'M 50 0 A 25 50 0 1 0 50 200 L 150 200 A 25 50 0 1 0 150 0 L 50 0 Z'\n },\n {\n viewBox: [200, 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, 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, 200],\n path: 'M 200 0 L 200 200 L 0 200 L 0 100 L 200 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 200 100 L 200 200 L 0 200 L 0 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 200 0 L 100 0 L 0 100 L 0 200 L 200 0 Z'\n },\n {\n viewBox: [200, 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, 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 pathFormula: ShapePathFormulasKeys.L\n },\n {\n viewBox: [200, 200],\n path: 'M0 0 L200 0 L200 200 L0 200 L0 0 Z M50 50 L50 150 L150 150 L150 50 Z',\n pathFormula: ShapePathFormulasKeys.RING_RECT,\n },\n {\n viewBox: [200, 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, 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 pathFormula: ShapePathFormulasKeys.PLUS,\n },\n {\n viewBox: [200, 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, 200],\n path: 'M 0 0 L 200 0 L 200 160 L 100 160 L 60 200 L 60 160 L 0 160 Z',\n pathFormula: ShapePathFormulasKeys.MESSAGE,\n },\n {\n viewBox: [200, 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 pathFormula: ShapePathFormulasKeys.ROUND_MESSAGE,\n },\n {\n viewBox: [200, 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, 200],\n path: 'M 200 0 L 0 0 L 200 200 L 0 200 L 200 0 Z'\n },\n {\n viewBox: [200, 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, 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 viewBox: [200, 200],\n path: 'M 100 0 Q 0 50 0 175 Q 100 225 200 175 Q 200 50 100 0 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 100 A 50 50 0 1 1 200 100 L 100 200 L 0 100 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 60 60 L 0 100 L 60 140 L 100 200 L 140 140 L 200 100 L 140 60 L 100 0 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 80 40 L 20 20 L 40 80 L 0 100 L 40 120 L 20 180 L 80 160 L 100 200 L 120 160 L 180 180 L 160 120 L 200 100 L 160 80 L 180 20 L 120 40 L 100 0 Z',\n },\n ],\n },\n \n {\n type: '箭头',\n children: [\n {\n viewBox: [200, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 200],\n path: 'M 0 0 L 200 100 L 0 200 L 60 100 L 0 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 200 0 L 0 100 L 200 200 L 140 100 L 200 0 Z'\n },\n {\n viewBox: [200, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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 viewBox: [1024, 1024],\n path: 'M997.8886764 504.17210418L537.2729208 43.89182982c-13.97838539-13.97838539-36.56745619-13.97838539-50.5458416 0L26.1113236 504.17210418c-13.41924998 13.41924998-21.02349164 31.64706454-21.02349163 50.65766867 0 39.47496036 32.09437288 71.56933323 71.56933324 71.56933323h48.53295408V954.83524937c0 19.79339373 15.99127289 35.78466661 35.78466663 35.78466662H440.43066677V740.12724968h125.24633315v250.49266631h297.34821416c19.79339373 0 35.78466661-15.99127289 35.78466663-35.78466662V626.39910608h48.53295408c19.01060414 0 37.23841869-7.49241457 50.65766869-21.02349163 27.84494371-27.95677079 27.84494371-73.24673948-0.11182708-101.20351027z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M1009.13013121 349.27572283L674.72427717 14.86986879c-8.82158299-8.82158299-20.35749924-13.16451618-31.89341544-13.16451618s-23.07183245 4.34293316-31.89341547 13.16451618L392.29790453 233.6451272c-16.5574327-1.90003326-33.25058207-2.71433322-49.94373146-2.71433324-99.34459624 0-198.68919249 32.70771543-280.25490606 98.12314628-20.90036589 16.69314938-22.52896582 48.04369819-3.66434987 67.04403081l246.59717401 246.59717401-292.33368895 292.06225564c-3.52863319 3.52863319-5.83581644 8.27871636-6.24296642 13.30023282l-4.61436649 50.48659809c-1.22144996 12.75736619 8.95729967 23.6146991 21.57894918 23.6146991 0.6785833 0 1.35716662 0 2.03574992-0.13571666l50.48659809-4.61436649c5.02151649-0.40714999 9.77159962-2.71433322 13.30023282-6.24296643l292.33368896-292.33368896 246.59717402 246.59717401c8.82158299 8.82158299 20.35749924 13.16451618 31.89341544 13.16451618 13.16451618 0 26.19331567-5.70009979 35.15061536-16.82886604 76.40848044-95.40881307 108.16617924-214.83947521 95.27309638-330.33435417l218.63954175-218.63954173c17.50744934-17.37173267 17.50744934-45.8722316 0-63.51539759z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M976.62005979 160.47737905c-0.39452595-0.39452595-80.35178503 78.64217259-239.47725131 237.50462156l-111.6508437-111.65084369 237.89914752-237.89914752c-125.19623464-75.35445635-286.03131335-56.02268482-390.31767264 48.26367449-81.92988882 81.92988882-112.57140424 200.15616502-83.37648398 310.09739626l2.36715569 8.81107954-372.82702222 372.69551356c-8.15353628 8.15353628-8.15353628 21.56741857 0 29.72095487l185.95323084 185.95323084c8.15353628 8.15353628 21.56741857 8.15353628 29.72095485 0l372.56400493-372.56400493 8.81107953 2.3671557c110.07273989 29.32642892 228.29901608-1.18357785 310.36041356-83.24497533 104.41786795-104.2863593 123.74963948-265.12143802 49.97328693-390.05465535z',\n special: true,\n },\n ],\n },\n\n {\n type: '线性',\n children: [\n {\n viewBox: [1024, 1024],\n path: 'M953.5488 832.61667556c-24.08448-57.08913778-58.74574221-108.31644445-102.70947556-152.28017777-43.96373333-43.96373333-95.19104-78.49756444-152.28017777-102.70947558-0.50972445-0.25486222-1.01944888-0.38229333-1.52917334-0.63715555C776.41955556 519.64586667 828.02915556 426.23886221 828.02915556 320.85333332c0-174.58062221-141.44853334-316.02915556-316.02915556-316.02915554S195.97084444 146.27271111 195.97084444 320.85333332c0 105.38552889 51.6096 198.79253333 130.99918223 256.26396447-0.50972445 0.25486222-1.01944888 0.38229333-1.52917334 0.63715555-57.08913778 24.08448-108.31644445 58.61831112-152.28017777 102.70947554-43.96373333 43.96373333-78.49756444 95.19104-102.70947556 152.28017779C46.74901333 888.55893332 34.13333334 947.8144 32.85902222 1008.72647111c-0.12743111 5.7344 4.46008889 10.44935111 10.19448889 10.44935111h76.45866667c5.60696888 0 10.06705778-4.46008889 10.19448889-9.93962666 2.54862221-98.37681778 42.05226667-190.50951112 111.88451555-260.34176001 72.25344-72.25344 168.20906666-112.01194667 270.40881778-112.01194667s198.15537778 39.75850667 270.40881778 112.01194667C852.24106667 818.72668444 891.74471111 910.85937779 894.29333333 1009.23619556c0.12743111 5.60696888 4.58752 9.93962667 10.19448889 9.93962666h76.45866667c5.7344 0 10.32192-4.71495112 10.19448889-10.44935111-1.27431111-60.91207112-13.88999112-120.16753779-37.59217778-176.10979555zM512 540.03484444c-58.49088 0-113.54112-22.81016889-154.95623111-64.22527999S292.81848888 379.34421333 292.81848888 320.85333332c0-58.49088 22.81016889-113.54112 64.22528001-154.9562311S453.50912 101.67182221 512 101.67182221s113.54112 22.81016889 154.95623111 64.22528001S731.18151112 262.36245333 731.18151112 320.85333332c0 58.49088-22.81016889 113.54112-64.22528001 154.95623113S570.49088 540.03484444 512 540.03484444z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M985.31555555 111.50222222H38.68444445c-20.13866667 0-36.40888889 16.27022222-36.4088889 36.40888889v728.17777778c0 20.13866667 16.27022222 36.40888889 36.4088889 36.40888889h946.6311111c20.13866667 0 36.40888889-16.27022222 36.4088889-36.40888889V147.91111111c0-20.13866667-16.27022222-36.40888889-36.4088889-36.40888889z m-45.5111111 126.06577778V830.57777778H84.19555555V237.568l-31.40266666-24.46222222 44.71466666-57.45777778 48.6968889 37.888h731.70488888l48.69688889-37.888 44.71466667 57.45777778-31.51644444 24.46222222z M877.90933333 193.42222222L512 477.86666667 146.09066667 193.42222222l-48.69688889-37.888-44.71466667 57.45777778 31.40266667 24.46222222 388.66488889 302.19377778c22.98311111 17.86311111 55.18222222 17.86311111 78.16533333 0L939.80444445 237.568l31.40266666-24.46222222-44.71466666-57.45777778-48.58311112 37.77422222z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M985.31555555 88.74666667H38.68444445c-20.13866667 0-36.40888889 16.27022222-36.4088889 36.40888888v564.33777778c0 20.13866667 16.27022222 36.40888889 36.4088889 36.40888889h432.35555555v127.43111111H275.34222222c-10.01244445 0-18.20444445 8.192-18.20444444 18.20444445v54.61333333c0 5.00622222 4.096 9.10222222 9.10222222 9.10222222h491.52c5.00622222 0 9.10222222-4.096 9.10222222-9.10222222v-54.61333333c0-10.01244445-8.192-18.20444445-18.20444444-18.20444445H552.96V725.90222222h432.35555555c20.13866667 0 36.40888889-16.27022222 36.4088889-36.40888889V125.15555555c0-20.13866667-16.27022222-36.40888889-36.4088889-36.40888888z m-45.5111111 555.23555555H84.19555555V170.66666667h855.6088889v473.31555555z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m0 932.97777778c-233.69955555 0-423.25333333-189.55377778-423.25333333-423.25333333 0-101.26222222 35.61244445-194.33244445 95.00444444-267.15022222l595.39911111 595.39911111C706.33244445 899.64088889 613.26222222 935.25333333 512 935.25333333z m328.24888889-156.10311111L244.84977778 183.75111111C317.66755555 124.35911111 410.73777778 88.74666667 512 88.74666667c233.69955555 0 423.25333333 189.55377778 423.25333333 423.25333333 0 101.26222222-35.61244445 194.33244445-95.00444444 267.15022222z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M901.80266667 257.82044445L656.95288889 12.97066667c-6.82666667-6.82666667-16.04266667-10.69511111-25.71377778-10.69511112H147.91111111c-20.13866667 0-36.40888889 16.27022222-36.40888889 36.4088889v946.6311111c0 20.13866667 16.27022222 36.40888889 36.40888889 36.4088889h728.17777778c20.13866667 0 36.40888889-16.27022222 36.40888889-36.4088889V283.648c0-9.67111111-3.86844445-19.00088889-10.69511111-25.82755555zM828.52977778 300.37333333H614.4V86.24355555L828.52977778 300.37333333z m2.048 639.43111112H193.42222222V84.19555555h343.60888889v245.76c0 26.39644445 21.39022222 47.78666667 47.78666667 47.78666667h245.76v562.06222223z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M981.07392 55.79662222H42.92608c-31.22062222 0-50.71758221 34.02410666-35.04355556 61.16693334L304.28728889 620.82616888V927.42542221c0 22.55530667 18.09521779 40.77795555 40.52309333 40.77795557h334.37923556c22.42787556 0 40.52309333-18.22264888 40.52309333-40.77795557V620.82616888L1016.24490667 116.96355556c15.54659555-27.14282666-3.95036444-61.16693333-35.17098667-61.16693334zM628.47203556 876.45297779H395.52796444V677.66044445h233.07150222v198.79253334z m12.23338666-301.50200891l-12.10595556 21.15356445h-233.19893332l-12.10595556-21.15356445L130.59868445 147.54702221h762.8026311L640.70542222 574.95096888z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M980.62285431 4.54099753H654.39920987c-4.2719763 0-7.76722963 3.49525333-7.76722962 7.76722964v72.4941432c0 4.2719763 3.49525333 7.76722963 7.76722962 7.76722963h207.64393877L604.04167111 350.57107753c-64.72691358-49.83972347-143.69374815-76.7661195-226.67365136-76.7661195-99.54999309 0-193.27456395 38.83614815-263.5679921 109.25903012S4.54099753 547.08198717 4.54099753 646.63198025s38.83614815 193.27456395 109.25903012 263.5679921C184.09345581 980.62285431 277.81802667 1019.45900247 377.36801975 1019.45900247s193.27456395-38.83614815 263.5679921-109.25903012C711.35889383 839.90654419 750.19504197 746.18197333 750.19504197 646.63198025c0-82.9799032-26.92639605-161.68783013-76.63666567-226.41474372L931.4304 162.34521283V369.60079013c0 4.2719763 3.49525333 7.76722963 7.76722963 7.76722962h72.4941432c4.2719763 0 7.76722963-3.49525333 7.76722964-7.76722962V43.37714569c0-21.35988148-17.47626667-38.83614815-38.83614816-38.83614816zM377.36801975 921.07409383c-151.33152395 0-274.44211358-123.11058963-274.44211358-274.44211358s123.11058963-274.44211358 274.44211358-274.44211358 274.44211358 123.11058963 274.44211358 274.44211358-123.11058963 274.44211358-274.44211358 274.44211358z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M591.98717801 512l405.34042913-483.16579151c6.79427767-8.02960089 1.08090782-20.22841761-9.41933951-20.2284176h-123.22349044c-7.25752386 0-14.20621693 3.24272343-18.99309439 8.80167789L511.38233839 415.95362022 177.07299399 17.40746878c-4.63246205-5.55895447-11.58115512-8.80167789-18.99309439-8.80167789H34.85640916c-10.50024731 0-16.21361717 12.19881672-9.41933952 20.2284176L430.77749876 512 25.43706964 995.16579151c-6.79427767 8.02960089-1.08090782 20.22841761 9.41933952 20.2284176h123.22349044c7.25752386 0 14.20621693-3.24272343 18.99309439-8.80167789l334.3093444-398.54615144 334.30934441 398.54615144c4.63246205 5.55895447 11.58115512 8.80167789 18.99309439 8.80167789h123.22349044c10.50024731 0 16.21361717-12.19881672 9.41933951-20.2284176L591.98717801 512z',\n special: true,\n outlined: true,\n },\n ],\n }\n]","import { ChartType } from '@/types/slides'\n\ninterface ChartTypes {\n [propName: string]: ChartType\n}\n\nexport const CHART_TYPES: ChartTypes = {\n bar: 'bar',\n horizontalBar: 'bar',\n line: 'line',\n area: 'line',\n scatter: 'line',\n pie: 'pie',\n ring: 'pie',\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}","import { storeToRefs } from 'pinia'\nimport { nanoid } from 'nanoid'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { getImageSize } from '@/utils/image'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport { PPTLineElement, PPTElement, TableCell, TableCellStyle, PPTShapeElement, PPTChartElement, ChartOptions, PresetChartType } from '@/types/slides'\nimport { ShapePoolItem, SHAPE_PATH_FORMULAS } from '@/configs/shapes'\nimport { LinePoolItem } from '@/configs/lines'\nimport { CHART_TYPES } from '@/configs/chartTypes'\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, callback?: () => void) => {\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 if (callback) callback()\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: nanoid(10),\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 = (type: PresetChartType) => {\n const newElement: PPTChartElement = {\n type: 'chart',\n id: nanoid(10),\n chartType: CHART_TYPES[type],\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 let options: ChartOptions = {}\n if (type === 'horizontalBar') options = { horizontalBars: true }\n else if (type === 'area') options = { showArea: true }\n else if (type === 'scatter') options = { showLine: false }\n else if (type === 'ring') options = { donut: true }\n\n createElement({\n ...newElement,\n options,\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: nanoid(10), 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: nanoid(10),\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 const id = nanoid(10)\n createElement({\n type: 'text',\n id,\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 setTimeout(() => {\n const editorRef: HTMLElement | null = document.querySelector(`#editable-element-${id} .ProseMirror`)\n if (editorRef) editorRef.focus()\n }, 0)\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: nanoid(10),\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 if (data.pathFormula) {\n newElement.pathFormula = data.pathFormula\n newElement.viewBox = [width, height]\n newElement.path = SHAPE_PATH_FORMULAS[data.pathFormula](width, height)\n }\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: nanoid(10),\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 if (data.isCubic) newElement.cubic = [[(start[0] + end[0]) / 2, (start[1] + end[1]) / 2], [(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: nanoid(10),\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: nanoid(10),\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: nanoid(10),\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 { nanoid } from 'nanoid'\nimport { useSlidesStore, useMainStore } from '@/store'\nimport { PPTElement, Slide } from '@/types/slides'\nimport { createElementIdMap } from '@/utils/element'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { currentSlide } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n /**\n * 添加指定的元素数据(一组)\n * @param elements 元素列表数据\n */\n const addElementsFromData = (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 addSlidesFromData = (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 // 动画id替换\n if (slide.animations) {\n for (const animation of slide.animations) {\n animation.id = nanoid(10)\n animation.elId = elIdMap[animation.elId]\n }\n }\n return {\n ...slide,\n id: nanoid(10),\n }\n })\n slidesStore.addSlide(newSlides)\n addHistorySnapshot()\n }\n\n return {\n addElementsFromData,\n addSlidesFromData,\n }\n}","import { pasteCustomClipboardString } from '@/utils/clipboard'\nimport { parseText2Paragraphs } from '@/utils/textParser'\nimport useCreateElement from '@/hooks/useCreateElement'\nimport useAddSlidesOrElements from '@/hooks/useAddSlidesOrElements'\n\ninterface PasteTextClipboardDataOptions {\n onlySlide?: boolean\n onlyElements?: boolean\n}\n\nexport default () => {\n const { createTextElement } = useCreateElement()\n const { addElementsFromData, addSlidesFromData } = useAddSlidesOrElements()\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) addElementsFromData(data)\n else if (type === 'slides' && !onlyElements) addSlidesFromData(data)\n }\n\n // 普通文本\n else if (!onlyElements && !onlySlide) {\n const string = parseText2Paragraphs(clipboardData)\n createTextElementFromClipboard(string)\n }\n }\n\n return {\n pasteTextClipboardData,\n }\n}","import { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { nanoid } from 'nanoid'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { Slide } from '@/types/slides'\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'\nimport useAddSlidesOrElements from '@/hooks//useAddSlidesOrElements'\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { selectedSlidesIndex: _selectedSlidesIndex, activeElementIdList } = 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 } = usePasteTextClipboardData()\n const { addSlidesFromData } = useAddSlidesOrElements()\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 重置幻灯片\n const resetSlides = () => {\n const emptySlide: Slide = {\n id: nanoid(10),\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 if (activeElementIdList.value.length) mainStore.setActiveElementIdList([])\n slidesStore.updateSlideIndex(slideIndex.value - 1)\n }\n else if (command === KEYS.DOWN && slideIndex.value < slides.value.length - 1) {\n if (activeElementIdList.value.length) mainStore.setActiveElementIdList([])\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: nanoid(10),\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: nanoid(10),\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 addSlidesFromData([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 { nanoid } from 'nanoid'\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, 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 = nanoid(10)\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 { 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: ElementOrderCommands) => {\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 else if (docElm.msRequestFullscreen) docElm.msRequestFullscreen()\n}\n\n// 退出全屏\nexport const exitFullscreen = () => {\n if (document.exitFullscreen) document.exitFullscreen()\n else if (document.mozCancelFullScreen) document.mozCancelFullScreen()\n else if (document.webkitExitFullscreen) document.webkitExitFullscreen()\n else if (document.msExitFullscreen) document.msExitFullscreen()\n}\n\n// 判断是否全屏\nexport const isFullscreen = () => {\n const fullscreenElement = \n document.fullscreenElement ||\n document.mozFullScreenElement ||\n document.webkitFullscreenElement ||\n document.msFullscreenElement ||\n document.webkitCurrentFullScreenElement\n return !!fullscreenElement\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 { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\n\nexport default () => {\n const mainStore = useMainStore()\n const { canvasPercentage, canvasScale, canvasDragged } = storeToRefs(mainStore)\n\n const canvasScalePercentage = computed(() => Math.round(canvasScale.value * 100) + '%')\n\n /**\n * 缩放画布百分比\n * @param command 缩放命令:放大、缩小\n */\n const scaleCanvas = (command: '+' | '-') => {\n let percentage = canvasPercentage.value\n const step = 5\n const max = 200\n const min = 30\n if (command === '+' && percentage <= max) percentage += step\n if (command === '-' && percentage >= min) percentage -= step\n\n mainStore.setCanvasPercentage(percentage)\n }\n\n /**\n * 设置画布缩放比例\n * 但不是直接设置该值,而是通过设置画布可视区域百分比来动态计算\n * @param value 目标画布缩放比例\n */\n const setCanvasScalePercentage = (value: number) => {\n const percentage = Math.round(value / canvasScale.value * canvasPercentage.value) / 100\n mainStore.setCanvasPercentage(percentage)\n }\n\n /**\n * 重置画布尺寸和位置\n */\n const resetCanvas = () => {\n mainStore.setCanvasPercentage(90)\n if (canvasDragged) mainStore.setCanvasDragged(false)\n }\n\n return {\n canvasScalePercentage,\n setCanvasScalePercentage,\n scaleCanvas,\n resetCanvas,\n }\n}","import { onMounted, onUnmounted } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore, useKeyboardStore } from '@/store'\nimport { 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, spaceKeyState } = 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, enterScreeningFromStart } = useScreening()\n const { scaleCanvas, resetCanvas } = 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 moveSlide = (key: string) => {\n if (key === KEYS.PAGEUP) updateSlideIndex(KEYS.UP)\n else if (key === KEYS.PAGEDOWN) updateSlideIndex(KEYS.DOWN)\n }\n\n const order = (command: ElementOrderCommands) => {\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 if (!disableHotkeys.value && key === KEYS.SPACE) keyboardStore.setSpaceKeyState(true)\n\n \n if (ctrlOrMetaKeyActive && key === KEYS.P) {\n e.preventDefault()\n mainStore.setDialogForExport('pdf')\n return\n }\n if (shiftKey && key === KEYS.F5) {\n e.preventDefault()\n enterScreening()\n keyboardStore.setShiftKeyState(false)\n return\n }\n if (key === KEYS.F5) {\n e.preventDefault()\n enterScreeningFromStart()\n return\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.PAGEUP) {\n if (disableHotkeys.value) return\n e.preventDefault()\n moveSlide(KEYS.PAGEUP)\n }\n if (key === KEYS.PAGEDOWN) {\n if (disableHotkeys.value) return\n e.preventDefault()\n moveSlide(KEYS.PAGEDOWN)\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 resetCanvas()\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 if (spaceKeyState.value) keyboardStore.setSpaceKeyState(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-f0cbd508\"),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(\"导入 pptist 文件\")\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"导出 pptist 文件\")\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\"导出 PPTX\")\nconst _hoisted_9 = /*#__PURE__*/_createTextVNode(\"导出图片\")\nconst _hoisted_10 = /*#__PURE__*/_createTextVNode(\"导出 JSON\")\nconst _hoisted_11 = /*#__PURE__*/_createTextVNode(\"打印 / 导出 PDF\")\nconst _hoisted_12 = { class: \"menu-item\" }\nconst _hoisted_13 = /*#__PURE__*/_createTextVNode()\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"text\" }, \"编辑\", -1))\nconst _hoisted_15 = /*#__PURE__*/_createTextVNode(\"撤销\")\nconst _hoisted_16 = /*#__PURE__*/_createTextVNode(\"重做\")\nconst _hoisted_17 = /*#__PURE__*/_createTextVNode(\"添加页面\")\nconst _hoisted_18 = /*#__PURE__*/_createTextVNode(\"删除页面\")\nconst _hoisted_19 = /*#__PURE__*/_createTextVNode(\"重置幻灯片\")\nconst _hoisted_20 = { class: \"menu-item\" }\nconst _hoisted_21 = /*#__PURE__*/_createTextVNode()\nconst _hoisted_22 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"text\" }, \"演示\", -1))\nconst _hoisted_23 = /*#__PURE__*/_createTextVNode(\"从头开始\")\nconst _hoisted_24 = /*#__PURE__*/_createTextVNode(\"从当前页开始\")\nconst _hoisted_25 = { class: \"menu-item\" }\nconst _hoisted_26 = /*#__PURE__*/_createTextVNode()\nconst _hoisted_27 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"text\" }, \"帮助\", -1))\nconst _hoisted_28 = /*#__PURE__*/_createTextVNode(\"意见反馈\")\nconst _hoisted_29 = /*#__PURE__*/_createTextVNode(\"快捷键\")\nconst _hoisted_30 = { class: \"right\" }\nconst _hoisted_31 = {\n href: \"https://github.com/pipipi-pikachu/PPTist\",\n target: \"_blank\"\n}\nconst _hoisted_32 = { 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_FileInput = _resolveComponent(\"FileInput\")!\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_IconShare = _resolveComponent(\"IconShare\")!\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\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_FileInput, {\n accept: \".pptist\",\n onChange: _cache[0] || (_cache[0] = files => _ctx.importSpecificFile(files))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_MenuItem, null, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.setDialogForExport('pptist')))\n }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.setDialogForExport('pptx')))\n }, {\n default: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.setDialogForExport('image')))\n }, {\n default: _withCtx(() => [\n _hoisted_9\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.setDialogForExport('json')))\n }, {\n default: _withCtx(() => [\n _hoisted_10\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.setDialogForExport('pdf')))\n }, {\n default: _withCtx(() => [\n _hoisted_11\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[6] || (_cache[6] = ($event: any) => (_ctx.undo()))\n }, {\n default: _withCtx(() => [\n _hoisted_15\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.redo()))\n }, {\n default: _withCtx(() => [\n _hoisted_16\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.createSlide()))\n }, {\n default: _withCtx(() => [\n _hoisted_17\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.deleteSlide()))\n }, {\n default: _withCtx(() => [\n _hoisted_18\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[10] || (_cache[10] = ($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[11] || (_cache[11] = ($event: any) => (_ctx.toggleRuler()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.showRuler ? '关闭标尺' : '打开标尺'), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[12] || (_cache[12] = ($event: any) => (_ctx.resetSlides()))\n }, {\n default: _withCtx(() => [\n _hoisted_19\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_12, [\n _createVNode(_component_IconEdit),\n _hoisted_13,\n _hoisted_14\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[13] || (_cache[13] = ($event: any) => (_ctx.enterScreeningFromStart()))\n }, {\n default: _withCtx(() => [\n _hoisted_23\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[14] || (_cache[14] = ($event: any) => (_ctx.enterScreening()))\n }, {\n default: _withCtx(() => [\n _hoisted_24\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_20, [\n _createVNode(_component_IconPpt),\n _hoisted_21,\n _hoisted_22\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[15] || (_cache[15] = ($event: any) => (_ctx.goIssues()))\n }, {\n default: _withCtx(() => [\n _hoisted_28\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[16] || (_cache[16] = ($event: any) => (_ctx.hotkeyDrawerVisible = true))\n }, {\n default: _withCtx(() => [\n _hoisted_29\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_25, [\n _createVNode(_component_IconHelpcenter),\n _hoisted_26,\n _hoisted_27\n ])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_30, [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n title: \"导出\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"menu-item\",\n onClick: _cache[17] || (_cache[17] = ($event: any) => (_ctx.setDialogForExport('pptx')))\n }, [\n _createVNode(_component_IconShare, {\n size: \"18\",\n fill: \"#666\"\n })\n ])\n ]),\n _: 1\n }),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n title: \"幻灯片放映\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"menu-item\",\n onClick: _cache[18] || (_cache[18] = ($event: any) => (_ctx.enterScreening()))\n }, [\n _createVNode(_component_IconPpt, {\n size: \"19\",\n fill: \"#666\",\n style: {\"margin-top\":\"1px\"}\n })\n ])\n ]),\n _: 1\n }),\n _createElementVNode(\"a\", _hoisted_31, [\n _createElementVNode(\"div\", _hoisted_32, [\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 closable: false,\n visible: _ctx.hotkeyDrawerVisible,\n onClose: _cache[19] || (_cache[19] = ($event: any) => (_ctx.hotkeyDrawerVisible = false))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_HotkeyDoc)\n ]),\n _: 1\n }, 8, [\"visible\"])\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 { toPng, toJpeg } from 'html-to-image'\nimport { useSlidesStore } from '@/store'\nimport { PPTElementOutline, PPTElementShadow, PPTElementLink, Slide } from '@/types/slides'\nimport { getElementRange, getLineElementPath, getTableSubThemeColor } from '@/utils/element'\nimport { AST, toAST } from '@/utils/htmlParser'\nimport { SvgPoints, toPoints } from '@/utils/svgPathParser'\nimport { decrypt, encrypt } from '@/utils/crypto'\nimport { svg2Base64 } from '@/utils/svg2Base64'\nimport { message } from 'ant-design-vue'\nimport useAddSlidesOrElements from '@/hooks/useAddSlidesOrElements'\n\ninterface ExportImageConfig {\n quality: number\n width: number\n fontEmbedCSS?: string\n}\n\nexport default () => {\n const slidesStore = useSlidesStore()\n const { slides, theme, viewportRatio } = storeToRefs(slidesStore)\n\n const { addSlidesFromData } = useAddSlidesOrElements()\n\n const exporting = ref(false)\n\n // 导出图片\n const exportImage = (domRef: HTMLElement, format: string, quality: number, ignoreWebfont = true) => {\n exporting.value = true\n const toImage = format === 'png' ? toPng : toJpeg\n\n const foreignObjectSpans = domRef.querySelectorAll('foreignObject [xmlns]')\n foreignObjectSpans.forEach(spanRef => spanRef.removeAttribute('xmlns'))\n\n setTimeout(() => {\n const config: ExportImageConfig = {\n quality,\n width: 1600,\n }\n\n if (ignoreWebfont) config.fontEmbedCSS = ''\n\n toImage(domRef, config).then(dataUrl => {\n exporting.value = false\n saveAs(dataUrl, `pptist_slides.${format}`)\n }).catch(() => {\n exporting.value = false\n message.error('导出图片失败')\n })\n }, 200)\n }\n \n // 导出pptist文件(特有 .pptist 后缀文件)\n const exportSpecificFile = (_slides: Slide[]) => {\n const blob = new Blob([encrypt(JSON.stringify(_slides))], { type: '' })\n saveAs(blob, 'pptist_slides.pptist')\n }\n \n // 导入pptist文件\n const importSpecificFile = (files: File[], cover = false) => {\n const file = files[0]\n\n const reader = new FileReader()\n reader.addEventListener('load', () => {\n try {\n const slides = JSON.parse(decrypt(reader.result as string))\n if (cover) slidesStore.setSlides(slides)\n else addSlidesFromData(slides)\n }\n catch {\n message.error('无法正确读取 / 解析该文件')\n }\n })\n reader.readAsText(file)\n }\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 let bulletFlag = false\n let indent = 0\n\n const slices: pptxgen.TextProps[] = []\n const parse = (obj: AST[], baseStyleObj = {}) => {\n\n for (const item of obj) {\n const isBlockTag = 'tagName' in item && ['div', 'li', 'p'].includes(item.tagName)\n\n if (isBlockTag && 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 if (item.tagName === 'a') {\n const attr = item.attributes.find(attr => attr.key === 'href')\n styleObj['href'] = attr?.value || ''\n }\n if (item.tagName === 'ul') {\n styleObj['list-type'] = 'ul'\n }\n if (item.tagName === 'ol') {\n styleObj['list-type'] = 'ol'\n }\n if (item.tagName === 'li') {\n bulletFlag = true\n }\n if (item.tagName === 'p') {\n if ('attributes' in item) {\n const dataIndentAttr = item.attributes.find(attr => attr.key === 'data-indent')\n if (dataIndentAttr && dataIndentAttr.value) indent = +dataIndentAttr.value\n }\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(/ /g, ' ').replace(/>/g, '>').replace(/</g, '<').replace(/&/g, '&').replace(/\\n/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 if (styleObj['href']) options.hyperlink = { url: styleObj['href'] }\n\n if (bulletFlag && styleObj['list-type'] === 'ol') {\n options.bullet = { type: 'number', indent: 20 * 0.75 }\n options.paraSpaceBefore = 0.1\n bulletFlag = false\n }\n if (bulletFlag && styleObj['list-type'] === 'ul') {\n options.bullet = { indent: 20 * 0.75 }\n options.paraSpaceBefore = 0.1\n bulletFlag = false\n }\n if (indent) {\n options.indentLevel = indent\n indent = 0\n }\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 // 获取阴影配置\n const getShadowOption = (shadow: PPTElementShadow): pptxgen.ShadowProps => {\n const c = formatColor(shadow.color)\n const { h, v } = shadow\n\n let offset = 4\n let angle = 45\n\n if (h === 0 && v === 0) {\n offset = 4\n angle = 45\n }\n else if (h === 0) {\n if (v > 0) {\n offset = v\n angle = 90\n }\n else {\n offset = -v\n angle = 270\n }\n }\n else if (v === 0) {\n if (h > 0) {\n offset = h\n angle = 1\n }\n else {\n offset = -h\n angle = 180\n }\n }\n else if (h > 0 && v > 0) {\n offset = Math.max(h, v)\n angle = 45\n }\n else if (h > 0 && v < 0) {\n offset = Math.max(h, -v)\n angle = 315\n }\n else if (h < 0 && v > 0) {\n offset = Math.max(-h, v)\n angle = 135\n }\n else if (h < 0 && v < 0) {\n offset = Math.max(-h, -v)\n angle = 225\n }\n\n return {\n type: 'outer',\n color: c.color.replace('#', ''),\n opacity: c.alpha,\n blur: shadow.blur * 0.75,\n offset,\n angle,\n }\n }\n\n // 获取边框配置\n const getOutlineOption = (outline: PPTElementOutline): pptxgen.ShapeLineProps => {\n const c = formatColor(outline?.color || '#000000')\n return {\n color: c.color, \n transparency: (1 - c.alpha) * 100,\n width: (outline.width || 1) * 0.75, \n dashType: outline.style === 'solid' ? 'solid' : 'dash',\n }\n }\n\n // 获取超链接配置\n const getLinkOption = (link: PPTElementLink): pptxgen.HyperlinkProps | null => {\n const { type, target } = link\n if (type === 'web') return { url: target }\n if (type === 'slide') {\n const index = slides.value.findIndex(slide => slide.id === target)\n if (index !== -1) return { slide: index + 1 }\n }\n\n return null\n }\n\n // 导出PPTX文件\n const exportPPTX = (_slides: Slide[], masterOverwrite: boolean) => {\n exporting.value = true\n const pptx = new pptxgen()\n\n if (viewportRatio.value === 0.625) pptx.layout = 'LAYOUT_16x10'\n else if (viewportRatio.value === 0.75) pptx.layout = 'LAYOUT_4x3'\n else pptx.layout = 'LAYOUT_16x9'\n\n if (masterOverwrite) {\n const { color: bgColor, alpha: bgAlpha } = formatColor(theme.value.backgroundColor)\n pptx.defineSlideMaster({\n title: 'PPTIST_MASTER',\n background: { color: bgColor, transparency: (1 - bgAlpha) * 100 },\n })\n }\n\n for (const slide of _slides) {\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 if (slide.remark) pptxSlide.addNotes(slide.remark)\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: 'top',\n margin: 10 * 0.75,\n paraSpaceBefore: 5 * 0.75,\n lineSpacingMultiple: 1.5 / 1.25,\n autoFit: true,\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 / 1.25\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) options.shadow = getShadowOption(el.shadow)\n if (el.outline?.width) options.line = getOutlineOption(el.outline)\n if (el.opacity !== undefined) options.transparency = (1 - el.opacity) * 100\n if (el.paragraphSpace !== undefined) options.paraSpaceBefore = el.paragraphSpace * 0.75\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.link) {\n const linkOption = getLinkOption(el.link)\n if (linkOption) options.hyperlink = linkOption\n }\n if (el.filters?.opacity) options.transparency = 100 - parseInt(el.filters?.opacity)\n if (el.clip) {\n if (el.clip.shape === 'ellipse') options.rounding = true\n\n const [start, end] = el.clip.range\n const [startX, startY] = start\n const [endX, endY] = end\n\n const originW = el.width / ((endX - startX) / 100)\n const originH = el.height / ((endY - startY) / 100)\n\n options.w = originW / 100\n options.h = originH / 100\n\n options.sizing = {\n type: 'crop',\n x: startX / 100 * originW / 100,\n y: startY / 100 * originH / 100,\n w: (endX - startX) / 100 * originW / 100,\n h: (endY - startY) / 100 * originH / 100,\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 linkOption = getLinkOption(el.link)\n if (linkOption) options.hyperlink = linkOption\n }\n\n pptxSlide.addImage(options)\n }\n else {\n const scale = {\n x: el.width / el.viewBox[0],\n y: el.height / el.viewBox[1],\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.shadow) options.shadow = getShadowOption(el.shadow)\n if (el.outline?.width) options.line = getOutlineOption(el.outline)\n if (el.link) {\n const linkOption = getLinkOption(el.link)\n if (linkOption) options.hyperlink = linkOption\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 paraSpaceBefore: 5 * 0.75,\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 const c = formatColor(el.color)\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: c.color, \n transparency: (1 - c.alpha) * 100,\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 if (el.shadow) options.shadow = getShadowOption(el.shadow)\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 linkOption = getLinkOption(el.link)\n if (linkOption) options.hyperlink = linkOption\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 exportImage,\n exportJSON,\n importSpecificFile,\n exportSpecificFile,\n exportPPTX,\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-a2afb4ce\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"hotkey-doc\" }\nconst _hoisted_2 = { class: \"title\" }\nconst _hoisted_3 = { class: \"label\" }\nconst _hoisted_4 = { class: \"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 (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.hotkeys, (item) => {\n return (_openBlock(), _createElementBlock(_Fragment, {\n key: item.type\n }, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(item.type), 1),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.children, (hotkey) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"hotkey-item\",\n key: hotkey.label\n }, [\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(hotkey.label), 1),\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(hotkey.value), 1)\n ]))\n }), 128))\n ], 64))\n }), 128))\n ]))\n}","\nimport { defineComponent } from 'vue'\nimport { HOTKEY_DOC } from '@/configs/hotkey'\n\nexport default defineComponent({\n name: 'hotkey-doc',\n setup() {\n return {\n hotkeys: HOTKEY_DOC,\n }\n },\n})\n","import { render } from \"./HotkeyDoc.vue?vue&type=template&id=a2afb4ce&scoped=true&ts=true\"\nimport script from \"./HotkeyDoc.vue?vue&type=script&lang=ts\"\nexport * from \"./HotkeyDoc.vue?vue&type=script&lang=ts\"\n\nimport \"./HotkeyDoc.vue?vue&type=style&index=0&id=a2afb4ce&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-a2afb4ce\"]])\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, showRuler } = storeToRefs(mainStore)\n\n const { enterScreening, enterScreeningFromStart } = useScreening()\n const { createSlide, deleteSlide, resetSlides } = useSlideHandler()\n const { redo, undo } = useHistorySnapshot()\n const { importSpecificFile } = useExport()\n\n const setDialogForExport = mainStore.setDialogForExport\n\n const toggleGridLines = () => {\n mainStore.setGridLinesState(!showGridLines.value)\n }\n\n const toggleRuler = () => {\n mainStore.setRulerState(!showRuler.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 showRuler,\n hotkeyDrawerVisible,\n importSpecificFile,\n setDialogForExport,\n enterScreening,\n enterScreeningFromStart,\n createSlide,\n deleteSlide,\n toggleGridLines,\n toggleRuler,\n resetSlides,\n goIssues,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=f0cbd508&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=f0cbd508&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-f0cbd508\"]])\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-743d966c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"operates\" }\nconst _hoisted_2 = {\n key: 1,\n class: \"drag-mask\"\n}\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_Ruler = _resolveComponent(\"Ruler\")!\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 onWheel: _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 canvasScale: _ctx.canvasScale\n }, null, 8, [\"type\", \"axis\", \"length\", \"canvasScale\"]))\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.mouseSelectionVisible)\n ? (_openBlock(), _createBlock(_component_MouseSelection, {\n key: 0,\n top: _ctx.mouseSelection.top,\n left: _ctx.mouseSelection.left,\n width: _ctx.mouseSelection.width,\n height: _ctx.mouseSelection.height,\n quadrant: _ctx.mouseSelectionQuadrant\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 (_ctx.spaceKeyState)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2))\n : _createCommentVNode(\"\", true),\n (_ctx.showRuler)\n ? (_openBlock(), _createBlock(_component_Ruler, {\n key: 2,\n viewportStyles: _ctx.viewportStyles\n }, null, 8, [\"viewportStyles\"]))\n : _createCommentVNode(\"\", true),\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 ], 32)), [\n [_directive_contextmenu, _ctx.contextmenus],\n [_directive_click_outside, _ctx.removeEditorAreaFocus]\n ])\n}","import { InjectionKey, Ref } from 'vue'\n\nexport type SlideScale = Ref\nexport type SlideId = Ref\n\nexport const injectKeySlideScale: InjectionKey = Symbol()\nexport const injectKeySlideId: InjectionKey = Symbol()","// 清除文字选区\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, canvasDragged } = 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 watch(canvasDragged, () => {\n if (!canvasDragged.value) setViewportPosition()\n })\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 // 拖拽画布\n const dragViewport = (e: MouseEvent) => {\n let isMouseDown = true\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n\n const originLeft = viewportLeft.value\n const originTop = viewportTop.value\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n viewportLeft.value = originLeft + (currentPageX - startPageX)\n viewportTop.value = originTop + (currentPageY - startPageY)\n }\n\n document.onmouseup = () => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n mainStore.setCanvasDragged(true)\n }\n }\n\n return {\n viewportStyles,\n dragViewport,\n }\n}","import { Ref, ref } 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 mouseSelectionVisible = ref(false)\n const mouseSelectionQuadrant = ref(1)\n const mouseSelection = ref({\n top: 0,\n left: 0,\n width: 0,\n height: 0,\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 mouseSelection.value = {\n top: top,\n left: left,\n width: 0,\n height: 0,\n }\n mouseSelectionVisible.value = false\n mouseSelectionQuadrant.value = 4\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 mouseSelection.value = {\n ...mouseSelection.value,\n width: width,\n height: height,\n }\n mouseSelectionVisible.value = true\n mouseSelectionQuadrant.value = quadrant\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 = mouseSelection.value.left\n const mouseSelectionTop = mouseSelection.value.top\n const mouseSelectionWidth = mouseSelection.value.width\n const mouseSelectionHeight = mouseSelection.value.height\n\n const { minX, maxX, minY, maxY } = getElementRange(element)\n\n // 计算元素是否处在框选范围内时,四个框选方向的计算方式有差异\n let isInclude = false\n if (mouseSelectionQuadrant.value === 4) {\n isInclude = minX > mouseSelectionLeft && \n maxX < mouseSelectionLeft + mouseSelectionWidth && \n minY > mouseSelectionTop && \n maxY < mouseSelectionTop + mouseSelectionHeight\n }\n else if (mouseSelectionQuadrant.value === 1) {\n isInclude = minX > (mouseSelectionLeft - mouseSelectionWidth) && \n maxX < (mouseSelectionLeft - mouseSelectionWidth) + mouseSelectionWidth && \n minY > (mouseSelectionTop - mouseSelectionHeight) && \n maxY < (mouseSelectionTop - mouseSelectionHeight) + mouseSelectionHeight\n }\n else if (mouseSelectionQuadrant.value === 2) {\n isInclude = minX > mouseSelectionLeft && \n maxX < mouseSelectionLeft + mouseSelectionWidth && \n minY > (mouseSelectionTop - mouseSelectionHeight) && \n maxY < (mouseSelectionTop - mouseSelectionHeight) + mouseSelectionHeight\n }\n else if (mouseSelectionQuadrant.value === 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 mouseSelectionVisible.value = false\n }\n }\n\n return {\n mouseSelection,\n mouseSelectionVisible,\n mouseSelectionQuadrant,\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, PPTLineElement, PPTVideoElement, PPTAudioElement } 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: Exclude) => {\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 { SHAPE_PATH_FORMULAS } from '@/configs/shapes'\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 canvasScale: Ref,\n) => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { activeElementIdList, activeGroupElementId } = storeToRefs(mainStore)\n const { viewportRatio } = storeToRefs(slidesStore)\n const { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 缩放元素\n const scaleElement = (e: MouseEvent | TouchEvent, element: Exclude, command: OperateResizeHandlers) => {\n const isTouchEvent = !(e instanceof MouseEvent)\n if (isTouchEvent && (!e.changedTouches || !e.changedTouches[0])) return\n\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 = isTouchEvent ? e.changedTouches[0].pageX : e.pageX\n const startPageY = isTouchEvent ? e.changedTouches[0].pageY : 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 const handleMousemove = (e: MouseEvent | TouchEvent) => {\n if (!isMouseDown) return\n\n const currentPageX = e instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const currentPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].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 => {\n if (element.id !== el.id) return el\n if (el.type === 'shape' && 'pathFormula' in el && el.pathFormula) {\n return {\n ...el, left, top, width, height,\n viewBox: [width, height],\n path: SHAPE_PATH_FORMULAS[el.pathFormula](width, height),\n }\n }\n return { ...el, left, top, width, height }\n })\n }\n\n const handleMouseup = (e: MouseEvent | TouchEvent) => {\n isMouseDown = false\n \n document.ontouchmove = null\n document.ontouchend = null\n document.onmousemove = null\n document.onmouseup = null\n\n alignmentLines.value = []\n\n const currentPageX = e instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const currentPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].pageY\n \n if (startPageX === currentPageX && startPageY === currentPageY) return\n \n slidesStore.updateSlide({ elements: elementList.value })\n mainStore.setScalingState(false)\n \n addHistorySnapshot()\n }\n\n if (isTouchEvent) {\n document.ontouchmove = handleMousemove\n document.ontouchend = handleMouseup\n }\n else {\n document.onmousemove = handleMousemove\n document.onmouseup = handleMouseup\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 | TouchEvent, 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 | TouchEvent, 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 instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const startPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].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 canvasScale: Ref,\n) => {\n const slidesStore = useSlidesStore()\n const { activeElementIdList, activeGroupElementId } = storeToRefs(useMainStore())\n const { viewportRatio } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const dragElement = (e: MouseEvent | TouchEvent, element: PPTElement) => {\n const isTouchEvent = !(e instanceof MouseEvent)\n if (isTouchEvent && (!e.changedTouches || !e.changedTouches[0])) return\n\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 = isTouchEvent ? e.changedTouches[0].pageX : e.pageX\n const startPageY = isTouchEvent ? e.changedTouches[0].pageY : 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 const handleMousemove = (e: MouseEvent | TouchEvent) => {\n const currentPageX = e instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const currentPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].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 const handleMouseup = (e: MouseEvent | TouchEvent) => {\n isMouseDown = false\n \n document.ontouchmove = null\n document.ontouchend = null\n document.onmousemove = null\n document.onmouseup = null\n\n alignmentLines.value = []\n\n const currentPageX = e instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const currentPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].pageY\n\n if (startPageX === currentPageX && startPageY === currentPageY) return\n\n slidesStore.updateSlide({ elements: elementList.value })\n addHistorySnapshot()\n }\n\n if (isTouchEvent) {\n document.ontouchmove = handleMousemove\n document.ontouchend = handleMouseup\n }\n else {\n document.onmousemove = handleMousemove\n document.onmouseup = handleMouseup\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 { 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: OperateLineHandlers) => {\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 const [c1, c2] = element.cubic || [[0, 0], [0, 0]]\n let c1X = element.left + c1[0]\n let c1Y = element.top + c1[1]\n let c2X = element.left + c2[0]\n let c2Y = element.top + c2[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 if (command === OperateLineHandlers.C) {\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 else if (command === OperateLineHandlers.C1) {\n c1X = c1X + moveX\n c1Y = c1Y + moveY\n\n if (Math.abs(c1X - startX) < sorptionRange) c1X = startX\n if (Math.abs(c1Y - startY) < sorptionRange) c1Y = startY\n if (Math.abs(c1X - endX) < sorptionRange) c1X = endX\n if (Math.abs(c1Y - endY) < sorptionRange) c1Y = endY\n }\n else if (command === OperateLineHandlers.C2) {\n c2X = c2X + moveX\n c2Y = c2Y + moveY\n\n if (Math.abs(c2X - startX) < sorptionRange) c2X = startX\n if (Math.abs(c2Y - startY) < sorptionRange) c2Y = startY\n if (Math.abs(c2X - endX) < sorptionRange) c2X = endX\n if (Math.abs(c2Y - endY) < sorptionRange) c2Y = endY\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.START || command === OperateLineHandlers.END) {\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 if (element.cubic) newEl.cubic = [[(start[0] + end[0]) / 2, (start[1] + end[1]) / 2], [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]]\n }\n else if (command === OperateLineHandlers.C) {\n if (element.broken) newEl.broken = [midX - minX, midY - minY]\n if (element.curve) newEl.curve = [midX - minX, midY - minY]\n }\n else {\n if (element.cubic) newEl.cubic = [[c1X - minX, c1Y - minY], [c2X - minX, c2Y - 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 { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport { 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: ElementAlignCommands) => {\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, createElementBlock as _createElementBlock, withDirectives as _withDirectives, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-fed8b698\"),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 onTouchstart: _cache[3] || (_cache[3] = $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-74cf8d68\"),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 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=74cf8d68&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=74cf8d68&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-74cf8d68\"]])\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-b701edc6\"),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 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=b701edc6&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=b701edc6&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-b701edc6\"]])\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-4c746203\"),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 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=4c746203&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=4c746203&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-4c746203\"]])\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-2ec16714\"),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(true), _createElementBlock(_Fragment, null, _renderList(_ctx.cornerPoint, (point) => {\n return (_openBlock(), _createElementBlock(\"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 }), 128)),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.edgePoints, (point) => {\n return (_openBlock(), _createElementBlock(\"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 }), 128))\n ], 36)\n ], 4)), [\n [_directive_click_outside, _ctx.handleClip]\n ])\n}","\nimport { computed, defineComponent, onMounted, onUnmounted, PropType, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useKeyboardStore } from '@/store'\nimport { KEYS } from '@/configs/hotkey'\nimport { ImageClipedEmitData, OperateResizeHandlers } from '@/types/edit'\nimport { ImageClipDataRange, ImageElementClip } from '@/types/slides'\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 = ref({\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 = ref({\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n })\n\n // 顶层图片容器位置大小样式(裁剪高亮区域)\n const topImgWrapperPositionStyle = computed(() => {\n const { top, left, width, height } = topImgWrapperPosition.value\n return {\n top: top + '%',\n left: left + '%',\n width: width + '%',\n height: height + '%',\n }\n })\n\n // 顶层图片位置大小样式(裁剪区域图片)\n const topImgPositionStyle = computed(() => {\n const bottomWidth = imgPosition.value.width\n const bottomHeight = imgPosition.value.height\n \n const { top, left, width, height } = topImgWrapperPosition.value\n \n return {\n left: -left * (100 / width) + '%',\n top: -top * (100 / height) + '%',\n width: bottomWidth / width * 100 + '%',\n height: bottomHeight / height * 100 + '%',\n }\n })\n\n // 初始化裁剪位置信息\n const initClipPosition = () => {\n const { left, top } = getClipDataTransformInfo()\n topImgWrapperPosition.value = {\n left: left,\n top: top,\n width: 100,\n height: 100,\n }\n \n clipWrapperPositionStyle.value = {\n top: -top + '%',\n left: -left + '%',\n }\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.value.left - left) / 100 * props.width,\n top: (topImgWrapperPosition.value.top - top) / 100 * props.height,\n width: (topImgWrapperPosition.value.width - 100) / 100 * props.width,\n height: (topImgWrapperPosition.value.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 = { ...topImgWrapperPosition.value }\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.value = {\n ...topImgWrapperPosition.value,\n left: targetLeft,\n top: targetTop,\n }\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: OperateResizeHandlers) => {\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 = { ...topImgWrapperPosition.value }\n\n const aspectRatio = topImgWrapperPosition.value.width / topImgWrapperPosition.value.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.value = {\n left: targetLeft,\n top: targetTop,\n width: targetWidth,\n height: targetHeight,\n }\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 const cornerPoint = [\n OperateResizeHandlers.LEFT_TOP,\n OperateResizeHandlers.RIGHT_TOP,\n OperateResizeHandlers.LEFT_BOTTOM,\n OperateResizeHandlers.RIGHT_BOTTOM,\n ]\n const edgePoints = [\n OperateResizeHandlers.TOP,\n OperateResizeHandlers.BOTTOM,\n OperateResizeHandlers.LEFT,\n OperateResizeHandlers.RIGHT,\n ]\n\n return {\n clipWrapperPositionStyle,\n bottomImgPositionStyle,\n topImgWrapperPositionStyle,\n topImgPositionStyle,\n rotateClassName,\n edgePoints,\n cornerPoint,\n handleClip,\n moveClipRange,\n scaleClipRange,\n }\n },\n})\n","import { render } from \"./ImageClipHandler.vue?vue&type=template&id=2ec16714&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=2ec16714&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-2ec16714\"]])\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 | TouchEvent, element: PPTImageElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[] | null>,\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 | TouchEvent) => {\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=fed8b698&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=fed8b698&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-fed8b698\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, resolveDirective as _resolveDirective, openBlock as _openBlock, createElementBlock as _createElementBlock, withDirectives as _withDirectives, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-77a8ccf7\"),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((_openBlock(), _createElementBlock(\"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[4] || (_cache[4] = $event => _ctx.handleSelectElement($event)),\n onTouchstart: _cache[5] || (_cache[5] = $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 style: _normalizeStyle({\n '--textIndent': `${_ctx.elementInfo.textIndent || 0}px`,\n '--paragraphSpace': `${_ctx.elementInfo.paragraphSpace === undefined ? 5 : _ctx.elementInfo.paragraphSpace}px`,\n }),\n onUpdate: _cache[0] || (_cache[0] = value => _ctx.updateContent(value)),\n onBlur: _cache[1] || (_cache[1] = ($event: any) => (_ctx.checkEmptyText())),\n onMousedown: _cache[2] || (_cache[2] = $event => _ctx.handleSelectElement($event, false)),\n onTouchstart: _cache[3] || (_cache[3] = $event => _ctx.handleSelectElement($event))\n }, null, 8, [\"elementId\", \"defaultColor\", \"defaultFontName\", \"editable\", \"value\", \"style\"]),\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-34c0a0a8\"),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 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=34c0a0a8&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=34c0a0a8&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-34c0a0a8\"]])\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-50456657\"),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 RichTextAction {\n command: string\n value?: string\n}\n\nexport interface RichTextCommand {\n target?: string\n action: RichTextAction | RichTextAction[]\n}\n\ntype Events = {\n [EmitterEvents.RICH_TEXT_COMMAND]: 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 indent: {\n default: 0,\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\n let align = (dom as HTMLElement).getAttribute('align') || textAlign || ''\n align = /(left|right|center|justify)/.test(align) ? align : ''\n\n const indent = +((dom as HTMLElement).getAttribute('data-indent') || 0)\n \n return { align, indent }\n }\n }\n ],\n toDOM: (node: Node) => {\n const { align, indent } = node.attrs\n let style = ''\n if (align && align !== 'left') style += `text-align: ${align};`\n\n const attr = { style }\n if (indent) attr['data-indent'] = indent\n\n return ['p', attr, 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 inline: true,\n group: 'inline',\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 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\nconst link: MarkSpec = {\n attrs: {\n href: {},\n title: { default: null },\n target: { default: '_blank' },\n },\n inclusive: false,\n parseDOM: [\n {\n tag: 'a[href]',\n getAttrs: dom => {\n const href = (dom as HTMLElement).getAttribute('href')\n const title = (dom as HTMLElement).getAttribute('title')\n return { href, title }\n }\n },\n ],\n toDOM: node => ['a', node.attrs, 0],\n}\n\nexport default {\n ...marks,\n subscript,\n superscript,\n strikethrough,\n underline,\n forecolor,\n backcolor,\n fontsize,\n fontname,\n link,\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\nexport const 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","import { Schema } from 'prosemirror-model'\nimport { TextSelection, AllSelection, Transaction } from 'prosemirror-state'\nimport { EditorView } from 'prosemirror-view'\nimport { isList } from './toggleList'\n\nfunction setNodeIndentMarkup(tr: Transaction, pos: number, delta: number): Transaction {\n if (!tr.doc) return tr\n\n const node = tr.doc.nodeAt(pos)\n if (!node) return tr\n\n const minIndent = 0\n const maxIndent = 7\n\n let indent = (node.attrs.indent || 0) + delta\n if (indent < minIndent) indent = minIndent\n if (indent > maxIndent) indent = maxIndent\n\n if (indent === node.attrs.indent) return tr\n\n const nodeAttrs = {\n ...node.attrs,\n indent,\n }\n\n return tr.setNodeMarkup(pos, node.type, nodeAttrs, node.marks)\n}\n\nconst setTextIndent = (tr: Transaction, schema: Schema, delta: number): Transaction => {\n const { selection, doc } = tr\n if (!selection || !doc) return tr\n\n if (!(selection instanceof TextSelection || selection instanceof AllSelection)) return tr\n\n const { from, to } = selection\n\n doc.nodesBetween(from, to, (node, pos) => {\n const nodeType = node.type\n\n if (nodeType.name === 'paragraph' || nodeType.name === 'blockquote') {\n tr = setNodeIndentMarkup(tr, pos, delta)\n return false\n } \n else if (isList(node, schema)) return false\n return true\n })\n\n return tr\n}\n\nexport const indentCommand = (view: EditorView, delta: number) => {\n const { state } = view\n const { schema, selection } = state\n\n const tr = setTextIndent(\n state.tr.setSelection(selection),\n schema,\n delta,\n )\n if (tr.docChanged) {\n view.dispatch(tr)\n return true\n }\n\n return false\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 } from 'prosemirror-commands'\nimport { initProsemirrorEditor, createDocument } from '@/utils/prosemirror'\nimport { findNodesWithSameMark, getTextAttrs, autoSelectAll, addMark, markActive, getFontsize } from '@/utils/prosemirror/utils'\nimport emitter, { EmitterEvents, RichTextCommand } from '@/utils/emitter'\nimport { alignmentCommand } from '@/utils/prosemirror/commands/setTextAlign'\nimport { indentCommand } from '@/utils/prosemirror/commands/setTextIndent'\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 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 = ({ target, action }: RichTextCommand) => {\n if (!target && handleElementId.value !== props.elementId) return\n if (target && target !== props.elementId) return\n\n const actions = ('command' in action) ? [action] : action\n\n for (const item of actions) {\n if (item.command === 'fontname' && item.value) {\n const mark = editorView.state.schema.marks.fontname.create({ fontname: item.value })\n autoSelectAll(editorView)\n addMark(editorView, mark)\n }\n else if (item.command === 'fontsize' && item.value) {\n const mark = editorView.state.schema.marks.fontsize.create({ fontsize: item.value })\n autoSelectAll(editorView)\n addMark(editorView, mark)\n }\n else if (item.command === 'fontsize-add') {\n const step = item.value ? +item.value : 2\n autoSelectAll(editorView)\n const fontsize = getFontsize(editorView) + step + 'px'\n const mark = editorView.state.schema.marks.fontsize.create({ fontsize })\n addMark(editorView, mark)\n }\n else if (item.command === 'fontsize-reduce') {\n const step = item.value ? +item.value : 2\n autoSelectAll(editorView)\n let fontsize = getFontsize(editorView) - step\n if (fontsize < 12) fontsize = 12\n const mark = editorView.state.schema.marks.fontsize.create({ fontsize: fontsize + 'px' })\n addMark(editorView, mark)\n }\n else if (item.command === 'color' && item.value) {\n const mark = editorView.state.schema.marks.forecolor.create({ color: item.value })\n autoSelectAll(editorView)\n addMark(editorView, mark)\n }\n else if (item.command === 'backcolor' && item.value) {\n const mark = editorView.state.schema.marks.backcolor.create({ backcolor: item.value })\n autoSelectAll(editorView)\n addMark(editorView, mark)\n }\n else if (item.command === 'bold') {\n autoSelectAll(editorView)\n toggleMark(editorView.state.schema.marks.strong)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'em') {\n autoSelectAll(editorView)\n toggleMark(editorView.state.schema.marks.em)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'underline') {\n autoSelectAll(editorView)\n toggleMark(editorView.state.schema.marks.underline)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'strikethrough') {\n autoSelectAll(editorView)\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 === 'indent' && item.value) {\n indentCommand(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 autoSelectAll(editorView)\n const { $from, $to } = editorView.state.selection\n editorView.dispatch(editorView.state.tr.removeMark($from.pos, $to.pos))\n }\n else if (item.command === 'link') {\n const markType = editorView.state.schema.marks.link\n const { from, to } = editorView.state.selection\n const result = findNodesWithSameMark(editorView.state.doc, from, to, markType)\n if (result) {\n if (item.value) {\n const mark = editorView.state.schema.marks.link.create({ href: item.value, title: item.value })\n addMark(editorView, mark, { from: result.from.pos, to: result.to.pos + 1 })\n }\n else editorView.dispatch(editorView.state.tr.removeMark(result.from.pos, result.to.pos + 1, markType))\n }\n else if (markActive(editorView.state, markType)) {\n if (item.value) {\n const mark = editorView.state.schema.marks.link.create({ href: item.value, title: item.value })\n addMark(editorView, mark)\n }\n else toggleMark(markType)(editorView.state, editorView.dispatch)\n }\n else if (item.value) {\n autoSelectAll(editorView)\n toggleMark(markType, { href: item.value, title: item.value })(editorView.state, editorView.dispatch)\n }\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=50456657&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=50456657&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-50456657\"]])\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 | TouchEvent, element: PPTTextElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[] | null>,\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 | TouchEvent, 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 const checkEmptyText = () => {\n const pureText = props.elementInfo.content.replaceAll(/<[^>]+>/g, '')\n if (!pureText) slidesStore.deleteElement(props.elementInfo.id)\n }\n\n return {\n elementRef,\n shadowStyle,\n updateContent,\n handleSelectElement,\n checkEmptyText,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=77a8ccf7&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=77a8ccf7&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-77a8ccf7\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, 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-81338b12\"),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\"]\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((_openBlock(), _createElementBlock(\"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[4] || (_cache[4] = $event => _ctx.handleSelectElement($event)),\n onTouchstart: _cache[5] || (_cache[5] = $event => _ctx.handleSelectElement($event)),\n onDblclick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.editable = true))\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[0]}, ${_ctx.elementInfo.height / _ctx.elementInfo.viewBox[1]}) 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 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 || _ctx.text.content }]])\n }, [\n (_ctx.editable || _ctx.text.content)\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 onBlur: _cache[1] || (_cache[1] = ($event: any) => (_ctx.checkEmptyText())),\n onMousedown: _cache[2] || (_cache[2] = $event => _ctx.handleSelectElement($event, false)),\n onTouchstart: _cache[3] || (_cache[3] = $event => _ctx.handleSelectElement($event, false))\n }, null, 8, [\"elementId\", \"defaultColor\", \"defaultFontName\", \"editable\", \"value\"]))\n : _createCommentVNode(\"\", true)\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 | TouchEvent, element: PPTShapeElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[] | null>,\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 | TouchEvent, canMove = true) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo, canMove)\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 watch(handleElementId, () => {\n if (handleElementId.value !== props.elementInfo.id) {\n if (editable.value) editable.value = false\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 const checkEmptyText = () => {\n if (!props.elementInfo.text) return\n\n const pureText = props.elementInfo.text.content.replaceAll(/<[^>]+>/g, '')\n if (!pureText) {\n slidesStore.removeElementProps({ id: props.elementInfo.id, propName: 'text' })\n addHistorySnapshot()\n }\n }\n\n return {\n shadowStyle,\n outlineWidth,\n outlineStyle,\n outlineColor,\n flipStyle,\n editable,\n text,\n handleSelectElement,\n updateText,\n checkEmptyText,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=81338b12&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=81338b12&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-81338b12\"]])\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-5f3b7dc5\"),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 onTouchstart: _cache[1] || (_cache[1] = $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 \"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 | TouchEvent, element: PPTLineElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[] | null>,\n },\n },\n setup(props) {\n const handleSelectElement = (e: MouseEvent | TouchEvent) => {\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=5f3b7dc5&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=5f3b7dc5&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-5f3b7dc5\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, resolveDirective as _resolveDirective, openBlock as _openBlock, createElementBlock as _createElementBlock, withDirectives as _withDirectives, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } 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((_openBlock(), _createElementBlock(\"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 onTouchstart: _cache[1] || (_cache[1] = $event => _ctx.handleSelectElement($event)),\n onDblclick: _cache[2] || (_cache[2] = ($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, watch } from 'vue'\nimport { upperFirst } from 'lodash'\nimport tinycolor from 'tinycolor2'\nimport Chartist, {\n IChartistLineChart,\n IChartistBarChart,\n IChartistPieChart,\n} from 'chartist'\nimport { ChartData, ChartOptions, ChartType } from '@/types/slides'\nimport { injectKeySlideScale } from '@/types/injectKey'\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 = inject(injectKeySlideScale) || 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 () => props.options,\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=79ce410e&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=79ce410e&lang=scss&scoped=true\"\nimport \"./Chart.vue?vue&type=style&index=1&id=79ce410e&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-79ce410e\"]])\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 | TouchEvent, element: PPTChartElement, canMove?: boolean) => void>,\r\n required: true,\r\n },\r\n contextmenus: {\r\n type: Function as PropType<() => ContextmenuItem[] | null>,\r\n },\r\n },\r\n setup(props) {\r\n const handleSelectElement = (e: MouseEvent | TouchEvent) => {\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=863d2c90&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=863d2c90&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-863d2c90\"]])\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-1c016f8e\"),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((_openBlock(), _createElementBlock(\"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 onTouchstart: _cache[6] || (_cache[6] = $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 ])), [\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-12f568a6\"),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 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 { CSSProperties } from 'vue'\nimport { TableCellStyle } from '@/types/slides'\n\n/**\n * 计算单元格文本样式\n * @param style 单元格文本样式原数据\n */\nexport const getTextStyle = (style?: TableCellStyle): CSSProperties => {\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-00107680\"),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 return (_openBlock(), _createElementBlock(\"div\", {\n class: \"custom-textarea\",\n ref: \"textareaRef\",\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: any) => (_ctx.handleInput())),\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=00107680&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=00107680&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-00107680\"]])\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 { nanoid } from 'nanoid'\nimport { useMainStore } from '@/store'\nimport { PPTElementOutline, TableCell, TableTheme } from '@/types/slides'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport { KEYS } from '@/configs/hotkey'\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: nanoid(10),\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: nanoid(10),\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: nanoid(10),\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: nanoid(10),\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=12f568a6&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=12f568a6&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-12f568a6\"]])\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 | TouchEvent, element: PPTTableElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[] | null>,\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 | TouchEvent) => {\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=1c016f8e&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=1c016f8e&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-1c016f8e\"]])\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-50e5c825\"),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((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n onMousedown: _cache[0] || (_cache[0] = $event => _ctx.handleSelectElement($event)),\n onTouchstart: _cache[1] || (_cache[1] = $event => _ctx.handleSelectElement($event)),\n onDblclick: _cache[2] || (_cache[2] = ($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 ], 32)), [\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 | TouchEvent, element: PPTLatexElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[] | null>,\n },\n },\n setup(props) {\n const handleSelectElement = (e: MouseEvent | TouchEvent) => {\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=50e5c825&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=50e5c825&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-50e5c825\"]])\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((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n onMousedown: _cache[2] || (_cache[2] = $event => _ctx.handleSelectElement($event, false)),\n onTouchstart: _cache[3] || (_cache[3] = $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 onTouchstart: _cache[1] || (_cache[1] = $event => _ctx.handleSelectElement($event))\n }, null, 34)\n }), 64))\n ], 32)), [\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-fcb929f4\"),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: any) => (_ctx.handleMousedownVolumeBar())),\n onTouchstart: _cache[12] || (_cache[12] = ($event: any) => (_ctx.handleMousedownVolumeBar())),\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: any) => (_ctx.handleMousedownPlayBar())),\n onTouchstart: _cache[18] || (_cache[18] = ($event: any) => (_ctx.handleMousedownPlayBar())),\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=fcb929f4&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=fcb929f4&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-fcb929f4\"]])\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 | TouchEvent, element: PPTVideoElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[] | null>,\n },\n },\n setup(props) {\n const { canvasScale } = storeToRefs(useMainStore())\n\n const handleSelectElement = (e: MouseEvent | TouchEvent, 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=454973e4&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=454973e4&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-454973e4\"]])\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, createElementBlock as _createElementBlock, withDirectives as _withDirectives, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } 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((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n onMousedown: _cache[1] || (_cache[1] = $event => _ctx.handleSelectElement($event)),\n onTouchstart: _cache[2] || (_cache[2] = $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 ], 32)), [\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-5530a7f2\"),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: any) => (_ctx.handleMousedownVolumeBar())),\n onTouchstart: _cache[9] || (_cache[9] = ($event: any) => (_ctx.handleMousedownVolumeBar())),\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: any) => (_ctx.handleMousedownPlayBar())),\n onTouchstart: _cache[12] || (_cache[12] = ($event: any) => (_ctx.handleMousedownPlayBar())),\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=5530a7f2&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=5530a7f2&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-5530a7f2\"]])\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 | TouchEvent, element: PPTAudioElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[] | null>,\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 | TouchEvent) => {\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=40b7d6a8&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=40b7d6a8&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-40b7d6a8\"]])\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 | TouchEvent, 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=77b2166e&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-${_ctx.quadrant}`),\n style: _normalizeStyle({\n top: _ctx.top + 'px',\n left: _ctx.left + 'px',\n width: _ctx.width + 'px',\n height: _ctx.height + 'px',\n })\n }, null, 6))\n}","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\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=25d4b5f8&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=25d4b5f8&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-25d4b5f8\"]])\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 { 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 canvasScale: {\n type: Number,\n required: true,\n },\n },\n setup(props) {\n // 吸附对齐线的位置\n const left = computed(() => props.axis.x * props.canvasScale + 'px')\n const top = computed(() => props.axis.y * props.canvasScale + 'px')\n\n // 吸附对齐线的长度\n const sizeStyle = computed(() => {\n if (props.type === 'vertical') return { height: props.length * props.canvasScale + 'px' }\n return { width: props.length * props.canvasScale + 'px' }\n })\n\n return {\n left,\n top,\n sizeStyle,\n }\n },\n})\n","import { render } from \"./AlignmentLine.vue?vue&type=template&id=7017c6bc&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=7017c6bc&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-7017c6bc\"]])\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, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6cc1801a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"ruler\" }\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: \"h\",\n style: _normalizeStyle({\n width: _ctx.viewportStyles.width * _ctx.canvasScale + 'px',\n left: _ctx.viewportStyles.left + 'px',\n })\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(10, (marker) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"ruler-marker-100\", { 'hide': _ctx.markerSize < 36, 'omit': _ctx.markerSize < 72 }]),\n key: `marker-100-${marker}`\n }, [\n _createElementVNode(\"span\", null, _toDisplayString(marker * 100), 1)\n ], 2)\n }), 64))\n ], 4),\n _createElementVNode(\"div\", {\n class: \"v\",\n style: _normalizeStyle({\n height: _ctx.viewportStyles.height * _ctx.canvasScale + 'px',\n top: _ctx.viewportStyles.top + 'px',\n })\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(10, (marker) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"ruler-marker-100\", { 'hide': _ctx.markerSize < 36, 'omit': _ctx.markerSize < 72 }]),\n key: marker,\n style: _normalizeStyle({ height: _ctx.markerSize + 'px' })\n }, [\n _createElementVNode(\"span\", null, _toDisplayString(marker * 100), 1)\n ], 6)\n }), 64))\n ], 4)\n ]))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\n\ninterface ViewportStyles {\n top: number\n left: number\n width: number\n height: number\n}\n\nexport default defineComponent({\n props: {\n viewportStyles: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const { canvasScale } = storeToRefs(useMainStore())\n\n const markerSize = computed(() => {\n return props.viewportStyles.width * canvasScale.value / 10\n })\n\n return {\n canvasScale,\n markerSize,\n }\n },\n})\n","import { render } from \"./Ruler.vue?vue&type=template&id=6cc1801a&scoped=true&ts=true\"\nimport script from \"./Ruler.vue?vue&type=script&lang=ts\"\nexport * from \"./Ruler.vue?vue&type=script&lang=ts\"\n\nimport \"./Ruler.vue?vue&type=style&index=0&id=6cc1801a&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-6cc1801a\"]])\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-15b60d90\"),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\": \"2\"\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n ], 6))\n : _createCommentVNode(\"\", true)\n ], 544))\n}","\nimport { computed, defineComponent, onMounted, 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 = ref({\n x: 0,\n y: 0,\n })\n onMounted(() => {\n if (!selectionRef.value) return\n const { x, y } = selectionRef.value.getBoundingClientRect()\n offset.value = { x, 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.value.x + 'px',\n top: minY - offset.value.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=15b60d90&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=15b60d90&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-15b60d90\"]])\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.range.minX * _ctx.canvasScale + 'px',\n top: _ctx.range.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, _ctx.range, 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 { OperateResizeHandlers } 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=c9559332&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=c9559332&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-c9559332\"]])\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', _ctx.type, { 'wide': _ctx.isWide }])\n }, null, 2))\n}","\nimport { defineComponent, PropType } from 'vue'\nimport { OperateBorderLines } from '@/types/edit'\n\nexport default defineComponent({\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=1430bedc&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=1430bedc&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-1430bedc\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, ref, PropType, watchEffect } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport { getElementListRange } from '@/utils/element'\nimport { OperateResizeHandlers, 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: OperateResizeHandlers) => 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 = ref({\n minX: 0,\n maxX: 0,\n minY: 0,\n maxY: 0,\n })\n\n // 根据多选元素整体在画布中的范围,计算边框线和缩放点的位置信息\n const width = computed(() => (range.value.maxX - range.value.minX) * canvasScale.value)\n const height = computed(() => (range.value.maxY - range.value.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.value = { minX, maxX, minY, 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 range,\n canvasScale,\n borderLines,\n disableResize,\n resizeHandlers,\n }\n },\n})\n","import { render } from \"./MultiSelectOperate.vue?vue&type=template&id=55c8df22&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=55c8df22&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-55c8df22\"]])\n\nexport default __exports__","import { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, 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-3719d97c\"),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.rotate}deg)`,\r\n transformOrigin: `${_ctx.elementInfo.width * _ctx.canvasScale / 2}px ${_ctx.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.elementIndexListInAnimation.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.elementIndexListInAnimation, (index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"index-item\",\n key: index\n }, _toDisplayString(index + 1), 1))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.isActive && _ctx.elementInfo.link)\n ? (_openBlock(), _createBlock(_component_LinkHandler, {\n key: 2,\n elementInfo: _ctx.elementInfo,\n link: _ctx.elementInfo.link,\n openLinkDialog: _ctx.openLinkDialog,\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, null, 8, [\"elementInfo\", \"link\", \"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 { OperateResizeHandlers } 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: OperateResizeHandlers) => 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=db6d5ba6&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=db6d5ba6&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-db6d5ba6\"]])\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 { OperateResizeHandlers } 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: OperateResizeHandlers) => 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=115c48f0&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 { OperateResizeHandlers } 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: OperateResizeHandlers) => 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=08e569b7&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, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-60f9f1f7\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"line-element-operate\" }\nconst _hoisted_2 = [\"width\", \"height\", \"stroke\"]\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = [\"x1\", \"y1\", \"x2\", \"y2\"]\nconst _hoisted_5 = [\"x1\", \"y1\", \"x2\", \"y2\"]\nconst _hoisted_6 = [\"x1\", \"y1\", \"x2\", \"y2\"]\nconst _hoisted_7 = [\"x1\", \"y1\", \"x2\", \"y2\"]\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(), _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.handler,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.dragLineElement($event, _ctx.elementInfo, point.handler), [\"stop\"])\n }, null, 8, [\"style\", \"onMousedown\"]))\n }), 128)),\n (_openBlock(), _createElementBlock(\"svg\", {\n width: _ctx.svgWidth || 1,\n height: _ctx.svgHeight || 1,\n stroke: _ctx.elementInfo.color,\n overflow: \"visible\",\n style: _normalizeStyle({ transform: `scale(${_ctx.canvasScale})` })\n }, [\n (_ctx.elementInfo.curve)\n ? (_openBlock(), _createElementBlock(\"g\", _hoisted_3, [\n _createElementVNode(\"line\", {\n class: \"anchor-line\",\n x1: _ctx.elementInfo.start[0],\n y1: _ctx.elementInfo.start[1],\n x2: _ctx.elementInfo.curve[0],\n y2: _ctx.elementInfo.curve[1]\n }, null, 8, _hoisted_4),\n _createElementVNode(\"line\", {\n class: \"anchor-line\",\n x1: _ctx.elementInfo.end[0],\n y1: _ctx.elementInfo.end[1],\n x2: _ctx.elementInfo.curve[0],\n y2: _ctx.elementInfo.curve[1]\n }, null, 8, _hoisted_5)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.elementInfo.cubic)\n ? (_openBlock(true), _createElementBlock(_Fragment, { key: 1 }, _renderList(_ctx.elementInfo.cubic, (item, index) => {\n return (_openBlock(), _createElementBlock(\"g\", { key: index }, [\n (index === 0)\n ? (_openBlock(), _createElementBlock(\"line\", {\n key: 0,\n class: \"anchor-line\",\n x1: _ctx.elementInfo.start[0],\n y1: _ctx.elementInfo.start[1],\n x2: item[0],\n y2: item[1]\n }, null, 8, _hoisted_6))\n : _createCommentVNode(\"\", true),\n (index === 1)\n ? (_openBlock(), _createElementBlock(\"line\", {\n key: 1,\n class: \"anchor-line\",\n x1: _ctx.elementInfo.end[0],\n y1: _ctx.elementInfo.end[1],\n x2: item[0],\n y2: item[1]\n }, null, 8, _hoisted_7))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n : _createCommentVNode(\"\", true)\n ], 12, _hoisted_2))\n ], 64))\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 { OperateLineHandlers } from '@/types/edit'\n\nimport ResizeHandler from './ResizeHandler.vue'\n\nexport default defineComponent({\n name: 'line-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: OperateLineHandlers) => void>,\n required: true,\n },\n },\n setup(props) {\n const { canvasScale } = storeToRefs(useMainStore())\n\n const svgWidth = computed(() => Math.max(props.elementInfo.start[0], props.elementInfo.end[0]))\n const svgHeight = computed(() => Math.max(props.elementInfo.start[1], props.elementInfo.end[1]))\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 ctrlHandler = (props.elementInfo.curve || props.elementInfo.broken) as [number, number]\n\n handlers.push({\n handler: OperateLineHandlers.C,\n style: {\n left: ctrlHandler[0] * canvasScale.value + 'px',\n top: ctrlHandler[1] * canvasScale.value + 'px',\n }\n })\n }\n else if (props.elementInfo.cubic) {\n const [ctrlHandler1, ctrlHandler2] = props.elementInfo.cubic\n handlers.push({\n handler: OperateLineHandlers.C1,\n style: {\n left: ctrlHandler1[0] * canvasScale.value + 'px',\n top: ctrlHandler1[1] * canvasScale.value + 'px',\n }\n })\n handlers.push({\n handler: OperateLineHandlers.C2,\n style: {\n left: ctrlHandler2[0] * canvasScale.value + 'px',\n top: ctrlHandler2[1] * canvasScale.value + 'px',\n }\n })\n }\n\n return handlers\n })\n\n return {\n svgWidth,\n svgHeight,\n canvasScale,\n resizeHandlers,\n }\n },\n})\n","import { render } from \"./LineElementOperate.vue?vue&type=template&id=60f9f1f7&scoped=true&ts=true\"\nimport script from \"./LineElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./LineElementOperate.vue?vue&type=script&lang=ts\"\n\nimport \"./LineElementOperate.vue?vue&type=style&index=0&id=60f9f1f7&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-60f9f1f7\"]])\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 { OperateResizeHandlers } 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: OperateResizeHandlers) => 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=45c5e7da&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 { OperateResizeHandlers } 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: OperateResizeHandlers) => 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=474b1c2e&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-2b77dbb0\"),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.height * _ctx.canvasScale + 10 + 'px' })\n }, [\n (_ctx.link.type === 'web')\n ? (_openBlock(), _createElementBlock(\"a\", {\n key: 0,\n class: \"link\",\n href: _ctx.link.target,\n target: \"_blank\"\n }, _toDisplayString(_ctx.link.target), 9, _hoisted_1))\n : (_openBlock(), _createElementBlock(\"a\", _hoisted_2, \"幻灯片页面 \" + _toDisplayString(_ctx.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 { computed, defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { PPTElement, PPTElementLink } 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 link: {\n type: Object as PropType,\n required: true,\n },\n openLinkDialog: {\n type: Function as PropType<() => void>,\n required: true,\n },\n },\n setup(props) {\n const { canvasScale } = storeToRefs(useMainStore())\n\n const { removeLink } = useLink()\n\n const height = computed(() => props.elementInfo.type === 'line' ? 0 : props.elementInfo.height)\n\n return {\n canvasScale,\n height,\n removeLink,\n }\n },\n})\n","import { render } from \"./LinkHandler.vue?vue&type=template&id=2b77dbb0&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=2b77dbb0&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-2b77dbb0\"]])\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, PPTLineElement, PPTVideoElement, PPTAudioElement } from '@/types/slides'\r\nimport { OperateLineHandlers, OperateResizeHandlers } 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: Exclude) => void>,\r\n required: true,\r\n },\r\n scaleElement: {\r\n type: Function as PropType<(e: MouseEvent, element: Exclude, command: OperateResizeHandlers) => void>,\r\n required: true,\r\n },\r\n dragLineElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTLineElement, command: OperateLineHandlers) => 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 { formatedAnimations } = 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 elementIndexListInAnimation = computed(() => {\r\n const indexList = []\r\n for (let i = 0; i < formatedAnimations.value.length; i++) {\r\n const elIds = formatedAnimations.value[i].animations.map(item => item.elId)\r\n if (elIds.includes(props.elementInfo.id)) indexList.push(i)\r\n }\r\n return indexList\r\n })\r\n\r\n const rotate = computed(() => 'rotate' in props.elementInfo ? props.elementInfo.rotate : 0)\r\n const height = computed(() => 'height' in props.elementInfo ? props.elementInfo.height : 0)\r\n\r\n return {\r\n currentOperateComponent,\r\n canvasScale,\r\n toolbarState,\r\n elementIndexListInAnimation,\r\n rotate,\r\n height,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=3719d97c&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=3719d97c&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-3719d97c\"]])\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-6e74620a\"),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-025539cf\"),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, 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-81197444\"),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 style: _normalizeStyle(_ctx.cssVar),\n innerHTML: _ctx.elementInfo.content\n }, null, 12, _hoisted_1)\n ], 4)\n ], 4)\n ], 4))\n}","\nimport { defineComponent, PropType, computed, StyleValue } 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 const cssVar = computed(() => ({\n '--textIndent': `${props.elementInfo.textIndent || 0}px`,\n '--paragraphSpace': `${props.elementInfo.paragraphSpace === undefined ? 5 : props.elementInfo.paragraphSpace}px`,\n } as StyleValue))\n\n return {\n shadowStyle,\n cssVar,\n }\n },\n})\n","import { render } from \"./BaseTextElement.vue?vue&type=template&id=81197444&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=81197444&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-81197444\"]])\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-728513ea\"),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[0]}, ${_ctx.elementInfo.height / _ctx.elementInfo.viewBox[1]}) 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 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=728513ea&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=728513ea&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-728513ea\"]])\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-2cd24911\"),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: \"base-element-line\",\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 \"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: 'base-element-line',\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=2cd24911&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=2cd24911&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-2cd24911\"]])\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_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 width: _ctx.elementInfo.width * _ctx.zoom,\n height: _ctx.elementInfo.height * _ctx.zoom,\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 style: _normalizeStyle({ zoom: 1 / _ctx.zoom })\n }, null, 8, [\"width\", \"height\", \"type\", \"data\", \"options\", \"themeColor\", \"gridColor\", \"legends\", \"legend\", \"style\"])\n ], 4)\n ], 4)\n ], 4))\n}","\r\nimport { computed, defineComponent, inject, PropType, ref } from 'vue'\r\nimport { PPTChartElement } from '@/types/slides'\r\nimport { injectKeySlideScale } from '@/types/injectKey'\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 },\r\n setup() {\r\n const slideScale = inject(injectKeySlideScale) || ref(1)\r\n\r\n const needScaleSize = computed(() => slideScale.value < 1)\r\n const zoom = computed(() => needScaleSize.value ? 1 / slideScale.value : 1)\r\n\r\n return {\r\n needScaleSize,\r\n zoom,\r\n }\r\n },\r\n})\r\n","import { render } from \"./BaseChartElement.vue?vue&type=template&id=342d4bac&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=342d4bac&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-342d4bac\"]])\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 { injectKeySlideScale } from '@/types/injectKey'\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(injectKeySlideScale, 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=025539cf&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=025539cf&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-025539cf\"]])\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\ntype TypeKey = 'web' | 'slide'\ninterface TabItem {\n key: TypeKey\n label: string\n}\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')\n const address = ref('')\n const slideId = ref('')\n\n slideId.value = slides.value[0].id\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: TabItem[] = [\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=6e74620a&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=6e74620a&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-6e74620a\"]])\n\nexport default __exports__","\nimport { defineComponent, onMounted, 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 { injectKeySlideScale } from '@/types/injectKey'\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 Ruler from './Ruler.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 Ruler,\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 showRuler,\n creatingElement,\n canvasScale,\n } = storeToRefs(mainStore)\n const { currentSlide } = storeToRefs(useSlidesStore())\n const { ctrlKeyState, spaceKeyState } = 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 { dragViewport, viewportStyles } = useViewportSize(canvasRef)\n\n useDropImageOrText(canvasRef)\n\n const { mouseSelection, mouseSelectionVisible, mouseSelectionQuadrant, updateMouseSelection } = useMouseSelection(elementList, viewportRef)\n\n const { dragElement } = useDragElement(elementList, alignmentLines, canvasScale)\n const { dragLineElement } = useDragLineElement(elementList)\n const { selectElement } = useSelectElement(elementList, dragElement)\n const { scaleElement, scaleMultiElement } = useScaleElement(elementList, alignmentLines, canvasScale)\n const { rotateElement } = useRotateElement(elementList, viewportRef)\n\n const { selectAllElement } = useSelectAllElement()\n const { deleteAllElements } = useDeleteElement()\n const { pasteElement } = useCopyAndPasteElement()\n const { enterScreeningFromStart } = useScreening()\n const { updateSlideIndex } = useSlideHandler()\n\n // 组件渲染时,如果存在元素焦点,需要清除\n // 这种情况存在于:有焦点元素的情况下进入了放映模式,再退出时,需要清除原先的焦点(因为可能已经切换了页面)\n onMounted(() => {\n if (activeElementIdList.value.length) mainStore.setActiveElementIdList([])\n })\n\n // 点击画布的空白区域:清空焦点元素、设置画布焦点、清除文字选区\n const handleClickBlankArea = (e: MouseEvent) => {\n mainStore.setActiveElementIdList([])\n\n if (!spaceKeyState.value) updateMouseSelection(e)\n else dragViewport(e)\n\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 toggleRuler = () => {\n mainStore.setRulerState(!showRuler.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 subText: showRuler.value ? '√' : '',\n handler: toggleRuler,\n },\n {\n text: '重置当前页',\n handler: deleteAllElements,\n },\n { divider: true },\n {\n text: '幻灯片放映',\n subText: 'F5',\n handler: enterScreeningFromStart,\n },\n ]\n }\n\n provide(injectKeySlideScale, canvasScale)\n\n return {\n elementList,\n activeElementIdList,\n handleElementId,\n activeGroupElementId,\n canvasRef,\n viewportRef,\n viewportStyles,\n canvasScale,\n mouseSelection,\n mouseSelectionVisible,\n mouseSelectionQuadrant,\n creatingElement,\n alignmentLines,\n linkDialogVisible,\n spaceKeyState,\n showRuler,\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=743d966c&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=743d966c&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-743d966c\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, normalizeClass as _normalizeClass, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-e9ddaac8\"),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: \"viewport-size-preset\" }\nconst _hoisted_6 = [\"onClick\"]\nconst _hoisted_7 = { 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: _normalizeClass([\"handler-item\", { 'active': _ctx.creatingElement?.type === 'text' }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.drawText()))\n }, null, 8, [\"class\"])\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, {\n class: _normalizeClass([\"handler-item\", { 'active': _ctx.creatingElement?.type === 'shape' }])\n }, null, 8, [\"class\"])\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, {\n class: _normalizeClass([\"handler-item\", { 'active': _ctx.creatingElement?.type === 'line' }])\n }, null, 8, [\"class\"])\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 _createVNode(_component_Popover, {\n trigger: \"click\",\n visible: _ctx.canvasScaleVisible,\n \"onUpdate:visible\": _cache[19] || (_cache[19] = ($event: any) => ((_ctx.canvasScaleVisible) = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_5, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.canvasScalePresetList, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"preset-item\",\n key: item,\n onClick: ($event: any) => (_ctx.applyCanvasPresetScale(item))\n }, _toDisplayString(item) + \"%\", 9, _hoisted_6))\n }), 128))\n ])\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_ctx.canvasScalePercentage), 1)\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_component_IconPlus, {\n class: \"handler-item viewport-size\",\n onClick: _cache[20] || (_cache[20] = ($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[21] || (_cache[21] = ($event: any) => (_ctx.resetCanvas()))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _createVNode(_component_Modal, {\n visible: _ctx.latexEditorVisible,\n \"onUpdate:visible\": _cache[24] || (_cache[24] = ($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[22] || (_cache[22] = ($event: any) => (_ctx.latexEditorVisible = false)),\n onUpdate: _cache[23] || (_cache[23] = 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, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f3479f82\"),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 = [\"fill\", \"stroke\", \"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[0]}, ${18 / shape.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n class: _normalizeClass([\"shape-path\", { 'outlined': shape.outlined }]),\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n fill: shape.outlined ? '#999' : 'transparent',\n stroke: shape.outlined ? 'transparent' : '#999',\n \"stroke-width\": \"2\",\n d: shape.path\n }, null, 10, _hoisted_7)\n ], 8, _hoisted_6)\n ]))\n ], 8, _hoisted_4)\n ]))\n }), 128))\n ])\n ]))\n }), 128))\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=f3479f82&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=f3479f82&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-f3479f82\"]])\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-7fa1d412\"),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, i) => {\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, j) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"line-item\",\n key: j\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-${i}-${j}`,\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-${i}-${j}`,\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 \"marker-start\": line.points[0] ? `url(#${`preset-line-${i}-${j}`}-${line.points[0]}-start)` : '',\n \"marker-end\": line.points[1] ? `url(#${`preset-line-${i}-${j}`}-${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 isCubic?: 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 { path: 'M 0 0 C 20 0 0 20 20 20', style: 'solid', points: ['', 'arrow'], isCubic: 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=7fa1d412&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=7fa1d412&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-7fa1d412\"]])\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-64ca421e\"),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 const _component_IconChartHistogramOne = _resolveComponent(\"IconChartHistogramOne\")!\n const _component_IconChartLineArea = _resolveComponent(\"IconChartLineArea\")!\n const _component_IconChartRing = _resolveComponent(\"IconChartRing\")!\n const _component_IconChartScatter = _resolveComponent(\"IconChartScatter\")!\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 : (chart === 'horizontalBar')\n ? (_openBlock(), _createBlock(_component_IconChartHistogramOne, {\n key: 3,\n size: \"24\"\n }))\n : (chart === 'area')\n ? (_openBlock(), _createBlock(_component_IconChartLineArea, {\n key: 4,\n size: \"24\"\n }))\n : (chart === 'ring')\n ? (_openBlock(), _createBlock(_component_IconChartRing, {\n key: 5,\n size: \"24\"\n }))\n : (chart === 'scatter')\n ? (_openBlock(), _createBlock(_component_IconChartScatter, {\n key: 6,\n size: \"24\"\n }))\n : _createCommentVNode(\"\", true)\n ], 8, _hoisted_2)\n ]))\n }), 128))\n ]))\n}","\nimport { PresetChartType } from '@/types/slides'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n name: 'chart-pool',\n emits: ['select'],\n setup(props, { emit }) {\n const chartList: PresetChartType[] = ['bar', 'horizontalBar', 'line', 'area', 'scatter', 'pie', 'ring']\n\n const selectChart = (chart: PresetChartType) => {\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=64ca421e&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=64ca421e&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-64ca421e\"]])\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-310c58ae\"),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\ntype TypeKey = 'video' | 'audio'\ninterface TabItem {\n key: TypeKey\n label: string\n}\n\nexport default defineComponent({\n name: 'media-input',\n emits: ['insertVideo', 'insertAudio', 'close'],\n setup(props, { emit }) {\n const type = ref('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: TabItem[] = [\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=310c58ae&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=310c58ae&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-310c58ae\"]])\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-0c89cf75\"),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, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-cf0ca630\"),n=n(),_popScopeId(),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=cf0ca630&scoped=true&ts=true\"\nimport script from \"./FormulaContent.vue?vue&type=script&lang=ts\"\nexport * from \"./FormulaContent.vue?vue&type=script&lang=ts\"\n\nimport \"./FormulaContent.vue?vue&type=style&index=0&id=cf0ca630&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-cf0ca630\"]])\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\ninterface Tab {\n label: string\n value: 'symbol' | 'formula'\n}\n\nconst tabs: Tab[] = [\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' | 'formula'>('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=0c89cf75&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=0c89cf75&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-0c89cf75\"]])\n\nexport default __exports__","\nimport { defineComponent, 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 { creatingElement } = storeToRefs(mainStore)\n const { canUndo, canRedo } = storeToRefs(useSnapshotStore())\n\n const { redo, undo } = useHistorySnapshot()\n\n const {\n scaleCanvas,\n setCanvasScalePercentage,\n resetCanvas,\n canvasScalePercentage,\n } = useScaleCanvas()\n \n const canvasScalePresetList = [200, 150, 100, 80, 50]\n const canvasScaleVisible = ref(false)\n\n const applyCanvasPresetScale = (value: number) => {\n setCanvasScalePercentage(value)\n canvasScaleVisible.value = false\n }\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 resetCanvas,\n canvasScalePercentage,\n canvasScaleVisible,\n canvasScalePresetList,\n applyCanvasPresetScale,\n canUndo,\n canRedo,\n redo,\n undo,\n insertImageElement,\n shapePoolVisible,\n linePoolVisible,\n chartPoolVisible,\n tableGeneratorVisible,\n mediaInputVisible,\n latexEditorVisible,\n creatingElement,\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=e9ddaac8&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=e9ddaac8&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-e9ddaac8\"]])\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, openBlock as _openBlock, createElementBlock as _createElementBlock, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-17d8eefc\"),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((_openBlock(), _createElementBlock(\"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 ], 32)), [\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, enterScreeningFromStart } = 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: 'F5',\n handler: enterScreeningFromStart,\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: 'Shift + F5',\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=17d8eefc&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=17d8eefc&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-17d8eefc\"]])\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, resolveDynamicComponent as _resolveDynamicComponent, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-017ca85e\"),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 { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"element-style-panel\" }\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(), _createBlock(_resolveDynamicComponent(_ctx.currentPanelComponent)))\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-eafe485c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"text-style-panel\" }\nconst _hoisted_2 = { class: \"preset-style\" }\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"+\")\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\"-\")\nconst _hoisted_6 = { class: \"link-popover\" }\nconst _hoisted_7 = { class: \"btns\" }\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\"移除\")\nconst _hoisted_9 = /*#__PURE__*/_createTextVNode(\"确认\")\nconst _hoisted_10 = { class: \"row\" }\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"行间距:\", -1))\nconst _hoisted_12 = { class: \"row\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"段间距:\", -1))\nconst _hoisted_14 = { class: \"row\" }\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"字间距:\", -1))\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))\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_IconHighLight = _resolveComponent(\"IconHighLight\")!\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_IconFormat = _resolveComponent(\"IconFormat\")!\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_Input = _resolveComponent(\"Input\")!\n const _component_IconLinkOne = _resolveComponent(\"IconLinkOne\")!\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_IconIndentLeft = _resolveComponent(\"IconIndentLeft\")!\n const _component_IconIndentRight = _resolveComponent(\"IconIndentRight\")!\n const _component_IconRowHeight = _resolveComponent(\"IconRowHeight\")!\n const _component_IconVerticalSpacingBetweenItems = _resolveComponent(\"IconVerticalSpacingBetweenItems\")!\n const _component_IconFullwidth = _resolveComponent(\"IconFullwidth\")!\n const _component_ColorButton = _resolveComponent(\"ColorButton\")!\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 as string))\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 as string))\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\":\"3\"}\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\":\"3\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconHighLight),\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_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"增大字号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"font-size-btn\",\n style: {\"flex\":\"2\"},\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.emitRichTextCommand('fontsize-add')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFontSize),\n _hoisted_4\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 class: \"font-size-btn\",\n style: {\"flex\":\"2\"},\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.emitRichTextCommand('fontsize-reduce')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFontSize),\n _hoisted_5\n ]),\n _: 1\n })\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.bold,\n onClick: _cache[6] || (_cache[6] = ($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[7] || (_cache[7] = ($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[8] || (_cache[8] = ($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[9] || (_cache[9] = ($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 _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[10] || (_cache[10] = ($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_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[11] || (_cache[11] = ($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[12] || (_cache[12] = ($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[13] || (_cache[13] = ($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[14] || (_cache[14] = ($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_Popover, {\n placement: \"bottomRight\",\n trigger: \"click\",\n visible: _ctx.linkPopoverVisible,\n \"onUpdate:visible\": _cache[19] || (_cache[19] = ($event: any) => ((_ctx.linkPopoverVisible) = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_component_Input, {\n value: _ctx.link,\n \"onUpdate:value\": _cache[15] || (_cache[15] = ($event: any) => ((_ctx.link) = $event)),\n placeholder: \"请输入超链接\"\n }, null, 8, [\"value\"]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(_component_Button, {\n size: \"small\",\n disabled: !_ctx.richTextAttrs.link,\n onClick: _cache[16] || (_cache[16] = ($event: any) => (_ctx.updateLink())),\n style: {\"margin-right\":\"5px\"}\n }, {\n default: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n }, 8, [\"disabled\"]),\n _createVNode(_component_Button, {\n size: \"small\",\n type: \"primary\",\n onClick: _cache[17] || (_cache[17] = ($event: any) => (_ctx.updateLink(_ctx.link)))\n }, {\n default: _withCtx(() => [\n _hoisted_9\n ]),\n _: 1\n })\n ])\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: !!_ctx.richTextAttrs.link,\n onClick: _cache[18] || (_cache[18] = ($event: any) => (_ctx.openLinkPopover()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconLinkOne)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"visible\"])\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[20] || (_cache[20] = 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[21] || (_cache[21] = ($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[22] || (_cache[22] = ($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_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[23] || (_cache[23] = ($event: any) => (_ctx.emitRichTextCommand('indent', '-1')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconIndentLeft)\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[24] || (_cache[24] = ($event: any) => (_ctx.emitRichTextCommand('indent', '+1')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconIndentRight)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.lineHeight,\n onChange: _cache[25] || (_cache[25] = value => _ctx.updateLineHeight(value as number))\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_12, [\n _hoisted_13,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.paragraphSpace,\n onChange: _cache[26] || (_cache[26] = value => _ctx.updateParagraphSpace(value as number))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconVerticalSpacingBetweenItems)\n ]),\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.paragraphSpaceOptions, (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 _createElementVNode(\"div\", _hoisted_14, [\n _hoisted_15,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.wordSpace,\n onChange: _cache[27] || (_cache[27] = value => _ctx.updateWordSpace(value as number))\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 _createElementVNode(\"div\", _hoisted_16, [\n _hoisted_17,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.textIndent,\n onChange: _cache[28] || (_cache[28] = value => _ctx.updateTextIndent(value as number))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconIndentRight)\n ]),\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.textIndentOptions, (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 _createElementVNode(\"div\", _hoisted_18, [\n _hoisted_19,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.fill,\n \"onUpdate:modelValue\": _cache[29] || (_cache[29] = 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 _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-5c7dbabc\"),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 as number))\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=5c7dbabc&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=5c7dbabc&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-5c7dbabc\"]])\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-a6510a8a\"),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 as boolean))\n }, null, 8, [\"checked\"])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.hasOutline && _ctx.outline)\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 as 'dashed' | 'solid' }))\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 || '#000',\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 as number })),\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, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-204d666d\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"color-block\" }\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\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"content\",\n style: _normalizeStyle({ backgroundColor: _ctx.color })\n }, null, 4)\n ]),\n _createVNode(_component_IconPlatte, { class: \"color-btn-icon\" })\n ]),\n _: 1\n }))\n}","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\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=204d666d&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=204d666d&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-204d666d\"]])\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=a6510a8a&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=a6510a8a&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-a6510a8a\"]])\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-6bafb099\"),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 as boolean))\n }, null, 8, [\"checked\"])\n ])\n ]),\n (_ctx.hasShadow && _ctx.shadow)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_5, [\n _hoisted_6,\n _createVNode(_component_Slider, {\n class: \"slider\",\n min: -10,\n max: 10,\n step: 1,\n value: _ctx.shadow.h,\n onChange: _cache[1] || (_cache[1] = value => _ctx.updateShadow({ h: value as number }))\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _hoisted_8,\n _createVNode(_component_Slider, {\n class: \"slider\",\n min: -10,\n max: 10,\n step: 1,\n value: _ctx.shadow.v,\n onChange: _cache[2] || (_cache[2] = value => _ctx.updateShadow({ v: value as number }))\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 as number }))\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=6bafb099&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=6bafb099&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-6bafb099\"]])\n\nexport default __exports__","\nimport { defineComponent, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTTextElement } from '@/types/slides'\nimport emitter, { EmitterEvents, RichTextAction } from '@/utils/emitter'\nimport { WEB_FONTS } from '@/configs/font'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport { message } from 'ant-design-vue'\n\nimport ElementOpacity from '../common/ElementOpacity.vue'\nimport ElementOutline from '../common/ElementOutline.vue'\nimport ElementShadow from '../common/ElementShadow.vue'\nimport ColorButton from '../common/ColorButton.vue'\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 ColorButton,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement, handleElementId, richTextAttrs, availableFonts } = storeToRefs(useMainStore())\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateElement = (props: Partial) => {\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n }\n\n const fill = ref('#000')\n const lineHeight = ref()\n const wordSpace = ref()\n const textIndent = ref()\n const paragraphSpace = ref()\n\n watch(handleElement, () => {\n if (!handleElement.value || handleElement.value.type !== 'text') return\n\n fill.value = handleElement.value.fill || '#fff'\n lineHeight.value = handleElement.value.lineHeight || 1.5\n wordSpace.value = handleElement.value.wordSpace || 0\n textIndent.value = handleElement.value.textIndent || 0\n paragraphSpace.value = handleElement.value.paragraphSpace === undefined ? 5 : handleElement.value.paragraphSpace\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 const textIndentOptions = [0, 48, 96, 144, 192, 240, 288, 336]\n const paragraphSpaceOptions = [0, 5, 10, 15, 20, 25, 30, 40, 50, 80]\n\n // 设置行高\n const updateLineHeight = (value: number) => {\n updateElement({ lineHeight: value })\n }\n\n // 设置段间距\n const updateParagraphSpace = (value: number) => {\n updateElement({ paragraphSpace: value })\n }\n\n // 设置字间距\n const updateWordSpace = (value: number) => {\n updateElement({ wordSpace: value })\n }\n\n // 设置首行缩进\n const updateTextIndent = (value: number) => {\n updateElement({ textIndent: value })\n }\n\n // 设置文本框填充\n const updateFill = (value: string) => {\n updateElement({ fill: value })\n }\n\n // 发射富文本设置命令\n const emitRichTextCommand = (command: string, value?: string) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { action: { command, value } })\n }\n\n // 发射富文本设置命令(批量)\n const emitBatchRichTextCommand = (action: RichTextAction[]) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { action })\n }\n\n // 设置富文本超链接\n const link = ref('')\n const linkPopoverVisible = ref(false)\n\n watch(richTextAttrs, () => linkPopoverVisible.value = false)\n\n const openLinkPopover = () => {\n link.value = richTextAttrs.value.link\n linkPopoverVisible.value = true\n }\n const updateLink = (link?: string) => {\n if (link) {\n const linkRegExp = /^(https?):\\/\\/[\\w\\-]+(\\.[\\w\\-]+)+([\\w\\-.,@?^=%&:\\/~+#]*[\\w\\-@?^=%&\\/~+#])?$/\n if (!linkRegExp.test(link)) return message.error('不是正确的网页链接地址')\n }\n emitRichTextCommand('link', link)\n linkPopoverVisible.value = false\n }\n\n return {\n fill,\n lineHeight,\n wordSpace,\n textIndent,\n paragraphSpace,\n richTextAttrs,\n availableFonts,\n webFonts,\n fontSizeOptions,\n lineHeightOptions,\n wordSpaceOptions,\n textIndentOptions,\n paragraphSpaceOptions,\n updateLineHeight,\n updateParagraphSpace,\n updateWordSpace,\n updateTextIndent,\n updateFill,\n emitRichTextCommand,\n emitBatchRichTextCommand,\n presetStyles,\n link,\n linkPopoverVisible,\n openLinkPopover,\n updateLink,\n }\n },\n})\n","import { render } from \"./TextStylePanel.vue?vue&type=template&id=eafe485c&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=eafe485c&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-eafe485c\"]])\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-54b23b9e\"),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-07b41654\"),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 as boolean))\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: 0,\n step: filter.step,\n value: filter.value,\n onChange: value => _ctx.updateFilter(filter, value as number)\n }, null, 8, [\"max\", \"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=07b41654&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=07b41654&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-07b41654\"]])\n\nexport default __exports__","\nimport { defineComponent, Ref, 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: handleElement as Ref,\n clipImage,\n presetImageClip,\n replaceImage,\n resetImage,\n setBackgroundImage,\n }\n },\n})\n","import { render } from \"./ImageStylePanel.vue?vue&type=template&id=54b23b9e&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=54b23b9e&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-54b23b9e\"]])\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-42b07d61\"),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))\nconst _hoisted_14 = /*#__PURE__*/_createTextVNode(\"+\")\nconst _hoisted_15 = /*#__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_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_IconHighLight = _resolveComponent(\"IconHighLight\")!\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 as 'fill' | 'gradient'))\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 as 'linear' | 'radial' }))\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 as number }))\n }, null, 8, [\"value\"])\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_ElementFlip),\n _createVNode(_component_Divider),\n (_ctx.handleElement?.text?.content)\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 as string))\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 as string))\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\":\"3\"}\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[9] || (_cache[9] = 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\":\"3\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconHighLight),\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_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"增大字号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"font-size-btn\",\n style: {\"flex\":\"2\"},\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.emitRichTextCommand('fontsize-add')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFontSize),\n _hoisted_14\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 class: \"font-size-btn\",\n style: {\"flex\":\"2\"},\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_ctx.emitRichTextCommand('fontsize-reduce')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFontSize),\n _hoisted_15\n ]),\n _: 1\n })\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.bold,\n onClick: _cache[12] || (_cache[12] = ($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[13] || (_cache[13] = ($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[14] || (_cache[14] = ($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[15] || (_cache[15] = ($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[16] || (_cache[16] = 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[17] || (_cache[17] = 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 { defineComponent, Ref, 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, richTextAttrs, availableFonts } = storeToRefs(mainStore)\n\n const fill = ref('#000')\n const gradient = ref({\n type: 'linear', \n rotate: 0,\n color: ['#fff', '#fff'],\n })\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 || '#fff'\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, { action: { command, value } })\n }\n\n return {\n fill,\n gradient,\n fillType,\n textAlign,\n richTextAttrs,\n availableFonts,\n fontSizeOptions,\n webFonts,\n handleElement: handleElement as Ref,\n emitRichTextCommand,\n updateFillType,\n updateFill,\n updateGradient,\n updateTextAlign,\n }\n },\n})\n","import { render } from \"./ShapeStylePanel.vue?vue&type=template&id=42b07d61&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=42b07d61&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-42b07d61\"]])\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-ad75cd30\"),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 as 'solid' | 'dashed' }))\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 as number })),\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 as 'arrow' | 'dot', _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 as 'arrow' | 'dot'] }))\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, Ref } 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: handleElement as Ref,\n updateLine,\n }\n }\n})\n","import { render } from \"./LineStylePanel.vue?vue&type=template&id=ad75cd30&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=ad75cd30&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-ad75cd30\"]])\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, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1a47c852\"),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 = /*#__PURE__*/_createTextVNode(\"堆叠样式\")\nconst _hoisted_11 = {\n key: 2,\n class: \"row\"\n}\nconst _hoisted_12 = /*#__PURE__*/_createTextVNode(\"环形图样式\")\nconst _hoisted_13 = { class: \"row\" }\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"图例:\", -1))\nconst _hoisted_15 = /*#__PURE__*/_createTextVNode(\"不显示\")\nconst _hoisted_16 = /*#__PURE__*/_createTextVNode(\"显示在上方\")\nconst _hoisted_17 = /*#__PURE__*/_createTextVNode(\"显示在下方\")\nconst _hoisted_18 = { class: \"row\" }\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"背景填充:\", -1))\nconst _hoisted_20 = { class: \"row\" }\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"网格颜色:\", -1))\nconst _hoisted_22 = { style: {\"flex\":\"2\"} }\nconst _hoisted_23 = {\n class: \"color-btn-wrap\",\n style: {\"flex\":\"3\"}\n}\nconst _hoisted_24 = [\"onClick\"]\nconst _hoisted_25 = { class: \"preset-themes\" }\nconst _hoisted_26 = [\"onClick\", \"onMouseenter\"]\nconst _hoisted_27 = /*#__PURE__*/_createTextVNode(\"推荐主题\")\nconst _hoisted_28 = /*#__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 _createVNode(_component_Checkbox, {\n onChange: _cache[5] || (_cache[5] = e => _ctx.updateOptions({ stackBars: e.target.checked })),\n checked: _ctx.stackBars\n }, {\n default: _withCtx(() => [\n _hoisted_10\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.handleElement.chartType === 'pie')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n _createVNode(_component_Checkbox, {\n onChange: _cache[6] || (_cache[6] = e => _ctx.updateOptions({ donut: e.target.checked })),\n checked: _ctx.donut\n }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_13, [\n _hoisted_14,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.legend,\n onChange: _cache[7] || (_cache[7] = value => _ctx.updateLegend(value as '' | 'top' | 'bottom'))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"\" }, {\n default: _withCtx(() => [\n _hoisted_15\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"top\" }, {\n default: _withCtx(() => [\n _hoisted_16\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"bottom\" }, {\n default: _withCtx(() => [\n _hoisted_17\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_18, [\n _hoisted_19,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.fill,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = 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_20, [\n _hoisted_21,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.gridColor,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = 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_22, _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_23, [\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_24))\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[11] || (_cache[11] = ($event: any) => ((_ctx.presetThemesVisible) = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_25, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.presetChartThemes, (item, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"preset-theme\",\n key: index\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item, (color, itemIndex) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"preset-theme-color\", { 'select': _ctx.presetThemeColorHoverIndex[0] === index && itemIndex <= _ctx.presetThemeColorHoverIndex[1] }]),\n key: color,\n style: _normalizeStyle({ backgroundColor: color }),\n onClick: ($event: any) => (_ctx.applyPresetTheme(item, itemIndex)),\n onMouseenter: ($event: any) => (_ctx.presetThemeColorHoverIndex = [index, itemIndex]),\n onMouseleave: _cache[10] || (_cache[10] = ($event: any) => (_ctx.presetThemeColorHoverIndex = [-1, -1]))\n }, null, 46, _hoisted_26))\n }), 128))\n ]))\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_27\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[12] || (_cache[12] = ($event: any) => (_ctx.addThemeColor()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconPlus, { class: \"btn-icon\" }),\n _hoisted_28\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[15] || (_cache[15] = ($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[13] || (_cache[13] = ($event: any) => (_ctx.chartDataEditorVisible = false)),\n onSave: _cache[14] || (_cache[14] = 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, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { ChartData, ChartOptions, 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 const presetThemeColorHoverIndex = ref<[number, number]>([-1, -1])\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const fill = ref('#000')\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 const stackBars = ref(false)\n\n watch(handleElement, () => {\n if (!handleElement.value || handleElement.value.type !== 'chart') return\n fill.value = handleElement.value.fill || '#fff'\n\n if (handleElement.value.options) {\n const {\n lineSmooth: _lineSmooth,\n showLine: _showLine,\n showArea: _showArea,\n horizontalBars: _horizontalBars,\n donut: _donut,\n stackBars: _stackBars,\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 if (_stackBars !== undefined) stackBars.value = _stackBars\n }\n\n themeColor.value = handleElement.value.themeColor\n gridColor.value = handleElement.value.gridColor || '#333'\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: ChartOptions) => {\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[], index: number) => {\n const themeColor = colors.slice(0, index + 1)\n updateElement({ themeColor })\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 presetThemeColorHoverIndex,\n handleElement: handleElement as Ref,\n updateData,\n fill,\n updateFill,\n lineSmooth,\n showLine,\n showArea,\n horizontalBars,\n donut,\n stackBars,\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=1a47c852&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=1a47c852&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-1a47c852\"]])\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-3da8fdb7\"),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 as string }))\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 as string }))\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 as boolean))\n }, null, 8, [\"checked\"])\n ])\n ]),\n (_ctx.theme)\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 { nanoid } from 'nanoid'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTTableElement, TableCell, TableCellStyle, TableTheme } from '@/types/slides'\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: nanoid(10), 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: nanoid(10), 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 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=3da8fdb7&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=3da8fdb7&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-3da8fdb7\"]])\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-e3a2bd30\"),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 as number })),\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, 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: handleElement as Ref,\n latexEditorVisible,\n updateLatex,\n updateLatexData,\n }\n }\n})\n","import { render } from \"./LatexStylePanel.vue?vue&type=template&id=e3a2bd30&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=e3a2bd30&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-e3a2bd30\"]])\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-58a36be6\"),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 as boolean }))\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 as boolean }))\n }, null, 8, [\"checked\"])\n ])\n ])\n ]))\n}","\nimport { defineComponent, Ref } 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: handleElement as Ref,\n updateAudio,\n }\n }\n})\n","import { render } from \"./AudioStylePanel.vue?vue&type=template&id=58a36be6&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=58a36be6&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-58a36be6\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-e5e0fba2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"multi-style-panel\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"填充颜色:\", -1))\nconst _hoisted_4 = { class: \"row\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"边框样式:\", -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 = /*#__PURE__*/_createTextVNode(\"+\")\nconst _hoisted_13 = /*#__PURE__*/_createTextVNode(\"-\")\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_Divider = _resolveComponent(\"Divider\")!\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_InputNumber = _resolveComponent(\"InputNumber\")!\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_IconHighLight = _resolveComponent(\"IconHighLight\")!\n const _component_ButtonGroup = _resolveComponent(\"ButtonGroup\")!\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\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.fill,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = 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 _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.outline.style,\n onChange: _cache[1] || (_cache[1] = value => _ctx.updateOutline({ style: value as 'solid' | 'dashed' }))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"solid\" }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"dashed\" }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _hoisted_9,\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 || '#000',\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createVNode(_component_InputNumber, {\n value: _ctx.outline.width,\n onChange: _cache[3] || (_cache[3] = value => _ctx.updateOutline({ width: value as number })),\n style: {\"flex\":\"3\"}\n }, null, 8, [\"value\"])\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[4] || (_cache[4] = value => _ctx.updateFontStyle('fontname', value as string))\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[5] || (_cache[5] = value => _ctx.updateFontStyle('fontsize', value as string))\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[6] || (_cache[6] = value => _ctx.updateFontStyle('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\":\"3\"}\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[7] || (_cache[7] = value => _ctx.updateFontStyle('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\":\"3\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconHighLight),\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_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"增大字号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"font-size-btn\",\n style: {\"flex\":\"2\"},\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.updateFontStyle('fontsize-add', '2')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFontSize),\n _hoisted_12\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 class: \"font-size-btn\",\n style: {\"flex\":\"2\"},\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.updateFontStyle('fontsize-reduce', '2')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFontSize),\n _hoisted_13\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[10] || (_cache[10] = e => _ctx.updateFontStyle('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 ]))\n}","\nimport { defineComponent, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement, PPTElementOutline, TableCell } from '@/types/slides'\nimport emitter, { EmitterEvents } from '@/utils/emitter'\nimport { WEB_FONTS } from '@/configs/font'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ColorButton from '../common/ColorButton.vue'\n\nconst webFonts = WEB_FONTS\n\nexport default defineComponent({\n name: 'multi-style-panel',\n components: {\n ColorButton,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { richTextAttrs, availableFonts, activeElementList } = storeToRefs(useMainStore())\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateElement = (id: string, props: Partial) => {\n slidesStore.updateElement({ id, props })\n addHistorySnapshot()\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 fill = ref('#fff')\n const outline = ref({\n width: 0,\n color: '#fff',\n style: 'solid',\n })\n\n // 批量修改填充色(表格元素为单元格填充、音频元素为图标颜色)\n const updateFill = (value: string) => {\n for (const el of activeElementList.value) {\n if (\n el.type === 'text' ||\n el.type === 'shape' ||\n el.type === 'chart'\n ) updateElement(el.id, { fill: value })\n\n if (el.type === 'table') {\n const data: TableCell[][] = JSON.parse(JSON.stringify(el.data))\n for (let i = 0; i < data.length; i++) {\n for (let j = 0; j < data[i].length; j++) {\n const style = data[i][j].style || {}\n data[i][j].style = { ...style, backcolor: value }\n }\n }\n updateElement(el.id, { data })\n }\n\n if (el.type === 'audio') updateElement(el.id, { color: value })\n }\n fill.value = value\n }\n\n // 修改边框/线条样式\n const updateOutline = (outlineProps: Partial) => {\n\n for (const el of activeElementList.value) {\n if (\n el.type === 'text' ||\n el.type === 'image' ||\n el.type === 'shape' ||\n el.type === 'table' ||\n el.type === 'chart'\n ) {\n const outline = el.outline || { width: 2, color: '#000', style: 'solid' }\n const props = { outline: { ...outline, ...outlineProps } }\n updateElement(el.id, props)\n }\n\n if (el.type === 'line') updateElement(el.id, outlineProps)\n }\n outline.value = { ...outline.value, ...outlineProps }\n }\n\n // 修改文字样式\n const updateFontStyle = (command: string, value: string) => {\n for (const el of activeElementList.value) {\n if (el.type === 'text' || (el.type === 'shape' && el.text?.content)) {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { target: el.id, action: { command, value } })\n }\n if (el.type === 'table') {\n const data: TableCell[][] = JSON.parse(JSON.stringify(el.data))\n for (let i = 0; i < data.length; i++) {\n for (let j = 0; j < data[i].length; j++) {\n const style = data[i][j].style || {}\n data[i][j].style = { ...style, [command]: value }\n }\n }\n updateElement(el.id, { data })\n }\n if (el.type === 'latex' && command === 'color') {\n updateElement(el.id, { color: value })\n }\n }\n }\n\n return {\n webFonts,\n richTextAttrs,\n availableFonts,\n fontSizeOptions,\n fill,\n outline,\n updateFill,\n updateOutline,\n updateFontStyle,\n }\n }\n})\n","import { render } from \"./MultiStylePanel.vue?vue&type=template&id=e5e0fba2&scoped=true&ts=true\"\nimport script from \"./MultiStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./MultiStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./MultiStylePanel.vue?vue&type=style&index=0&id=e5e0fba2&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-e5e0fba2\"]])\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'\nimport MultiStylePanel from './MultiStylePanel.vue'\n\nconst 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\nexport default defineComponent({\n name: 'element-style-panel',\n setup() {\n const { activeElementIdList, activeElementList, handleElement, activeGroupElementId } = storeToRefs(useMainStore())\n\n const currentPanelComponent = computed(() => {\n if (activeElementIdList.value.length > 1) {\n if (!activeGroupElementId.value) return MultiStylePanel\n\n const activeGroupElement = activeElementList.value.find(item => item.id === activeGroupElementId.value)\n return activeGroupElement ? (panelMap[activeGroupElement.type] || null) : null\n }\n\n return handleElement.value ? (panelMap[handleElement.value.type] || null) : null\n })\n\n return {\n handleElement,\n currentPanelComponent,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=11443078&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-4f10fba6\"),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, _ctx.ElementOrderCommands.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, _ctx.ElementOrderCommands.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, _ctx.ElementOrderCommands.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, _ctx.ElementOrderCommands.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(_ctx.ElementAlignCommands.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(_ctx.ElementAlignCommands.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(_ctx.ElementAlignCommands.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(_ctx.ElementAlignCommands.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(_ctx.ElementAlignCommands.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(_ctx.ElementAlignCommands.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 as number)),\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 as number)),\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 as number)),\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 as number)),\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 as number)),\n style: {\"flex\":\"4\"}\n }, null, 8, [\"value\"])\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { computed, defineComponent, Ref, ref, watch } from 'vue'\nimport { round } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport { ElementAlignCommands, ElementOrderCommands } from '@/types/edit'\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: handleElement as Ref,\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 ElementOrderCommands,\n ElementAlignCommands,\n }\n },\n})\n","import { render } from \"./ElementPositionPanel.vue?vue&type=template&id=4f10fba6&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=4f10fba6&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-4f10fba6\"]])\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, 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-11684c24\"),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: \"tabs\" }\nconst _hoisted_4 = [\"onClick\"]\nconst _hoisted_5 = { class: \"type-title\" }\nconst _hoisted_6 = { class: \"pool-item-wrapper\" }\nconst _hoisted_7 = [\"onMouseenter\", \"onClick\"]\nconst _hoisted_8 = {\n key: 0,\n class: \"mask\"\n}\nconst _hoisted_9 = /*#__PURE__*/_createTextVNode(\" 添加动画 \")\nconst _hoisted_10 = {\n key: 1,\n class: \"tip\"\n}\nconst _hoisted_11 = /*#__PURE__*/_createTextVNode(\" 选中画布中的元素添加动画\")\nconst _hoisted_12 = { class: \"sequence-content\" }\nconst _hoisted_13 = { class: \"index\" }\nconst _hoisted_14 = { class: \"text\" }\nconst _hoisted_15 = { class: \"handler\" }\nconst _hoisted_16 = {\n key: 0,\n class: \"configs\"\n}\nconst _hoisted_17 = { class: \"config-item\" }\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"3\"} }, \"持续时长:\", -1))\nconst _hoisted_19 = { class: \"config-item\" }\nconst _hoisted_20 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"3\"} }, \"触发方式:\", -1))\nconst _hoisted_21 = /*#__PURE__*/_createTextVNode(\"主动触发\")\nconst _hoisted_22 = /*#__PURE__*/_createTextVNode(\"与上一动画同时\")\nconst _hoisted_23 = /*#__PURE__*/_createTextVNode(\"上一动画之后\")\nconst _hoisted_24 = { class: \"config-item\" }\nconst _hoisted_25 = /*#__PURE__*/_createTextVNode(\"更换动画\")\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_InputNumber = _resolveComponent(\"InputNumber\")!\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_Draggable = _resolveComponent(\"Draggable\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.handleElement)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createVNode(_component_Popover, {\n trigger: \"click\",\n visible: _ctx.animationPoolVisible,\n \"onUpdate:visible\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.animationPoolVisible) = $event)),\n onVisibleChange: _cache[3] || (_cache[3] = visible => _ctx.handlePopoverVisibleChange(visible))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.tabs, (tab) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['tab', tab.key, { 'active': _ctx.activeTab === tab.key }]),\n key: tab.key,\n onClick: ($event: any) => (_ctx.activeTab = tab.key)\n }, _toDisplayString(tab.label), 11, _hoisted_4))\n }), 128))\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.animationTypes, (key) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (_ctx.activeTab === key)\n ? (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['animation-pool', key]),\n key: key\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.animations[key], (effect) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"pool-type\",\n key: effect.name\n }, [\n _createElementVNode(\"div\", _hoisted_5, _toDisplayString(effect.name) + \":\", 1),\n _createElementVNode(\"div\", _hoisted_6, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(effect.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(key, item.value))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"animation-box\", [\n `${_ctx.prefix}animated`,\n `${_ctx.prefix}fast`,\n _ctx.hoverPreviewAnimation === item.value && `${_ctx.prefix}${item.value}`,\n ]])\n }, _toDisplayString(item.name), 3)\n ], 40, _hoisted_7))\n }), 128))\n ])\n ]))\n }), 128)),\n (!_ctx.popoverMaskHide)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8))\n : _createCommentVNode(\"\", true)\n ], 2))\n : _createCommentVNode(\"\", true)\n ], 64))\n }), 256))\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"element-animation-btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.handleAnimationId = ''))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconEffects, { style: {\"margin-right\":\"5px\"} }),\n _hoisted_9\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createVNode(_component_IconClick, { style: {\"margin-right\":\"5px\"} }),\n _hoisted_11\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 handle: \".sequence-content\",\n onEnd: _ctx.handleDragEnd,\n itemKey: \"id\"\n }, {\n item: _withCtx(({ element }) => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"sequence-item\", [element.type, { 'active': _ctx.handleElement?.id === element.elId }]])\n }, [\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"div\", _hoisted_13, _toDisplayString(element.index), 1),\n _createElementVNode(\"div\", _hoisted_14, \"【\" + _toDisplayString(element.elType) + \"】\" + _toDisplayString(element.animationEffect), 1),\n _createElementVNode(\"div\", _hoisted_15, [\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.effect, 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.id))\n }, null, 8, [\"onClick\"])\n ]),\n _: 2\n }, 1032, [\"mouseEnterDelay\"])\n ])\n ]),\n (_ctx.handleElementAnimation[0]?.elId === element.elId)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [\n _createVNode(_component_Divider, { style: {\"margin\":\"16px 0\"} }),\n _createElementVNode(\"div\", _hoisted_17, [\n _hoisted_18,\n _createVNode(_component_InputNumber, {\n min: 500,\n max: 3000,\n step: 500,\n value: element.duration,\n onChange: value => _ctx.updateElementAnimationDuration(element.id, value as number),\n style: {\"flex\":\"5\"}\n }, null, 8, [\"value\", \"onChange\"])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n _hoisted_20,\n _createVNode(_component_Select, {\n value: element.trigger,\n onChange: value => _ctx.updateElementAnimationTrigger(element.id, value as 'click' | 'meantime' | 'auto'),\n style: {\"flex\":\"5\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"click\" }, {\n default: _withCtx(() => [\n _hoisted_21\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"meantime\" }, {\n default: _withCtx(() => [\n _hoisted_22\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"auto\" }, {\n default: _withCtx(() => [\n _hoisted_23\n ]),\n _: 1\n })\n ]),\n _: 2\n }, 1032, [\"value\", \"onChange\"])\n ]),\n _createElementVNode(\"div\", _hoisted_24, [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: ($event: any) => (_ctx.openAnimationPool(element.id))\n }, {\n default: _withCtx(() => [\n _hoisted_25\n ]),\n _: 2\n }, 1032, [\"onClick\"])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onEnd\"])\n ]))\n}","export const ANIMATION_DEFAULT_DURATION = 1000\r\nexport const ANIMATION_DEFAULT_TRIGGER = 'click'\r\nexport const ANIMATION_CLASS_PREFIX = 'animate__'\r\n\r\nexport const ENTER_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]\r\n\r\nexport const EXIT_ANIMATIONS = [\r\n {\r\n type: 'bounce',\r\n name: '弹跳',\r\n children: [\r\n { name: '弹出', value: 'bounceOut' },\r\n { name: '向左弹出', value: 'bounceOutLeft' },\r\n { name: '向右弹出', value: 'bounceOutRight' },\r\n { name: '向上弹出', value: 'bounceOutUp' },\r\n { name: '向下弹出', value: 'bounceOutDown' },\r\n ],\r\n },\r\n {\r\n type: 'fade',\r\n name: '浮现',\r\n children: [\r\n { name: '浮出', value: 'fadeOut' },\r\n { name: '向下浮出', value: 'fadeOutDown' },\r\n { name: '向下长距浮出', value: 'fadeOutDownBig' },\r\n { name: '向左浮出', value: 'fadeOutLeft' },\r\n { name: '向左长距浮出', value: 'fadeOutLeftBig' },\r\n { name: '向右浮出', value: 'fadeOutRight' },\r\n { name: '向右长距浮出', value: 'fadeOutRightBig' },\r\n { name: '向上浮出', value: 'fadeOutUp' },\r\n { name: '向上长距浮出', value: 'fadeOutUpBig' },\r\n { name: '从左上浮出', value: 'fadeOutTopLeft' },\r\n { name: '从右上浮出', value: 'fadeOutTopRight' },\r\n { name: '从左下浮出', value: 'fadeOutBottomLeft' },\r\n { name: '从右下浮出', value: 'fadeOutBottomRight' },\r\n ],\r\n },\r\n {\r\n type: 'rotate',\r\n name: '旋转',\r\n children: [\r\n { name: '旋转退出', value: 'rotateOut' },\r\n { name: '绕左下退出', value: 'rotateOutDownLeft' },\r\n { name: '绕右下退出', value: 'rotateOutDownRight' },\r\n { name: '绕左上退出', value: 'rotateOutUpLeft' },\r\n { name: '绕右上退出', value: 'rotateOutUpRight' },\r\n ],\r\n },\r\n {\r\n type: 'zoom',\r\n name: '缩放',\r\n children: [\r\n { name: '缩小退出', value: 'zoomOut' },\r\n { name: '向下缩小退出', value: 'zoomOutDown' },\r\n { name: '从左缩小退出', value: 'zoomOutLeft' },\r\n { name: '从右缩小退出', value: 'zoomOutRight' },\r\n { name: '向上缩小退出', value: 'zoomOutUp' },\r\n ],\r\n },\r\n {\r\n type: 'slide',\r\n name: '滑出',\r\n children: [\r\n { name: '向下滑出', value: 'slideOutDown' },\r\n { name: '从左滑出', value: 'slideOutLeft' },\r\n { name: '从右滑出', value: 'slideOutRight' },\r\n { name: '向上滑出', value: 'slideOutUp' },\r\n ],\r\n },\r\n {\r\n type: 'flip',\r\n name: '翻转',\r\n children: [\r\n { name: 'X轴翻转退出', value: 'flipOutX' },\r\n { name: 'Y轴翻转退出', value: 'flipOutY' },\r\n ],\r\n },\r\n {\r\n type: 'back',\r\n name: '缩小滑出',\r\n children: [\r\n { name: '向下缩小滑出', value: 'backOutDown' },\r\n { name: '从左缩小滑出', value: 'backOutLeft' },\r\n { name: '从右缩小滑出', value: 'backOutRight' },\r\n { name: '向上缩小滑出', value: 'backOutUp' },\r\n ],\r\n },\r\n {\r\n type: 'lightSpeed',\r\n name: '飞出',\r\n children: [\r\n { name: '从右飞出', value: 'lightSpeedOutRight' },\r\n { name: '从左飞出', value: 'lightSpeedOutLeft' },\r\n ],\r\n },\r\n]\r\n\r\nexport const ATTENTION_ANIMATIONS = [\r\n {\r\n type: 'shake',\r\n name: '晃动',\r\n children: [\r\n { name: '左右摇晃', value: 'shakeX' },\r\n { name: '上下摇晃', value: 'shakeY' },\r\n { name: '摇头', value: 'headShake' },\r\n { name: '摆动', value: 'swing' },\r\n { name: '晃动', value: 'wobble' },\r\n { name: '惊恐', value: 'tada' },\r\n { name: '果冻', value: 'jello' },\r\n ],\r\n },\r\n {\r\n type: 'other',\r\n name: '其他',\r\n children: [\r\n { name: '弹跳', value: 'bounce' },\r\n { name: '闪烁', value: 'flash' },\r\n { name: '脉搏', value: 'pulse' },\r\n { name: '橡皮筋', value: 'rubberBand' },\r\n { name: '心跳(快)', value: 'heartBeat' },\r\n ],\r\n },\r\n]","\nimport { computed, defineComponent, ref, watch } from 'vue'\nimport { nanoid } from 'nanoid'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTAnimation } from '@/types/slides'\nimport { \n ENTER_ANIMATIONS,\n EXIT_ANIMATIONS,\n ATTENTION_ANIMATIONS,\n ANIMATION_DEFAULT_DURATION,\n ANIMATION_DEFAULT_TRIGGER,\n ANIMATION_CLASS_PREFIX,\n} from '@/configs/animation'\nimport { ELEMENT_TYPE_ZH } from '@/configs/element'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport Draggable from 'vuedraggable'\n\nconst animationEffects: { [key: string]: string } = {}\nfor (const effect of ENTER_ANIMATIONS) {\n for (const animation of effect.children) {\n animationEffects[animation.value] = animation.name\n }\n}\nfor (const effect of EXIT_ANIMATIONS) {\n for (const animation of effect.children) {\n animationEffects[animation.value] = animation.name\n }\n}\nfor (const effect of ATTENTION_ANIMATIONS) {\n for (const animation of effect.children) {\n animationEffects[animation.value] = animation.name\n }\n}\n\ntype AnimationType = 'in' | 'out' | 'attention'\ninterface TabItem {\n key: AnimationType\n label: string\n}\n\nconst animationTypes: AnimationType[] = ['in', 'out', 'attention']\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, formatedAnimations, currentSlideAnimations } = storeToRefs(slidesStore)\n\n const tabs: TabItem[] = [\n { key: 'in', label: '入场' },\n { key: 'out', label: '退场' },\n { key: 'attention', label: '强调' },\n ]\n const activeTab = ref('in')\n\n watch(() => handleElementId.value, () => {\n animationPoolVisible.value = false\n })\n\n const hoverPreviewAnimation = ref('')\n const animationPoolVisible = ref(false)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 当前页面的动画列表\n const animationSequence = computed(() => {\n const animationSequence = []\n for (let i = 0; i < formatedAnimations.value.length; i++) {\n const item = formatedAnimations.value[i]\n for (let j = 0; j < item.animations.length; j++) {\n const animation = item.animations[j]\n const el = currentSlide.value.elements.find(el => el.id === animation.elId)\n if (!el) continue\n\n const elType = ELEMENT_TYPE_ZH[el.type]\n const animationEffect = animationEffects[animation.effect]\n animationSequence.push({\n ...animation,\n index: j === 0 ? i + 1 : '',\n elType,\n animationEffect,\n })\n }\n }\n return animationSequence\n })\n\n // 当前选中元素的入场动画信息\n const handleElementAnimation = computed(() => {\n const animations = currentSlideAnimations.value\n const animation = animations.filter(item => item.elId === handleElementId.value)\n return animation || []\n })\n\n // 删除元素动画\n const deleteAnimation = (id: string) => {\n const animations = currentSlideAnimations.value.filter(item => item.id !== id)\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, effect: string, duration: number) => {\n const elRef = document.querySelector(`#editable-element-${elId} [class^=editable-element-]`)\n if (elRef) {\n const animationName = `${ANIMATION_CLASS_PREFIX}${effect}`\n document.documentElement.style.setProperty('--animate-duration', `${duration}ms`)\n elRef.classList.add(`${ANIMATION_CLASS_PREFIX}animated`, animationName)\n\n const handleAnimationEnd = () => {\n document.documentElement.style.removeProperty('--animate-duration')\n elRef.classList.remove(`${ANIMATION_CLASS_PREFIX}animated`, animationName)\n }\n elRef.addEventListener('animationend', handleAnimationEnd, { once: true })\n }\n }\n\n // 修改元素动画持续时间\n const updateElementAnimationDuration = (id: string, duration: number) => {\n if (duration < 100 || duration > 5000) return\n\n const animations = currentSlideAnimations.value.map(item => {\n if (item.id === id) return { ...item, duration }\n return item\n })\n slidesStore.updateSlide({ animations })\n addHistorySnapshot()\n }\n\n // 修改触发方式\n const updateElementAnimationTrigger = (id: string, trigger: 'click' | 'meantime' | 'auto') => {\n const animations = currentSlideAnimations.value.map(item => {\n if (item.id === id) return { ...item, trigger }\n return item\n })\n slidesStore.updateSlide({ animations })\n addHistorySnapshot()\n }\n\n // 修改元素动画,并执行一次预览\n const updateElementAnimation = (type: AnimationType, effect: string) => {\n const animations = currentSlideAnimations.value.map(item => {\n if (item.id === handleAnimationId.value) return { ...item, type, effect }\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 || ANIMATION_DEFAULT_DURATION\n\n runAnimation(handleElementId.value, effect, duration)\n }\n\n const handleAnimationId = ref('')\n // 添加元素动画,并执行一次预览\n const addAnimation = (type: AnimationType, effect: string) => {\n if (handleAnimationId.value) {\n updateElementAnimation(type, effect)\n return\n }\n\n const animations: PPTAnimation[] = JSON.parse(JSON.stringify(currentSlideAnimations.value))\n animations.push({\n id: nanoid(10),\n elId: handleElementId.value,\n type,\n effect,\n duration: ANIMATION_DEFAULT_DURATION,\n trigger: ANIMATION_DEFAULT_TRIGGER,\n })\n slidesStore.updateSlide({ animations })\n animationPoolVisible.value = false\n addHistorySnapshot()\n\n runAnimation(handleElementId.value, effect, ANIMATION_DEFAULT_DURATION)\n }\n\n // 动画选择面板打开600ms后再移除遮罩层,否则打开面板后迅速滑入鼠标预览会导致抖动\n const popoverMaskHide = ref(false)\n const handlePopoverVisibleChange = (visible: boolean) => {\n if (visible) {\n setTimeout(() => popoverMaskHide.value = true, 600)\n }\n else popoverMaskHide.value = false\n }\n\n const openAnimationPool = (elementId: string) => {\n animationPoolVisible.value = true\n handleAnimationId.value = elementId\n handlePopoverVisibleChange(true)\n }\n\n return {\n tabs,\n activeTab,\n handleAnimationId,\n handleElement,\n animationPoolVisible,\n animationSequence,\n hoverPreviewAnimation,\n handleElementAnimation,\n popoverMaskHide,\n animations: {\n in: ENTER_ANIMATIONS,\n out: EXIT_ANIMATIONS,\n attention: ATTENTION_ANIMATIONS,\n },\n prefix: ANIMATION_CLASS_PREFIX,\n animationTypes,\n addAnimation,\n deleteAnimation,\n handleDragEnd,\n runAnimation,\n updateElementAnimationDuration,\n updateElementAnimationTrigger,\n handlePopoverVisibleChange,\n openAnimationPool,\n }\n },\n})\n","import { render } from \"./ElementAnimationPanel.vue?vue&type=template&id=11684c24&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=11684c24&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-11684c24\"]])\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-26058d12\"),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 as 'gradient' | 'image' | 'solid'))\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 as 'repeat' | 'cover' | 'contain' }))\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 as 'linear' | 'radial' }))\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 as number }))\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 as number))\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 as string }))\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=26058d12&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=26058d12&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-26058d12\"]])\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-78e88e36\"),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=78e88e36&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=78e88e36&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-78e88e36\"]])\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-0a74a690\"),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(_ctx.ElementAlignCommands.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(_ctx.ElementAlignCommands.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(_ctx.ElementAlignCommands.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(_ctx.ElementAlignCommands.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(_ctx.ElementAlignCommands.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(_ctx.ElementAlignCommands.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 { 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: ElementAlignCommands) => {\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 { ElementAlignCommands } 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: ElementAlignCommands) => {\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 ElementAlignCommands,\n }\n },\n})\n","import { render } from \"./MultiPositionPanel.vue?vue&type=template&id=0a74a690&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=0a74a690&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-0a74a690\"]])\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-e93c4822\"),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 = (value: string) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { action: { command: 'insert', value } })\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=e93c4822&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=e93c4822&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-e93c4822\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { 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: ToolbarStates\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.EL_STYLE },\n { label: '位置', value: ToolbarStates.MULTI_POSITION },\n ]\n\n const setToolbarState = (value: ToolbarStates) => {\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: ToolbarStates[] = 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=017ca85e&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=017ca85e&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-017ca85e\"]])\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-7ed67bb3\"),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: Event) => {\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=7ed67bb3&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=7ed67bb3&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-7ed67bb3\"]])\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, resolveDynamicComponent as _resolveDynamicComponent, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-17be277c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"export-dialog\" }\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.tabs, (tab) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': tab.key === _ctx.dialogForExport }]),\n key: tab.key,\n onClick: ($event: any) => (_ctx.setDialogForExport(tab.key))\n }, _toDisplayString(tab.label), 11, _hoisted_3))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.currentDialogComponent), {\n onClose: _cache[0] || (_cache[0] = ($event: any) => (_ctx.setDialogForExport('')))\n }, null, 32))\n ])\n ]))\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createBlock as _createBlock, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-61e92928\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"export-img-dialog\" }\nconst _hoisted_2 = { class: \"thumbnails-view\" }\nconst _hoisted_3 = {\n class: \"thumbnails\",\n ref: \"imageThumbnailsRef\"\n}\nconst _hoisted_4 = { class: \"configs\" }\nconst _hoisted_5 = { class: \"row\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"导出格式:\", -1))\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"JPEG\")\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\"PNG\")\nconst _hoisted_9 = { class: \"row\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"导出范围:\", -1))\nconst _hoisted_11 = /*#__PURE__*/_createTextVNode(\"全部\")\nconst _hoisted_12 = /*#__PURE__*/_createTextVNode(\"当前页\")\nconst _hoisted_13 = /*#__PURE__*/_createTextVNode(\"自定义\")\nconst _hoisted_14 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_15 = [\"data-range\"]\nconst _hoisted_16 = { class: \"row\" }\nconst _hoisted_17 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"图片质量:\", -1))\nconst _hoisted_18 = { class: \"row\" }\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"忽略在线字体:\", -1))\nconst _hoisted_20 = { class: \"config-item\" }\nconst _hoisted_21 = { class: \"btns\" }\nconst _hoisted_22 = /*#__PURE__*/_createTextVNode(\"导出图片\")\nconst _hoisted_23 = /*#__PURE__*/_createTextVNode(\"关闭\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ThumbnailSlide = _resolveComponent(\"ThumbnailSlide\")!\n const _component_RadioButton = _resolveComponent(\"RadioButton\")!\n const _component_RadioGroup = _resolveComponent(\"RadioGroup\")!\n const _component_Slider = _resolveComponent(\"Slider\")!\n const _component_Switch = _resolveComponent(\"Switch\")!\n const _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_FullscreenSpin = _resolveComponent(\"FullscreenSpin\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.renderSlides, (slide) => {\n return (_openBlock(), _createBlock(_component_ThumbnailSlide, {\n class: \"thumbnail\",\n key: slide.id,\n slide: slide,\n size: 1600\n }, null, 8, [\"slide\"]))\n }), 128))\n ], 512)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _hoisted_6,\n _createVNode(_component_RadioGroup, {\n class: \"config-item\",\n value: _ctx.format,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.format) = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"50%\"},\n value: \"jpeg\"\n }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n }),\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"50%\"},\n value: \"png\"\n }, {\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_RadioGroup, {\n class: \"config-item\",\n value: _ctx.rangeType,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.rangeType) = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"33.33%\"},\n value: \"all\"\n }, {\n default: _withCtx(() => [\n _hoisted_11\n ]),\n _: 1\n }),\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"33.33%\"},\n value: \"current\"\n }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n }),\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"33.33%\"},\n value: \"custom\"\n }, {\n default: _withCtx(() => [\n _hoisted_13\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n (_ctx.rangeType === 'custom')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", {\n class: \"title\",\n \"data-range\": `(${_ctx.range[0]} ~ ${_ctx.range[1]})`\n }, \"自定义范围:\", 8, _hoisted_15),\n _createVNode(_component_Slider, {\n class: \"config-item\",\n range: \"\",\n min: 1,\n max: _ctx.slides.length,\n step: 1,\n value: _ctx.range,\n \"onUpdate:value\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.range) = $event))\n }, null, 8, [\"max\", \"value\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_16, [\n _hoisted_17,\n _createVNode(_component_Slider, {\n class: \"config-item\",\n min: 0,\n max: 1,\n step: 0.1,\n value: _ctx.quality,\n \"onUpdate:value\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.quality) = $event))\n }, null, 8, [\"step\", \"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_18, [\n _hoisted_19,\n _createElementVNode(\"div\", _hoisted_20, [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"导出时默认忽略在线字体,若您在幻灯片中使用了在线字体,且希望导出后保留相关样式,可选择关闭【忽略在线字体】选项,但要注意这将会增加导出用时。\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Switch, {\n checked: _ctx.ignoreWebfont,\n \"onUpdate:checked\": _cache[4] || (_cache[4] = ($event: any) => ((_ctx.ignoreWebfont) = $event))\n }, null, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_21, [\n _createVNode(_component_Button, {\n class: \"btn export\",\n type: \"primary\",\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.expImage()))\n }, {\n default: _withCtx(() => [\n _hoisted_22\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n class: \"btn close\",\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.close()))\n }, {\n default: _withCtx(() => [\n _hoisted_23\n ]),\n _: 1\n })\n ]),\n _createVNode(_component_FullscreenSpin, {\n loading: _ctx.exporting,\n tip: \"正在导出...\"\n }, null, 8, [\"loading\"])\n ]))\n}","\nimport { computed, defineComponent, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useExport from '@/hooks/useExport'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\n\nexport default defineComponent({\n name: 'export-img-dialog',\n components: {\n ThumbnailSlide,\n },\n setup(props, { emit }) {\n const { slides, currentSlide } = storeToRefs(useSlidesStore())\n\n const imageThumbnailsRef = ref()\n const rangeType = ref<'all' | 'current' | 'custom'>('all')\n const range = ref<[number, number]>([1, slides.value.length])\n const format = ref<'jpeg' | 'png'>('jpeg')\n const quality = ref(1)\n const ignoreWebfont = ref(true)\n\n const renderSlides = computed(() => {\n if (rangeType.value === 'all') return slides.value\n if (rangeType.value === 'current') return [currentSlide.value]\n return slides.value.filter((item, index) => {\n const [min, max] = range.value\n return index >= min - 1 && index <= max - 1\n })\n })\n\n const close = () => emit('close')\n\n const { exportImage, exporting } = useExport()\n\n const expImage = () => {\n if (!imageThumbnailsRef.value) return\n exportImage(imageThumbnailsRef.value, format.value, quality.value, ignoreWebfont.value)\n }\n \n return {\n imageThumbnailsRef,\n slides,\n rangeType,\n range,\n format,\n quality,\n ignoreWebfont,\n renderSlides,\n exporting,\n expImage,\n close,\n }\n },\n})\n","import { render } from \"./ExportImage.vue?vue&type=template&id=61e92928&scoped=true&ts=true\"\nimport script from \"./ExportImage.vue?vue&type=script&lang=ts\"\nexport * from \"./ExportImage.vue?vue&type=script&lang=ts\"\n\nimport \"./ExportImage.vue?vue&type=style&index=0&id=61e92928&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-61e92928\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, 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-54705363\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"export-json-dialog\" }\nconst _hoisted_2 = { class: \"preview\" }\nconst _hoisted_3 = { class: \"btns\" }\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"导出 JSON\")\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 _createElementVNode(\"pre\", null, _toDisplayString(_ctx.slides), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_Button, {\n class: \"btn export\",\n type: \"primary\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.exportJSON()))\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n class: \"btn close\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.close()))\n }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n })\n ])\n ]))\n}","\nimport { defineComponent } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useExport from '@/hooks/useExport'\n\nexport default defineComponent({\n name: 'export-json-dialog',\n setup(props, { emit }) {\n const close = () => emit('close')\n\n const { slides } = storeToRefs(useSlidesStore())\n\n const { exportJSON } = useExport()\n \n return {\n slides,\n exportJSON,\n close,\n }\n },\n})\n","import { render } from \"./ExportJSON.vue?vue&type=template&id=54705363&scoped=true&ts=true\"\nimport script from \"./ExportJSON.vue?vue&type=script&lang=ts\"\nexport * from \"./ExportJSON.vue?vue&type=script&lang=ts\"\n\nimport \"./ExportJSON.vue?vue&type=style&index=0&id=54705363&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-54705363\"]])\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, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7c83ddb5\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"export-pdf-dialog\" }\nconst _hoisted_2 = { class: \"thumbnails-view\" }\nconst _hoisted_3 = {\n class: \"thumbnails\",\n ref: \"pdfThumbnailsRef\"\n}\nconst _hoisted_4 = { class: \"configs\" }\nconst _hoisted_5 = { class: \"row\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"导出范围:\", -1))\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"全部幻灯片\")\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\"当前幻灯片\")\nconst _hoisted_9 = { class: \"row\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"每页数量:\", -1))\nconst _hoisted_11 = /*#__PURE__*/_createTextVNode(\"1\")\nconst _hoisted_12 = /*#__PURE__*/_createTextVNode(\"2\")\nconst _hoisted_13 = /*#__PURE__*/_createTextVNode(\"3\")\nconst _hoisted_14 = { class: \"row\" }\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"边缘留白:\", -1))\nconst _hoisted_16 = { class: \"config-item\" }\nconst _hoisted_17 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"tip\" }, \" 注意:若打印预览与实际样式不一致,请在弹出的打印窗口中勾选【背景图形】选项。 \", -1))\nconst _hoisted_18 = { class: \"btns\" }\nconst _hoisted_19 = /*#__PURE__*/_createTextVNode(\"打印 / 导出 PDF\")\nconst _hoisted_20 = /*#__PURE__*/_createTextVNode(\"关闭\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ThumbnailSlide = _resolveComponent(\"ThumbnailSlide\")!\n const _component_RadioButton = _resolveComponent(\"RadioButton\")!\n const _component_RadioGroup = _resolveComponent(\"RadioGroup\")!\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_Switch = _resolveComponent(\"Switch\")!\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 (_ctx.rangeType === 'current')\n ? (_openBlock(), _createBlock(_component_ThumbnailSlide, {\n key: 0,\n class: \"thumbnail\",\n slide: _ctx.currentSlide,\n size: 1600\n }, null, 8, [\"slide\"]))\n : (_openBlock(true), _createElementBlock(_Fragment, { key: 1 }, _renderList(_ctx.slides, (slide, index) => {\n return (_openBlock(), _createBlock(_component_ThumbnailSlide, {\n class: _normalizeClass([\"thumbnail\", { 'break-page': (index + 1) % _ctx.count === 0 }]),\n key: slide.id,\n slide: slide,\n size: 1600\n }, null, 8, [\"class\", \"slide\"]))\n }), 128))\n ], 512)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _hoisted_6,\n _createVNode(_component_RadioGroup, {\n class: \"config-item\",\n value: _ctx.rangeType,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.rangeType) = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"50%\"},\n value: \"all\"\n }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n }),\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"50%\"},\n value: \"current\"\n }, {\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_Select, {\n class: \"config-item\",\n value: _ctx.count,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.count) = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: 1 }, {\n default: _withCtx(() => [\n _hoisted_11\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: 2 }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: 3 }, {\n default: _withCtx(() => [\n _hoisted_13\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _hoisted_15,\n _createElementVNode(\"div\", _hoisted_16, [\n _createVNode(_component_Switch, {\n checked: _ctx.padding,\n \"onUpdate:checked\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.padding) = $event))\n }, null, 8, [\"checked\"])\n ])\n ]),\n _hoisted_17\n ]),\n _createElementVNode(\"div\", _hoisted_18, [\n _createVNode(_component_Button, {\n class: \"btn export\",\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.expPDF()))\n }, {\n default: _withCtx(() => [\n _hoisted_19\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n class: \"btn close\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.close()))\n }, {\n default: _withCtx(() => [\n _hoisted_20\n ]),\n _: 1\n })\n ])\n ]))\n}","interface PageSize {\n width: number\n height: number\n margin: number\n}\n\nconst createIframe = () => {\n const iframe = document.createElement('iframe')\n iframe.style.width = '0'\n iframe.style.height = '0'\n iframe.style.position = 'absolute'\n iframe.style.right = '0'\n iframe.style.top = '0'\n iframe.style.border = '0'\n\n document.body.appendChild(iframe)\n\n return iframe\n}\n\nconst writeContent = (doc: Document, printNode: HTMLElement, size: PageSize) => {\n const docType = ''\n\n let style = ''\n const styleSheets = document.styleSheets\n if (styleSheets) {\n for (const styleSheet of styleSheets) {\n if (!styleSheet.cssRules) continue\n\n for (const rule of styleSheet.cssRules) {\n style += rule.cssText\n }\n }\n }\n\n const { width, height, margin } = size\n const head = `\n \n \n \n `\n const body = '' + printNode.innerHTML + ''\n\n doc.open()\n doc.write(`\n ${docType}\n \n ${head}\n ${body}\n \n `)\n doc.close()\n}\n\nexport const print = (printNode: HTMLElement, size: PageSize) => {\n const iframe = createIframe()\n const iframeContentWindow = iframe.contentWindow\n\n if (!iframe.contentDocument || !iframeContentWindow) return\n writeContent(iframe.contentDocument, printNode, size)\n\n const handleLoadIframe = () => {\n iframeContentWindow.focus()\n iframeContentWindow.print()\n document.body.removeChild(iframe)\n }\n\n iframe.addEventListener('load', handleLoadIframe)\n}","\nimport { defineComponent, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { print } from '@/utils/print'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\n\nexport default defineComponent({\n name: 'export-pdf-dialog',\n components: {\n ThumbnailSlide,\n },\n setup(props, { emit }) {\n const { slides, currentSlide } = storeToRefs(useSlidesStore())\n\n const pdfThumbnailsRef = ref()\n const rangeType = ref<'all' | 'current'>('all')\n const count = ref(1)\n const padding = ref(true)\n\n const close = () => emit('close')\n\n const expPDF = () => {\n if (!pdfThumbnailsRef.value) return\n const pageSize = {\n width: 1600,\n height: rangeType.value === 'all' ? 900 * count.value : 900,\n margin: padding.value ? 50 : 0,\n }\n print(pdfThumbnailsRef.value, pageSize)\n }\n \n return {\n pdfThumbnailsRef,\n slides,\n currentSlide,\n rangeType,\n count,\n padding,\n expPDF,\n close,\n }\n },\n})\n","import { render } from \"./ExportPDF.vue?vue&type=template&id=7c83ddb5&scoped=true&ts=true\"\nimport script from \"./ExportPDF.vue?vue&type=script&lang=ts\"\nexport * from \"./ExportPDF.vue?vue&type=script&lang=ts\"\n\nimport \"./ExportPDF.vue?vue&type=style&index=0&id=7c83ddb5&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-7c83ddb5\"]])\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, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-dad79818\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"export-pptx-dialog\" }\nconst _hoisted_2 = { class: \"configs\" }\nconst _hoisted_3 = { class: \"row\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"导出范围:\", -1))\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\"全部\")\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\"当前页\")\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"自定义\")\nconst _hoisted_8 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_9 = [\"data-range\"]\nconst _hoisted_10 = { class: \"row\" }\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"覆盖默认母版:\", -1))\nconst _hoisted_12 = { class: \"config-item\" }\nconst _hoisted_13 = { class: \"btns\" }\nconst _hoisted_14 = /*#__PURE__*/_createTextVNode(\"导出 PPTX\")\nconst _hoisted_15 = /*#__PURE__*/_createTextVNode(\"关闭\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_RadioButton = _resolveComponent(\"RadioButton\")!\n const _component_RadioGroup = _resolveComponent(\"RadioGroup\")!\n const _component_Slider = _resolveComponent(\"Slider\")!\n const _component_Switch = _resolveComponent(\"Switch\")!\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_FullscreenSpin = _resolveComponent(\"FullscreenSpin\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createVNode(_component_RadioGroup, {\n class: \"config-item\",\n value: _ctx.rangeType,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.rangeType) = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"33.33%\"},\n value: \"all\"\n }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n }),\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"33.33%\"},\n value: \"current\"\n }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n }),\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"33.33%\"},\n value: \"custom\"\n }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n (_ctx.rangeType === 'custom')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createElementVNode(\"div\", {\n class: \"title\",\n \"data-range\": `(${_ctx.range[0]} ~ ${_ctx.range[1]})`\n }, \"自定义范围:\", 8, _hoisted_9),\n _createVNode(_component_Slider, {\n class: \"config-item\",\n range: \"\",\n min: 1,\n max: _ctx.slides.length,\n step: 1,\n value: _ctx.range,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.range) = $event))\n }, null, 8, [\"max\", \"value\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createElementVNode(\"div\", _hoisted_12, [\n _createVNode(_component_Switch, {\n checked: _ctx.masterOverwrite,\n \"onUpdate:checked\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.masterOverwrite) = $event))\n }, null, 8, [\"checked\"])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_13, [\n _createVNode(_component_Button, {\n class: \"btn export\",\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.exportPPTX(_ctx.selectedSlides, _ctx.masterOverwrite)))\n }, {\n default: _withCtx(() => [\n _hoisted_14\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n class: \"btn close\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.close()))\n }, {\n default: _withCtx(() => [\n _hoisted_15\n ]),\n _: 1\n })\n ]),\n _createVNode(_component_FullscreenSpin, {\n loading: _ctx.exporting,\n tip: \"正在导出...\"\n }, null, 8, [\"loading\"])\n ]))\n}","\nimport { computed, defineComponent, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useExport from '@/hooks/useExport'\n\nexport default defineComponent({\n name: 'export-pptx-dialog',\n setup(props, { emit }) {\n const { slides, currentSlide } = storeToRefs(useSlidesStore())\n\n const rangeType = ref<'all' | 'current' | 'custom'>('all')\n const range = ref<[number, number]>([1, slides.value.length])\n const masterOverwrite = ref(true)\n\n const selectedSlides = computed(() => {\n if (rangeType.value === 'all') return slides.value\n if (rangeType.value === 'current') return [currentSlide.value]\n return slides.value.filter((item, index) => {\n const [min, max] = range.value\n return index >= min - 1 && index <= max - 1\n })\n })\n\n const close = () => emit('close')\n\n const { exportPPTX, exporting } = useExport()\n \n return {\n slides,\n rangeType,\n range,\n masterOverwrite,\n exporting,\n selectedSlides,\n exportPPTX,\n close,\n }\n },\n})\n","import { render } from \"./ExportPPTX.vue?vue&type=template&id=dad79818&scoped=true&ts=true\"\nimport script from \"./ExportPPTX.vue?vue&type=script&lang=ts\"\nexport * from \"./ExportPPTX.vue?vue&type=script&lang=ts\"\n\nimport \"./ExportPPTX.vue?vue&type=style&index=0&id=dad79818&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-dad79818\"]])\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, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1e43fa60\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"export-pptist-dialog\" }\nconst _hoisted_2 = { class: \"configs\" }\nconst _hoisted_3 = { class: \"row\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"导出范围:\", -1))\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\"全部\")\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\"当前页\")\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"自定义\")\nconst _hoisted_8 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_9 = [\"data-range\"]\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"tip\" }, \" 提示:.pptist 是本应用的特有文件后缀,支持将该类型的文件导入回应用中。 \", -1))\nconst _hoisted_11 = { class: \"btns\" }\nconst _hoisted_12 = /*#__PURE__*/_createTextVNode(\"导出 .pptist 文件\")\nconst _hoisted_13 = /*#__PURE__*/_createTextVNode(\"关闭\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_RadioButton = _resolveComponent(\"RadioButton\")!\n const _component_RadioGroup = _resolveComponent(\"RadioGroup\")!\n const _component_Slider = _resolveComponent(\"Slider\")!\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 _hoisted_4,\n _createVNode(_component_RadioGroup, {\n class: \"config-item\",\n value: _ctx.rangeType,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.rangeType) = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"33.33%\"},\n value: \"all\"\n }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n }),\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"33.33%\"},\n value: \"current\"\n }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n }),\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"33.33%\"},\n value: \"custom\"\n }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n (_ctx.rangeType === 'custom')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createElementVNode(\"div\", {\n class: \"title\",\n \"data-range\": `(${_ctx.range[0]} ~ ${_ctx.range[1]})`\n }, \"自定义范围:\", 8, _hoisted_9),\n _createVNode(_component_Slider, {\n class: \"config-item\",\n range: \"\",\n min: 1,\n max: _ctx.slides.length,\n step: 1,\n value: _ctx.range,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.range) = $event))\n }, null, 8, [\"max\", \"value\"])\n ]))\n : _createCommentVNode(\"\", true),\n _hoisted_10\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n _createVNode(_component_Button, {\n class: \"btn export\",\n type: \"primary\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.exportSpecificFile(_ctx.selectedSlides)))\n }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n class: \"btn close\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.close()))\n }, {\n default: _withCtx(() => [\n _hoisted_13\n ]),\n _: 1\n })\n ])\n ]))\n}","\nimport { computed, defineComponent, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useExport from '@/hooks/useExport'\n\nexport default defineComponent({\n name: 'export-pptist-dialog',\n setup(props, { emit }) {\n const { slides, currentSlide } = storeToRefs(useSlidesStore())\n\n const rangeType = ref<'all' | 'current' | 'custom'>('all')\n const range = ref<[number, number]>([1, slides.value.length])\n\n const selectedSlides = computed(() => {\n if (rangeType.value === 'all') return slides.value\n if (rangeType.value === 'current') return [currentSlide.value]\n return slides.value.filter((item, index) => {\n const [min, max] = range.value\n return index >= min - 1 && index <= max - 1\n })\n })\n\n const close = () => emit('close')\n\n const { exportSpecificFile } = useExport()\n \n return {\n slides,\n rangeType,\n range,\n selectedSlides,\n exportSpecificFile,\n close,\n }\n },\n})\n","import { render } from \"./ExportSpecificFile.vue?vue&type=template&id=1e43fa60&scoped=true&ts=true\"\nimport script from \"./ExportSpecificFile.vue?vue&type=script&lang=ts\"\nexport * from \"./ExportSpecificFile.vue?vue&type=script&lang=ts\"\n\nimport \"./ExportSpecificFile.vue?vue&type=style&index=0&id=1e43fa60&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-1e43fa60\"]])\n\nexport default __exports__","\nimport { computed, defineComponent } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { DialogForExportTypes } from '@/types/export'\n\nimport ExportImage from './ExportImage.vue'\nimport ExportJSON from './ExportJSON.vue'\nimport ExportPDF from './ExportPDF.vue'\nimport ExportPPTX from './ExportPPTX.vue'\nimport ExportSpecificFile from './ExportSpecificFile.vue'\n\ninterface TabItem {\n key: DialogForExportTypes\n label: string\n}\n\nexport default defineComponent({\n name: 'export-dialog',\n setup() {\n const mainStore = useMainStore()\n const { dialogForExport } = storeToRefs(mainStore)\n\n const setDialogForExport = mainStore.setDialogForExport\n\n const tabs: TabItem[] = [\n { key: 'pptist', label: '导出 pptist 文件' },\n { key: 'pptx', label: '导出 PPTX' },\n { key: 'image', label: '导出图片' },\n { key: 'json', label: '导出 JSON' },\n { key: 'pdf', label: '打印 / 导出 PDF' },\n ]\n\n const currentDialogComponent = computed(() => {\n const dialogMap = {\n 'image': ExportImage,\n 'json': ExportJSON,\n 'pdf': ExportPDF,\n 'pptx': ExportPPTX,\n 'pptist': ExportSpecificFile,\n }\n return dialogMap[dialogForExport.value] || null\n })\n\n return {\n currentDialogComponent,\n tabs,\n dialogForExport,\n setDialogForExport,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=17be277c&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=17be277c&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-17be277c\"]])\n\nexport default __exports__","\nimport { defineComponent, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\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'\nimport ExportDialog from './ExportDialog/index.vue'\n\nexport default defineComponent({\n name: 'editor',\n components: {\n EditorHeader,\n Canvas,\n CanvasTool,\n Thumbnails,\n Toolbar,\n Remark,\n ExportDialog,\n },\n setup() {\n const mainStore = useMainStore()\n const { dialogForExport } = storeToRefs(mainStore)\n const closeExportDialog = () => mainStore.setDialogForExport('')\n\n const remarkHeight = ref(40)\n\n useGlobalHotkey()\n usePasteEvent()\n\n return {\n remarkHeight,\n dialogForExport,\n closeExportDialog,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=5ff9efcc&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=5ff9efcc&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-5ff9efcc\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, 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-18f794c8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"pptist-screen\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_BaseView = _resolveComponent(\"BaseView\")!\n const _component_PresenterView = _resolveComponent(\"PresenterView\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.viewMode === 'base')\n ? (_openBlock(), _createBlock(_component_BaseView, {\n key: 0,\n changeViewMode: _ctx.changeViewMode\n }, null, 8, [\"changeViewMode\"]))\n : (_ctx.viewMode === 'presenter')\n ? (_openBlock(), _createBlock(_component_PresenterView, {\n key: 1,\n changeViewMode: _ctx.changeViewMode\n }, null, 8, [\"changeViewMode\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}","import { resolveComponent as _resolveComponent, resolveDirective as _resolveDirective, createVNode as _createVNode, withDirectives as _withDirectives, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, withCtx as _withCtx, normalizeClass as _normalizeClass, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-54670d0c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"tools-left\" }\nconst _hoisted_2 = { class: \"content\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ScreenSlideList = _resolveComponent(\"ScreenSlideList\")!\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 _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_IconMagic = _resolveComponent(\"IconMagic\")!\n const _component_IconListView = _resolveComponent(\"IconListView\")!\n const _component_IconOffScreenOne = _resolveComponent(\"IconOffScreenOne\")!\n const _component_IconFullScreenOne = _resolveComponent(\"IconFullScreenOne\")!\n const _component_IconPower = _resolveComponent(\"IconPower\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"base-view\", { 'laser-pen': _ctx.laserPen }])\n }, [\n _withDirectives(_createVNode(_component_ScreenSlideList, {\n slideWidth: _ctx.slideWidth,\n slideHeight: _ctx.slideHeight,\n animationIndex: _ctx.animationIndex,\n turnSlideToId: _ctx.turnSlideToId,\n manualExitFullscreen: _ctx.manualExitFullscreen,\n onWheel: _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 }, null, 8, [\"slideWidth\", \"slideHeight\", \"animationIndex\", \"turnSlideToId\", \"manualExitFullscreen\"]), [\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 slideWidth: _ctx.slideWidth,\n slideHeight: _ctx.slideHeight,\n onClose: _cache[4] || (_cache[4] = ($event: any) => (_ctx.writingBoardToolVisible = false))\n }, null, 8, [\"slideWidth\", \"slideHeight\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_1, [\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 ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"tools-right\", { 'visible': _ctx.rightToolsVisible }]),\n onMouseleave: _cache[14] || (_cache[14] = ($event: any) => (_ctx.rightToolsVisible = false)),\n onMouseenter: _cache[15] || (_cache[15] = ($event: any) => (_ctx.rightToolsVisible = true))\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: \"tool-btn page-number\",\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.slideThumbnailModelVisible = true))\n }, \"幻灯片 \" + _toDisplayString(_ctx.slideIndex + 1) + \" / \" + _toDisplayString(_ctx.slides.length), 1),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: \"画笔工具\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconWrite, {\n class: \"tool-btn\",\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.writingBoardToolVisible = true))\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 _createVNode(_component_IconMagic, {\n class: _normalizeClass([\"tool-btn\", { 'active': _ctx.laserPen }]),\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.laserPen = !_ctx.laserPen))\n }, null, 8, [\"class\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: \"演讲者视图\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconListView, {\n class: \"tool-btn\",\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.changeViewMode('presenter')))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: _ctx.fullscreenState ? '退出全屏' : '进入全屏'\n }, {\n default: _withCtx(() => [\n (_ctx.fullscreenState)\n ? (_openBlock(), _createBlock(_component_IconOffScreenOne, {\n key: 0,\n class: \"tool-btn\",\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_ctx.manualExitFullscreen()))\n }))\n : (_openBlock(), _createBlock(_component_IconFullScreenOne, {\n key: 1,\n class: \"tool-btn\",\n onClick: _cache[12] || (_cache[12] = ($event: any) => (_ctx.enterFullscreen()))\n }))\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\", \"title\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: \"结束放映\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconPower, {\n class: \"tool-btn\",\n onClick: _cache[13] || (_cache[13] = ($event: any) => (_ctx.exitScreening()))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ])\n ], 34)\n ], 2))\n}","import { onMounted, onUnmounted, ref } from 'vue'\nimport { throttle } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { KEYS } from '@/configs/hotkey'\nimport { ANIMATION_CLASS_PREFIX } from '@/configs/animation'\n\nimport { message } from 'ant-design-vue'\n\nexport default () => {\n const slidesStore = useSlidesStore()\n const { slides, slideIndex, formatedAnimations } = storeToRefs(slidesStore)\n\n // 当前页的元素动画执行到的位置\n const animationIndex = ref(0)\n\n // 动画执行状态\n const inAnimation = ref(false)\n\n // 最小已播放页面索引\n const playedSlidesMinIndex = ref(slideIndex.value)\n\n // 执行元素动画\n const runAnimation = () => {\n // 正在执行动画时,禁止其他新的动画开始\n if (inAnimation.value) return\n\n const { animations, autoNext } = formatedAnimations.value[animationIndex.value]\n animationIndex.value += 1\n\n // 标记开始执行动画\n inAnimation.value = true\n\n let endAnimationCount = 0\n\n // 依次执行该位置中的全部动画\n for (const animation of animations) {\n const elRef: HTMLElement | null = document.querySelector(`#screen-element-${animation.elId} [class^=base-element-]`)\n if (!elRef) {\n endAnimationCount += 1\n continue\n }\n\n const animationName = `${ANIMATION_CLASS_PREFIX}${animation.effect}`\n \n // 执行动画前先清除原有的动画状态(如果有)\n elRef.style.removeProperty('--animate-duration')\n for (const classname of elRef.classList) {\n if (classname.indexOf(ANIMATION_CLASS_PREFIX) !== -1) elRef.classList.remove(classname, `${ANIMATION_CLASS_PREFIX}animated`)\n }\n \n // 执行动画\n elRef.style.setProperty('--animate-duration', `${animation.duration}ms`)\n elRef.classList.add(animationName, `${ANIMATION_CLASS_PREFIX}animated`)\n\n // 执行动画结束,将“退场”以外的动画状态清除\n const handleAnimationEnd = () => {\n if (animation.type !== 'out') {\n elRef.style.removeProperty('--animate-duration')\n elRef.classList.remove(animationName, `${ANIMATION_CLASS_PREFIX}animated`)\n }\n\n // 判断该位置上的全部动画都已经结束后,标记动画执行完成,并尝试继续向下执行(如果有需要)\n endAnimationCount += 1\n if (endAnimationCount === animations.length) {\n inAnimation.value = false\n if (autoNext) runAnimation()\n }\n }\n elRef.addEventListener('animationend', handleAnimationEnd, { once: true })\n }\n }\n\n // 撤销元素动画,除了将索引前移外,还需要清除动画状态\n const revokeAnimation = () => {\n animationIndex.value -= 1\n const { animations } = formatedAnimations.value[animationIndex.value]\n\n for (const animation of animations) {\n const elRef: HTMLElement | null = document.querySelector(`#screen-element-${animation.elId} [class^=base-element-]`)\n if (!elRef) continue\n \n elRef.style.removeProperty('--animate-duration')\n for (const classname of elRef.classList) {\n if (classname.indexOf(ANIMATION_CLASS_PREFIX) !== -1) elRef.classList.remove(classname, `${ANIMATION_CLASS_PREFIX}animated`)\n }\n }\n\n // 如果撤销时该位置有且仅有强调动画,则继续执行一次撤销\n if (animations.every(item => item.type === 'attention')) execPrev()\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 // 撤回到上一页时,若该页从未播放过(意味着不存在动画状态),需要将动画索引置为最小值(初始状态),否则置为最大值(最终状态)\n const execPrev = () => {\n if (formatedAnimations.value.length && animationIndex.value > 0) {\n revokeAnimation()\n }\n else if (slideIndex.value > 0) {\n slidesStore.updateSlideIndex(slideIndex.value - 1)\n if (slideIndex.value < playedSlidesMinIndex.value) {\n animationIndex.value = 0\n playedSlidesMinIndex.value = slideIndex.value\n }\n else animationIndex.value = formatedAnimations.value.length\n inAnimation.value = false\n }\n else {\n throttleMassage('已经是第一页了')\n inAnimation.value = false\n }\n }\n const execNext = () => {\n if (formatedAnimations.value.length && animationIndex.value < formatedAnimations.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 inAnimation.value = false\n }\n else {\n throttleMassage('已经是最后一页了')\n closeAutoPlay()\n inAnimation.value = false\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\n if (key === KEYS.UP || key === KEYS.LEFT || key === KEYS.PAGEUP) execPrev()\n else if (\n key === KEYS.DOWN || \n key === KEYS.RIGHT ||\n key === KEYS.SPACE || \n key === KEYS.ENTER ||\n key === KEYS.PAGEDOWN\n ) execNext()\n }\n\n onMounted(() => document.addEventListener('keydown', keydownListener))\n onUnmounted(() => document.removeEventListener('keydown', keydownListener))\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 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 return {\n autoPlayTimer,\n autoPlay,\n closeAutoPlay,\n mousewheelListener,\n touchStartListener,\n touchEndListener,\n turnPrevSlide,\n turnNextSlide,\n turnSlideToIndex,\n turnSlideToId,\n execPrev,\n execNext,\n animationIndex,\n }\n}","import { onMounted, onUnmounted, Ref, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\n\nexport default (wrapRef?: Ref) => {\n const slidesStore = useSlidesStore()\n const { viewportRatio } = storeToRefs(slidesStore)\n\n const slideWidth = ref(0)\n const slideHeight = ref(0)\n\n // 计算和更新幻灯片内容的尺寸(按比例自适应屏幕)\n const setSlideContentSize = () => {\n const slideWrapRef = wrapRef?.value || document.body\n const winWidth = slideWrapRef.clientWidth\n const winHeight = slideWrapRef.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 onMounted(() => {\n setSlideContentSize()\n window.addEventListener('resize', setSlideContentSize)\n })\n onUnmounted(() => {\n window.removeEventListener('resize', setSlideContentSize)\n })\n\n return {\n slideWidth,\n slideHeight,\n }\n}","import { onMounted, onUnmounted, ref } from 'vue'\nimport { isFullscreen, exitFullscreen } from '@/utils/fullscreen'\nimport useScreening from '@/hooks/useScreening'\n\nexport default () => {\n const fullscreenState = ref(true)\n const escExit = ref(true)\n\n const { exitScreening } = useScreening()\n\n const handleFullscreenChange = () => {\n fullscreenState.value = isFullscreen()\n if (!fullscreenState.value && escExit.value) exitScreening()\n\n escExit.value = true\n }\n\n onMounted(() => {\n fullscreenState.value = isFullscreen()\n document.addEventListener('fullscreenchange', handleFullscreenChange)\n document.addEventListener('webkitfullscreenchange', handleFullscreenChange) // Safari 兼容\n })\n onUnmounted(() => {\n document.removeEventListener('fullscreenchange', handleFullscreenChange)\n document.removeEventListener('webkitfullscreenchange', handleFullscreenChange)\n })\n\n const manualExitFullscreen = () => {\n if (!fullscreenState.value) return\n escExit.value = false\n exitFullscreen()\n }\n\n return {\n fullscreenState,\n manualExitFullscreen,\n }\n}","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, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-01900375\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"screen-slide-list\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ScreenSlide = _resolveComponent(\"ScreenSlide\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\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 || slide.animations?.length)\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 manualExitFullscreen: _ctx.manualExitFullscreen\n }, null, 8, [\"slide\", \"scale\", \"animationIndex\", \"turnSlideToId\", \"manualExitFullscreen\"])\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 2))\n }), 128))\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 manualExitFullscreen: _ctx.manualExitFullscreen\n }, null, 8, [\"elementInfo\", \"elementIndex\", \"animationIndex\", \"turnSlideToId\", \"manualExitFullscreen\"]))\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-0b036cf9\"),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 }, 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=64f0abfc&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-0ef8b6c0\"),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 } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { PPTVideoElement } from '@/types/slides'\nimport { injectKeySlideId, injectKeySlideScale } from '@/types/injectKey'\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 = inject(injectKeySlideScale) || ref(1)\n const slideId = inject(injectKeySlideId) || 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=0ef8b6c0&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=0ef8b6c0&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-0ef8b6c0\"]])\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-1adba489\"),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 } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { PPTAudioElement } from '@/types/slides'\nimport { injectKeySlideId, injectKeySlideScale } from '@/types/injectKey'\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 = inject(injectKeySlideScale) || ref(1)\n const slideId = inject(injectKeySlideId) || 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=1adba489&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=1adba489&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-1adba489\"]])\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 required: true,\n },\n turnSlideToId: {\n type: Function as PropType<(id: string) => void>,\n required: true,\n },\n manualExitFullscreen: {\n type: Function as PropType<() => 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 { formatedAnimations, theme } = storeToRefs(useSlidesStore())\n\n // 判断元素是否需要等待执行入场动画:等待执行入场的元素需要先隐藏\n const needWaitAnimation = computed(() => {\n // 该元素在本页动画序列中的位置\n const elementIndexInAnimation = formatedAnimations.value.findIndex(item => {\n const elIds = item.animations.map(item => item.elId)\n return elIds.includes(props.elementInfo.id)\n })\n\n // 该元素未设置过动画\n if (elementIndexInAnimation === -1) return false\n\n // 若该元素已执行过动画,都无须隐藏\n // 具体来说:若已执行的最后一个动画为入场,显然无须隐藏;若已执行的最后一个动画为退场,由于保留了退场动画结束状态,也无需额外隐藏\n if (elementIndexInAnimation < props.animationIndex) return false\n\n // 若该元素未执行过动画,获取其将要执行的第一个动画\n // 若将要执行的第一个动画为入场,则需要隐藏,否则无须隐藏\n const firstAnimation = formatedAnimations.value[elementIndexInAnimation].animations.find(item => item.elId === props.elementInfo.id)\n if (firstAnimation?.type === 'in') return true\n return false\n })\n\n // 打开元素绑定的超链接\n const openLink = () => {\n const link = props.elementInfo.link\n if (!link) return\n\n if (link.type === 'web') {\n props.manualExitFullscreen()\n window.open(link.target)\n }\n else if (link.type === 'slide') {\n 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=0b036cf9&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=0b036cf9&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-0b036cf9\"]])\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 { injectKeySlideId } from '@/types/injectKey'\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 required: true,\n },\n turnSlideToId: {\n type: Function as PropType<(id: string) => void>,\n required: true,\n },\n manualExitFullscreen: {\n type: Function as PropType<() => 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(injectKeySlideId, slideId)\n\n return {\n backgroundStyle,\n VIEWPORT_SIZE,\n viewportRatio,\n }\n },\n})\n","import { render } from \"./ScreenSlide.vue?vue&type=template&id=19ab4349&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=19ab4349&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-19ab4349\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, PropType, provide } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { injectKeySlideScale } from '@/types/injectKey'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\n\nimport ScreenSlide from './ScreenSlide.vue'\n\nexport default defineComponent({\n name: 'screen-slide-list',\n components: {\n ScreenSlide,\n },\n props: {\n slideWidth: {\n type: Number,\n required: true,\n },\n slideHeight: {\n type: Number,\n required: true,\n },\n animationIndex: {\n type: Number,\n required: true,\n },\n turnSlideToId: {\n type: Function as PropType<(id: string) => void>,\n required: true,\n },\n manualExitFullscreen: {\n type: Function as PropType<() => void>,\n required: true,\n },\n },\n setup(props) {\n const { slides, slideIndex, currentSlide } = storeToRefs(useSlidesStore())\n\n const scale = computed(() => props.slideWidth / VIEWPORT_SIZE)\n provide(injectKeySlideScale, scale)\n\n return {\n slides,\n slideIndex,\n currentSlide,\n scale,\n }\n },\n})\n","import { render } from \"./ScreenSlideList.vue?vue&type=template&id=01900375&scoped=true&ts=true\"\nimport script from \"./ScreenSlideList.vue?vue&type=script&lang=ts\"\nexport * from \"./ScreenSlideList.vue?vue&type=script&lang=ts\"\n\nimport \"./ScreenSlideList.vue?vue&type=style&index=0&id=01900375&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-01900375\"]])\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-11e5b856\"),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.turnSlide(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 required: true,\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 const turnSlide = (index: number) => {\n props.turnSlideToIndex(index)\n close()\n }\n\n return {\n slides,\n slideIndex,\n slidesLoadLimit,\n turnSlide,\n close,\n }\n },\n})\n","import { render } from \"./SlideThumbnails.vue?vue&type=template&id=11e5b856&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=11e5b856&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-11e5b856\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3ca1d362\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"writing-board-tool\" }\nconst _hoisted_2 = { class: \"colors\" }\nconst _hoisted_3 = [\"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_IconHighLight = _resolveComponent(\"IconHighLight\")!\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 _createElementVNode(\"div\", {\n class: \"writing-board-wrap\",\n style: _normalizeStyle({\n width: _ctx.slideWidth + 'px',\n height: _ctx.slideHeight + 'px',\n })\n }, [\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 ], 4),\n _createElementVNode(\"div\", {\n class: \"tools\",\n style: _normalizeStyle(_ctx.position)\n }, [\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.changeModel('pen')))\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 === 'mark' }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.changeModel('mark')))\n }, [\n _createVNode(_component_IconHighLight, { 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[2] || (_cache[2] = ($event: any) => (_ctx.changeModel('eraser')))\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[3] || (_cache[3] = ($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[4] || (_cache[4] = ($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_2, [\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_3))\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[5] || (_cache[5] = ($event: any) => (_ctx.closeWritingBoard()))\n }, [\n _createVNode(_component_IconClose, { class: \"icon\" })\n ])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ], 4)\n ]))\n}","import { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9ac1670a\"),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 const _component_IconHighLight = _resolveComponent(\"IconHighLight\")!\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 style: _normalizeStyle({\n width: _ctx.canvasWidth + 'px',\n height: _ctx.canvasHeight + 'px',\n }),\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 onWheel: _cache[8] || (_cache[8] = $event => _ctx.mousewheelListener($event))\n }, null, 36),\n (_ctx.mouseInCanvas)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n (_ctx.model === 'eraser')\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\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 (_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 - _ctx.penSize * 6 + _ctx.penSize / 2 + 'px',\n color: _ctx.color,\n })\n }, [\n (_ctx.model === 'pen')\n ? (_openBlock(), _createBlock(_component_IconWrite, {\n key: 0,\n class: \"icon\",\n size: _ctx.penSize * 6\n }, null, 8, [\"size\"]))\n : _createCommentVNode(\"\", true)\n ], 4))\n : _createCommentVNode(\"\", true),\n (_ctx.model === 'mark')\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 2,\n class: \"pen\",\n style: _normalizeStyle({\n left: _ctx.mouse.x - _ctx.markSize / 2 + 'px',\n top: _ctx.mouse.y + 'px',\n color: _ctx.color,\n })\n }, [\n (_ctx.model === 'mark')\n ? (_openBlock(), _createBlock(_component_IconHighLight, {\n key: 0,\n class: \"icon\",\n size: _ctx.markSize * 1.5\n }, null, 8, [\"size\"]))\n : _createCommentVNode(\"\", true)\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 64))\n : _createCommentVNode(\"\", true)\n ], 512))\n}","\nimport { computed, defineComponent, onMounted, onUnmounted, PropType, ref, watch } from 'vue'\nimport { throttle } from 'lodash'\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' | 'mark'>,\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 const penSize = ref(6)\n const rubberSize = ref(80)\n const markSize = ref(24)\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 = ref({\n x: 0,\n y: 0,\n })\n \n // 鼠标是否处在画布范围内:处在范围内才会显示画笔或橡皮\n const mouseInCanvas = ref(false)\n\n // 监听更新canvas尺寸\n const canvasWidth = ref(0)\n const canvasHeight = ref(0)\n\n const widthScale = computed(() => canvasRef.value ? canvasWidth.value / canvasRef.value.width : 1)\n const heightScale = computed(() => canvasRef.value ? canvasHeight.value / canvasRef.value.height : 1)\n\n const updateCanvasSize = () => {\n if (!writingBoardRef.value) return\n canvasWidth.value = writingBoardRef.value.clientWidth\n canvasHeight.value = writingBoardRef.value.clientHeight\n }\n const resizeObserver = new ResizeObserver(updateCanvasSize)\n onMounted(() => {\n if (writingBoardRef.value) resizeObserver.observe(writingBoardRef.value)\n })\n onUnmounted(() => {\n if (writingBoardRef.value) resizeObserver.unobserve(writingBoardRef.value)\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 ctx.lineCap = 'round'\n ctx.lineJoin = 'round'\n }\n onMounted(initCanvas)\n\n // 切换画笔模式时,更新 canvas ctx 配置\n const updateCtx = () => {\n if (!ctx) return\n if (props.model === 'mark') {\n ctx.globalCompositeOperation = 'xor'\n ctx.globalAlpha = 0.5\n }\n else if (props.model === 'pen') {\n ctx.globalCompositeOperation = 'source-over'\n ctx.globalAlpha = 1\n }\n }\n watch(() => props.model, updateCtx)\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.value / 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.value\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 if (props.model === 'mark') draw(x, y, markSize.value)\n else erase(x, y)\n\n lastPos = { x, y }\n lastTime = new Date().getTime()\n }\n\n // 获取鼠标在canvas中的相对位置\n const getMouseOffsetPosition = (e: MouseEvent | TouchEvent) => {\n if (!canvasRef.value) return [0, 0]\n const event = e instanceof MouseEvent ? e : e.changedTouches[0]\n const canvasRect = canvasRef.value.getBoundingClientRect()\n const x = event.pageX - canvasRect.x\n const y = event.pageY - canvasRect.y\n return [x, y]\n }\n\n // 处理鼠标(触摸)事件\n // 准备开始绘制/擦除墨迹(落笔)\n const handleMousedown = (e: MouseEvent | TouchEvent) => {\n const [mouseX, mouseY] = getMouseOffsetPosition(e)\n const x = mouseX / widthScale.value\n const y = mouseY / heightScale.value\n\n isMouseDown = true\n lastPos = { x, y }\n lastTime = new Date().getTime()\n\n if (!(e instanceof MouseEvent)) {\n mouse.value = { x: mouseX, y: mouseY }\n mouseInCanvas.value = true\n }\n }\n\n // 开始绘制/擦除墨迹(移动)\n const handleMousemove = (e: MouseEvent | TouchEvent) => {\n const [mouseX, mouseY] = getMouseOffsetPosition(e)\n const x = mouseX / widthScale.value\n const y = mouseY / heightScale.value\n\n mouse.value = { x: mouseX, y: mouseY }\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 // 获取 DataURL\n const getImageDataURL = () => {\n return canvasRef.value?.toDataURL()\n }\n \n // 设置 DataURL(绘制图片到 canvas)\n const setImageDataURL = (imageDataURL: string) => {\n const img = new Image()\n img.src = imageDataURL\n img.onload = () => {\n if (!ctx) return\n ctx.drawImage(img, 0, 0)\n }\n }\n\n // 滚动鼠标滚轮,调整笔触大小\n const mousewheelListener = throttle(function(e: WheelEvent) {\n if (props.model === 'eraser') {\n if (e.deltaY < 0 && rubberSize.value < 200) rubberSize.value += 20\n else if (e.deltaY > 0 && rubberSize.value > 20) rubberSize.value -= 20\n }\n if (props.model === 'pen') {\n if (e.deltaY < 0 && penSize.value < 10) penSize.value += 2\n else if (e.deltaY > 0 && penSize.value > 4) penSize.value -= 2\n }\n if (props.model === 'mark') {\n if (e.deltaY < 0 && markSize.value < 40) markSize.value += 4\n else if (e.deltaY > 0 && markSize.value > 16) markSize.value -= 4\n }\n }, 300, { leading: true, trailing: false })\n\n return {\n mouse,\n mouseInCanvas,\n penSize,\n rubberSize,\n markSize,\n writingBoardRef,\n canvasRef,\n canvasWidth,\n canvasHeight,\n handleMousedown,\n handleMousemove,\n handleMouseup,\n clearCanvas,\n getImageDataURL,\n setImageDataURL,\n mousewheelListener,\n }\n },\n})\n","import { render } from \"./WritingBoard.vue?vue&type=template&id=9ac1670a&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=9ac1670a&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-9ac1670a\"]])\n\nexport default __exports__","\nimport { defineComponent, PropType, ref, StyleValue } from 'vue'\nimport WritingBoard from '@/components/WritingBoard.vue'\n\nconst writingBoardColors = ['#000000', '#ffffff', '#1e497b', '#4e81bb', '#e2534d', '#9aba60', '#8165a0', '#47acc5', '#f9974c', '#ffff3a']\n\ntype WritingBoardModel = 'pen' | 'mark' | 'eraser'\n\nexport default defineComponent({\n name: 'writing-board-tool',\n emits: ['close'],\n components: {\n WritingBoard,\n },\n props: {\n slideWidth: {\n type: Number,\n required: true,\n },\n slideHeight: {\n type: Number,\n required: true,\n },\n position: {\n type: Object as PropType,\n default: () => ({\n right: '5px',\n bottom: '5px',\n })\n },\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 const changeModel = (model: WritingBoardModel) => {\n writingBoardModel.value = model\n }\n\n // 清除画布上的墨迹\n const clearCanvas = () => {\n writingBoardRef.value.clearCanvas()\n }\n\n // 修改画笔颜色,如果当前处于橡皮状态则先切换到画笔状态\n const changeColor = (color: string) => {\n if (writingBoardModel.value === 'eraser') 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 changeModel,\n clearCanvas,\n changeColor,\n closeWritingBoard,\n }\n },\n})\n","import { render } from \"./WritingBoardTool.vue?vue&type=template&id=3ca1d362&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=3ca1d362&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-3ca1d362\"]])\n\nexport default __exports__","\nimport { defineComponent, PropType, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport { enterFullscreen } from '@/utils/fullscreen'\nimport useScreening from '@/hooks/useScreening'\nimport useExecPlay from './hooks/useExecPlay'\nimport useSlideSize from './hooks/useSlideSize'\nimport useFullscreen from './hooks/useFullscreen'\n\nimport ScreenSlideList from './ScreenSlideList.vue'\nimport SlideThumbnails from './SlideThumbnails.vue'\nimport WritingBoardTool from './WritingBoardTool.vue'\n\nexport default defineComponent({\n name: 'screen',\n components: {\n ScreenSlideList,\n SlideThumbnails,\n WritingBoardTool,\n },\n props: {\n changeViewMode: {\n type: Function as PropType<(mode: 'base' | 'presenter') => void>,\n required: true,\n },\n },\n setup(props) {\n const { slides, slideIndex } = storeToRefs(useSlidesStore())\n\n const {\n autoPlayTimer,\n autoPlay,\n closeAutoPlay,\n mousewheelListener,\n touchStartListener,\n touchEndListener,\n turnPrevSlide,\n turnNextSlide,\n turnSlideToIndex,\n turnSlideToId,\n execPrev,\n execNext,\n animationIndex,\n } = useExecPlay()\n\n const { slideWidth, slideHeight } = useSlideSize()\n const { exitScreening } = useScreening()\n const { fullscreenState, manualExitFullscreen } = useFullscreen()\n\n const rightToolsVisible = ref(false)\n const writingBoardToolVisible = ref(false)\n const slideThumbnailModelVisible = ref(false)\n const laserPen = ref(false)\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 handler: () => rightToolsVisible.value = true,\n },\n {\n text: '查看所有幻灯片',\n handler: () => slideThumbnailModelVisible.value = true,\n },\n {\n text: '画笔工具',\n handler: () => writingBoardToolVisible.value = true,\n },\n {\n text: '演讲者视图',\n handler: () => props.changeViewMode('presenter'),\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 return {\n slides,\n slideIndex,\n slideWidth,\n slideHeight,\n mousewheelListener,\n touchStartListener,\n touchEndListener,\n animationIndex,\n contextmenus,\n execPrev,\n execNext,\n turnSlideToIndex,\n turnSlideToId,\n slideThumbnailModelVisible,\n writingBoardToolVisible,\n rightToolsVisible,\n fullscreenState,\n exitScreening,\n enterFullscreen,\n manualExitFullscreen,\n laserPen,\n }\n },\n})\n","import { render } from \"./BaseView.vue?vue&type=template&id=54670d0c&scoped=true&ts=true\"\nimport script from \"./BaseView.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseView.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseView.vue?vue&type=style&index=0&id=54670d0c&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-54670d0c\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, resolveDirective as _resolveDirective, withDirectives as _withDirectives, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, withModifiers as _withModifiers, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-ce50b150\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"presenter-view\" }\nconst _hoisted_2 = { class: \"toolbar\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"普通视图\", -1))\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"画笔\", -1))\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"激光笔\", -1))\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"结束放映\", -1))\nconst _hoisted_7 = { class: \"content\" }\nconst _hoisted_8 = [\"onClick\"]\nconst _hoisted_9 = { class: \"remark\" }\nconst _hoisted_10 = { class: \"header\" }\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"演讲者备注\", -1))\nconst _hoisted_12 = [\"innerHTML\"]\nconst _hoisted_13 = { class: \"remark-scale\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconListView = _resolveComponent(\"IconListView\")!\n const _component_IconWrite = _resolveComponent(\"IconWrite\")!\n const _component_IconMagic = _resolveComponent(\"IconMagic\")!\n const _component_IconOffScreenOne = _resolveComponent(\"IconOffScreenOne\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_IconPower = _resolveComponent(\"IconPower\")!\n const _component_ScreenSlideList = _resolveComponent(\"ScreenSlideList\")!\n const _component_WritingBoardTool = _resolveComponent(\"WritingBoardTool\")!\n const _component_ThumbnailSlide = _resolveComponent(\"ThumbnailSlide\")!\n const _component_IconMinus = _resolveComponent(\"IconMinus\")!\n const _component_IconPlus = _resolveComponent(\"IconPlus\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: \"tool-btn\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.changeViewMode('base')))\n }, [\n _createVNode(_component_IconListView, { class: \"tool-icon\" }),\n _hoisted_3\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"tool-btn\", { 'active': _ctx.writingBoardToolVisible }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.writingBoardToolVisible = !_ctx.writingBoardToolVisible))\n }, [\n _createVNode(_component_IconWrite, { class: \"tool-icon\" }),\n _hoisted_4\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"tool-btn\", { 'active': _ctx.laserPen }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.laserPen = !_ctx.laserPen))\n }, [\n _createVNode(_component_IconMagic, { class: \"tool-icon\" }),\n _hoisted_5\n ], 2),\n _createElementVNode(\"div\", {\n class: \"tool-btn\",\n onClick: _cache[3] || (_cache[3] = () => _ctx.fullscreenState ? _ctx.manualExitFullscreen() : _ctx.enterFullscreen())\n }, [\n (_ctx.fullscreenState)\n ? (_openBlock(), _createBlock(_component_IconOffScreenOne, {\n key: 0,\n class: \"tool-icon\"\n }))\n : (_openBlock(), _createBlock(_component_IconOffScreenOne, {\n key: 1,\n class: \"tool-icon\"\n })),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.fullscreenState ? '退出全屏' : '全屏'), 1)\n ]),\n _createVNode(_component_Divider, { class: \"divider\" }),\n _createElementVNode(\"div\", {\n class: \"tool-btn\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.exitScreening()))\n }, [\n _createVNode(_component_IconPower, { class: \"tool-icon\" }),\n _hoisted_6\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"slide-list-wrap\", { 'laser-pen': _ctx.laserPen }]),\n ref: \"slideListWrapRef\"\n }, [\n _withDirectives(_createVNode(_component_ScreenSlideList, {\n slideWidth: _ctx.slideWidth,\n slideHeight: _ctx.slideHeight,\n animationIndex: _ctx.animationIndex,\n turnSlideToId: _ctx.turnSlideToId,\n manualExitFullscreen: _ctx.manualExitFullscreen,\n onWheel: _cache[5] || (_cache[5] = $event => _ctx.mousewheelListener($event)),\n onTouchstart: _cache[6] || (_cache[6] = $event => _ctx.touchStartListener($event)),\n onTouchend: _cache[7] || (_cache[7] = $event => _ctx.touchEndListener($event))\n }, null, 8, [\"slideWidth\", \"slideHeight\", \"animationIndex\", \"turnSlideToId\", \"manualExitFullscreen\"]), [\n [_directive_contextmenu, _ctx.contextmenus]\n ]),\n (_ctx.writingBoardToolVisible)\n ? (_openBlock(), _createBlock(_component_WritingBoardTool, {\n key: 0,\n slideWidth: _ctx.slideWidth,\n slideHeight: _ctx.slideHeight,\n position: {\n left: '75px',\n top: '5px',\n },\n onClose: _cache[8] || (_cache[8] = ($event: any) => (_ctx.writingBoardToolVisible = false))\n }, null, 8, [\"slideWidth\", \"slideHeight\"]))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"div\", {\n class: \"thumbnails\",\n ref: \"thumbnailsRef\",\n onWheel: _cache[9] || (_cache[9] = _withModifiers($event => _ctx.handleMousewheelThumbnails($event), [\"prevent\"]))\n }, [\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: 120 / _ctx.viewportRatio,\n visible: index < _ctx.slidesLoadLimit\n }, null, 8, [\"slide\", \"size\", \"visible\"])\n ], 10, _hoisted_8))\n }), 128))\n ], 544)\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createElementVNode(\"span\", null, \"P \" + _toDisplayString(_ctx.slideIndex + 1) + \" / \" + _toDisplayString(_ctx.slides.length), 1)\n ]),\n _createElementVNode(\"div\", {\n class: \"remark-content\",\n style: _normalizeStyle({ fontSize: _ctx.remarkFontSize + 'px' }),\n innerHTML: _ctx.currentSlideRemark\n }, null, 12, _hoisted_12),\n _createElementVNode(\"div\", _hoisted_13, [\n _createElementVNode(\"div\", {\n class: _normalizeClass(['scale-btn', { 'disable': _ctx.remarkFontSize === 12 }]),\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.setRemarkFontSize(_ctx.remarkFontSize - 2)))\n }, [\n _createVNode(_component_IconMinus)\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass(['scale-btn', { 'disable': _ctx.remarkFontSize === 40 }]),\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_ctx.setRemarkFontSize(_ctx.remarkFontSize + 2)))\n }, [\n _createVNode(_component_IconPlus)\n ], 2)\n ])\n ])\n ]))\n}","\nimport { computed, defineComponent, nextTick, ref, watch, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport { enterFullscreen } from '@/utils/fullscreen'\nimport { parseText2Paragraphs } from '@/utils/textParser'\nimport useScreening from '@/hooks/useScreening'\nimport useLoadSlides from '@/hooks/useLoadSlides'\nimport useExecPlay from './hooks/useExecPlay'\nimport useSlideSize from './hooks/useSlideSize'\nimport useFullscreen from './hooks/useFullscreen'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\nimport ScreenSlideList from './ScreenSlideList.vue'\nimport WritingBoardTool from './WritingBoardTool.vue'\n\nexport default defineComponent({\n name: 'presenter-view',\n components: {\n ScreenSlideList,\n ThumbnailSlide,\n WritingBoardTool,\n },\n props: {\n changeViewMode: {\n type: Function as PropType<(mode: 'base' | 'presenter') => void>,\n required: true,\n },\n },\n setup(props) {\n const { slides, slideIndex, viewportRatio, currentSlide } = storeToRefs(useSlidesStore())\n\n const slideListWrapRef = ref()\n const thumbnailsRef = ref()\n const writingBoardToolVisible = ref(false)\n const laserPen = ref(false)\n\n const {\n mousewheelListener,\n touchStartListener,\n touchEndListener,\n turnPrevSlide,\n turnNextSlide,\n turnSlideToIndex,\n turnSlideToId,\n animationIndex,\n } = useExecPlay()\n\n const { slideWidth, slideHeight } = useSlideSize(slideListWrapRef)\n const { exitScreening } = useScreening()\n const { slidesLoadLimit } = useLoadSlides()\n const { fullscreenState, manualExitFullscreen } = useFullscreen()\n\n const remarkFontSize = ref(16)\n const currentSlideRemark = computed(() => {\n return parseText2Paragraphs(currentSlide.value.remark || '无备注')\n })\n\n const handleMousewheelThumbnails = (e: WheelEvent) => {\n if (!thumbnailsRef.value) return\n thumbnailsRef.value.scrollBy(e.deltaY, 0)\n }\n\n const setRemarkFontSize = (fontSize: number) => {\n if (fontSize < 12 || fontSize > 40) return\n remarkFontSize.value = fontSize\n }\n\n watch(slideIndex, () => {\n nextTick(() => {\n if (!thumbnailsRef.value) return\n\n const activeThumbnailRef: HTMLElement | null = thumbnailsRef.value.querySelector('.thumbnail.active')\n if (!activeThumbnailRef) return\n\n const width = thumbnailsRef.value.offsetWidth\n const offsetLeft = activeThumbnailRef.offsetLeft\n thumbnailsRef.value.scrollTo({ left: offsetLeft - width / 2, behavior: 'smooth' })\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 handler: () => writingBoardToolVisible.value = true,\n },\n {\n text: '普通视图',\n handler: () => props.changeViewMode('base'),\n },\n { divider: true },\n {\n text: '结束放映',\n subText: 'ESC',\n handler: exitScreening,\n },\n ]\n }\n\n return {\n slides,\n slideIndex,\n viewportRatio,\n remarkFontSize,\n currentSlideRemark,\n setRemarkFontSize,\n slideListWrapRef,\n thumbnailsRef,\n slideWidth,\n slideHeight,\n animationIndex,\n turnSlideToId,\n mousewheelListener,\n touchStartListener,\n touchEndListener,\n turnSlideToIndex,\n contextmenus,\n slidesLoadLimit,\n handleMousewheelThumbnails,\n exitScreening,\n fullscreenState,\n enterFullscreen,\n manualExitFullscreen,\n writingBoardToolVisible,\n laserPen,\n }\n },\n})\n","import { render } from \"./PresenterView.vue?vue&type=template&id=ce50b150&scoped=true&ts=true\"\nimport script from \"./PresenterView.vue?vue&type=script&lang=ts\"\nexport * from \"./PresenterView.vue?vue&type=script&lang=ts\"\n\nimport \"./PresenterView.vue?vue&type=style&index=0&id=ce50b150&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-ce50b150\"]])\n\nexport default __exports__","\nimport { defineComponent, onMounted, onUnmounted, ref } from 'vue'\nimport { KEYS } from '@/configs/hotkey'\nimport useScreening from '@/hooks/useScreening'\n\nimport BaseView from './BaseView.vue'\nimport PresenterView from './PresenterView.vue'\n\nexport default defineComponent({\n name: 'pptist-screen',\n components: {\n BaseView,\n PresenterView,\n },\n setup() {\n const viewMode = ref<'base' | 'presenter'>('base')\n\n const changeViewMode = (mode: 'base' | 'presenter') => {\n viewMode.value = mode\n }\n\n const { exitScreening } = useScreening()\n\n // 快捷键退出放映\n const keydownListener = (e: KeyboardEvent) => {\n const key = e.key.toUpperCase()\n if (key === KEYS.ESC) exitScreening()\n }\n\n onMounted(() => document.addEventListener('keydown', keydownListener))\n onUnmounted(() => document.removeEventListener('keydown', keydownListener))\n\n return {\n viewMode,\n changeViewMode,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=18f794c8&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=18f794c8&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-18f794c8\"]])\n\nexport default __exports__","import { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-efaecbfe\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mobile\" }\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(), _createBlock(_resolveDynamicComponent(_ctx.currentComponent), { changeMode: _ctx.changeMode }, null, 8, [\"changeMode\"]))\n ]))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f9ea6e88\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mobile-editor\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Header = _resolveComponent(\"Header\")!\n const _component_AlignmentLine = _resolveComponent(\"AlignmentLine\")!\n const _component_MobileOperate = _resolveComponent(\"MobileOperate\")!\n const _component_MobileEditableElement = _resolveComponent(\"MobileEditableElement\")!\n const _component_SlideToolbar = _resolveComponent(\"SlideToolbar\")!\n const _component_ElementToolbar = _resolveComponent(\"ElementToolbar\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Header, { changeMode: _ctx.changeMode }, null, 8, [\"changeMode\"]),\n _createElementVNode(\"div\", {\n class: \"content\",\n ref: \"contentRef\",\n onTouchstart: _cache[0] || (_cache[0] = ($event: any) => (_ctx.handleClickBlankArea()))\n }, [\n _createElementVNode(\"div\", {\n class: \"viewport-wrapper\",\n style: _normalizeStyle(_ctx.viewportStyles)\n }, [\n _createElementVNode(\"div\", {\n class: \"background\",\n style: _normalizeStyle(_ctx.backgroundStyle)\n }, null, 4),\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 canvasScale: _ctx.canvasScale\n }, null, 8, [\"type\", \"axis\", \"length\", \"canvasScale\"]))\n }), 128)),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.elementList, (element) => {\n return (_openBlock(), _createElementBlock(_Fragment, {\n key: element.id\n }, [\n (element.type !== 'line')\n ? (_openBlock(), _createBlock(_component_MobileOperate, {\n key: 0,\n elementInfo: element,\n isSelected: _ctx.activeElementIdList.includes(element.id),\n canvasScale: _ctx.canvasScale,\n scaleElement: _ctx.scaleElement\n }, null, 8, [\"elementInfo\", \"isSelected\", \"canvasScale\", \"scaleElement\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n }), 128)),\n _createElementVNode(\"div\", {\n class: \"viewport\",\n style: _normalizeStyle({ transform: `scale(${_ctx.canvasScale})` })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.elementList, (element, index) => {\n return (_openBlock(), _createBlock(_component_MobileEditableElement, {\n key: element.id,\n elementInfo: element,\n elementIndex: index + 1,\n selectElement: _ctx.selectElement\n }, null, 8, [\"elementInfo\", \"elementIndex\", \"selectElement\"]))\n }), 128))\n ], 4)\n ], 4)\n ], 544),\n _createVNode(_component_SlideToolbar),\n (_ctx.handleElement)\n ? (_openBlock(), _createBlock(_component_ElementToolbar, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ]))\n}","import { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, 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: \"mobile-editable-element\",\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: () => null\n }, null, 8, [\"elementInfo\", \"selectElement\", \"contextmenus\"]))\n ], 4))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { ElementTypes, PPTElement } from '@/types/slides'\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: 'mobile-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 selectElement: {\n type: Function as PropType<(e: TouchEvent, element: PPTElement, canMove?: boolean) => 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 return {\n currentElementComponent,\n }\n },\n})\n","import { render } from \"./MobileEditableElement.vue?vue&type=template&id=335b7454&ts=true\"\nimport script from \"./MobileEditableElement.vue?vue&type=script&lang=ts\"\nexport * from \"./MobileEditableElement.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\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: \"mobile-operate\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top * _ctx.canvasScale + 'px',\n left: _ctx.elementInfo.left * _ctx.canvasScale + 'px',\n transform: `rotate(${_ctx.rotate}deg)`,\n transformOrigin: `${_ctx.elementInfo.width * _ctx.canvasScale / 2}px ${_ctx.elementInfo.height * _ctx.canvasScale / 2}px`,\n })\n }, [\n (_ctx.isSelected)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\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 (_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 onTouchstart: _withModifiers($event => _ctx.scaleElement($event, _ctx.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onTouchstart\"]))\n }), 128))\n ], 64))\n : _createCommentVNode(\"\", true)\n ], 4))\n}","\nimport { defineComponent, PropType, computed } from 'vue'\nimport { PPTElement, PPTLineElement } from '@/types/slides'\nimport useCommonOperate from '@/views/Editor/Canvas/hooks/useCommonOperate'\nimport { OperateResizeHandlers } from '@/types/edit'\n\nimport BorderLine from '@/views/Editor/Canvas/Operate/BorderLine.vue'\nimport ResizeHandler from '@/views/Editor/Canvas/Operate/ResizeHandler.vue'\n\nexport default defineComponent({\n name: 'mobile-operate',\n components: {\n BorderLine,\n ResizeHandler,\n },\n props: {\n elementInfo: {\n type: Object as PropType>,\n required: true,\n },\n isSelected: {\n type: Boolean,\n required: true,\n },\n canvasScale: {\n type: Number,\n required: true,\n },\n scaleElement: {\n type: Function as PropType<(e: MouseEvent, element: Exclude, command: OperateResizeHandlers) => void>,\n required: true,\n },\n },\n setup(props) {\n const rotate = computed(() => 'rotate' in props.elementInfo ? props.elementInfo.rotate : 0)\n\n const scaleWidth = computed(() => props.elementInfo.width * props.canvasScale)\n const scaleHeight = computed(() => props.elementInfo.height * props.canvasScale)\n const {\n borderLines,\n resizeHandlers,\n textElementResizeHandlers,\n } = useCommonOperate(scaleWidth, scaleHeight)\n\n return {\n rotate,\n borderLines,\n resizeHandlers: props.elementInfo.type === 'text' || props.elementInfo.type === 'table' ? textElementResizeHandlers : resizeHandlers,\n }\n },\n})\n","import { render } from \"./MobileOperate.vue?vue&type=template&id=10f40a30&scoped=true&ts=true\"\nimport script from \"./MobileOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./MobileOperate.vue?vue&type=script&lang=ts\"\n\nimport \"./MobileOperate.vue?vue&type=style&index=0&id=10f40a30&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-10f40a30\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, 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-70590190\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"slide-toolbar\" }\nconst _hoisted_2 = { class: \"remark\" }\nconst _hoisted_3 = [\"value\"]\nconst _hoisted_4 = { class: \"toolbar\" }\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\" 新幻灯片\")\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\" 复制\")\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\" 删除\")\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\" 文字\")\nconst _hoisted_9 = /*#__PURE__*/_createTextVNode(\"图片 \")\nconst _hoisted_10 = /*#__PURE__*/_createTextVNode(\" 矩形\")\nconst _hoisted_11 = /*#__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_Button = _resolveComponent(\"Button\")!\n const _component_IconCopy = _resolveComponent(\"IconCopy\")!\n const _component_IconDelete = _resolveComponent(\"IconDelete\")!\n const _component_ButtonGroup = _resolveComponent(\"ButtonGroup\")!\n const _component_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_IconPicture = _resolveComponent(\"IconPicture\")!\n const _component_FileInput = _resolveComponent(\"FileInput\")!\n const _component_IconSquare = _resolveComponent(\"IconSquare\")!\n const _component_IconRound = _resolveComponent(\"IconRound\")!\n const _component_MobileThumbnails = _resolveComponent(\"MobileThumbnails\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"textarea\", {\n value: _ctx.remark,\n placeholder: \"点击输入演讲者备注\",\n onInput: _cache[0] || (_cache[0] = $event => _ctx.handleInputMark($event))\n }, null, 40, _hoisted_3)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.createSlide()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconPlus, { class: \"icon\" }),\n _hoisted_5\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.copyAndPasteSlide()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconCopy, { class: \"icon\" }),\n _hoisted_6\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.deleteSlide()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconDelete, { class: \"icon\" }),\n _hoisted_7\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[4] || (_cache[4] = ($event: any) => (_ctx.insertTextElement()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFontSize, { class: \"icon\" }),\n _hoisted_8\n ]),\n _: 1\n }),\n _createVNode(_component_Button, { style: {\"flex\":\"1\"} }, {\n default: _withCtx(() => [\n _createVNode(_component_FileInput, {\n onChange: _cache[5] || (_cache[5] = files => _ctx.insertImageElement(files))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconPicture, { class: \"icon\" }),\n _hoisted_9\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.insertShapeElement('square')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconSquare, { class: \"icon\" }),\n _hoisted_10\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.insertShapeElement('round')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconRound, { class: \"icon\" }),\n _hoisted_11\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _createVNode(_component_MobileThumbnails)\n ]))\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0b484044\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mobile-thumbnails\" }\nconst _hoisted_2 = [\"onClick\"]\nconst _hoisted_3 = { class: \"label\" }\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.slides, (slide, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"thumbnail-item\", { 'active': _ctx.slideIndex === index }]),\n key: slide.id,\n onClick: ($event: any) => (_ctx.changeSlideIndex(index))\n }, [\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(index + 1), 1),\n _createVNode(_component_ThumbnailSlide, {\n class: \"thumbnail\",\n slide: slide,\n size: 120,\n visible: index < _ctx.slidesLoadLimit\n }, null, 8, [\"slide\", \"visible\"])\n ], 10, _hoisted_2))\n }), 128))\n ]))\n}","\nimport { defineComponent } 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: 'mobile-thumbnails',\n components: {\n ThumbnailSlide,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { slides, slideIndex } = storeToRefs(slidesStore)\n\n const { slidesLoadLimit } = useLoadSlides()\n const changeSlideIndex = (index: number) => {\n slidesStore.updateSlideIndex(index)\n }\n\n return {\n slides,\n slideIndex,\n slidesLoadLimit,\n changeSlideIndex,\n }\n },\n})\n","import { render } from \"./MobileThumbnails.vue?vue&type=template&id=0b484044&scoped=true&ts=true\"\nimport script from \"./MobileThumbnails.vue?vue&type=script&lang=ts\"\nexport * from \"./MobileThumbnails.vue?vue&type=script&lang=ts\"\n\nimport \"./MobileThumbnails.vue?vue&type=style&index=0&id=0b484044&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-0b484044\"]])\n\nexport default __exports__","\nimport { computed, defineComponent } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useSlideHandler from '@/hooks/useSlideHandler'\nimport useCreateElement from '@/hooks/useCreateElement'\nimport { getImageDataURL } from '@/utils/image'\nimport { ShapePoolItem } from '@/configs/shapes'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\n\nimport MobileThumbnails from '../MobileThumbnails.vue'\n\nexport default defineComponent({\n name: 'slide-toolbar',\n components: {\n MobileThumbnails,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { viewportRatio, currentSlide } = storeToRefs(slidesStore)\n\n const { createSlide, copyAndPasteSlide, deleteSlide, } = useSlideHandler()\n const { createTextElement, createImageElement, createShapeElement } = useCreateElement()\n\n const insertTextElement = () => {\n const width = 400\n const height = 56\n\n createTextElement({\n left: (VIEWPORT_SIZE - width) / 2,\n top: (VIEWPORT_SIZE * viewportRatio.value - height) / 2,\n width,\n height,\n }, '

新添加文本

')\n }\n\n const insertImageElement = (files: File[]) => {\n if (!files || !files[0]) return\n getImageDataURL(files[0]).then(dataURL => createImageElement(dataURL))\n }\n\n const insertShapeElement = (type: 'square' | 'round') => {\n const square: ShapePoolItem = {\n viewBox: [200, 200],\n path: 'M 0 0 L 200 0 L 200 200 L 0 200 Z',\n }\n const round: ShapePoolItem = {\n viewBox: [200, 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 const shape = { square, round }\n\n const size = 200\n\n createShapeElement({\n left: (VIEWPORT_SIZE - size) / 2,\n top: (VIEWPORT_SIZE * viewportRatio.value - size) / 2,\n width: size,\n height: size,\n }, shape[type])\n }\n\n const remark = computed(() => currentSlide.value?.remark || '')\n\n const handleInputMark = (e: Event) => {\n const value = (e.target as HTMLTextAreaElement).value\n slidesStore.updateSlide({ remark: value })\n }\n\n return {\n remark,\n createSlide,\n copyAndPasteSlide,\n deleteSlide,\n insertTextElement,\n insertImageElement,\n insertShapeElement,\n handleInputMark,\n }\n },\n})\n","import { render } from \"./SlideToolbar.vue?vue&type=template&id=70590190&scoped=true&ts=true\"\nimport script from \"./SlideToolbar.vue?vue&type=script&lang=ts\"\nexport * from \"./SlideToolbar.vue?vue&type=script&lang=ts\"\n\nimport \"./SlideToolbar.vue?vue&type=style&index=0&id=70590190&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-70590190\"]])\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, withCtx as _withCtx, createTextVNode as _createTextVNode, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-332b9382\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-toolbar\" }\nconst _hoisted_2 = { class: \"tabs\" }\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = { class: \"content\" }\nconst _hoisted_5 = {\n key: 0,\n class: \"style\"\n}\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\"+\")\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"-\")\nconst _hoisted_8 = { class: \"row-block\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"文字颜色:\", -1))\nconst _hoisted_10 = { class: \"colors\" }\nconst _hoisted_11 = [\"onClick\"]\nconst _hoisted_12 = { class: \"row-block\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"填充色:\", -1))\nconst _hoisted_14 = { class: \"colors\" }\nconst _hoisted_15 = [\"onClick\"]\nconst _hoisted_16 = {\n key: 1,\n class: \"common\"\n}\nconst _hoisted_17 = /*#__PURE__*/_createTextVNode(\" 复制\")\nconst _hoisted_18 = /*#__PURE__*/_createTextVNode(\" 删除\")\nconst _hoisted_19 = /*#__PURE__*/_createTextVNode(\" 置顶\")\nconst _hoisted_20 = /*#__PURE__*/_createTextVNode(\" 置底\")\nconst _hoisted_21 = /*#__PURE__*/_createTextVNode(\" 上移\")\nconst _hoisted_22 = /*#__PURE__*/_createTextVNode(\" 下移\")\nconst _hoisted_23 = /*#__PURE__*/_createTextVNode(\" 左对齐\")\nconst _hoisted_24 = /*#__PURE__*/_createTextVNode(\" 水平居中\")\nconst _hoisted_25 = /*#__PURE__*/_createTextVNode(\" 右对齐\")\nconst _hoisted_26 = /*#__PURE__*/_createTextVNode(\" 上对齐\")\nconst _hoisted_27 = /*#__PURE__*/_createTextVNode(\" 垂直居中\")\nconst _hoisted_28 = /*#__PURE__*/_createTextVNode(\" 下对齐\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\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_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_ButtonGroup = _resolveComponent(\"ButtonGroup\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\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_IconCopy = _resolveComponent(\"IconCopy\")!\n const _component_IconDelete = _resolveComponent(\"IconDelete\")!\n const _component_IconSendToBack = _resolveComponent(\"IconSendToBack\")!\n const _component_IconBringToFrontOne = _resolveComponent(\"IconBringToFrontOne\")!\n const _component_IconBringToFront = _resolveComponent(\"IconBringToFront\")!\n const _component_IconSentToBack = _resolveComponent(\"IconSentToBack\")!\n const _component_IconAlignLeft = _resolveComponent(\"IconAlignLeft\")!\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\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.tabs, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': _ctx.activeTab === item.key }]),\n key: item.key,\n onClick: ($event: any) => (_ctx.activeTab = item.key)\n }, _toDisplayString(item.label), 11, _hoisted_3))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (_ctx.activeTab === 'style')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createVNode(_component_CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.bold,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.emitRichTextCommand('bold')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextBold)\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.em,\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.emitRichTextCommand('em')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextItalic)\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.underline,\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.emitRichTextCommand('underline')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextUnderline)\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.strikethrough,\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.emitRichTextCommand('strikethrough')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconStrikethrough)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"2\"},\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.emitRichTextCommand('fontsize-add')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFontSize),\n _hoisted_6\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"2\"},\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.emitRichTextCommand('fontsize-reduce')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFontSize),\n _hoisted_7\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_Divider, { style: {\"margin\":\"20px 0\"} }),\n _createVNode(_component_RadioGroup, {\n class: \"row\",\n \"button-style\": \"solid\",\n value: _ctx.richTextAttrs.align,\n onChange: _cache[6] || (_cache[6] = e => _ctx.emitRichTextCommand('align', e.target.value))\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 _createVNode(_component_RadioButton, {\n value: \"center\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextCenter)\n ]),\n _: 1\n }),\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, [\"value\"]),\n _createVNode(_component_Divider, { style: {\"margin\":\"20px 0\"} }),\n _createElementVNode(\"div\", _hoisted_8, [\n _hoisted_9,\n _createElementVNode(\"div\", _hoisted_10, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.colors, (color) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"color\",\n key: color,\n onClick: ($event: any) => (_ctx.updateFontColor(color))\n }, [\n _createElementVNode(\"div\", {\n class: \"color-block\",\n style: _normalizeStyle({ backgroundColor: color })\n }, null, 4)\n ], 8, _hoisted_11))\n }), 128))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _hoisted_13,\n _createElementVNode(\"div\", _hoisted_14, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.colors, (color) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"color\",\n key: color,\n onClick: ($event: any) => (_ctx.updateFill(color))\n }, [\n _createElementVNode(\"div\", {\n class: \"color-block\",\n style: _normalizeStyle({ backgroundColor: color })\n }, null, 4)\n ], 8, _hoisted_15))\n }), 128))\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.activeTab === 'common')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.copyElement()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconCopy, { class: \"icon\" }),\n _hoisted_17\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.deleteElement()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconDelete, { class: \"icon\" }),\n _hoisted_18\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_Divider, { style: {\"margin\":\"20px 0\"} }),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.orderElement(_ctx.handleElement, _ctx.ElementOrderCommands.TOP)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconSendToBack, { class: \"icon\" }),\n _hoisted_19\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.orderElement(_ctx.handleElement, _ctx.ElementOrderCommands.BOTTOM)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconBringToFrontOne, { class: \"icon\" }),\n _hoisted_20\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_ctx.orderElement(_ctx.handleElement, _ctx.ElementOrderCommands.UP)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconBringToFront, { class: \"icon\" }),\n _hoisted_21\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[12] || (_cache[12] = ($event: any) => (_ctx.orderElement(_ctx.handleElement, _ctx.ElementOrderCommands.DOWN)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconSentToBack, { class: \"icon\" }),\n _hoisted_22\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_Divider, { style: {\"margin\":\"20px 0\"} }),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[13] || (_cache[13] = ($event: any) => (_ctx.alignElementToCanvas(_ctx.ElementAlignCommands.LEFT)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignLeft, { class: \"icon\" }),\n _hoisted_23\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[14] || (_cache[14] = ($event: any) => (_ctx.alignElementToCanvas(_ctx.ElementAlignCommands.HORIZONTAL)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignVertically, { class: \"icon\" }),\n _hoisted_24\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[15] || (_cache[15] = ($event: any) => (_ctx.alignElementToCanvas(_ctx.ElementAlignCommands.RIGHT)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignRight, { class: \"icon\" }),\n _hoisted_25\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[16] || (_cache[16] = ($event: any) => (_ctx.alignElementToCanvas(_ctx.ElementAlignCommands.TOP)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTop, { class: \"icon\" }),\n _hoisted_26\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[17] || (_cache[17] = ($event: any) => (_ctx.alignElementToCanvas(_ctx.ElementAlignCommands.VERTICAL)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignHorizontally, { class: \"icon\" }),\n _hoisted_27\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[18] || (_cache[18] = ($event: any) => (_ctx.alignElementToCanvas(_ctx.ElementAlignCommands.BOTTOM)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignBottom, { class: \"icon\" }),\n _hoisted_28\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}","\nimport { defineComponent, Ref, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement, TableCell } from '@/types/slides'\nimport { ElementAlignCommands, ElementOrderCommands } from '@/types/edit'\nimport emitter, { EmitterEvents } from '@/utils/emitter'\nimport useOrderElement from '@/hooks/useOrderElement'\nimport useAlignElementToCanvas from '@/hooks/useAlignElementToCanvas'\nimport useDeleteElement from '@/hooks/useDeleteElement'\nimport useAddSlidesOrElements from '@/hooks/useAddSlidesOrElements'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\ninterface TabItem {\n key: 'style' | 'common'\n label: string\n}\n\nconst colors = ['#000000', '#ffffff', '#eeece1', '#1e497b', '#4e81bb', '#e2534d', '#9aba60', '#8165a0', '#47acc5', '#f9974c', '#c21401', '#ff1e02', '#ffc12a', '#ffff3a', '#90cf5b', '#00af57']\n\nexport default defineComponent({\n name: 'element-toolbar',\n setup() {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { handleElement, handleElementId, richTextAttrs } = storeToRefs(mainStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateElement = (id: string, props: Partial) => {\n slidesStore.updateElement({ id, props })\n addHistorySnapshot()\n }\n\n const tabs: TabItem[] = [\n { key: 'style', label: '样式' },\n { key: 'common', label: '布局' },\n ]\n const activeTab = ref('common')\n\n const { orderElement } = useOrderElement()\n const { alignElementToCanvas } = useAlignElementToCanvas()\n const { addElementsFromData } = useAddSlidesOrElements()\n const { deleteElement } = useDeleteElement()\n\n const copyElement = () => {\n const element: PPTElement = JSON.parse(JSON.stringify(handleElement.value))\n addElementsFromData([element])\n }\n\n const emitRichTextCommand = (command: string, value?: string) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { action: { command, value } })\n }\n\n const updateFontColor = (color: string) => {\n if (!handleElement.value) return\n if (handleElement.value.type === 'text' || (handleElement.value.type === 'shape' && handleElement.value.text?.content)) {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { action: { command: 'color', value: color } })\n }\n if (handleElement.value.type === 'table') {\n const data: TableCell[][] = JSON.parse(JSON.stringify(handleElement.value.data))\n for (let i = 0; i < data.length; i++) {\n for (let j = 0; j < data[i].length; j++) {\n const style = data[i][j].style || {}\n data[i][j].style = { ...style, color }\n }\n }\n updateElement(handleElementId.value, { data })\n }\n if (handleElement.value.type === 'latex') {\n updateElement(handleElementId.value, { color })\n }\n }\n\n const updateFill = (color: string) => {\n if (!handleElement.value) return\n if (\n handleElement.value.type === 'text' ||\n handleElement.value.type === 'shape' ||\n handleElement.value.type === 'chart'\n ) updateElement(handleElementId.value, { fill: color })\n\n if (handleElement.value.type === 'table') {\n const data: TableCell[][] = JSON.parse(JSON.stringify(handleElement.value.data))\n for (let i = 0; i < data.length; i++) {\n for (let j = 0; j < data[i].length; j++) {\n const style = data[i][j].style || {}\n data[i][j].style = { ...style, backcolor: color }\n }\n }\n updateElement(handleElementId.value, { data })\n }\n\n if (handleElement.value.type === 'audio') updateElement(handleElementId.value, { color })\n }\n\n return {\n handleElement: handleElement as Ref,\n tabs,\n activeTab,\n richTextAttrs,\n colors,\n orderElement,\n alignElementToCanvas,\n copyElement,\n deleteElement,\n emitRichTextCommand,\n updateFontColor,\n updateFill,\n ElementOrderCommands,\n ElementAlignCommands,\n }\n },\n})\n","import { render } from \"./ElementToolbar.vue?vue&type=template&id=332b9382&scoped=true&ts=true\"\nimport script from \"./ElementToolbar.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementToolbar.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementToolbar.vue?vue&type=style&index=0&id=332b9382&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-332b9382\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2c0b2c5e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mobile-editor-header\" }\nconst _hoisted_2 = { class: \"history\" }\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_IconBack = _resolveComponent(\"IconBack\")!\n const _component_IconNext = _resolveComponent(\"IconNext\")!\n const _component_IconLogout = _resolveComponent(\"IconLogout\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"history-item\", { 'disable': !_ctx.canUndo }]),\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.undo()), [\"stop\"]))\n }, [\n _createVNode(_component_IconBack),\n _hoisted_3\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"history-item\", { 'disable': !_ctx.canRedo }]),\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.redo()), [\"stop\"]))\n }, [\n _createVNode(_component_IconNext),\n _hoisted_4\n ], 2)\n ]),\n _createElementVNode(\"div\", {\n class: \"back\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.changeMode('preview')))\n }, [\n _createVNode(_component_IconLogout),\n _hoisted_5\n ])\n ]))\n}","\nimport { defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSnapshotStore } from '@/store'\nimport { Mode } from '@/types/mobile'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default defineComponent({\n name: 'mobile-editor-header',\n props: {\n changeMode: {\n type: Function as PropType<(mode: Mode) => void>,\n required: true,\n },\n },\n setup() {\n const { canUndo, canRedo } = storeToRefs(useSnapshotStore())\n const { redo, undo } = useHistorySnapshot()\n\n return {\n redo,\n undo,\n canUndo,\n canRedo,\n }\n },\n})\n","import { render } from \"./Header.vue?vue&type=template&id=2c0b2c5e&scoped=true&ts=true\"\nimport script from \"./Header.vue?vue&type=script&lang=ts\"\nexport * from \"./Header.vue?vue&type=script&lang=ts\"\n\nimport \"./Header.vue?vue&type=style&index=0&id=2c0b2c5e&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-2c0b2c5e\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, onMounted, PropType, ref, watchEffect } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport { AlignmentLineProps } from '@/types/edit'\nimport { Mode } from '@/types/mobile'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport useSlideBackgroundStyle from '@/hooks/useSlideBackgroundStyle'\nimport useDragElement from '@/views/Editor/Canvas/hooks/useDragElement'\nimport useScaleElement from '@/views/Editor/Canvas/hooks/useScaleElement'\n\nimport AlignmentLine from '@/views/Editor/Canvas/AlignmentLine.vue'\nimport MobileEditableElement from './MobileEditableElement.vue'\nimport MobileOperate from './MobileOperate.vue'\nimport SlideToolbar from './SlideToolbar.vue'\nimport ElementToolbar from './ElementToolbar.vue'\nimport Header from './Header.vue'\n\nexport default defineComponent({\n name: 'mobile-editor',\n components: {\n AlignmentLine,\n MobileEditableElement,\n MobileOperate,\n SlideToolbar,\n ElementToolbar,\n Header,\n },\n props: {\n changeMode: {\n type: Function as PropType<(mode: Mode) => void>,\n required: true,\n },\n },\n setup() {\n const slidesStore = useSlidesStore()\n const mainStore = useMainStore()\n const { slideIndex, currentSlide, viewportRatio } = storeToRefs(slidesStore)\n const { activeElementIdList, handleElement } = storeToRefs(mainStore)\n\n const contentRef = ref()\n\n const alignmentLines = ref([])\n\n const background = computed(() => currentSlide.value.background)\n const { backgroundStyle } = useSlideBackgroundStyle(background)\n\n const canvasScale = computed(() => {\n if (!contentRef.value) return 1\n const contentWidth = contentRef.value.clientWidth\n const contentheight = contentRef.value.clientHeight\n\n const contentRatio = contentheight / contentWidth\n if (contentRatio >= viewportRatio.value) return (contentWidth - 20) / VIEWPORT_SIZE\n return (contentheight - 20) / viewportRatio.value / VIEWPORT_SIZE\n })\n\n onMounted(() => {\n if (activeElementIdList.value.length) mainStore.setActiveElementIdList([])\n if (slideIndex.value !== 0) slidesStore.updateSlideIndex(0)\n })\n\n const viewportStyles = computed(() => ({\n width: VIEWPORT_SIZE * canvasScale.value + 'px',\n height: VIEWPORT_SIZE * viewportRatio.value * canvasScale.value + 'px',\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 { dragElement } = useDragElement(elementList, alignmentLines, canvasScale)\n const { scaleElement } = useScaleElement(elementList, alignmentLines, canvasScale)\n\n const selectElement = (e: TouchEvent, element: PPTElement, startMove = true) => {\n if (!activeElementIdList.value.includes(element.id)) {\n mainStore.setActiveElementIdList([element.id])\n mainStore.setHandleElementId(element.id)\n }\n if (startMove) dragElement(e, element)\n }\n\n const handleClickBlankArea = () => {\n mainStore.setActiveElementIdList([])\n }\n\n return {\n contentRef,\n slideIndex,\n elementList,\n canvasScale,\n viewportStyles,\n backgroundStyle,\n activeElementIdList,\n alignmentLines,\n selectElement,\n handleClickBlankArea,\n scaleElement,\n handleElement,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=f9ea6e88&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=f9ea6e88&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-f9ea6e88\"]])\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, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2845ccb6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"header\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\" 退出播放\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ThumbnailSlide = _resolveComponent(\"ThumbnailSlide\")!\n const _component_IconLogout = _resolveComponent(\"IconLogout\")!\n const _component_MobileThumbnails = _resolveComponent(\"MobileThumbnails\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"mobile-player\",\n style: _normalizeStyle({\n width: _ctx.playerSize.width + 'px',\n height: _ctx.playerSize.height + 'px',\n transform: `rotate(90deg) translateY(-${_ctx.playerSize.height}px)`,\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"screen-slide-list\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.toolVisible = !_ctx.toolVisible)),\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.slideSize.width + 'px',\n height: _ctx.slideSize.height + 'px',\n })\n }, [\n _createVNode(_component_ThumbnailSlide, {\n slide: slide,\n size: _ctx.slideSize.width\n }, null, 8, [\"slide\", \"size\"])\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 2))\n }), 128))\n ], 32),\n (_ctx.toolVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"back\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.changeMode('preview')))\n }, [\n _createVNode(_component_IconLogout),\n _hoisted_2\n ])\n ]),\n _createVNode(_component_MobileThumbnails, { class: \"thumbnails\" })\n ], 64))\n : _createCommentVNode(\"\", true)\n ], 4))\n}","\nimport { computed, defineComponent, onMounted, PropType, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { Mode } from '@/types/mobile'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\nimport MobileThumbnails from './MobileThumbnails.vue'\n\nexport default defineComponent({\n name: 'mobile-player',\n components: {\n ThumbnailSlide,\n MobileThumbnails,\n },\n props: {\n changeMode: {\n type: Function as PropType<(mode: Mode) => void>,\n required: true,\n },\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { slides, slideIndex, currentSlide, viewportRatio } = storeToRefs(slidesStore)\n\n const toolVisible = ref(false)\n\n const playerSize = ref({ width: 0, height: 0 })\n\n onMounted(() => {\n if (slideIndex.value !== 0) slidesStore.updateSlideIndex(0)\n\n playerSize.value = {\n width: document.body.clientHeight,\n height: document.body.clientWidth,\n }\n })\n\n const slideSize = computed(() => {\n const playerRatio = playerSize.value.height / playerSize.value.width\n\n let slideWidth = 0\n let slideHeight = 0\n\n if (playerRatio >= viewportRatio.value) {\n slideWidth = playerSize.value.width\n slideHeight = slideWidth * viewportRatio.value\n }\n else {\n slideHeight = playerSize.value.height\n slideWidth = slideHeight / viewportRatio.value\n }\n\n return {\n width: slideWidth,\n height: slideHeight,\n }\n })\n\n const touchInfo = ref<{ x: number; y: number; } | null>(null)\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 offsetY = Math.abs(touchInfo.value.y - e.changedTouches[0].pageY)\n const offsetX = e.changedTouches[0].pageX - touchInfo.value.x\n\n if ( Math.abs(offsetX) > offsetY && Math.abs(offsetX) > 50 ) {\n touchInfo.value = null\n\n if (offsetX < 0 && slideIndex.value > 0) slidesStore.updateSlideIndex(slideIndex.value - 1)\n if (offsetX > 0 && slideIndex.value < slides.value.length - 1) slidesStore.updateSlideIndex(slideIndex.value + 1)\n }\n }\n\n return {\n slides,\n slideIndex,\n currentSlide,\n playerSize,\n slideSize,\n toolVisible,\n touchStartListener,\n touchEndListener,\n }\n },\n})\n","import { render } from \"./MobilePlayer.vue?vue&type=template&id=2845ccb6&scoped=true&ts=true\"\nimport script from \"./MobilePlayer.vue?vue&type=script&lang=ts\"\nexport * from \"./MobilePlayer.vue?vue&type=script&lang=ts\"\n\nimport \"./MobilePlayer.vue?vue&type=style&index=0&id=2845ccb6&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-2845ccb6\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-04d332cb\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n class: \"mobile-preview\",\n ref: \"mobileRef\"\n}\nconst _hoisted_2 = { class: \"thumbnail-list\" }\nconst _hoisted_3 = { class: \"menu\" }\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_ThumbnailSlide = _resolveComponent(\"ThumbnailSlide\")!\n const _component_IconEdit = _resolveComponent(\"IconEdit\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_IconFullScreenPlay = _resolveComponent(\"IconFullScreenPlay\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\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.screenWidth - 10,\n visible: index < _ctx.slidesLoadLimit\n }, null, 8, [\"slide\", \"size\", \"visible\"])\n ]))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: \"menu-item\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.changeMode('editor')))\n }, [\n _createVNode(_component_IconEdit, { class: \"icon\" }),\n _hoisted_4\n ]),\n _createVNode(_component_Divider, {\n type: \"vertical\",\n style: {\"height\":\"30px\"}\n }),\n _createElementVNode(\"div\", {\n class: \"menu-item\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.changeMode('player')))\n }, [\n _createVNode(_component_IconFullScreenPlay, { class: \"icon\" }),\n _hoisted_5\n ])\n ])\n ], 512))\n}","\nimport { defineComponent, PropType, onMounted, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useLoadSlides from '@/hooks/useLoadSlides'\nimport { Mode } from '@/types/mobile'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\n\nexport default defineComponent({\n name: 'mobile-preview',\n components: {\n ThumbnailSlide,\n },\n props: {\n changeMode: {\n type: Function as PropType<(mode: Mode) => void>,\n required: true,\n },\n },\n setup() {\n const { slides } = storeToRefs(useSlidesStore())\n const { slidesLoadLimit } = useLoadSlides()\n\n const mobileRef = ref()\n const screenWidth = ref(0)\n\n onMounted(() => {\n if (!mobileRef.value) return\n screenWidth.value = mobileRef.value.clientWidth\n })\n\n return {\n slides,\n slidesLoadLimit,\n mobileRef,\n screenWidth,\n }\n },\n})\n","import { render } from \"./MobilePreview.vue?vue&type=template&id=04d332cb&scoped=true&ts=true\"\nimport script from \"./MobilePreview.vue?vue&type=script&lang=ts\"\nexport * from \"./MobilePreview.vue?vue&type=script&lang=ts\"\n\nimport \"./MobilePreview.vue?vue&type=style&index=0&id=04d332cb&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-04d332cb\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, ref } from 'vue'\nimport { Mode } from '@/types/mobile'\n\nimport MobileEditor from './MobileEditor/index.vue'\nimport MobilePlayer from './MobilePlayer.vue'\nimport MobilePreview from './MobilePreview.vue'\n\nexport default defineComponent({\n name: 'mobile',\n setup() {\n const mode = ref('preview')\n \n const changeMode = (_mode: Mode) => mode.value = _mode\n \n const currentComponent = computed(() => {\n const componentMap = {\n 'editor': MobileEditor,\n 'player': MobilePlayer,\n 'preview': MobilePreview,\n }\n return componentMap[mode.value] || null\n })\n\n return {\n currentComponent,\n changeMode,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=efaecbfe&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=efaecbfe&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-efaecbfe\"]])\n\nexport default __exports__","\nimport { defineComponent, onMounted } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useScreenStore, useMainStore, useSnapshotStore } from '@/store'\nimport { LOCALSTORAGE_KEY_DISCARDED_DB } from '@/configs/storage'\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/index.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 { databaseId } = storeToRefs(mainStore)\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 // 应用注销时向 localStorage 中记录下本次 indexedDB 的数据库ID,用于之后清除数据库\n window.addEventListener('unload', () => {\n const discardedDB = localStorage.getItem(LOCALSTORAGE_KEY_DISCARDED_DB)\n const discardedDBList: string[] = discardedDB ? JSON.parse(discardedDB) : []\n\n discardedDBList.push(databaseId.value)\n\n const newDiscardedDB = JSON.stringify(discardedDBList)\n localStorage.setItem(LOCALSTORAGE_KEY_DISCARDED_DB, newDiscardedDB)\n })\n\n return {\n screening,\n isPC: isPC(),\n }\n },\n})\n","import { render } from \"./App.vue?vue&type=template&id=a33e97ec&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=a33e97ec&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__","/* eslint-disable no-console */\n\nimport { register } from 'register-service-worker'\n\nif (process.env.NODE_ENV === 'production') {\n register(`${process.env.BASE_URL}service-worker.js`, {\n ready() {\n console.log(\n 'App is being served from cache by a service worker.\\n' +\n 'For more details, visit https://goo.gl/AFskqB'\n )\n },\n registered() {\n console.log('Service worker has been registered.')\n },\n cached() {\n console.log('Content has been cached for offline use.')\n },\n updatefound() {\n console.log('New content is downloading.')\n },\n updated() {\n console.log('New content is available; please refresh.')\n },\n offline() {\n console.log('No internet connection found. App is running in offline mode.')\n },\n error(error) {\n console.error('Error during service worker registration:', error)\n }\n })\n}\n","// https://iconpark.bytedance.com/official\n\nimport { App } from 'vue'\nimport {\n PlayOne,\n FullScreenPlay,\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 ChartHistogramOne,\n ChartLineArea,\n ChartRing,\n ChartScatter,\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 LinkOne,\n FullScreenOne,\n OffScreenOne,\n Power,\n ListView,\n Magic,\n HighLight,\n Share,\n IndentLeft,\n IndentRight,\n VerticalSpacingBetweenItems,\n Copy,\n Delete,\n Square,\n Round,\n} from '@icon-park/vue-next'\n\nconst icons = {\n PlayOne,\n FullScreenPlay,\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 ChartHistogramOne,\n ChartLineArea,\n ChartRing,\n ChartScatter,\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 LinkOne,\n FullScreenOne,\n OffScreenOne,\n Power,\n ListView,\n Magic,\n HighLight,\n Share,\n IndentLeft,\n IndentRight,\n VerticalSpacingBetweenItems,\n Copy,\n Delete,\n Square,\n Round,\n}\n\nexport default {\n install(app: App) {\n for (const key of Object.keys(icons)) {\n app.component(`Icon${key}`, icons[key])\n }\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-0a87e9c4\"),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: Event) => {\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=0a87e9c4&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=0a87e9c4&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-0a87e9c4\"]])\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': _ctx.checked }])\n }, [\n _renderSlot(_ctx.$slots, \"default\", {}, undefined, true)\n ], 2))\n}","\r\nimport { defineComponent } from 'vue'\r\n\r\nexport default defineComponent({\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=4074d5c2&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=4074d5c2&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-4074d5c2\"]])\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-adf706aa\"),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\nimport { defineComponent } from 'vue'\r\n\r\nexport default defineComponent({\r\n name: 'checkbox-button-group',\r\n})\r\n","import { render } from \"./CheckboxButtonGroup.vue?vue&type=template&id=adf706aa&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=adf706aa&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-adf706aa\"]])\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-e0bde284\"),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: \"picker-presets\" }\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 const _component_IconPlatte = _resolveComponent(\"IconPlatte\")!\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 class: \"input\",\n value: _ctx.color,\n onColorChange: _cache[3] || (_cache[3] = value => _ctx.changeColor(value))\n }, null, 8, [\"value\"]),\n _createElementVNode(\"div\", {\n class: \"straw\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.pickColor()))\n }, [\n _createVNode(_component_IconPlatte)\n ])\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 alpha\",\n onClick: ($event: any) => (_ctx.selectPresetColor(c))\n }, [\n _createElementVNode(\"div\", {\n class: \"picker-presets-color-content\",\n style: _normalizeStyle({ background: c })\n }, null, 4)\n ], 8, _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-20bfe6b0\"),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: Event) => {\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=20bfe6b0&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=20bfe6b0&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-20bfe6b0\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, onMounted, ref, watch } from 'vue'\nimport tinycolor, { ColorFormats } from 'tinycolor2'\nimport { debounce } from 'lodash'\nimport { toCanvas } from 'html-to-image'\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\nimport { message } from 'ant-design-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\nconst themeColors = ['#000000', '#ffffff', '#eeece1', '#1e497b', '#4e81bb', '#e2534d', '#9aba60', '#8165a0', '#47acc5', '#f9974c']\nconst standardColors = ['#c21401', '#ff1e02', '#ffc12a', '#ffff3a', '#90cf5b', '#00af57', '#00afee', '#0071be', '#00215f', '#72349d']\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 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 const pickColor = () => {\n const targetRef: HTMLElement | null = document.querySelector('.canvas')\n if (!targetRef) return\n\n const maskRef = document.createElement('div')\n maskRef.style.cssText = 'position: fixed; top: 0; left: 0; bottom: 0; right: 0; z-index: 9999; cursor: wait;'\n document.body.appendChild(maskRef)\n\n const colorBlockRef = document.createElement('div')\n colorBlockRef.style.cssText = 'position: absolute; top: -100px; left: -100px; width: 16px; height: 16px; border: 1px solid #000; z-index: 999'\n maskRef.appendChild(colorBlockRef)\n\n const { left, top, width, height } = targetRef.getBoundingClientRect()\n\n const filter = (node: HTMLElement) => {\n if (node.tagName && node.tagName.toUpperCase() === 'FOREIGNOBJECT') return false\n if (node.classList && node.classList.contains('operate')) return false\n return true\n }\n\n toCanvas(targetRef, { filter, fontEmbedCSS: '', width, height, canvasWidth: width, canvasHeight: height, pixelRatio: 1 }).then(canvasRef => {\n canvasRef.style.cssText = `position: absolute; top: ${top}px; left: ${left}px; cursor: crosshair;`\n maskRef.style.cursor = 'default'\n maskRef.appendChild(canvasRef)\n\n const ctx = canvasRef.getContext('2d')\n if (!ctx) return\n\n let currentColor = ''\n const handleMousemove = (e: MouseEvent) => {\n const x = e.x\n const y = e.y\n\n const mouseX = x - left\n const mouseY = y - top\n\n const [r, g, b, a] = ctx.getImageData(mouseX, mouseY, 1, 1).data\n currentColor = `rgba(${r}, ${g}, ${b}, ${(a / 255).toFixed(2)})`\n\n colorBlockRef.style.left = x + 10 + 'px'\n colorBlockRef.style.top = y + 10 + 'px'\n colorBlockRef.style.backgroundColor = currentColor\n }\n const handleMouseleave = () => {\n currentColor = ''\n colorBlockRef.style.left = '-100px'\n colorBlockRef.style.top = '-100px'\n colorBlockRef.style.backgroundColor = ''\n }\n const handleMousedown = (e: MouseEvent) => {\n if (currentColor && e.button === 0) {\n const tColor = tinycolor(currentColor)\n hue.value = tColor.toHsl().h\n color.value = tColor.toRgb()\n\n updateRecentColorsCache()\n }\n document.body.removeChild(maskRef)\n \n canvasRef.removeEventListener('mousemove', handleMousemove)\n canvasRef.removeEventListener('mouseleave', handleMouseleave)\n window.removeEventListener('mousedown', handleMousedown)\n }\n\n canvasRef.addEventListener('mousemove', handleMousemove)\n canvasRef.addEventListener('mouseleave', handleMouseleave)\n window.addEventListener('mousedown', handleMousedown)\n }).catch(() => {\n message.error('取色吸管初始化失败')\n document.body.removeChild(maskRef)\n })\n }\n\n return {\n themeColors,\n standardColors,\n presetColors,\n color,\n hue,\n currentColor,\n changeColor,\n selectPresetColor,\n recentColors,\n pickColor,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=e0bde284&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=e0bde284&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-e0bde284\"]])\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-5e77feb8\"),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 (_ctx.loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Spin, {\n tip: _ctx.tip,\n size: \"large\"\n }, null, 8, [\"tip\"])\n ]))\n : _createCommentVNode(\"\", true)\n}","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\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=5e77feb8&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=5e77feb8&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-5e77feb8\"]])\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'\nimport './registerServiceWorker'\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} 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)\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!./ExportImage.vue?vue&type=style&index=0&id=61e92928&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=64ca421e&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=0b036cf9&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=a6510a8a&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=204d666d&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!./SlideThumbnails.vue?vue&type=style&index=0&id=11e5b856&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=eafe485c&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=b701edc6&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=19ab4349&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!./index.vue?vue&type=style&index=0&id=3719d97c&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=54b23b9e&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!./FormulaContent.vue?vue&type=style&index=0&id=cf0ca630&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=42b07d61&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=6e74620a&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!./PresenterView.vue?vue&type=style&index=0&id=ce50b150&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=1a47c852&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=728513ea&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!./MobileOperate.vue?vue&type=style&index=0&id=10f40a30&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!./MobilePreview.vue?vue&type=style&index=0&id=04d332cb&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=e93c4822&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=0a74a690&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=17d8eefc&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=7fa1d412&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=e9ddaac8&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=310c58ae&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