From 882a6045cd066ccd162ed609852f4bd506018f10 Mon Sep 17 00:00:00 2001 From: pipipi-pikachu Date: Sat, 18 Jun 2022 01:35:34 +0000 Subject: [PATCH] deploy to github pages e62fbd839d30f04067d7f423ea553a01e32e19a3 --- css/{app.c88e10d3.css => app.18103ef1.css} | 2 +- index.html | 2 +- js/app.bc0864ea.js | 2 ++ js/app.bc0864ea.js.map | 1 + js/app.d2c3d541.js | 2 -- js/app.d2c3d541.js.map | 1 - 6 files changed, 5 insertions(+), 5 deletions(-) rename css/{app.c88e10d3.css => app.18103ef1.css} (98%) create mode 100644 js/app.bc0864ea.js create mode 100644 js/app.bc0864ea.js.map delete mode 100644 js/app.d2c3d541.js delete mode 100644 js/app.d2c3d541.js.map diff --git a/css/app.c88e10d3.css b/css/app.18103ef1.css similarity index 98% rename from css/app.c88e10d3.css rename to css/app.18103ef1.css index 6484662c..e35cf428 100644 --- a/css/app.c88e10d3.css +++ b/css/app.18103ef1.css @@ -1 +1 @@ -.hotkey-doc[data-v-4b1afc5f]{height:100%;overflow:auto;font-size:12px;margin:0 -24px;padding:0 24px}.title[data-v-4b1afc5f]{font-size:14px;font-weight:700;border-bottom:1px solid #e5e5e5;padding:24px 0 5px 0}.title[data-v-4b1afc5f]:first-child{padding-top:0}.hotkey-item[data-v-4b1afc5f]{border-bottom:1px solid #e5e5e5;padding:15px 0 5px 0;display:flex;align-items:center}.label[data-v-4b1afc5f]{width:140px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.editor-header[data-v-6c34fc9c]{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-6c34fc9c],.menu-item[data-v-6c34fc9c],.right[data-v-6c34fc9c]{display:flex;justify-content:center;align-items:center}.menu-item[data-v-6c34fc9c]{height:100%;font-size:14px;padding:0 10px;transition:background-color .2s;cursor:pointer}.menu-item .text[data-v-6c34fc9c]{margin-left:4px}.left .menu-item[data-v-6c34fc9c]:hover{background-color:#f9f9f9}svg[data-v-71b17928],svg[data-v-41071294],svg[data-v-b5bace06]{overflow:visible;position:absolute;z-index:2;top:0;left:0}.image-clip-handler[data-v-3e0199ec]{width:100%;height:100%;position:relative}.image-clip-handler .bottom-img[data-v-3e0199ec]{top:0;left:0;width:100%;height:100%;opacity:.5}.image-clip-handler img[data-v-3e0199ec]{width:100%;height:100%}.image-clip-handler .top-image-content[data-v-3e0199ec]{position:absolute;overflow:hidden}.image-clip-handler .top-image-content img[data-v-3e0199ec]{position:absolute}.operate[data-v-3e0199ec]{position:absolute;width:100%;height:100%;top:0;left:0;cursor:move}.clip-point[data-v-3e0199ec]{position:absolute;width:16px;height:16px}.clip-point svg[data-v-3e0199ec]{overflow:visible}.clip-point.left-top[data-v-3e0199ec]{left:0;top:0}.clip-point.right-top[data-v-3e0199ec]{left:100%;top:0;transform:rotate(90deg);transform-origin:0 0}.clip-point.left-bottom[data-v-3e0199ec]{left:0;top:100%;transform:rotate(-90deg);transform-origin:0 0}.clip-point.right-bottom[data-v-3e0199ec]{left:100%;top:100%;transform:rotate(180deg);transform-origin:0 0}.clip-point.top[data-v-3e0199ec]{left:50%;top:0;margin-left:-8px}.clip-point.bottom[data-v-3e0199ec]{left:50%;bottom:0;margin-left:-8px;transform:rotate(180deg)}.clip-point.left[data-v-3e0199ec]{left:0;top:50%;margin-top:-8px;transform:rotate(-90deg)}.clip-point.right[data-v-3e0199ec]{right:0;top:50%;margin-top:-8px;transform:rotate(90deg)}.clip-point.bottom.rotate-135[data-v-3e0199ec],.clip-point.left-bottom.rotate-90[data-v-3e0199ec],.clip-point.left-top.rotate-0[data-v-3e0199ec],.clip-point.left.rotate-45[data-v-3e0199ec],.clip-point.right-bottom.rotate-0[data-v-3e0199ec],.clip-point.right-top.rotate-90[data-v-3e0199ec],.clip-point.right.rotate-45[data-v-3e0199ec],.clip-point.top.rotate-135[data-v-3e0199ec]{cursor:nwse-resize}.clip-point.bottom.rotate-0[data-v-3e0199ec],.clip-point.left-bottom.rotate-135[data-v-3e0199ec],.clip-point.left-top.rotate-45[data-v-3e0199ec],.clip-point.left.rotate-90[data-v-3e0199ec],.clip-point.right-bottom.rotate-45[data-v-3e0199ec],.clip-point.right-top.rotate-135[data-v-3e0199ec],.clip-point.right.rotate-90[data-v-3e0199ec],.clip-point.top.rotate-0[data-v-3e0199ec]{cursor:ns-resize}.clip-point.bottom.rotate-45[data-v-3e0199ec],.clip-point.left-bottom.rotate-0[data-v-3e0199ec],.clip-point.left-top.rotate-90[data-v-3e0199ec],.clip-point.left.rotate-135[data-v-3e0199ec],.clip-point.right-bottom.rotate-90[data-v-3e0199ec],.clip-point.right-top.rotate-0[data-v-3e0199ec],.clip-point.right.rotate-135[data-v-3e0199ec],.clip-point.top.rotate-45[data-v-3e0199ec]{cursor:nesw-resize}.clip-point.bottom.rotate-90[data-v-3e0199ec],.clip-point.left-bottom.rotate-45[data-v-3e0199ec],.clip-point.left-top.rotate-135[data-v-3e0199ec],.clip-point.left.rotate-0[data-v-3e0199ec],.clip-point.right-bottom.rotate-135[data-v-3e0199ec],.clip-point.right-top.rotate-45[data-v-3e0199ec],.clip-point.right.rotate-0[data-v-3e0199ec],.clip-point.top.rotate-90[data-v-3e0199ec]{cursor:ew-resize}.editable-element-image[data-v-30dc7050]{position:absolute}.editable-element-image.lock .element-content[data-v-30dc7050]{cursor:default}.rotate-wrapper[data-v-30dc7050]{width:100%;height:100%}.element-content[data-v-30dc7050]{width:100%;height:100%;position:relative;cursor:move}.element-content .image-content[data-v-30dc7050]{width:100%;height:100%;overflow:hidden;position:relative}.element-content img[data-v-30dc7050]{position:absolute}svg[data-v-61b7d06a]{overflow:visible;position:absolute;top:0;left:0}.prosemirror-editor[data-v-01b8c64e]{cursor:text}.editable-element-text[data-v-7135a611]{position:absolute}.editable-element-text.lock .element-content[data-v-7135a611]{cursor:default}.rotate-wrapper[data-v-7135a611]{width:100%;height:100%}.element-content[data-v-7135a611]{position:relative;padding:10px;line-height:1.5;word-break:break-word;cursor:move}.element-content .text[data-v-7135a611]{position:relative}.element-content[data-v-7135a611] a{cursor:text}.drag-handler[data-v-7135a611]{height:10px;position:absolute;left:0;right:0}.drag-handler.top[data-v-7135a611]{top:0}.drag-handler.bottom[data-v-7135a611]{bottom:0}.editable-element-shape[data-v-4e9cdb03]{position:absolute;pointer-events:none}.editable-element-shape.lock .element-content[data-v-4e9cdb03]{cursor:default}.rotate-wrapper[data-v-4e9cdb03]{width:100%;height:100%}.element-content[data-v-4e9cdb03]{width:100%;height:100%;position:relative;cursor:move}.element-content svg[data-v-4e9cdb03]{transform-origin:0 0;overflow:visible}.element-content .shape-path[data-v-4e9cdb03]{pointer-events:all}.shape-text[data-v-4e9cdb03]{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-4e9cdb03]{pointer-events:all}.shape-text.top[data-v-4e9cdb03]{justify-content:flex-start}.shape-text.middle[data-v-4e9cdb03]{justify-content:center}.shape-text.bottom[data-v-4e9cdb03]{justify-content:flex-end}.editable-element-shape[data-v-6550e504]{position:absolute;pointer-events:none}.editable-element-shape.lock .line-path[data-v-6550e504],.editable-element-shape.lock .line-point[data-v-6550e504]{cursor:default}.element-content[data-v-6550e504]{width:100%;height:100%;position:relative}.element-content svg[data-v-6550e504]{transform-origin:0 0;overflow:visible}.line-path[data-v-6550e504],.line-point[data-v-6550e504]{pointer-events:all;cursor:move}.chart[data-v-1aa2357d]{display:flex}.chart-content[data-v-1aa2357d]{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-f3c03862]{position:absolute}.editable-element-chart.lock .element-content[data-v-f3c03862]{cursor:default}.rotate-wrapper[data-v-f3c03862]{width:100%;height:100%}.element-content[data-v-f3c03862]{width:100%;height:100%;overflow:hidden;cursor:move}.custom-textarea[data-v-cdb58a1e]{border:0;outline:0;-webkit-user-modify:read-write-plaintext-only;-moz-user-modify:read-write-plaintext-only}.editable-table[data-v-bae8c794],table[data-v-bae8c794]{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}table[data-v-bae8c794]{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-bae8c794]{background-color:#fff}table.theme tr:nth-child(2n) .cell[data-v-bae8c794]{background-color:var(--subThemeColor1)}table.theme tr:nth-child(odd) .cell[data-v-bae8c794]{background-color:var(--subThemeColor2)}table.theme.col-footer tr .cell[data-v-bae8c794]:last-child,table.theme.col-header tr .cell[data-v-bae8c794]:first-child,table.theme.row-footer tr:last-child .cell[data-v-bae8c794],table.theme.row-header tr:first-child .cell[data-v-bae8c794]{background-color:var(--themeColor)}table tr[data-v-bae8c794]{height:36px}table .cell[data-v-bae8c794]{position:relative;white-space:normal;word-wrap:break-word;vertical-align:middle;font-size:14px;cursor:default}table .cell.selected[data-v-bae8c794]:after{content:"";width:100%;height:100%;position:absolute;top:0;left:0;background-color:hsla(0,0%,40%,.4)}table .cell-text[data-v-bae8c794]{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-bae8c794]{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.drag-line[data-v-bae8c794]{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-6391c486]{position:absolute}.editable-element-table.lock .element-content[data-v-6391c486]{cursor:default}.rotate-wrapper[data-v-6391c486]{width:100%;height:100%}.element-content[data-v-6391c486]{width:100%;height:100%;position:relative;cursor:move}.table-mask[data-v-6391c486]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .2s}.table-mask .mask-tip[data-v-6391c486]{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-6391c486]:hover:not(.lock){opacity:.9}.editable-element-latex[data-v-31390388]{position:absolute}.editable-element-latex.lock .element-content[data-v-31390388]{cursor:default}.rotate-wrapper[data-v-31390388]{width:100%;height:100%}.element-content[data-v-31390388]{width:100%;height:100%;position:relative;cursor:move}.element-content svg[data-v-31390388]{transform-origin:0 0;overflow:visible}.video-player[data-v-2fc4c202]{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-2fc4c202],.video-player.playing .controller[data-v-2fc4c202]{opacity:0}.video-player.playing:hover .controller-mask[data-v-2fc4c202],.video-player.playing:hover .controller[data-v-2fc4c202]{opacity:1}}.video-player.loading .bezel .diplayer-loading-icon[data-v-2fc4c202]{display:block}.video-player.hide-controller[data-v-2fc4c202]{cursor:none}.video-player.hide-controller .controller-mask[data-v-2fc4c202],.video-player.hide-controller .controller[data-v-2fc4c202]{opacity:0;transform:translateY(100%)}.video-wrap[data-v-2fc4c202]{position:relative;background:#000;font-size:0;width:100%;height:100%}.video-wrap .video[data-v-2fc4c202]{width:100%;height:100%}.controller-mask[data-v-2fc4c202]{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-2fc4c202]{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-2fc4c202]{padding:5px 0;cursor:pointer;position:absolute;bottom:33px;width:calc(100% - 40px);height:3px}.controller .bar-wrap:hover .bar .played .thumb[data-v-2fc4c202]{transform:scale(1)}.controller .bar-wrap .bar-time[data-v-2fc4c202]{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-2fc4c202]{opacity:0}.controller .bar-wrap .bar[data-v-2fc4c202]{position:relative;height:3px;width:100%;background:hsla(0,0%,100%,.2);cursor:pointer}.controller .bar-wrap .bar .loaded[data-v-2fc4c202]{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-2fc4c202]{position:absolute;left:0;top:0;bottom:0;height:3px;will-change:width;background-color:#fff}.controller .bar-wrap .bar .played .thumb[data-v-2fc4c202]{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-2fc4c202]{height:38px;position:absolute;bottom:0;display:flex;align-items:center}.controller .icons.icons-right[data-v-2fc4c202]{right:8px}.controller .icons .time[data-v-2fc4c202]{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-2fc4c202]{width:40px;height:100%;position:relative;cursor:pointer;display:flex;align-items:center;font-size:20px}.controller .icons .icon.play-icon[data-v-2fc4c202]{font-size:26px}.controller .icons .icon .icon-content[data-v-2fc4c202]{transition:all .2s ease-in-out;opacity:.8;color:#fff}.controller .icons .icon.loop-icon[data-v-2fc4c202]{font-size:12px}.controller .icons .icon.loop-icon .icon-content[data-v-2fc4c202]{opacity:.5}.controller .icons .icon.speed-icon[data-v-2fc4c202]{font-size:12px;position:relative}.controller .icons .icon .speed-menu[data-v-2fc4c202]{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-2fc4c202]{padding:8px 0;text-align:center}.controller .icons .icon .speed-menu .speed-menu-item[data-v-2fc4c202]:hover{background-color:#393833;color:#fff}.controller .icons .icon .speed-menu .speed-menu-item.active[data-v-2fc4c202]{font-weight:700;color:#fff}.controller .icons .icon.active .icon-content[data-v-2fc4c202],.controller .icons .icon:hover .icon-content[data-v-2fc4c202]{opacity:1}.controller .icons .volume[data-v-2fc4c202]{height:100%;position:relative;cursor:pointer;display:flex;align-items:center}.controller .icons .volume:hover .volume-bar-wrap .volume-bar[data-v-2fc4c202]{width:45px}.controller .icons .volume:hover .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-2fc4c202]{transform:scale(1)}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar[data-v-2fc4c202]{width:45px}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-2fc4c202]{transform:scale(1)}.controller .icons .volume-bar-wrap[data-v-2fc4c202]{display:inline-block;margin:0 15px 0 -5px;vertical-align:middle;height:100%}.controller .icons .volume-bar[data-v-2fc4c202]{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-2fc4c202]{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-2fc4c202]{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-2fc4c202]{display:inline-block;height:100%}.bezel[data-v-2fc4c202]{position:absolute;left:0;right:0;top:0;bottom:0;font-size:22px;color:#fff;pointer-events:none}.bezel .bezel-icon[data-v-2fc4c202]{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-2fc4c202]{-webkit-animation:bezel-hide-2fc4c202 .5s linear;animation:bezel-hide-2fc4c202 .5s linear}@-webkit-keyframes bezel-hide-2fc4c202{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(2)}}@keyframes bezel-hide-2fc4c202{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(2)}}.bezel .loading-icon[data-v-2fc4c202]{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-2fc4c202]{display:none}.bezel .loading-icon .loading-dot[data-v-2fc4c202]{-webkit-animation:loading-dot-fade-2fc4c202 .8s ease infinite;animation:loading-dot-fade-2fc4c202 .8s ease infinite;opacity:0;transform-origin:4px 4px}.bezel .loading-icon .loading-dot.loading-dot-7[data-v-2fc4c202]{-webkit-animation-delay:.7s;animation-delay:.7s}.bezel .loading-icon .loading-dot.loading-dot-6[data-v-2fc4c202]{-webkit-animation-delay:.6s;animation-delay:.6s}.bezel .loading-icon .loading-dot.loading-dot-5[data-v-2fc4c202]{-webkit-animation-delay:.5s;animation-delay:.5s}.bezel .loading-icon .loading-dot.loading-dot-4[data-v-2fc4c202]{-webkit-animation-delay:.4s;animation-delay:.4s}.bezel .loading-icon .loading-dot.loading-dot-3[data-v-2fc4c202]{-webkit-animation-delay:.3s;animation-delay:.3s}.bezel .loading-icon .loading-dot.loading-dot-2[data-v-2fc4c202]{-webkit-animation-delay:.2s;animation-delay:.2s}.bezel .loading-icon .loading-dot.loading-dot-1[data-v-2fc4c202]{-webkit-animation-delay:.1s;animation-delay:.1s}@-webkit-keyframes loading-dot-fade-2fc4c202{0%{opacity:.7;transform:scale(1.2)}50%{opacity:.25;transform:scale(.9)}to{opacity:.25;transform:scale(.85)}}@keyframes loading-dot-fade-2fc4c202{0%{opacity:.7;transform:scale(1.2)}50%{opacity:.25;transform:scale(.9)}to{opacity:.25;transform:scale(.85)}}.editable-element-video[data-v-9d5469c6]{position:absolute}.editable-element-video.lock .handler-border[data-v-9d5469c6]{cursor:default}.rotate-wrapper[data-v-9d5469c6]{width:100%;height:100%}.element-content[data-v-9d5469c6]{width:100%;height:100%;position:relative}.handler-border[data-v-9d5469c6]{position:absolute;cursor:move}.handler-border.t[data-v-9d5469c6]{width:100%;height:20px;top:0;left:0}.handler-border.b[data-v-9d5469c6]{width:100%;height:5px;bottom:0;left:0}.handler-border.l[data-v-9d5469c6]{width:10px;height:100%;left:0;top:0}.handler-border.r[data-v-9d5469c6]{width:10px;height:100%;right:0;top:0}.audio-player[data-v-121f3d11]{width:280px;height:50px;position:relative;line-height:1;transform-origin:0 0;background:#000}.audio-player[data-v-121f3d11],.controller[data-v-121f3d11]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.controller[data-v-121f3d11]{position:absolute;bottom:0;left:0;right:0;height:41px;padding:0 20px;transition:all .3s ease}.controller .bar-wrap[data-v-121f3d11]{padding:5px 0;cursor:pointer;position:absolute;bottom:35px;width:calc(100% - 40px);height:3px}.controller .bar-wrap:hover .bar .played .thumb[data-v-121f3d11]{transform:scale(1)}.controller .bar-wrap .bar-time[data-v-121f3d11]{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-121f3d11]{opacity:0}.controller .bar-wrap .bar[data-v-121f3d11]{position:relative;height:3px;width:100%;background:hsla(0,0%,100%,.2);cursor:pointer}.controller .bar-wrap .bar .loaded[data-v-121f3d11]{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-121f3d11]{position:absolute;left:0;top:0;bottom:0;height:3px;will-change:width;background-color:#fff}.controller .bar-wrap .bar .played .thumb[data-v-121f3d11]{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-121f3d11]{height:38px;position:absolute;bottom:0;left:14px;display:flex;align-items:center}.controller .icons .icon[data-v-121f3d11]{width:36px;height:100%;position:relative;cursor:pointer;display:flex;align-items:center;font-size:20px}.controller .icons .icon.play-icon[data-v-121f3d11]{font-size:26px}.controller .icons .icon .icon-content[data-v-121f3d11]{transition:all .2s ease-in-out;opacity:.8;color:#fff}.controller .icons .icon.active .icon-content[data-v-121f3d11],.controller .icons .icon:hover .icon-content[data-v-121f3d11]{opacity:1}.controller .icons .volume[data-v-121f3d11]{height:100%;position:relative;cursor:pointer;display:flex;align-items:center}.controller .icons .volume:hover .volume-bar-wrap .volume-bar[data-v-121f3d11]{width:45px}.controller .icons .volume:hover .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-121f3d11]{transform:scale(1)}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar[data-v-121f3d11]{width:45px}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-121f3d11]{transform:scale(1)}.controller .icons .volume-bar-wrap[data-v-121f3d11]{display:inline-block;margin:0 15px 0 -5px;vertical-align:middle;height:100%}.controller .icons .volume-bar[data-v-121f3d11]{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-121f3d11]{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-121f3d11]{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-121f3d11]{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-121f3d11]{margin-right:2px}.controller .time .dtime[data-v-121f3d11]{margin-left:2px}.editable-element-audio[data-v-001bfbc4]{position:absolute}.editable-element-audio.lock .audio-icon[data-v-001bfbc4]{cursor:default}.rotate-wrapper[data-v-001bfbc4]{width:100%;height:100%}.element-content[data-v-001bfbc4]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.audio-icon[data-v-001bfbc4]{cursor:move}.audio-player[data-v-001bfbc4]{position:absolute}.mouse-selection[data-v-0d6c0f73]{position:absolute;background-color:rgba(209,68,36,.1);border:1px solid #d14424;z-index:200}.mouse-selection.quadrant-1[data-v-0d6c0f73]{transform-origin:0 0;transform:rotate(180deg)}.mouse-selection.quadrant-2[data-v-0d6c0f73]{transform-origin:50% 0;transform:rotate(180deg)}.mouse-selection.quadrant-3[data-v-0d6c0f73]{transform-origin:0 50%;transform:rotate(180deg)}.mouse-selection.quadrant-4[data-v-0d6c0f73]{transform-origin:0 0;transform:rotate(0deg)}.grid-lines[data-v-10cd6d44]{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-6f1e1261]{width:100%;height:100%;background-position:50%;position:absolute}.alignment-line[data-v-37fa6068]{position:absolute;z-index:100}.alignment-line .line[data-v-37fa6068]{width:0;height:0;border:0 dashed #d14424}.alignment-line .line.vertical[data-v-37fa6068]{transform:translateY(-.5px);border-left-width:1px}.alignment-line .line.horizontal[data-v-37fa6068]{transform:translateX(-.5px);border-top-width:1px}.ruler[data-v-60e06332]{font-size:12px}.h[data-v-60e06332]{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-60e06332]{height:100%;line-height:20px;text-align:right;flex:1;padding-right:5px;position:relative}.h .ruler-marker-100.hide span[data-v-60e06332],.h .ruler-marker-100.omit[data-v-60e06332]:before{display:none}.h .ruler-marker-100[data-v-60e06332]:not(:last-child):after{content:"";width:.1px;height:12px;position:absolute;right:0;bottom:0;background-color:#999}.h .ruler-marker-100[data-v-60e06332]:before{content:"";width:.1px;height:8px;position:absolute;right:50%;bottom:0;background-color:#999}.v[data-v-60e06332]{position:absolute;background-color:#fff;border:1px solid #eee;width:20px;left:5px;overflow:hidden}.v .ruler-marker-100[data-v-60e06332]{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-60e06332],.v .ruler-marker-100.omit[data-v-60e06332]:before{display:none}.v .ruler-marker-100[data-v-60e06332]:not(:last-child):after{content:"";height:.1px;width:12px;position:absolute;bottom:0;right:0;background-color:#999}.v .ruler-marker-100[data-v-60e06332]:before{content:"";height:.1px;width:8px;position:absolute;bottom:50%;right:0;background-color:#999}.element-create-selection[data-v-5a941f07]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;cursor:crosshair}.element-create-selection svg[data-v-5a941f07]{overflow:visible}.selection[data-v-5a941f07]{position:absolute;opacity:.8}.selection[data-v-5a941f07]:not(.line){border:1px solid #d14424}.resize-handler[data-v-881ee3f8]{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-881ee3f8],.resize-handler.left-bottom.rotate-90[data-v-881ee3f8],.resize-handler.left-top.rotate-0[data-v-881ee3f8],.resize-handler.left.rotate-45[data-v-881ee3f8],.resize-handler.right-bottom.rotate-0[data-v-881ee3f8],.resize-handler.right-top.rotate-90[data-v-881ee3f8],.resize-handler.right.rotate-45[data-v-881ee3f8],.resize-handler.top.rotate-135[data-v-881ee3f8]{cursor:nwse-resize}.resize-handler.bottom.rotate-0[data-v-881ee3f8],.resize-handler.left-bottom.rotate-135[data-v-881ee3f8],.resize-handler.left-top.rotate-45[data-v-881ee3f8],.resize-handler.left.rotate-90[data-v-881ee3f8],.resize-handler.right-bottom.rotate-45[data-v-881ee3f8],.resize-handler.right-top.rotate-135[data-v-881ee3f8],.resize-handler.right.rotate-90[data-v-881ee3f8],.resize-handler.top.rotate-0[data-v-881ee3f8]{cursor:ns-resize}.resize-handler.bottom.rotate-45[data-v-881ee3f8],.resize-handler.left-bottom.rotate-0[data-v-881ee3f8],.resize-handler.left-top.rotate-90[data-v-881ee3f8],.resize-handler.left.rotate-135[data-v-881ee3f8],.resize-handler.right-bottom.rotate-90[data-v-881ee3f8],.resize-handler.right-top.rotate-0[data-v-881ee3f8],.resize-handler.right.rotate-135[data-v-881ee3f8],.resize-handler.top.rotate-45[data-v-881ee3f8]{cursor:nesw-resize}.resize-handler.bottom.rotate-90[data-v-881ee3f8],.resize-handler.left-bottom.rotate-45[data-v-881ee3f8],.resize-handler.left-top.rotate-135[data-v-881ee3f8],.resize-handler.left.rotate-0[data-v-881ee3f8],.resize-handler.right-bottom.rotate-135[data-v-881ee3f8],.resize-handler.right-top.rotate-45[data-v-881ee3f8],.resize-handler.right.rotate-0[data-v-881ee3f8],.resize-handler.top.rotate-90[data-v-881ee3f8]{cursor:ew-resize}.border-line[data-v-7170d1be]{position:absolute;width:0;height:0;left:0;top:0;border:0 dashed #d14424}.border-line.top[data-v-7170d1be]{border-top-width:1px}.border-line.bottom[data-v-7170d1be]{border-bottom-width:1px}.border-line.left[data-v-7170d1be]{border-left-width:1px}.border-line.right[data-v-7170d1be]{border-right-width:1px}.border-line.wide[data-v-7170d1be]:before{content:"";position:absolute;background:transparent;cursor:move}.border-line.wide.top[data-v-7170d1be]:before{top:-8px;left:-8px;width:calc(100% + 16px);height:16px}.border-line.wide.bottom[data-v-7170d1be]:before{bottom:-8px;left:-8px;width:calc(100% + 16px);height:16px}.border-line.wide.left[data-v-7170d1be]:before{top:-8px;left:-8px;width:16px;height:calc(100% + 16px)}.border-line.wide.right[data-v-7170d1be]:before{top:-8px;right:-8px;width:16px;height:calc(100% + 16px)}.multi-select-operate[data-v-defbd922]{position:absolute;top:0;left:0;z-index:101}.rotate-handler[data-v-b99d8dae]{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-b99d8dae]:active{cursor:-webkit-grabbing;cursor:grabbing}.image-element-operate.cliping[data-v-46b250c2]{visibility:hidden}svg[data-v-4659f395]{position:absolute;left:0;top:0;pointer-events:none;transform-origin:0 0}.anchor-line[data-v-4659f395]{stroke-width:1px;stroke-dasharray:5 5;opacity:.5}.link-handler[data-v-bb722fc0]{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-bb722fc0]{max-width:300px;margin-right:20px;word-break:keep-all;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.btns[data-v-bb722fc0]{display:flex;align-items:center}.btns .btn[data-v-bb722fc0]{word-break:keep-all;cursor:pointer}.operate[data-v-c3f7ca96]{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-c3f7ca96]{opacity:0}.animation-index[data-v-c3f7ca96]{position:absolute;top:0;left:-24px;font-size:12px}.animation-index .index-item[data-v-c3f7ca96]{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-c3f7ca96]{margin-top:5px}.base-element-image[data-v-66f2009f]{position:absolute}.rotate-wrapper[data-v-66f2009f]{width:100%;height:100%}.element-content[data-v-66f2009f]{width:100%;height:100%;position:relative}.element-content .image-content[data-v-66f2009f]{width:100%;height:100%;overflow:hidden;position:relative}.base-element-text[data-v-659e869d],.element-content img[data-v-66f2009f]{position:absolute}.rotate-wrapper[data-v-659e869d]{width:100%;height:100%}.element-content[data-v-659e869d]{position:relative;padding:10px;line-height:1.5;word-break:break-word}.element-content .text[data-v-659e869d]{position:relative}.base-element-shape[data-v-073084bf]{position:absolute}.rotate-wrapper[data-v-073084bf]{width:100%;height:100%}.element-content[data-v-073084bf]{width:100%;height:100%;position:relative}.element-content svg[data-v-073084bf]{transform-origin:0 0;overflow:visible}.shape-text[data-v-073084bf]{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-073084bf]{justify-content:flex-start}.shape-text.middle[data-v-073084bf]{justify-content:center}.shape-text.bottom[data-v-073084bf]{justify-content:flex-end}.base-element-line[data-v-340cdee8]{position:absolute}.element-content[data-v-340cdee8]{width:100%;height:100%;position:relative}.element-content svg[data-v-340cdee8]{transform-origin:0 0;overflow:visible}.base-element-chart[data-v-7d2e5c4e]{position:absolute}.element-content[data-v-7d2e5c4e],.rotate-wrapper[data-v-7d2e5c4e]{width:100%;height:100%}.static-table[data-v-00712fa4],table[data-v-00712fa4]{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}table[data-v-00712fa4]{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-00712fa4]{background-color:#fff}table.theme tr:nth-child(2n) .cell[data-v-00712fa4]{background-color:var(--subThemeColor1)}table.theme tr:nth-child(odd) .cell[data-v-00712fa4]{background-color:var(--subThemeColor2)}table.theme.col-footer tr .cell[data-v-00712fa4]:last-child,table.theme.col-header tr .cell[data-v-00712fa4]:first-child,table.theme.row-footer tr:last-child .cell[data-v-00712fa4],table.theme.row-header tr:first-child .cell[data-v-00712fa4]{background-color:var(--themeColor)}table tr[data-v-00712fa4]{height:36px}table .cell[data-v-00712fa4]{position:relative;white-space:normal;word-wrap:break-word;vertical-align:middle}table .cell-text[data-v-00712fa4]{min-height:32px;padding:5px;line-height:1.5}.base-element-table[data-v-53e0f1ba]{position:absolute}.rotate-wrapper[data-v-53e0f1ba]{width:100%;height:100%}.element-content[data-v-53e0f1ba]{width:100%;height:100%;position:relative}.base-element-latex[data-v-9a47b5f4]{position:absolute}.rotate-wrapper[data-v-9a47b5f4]{width:100%;height:100%}.element-content[data-v-9a47b5f4]{width:100%;height:100%;position:relative}.element-content svg[data-v-9a47b5f4]{transform-origin:0 0;overflow:visible}.base-element-video[data-v-56b7f716]{position:absolute}.rotate-wrapper[data-v-56b7f716]{width:100%;height:100%}.element-content[data-v-56b7f716]{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-56b7f716]{font-size:140px;color:#aaa}.base-element-audio[data-v-5258e03b]{position:absolute}.rotate-wrapper[data-v-5258e03b]{width:100%;height:100%}.element-content[data-v-5258e03b]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.audio-icon[data-v-5258e03b]{cursor:move}.thumbnail-slide[data-v-f69fb5b2]{background-color:#fff;overflow:hidden}.elements[data-v-f69fb5b2]{transform-origin:0 0}.background[data-v-f69fb5b2]{width:100%;height:100%;background-position:50%;position:absolute}.placeholder[data-v-f69fb5b2]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.tabs[data-v-dfb654e8]{display:flex;justify-content:flex-start;align-items:center;border-bottom:1px solid #eee;margin-bottom:20px}.tab[data-v-dfb654e8]{padding:0 10px 8px;border-bottom:2px solid transparent;cursor:pointer}.tab.active[data-v-dfb654e8]{border-bottom:2px solid #d14424}.input[data-v-dfb654e8]{width:100%;height:32px}.preview[data-v-dfb654e8]{margin-top:12px}.thumbnail[data-v-dfb654e8]{outline:1px solid rgba(209,68,36,.15);margin-top:5px}.btns[data-v-dfb654e8]{margin-top:20px;text-align:right}.canvas[data-v-529c7227]{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-529c7227]{cursor:-webkit-grab;cursor:grab;position:absolute;top:0;right:0;bottom:0;left:0}.viewport-wrapper[data-v-529c7227]{position:absolute;box-shadow:0 0 15px 0 rgba(0,0,0,.1)}.viewport[data-v-529c7227]{position:absolute;top:0;left:0;transform-origin:0 0}.shape-pool[data-v-5788e0d2]{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-5788e0d2]{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-5788e0d2]{display:flex;flex-wrap:wrap;align-content:flex-start;margin-bottom:10px}.shape-item[data-v-5788e0d2]{width:8%;margin-bottom:2.22222%;height:0;padding-bottom:8%;flex-shrink:0;position:relative;cursor:pointer}.shape-item[data-v-5788e0d2]:not(:nth-child(10n)){margin-right:2.22222%}.shape-content[data-v-5788e0d2]{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-5788e0d2]:not(.outlined){stroke:#d14424}.shape-content:hover .shape-path.outlined[data-v-5788e0d2]{fill:#d14424}.shape-content svg[data-v-5788e0d2]:not(:root){overflow:visible}.line-pool[data-v-bca68faa]{width:220px;overflow:auto;margin-bottom:-12px;margin-right:-12px;padding-right:12px}.category-name[data-v-bca68faa]{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-bca68faa]{display:flex;flex-wrap:wrap;align-content:flex-start;margin-bottom:10px}.line-item[data-v-bca68faa]{width:19%;margin-bottom:1.25%;height:0;padding-bottom:19%;flex-shrink:0;position:relative;cursor:pointer}.line-item[data-v-bca68faa]:not(:nth-child(5n)){margin-right:1.25%}.line-content[data-v-bca68faa]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;color:#999}.line-content[data-v-bca68faa]:hover{color:#d14424}.line-content svg[data-v-bca68faa]:not(:root){overflow:visible}.chart-pool[data-v-3870b42e]{width:200px;margin-bottom:-5px;display:flex;flex-wrap:wrap;align-content:flex-start}.chart-item[data-v-3870b42e]{width:19%;margin-bottom:1.25%;height:0;padding-bottom:19%;flex-shrink:0;position:relative;cursor:pointer}.chart-item[data-v-3870b42e]:not(:nth-child(5n)){margin-right:1.25%}.chart-content[data-v-3870b42e]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;color:#999}.chart-content[data-v-3870b42e]:hover{color:#d14424}.table-generator[data-v-144fbd05]{width:100%;margin-top:-12px}.title[data-v-144fbd05]{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-144fbd05]{cursor:pointer}.title .right[data-v-144fbd05]:hover{color:#d14424}table[data-v-144fbd05]{border-collapse:separate}td[data-v-144fbd05]{width:23px;height:23px;line-height:23px;border:2px solid #fff;background-color:#f7f7f7}.cell[data-v-144fbd05]{width:100%;height:100%;border:1px solid #dcdcdc}.cell.active[data-v-144fbd05]{background-color:rgba(209,68,36,.1);border-color:#d14424}.custom[data-v-144fbd05]{width:230px}.custom .row[data-v-144fbd05]{display:flex;align-items:center}.custom .row+.row[data-v-144fbd05]{margin-top:10px}.btns[data-v-144fbd05]{margin-top:10px;text-align:right}.btns .btn[data-v-144fbd05]{margin-left:10px}.media-input[data-v-b9437110]{width:480px}.tabs[data-v-b9437110]{display:flex;justify-content:flex-start;align-items:center;border-bottom:1px solid #eee;margin-bottom:20px}.tab[data-v-b9437110]{padding:0 10px 8px;border-bottom:2px solid transparent;cursor:pointer}.tab.active[data-v-b9437110]{border-bottom:2px solid #d14424}.btns[data-v-b9437110]{margin-top:10px;text-align:right}svg[data-v-1c41d9fe]{overflow:hidden}.latex-editor[data-v-2d73bf28]{height:560px}.container[data-v-2d73bf28]{height:calc(100% - 50px);display:flex;padding-top:25px}.left[data-v-2d73bf28]{width:540px;height:100%;display:flex;flex-direction:column}.input-area[data-v-2d73bf28]{flex:1}.input-area textarea[data-v-2d73bf28]{height:100%!important;border-color:#eee!important;padding:10px!important}.input-area textarea[data-v-2d73bf28]:focus{box-shadow:none!important}.preview[data-v-2d73bf28]{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-2d73bf28]{color:#888}.preview-content[data-v-2d73bf28]{width:100%;height:100%;padding:10px;display:flex;justify-content:center;align-items:center}.right[data-v-2d73bf28]{height:100%;margin-left:20px;flex:1;border:1px solid #eee;background-color:#fff;flex-direction:column}.right[data-v-2d73bf28],.tabs[data-v-2d73bf28]{display:flex;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabs[data-v-2d73bf28]{height:40px;font-size:12px;flex-shrink:0}.tab[data-v-2d73bf28]{flex:1;display:flex;justify-content:center;align-items:center;background-color:#f9f9f9;border-bottom:1px solid #eee;cursor:pointer}.tab.active[data-v-2d73bf28]{background-color:#fff;border-bottom-color:#fff}.tab+.tab[data-v-2d73bf28]{border-left:1px solid #eee}.content[data-v-2d73bf28]{height:calc(100% - 40px);font-size:13px}.formula[data-v-2d73bf28]{height:100%;padding:12px;overflow:auto;overflow:overlay}.formula-item+.formula-item[data-v-2d73bf28]{margin-top:10px}.formula-item .formula-title[data-v-2d73bf28]{margin-bottom:5px}.formula-item .formula-item-content[data-v-2d73bf28]{width:246px;height:60px;padding:5px;display:flex;align-items:center;background-color:#f9f9f9;cursor:pointer}.symbol-tabs[data-v-2d73bf28]{display:flex;justify-content:space-around;align-items:center;border-bottom:1px solid #eee;margin:12px 12px 5px}.symbol-tab[data-v-2d73bf28]{padding:6px 10px;border-bottom:2px solid transparent;cursor:pointer}.symbol-tab.active[data-v-2d73bf28]{border-bottom:2px solid #d14424}.symbol[data-v-2d73bf28]{height:100%;display:flex;flex-direction:column}.symbol-pool[data-v-2d73bf28]{display:flex;flex-wrap:wrap;flex:1;padding:12px;overflow:auto;overflow:overlay}.symbol-item[data-v-2d73bf28]{display:flex;justify-content:center;align-items:center}.symbol-item[data-v-2d73bf28]:hover{background-color:#f9f9f9;cursor:pointer}.footer[data-v-2d73bf28]{height:50px;display:flex;justify-content:flex-end;align-items:flex-end}.footer .btn[data-v-2d73bf28]{margin-left:10px}.canvas-tool[data-v-5d4eff54]{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-5d4eff54]{display:flex;align-items:center}.add-element-handler[data-v-5d4eff54]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex}.handler-item[data-v-5d4eff54]{margin:0 10px;font-size:14px;cursor:pointer}.handler-item.disable[data-v-5d4eff54]{opacity:.5}.handler-item.active[data-v-5d4eff54]{color:#d14424}.right-handler[data-v-5d4eff54]{display:flex;align-items:center}.right-handler .text[data-v-5d4eff54]{width:40px;text-align:center;cursor:pointer}.right-handler .viewport-size[data-v-5d4eff54]{font-size:13px}.preset-item[data-v-5d4eff54]{padding:8px 20px;text-align:center;cursor:pointer}.preset-item[data-v-5d4eff54]:hover{color:#d14424}.layout-pool[data-v-cc6b7dca]{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-cc6b7dca]{width:48%;margin-bottom:4%}.layout-item[data-v-cc6b7dca]:not(:nth-child(2n)){margin-right:4%}.layout-item .thumbnail[data-v-cc6b7dca]{outline:1px solid #eee;cursor:pointer}.layout-item .thumbnail[data-v-cc6b7dca]:hover{outline-color:#d14424}.thumbnails[data-v-153c0b44]{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-153c0b44]{height:40px;font-size:12px;display:flex;flex-shrink:0;border-bottom:1px solid #eee;cursor:pointer}.add-slide .btn[data-v-153c0b44]{flex:1;display:flex;justify-content:center;align-items:center}.add-slide .btn[data-v-153c0b44]:hover{background-color:#f9f9f9}.add-slide .select-btn[data-v-153c0b44]{width:30px;display:flex;justify-content:center;align-items:center;border-left:1px solid #eee}.add-slide .select-btn[data-v-153c0b44]:hover{background-color:#f9f9f9}.add-slide .icon[data-v-153c0b44]{margin-right:3px;font-size:14px}.thumbnail-list[data-v-153c0b44]{padding:5px 0;flex:1;overflow:auto}.thumbnail-item[data-v-153c0b44]{display:flex;justify-content:center;align-items:center;padding:5px 0}.thumbnail-item .thumbnail[data-v-153c0b44]{outline:1px solid rgba(209,68,36,.15)}.thumbnail-item.active .label[data-v-153c0b44]{color:#d14424}.thumbnail-item.active .thumbnail[data-v-153c0b44],.thumbnail-item.selected .thumbnail[data-v-153c0b44]{outline-color:#d14424}.label[data-v-153c0b44]{font-size:12px;color:#999;width:20px;cursor:-webkit-grab;cursor:grab}.label.offset-left[data-v-153c0b44]{position:relative;left:-4px}.label[data-v-153c0b44]:active{cursor:-webkit-grabbing;cursor:grabbing}.row[data-v-22345a51]{width:100%;display:flex;align-items:center;margin-bottom:10px}.slider[data-v-22345a51]{flex:3}.color-btn[data-v-ed8f2044]{display:flex;align-items:center;justify-content:center;padding:0!important}.color-block[data-v-ed8f2044]{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-ed8f2044]{width:100%;height:100%}.color-btn-icon[data-v-ed8f2044]{width:30px;font-size:12px;margin-top:2px;color:#bfbfbf}.row[data-v-e91e3764]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-e91e3764]{text-align:right}.row[data-v-053ed706]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-053ed706]{text-align:right}.slider[data-v-053ed706]{flex:3}.text-style-panel[data-v-5830b9cf]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.row[data-v-5830b9cf]{width:100%;display:flex;align-items:center;margin-bottom:10px}.preset-style[data-v-5830b9cf]{display:flex;flex-wrap:wrap;margin-bottom:10px}.preset-style-item[data-v-5830b9cf]{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-5830b9cf]:hover{border-color:#d14424;color:#d14424;z-index:1}.preset-style-item[data-v-5830b9cf]:nth-child(2n){margin-left:-1px}.preset-style-item[data-v-5830b9cf]:nth-child(n+3){margin-top:-1px}.text-color-btn[data-v-5830b9cf]{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:0}.text-color-block[data-v-5830b9cf]{width:16px;height:3px;margin-top:1px}.font-size-btn[data-v-5830b9cf]{padding:0}.link-popover[data-v-5830b9cf]{width:240px}.link-popover .btns[data-v-5830b9cf]{margin-top:10px;text-align:right}.row[data-v-37fbdfde],.row[data-v-59a1646e]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-37fbdfde]{text-align:right}.filter[data-v-37fbdfde]{font-size:12px}.filter-item[data-v-37fbdfde]{padding:8px 0;display:flex;justify-content:center;align-items:center}.filter-item .name[data-v-37fbdfde]{width:60px}.filter-item .filter-slider[data-v-37fbdfde]{flex:1;margin:0 6px}.row[data-v-7da35bec]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-7da35bec]{text-align:right}.origin-image[data-v-7da35bec]{height:100px;background-size:contain;background-repeat:no-repeat;background-position:50%;background-color:#f9f9f9;margin-bottom:10px}.full-width-btn[data-v-7da35bec]{width:100%;margin-bottom:10px}.btn-icon[data-v-7da35bec]{margin-right:3px}.clip[data-v-7da35bec]{width:260px;font-size:12px}.clip .title[data-v-7da35bec]{margin-bottom:5px}.shape-clip[data-v-7da35bec]{margin-bottom:10px;display:flex;flex-wrap:wrap;align-content:flex-start}.shape-clip-item[data-v-7da35bec]{display:flex;justify-content:center;align-items:center;cursor:pointer;width:16%;margin-bottom:5%}.shape-clip-item[data-v-7da35bec]:not(:nth-child(5n)){margin-right:5%}.shape-clip-item:hover .shape[data-v-7da35bec]{background-color:#ccc}.shape-clip-item .shape[data-v-7da35bec]{width:40px;height:40px;background-color:#e1e1e1}.shape-style-panel[data-v-02998580]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.row[data-v-02998580]{width:100%;display:flex;align-items:center;margin-bottom:10px}.text-color-btn[data-v-02998580]{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:0}.text-color-block[data-v-02998580]{width:16px;height:3px;margin-top:1px}.font-size-btn[data-v-02998580]{padding:0}.slider[data-v-02998580]{flex:3}.row[data-v-938968a2]{width:100%;display:flex;align-items:center;margin-bottom:10px}.line-btn[data-v-938968a2]{display:flex;align-items:center;justify-content:space-between;padding:0!important}.line-btn .line-wrapper[data-v-938968a2]{margin-left:8px}.line-wrapper[data-v-938968a2]{overflow:visible}.line-btn-icon[data-v-938968a2]{width:30px;font-size:12px;margin-top:2px;color:#bfbfbf}.preset-point-style[data-v-938968a2]{padding:0 10px}.preset-point-style+.preset-point-style[data-v-938968a2]{margin-top:10px}.chart-data-editor[data-v-53b32689]{width:600px;position:relative}.editor-content[data-v-53b32689]{width:100%;height:360px;position:relative;border-right:1px solid #ccc;border-bottom:1px solid #ccc;overflow:auto;overflow:overlay}.range-box[data-v-53b32689]{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-53b32689]{width:0;height:0;position:absolute;top:0;left:0;background-color:hsla(0,0%,53.3%,.3)}.range-line[data-v-53b32689]{width:0;height:0;position:absolute;left:0;top:0;border:0 solid #d14424}.range-line.t[data-v-53b32689]{border-top-width:1px}.range-line.b[data-v-53b32689]{border-bottom-width:1px}.range-line.l[data-v-53b32689]{border-left-width:1px}.range-line.r[data-v-53b32689]{border-right-width:1px}.resizable[data-v-53b32689]{position:absolute;width:12px;height:12px;left:0;top:0;margin:-9px 0 0 -9px;cursor:nwse-resize}.resizable[data-v-53b32689]:after{content:"";position:absolute;width:4px;height:12px;right:0;top:0;background-color:#d14424}.resizable[data-v-53b32689]:before{content:"";position:absolute;width:12px;height:4px;right:0;bottom:0;background-color:#d14424}table[data-v-53b32689]{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-53b32689]{text-align:center;border:1px solid #ccc;vertical-align:middle;width:100px;height:32px}table td.head[data-v-53b32689]{background-color:rgba(209,68,36,.1)}table .item[data-v-53b32689]{width:100%;height:100%;border:0;outline:0;font-size:13px;text-align:center;background-color:transparent}table .item.selected[data-v-53b32689]{background-color:rgba(209,68,36,.02)}.btns[data-v-53b32689]{margin-top:10px;display:flex;justify-content:space-between}.chart-style-panel[data-v-769d6876]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.row[data-v-769d6876]{width:100%;display:flex;align-items:center;margin-bottom:10px}.full-width-btn[data-v-769d6876]{width:100%}.btn-icon[data-v-769d6876]{margin-right:3px}.color-btn-wrap[data-v-769d6876]{position:relative}.delete-color-btn[data-v-769d6876]{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-769d6876]{width:250px;margin-bottom:-10px;display:flex;flex-wrap:wrap;align-content:flex-start}.preset-theme[data-v-769d6876]{display:flex;cursor:pointer;width:48%;margin-bottom:4%}.preset-theme[data-v-769d6876]:not(:nth-child(2n)){margin-right:4%}.preset-theme-color[data-v-769d6876]{width:20px;height:20px}.preset-theme-color.select[data-v-769d6876]{transform:scale(1.2);transition:transform .1s}.row[data-v-7e28e1d8]{width:100%;display:flex;align-items:center;margin-bottom:10px}.theme-switch[data-v-7e28e1d8]{margin-bottom:18px}.switch-wrapper[data-v-7e28e1d8]{text-align:right}.text-color-btn[data-v-7e28e1d8]{display:flex;flex-direction:column;justify-content:center;align-items:center}.text-color-block[data-v-7e28e1d8]{width:16px;height:3px;margin-top:1px}.set-count[data-v-7e28e1d8]{display:flex;justify-content:center;align-items:center}.set-count .btn[data-v-7e28e1d8]{padding:4px 8px}.set-count .count-text[data-v-7e28e1d8]{flex:1;text-align:center;margin:0 8px}.row[data-v-546adf8c],.row[data-v-ff7125dc]{width:100%;display:flex;align-items:center;margin-bottom:10px}.background-image-wrapper[data-v-ff7125dc],.title[data-v-ff7125dc]{margin-bottom:10px}.background-image[data-v-ff7125dc]{height:0;padding-bottom:56.25%;border:1px dashed #eee;border-radius:2px;position:relative;transition:all .2s}.background-image[data-v-ff7125dc]:hover{border-color:#d14424;color:#d14424}.background-image .content[data-v-ff7125dc]{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-5d723d50]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-row[data-v-5d723d50]{height:32px}.switch-wrapper[data-v-5d723d50]{text-align:right}.row[data-v-71469855]{width:100%;display:flex;align-items:center;margin-bottom:10px}.text-color-btn[data-v-71469855]{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:0}.text-color-block[data-v-71469855]{width:16px;height:3px;margin-top:1px}.font-size-btn[data-v-71469855]{padding:0}.row[data-v-6bf6c951]{width:100%;display:flex;align-items:center;margin-bottom:10px}.title[data-v-6bf6c951]{margin-bottom:10px}.label[data-v-6bf6c951]{text-align:center}.btn-icon[data-v-6bf6c951]{margin-right:3px}.icon-btn[data-v-6bf6c951]{cursor:pointer}.element-animation-panel[data-v-2f69234f]{height:100%;display:flex;flex-direction:column}.tabs[data-v-2f69234f]{display:flex;justify-content:flex-start;align-items:center;border-bottom:1px solid #eee;margin-bottom:20px}.tab[data-v-2f69234f]{width:33.33%;padding-bottom:8px;border-bottom:2px solid transparent;text-align:center;cursor:pointer}.tab.active[data-v-2f69234f]{border-bottom:2px solid #d14424}.tab.in.active[data-v-2f69234f]{border-bottom-color:#68a490}.tab.out.active[data-v-2f69234f]{border-bottom-color:#d86344}.tab.attention.active[data-v-2f69234f]{border-bottom-color:#e8b76a}.element-animation[data-v-2f69234f]{height:32px;display:flex;align-items:center}.element-animation-btn[data-v-2f69234f]{width:100%}.config-item[data-v-2f69234f]{display:flex;align-items:center}.config-item+.config-item[data-v-2f69234f]{margin-top:5px}.tip[data-v-2f69234f]{height:32px;display:flex;justify-content:center;align-items:center;font-style:italic}.animation-pool[data-v-2f69234f]{width:400px;height:500px;overflow-y:auto;overflow-x:hidden;font-size:12px;margin-right:-12px;position:relative}.animation-pool .mask[data-v-2f69234f]{position:absolute;top:0;right:0;bottom:0;left:0}.animation-pool.in .type-title[data-v-2f69234f]{border-left-color:#68a490;background-color:rgba(104,164,144,.15)}.animation-pool.out .type-title[data-v-2f69234f]{border-left-color:#d86344;background-color:rgba(216,99,68,.15)}.animation-pool.attention .type-title[data-v-2f69234f]{border-left-color:#e8b76a;background-color:rgba(232,183,106,.15)}.type-title[data-v-2f69234f]{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-2f69234f]{display:flex;flex-wrap:wrap;align-content:flex-start}.pool-item[data-v-2f69234f]{width:24%;margin-bottom:1.33333%;margin-bottom:10px;height:40px;line-height:40px;text-align:center;cursor:pointer}.pool-item[data-v-2f69234f]:not(:nth-child(4n)){margin-right:1.33333%}.animation-box[data-v-2f69234f]{background-color:#f9f9f9}.animation-sequence[data-v-2f69234f]{flex:1;padding-right:12px;margin-right:-12px;overflow:auto;overflow:overlay}.sequence-item[data-v-2f69234f]{border:1px solid #eee;padding:10px 6px;border-radius:2px;margin-bottom:8px;transition:all .5s}.sequence-item.in.active[data-v-2f69234f]{border-color:#68a490}.sequence-item.out.active[data-v-2f69234f]{border-color:#d86344}.sequence-item.attention.active[data-v-2f69234f]{border-color:#e8b76a}.sequence-item.active[data-v-2f69234f]{height:auto}.sequence-item .sequence-content[data-v-2f69234f]{display:flex;align-items:center;cursor:-webkit-grab;cursor:grab}.sequence-item .sequence-content[data-v-2f69234f]:active{cursor:-webkit-grabbing;cursor:grabbing}.sequence-item .sequence-content .index[data-v-2f69234f]{flex:1}.sequence-item .sequence-content .text[data-v-2f69234f]{flex:6}.sequence-item .sequence-content .handler[data-v-2f69234f]{flex:2;font-size:15px;text-align:right}.sequence-item .sequence-content .handler-btn[data-v-2f69234f]{margin-left:8px;cursor:pointer}.slide-design-panel[data-v-e0bbbd9e]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.row[data-v-e0bbbd9e]{width:100%;display:flex;align-items:center;margin-bottom:10px}.title[data-v-e0bbbd9e]{margin-bottom:10px}.title.dropdown[data-v-e0bbbd9e]{display:flex;align-items:center;cursor:pointer}.title.dropdown .icon[data-v-e0bbbd9e]{margin-left:5px;transition:transform .1s}.title.dropdown:not(.active) .icon[data-v-e0bbbd9e]{transform:rotate(-90deg)}.background-image-wrapper[data-v-e0bbbd9e]{margin-bottom:10px}.background-image[data-v-e0bbbd9e]{height:0;padding-bottom:56.25%;border:1px dashed #eee;border-radius:2px;position:relative;transition:all .2s}.background-image[data-v-e0bbbd9e]:hover{border-color:#d14424;color:#d14424}.background-image .content[data-v-e0bbbd9e]{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-e0bbbd9e]{display:flex;flex-wrap:wrap;align-content:flex-start}.theme-item[data-v-e0bbbd9e]{width:22%;margin-bottom:4%;padding-bottom:22%;border-radius:2px;position:relative;cursor:pointer}.theme-item[data-v-e0bbbd9e]:not(:nth-child(4n)){margin-right:4%}.theme-item .theme-item-content[data-v-e0bbbd9e]{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-e0bbbd9e]:hover{box-shadow:0 0 4px #888}.theme-item .text[data-v-e0bbbd9e]{font-size:16px}.theme-item .color-block[data-v-e0bbbd9e]{width:28px;height:10px;margin-top:5px}.slider[data-v-e0bbbd9e]{flex:3}.animation-pool[data-v-577ae912]{display:flex;flex-wrap:wrap;margin-bottom:10px}.animation-item[data-v-577ae912]{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-577ae912]{border-color:#d14424;z-index:1}.animation-item[data-v-577ae912]:nth-child(2n){margin-left:-1px}.animation-item[data-v-577ae912]:nth-child(n+3){margin-top:-1px}.animation-block[data-v-577ae912]{width:64px;height:36px;background:#666;position:relative;overflow:hidden}.animation-block.fade[data-v-577ae912]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:fade-577ae912 .3s linear;animation:fade-577ae912 .3s linear}.animation-block.slideX[data-v-577ae912]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:slideX-577ae912 .3s linear;animation:slideX-577ae912 .3s linear}.animation-block.slideY[data-v-577ae912]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:slideY-577ae912 .3s linear;animation:slideY-577ae912 .3s linear}.animation-text[data-v-577ae912]{font-size:12px;color:#333;text-align:center}@-webkit-keyframes fade-577ae912{0%{opacity:0}to{opacity:1}}@keyframes fade-577ae912{0%{opacity:0}to{opacity:1}}@-webkit-keyframes slideX-577ae912{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slideX-577ae912{0%{transform:translateX(100%)}to{transform:translateX(0)}}@-webkit-keyframes slideY-577ae912{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideY-577ae912{0%{transform:translateY(100%)}to{transform:translateY(0)}}.row[data-v-0d3881c5]{width:100%;display:flex;align-items:center;margin-bottom:10px}.symbol-panel[data-v-ba0c96fc]{height:100%;display:flex;flex-direction:column}.symbol-panel .tabs[data-v-ba0c96fc]{display:flex;justify-content:space-around;align-items:center;border-bottom:1px solid #eee;margin-bottom:8px}.symbol-panel .tab[data-v-ba0c96fc]{padding:6px 10px 8px;border-bottom:2px solid transparent;cursor:pointer}.symbol-panel .tab.active[data-v-ba0c96fc]{border-bottom:2px solid #d14424}.symbol-panel .pool[data-v-ba0c96fc]{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-ba0c96fc]{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-ba0c96fc]:not(:nth-child(5n)){margin-right:2.5%}.symbol-panel .symbol-item[data-v-ba0c96fc]:hover{color:#d14424}.symbol-panel .symbol-item .symbol[data-v-ba0c96fc]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;background-color:#fff}.toolbar[data-v-5303bd17]{border-left:1px solid #eee;background-color:#fff;display:flex;flex-direction:column}.tabs[data-v-5303bd17]{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-5303bd17]{flex:1;display:flex;justify-content:center;align-items:center;background-color:#f9f9f9;border-bottom:1px solid #eee;cursor:pointer}.tab.active[data-v-5303bd17]{background-color:#fff;border-bottom-color:#fff}.tab+.tab[data-v-5303bd17]{border-left:1px solid #eee}.content[data-v-5303bd17]{padding:12px;font-size:13px;overflow:auto;overflow:overlay}.remark[data-v-82b674f6]{position:relative;border-top:1px solid #eee;background-color:#f9f9f9;line-height:1.5}.remark textarea[data-v-82b674f6]{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-82b674f6]{height:7px;position:absolute;top:-3px;left:0;right:0;cursor:n-resize;z-index:2}.export-img-dialog[data-v-60a953a0]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.thumbnails-view[data-v-60a953a0],.thumbnails-view[data-v-60a953a0]:after{position:absolute;top:0;right:0;bottom:0;left:0}.thumbnails-view[data-v-60a953a0]:after{content:"";background-color:#fff}.configs[data-v-60a953a0]{width:350px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center;z-index:1}.configs .row[data-v-60a953a0]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-60a953a0]{width:100px;position:relative}.configs .title[data-v-60a953a0]:after{content:attr(data-range);position:absolute;top:20px;left:0}.configs .config-item[data-v-60a953a0]{flex:1}.btns[data-v-60a953a0]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-60a953a0]{flex:1}.btns .close[data-v-60a953a0]{width:100px;margin-left:10px}.export-json-dialog[data-v-1bc24666]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.preview[data-v-1bc24666]{width:100%;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center;background-color:#f9f9f9;color:#0451a5}.btns[data-v-1bc24666]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-1bc24666]{flex:1}.btns .close[data-v-1bc24666]{width:100px;margin-left:10px}[data-v-1bc24666]::-webkit-scrollbar{width:10px;height:10px;background-color:#f9f9f9}[data-v-1bc24666]::-webkit-scrollbar-thumb{background-color:#c1c1c1}.export-pdf-dialog[data-v-15b57798]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.thumbnails-view[data-v-15b57798],.thumbnails-view[data-v-15b57798]:after{position:absolute;top:0;right:0;bottom:0;left:0}.thumbnails-view[data-v-15b57798]:after{content:"";background-color:#fff}.thumbnail.break-page[data-v-15b57798]{-moz-column-break-after:page;break-after:page}.configs[data-v-15b57798]{width:300px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center;z-index:1}.configs .row[data-v-15b57798]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-15b57798]{width:100px}.configs .config-item[data-v-15b57798]{flex:1}.configs .tip[data-v-15b57798]{font-size:12px;color:#aaa;line-height:1.8;margin-top:25px}.btns[data-v-15b57798]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-15b57798]{flex:1}.btns .close[data-v-15b57798]{width:100px;margin-left:10px}.export-pptx-dialog[data-v-3fef9be0]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.configs[data-v-3fef9be0]{width:350px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center}.configs .row[data-v-3fef9be0]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-3fef9be0]{width:100px;position:relative}.configs .title[data-v-3fef9be0]:after{content:attr(data-range);position:absolute;top:20px;left:0}.configs .config-item[data-v-3fef9be0]{flex:1}.btns[data-v-3fef9be0]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-3fef9be0]{flex:1}.btns .close[data-v-3fef9be0]{width:100px;margin-left:10px}.export-pptist-dialog[data-v-e2b465d2]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.configs[data-v-e2b465d2]{width:350px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center}.configs .row[data-v-e2b465d2]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-e2b465d2]{width:100px;position:relative}.configs .title[data-v-e2b465d2]:after{content:attr(data-range);position:absolute;top:20px;left:0}.configs .config-item[data-v-e2b465d2]{flex:1}.configs .tip[data-v-e2b465d2]{font-size:12px;color:#aaa;line-height:1.8;margin-top:25px}.btns[data-v-e2b465d2]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-e2b465d2]{flex:1}.btns .close[data-v-e2b465d2]{width:100px;margin-left:10px}.export-dialog[data-v-1f8f1a8b]{margin:-24px}.tabs[data-v-1f8f1a8b]{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-1f8f1a8b]{flex:1;display:flex;justify-content:center;align-items:center;background-color:#f9f9f9;border-bottom:1px solid #eee;cursor:pointer}.tab.active[data-v-1f8f1a8b]{background-color:#fff;border-bottom-color:#fff}.tab+.tab[data-v-1f8f1a8b]{border-left:1px solid #eee}.content[data-v-1f8f1a8b]{height:460px;padding:12px;font-size:13px;overflow:auto;overflow:overlay}.pptist-editor[data-v-328e1a4e]{height:100%}.layout-header[data-v-328e1a4e]{height:40px}.layout-content[data-v-328e1a4e]{height:calc(100% - 40px);display:flex}.layout-content-left[data-v-328e1a4e]{width:160px;height:100%;flex-shrink:0}.layout-content-center[data-v-328e1a4e]{width:calc(100% - 420px)}.layout-content-center .center-top[data-v-328e1a4e]{height:40px}.layout-content-right[data-v-328e1a4e]{width:260px;height:100%}.screen-element-video[data-v-76457308]{position:absolute}.element-content[data-v-76457308],.rotate-wrapper[data-v-76457308]{width:100%;height:100%}.screen-element-audio[data-v-f447b6a2]{position:absolute}.rotate-wrapper[data-v-f447b6a2]{width:100%;height:100%}.element-content[data-v-f447b6a2]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.element-content:hover .audio-player[data-v-f447b6a2]{display:block}.audio-icon[data-v-f447b6a2]{cursor:pointer}.audio-player[data-v-f447b6a2]{position:absolute;display:none}.link[data-v-a15cc1d8]{cursor:pointer}.screen-slide[data-v-7cf7f9e7]{position:absolute;top:0;left:0;transform-origin:0 0;overflow:hidden}.background[data-v-7cf7f9e7]{width:100%;height:100%;background-position:50%;position:absolute}.screen-slide-list[data-v-77a3e620]{background:#1d1d1d;position:relative;width:100%;height:100%}.slide-item[data-v-77a3e620]{position:absolute;top:0;left:0;width:100%;height:100%}.slide-item.current[data-v-77a3e620]{z-index:2}.slide-item.hide[data-v-77a3e620]{opacity:0}.slide-item.turning-mode-no.before[data-v-77a3e620]{transform:translateY(-100%)}.slide-item.turning-mode-no.after[data-v-77a3e620]{transform:translateY(100%)}.slide-item.turning-mode-fade[data-v-77a3e620]{transition:opacity .75s}.slide-item.turning-mode-fade.after[data-v-77a3e620],.slide-item.turning-mode-fade.before[data-v-77a3e620]{pointer-events:none;opacity:0}.slide-item.turning-mode-slideX[data-v-77a3e620]{transition:transform .35s}.slide-item.turning-mode-slideX.before[data-v-77a3e620]{transform:translateX(-100%)}.slide-item.turning-mode-slideX.after[data-v-77a3e620]{transform:translateX(100%)}.slide-item.turning-mode-slideY[data-v-77a3e620]{transition:transform .35s}.slide-item.turning-mode-slideY.before[data-v-77a3e620]{transform:translateY(-100%)}.slide-item.turning-mode-slideY.after[data-v-77a3e620]{transform:translateY(100%)}.slide-content[data-v-77a3e620]{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-b7c6c0cc]{width:100%;height:100%;position:fixed;top:0;left:0;background-color:#1a1a1a;z-index:99}.return-button[data-v-b7c6c0cc]{height:60px;padding:20px 30px 0}.return-button .icon[data-v-b7c6c0cc]{color:#fff;font-size:36px;cursor:pointer}.return-button .icon[data-v-b7c6c0cc]:hover{color:#d14424}.slide-thumbnails-content[data-v-b7c6c0cc]{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-b7c6c0cc]{width:150px;outline:2px solid #aaa;margin-right:12px;margin-bottom:12px}.slide-thumbnails-content .thumbnail[data-v-b7c6c0cc]:hover{outline-color:#d14424}.slide-thumbnails-content .thumbnail.active[data-v-b7c6c0cc]{outline-width:3px;outline-color:#d14424}.writing-board[data-v-1d4eb7f0]{z-index:8;cursor:none;position:absolute;top:0;right:0;bottom:0;left:0}.blackboard[data-v-1d4eb7f0]{width:100%;height:100%;background-color:#0f392b}.canvas[data-v-1d4eb7f0]{position:absolute;top:0;left:0}.eraser[data-v-1d4eb7f0],.pen[data-v-1d4eb7f0]{pointer-events:none;position:absolute;z-index:9}.eraser .icon[data-v-1d4eb7f0],.pen .icon[data-v-1d4eb7f0]{filter:drop-shadow(2px 2px 2px #555)}.eraser[data-v-1d4eb7f0]{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-4e7c6a52]{font-size:12px;z-index:10;position:absolute;top:0;right:0;bottom:0;left:0}.writing-board-tool .writing-board-wrap[data-v-4e7c6a52]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.writing-board-tool .tools[data-v-4e7c6a52]{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-4e7c6a52]{padding:5px 10px;cursor:pointer}.writing-board-tool .btn[data-v-4e7c6a52]:hover{color:#d14424}.writing-board-tool .btn.active[data-v-4e7c6a52]{background-color:rgba(209,68,36,.5);color:#fff}.writing-board-tool .icon[data-v-4e7c6a52]{font-size:20px}.writing-board-tool .colors[data-v-4e7c6a52]{display:flex;padding:0 10px}.writing-board-tool .color[data-v-4e7c6a52]{width:16px;height:16px;border-radius:2px;cursor:pointer}.writing-board-tool .color[data-v-4e7c6a52]:hover{transform:scale(1.15)}.writing-board-tool .color.active[data-v-4e7c6a52]{transform:scale(1.3)}.writing-board-tool .color+.color[data-v-4e7c6a52]{margin-left:8px}.base-view[data-v-d72d6626]{width:100%;height:100%}.base-view.laser-pen[data-v-d72d6626]{cursor:url(data:image/png;base64,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) 20 20,default!important}.tools-left[data-v-d72d6626]{position:fixed;bottom:8px;left:8px;font-size:25px;color:#666;z-index:10}.tools-left .tool-btn[data-v-d72d6626]{opacity:.35;cursor:pointer}.tools-left .tool-btn[data-v-d72d6626]:hover{opacity:.9}.tools-left .tool-btn+.tool-btn[data-v-d72d6626]{margin-left:8px}.tools-right[data-v-d72d6626]{height:66px;position:fixed;bottom:-66px;right:0;z-index:5;padding:8px;transition:bottom .2s}.tools-right.visible[data-v-d72d6626]{bottom:0}.tools-right[data-v-d72d6626]:after{content:"";width:100%;height:66px;position:absolute;left:0;top:-66px}.tools-right .content[data-v-d72d6626]{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-d72d6626]{cursor:pointer}.tools-right .tool-btn.active[data-v-d72d6626],.tools-right .tool-btn[data-v-d72d6626]:hover{color:#d14424}.tools-right .tool-btn+.tool-btn[data-v-d72d6626]{margin-left:15px}.tools-right .page-number[data-v-d72d6626]{font-size:13px;padding:8px 12px;cursor:pointer}.presenter-view[data-v-5fba3eec]{width:100%;height:100%;display:flex}.toolbar[data-v-5fba3eec]{width:70px;height:100%;background-color:#fff;border-right:1px solid #eee;font-size:12px;margin:20px 0}.toolbar .tool-btn[data-v-5fba3eec]{display:flex;flex-direction:column;justify-content:center;align-items:center;cursor:pointer}.toolbar .tool-btn+.tool-btn[data-v-5fba3eec]{margin-top:22px}.toolbar .tool-btn.active[data-v-5fba3eec],.toolbar .tool-btn[data-v-5fba3eec]:hover{color:#d14424}.toolbar .divider[data-v-5fba3eec]{width:70%;min-width:70%;margin:24px 15%}.toolbar .tool-icon[data-v-5fba3eec]{margin-bottom:8px;font-size:22px}.content[data-v-5fba3eec]{width:calc(100% - 430px);height:100%;background-color:#1d1d1d}.slide-list-wrap[data-v-5fba3eec]{height:calc(100% - 190px);margin:20px;overflow:hidden;position:relative}.slide-list-wrap.laser-pen[data-v-5fba3eec]{cursor:url(data:image/png;base64,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) 20 20,default!important}.thumbnails[data-v-5fba3eec]{height:150px;padding:15px;white-space:nowrap;overflow-x:auto;overflow-y:hidden;border-top:1px solid #3a3a3a}.thumbnail[data-v-5fba3eec]{display:inline-block;outline:2px solid #aaa}.thumbnail+.thumbnail[data-v-5fba3eec]{margin-left:10px}.thumbnail[data-v-5fba3eec]:hover{outline-color:#d14424}.thumbnail.active[data-v-5fba3eec]{outline-width:3px;outline-color:#d14424}.remark[data-v-5fba3eec]{width:360px;height:100%;position:relative;background-color:#2a2a2a;border-left:1px solid #3a3a3a;color:#fff}.remark .header[data-v-5fba3eec]{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-5fba3eec]{height:calc(100% - 60px);padding:20px;line-height:1.5;overflow:auto;overflow:overlay}.remark .remark-scale[data-v-5fba3eec]{position:absolute;right:5px;bottom:5px;font-size:22px;display:flex}.remark .scale-btn[data-v-5fba3eec]{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-5fba3eec]{color:#666;cursor:no-drop}.remark .scale-btn[data-v-5fba3eec]:not(.disable):hover{background-color:#333}[data-v-5fba3eec]::-webkit-scrollbar{width:0;height:0}.pptist-screen[data-v-6bf3d190]{width:100%;height:100%}.mobile-operate[data-v-7fdc6c04]{position:absolute;z-index:100;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mobile-thumbnails[data-v-4a0c7aa7]{padding:10px;white-space:nowrap;overflow-x:auto;overflow-y:hidden}.thumbnail-item[data-v-4a0c7aa7]{position:relative;display:inline-block;outline:2px solid #aaa}.thumbnail-item+.thumbnail-item[data-v-4a0c7aa7]{margin-left:10px}.thumbnail-item.active[data-v-4a0c7aa7]{outline-color:#d14424}.thumbnail-item.active .label[data-v-4a0c7aa7]{background-color:#d14424}.thumbnail-item .label[data-v-4a0c7aa7]{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-4a0c7aa7]::-webkit-scrollbar{width:0;height:0}.slide-toolbar[data-v-29fba90e]{height:230px;background-color:#fff;box-shadow:0 0 15px 0 rgba(0,0,0,.1);display:flex;flex-direction:column}.remark[data-v-29fba90e]{position:relative;flex:1;border-bottom:1px solid #eee;line-height:1.5}.remark textarea[data-v-29fba90e]{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-29fba90e]{height:90px;border-bottom:1px solid #eee;padding:10px}.row[data-v-29fba90e]{width:100%;display:flex;align-items:center;margin-bottom:5px}.row .icon[data-v-29fba90e]{margin-right:3px}.element-toolbar[data-v-446388c6]{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-446388c6 .15s;animation:slideInUp-446388c6 .15s}.tabs[data-v-446388c6]{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-446388c6]{width:30%;padding:10px 10px 12px;margin:0 10%;border-bottom:2px solid transparent;text-align:center;cursor:pointer}.tab.active[data-v-446388c6]{border-bottom:2px solid #d14424}@-webkit-keyframes slideInUp-446388c6{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideInUp-446388c6{0%{transform:translateY(100%)}to{transform:translateY(0)}}.content[data-v-446388c6]{padding:10px;flex:1;overflow:auto}.row[data-v-446388c6]{width:100%;display:flex;align-items:center;margin-bottom:10px}.row .icon[data-v-446388c6]{margin-right:3px}.row-block[data-v-446388c6]{margin-bottom:10px;background-color:#f9f9f9;border-radius:2px;padding:10px}.label[data-v-446388c6]{font-size:13px;margin-bottom:20px;margin-left:6px}.colors[data-v-446388c6]{display:flex;flex-wrap:wrap;align-content:flex-start}.color[data-v-446388c6]{width:12%;margin-bottom:.57143%;padding-bottom:5px;display:flex;justify-content:center;align-items:center}.color[data-v-446388c6]:not(:nth-child(8n)){margin-right:.57143%}.color .color-block[data-v-446388c6]{width:30px;height:30px;border-radius:50%}.mobile-editor-header[data-v-10cd6713]{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-10cd6713]{display:flex;justify-content:center;align-items:center}.history-item[data-v-10cd6713]{margin-right:20px}.history-item.disable[data-v-10cd6713]{opacity:.5}.mobile-editor[data-v-8cdcde82]{height:100%;position:relative;background-color:#f9f9f9}.content[data-v-8cdcde82]{height:calc(100% - 280px);display:flex;justify-content:center;align-items:center}.viewport[data-v-8cdcde82]{transform-origin:0 0}.viewport-wrapper[data-v-8cdcde82]{position:relative;box-shadow:0 0 15px 0 rgba(0,0,0,.1)}.background[data-v-8cdcde82]{width:100%;height:100%;background-position:50%;position:absolute}.mobile-player[data-v-5293de3b]{transform-origin:0 0;background-color:#1d1d1d;position:relative}.screen-slide-list[data-v-5293de3b]{position:relative;width:100%;height:100%}.slide-item[data-v-5293de3b]{position:absolute;top:0;left:0;width:100%;height:100%}.slide-item.current[data-v-5293de3b]{z-index:2}.slide-item.hide[data-v-5293de3b]{opacity:0}.slide-item.turning-mode-no.before[data-v-5293de3b]{transform:translateY(-100%)}.slide-item.turning-mode-no.after[data-v-5293de3b]{transform:translateY(100%)}.slide-item.turning-mode-fade[data-v-5293de3b]{transition:opacity .75s}.slide-item.turning-mode-fade.after[data-v-5293de3b],.slide-item.turning-mode-fade.before[data-v-5293de3b]{pointer-events:none;opacity:0}.slide-item.turning-mode-slideX[data-v-5293de3b]{transition:transform .35s}.slide-item.turning-mode-slideX.before[data-v-5293de3b]{transform:translateX(-100%)}.slide-item.turning-mode-slideX.after[data-v-5293de3b]{transform:translateX(100%)}.slide-item.turning-mode-slideY[data-v-5293de3b]{transition:transform .35s}.slide-item.turning-mode-slideY.before[data-v-5293de3b]{transform:translateY(-100%)}.slide-item.turning-mode-slideY.after[data-v-5293de3b]{transform:translateY(100%)}.slide-content[data-v-5293de3b]{background-color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;justify-content:center;align-items:center}.header[data-v-5293de3b]{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-5293de3b .15s;animation:slideInDown-5293de3b .15s}.header .back[data-v-5293de3b]{height:100%}.thumbnails[data-v-5293de3b]{width:100%;position:absolute;bottom:0;left:0;z-index:99;background-color:rgba(29,29,29,.7);overflow:auto!important;-webkit-animation:slideInUp-5293de3b .15s;animation:slideInUp-5293de3b .15s}@-webkit-keyframes slideInUp-5293de3b{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideInUp-5293de3b{0%{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes slideInDown-5293de3b{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes slideInDown-5293de3b{0%{transform:translateY(-100%)}to{transform:translateY(0)}}.mobile-preview[data-v-4f906636]{height:100%;background-color:#f9f9f9}.tip[data-v-4f906636]{position:fixed;top:0;left:0;right:0;z-index:99}.thumbnail-list[data-v-4f906636]{height:calc(100% - 50px);padding:10px;overflow:auto}.thumbnail-item[data-v-4f906636]{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-4f906636]{margin-top:10px}.menu[data-v-4f906636]{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-4f906636]{width:50%;height:100%;display:flex;justify-content:center;align-items:center;font-size:13px}.menu .menu-item .icon[data-v-4f906636]{margin-right:8px;font-size:18px}#app,.mobile[data-v-1fb24d48]{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-4727b7ff]{display:none}.checkbox-button[data-v-699cf016]{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-699cf016]:hover{color:#d14424}.checkbox-button.checked[data-v-699cf016]{color:#fff;background-color:#d14424;border-color:#d14424}.checkbox-button.checked[data-v-699cf016]:hover{background:rgba(209,68,36,.9);border-color:rgba(209,68,36,.9)}.checkbox-button-group[data-v-b8aa6eac]{display:flex;align-items:center}.checkbox-button-group[data-v-b8aa6eac] .checkbox-button{border-radius:0;border-left-width:0;border-right-width:0;display:inline-block}.checkbox-button-group[data-v-b8aa6eac] .checkbox-button+.checkbox-button{border-left-width:1px}.checkbox-button-group[data-v-b8aa6eac] .checkbox-button:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px;border-left-width:1px}.checkbox-button-group[data-v-b8aa6eac] .checkbox-button:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right-width:1px}.checkerboard[data-v-7494636c]{background-size:contain}.alpha-checkboard-wrap[data-v-246b525c],.alpha[data-v-246b525c],.checkerboard[data-v-7494636c]{position:absolute;top:0;right:0;bottom:0;left:0}.alpha-checkboard-wrap[data-v-246b525c]{overflow:hidden}.alpha-gradient[data-v-246b525c]{position:absolute;top:0;right:0;bottom:0;left:0}.alpha-container[data-v-246b525c]{cursor:pointer;position:relative;z-index:2;height:100%;margin:0 3px}.alpha-pointer[data-v-246b525c]{z-index:2;position:absolute}.alpha-picker[data-v-246b525c]{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-60c3cca1]{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-60c3cca1]{cursor:pointer;margin:0 2px;position:relative;height:100%}.hue-pointer[data-v-60c3cca1]{z-index:2;position:absolute;top:0}.hue-picker[data-v-60c3cca1]{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-d230faf4],.saturation-white[data-v-d230faf4],.saturation[data-v-d230faf4]{position:absolute;top:0;right:0;bottom:0;left:0;cursor:pointer}.saturation-white[data-v-d230faf4]{background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.saturation-black[data-v-d230faf4]{background:linear-gradient(0deg,#000,transparent)}.saturation-pointer[data-v-d230faf4]{cursor:pointer;position:absolute}.saturation-circle[data-v-d230faf4]{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-2f428dde]{width:100%;position:relative;overflow:hidden;text-align:center;font-size:14px}.editable-input[data-v-2f428dde]:after{content:"#";position:absolute;left:0;top:50%;transform:translateY(-50%);color:#999}.input-content[data-v-2f428dde]{width:100%;padding:3px;border:0;border-bottom:1px solid #ddd;outline:none;text-align:center}.input-label[data-v-2f428dde]{text-transform:capitalize}.color-picker[data-v-c46eb110]{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-c46eb110]{width:100%;padding-bottom:50%;position:relative;overflow:hidden}.picker-controls[data-v-c46eb110]{display:flex}.picker-sliders[data-v-c46eb110]{padding:4px 0;flex:1}.picker-hue-wrap[data-v-c46eb110]{position:relative;height:10px}.picker-alpha-wrap[data-v-c46eb110]{position:relative;height:10px;margin-top:4px;overflow:hidden}.picker-color-wrap[data-v-c46eb110]{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-c46eb110]{background-size:auto}.picker-current-color[data-v-c46eb110]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2}.picker-field[data-v-c46eb110]{display:flex;margin-bottom:8px}.picker-field .straw[data-v-c46eb110]{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-c46eb110]{flex:1}.picker-presets[data-v-c46eb110]{display:flex;flex-wrap:wrap;align-content:flex-start}.picker-presets-color[data-v-c46eb110]{width:7%;margin-bottom:3.33333%;height:0;padding-bottom:7%;flex-shrink:0;position:relative;cursor:pointer}.picker-presets-color[data-v-c46eb110]:not(:nth-child(10n)){margin-right:3.33333%}.picker-presets-color.alpha[data-v-c46eb110]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAADBJREFUOE9jfPbs2X8GPEBSUhKfNAPjqAHDIgz+//+PNx08f/4cfzoYNYCBceiHAQC5flV5JzgrxQAAAABJRU5ErkJggg==)}.picker-presets-color-content[data-v-c46eb110]{position:absolute;top:0;right:0;bottom:0;left:0}.picker-gradient-presets[data-v-c46eb110]{display:flex;flex-wrap:wrap;align-content:flex-start}.picker-gradient-col[data-v-c46eb110]{width:7%;margin-bottom:3.33333%;display:flex;flex-direction:column}.picker-gradient-col[data-v-c46eb110]:not(:nth-child(10n)){margin-right:3.33333%}.picker-gradient-color[data-v-c46eb110]{width:100%;height:16px;position:relative;cursor:pointer}.recent-colors-title[data-v-c46eb110]{font-size:12px;margin-bottom:4px}.fullscreen-spin[data-v-16ead44e]{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-e470e712]{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-e470e712]{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-e470e712]{display:block}.menu-item:not(.disable):hover>.has-children.has-handler[data-v-e470e712]:after{transform:scale(1)}.menu-item[data-v-e470e712]:hover:not(.disable){background-color:rgba(209,68,36,.2)}.menu-item.divider[data-v-e470e712]{height:1px;overflow:hidden;margin:5px;background-color:#e5e5e5;line-height:0;padding:0}.menu-item.disable[data-v-e470e712]{color:#b1b1b1;cursor:no-drop}.menu-item-content[data-v-e470e712]{display:flex;align-items:center;justify-content:space-between;position:relative}.menu-item-content.has-children[data-v-e470e712]: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-e470e712]: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-e470e712]{opacity:.6}.menu-item-content .sub-menu[data-v-e470e712]{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-4b1afc5f]{height:100%;overflow:auto;font-size:12px;margin:0 -24px;padding:0 24px}.title[data-v-4b1afc5f]{font-size:14px;font-weight:700;border-bottom:1px solid #e5e5e5;padding:24px 0 5px 0}.title[data-v-4b1afc5f]:first-child{padding-top:0}.hotkey-item[data-v-4b1afc5f]{border-bottom:1px solid #e5e5e5;padding:15px 0 5px 0;display:flex;align-items:center}.label[data-v-4b1afc5f]{width:140px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.editor-header[data-v-6c34fc9c]{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-6c34fc9c],.menu-item[data-v-6c34fc9c],.right[data-v-6c34fc9c]{display:flex;justify-content:center;align-items:center}.menu-item[data-v-6c34fc9c]{height:100%;font-size:14px;padding:0 10px;transition:background-color .2s;cursor:pointer}.menu-item .text[data-v-6c34fc9c]{margin-left:4px}.left .menu-item[data-v-6c34fc9c]:hover{background-color:#f9f9f9}svg[data-v-71b17928],svg[data-v-41071294],svg[data-v-b5bace06]{overflow:visible;position:absolute;z-index:2;top:0;left:0}.image-clip-handler[data-v-3e0199ec]{width:100%;height:100%;position:relative}.image-clip-handler .bottom-img[data-v-3e0199ec]{top:0;left:0;width:100%;height:100%;opacity:.5}.image-clip-handler img[data-v-3e0199ec]{width:100%;height:100%}.image-clip-handler .top-image-content[data-v-3e0199ec]{position:absolute;overflow:hidden}.image-clip-handler .top-image-content img[data-v-3e0199ec]{position:absolute}.operate[data-v-3e0199ec]{position:absolute;width:100%;height:100%;top:0;left:0;cursor:move}.clip-point[data-v-3e0199ec]{position:absolute;width:16px;height:16px}.clip-point svg[data-v-3e0199ec]{overflow:visible}.clip-point.left-top[data-v-3e0199ec]{left:0;top:0}.clip-point.right-top[data-v-3e0199ec]{left:100%;top:0;transform:rotate(90deg);transform-origin:0 0}.clip-point.left-bottom[data-v-3e0199ec]{left:0;top:100%;transform:rotate(-90deg);transform-origin:0 0}.clip-point.right-bottom[data-v-3e0199ec]{left:100%;top:100%;transform:rotate(180deg);transform-origin:0 0}.clip-point.top[data-v-3e0199ec]{left:50%;top:0;margin-left:-8px}.clip-point.bottom[data-v-3e0199ec]{left:50%;bottom:0;margin-left:-8px;transform:rotate(180deg)}.clip-point.left[data-v-3e0199ec]{left:0;top:50%;margin-top:-8px;transform:rotate(-90deg)}.clip-point.right[data-v-3e0199ec]{right:0;top:50%;margin-top:-8px;transform:rotate(90deg)}.clip-point.bottom.rotate-135[data-v-3e0199ec],.clip-point.left-bottom.rotate-90[data-v-3e0199ec],.clip-point.left-top.rotate-0[data-v-3e0199ec],.clip-point.left.rotate-45[data-v-3e0199ec],.clip-point.right-bottom.rotate-0[data-v-3e0199ec],.clip-point.right-top.rotate-90[data-v-3e0199ec],.clip-point.right.rotate-45[data-v-3e0199ec],.clip-point.top.rotate-135[data-v-3e0199ec]{cursor:nwse-resize}.clip-point.bottom.rotate-0[data-v-3e0199ec],.clip-point.left-bottom.rotate-135[data-v-3e0199ec],.clip-point.left-top.rotate-45[data-v-3e0199ec],.clip-point.left.rotate-90[data-v-3e0199ec],.clip-point.right-bottom.rotate-45[data-v-3e0199ec],.clip-point.right-top.rotate-135[data-v-3e0199ec],.clip-point.right.rotate-90[data-v-3e0199ec],.clip-point.top.rotate-0[data-v-3e0199ec]{cursor:ns-resize}.clip-point.bottom.rotate-45[data-v-3e0199ec],.clip-point.left-bottom.rotate-0[data-v-3e0199ec],.clip-point.left-top.rotate-90[data-v-3e0199ec],.clip-point.left.rotate-135[data-v-3e0199ec],.clip-point.right-bottom.rotate-90[data-v-3e0199ec],.clip-point.right-top.rotate-0[data-v-3e0199ec],.clip-point.right.rotate-135[data-v-3e0199ec],.clip-point.top.rotate-45[data-v-3e0199ec]{cursor:nesw-resize}.clip-point.bottom.rotate-90[data-v-3e0199ec],.clip-point.left-bottom.rotate-45[data-v-3e0199ec],.clip-point.left-top.rotate-135[data-v-3e0199ec],.clip-point.left.rotate-0[data-v-3e0199ec],.clip-point.right-bottom.rotate-135[data-v-3e0199ec],.clip-point.right-top.rotate-45[data-v-3e0199ec],.clip-point.right.rotate-0[data-v-3e0199ec],.clip-point.top.rotate-90[data-v-3e0199ec]{cursor:ew-resize}.editable-element-image[data-v-30dc7050]{position:absolute}.editable-element-image.lock .element-content[data-v-30dc7050]{cursor:default}.rotate-wrapper[data-v-30dc7050]{width:100%;height:100%}.element-content[data-v-30dc7050]{width:100%;height:100%;position:relative;cursor:move}.element-content .image-content[data-v-30dc7050]{width:100%;height:100%;overflow:hidden;position:relative}.element-content img[data-v-30dc7050]{position:absolute}svg[data-v-61b7d06a]{overflow:visible;position:absolute;top:0;left:0}.prosemirror-editor[data-v-1debd6ff]{cursor:text}.editable-element-text[data-v-7135a611]{position:absolute}.editable-element-text.lock .element-content[data-v-7135a611]{cursor:default}.rotate-wrapper[data-v-7135a611]{width:100%;height:100%}.element-content[data-v-7135a611]{position:relative;padding:10px;line-height:1.5;word-break:break-word;cursor:move}.element-content .text[data-v-7135a611]{position:relative}.element-content[data-v-7135a611] a{cursor:text}.drag-handler[data-v-7135a611]{height:10px;position:absolute;left:0;right:0}.drag-handler.top[data-v-7135a611]{top:0}.drag-handler.bottom[data-v-7135a611]{bottom:0}.editable-element-shape[data-v-d4c718fa]{position:absolute;pointer-events:none}.editable-element-shape.lock .element-content[data-v-d4c718fa]{cursor:default}.rotate-wrapper[data-v-d4c718fa]{width:100%;height:100%}.element-content[data-v-d4c718fa]{width:100%;height:100%;position:relative;cursor:move}.element-content svg[data-v-d4c718fa]{transform-origin:0 0;overflow:visible}.element-content .shape-path[data-v-d4c718fa]{pointer-events:all}.shape-text[data-v-d4c718fa]{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-d4c718fa]{pointer-events:all}.shape-text.top[data-v-d4c718fa]{justify-content:flex-start}.shape-text.middle[data-v-d4c718fa]{justify-content:center}.shape-text.bottom[data-v-d4c718fa]{justify-content:flex-end}.editable-element-shape[data-v-6550e504]{position:absolute;pointer-events:none}.editable-element-shape.lock .line-path[data-v-6550e504],.editable-element-shape.lock .line-point[data-v-6550e504]{cursor:default}.element-content[data-v-6550e504]{width:100%;height:100%;position:relative}.element-content svg[data-v-6550e504]{transform-origin:0 0;overflow:visible}.line-path[data-v-6550e504],.line-point[data-v-6550e504]{pointer-events:all;cursor:move}.chart[data-v-1aa2357d]{display:flex}.chart-content[data-v-1aa2357d]{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-f3c03862]{position:absolute}.editable-element-chart.lock .element-content[data-v-f3c03862]{cursor:default}.rotate-wrapper[data-v-f3c03862]{width:100%;height:100%}.element-content[data-v-f3c03862]{width:100%;height:100%;overflow:hidden;cursor:move}.custom-textarea[data-v-cdb58a1e]{border:0;outline:0;-webkit-user-modify:read-write-plaintext-only;-moz-user-modify:read-write-plaintext-only}.editable-table[data-v-bae8c794],table[data-v-bae8c794]{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}table[data-v-bae8c794]{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-bae8c794]{background-color:#fff}table.theme tr:nth-child(2n) .cell[data-v-bae8c794]{background-color:var(--subThemeColor1)}table.theme tr:nth-child(odd) .cell[data-v-bae8c794]{background-color:var(--subThemeColor2)}table.theme.col-footer tr .cell[data-v-bae8c794]:last-child,table.theme.col-header tr .cell[data-v-bae8c794]:first-child,table.theme.row-footer tr:last-child .cell[data-v-bae8c794],table.theme.row-header tr:first-child .cell[data-v-bae8c794]{background-color:var(--themeColor)}table tr[data-v-bae8c794]{height:36px}table .cell[data-v-bae8c794]{position:relative;white-space:normal;word-wrap:break-word;vertical-align:middle;font-size:14px;cursor:default}table .cell.selected[data-v-bae8c794]:after{content:"";width:100%;height:100%;position:absolute;top:0;left:0;background-color:hsla(0,0%,40%,.4)}table .cell-text[data-v-bae8c794]{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-bae8c794]{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.drag-line[data-v-bae8c794]{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-6391c486]{position:absolute}.editable-element-table.lock .element-content[data-v-6391c486]{cursor:default}.rotate-wrapper[data-v-6391c486]{width:100%;height:100%}.element-content[data-v-6391c486]{width:100%;height:100%;position:relative;cursor:move}.table-mask[data-v-6391c486]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .2s}.table-mask .mask-tip[data-v-6391c486]{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-6391c486]:hover:not(.lock){opacity:.9}.editable-element-latex[data-v-31390388]{position:absolute}.editable-element-latex.lock .element-content[data-v-31390388]{cursor:default}.rotate-wrapper[data-v-31390388]{width:100%;height:100%}.element-content[data-v-31390388]{width:100%;height:100%;position:relative;cursor:move}.element-content svg[data-v-31390388]{transform-origin:0 0;overflow:visible}.video-player[data-v-2fc4c202]{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-2fc4c202],.video-player.playing .controller[data-v-2fc4c202]{opacity:0}.video-player.playing:hover .controller-mask[data-v-2fc4c202],.video-player.playing:hover .controller[data-v-2fc4c202]{opacity:1}}.video-player.loading .bezel .diplayer-loading-icon[data-v-2fc4c202]{display:block}.video-player.hide-controller[data-v-2fc4c202]{cursor:none}.video-player.hide-controller .controller-mask[data-v-2fc4c202],.video-player.hide-controller .controller[data-v-2fc4c202]{opacity:0;transform:translateY(100%)}.video-wrap[data-v-2fc4c202]{position:relative;background:#000;font-size:0;width:100%;height:100%}.video-wrap .video[data-v-2fc4c202]{width:100%;height:100%}.controller-mask[data-v-2fc4c202]{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-2fc4c202]{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-2fc4c202]{padding:5px 0;cursor:pointer;position:absolute;bottom:33px;width:calc(100% - 40px);height:3px}.controller .bar-wrap:hover .bar .played .thumb[data-v-2fc4c202]{transform:scale(1)}.controller .bar-wrap .bar-time[data-v-2fc4c202]{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-2fc4c202]{opacity:0}.controller .bar-wrap .bar[data-v-2fc4c202]{position:relative;height:3px;width:100%;background:hsla(0,0%,100%,.2);cursor:pointer}.controller .bar-wrap .bar .loaded[data-v-2fc4c202]{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-2fc4c202]{position:absolute;left:0;top:0;bottom:0;height:3px;will-change:width;background-color:#fff}.controller .bar-wrap .bar .played .thumb[data-v-2fc4c202]{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-2fc4c202]{height:38px;position:absolute;bottom:0;display:flex;align-items:center}.controller .icons.icons-right[data-v-2fc4c202]{right:8px}.controller .icons .time[data-v-2fc4c202]{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-2fc4c202]{width:40px;height:100%;position:relative;cursor:pointer;display:flex;align-items:center;font-size:20px}.controller .icons .icon.play-icon[data-v-2fc4c202]{font-size:26px}.controller .icons .icon .icon-content[data-v-2fc4c202]{transition:all .2s ease-in-out;opacity:.8;color:#fff}.controller .icons .icon.loop-icon[data-v-2fc4c202]{font-size:12px}.controller .icons .icon.loop-icon .icon-content[data-v-2fc4c202]{opacity:.5}.controller .icons .icon.speed-icon[data-v-2fc4c202]{font-size:12px;position:relative}.controller .icons .icon .speed-menu[data-v-2fc4c202]{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-2fc4c202]{padding:8px 0;text-align:center}.controller .icons .icon .speed-menu .speed-menu-item[data-v-2fc4c202]:hover{background-color:#393833;color:#fff}.controller .icons .icon .speed-menu .speed-menu-item.active[data-v-2fc4c202]{font-weight:700;color:#fff}.controller .icons .icon.active .icon-content[data-v-2fc4c202],.controller .icons .icon:hover .icon-content[data-v-2fc4c202]{opacity:1}.controller .icons .volume[data-v-2fc4c202]{height:100%;position:relative;cursor:pointer;display:flex;align-items:center}.controller .icons .volume:hover .volume-bar-wrap .volume-bar[data-v-2fc4c202]{width:45px}.controller .icons .volume:hover .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-2fc4c202]{transform:scale(1)}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar[data-v-2fc4c202]{width:45px}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-2fc4c202]{transform:scale(1)}.controller .icons .volume-bar-wrap[data-v-2fc4c202]{display:inline-block;margin:0 15px 0 -5px;vertical-align:middle;height:100%}.controller .icons .volume-bar[data-v-2fc4c202]{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-2fc4c202]{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-2fc4c202]{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-2fc4c202]{display:inline-block;height:100%}.bezel[data-v-2fc4c202]{position:absolute;left:0;right:0;top:0;bottom:0;font-size:22px;color:#fff;pointer-events:none}.bezel .bezel-icon[data-v-2fc4c202]{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-2fc4c202]{-webkit-animation:bezel-hide-2fc4c202 .5s linear;animation:bezel-hide-2fc4c202 .5s linear}@-webkit-keyframes bezel-hide-2fc4c202{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(2)}}@keyframes bezel-hide-2fc4c202{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(2)}}.bezel .loading-icon[data-v-2fc4c202]{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-2fc4c202]{display:none}.bezel .loading-icon .loading-dot[data-v-2fc4c202]{-webkit-animation:loading-dot-fade-2fc4c202 .8s ease infinite;animation:loading-dot-fade-2fc4c202 .8s ease infinite;opacity:0;transform-origin:4px 4px}.bezel .loading-icon .loading-dot.loading-dot-7[data-v-2fc4c202]{-webkit-animation-delay:.7s;animation-delay:.7s}.bezel .loading-icon .loading-dot.loading-dot-6[data-v-2fc4c202]{-webkit-animation-delay:.6s;animation-delay:.6s}.bezel .loading-icon .loading-dot.loading-dot-5[data-v-2fc4c202]{-webkit-animation-delay:.5s;animation-delay:.5s}.bezel .loading-icon .loading-dot.loading-dot-4[data-v-2fc4c202]{-webkit-animation-delay:.4s;animation-delay:.4s}.bezel .loading-icon .loading-dot.loading-dot-3[data-v-2fc4c202]{-webkit-animation-delay:.3s;animation-delay:.3s}.bezel .loading-icon .loading-dot.loading-dot-2[data-v-2fc4c202]{-webkit-animation-delay:.2s;animation-delay:.2s}.bezel .loading-icon .loading-dot.loading-dot-1[data-v-2fc4c202]{-webkit-animation-delay:.1s;animation-delay:.1s}@-webkit-keyframes loading-dot-fade-2fc4c202{0%{opacity:.7;transform:scale(1.2)}50%{opacity:.25;transform:scale(.9)}to{opacity:.25;transform:scale(.85)}}@keyframes loading-dot-fade-2fc4c202{0%{opacity:.7;transform:scale(1.2)}50%{opacity:.25;transform:scale(.9)}to{opacity:.25;transform:scale(.85)}}.editable-element-video[data-v-9d5469c6]{position:absolute}.editable-element-video.lock .handler-border[data-v-9d5469c6]{cursor:default}.rotate-wrapper[data-v-9d5469c6]{width:100%;height:100%}.element-content[data-v-9d5469c6]{width:100%;height:100%;position:relative}.handler-border[data-v-9d5469c6]{position:absolute;cursor:move}.handler-border.t[data-v-9d5469c6]{width:100%;height:20px;top:0;left:0}.handler-border.b[data-v-9d5469c6]{width:100%;height:5px;bottom:0;left:0}.handler-border.l[data-v-9d5469c6]{width:10px;height:100%;left:0;top:0}.handler-border.r[data-v-9d5469c6]{width:10px;height:100%;right:0;top:0}.audio-player[data-v-121f3d11]{width:280px;height:50px;position:relative;line-height:1;transform-origin:0 0;background:#000}.audio-player[data-v-121f3d11],.controller[data-v-121f3d11]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.controller[data-v-121f3d11]{position:absolute;bottom:0;left:0;right:0;height:41px;padding:0 20px;transition:all .3s ease}.controller .bar-wrap[data-v-121f3d11]{padding:5px 0;cursor:pointer;position:absolute;bottom:35px;width:calc(100% - 40px);height:3px}.controller .bar-wrap:hover .bar .played .thumb[data-v-121f3d11]{transform:scale(1)}.controller .bar-wrap .bar-time[data-v-121f3d11]{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-121f3d11]{opacity:0}.controller .bar-wrap .bar[data-v-121f3d11]{position:relative;height:3px;width:100%;background:hsla(0,0%,100%,.2);cursor:pointer}.controller .bar-wrap .bar .loaded[data-v-121f3d11]{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-121f3d11]{position:absolute;left:0;top:0;bottom:0;height:3px;will-change:width;background-color:#fff}.controller .bar-wrap .bar .played .thumb[data-v-121f3d11]{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-121f3d11]{height:38px;position:absolute;bottom:0;left:14px;display:flex;align-items:center}.controller .icons .icon[data-v-121f3d11]{width:36px;height:100%;position:relative;cursor:pointer;display:flex;align-items:center;font-size:20px}.controller .icons .icon.play-icon[data-v-121f3d11]{font-size:26px}.controller .icons .icon .icon-content[data-v-121f3d11]{transition:all .2s ease-in-out;opacity:.8;color:#fff}.controller .icons .icon.active .icon-content[data-v-121f3d11],.controller .icons .icon:hover .icon-content[data-v-121f3d11]{opacity:1}.controller .icons .volume[data-v-121f3d11]{height:100%;position:relative;cursor:pointer;display:flex;align-items:center}.controller .icons .volume:hover .volume-bar-wrap .volume-bar[data-v-121f3d11]{width:45px}.controller .icons .volume:hover .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-121f3d11]{transform:scale(1)}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar[data-v-121f3d11]{width:45px}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-121f3d11]{transform:scale(1)}.controller .icons .volume-bar-wrap[data-v-121f3d11]{display:inline-block;margin:0 15px 0 -5px;vertical-align:middle;height:100%}.controller .icons .volume-bar[data-v-121f3d11]{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-121f3d11]{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-121f3d11]{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-121f3d11]{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-121f3d11]{margin-right:2px}.controller .time .dtime[data-v-121f3d11]{margin-left:2px}.editable-element-audio[data-v-001bfbc4]{position:absolute}.editable-element-audio.lock .audio-icon[data-v-001bfbc4]{cursor:default}.rotate-wrapper[data-v-001bfbc4]{width:100%;height:100%}.element-content[data-v-001bfbc4]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.audio-icon[data-v-001bfbc4]{cursor:move}.audio-player[data-v-001bfbc4]{position:absolute}.mouse-selection[data-v-0d6c0f73]{position:absolute;background-color:rgba(209,68,36,.1);border:1px solid #d14424;z-index:200}.mouse-selection.quadrant-1[data-v-0d6c0f73]{transform-origin:0 0;transform:rotate(180deg)}.mouse-selection.quadrant-2[data-v-0d6c0f73]{transform-origin:50% 0;transform:rotate(180deg)}.mouse-selection.quadrant-3[data-v-0d6c0f73]{transform-origin:0 50%;transform:rotate(180deg)}.mouse-selection.quadrant-4[data-v-0d6c0f73]{transform-origin:0 0;transform:rotate(0deg)}.grid-lines[data-v-10cd6d44]{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-6f1e1261]{width:100%;height:100%;background-position:50%;position:absolute}.alignment-line[data-v-37fa6068]{position:absolute;z-index:100}.alignment-line .line[data-v-37fa6068]{width:0;height:0;border:0 dashed #d14424}.alignment-line .line.vertical[data-v-37fa6068]{transform:translateY(-.5px);border-left-width:1px}.alignment-line .line.horizontal[data-v-37fa6068]{transform:translateX(-.5px);border-top-width:1px}.ruler[data-v-60e06332]{font-size:12px}.h[data-v-60e06332]{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-60e06332]{height:100%;line-height:20px;text-align:right;flex:1;padding-right:5px;position:relative}.h .ruler-marker-100.hide span[data-v-60e06332],.h .ruler-marker-100.omit[data-v-60e06332]:before{display:none}.h .ruler-marker-100[data-v-60e06332]:not(:last-child):after{content:"";width:.1px;height:12px;position:absolute;right:0;bottom:0;background-color:#999}.h .ruler-marker-100[data-v-60e06332]:before{content:"";width:.1px;height:8px;position:absolute;right:50%;bottom:0;background-color:#999}.v[data-v-60e06332]{position:absolute;background-color:#fff;border:1px solid #eee;width:20px;left:5px;overflow:hidden}.v .ruler-marker-100[data-v-60e06332]{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-60e06332],.v .ruler-marker-100.omit[data-v-60e06332]:before{display:none}.v .ruler-marker-100[data-v-60e06332]:not(:last-child):after{content:"";height:.1px;width:12px;position:absolute;bottom:0;right:0;background-color:#999}.v .ruler-marker-100[data-v-60e06332]:before{content:"";height:.1px;width:8px;position:absolute;bottom:50%;right:0;background-color:#999}.element-create-selection[data-v-5a941f07]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;cursor:crosshair}.element-create-selection svg[data-v-5a941f07]{overflow:visible}.selection[data-v-5a941f07]{position:absolute;opacity:.8}.selection[data-v-5a941f07]:not(.line){border:1px solid #d14424}.resize-handler[data-v-881ee3f8]{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-881ee3f8],.resize-handler.left-bottom.rotate-90[data-v-881ee3f8],.resize-handler.left-top.rotate-0[data-v-881ee3f8],.resize-handler.left.rotate-45[data-v-881ee3f8],.resize-handler.right-bottom.rotate-0[data-v-881ee3f8],.resize-handler.right-top.rotate-90[data-v-881ee3f8],.resize-handler.right.rotate-45[data-v-881ee3f8],.resize-handler.top.rotate-135[data-v-881ee3f8]{cursor:nwse-resize}.resize-handler.bottom.rotate-0[data-v-881ee3f8],.resize-handler.left-bottom.rotate-135[data-v-881ee3f8],.resize-handler.left-top.rotate-45[data-v-881ee3f8],.resize-handler.left.rotate-90[data-v-881ee3f8],.resize-handler.right-bottom.rotate-45[data-v-881ee3f8],.resize-handler.right-top.rotate-135[data-v-881ee3f8],.resize-handler.right.rotate-90[data-v-881ee3f8],.resize-handler.top.rotate-0[data-v-881ee3f8]{cursor:ns-resize}.resize-handler.bottom.rotate-45[data-v-881ee3f8],.resize-handler.left-bottom.rotate-0[data-v-881ee3f8],.resize-handler.left-top.rotate-90[data-v-881ee3f8],.resize-handler.left.rotate-135[data-v-881ee3f8],.resize-handler.right-bottom.rotate-90[data-v-881ee3f8],.resize-handler.right-top.rotate-0[data-v-881ee3f8],.resize-handler.right.rotate-135[data-v-881ee3f8],.resize-handler.top.rotate-45[data-v-881ee3f8]{cursor:nesw-resize}.resize-handler.bottom.rotate-90[data-v-881ee3f8],.resize-handler.left-bottom.rotate-45[data-v-881ee3f8],.resize-handler.left-top.rotate-135[data-v-881ee3f8],.resize-handler.left.rotate-0[data-v-881ee3f8],.resize-handler.right-bottom.rotate-135[data-v-881ee3f8],.resize-handler.right-top.rotate-45[data-v-881ee3f8],.resize-handler.right.rotate-0[data-v-881ee3f8],.resize-handler.top.rotate-90[data-v-881ee3f8]{cursor:ew-resize}.border-line[data-v-7170d1be]{position:absolute;width:0;height:0;left:0;top:0;border:0 dashed #d14424}.border-line.top[data-v-7170d1be]{border-top-width:1px}.border-line.bottom[data-v-7170d1be]{border-bottom-width:1px}.border-line.left[data-v-7170d1be]{border-left-width:1px}.border-line.right[data-v-7170d1be]{border-right-width:1px}.border-line.wide[data-v-7170d1be]:before{content:"";position:absolute;background:transparent;cursor:move}.border-line.wide.top[data-v-7170d1be]:before{top:-8px;left:-8px;width:calc(100% + 16px);height:16px}.border-line.wide.bottom[data-v-7170d1be]:before{bottom:-8px;left:-8px;width:calc(100% + 16px);height:16px}.border-line.wide.left[data-v-7170d1be]:before{top:-8px;left:-8px;width:16px;height:calc(100% + 16px)}.border-line.wide.right[data-v-7170d1be]:before{top:-8px;right:-8px;width:16px;height:calc(100% + 16px)}.multi-select-operate[data-v-defbd922]{position:absolute;top:0;left:0;z-index:101}.rotate-handler[data-v-b99d8dae]{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-b99d8dae]:active{cursor:-webkit-grabbing;cursor:grabbing}.image-element-operate.cliping[data-v-46b250c2]{visibility:hidden}svg[data-v-4659f395]{position:absolute;left:0;top:0;pointer-events:none;transform-origin:0 0}.anchor-line[data-v-4659f395]{stroke-width:1px;stroke-dasharray:5 5;opacity:.5}.link-handler[data-v-bb722fc0]{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-bb722fc0]{max-width:300px;margin-right:20px;word-break:keep-all;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.btns[data-v-bb722fc0]{display:flex;align-items:center}.btns .btn[data-v-bb722fc0]{word-break:keep-all;cursor:pointer}.operate[data-v-c3f7ca96]{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-c3f7ca96]{opacity:0}.animation-index[data-v-c3f7ca96]{position:absolute;top:0;left:-24px;font-size:12px}.animation-index .index-item[data-v-c3f7ca96]{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-c3f7ca96]{margin-top:5px}.base-element-image[data-v-66f2009f]{position:absolute}.rotate-wrapper[data-v-66f2009f]{width:100%;height:100%}.element-content[data-v-66f2009f]{width:100%;height:100%;position:relative}.element-content .image-content[data-v-66f2009f]{width:100%;height:100%;overflow:hidden;position:relative}.base-element-text[data-v-659e869d],.element-content img[data-v-66f2009f]{position:absolute}.rotate-wrapper[data-v-659e869d]{width:100%;height:100%}.element-content[data-v-659e869d]{position:relative;padding:10px;line-height:1.5;word-break:break-word}.element-content .text[data-v-659e869d]{position:relative}.base-element-shape[data-v-073084bf]{position:absolute}.rotate-wrapper[data-v-073084bf]{width:100%;height:100%}.element-content[data-v-073084bf]{width:100%;height:100%;position:relative}.element-content svg[data-v-073084bf]{transform-origin:0 0;overflow:visible}.shape-text[data-v-073084bf]{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-073084bf]{justify-content:flex-start}.shape-text.middle[data-v-073084bf]{justify-content:center}.shape-text.bottom[data-v-073084bf]{justify-content:flex-end}.base-element-line[data-v-340cdee8]{position:absolute}.element-content[data-v-340cdee8]{width:100%;height:100%;position:relative}.element-content svg[data-v-340cdee8]{transform-origin:0 0;overflow:visible}.base-element-chart[data-v-7d2e5c4e]{position:absolute}.element-content[data-v-7d2e5c4e],.rotate-wrapper[data-v-7d2e5c4e]{width:100%;height:100%}.static-table[data-v-00712fa4],table[data-v-00712fa4]{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}table[data-v-00712fa4]{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-00712fa4]{background-color:#fff}table.theme tr:nth-child(2n) .cell[data-v-00712fa4]{background-color:var(--subThemeColor1)}table.theme tr:nth-child(odd) .cell[data-v-00712fa4]{background-color:var(--subThemeColor2)}table.theme.col-footer tr .cell[data-v-00712fa4]:last-child,table.theme.col-header tr .cell[data-v-00712fa4]:first-child,table.theme.row-footer tr:last-child .cell[data-v-00712fa4],table.theme.row-header tr:first-child .cell[data-v-00712fa4]{background-color:var(--themeColor)}table tr[data-v-00712fa4]{height:36px}table .cell[data-v-00712fa4]{position:relative;white-space:normal;word-wrap:break-word;vertical-align:middle}table .cell-text[data-v-00712fa4]{min-height:32px;padding:5px;line-height:1.5}.base-element-table[data-v-53e0f1ba]{position:absolute}.rotate-wrapper[data-v-53e0f1ba]{width:100%;height:100%}.element-content[data-v-53e0f1ba]{width:100%;height:100%;position:relative}.base-element-latex[data-v-9a47b5f4]{position:absolute}.rotate-wrapper[data-v-9a47b5f4]{width:100%;height:100%}.element-content[data-v-9a47b5f4]{width:100%;height:100%;position:relative}.element-content svg[data-v-9a47b5f4]{transform-origin:0 0;overflow:visible}.base-element-video[data-v-56b7f716]{position:absolute}.rotate-wrapper[data-v-56b7f716]{width:100%;height:100%}.element-content[data-v-56b7f716]{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-56b7f716]{font-size:140px;color:#aaa}.base-element-audio[data-v-5258e03b]{position:absolute}.rotate-wrapper[data-v-5258e03b]{width:100%;height:100%}.element-content[data-v-5258e03b]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.audio-icon[data-v-5258e03b]{cursor:move}.thumbnail-slide[data-v-f69fb5b2]{background-color:#fff;overflow:hidden}.elements[data-v-f69fb5b2]{transform-origin:0 0}.background[data-v-f69fb5b2]{width:100%;height:100%;background-position:50%;position:absolute}.placeholder[data-v-f69fb5b2]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.tabs[data-v-dfb654e8]{display:flex;justify-content:flex-start;align-items:center;border-bottom:1px solid #eee;margin-bottom:20px}.tab[data-v-dfb654e8]{padding:0 10px 8px;border-bottom:2px solid transparent;cursor:pointer}.tab.active[data-v-dfb654e8]{border-bottom:2px solid #d14424}.input[data-v-dfb654e8]{width:100%;height:32px}.preview[data-v-dfb654e8]{margin-top:12px}.thumbnail[data-v-dfb654e8]{outline:1px solid rgba(209,68,36,.15);margin-top:5px}.btns[data-v-dfb654e8]{margin-top:20px;text-align:right}.canvas[data-v-529c7227]{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-529c7227]{cursor:-webkit-grab;cursor:grab;position:absolute;top:0;right:0;bottom:0;left:0}.viewport-wrapper[data-v-529c7227]{position:absolute;box-shadow:0 0 15px 0 rgba(0,0,0,.1)}.viewport[data-v-529c7227]{position:absolute;top:0;left:0;transform-origin:0 0}.shape-pool[data-v-5788e0d2]{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-5788e0d2]{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-5788e0d2]{display:flex;flex-wrap:wrap;align-content:flex-start;margin-bottom:10px}.shape-item[data-v-5788e0d2]{width:8%;margin-bottom:2.22222%;height:0;padding-bottom:8%;flex-shrink:0;position:relative;cursor:pointer}.shape-item[data-v-5788e0d2]:not(:nth-child(10n)){margin-right:2.22222%}.shape-content[data-v-5788e0d2]{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-5788e0d2]:not(.outlined){stroke:#d14424}.shape-content:hover .shape-path.outlined[data-v-5788e0d2]{fill:#d14424}.shape-content svg[data-v-5788e0d2]:not(:root){overflow:visible}.line-pool[data-v-bca68faa]{width:220px;overflow:auto;margin-bottom:-12px;margin-right:-12px;padding-right:12px}.category-name[data-v-bca68faa]{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-bca68faa]{display:flex;flex-wrap:wrap;align-content:flex-start;margin-bottom:10px}.line-item[data-v-bca68faa]{width:19%;margin-bottom:1.25%;height:0;padding-bottom:19%;flex-shrink:0;position:relative;cursor:pointer}.line-item[data-v-bca68faa]:not(:nth-child(5n)){margin-right:1.25%}.line-content[data-v-bca68faa]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;color:#999}.line-content[data-v-bca68faa]:hover{color:#d14424}.line-content svg[data-v-bca68faa]:not(:root){overflow:visible}.chart-pool[data-v-3870b42e]{width:200px;margin-bottom:-5px;display:flex;flex-wrap:wrap;align-content:flex-start}.chart-item[data-v-3870b42e]{width:19%;margin-bottom:1.25%;height:0;padding-bottom:19%;flex-shrink:0;position:relative;cursor:pointer}.chart-item[data-v-3870b42e]:not(:nth-child(5n)){margin-right:1.25%}.chart-content[data-v-3870b42e]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;color:#999}.chart-content[data-v-3870b42e]:hover{color:#d14424}.table-generator[data-v-144fbd05]{width:100%;margin-top:-12px}.title[data-v-144fbd05]{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-144fbd05]{cursor:pointer}.title .right[data-v-144fbd05]:hover{color:#d14424}table[data-v-144fbd05]{border-collapse:separate}td[data-v-144fbd05]{width:23px;height:23px;line-height:23px;border:2px solid #fff;background-color:#f7f7f7}.cell[data-v-144fbd05]{width:100%;height:100%;border:1px solid #dcdcdc}.cell.active[data-v-144fbd05]{background-color:rgba(209,68,36,.1);border-color:#d14424}.custom[data-v-144fbd05]{width:230px}.custom .row[data-v-144fbd05]{display:flex;align-items:center}.custom .row+.row[data-v-144fbd05]{margin-top:10px}.btns[data-v-144fbd05]{margin-top:10px;text-align:right}.btns .btn[data-v-144fbd05]{margin-left:10px}.media-input[data-v-b9437110]{width:480px}.tabs[data-v-b9437110]{display:flex;justify-content:flex-start;align-items:center;border-bottom:1px solid #eee;margin-bottom:20px}.tab[data-v-b9437110]{padding:0 10px 8px;border-bottom:2px solid transparent;cursor:pointer}.tab.active[data-v-b9437110]{border-bottom:2px solid #d14424}.btns[data-v-b9437110]{margin-top:10px;text-align:right}svg[data-v-1c41d9fe]{overflow:hidden}.latex-editor[data-v-2d73bf28]{height:560px}.container[data-v-2d73bf28]{height:calc(100% - 50px);display:flex;padding-top:25px}.left[data-v-2d73bf28]{width:540px;height:100%;display:flex;flex-direction:column}.input-area[data-v-2d73bf28]{flex:1}.input-area textarea[data-v-2d73bf28]{height:100%!important;border-color:#eee!important;padding:10px!important}.input-area textarea[data-v-2d73bf28]:focus{box-shadow:none!important}.preview[data-v-2d73bf28]{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-2d73bf28]{color:#888}.preview-content[data-v-2d73bf28]{width:100%;height:100%;padding:10px;display:flex;justify-content:center;align-items:center}.right[data-v-2d73bf28]{height:100%;margin-left:20px;flex:1;border:1px solid #eee;background-color:#fff;flex-direction:column}.right[data-v-2d73bf28],.tabs[data-v-2d73bf28]{display:flex;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabs[data-v-2d73bf28]{height:40px;font-size:12px;flex-shrink:0}.tab[data-v-2d73bf28]{flex:1;display:flex;justify-content:center;align-items:center;background-color:#f9f9f9;border-bottom:1px solid #eee;cursor:pointer}.tab.active[data-v-2d73bf28]{background-color:#fff;border-bottom-color:#fff}.tab+.tab[data-v-2d73bf28]{border-left:1px solid #eee}.content[data-v-2d73bf28]{height:calc(100% - 40px);font-size:13px}.formula[data-v-2d73bf28]{height:100%;padding:12px;overflow:auto;overflow:overlay}.formula-item+.formula-item[data-v-2d73bf28]{margin-top:10px}.formula-item .formula-title[data-v-2d73bf28]{margin-bottom:5px}.formula-item .formula-item-content[data-v-2d73bf28]{width:246px;height:60px;padding:5px;display:flex;align-items:center;background-color:#f9f9f9;cursor:pointer}.symbol-tabs[data-v-2d73bf28]{display:flex;justify-content:space-around;align-items:center;border-bottom:1px solid #eee;margin:12px 12px 5px}.symbol-tab[data-v-2d73bf28]{padding:6px 10px;border-bottom:2px solid transparent;cursor:pointer}.symbol-tab.active[data-v-2d73bf28]{border-bottom:2px solid #d14424}.symbol[data-v-2d73bf28]{height:100%;display:flex;flex-direction:column}.symbol-pool[data-v-2d73bf28]{display:flex;flex-wrap:wrap;flex:1;padding:12px;overflow:auto;overflow:overlay}.symbol-item[data-v-2d73bf28]{display:flex;justify-content:center;align-items:center}.symbol-item[data-v-2d73bf28]:hover{background-color:#f9f9f9;cursor:pointer}.footer[data-v-2d73bf28]{height:50px;display:flex;justify-content:flex-end;align-items:flex-end}.footer .btn[data-v-2d73bf28]{margin-left:10px}.canvas-tool[data-v-5d4eff54]{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-5d4eff54]{display:flex;align-items:center}.add-element-handler[data-v-5d4eff54]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex}.handler-item[data-v-5d4eff54]{margin:0 10px;font-size:14px;cursor:pointer}.handler-item.disable[data-v-5d4eff54]{opacity:.5}.handler-item.active[data-v-5d4eff54]{color:#d14424}.right-handler[data-v-5d4eff54]{display:flex;align-items:center}.right-handler .text[data-v-5d4eff54]{width:40px;text-align:center;cursor:pointer}.right-handler .viewport-size[data-v-5d4eff54]{font-size:13px}.preset-item[data-v-5d4eff54]{padding:8px 20px;text-align:center;cursor:pointer}.preset-item[data-v-5d4eff54]:hover{color:#d14424}.layout-pool[data-v-cc6b7dca]{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-cc6b7dca]{width:48%;margin-bottom:4%}.layout-item[data-v-cc6b7dca]:not(:nth-child(2n)){margin-right:4%}.layout-item .thumbnail[data-v-cc6b7dca]{outline:1px solid #eee;cursor:pointer}.layout-item .thumbnail[data-v-cc6b7dca]:hover{outline-color:#d14424}.thumbnails[data-v-153c0b44]{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-153c0b44]{height:40px;font-size:12px;display:flex;flex-shrink:0;border-bottom:1px solid #eee;cursor:pointer}.add-slide .btn[data-v-153c0b44]{flex:1;display:flex;justify-content:center;align-items:center}.add-slide .btn[data-v-153c0b44]:hover{background-color:#f9f9f9}.add-slide .select-btn[data-v-153c0b44]{width:30px;display:flex;justify-content:center;align-items:center;border-left:1px solid #eee}.add-slide .select-btn[data-v-153c0b44]:hover{background-color:#f9f9f9}.add-slide .icon[data-v-153c0b44]{margin-right:3px;font-size:14px}.thumbnail-list[data-v-153c0b44]{padding:5px 0;flex:1;overflow:auto}.thumbnail-item[data-v-153c0b44]{display:flex;justify-content:center;align-items:center;padding:5px 0}.thumbnail-item .thumbnail[data-v-153c0b44]{outline:1px solid rgba(209,68,36,.15)}.thumbnail-item.active .label[data-v-153c0b44]{color:#d14424}.thumbnail-item.active .thumbnail[data-v-153c0b44],.thumbnail-item.selected .thumbnail[data-v-153c0b44]{outline-color:#d14424}.label[data-v-153c0b44]{font-size:12px;color:#999;width:20px;cursor:-webkit-grab;cursor:grab}.label.offset-left[data-v-153c0b44]{position:relative;left:-4px}.label[data-v-153c0b44]:active{cursor:-webkit-grabbing;cursor:grabbing}.row[data-v-22345a51]{width:100%;display:flex;align-items:center;margin-bottom:10px}.slider[data-v-22345a51]{flex:3}.color-btn[data-v-ed8f2044]{display:flex;align-items:center;justify-content:center;padding:0!important}.color-block[data-v-ed8f2044]{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-ed8f2044]{width:100%;height:100%}.color-btn-icon[data-v-ed8f2044]{width:30px;font-size:12px;margin-top:2px;color:#bfbfbf}.row[data-v-e91e3764]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-e91e3764]{text-align:right}.row[data-v-053ed706]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-053ed706]{text-align:right}.slider[data-v-053ed706]{flex:3}.text-style-panel[data-v-5830b9cf]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.row[data-v-5830b9cf]{width:100%;display:flex;align-items:center;margin-bottom:10px}.preset-style[data-v-5830b9cf]{display:flex;flex-wrap:wrap;margin-bottom:10px}.preset-style-item[data-v-5830b9cf]{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-5830b9cf]:hover{border-color:#d14424;color:#d14424;z-index:1}.preset-style-item[data-v-5830b9cf]:nth-child(2n){margin-left:-1px}.preset-style-item[data-v-5830b9cf]:nth-child(n+3){margin-top:-1px}.text-color-btn[data-v-5830b9cf]{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:0}.text-color-block[data-v-5830b9cf]{width:16px;height:3px;margin-top:1px}.font-size-btn[data-v-5830b9cf]{padding:0}.link-popover[data-v-5830b9cf]{width:240px}.link-popover .btns[data-v-5830b9cf]{margin-top:10px;text-align:right}.row[data-v-37fbdfde],.row[data-v-59a1646e]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-37fbdfde]{text-align:right}.filter[data-v-37fbdfde]{font-size:12px}.filter-item[data-v-37fbdfde]{padding:8px 0;display:flex;justify-content:center;align-items:center}.filter-item .name[data-v-37fbdfde]{width:60px}.filter-item .filter-slider[data-v-37fbdfde]{flex:1;margin:0 6px}.row[data-v-7da35bec]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-7da35bec]{text-align:right}.origin-image[data-v-7da35bec]{height:100px;background-size:contain;background-repeat:no-repeat;background-position:50%;background-color:#f9f9f9;margin-bottom:10px}.full-width-btn[data-v-7da35bec]{width:100%;margin-bottom:10px}.btn-icon[data-v-7da35bec]{margin-right:3px}.clip[data-v-7da35bec]{width:260px;font-size:12px}.clip .title[data-v-7da35bec]{margin-bottom:5px}.shape-clip[data-v-7da35bec]{margin-bottom:10px;display:flex;flex-wrap:wrap;align-content:flex-start}.shape-clip-item[data-v-7da35bec]{display:flex;justify-content:center;align-items:center;cursor:pointer;width:16%;margin-bottom:5%}.shape-clip-item[data-v-7da35bec]:not(:nth-child(5n)){margin-right:5%}.shape-clip-item:hover .shape[data-v-7da35bec]{background-color:#ccc}.shape-clip-item .shape[data-v-7da35bec]{width:40px;height:40px;background-color:#e1e1e1}.shape-style-panel[data-v-02998580]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.row[data-v-02998580]{width:100%;display:flex;align-items:center;margin-bottom:10px}.text-color-btn[data-v-02998580]{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:0}.text-color-block[data-v-02998580]{width:16px;height:3px;margin-top:1px}.font-size-btn[data-v-02998580]{padding:0}.slider[data-v-02998580]{flex:3}.row[data-v-938968a2]{width:100%;display:flex;align-items:center;margin-bottom:10px}.line-btn[data-v-938968a2]{display:flex;align-items:center;justify-content:space-between;padding:0!important}.line-btn .line-wrapper[data-v-938968a2]{margin-left:8px}.line-wrapper[data-v-938968a2]{overflow:visible}.line-btn-icon[data-v-938968a2]{width:30px;font-size:12px;margin-top:2px;color:#bfbfbf}.preset-point-style[data-v-938968a2]{padding:0 10px}.preset-point-style+.preset-point-style[data-v-938968a2]{margin-top:10px}.chart-data-editor[data-v-53b32689]{width:600px;position:relative}.editor-content[data-v-53b32689]{width:100%;height:360px;position:relative;border-right:1px solid #ccc;border-bottom:1px solid #ccc;overflow:auto;overflow:overlay}.range-box[data-v-53b32689]{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-53b32689]{width:0;height:0;position:absolute;top:0;left:0;background-color:hsla(0,0%,53.3%,.3)}.range-line[data-v-53b32689]{width:0;height:0;position:absolute;left:0;top:0;border:0 solid #d14424}.range-line.t[data-v-53b32689]{border-top-width:1px}.range-line.b[data-v-53b32689]{border-bottom-width:1px}.range-line.l[data-v-53b32689]{border-left-width:1px}.range-line.r[data-v-53b32689]{border-right-width:1px}.resizable[data-v-53b32689]{position:absolute;width:12px;height:12px;left:0;top:0;margin:-9px 0 0 -9px;cursor:nwse-resize}.resizable[data-v-53b32689]:after{content:"";position:absolute;width:4px;height:12px;right:0;top:0;background-color:#d14424}.resizable[data-v-53b32689]:before{content:"";position:absolute;width:12px;height:4px;right:0;bottom:0;background-color:#d14424}table[data-v-53b32689]{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-53b32689]{text-align:center;border:1px solid #ccc;vertical-align:middle;width:100px;height:32px}table td.head[data-v-53b32689]{background-color:rgba(209,68,36,.1)}table .item[data-v-53b32689]{width:100%;height:100%;border:0;outline:0;font-size:13px;text-align:center;background-color:transparent}table .item.selected[data-v-53b32689]{background-color:rgba(209,68,36,.02)}.btns[data-v-53b32689]{margin-top:10px;display:flex;justify-content:space-between}.chart-style-panel[data-v-769d6876]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.row[data-v-769d6876]{width:100%;display:flex;align-items:center;margin-bottom:10px}.full-width-btn[data-v-769d6876]{width:100%}.btn-icon[data-v-769d6876]{margin-right:3px}.color-btn-wrap[data-v-769d6876]{position:relative}.delete-color-btn[data-v-769d6876]{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-769d6876]{width:250px;margin-bottom:-10px;display:flex;flex-wrap:wrap;align-content:flex-start}.preset-theme[data-v-769d6876]{display:flex;cursor:pointer;width:48%;margin-bottom:4%}.preset-theme[data-v-769d6876]:not(:nth-child(2n)){margin-right:4%}.preset-theme-color[data-v-769d6876]{width:20px;height:20px}.preset-theme-color.select[data-v-769d6876]{transform:scale(1.2);transition:transform .1s}.row[data-v-7e28e1d8]{width:100%;display:flex;align-items:center;margin-bottom:10px}.theme-switch[data-v-7e28e1d8]{margin-bottom:18px}.switch-wrapper[data-v-7e28e1d8]{text-align:right}.text-color-btn[data-v-7e28e1d8]{display:flex;flex-direction:column;justify-content:center;align-items:center}.text-color-block[data-v-7e28e1d8]{width:16px;height:3px;margin-top:1px}.set-count[data-v-7e28e1d8]{display:flex;justify-content:center;align-items:center}.set-count .btn[data-v-7e28e1d8]{padding:4px 8px}.set-count .count-text[data-v-7e28e1d8]{flex:1;text-align:center;margin:0 8px}.row[data-v-546adf8c],.row[data-v-ff7125dc]{width:100%;display:flex;align-items:center;margin-bottom:10px}.background-image-wrapper[data-v-ff7125dc],.title[data-v-ff7125dc]{margin-bottom:10px}.background-image[data-v-ff7125dc]{height:0;padding-bottom:56.25%;border:1px dashed #eee;border-radius:2px;position:relative;transition:all .2s}.background-image[data-v-ff7125dc]:hover{border-color:#d14424;color:#d14424}.background-image .content[data-v-ff7125dc]{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-5d723d50]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-row[data-v-5d723d50]{height:32px}.switch-wrapper[data-v-5d723d50]{text-align:right}.row[data-v-71469855]{width:100%;display:flex;align-items:center;margin-bottom:10px}.text-color-btn[data-v-71469855]{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:0}.text-color-block[data-v-71469855]{width:16px;height:3px;margin-top:1px}.font-size-btn[data-v-71469855]{padding:0}.row[data-v-6bf6c951]{width:100%;display:flex;align-items:center;margin-bottom:10px}.title[data-v-6bf6c951]{margin-bottom:10px}.label[data-v-6bf6c951]{text-align:center}.btn-icon[data-v-6bf6c951]{margin-right:3px}.icon-btn[data-v-6bf6c951]{cursor:pointer}.element-animation-panel[data-v-2f69234f]{height:100%;display:flex;flex-direction:column}.tabs[data-v-2f69234f]{display:flex;justify-content:flex-start;align-items:center;border-bottom:1px solid #eee;margin-bottom:20px}.tab[data-v-2f69234f]{width:33.33%;padding-bottom:8px;border-bottom:2px solid transparent;text-align:center;cursor:pointer}.tab.active[data-v-2f69234f]{border-bottom:2px solid #d14424}.tab.in.active[data-v-2f69234f]{border-bottom-color:#68a490}.tab.out.active[data-v-2f69234f]{border-bottom-color:#d86344}.tab.attention.active[data-v-2f69234f]{border-bottom-color:#e8b76a}.element-animation[data-v-2f69234f]{height:32px;display:flex;align-items:center}.element-animation-btn[data-v-2f69234f]{width:100%}.config-item[data-v-2f69234f]{display:flex;align-items:center}.config-item+.config-item[data-v-2f69234f]{margin-top:5px}.tip[data-v-2f69234f]{height:32px;display:flex;justify-content:center;align-items:center;font-style:italic}.animation-pool[data-v-2f69234f]{width:400px;height:500px;overflow-y:auto;overflow-x:hidden;font-size:12px;margin-right:-12px;position:relative}.animation-pool .mask[data-v-2f69234f]{position:absolute;top:0;right:0;bottom:0;left:0}.animation-pool.in .type-title[data-v-2f69234f]{border-left-color:#68a490;background-color:rgba(104,164,144,.15)}.animation-pool.out .type-title[data-v-2f69234f]{border-left-color:#d86344;background-color:rgba(216,99,68,.15)}.animation-pool.attention .type-title[data-v-2f69234f]{border-left-color:#e8b76a;background-color:rgba(232,183,106,.15)}.type-title[data-v-2f69234f]{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-2f69234f]{display:flex;flex-wrap:wrap;align-content:flex-start}.pool-item[data-v-2f69234f]{width:24%;margin-bottom:1.33333%;margin-bottom:10px;height:40px;line-height:40px;text-align:center;cursor:pointer}.pool-item[data-v-2f69234f]:not(:nth-child(4n)){margin-right:1.33333%}.animation-box[data-v-2f69234f]{background-color:#f9f9f9}.animation-sequence[data-v-2f69234f]{flex:1;padding-right:12px;margin-right:-12px;overflow:auto;overflow:overlay}.sequence-item[data-v-2f69234f]{border:1px solid #eee;padding:10px 6px;border-radius:2px;margin-bottom:8px;transition:all .5s}.sequence-item.in.active[data-v-2f69234f]{border-color:#68a490}.sequence-item.out.active[data-v-2f69234f]{border-color:#d86344}.sequence-item.attention.active[data-v-2f69234f]{border-color:#e8b76a}.sequence-item.active[data-v-2f69234f]{height:auto}.sequence-item .sequence-content[data-v-2f69234f]{display:flex;align-items:center;cursor:-webkit-grab;cursor:grab}.sequence-item .sequence-content[data-v-2f69234f]:active{cursor:-webkit-grabbing;cursor:grabbing}.sequence-item .sequence-content .index[data-v-2f69234f]{flex:1}.sequence-item .sequence-content .text[data-v-2f69234f]{flex:6}.sequence-item .sequence-content .handler[data-v-2f69234f]{flex:2;font-size:15px;text-align:right}.sequence-item .sequence-content .handler-btn[data-v-2f69234f]{margin-left:8px;cursor:pointer}.slide-design-panel[data-v-e0bbbd9e]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.row[data-v-e0bbbd9e]{width:100%;display:flex;align-items:center;margin-bottom:10px}.title[data-v-e0bbbd9e]{margin-bottom:10px}.title.dropdown[data-v-e0bbbd9e]{display:flex;align-items:center;cursor:pointer}.title.dropdown .icon[data-v-e0bbbd9e]{margin-left:5px;transition:transform .1s}.title.dropdown:not(.active) .icon[data-v-e0bbbd9e]{transform:rotate(-90deg)}.background-image-wrapper[data-v-e0bbbd9e]{margin-bottom:10px}.background-image[data-v-e0bbbd9e]{height:0;padding-bottom:56.25%;border:1px dashed #eee;border-radius:2px;position:relative;transition:all .2s}.background-image[data-v-e0bbbd9e]:hover{border-color:#d14424;color:#d14424}.background-image .content[data-v-e0bbbd9e]{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-e0bbbd9e]{display:flex;flex-wrap:wrap;align-content:flex-start}.theme-item[data-v-e0bbbd9e]{width:22%;margin-bottom:4%;padding-bottom:22%;border-radius:2px;position:relative;cursor:pointer}.theme-item[data-v-e0bbbd9e]:not(:nth-child(4n)){margin-right:4%}.theme-item .theme-item-content[data-v-e0bbbd9e]{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-e0bbbd9e]:hover{box-shadow:0 0 4px #888}.theme-item .text[data-v-e0bbbd9e]{font-size:16px}.theme-item .color-block[data-v-e0bbbd9e]{width:28px;height:10px;margin-top:5px}.slider[data-v-e0bbbd9e]{flex:3}.animation-pool[data-v-577ae912]{display:flex;flex-wrap:wrap;margin-bottom:10px}.animation-item[data-v-577ae912]{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-577ae912]{border-color:#d14424;z-index:1}.animation-item[data-v-577ae912]:nth-child(2n){margin-left:-1px}.animation-item[data-v-577ae912]:nth-child(n+3){margin-top:-1px}.animation-block[data-v-577ae912]{width:64px;height:36px;background:#666;position:relative;overflow:hidden}.animation-block.fade[data-v-577ae912]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:fade-577ae912 .3s linear;animation:fade-577ae912 .3s linear}.animation-block.slideX[data-v-577ae912]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:slideX-577ae912 .3s linear;animation:slideX-577ae912 .3s linear}.animation-block.slideY[data-v-577ae912]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:slideY-577ae912 .3s linear;animation:slideY-577ae912 .3s linear}.animation-text[data-v-577ae912]{font-size:12px;color:#333;text-align:center}@-webkit-keyframes fade-577ae912{0%{opacity:0}to{opacity:1}}@keyframes fade-577ae912{0%{opacity:0}to{opacity:1}}@-webkit-keyframes slideX-577ae912{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slideX-577ae912{0%{transform:translateX(100%)}to{transform:translateX(0)}}@-webkit-keyframes slideY-577ae912{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideY-577ae912{0%{transform:translateY(100%)}to{transform:translateY(0)}}.row[data-v-0d3881c5]{width:100%;display:flex;align-items:center;margin-bottom:10px}.symbol-panel[data-v-ba0c96fc]{height:100%;display:flex;flex-direction:column}.symbol-panel .tabs[data-v-ba0c96fc]{display:flex;justify-content:space-around;align-items:center;border-bottom:1px solid #eee;margin-bottom:8px}.symbol-panel .tab[data-v-ba0c96fc]{padding:6px 10px 8px;border-bottom:2px solid transparent;cursor:pointer}.symbol-panel .tab.active[data-v-ba0c96fc]{border-bottom:2px solid #d14424}.symbol-panel .pool[data-v-ba0c96fc]{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-ba0c96fc]{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-ba0c96fc]:not(:nth-child(5n)){margin-right:2.5%}.symbol-panel .symbol-item[data-v-ba0c96fc]:hover{color:#d14424}.symbol-panel .symbol-item .symbol[data-v-ba0c96fc]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;background-color:#fff}.toolbar[data-v-5303bd17]{border-left:1px solid #eee;background-color:#fff;display:flex;flex-direction:column}.tabs[data-v-5303bd17]{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-5303bd17]{flex:1;display:flex;justify-content:center;align-items:center;background-color:#f9f9f9;border-bottom:1px solid #eee;cursor:pointer}.tab.active[data-v-5303bd17]{background-color:#fff;border-bottom-color:#fff}.tab+.tab[data-v-5303bd17]{border-left:1px solid #eee}.content[data-v-5303bd17]{padding:12px;font-size:13px;overflow:auto;overflow:overlay}.remark[data-v-82b674f6]{position:relative;border-top:1px solid #eee;background-color:#f9f9f9;line-height:1.5}.remark textarea[data-v-82b674f6]{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-82b674f6]{height:7px;position:absolute;top:-3px;left:0;right:0;cursor:n-resize;z-index:2}.export-img-dialog[data-v-60a953a0]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.thumbnails-view[data-v-60a953a0],.thumbnails-view[data-v-60a953a0]:after{position:absolute;top:0;right:0;bottom:0;left:0}.thumbnails-view[data-v-60a953a0]:after{content:"";background-color:#fff}.configs[data-v-60a953a0]{width:350px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center;z-index:1}.configs .row[data-v-60a953a0]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-60a953a0]{width:100px;position:relative}.configs .title[data-v-60a953a0]:after{content:attr(data-range);position:absolute;top:20px;left:0}.configs .config-item[data-v-60a953a0]{flex:1}.btns[data-v-60a953a0]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-60a953a0]{flex:1}.btns .close[data-v-60a953a0]{width:100px;margin-left:10px}.export-json-dialog[data-v-1bc24666]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.preview[data-v-1bc24666]{width:100%;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center;background-color:#f9f9f9;color:#0451a5}.btns[data-v-1bc24666]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-1bc24666]{flex:1}.btns .close[data-v-1bc24666]{width:100px;margin-left:10px}[data-v-1bc24666]::-webkit-scrollbar{width:10px;height:10px;background-color:#f9f9f9}[data-v-1bc24666]::-webkit-scrollbar-thumb{background-color:#c1c1c1}.export-pdf-dialog[data-v-15b57798]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.thumbnails-view[data-v-15b57798],.thumbnails-view[data-v-15b57798]:after{position:absolute;top:0;right:0;bottom:0;left:0}.thumbnails-view[data-v-15b57798]:after{content:"";background-color:#fff}.thumbnail.break-page[data-v-15b57798]{-moz-column-break-after:page;break-after:page}.configs[data-v-15b57798]{width:300px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center;z-index:1}.configs .row[data-v-15b57798]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-15b57798]{width:100px}.configs .config-item[data-v-15b57798]{flex:1}.configs .tip[data-v-15b57798]{font-size:12px;color:#aaa;line-height:1.8;margin-top:25px}.btns[data-v-15b57798]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-15b57798]{flex:1}.btns .close[data-v-15b57798]{width:100px;margin-left:10px}.export-pptx-dialog[data-v-3fef9be0]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.configs[data-v-3fef9be0]{width:350px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center}.configs .row[data-v-3fef9be0]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-3fef9be0]{width:100px;position:relative}.configs .title[data-v-3fef9be0]:after{content:attr(data-range);position:absolute;top:20px;left:0}.configs .config-item[data-v-3fef9be0]{flex:1}.btns[data-v-3fef9be0]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-3fef9be0]{flex:1}.btns .close[data-v-3fef9be0]{width:100px;margin-left:10px}.export-pptist-dialog[data-v-e2b465d2]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.configs[data-v-e2b465d2]{width:350px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center}.configs .row[data-v-e2b465d2]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-e2b465d2]{width:100px;position:relative}.configs .title[data-v-e2b465d2]:after{content:attr(data-range);position:absolute;top:20px;left:0}.configs .config-item[data-v-e2b465d2]{flex:1}.configs .tip[data-v-e2b465d2]{font-size:12px;color:#aaa;line-height:1.8;margin-top:25px}.btns[data-v-e2b465d2]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-e2b465d2]{flex:1}.btns .close[data-v-e2b465d2]{width:100px;margin-left:10px}.export-dialog[data-v-1f8f1a8b]{margin:-24px}.tabs[data-v-1f8f1a8b]{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-1f8f1a8b]{flex:1;display:flex;justify-content:center;align-items:center;background-color:#f9f9f9;border-bottom:1px solid #eee;cursor:pointer}.tab.active[data-v-1f8f1a8b]{background-color:#fff;border-bottom-color:#fff}.tab+.tab[data-v-1f8f1a8b]{border-left:1px solid #eee}.content[data-v-1f8f1a8b]{height:460px;padding:12px;font-size:13px;overflow:auto;overflow:overlay}.pptist-editor[data-v-328e1a4e]{height:100%}.layout-header[data-v-328e1a4e]{height:40px}.layout-content[data-v-328e1a4e]{height:calc(100% - 40px);display:flex}.layout-content-left[data-v-328e1a4e]{width:160px;height:100%;flex-shrink:0}.layout-content-center[data-v-328e1a4e]{width:calc(100% - 420px)}.layout-content-center .center-top[data-v-328e1a4e]{height:40px}.layout-content-right[data-v-328e1a4e]{width:260px;height:100%}.screen-element-video[data-v-76457308]{position:absolute}.element-content[data-v-76457308],.rotate-wrapper[data-v-76457308]{width:100%;height:100%}.screen-element-audio[data-v-1172b8ee]{position:absolute}.rotate-wrapper[data-v-1172b8ee]{width:100%;height:100%}.element-content[data-v-1172b8ee]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.element-content:hover .audio-player[data-v-1172b8ee]{display:block}.audio-icon[data-v-1172b8ee]{cursor:pointer}.audio-player[data-v-1172b8ee]{position:absolute;display:none}.link[data-v-a15cc1d8]{cursor:pointer}.screen-slide[data-v-7cf7f9e7]{position:absolute;top:0;left:0;transform-origin:0 0;overflow:hidden}.background[data-v-7cf7f9e7]{width:100%;height:100%;background-position:50%;position:absolute}.screen-slide-list[data-v-77a3e620]{background:#1d1d1d;position:relative;width:100%;height:100%}.slide-item[data-v-77a3e620]{position:absolute;top:0;left:0;width:100%;height:100%}.slide-item.current[data-v-77a3e620]{z-index:2}.slide-item.hide[data-v-77a3e620]{opacity:0}.slide-item.turning-mode-no.before[data-v-77a3e620]{transform:translateY(-100%)}.slide-item.turning-mode-no.after[data-v-77a3e620]{transform:translateY(100%)}.slide-item.turning-mode-fade[data-v-77a3e620]{transition:opacity .75s}.slide-item.turning-mode-fade.after[data-v-77a3e620],.slide-item.turning-mode-fade.before[data-v-77a3e620]{pointer-events:none;opacity:0}.slide-item.turning-mode-slideX[data-v-77a3e620]{transition:transform .35s}.slide-item.turning-mode-slideX.before[data-v-77a3e620]{transform:translateX(-100%)}.slide-item.turning-mode-slideX.after[data-v-77a3e620]{transform:translateX(100%)}.slide-item.turning-mode-slideY[data-v-77a3e620]{transition:transform .35s}.slide-item.turning-mode-slideY.before[data-v-77a3e620]{transform:translateY(-100%)}.slide-item.turning-mode-slideY.after[data-v-77a3e620]{transform:translateY(100%)}.slide-content[data-v-77a3e620]{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-b7c6c0cc]{width:100%;height:100%;position:fixed;top:0;left:0;background-color:#1a1a1a;z-index:99}.return-button[data-v-b7c6c0cc]{height:60px;padding:20px 30px 0}.return-button .icon[data-v-b7c6c0cc]{color:#fff;font-size:36px;cursor:pointer}.return-button .icon[data-v-b7c6c0cc]:hover{color:#d14424}.slide-thumbnails-content[data-v-b7c6c0cc]{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-b7c6c0cc]{width:150px;outline:2px solid #aaa;margin-right:12px;margin-bottom:12px}.slide-thumbnails-content .thumbnail[data-v-b7c6c0cc]:hover{outline-color:#d14424}.slide-thumbnails-content .thumbnail.active[data-v-b7c6c0cc]{outline-width:3px;outline-color:#d14424}.writing-board[data-v-1d4eb7f0]{z-index:8;cursor:none;position:absolute;top:0;right:0;bottom:0;left:0}.blackboard[data-v-1d4eb7f0]{width:100%;height:100%;background-color:#0f392b}.canvas[data-v-1d4eb7f0]{position:absolute;top:0;left:0}.eraser[data-v-1d4eb7f0],.pen[data-v-1d4eb7f0]{pointer-events:none;position:absolute;z-index:9}.eraser .icon[data-v-1d4eb7f0],.pen .icon[data-v-1d4eb7f0]{filter:drop-shadow(2px 2px 2px #555)}.eraser[data-v-1d4eb7f0]{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-876081a6]{font-size:12px;z-index:10;position:absolute;top:0;right:0;bottom:0;left:0}.writing-board-tool .writing-board-wrap[data-v-876081a6]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.writing-board-tool .tools[data-v-876081a6]{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-876081a6]{padding:5px 10px;cursor:pointer}.writing-board-tool .btn[data-v-876081a6]:hover{color:#d14424}.writing-board-tool .btn.active[data-v-876081a6]{background-color:rgba(209,68,36,.5);color:#fff}.writing-board-tool .icon[data-v-876081a6]{font-size:20px}.writing-board-tool .colors[data-v-876081a6]{display:flex;padding:0 10px}.writing-board-tool .color[data-v-876081a6]{width:16px;height:16px;border-radius:2px;cursor:pointer}.writing-board-tool .color[data-v-876081a6]:hover{transform:scale(1.15)}.writing-board-tool .color.active[data-v-876081a6]{transform:scale(1.3)}.writing-board-tool .color+.color[data-v-876081a6]{margin-left:8px}.base-view[data-v-d72d6626]{width:100%;height:100%}.base-view.laser-pen[data-v-d72d6626]{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}.tools-left[data-v-d72d6626]{position:fixed;bottom:8px;left:8px;font-size:25px;color:#666;z-index:10}.tools-left .tool-btn[data-v-d72d6626]{opacity:.35;cursor:pointer}.tools-left .tool-btn[data-v-d72d6626]:hover{opacity:.9}.tools-left .tool-btn+.tool-btn[data-v-d72d6626]{margin-left:8px}.tools-right[data-v-d72d6626]{height:66px;position:fixed;bottom:-66px;right:0;z-index:5;padding:8px;transition:bottom .2s}.tools-right.visible[data-v-d72d6626]{bottom:0}.tools-right[data-v-d72d6626]:after{content:"";width:100%;height:66px;position:absolute;left:0;top:-66px}.tools-right .content[data-v-d72d6626]{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-d72d6626]{cursor:pointer}.tools-right .tool-btn.active[data-v-d72d6626],.tools-right .tool-btn[data-v-d72d6626]:hover{color:#d14424}.tools-right .tool-btn+.tool-btn[data-v-d72d6626]{margin-left:15px}.tools-right .page-number[data-v-d72d6626]{font-size:13px;padding:8px 12px;cursor:pointer}.presenter-view[data-v-5fba3eec]{width:100%;height:100%;display:flex}.toolbar[data-v-5fba3eec]{width:70px;height:100%;background-color:#fff;border-right:1px solid #eee;font-size:12px;margin:20px 0}.toolbar .tool-btn[data-v-5fba3eec]{display:flex;flex-direction:column;justify-content:center;align-items:center;cursor:pointer}.toolbar .tool-btn+.tool-btn[data-v-5fba3eec]{margin-top:22px}.toolbar .tool-btn.active[data-v-5fba3eec],.toolbar .tool-btn[data-v-5fba3eec]:hover{color:#d14424}.toolbar .divider[data-v-5fba3eec]{width:70%;min-width:70%;margin:24px 15%}.toolbar .tool-icon[data-v-5fba3eec]{margin-bottom:8px;font-size:22px}.content[data-v-5fba3eec]{width:calc(100% - 430px);height:100%;background-color:#1d1d1d}.slide-list-wrap[data-v-5fba3eec]{height:calc(100% - 190px);margin:20px;overflow:hidden;position:relative}.slide-list-wrap.laser-pen[data-v-5fba3eec]{cursor:url(data:image/png;base64,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) 20 20,default!important}.thumbnails[data-v-5fba3eec]{height:150px;padding:15px;white-space:nowrap;overflow-x:auto;overflow-y:hidden;border-top:1px solid #3a3a3a}.thumbnail[data-v-5fba3eec]{display:inline-block;outline:2px solid #aaa}.thumbnail+.thumbnail[data-v-5fba3eec]{margin-left:10px}.thumbnail[data-v-5fba3eec]:hover{outline-color:#d14424}.thumbnail.active[data-v-5fba3eec]{outline-width:3px;outline-color:#d14424}.remark[data-v-5fba3eec]{width:360px;height:100%;position:relative;background-color:#2a2a2a;border-left:1px solid #3a3a3a;color:#fff}.remark .header[data-v-5fba3eec]{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-5fba3eec]{height:calc(100% - 60px);padding:20px;line-height:1.5;overflow:auto;overflow:overlay}.remark .remark-scale[data-v-5fba3eec]{position:absolute;right:5px;bottom:5px;font-size:22px;display:flex}.remark .scale-btn[data-v-5fba3eec]{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-5fba3eec]{color:#666;cursor:no-drop}.remark .scale-btn[data-v-5fba3eec]:not(.disable):hover{background-color:#333}[data-v-5fba3eec]::-webkit-scrollbar{width:0;height:0}.pptist-screen[data-v-6bf3d190]{width:100%;height:100%}.mobile-operate[data-v-7fdc6c04]{position:absolute;z-index:100;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mobile-thumbnails[data-v-4a0c7aa7]{padding:10px;white-space:nowrap;overflow-x:auto;overflow-y:hidden}.thumbnail-item[data-v-4a0c7aa7]{position:relative;display:inline-block;outline:2px solid #aaa}.thumbnail-item+.thumbnail-item[data-v-4a0c7aa7]{margin-left:10px}.thumbnail-item.active[data-v-4a0c7aa7]{outline-color:#d14424}.thumbnail-item.active .label[data-v-4a0c7aa7]{background-color:#d14424}.thumbnail-item .label[data-v-4a0c7aa7]{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-4a0c7aa7]::-webkit-scrollbar{width:0;height:0}.slide-toolbar[data-v-29fba90e]{height:230px;background-color:#fff;box-shadow:0 0 15px 0 rgba(0,0,0,.1);display:flex;flex-direction:column}.remark[data-v-29fba90e]{position:relative;flex:1;border-bottom:1px solid #eee;line-height:1.5}.remark textarea[data-v-29fba90e]{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-29fba90e]{height:90px;border-bottom:1px solid #eee;padding:10px}.row[data-v-29fba90e]{width:100%;display:flex;align-items:center;margin-bottom:5px}.row .icon[data-v-29fba90e]{margin-right:3px}.element-toolbar[data-v-446388c6]{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-446388c6 .15s;animation:slideInUp-446388c6 .15s}.tabs[data-v-446388c6]{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-446388c6]{width:30%;padding:10px 10px 12px;margin:0 10%;border-bottom:2px solid transparent;text-align:center;cursor:pointer}.tab.active[data-v-446388c6]{border-bottom:2px solid #d14424}@-webkit-keyframes slideInUp-446388c6{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideInUp-446388c6{0%{transform:translateY(100%)}to{transform:translateY(0)}}.content[data-v-446388c6]{padding:10px;flex:1;overflow:auto}.row[data-v-446388c6]{width:100%;display:flex;align-items:center;margin-bottom:10px}.row .icon[data-v-446388c6]{margin-right:3px}.row-block[data-v-446388c6]{margin-bottom:10px;background-color:#f9f9f9;border-radius:2px;padding:10px}.label[data-v-446388c6]{font-size:13px;margin-bottom:20px;margin-left:6px}.colors[data-v-446388c6]{display:flex;flex-wrap:wrap;align-content:flex-start}.color[data-v-446388c6]{width:12%;margin-bottom:.57143%;padding-bottom:5px;display:flex;justify-content:center;align-items:center}.color[data-v-446388c6]:not(:nth-child(8n)){margin-right:.57143%}.color .color-block[data-v-446388c6]{width:30px;height:30px;border-radius:50%}.mobile-editor-header[data-v-10cd6713]{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-10cd6713]{display:flex;justify-content:center;align-items:center}.history-item[data-v-10cd6713]{margin-right:20px}.history-item.disable[data-v-10cd6713]{opacity:.5}.mobile-editor[data-v-8cdcde82]{height:100%;position:relative;background-color:#f9f9f9}.content[data-v-8cdcde82]{height:calc(100% - 280px);display:flex;justify-content:center;align-items:center}.viewport[data-v-8cdcde82]{transform-origin:0 0}.viewport-wrapper[data-v-8cdcde82]{position:relative;box-shadow:0 0 15px 0 rgba(0,0,0,.1)}.background[data-v-8cdcde82]{width:100%;height:100%;background-position:50%;position:absolute}.mobile-player[data-v-5293de3b]{transform-origin:0 0;background-color:#1d1d1d;position:relative}.screen-slide-list[data-v-5293de3b]{position:relative;width:100%;height:100%}.slide-item[data-v-5293de3b]{position:absolute;top:0;left:0;width:100%;height:100%}.slide-item.current[data-v-5293de3b]{z-index:2}.slide-item.hide[data-v-5293de3b]{opacity:0}.slide-item.turning-mode-no.before[data-v-5293de3b]{transform:translateY(-100%)}.slide-item.turning-mode-no.after[data-v-5293de3b]{transform:translateY(100%)}.slide-item.turning-mode-fade[data-v-5293de3b]{transition:opacity .75s}.slide-item.turning-mode-fade.after[data-v-5293de3b],.slide-item.turning-mode-fade.before[data-v-5293de3b]{pointer-events:none;opacity:0}.slide-item.turning-mode-slideX[data-v-5293de3b]{transition:transform .35s}.slide-item.turning-mode-slideX.before[data-v-5293de3b]{transform:translateX(-100%)}.slide-item.turning-mode-slideX.after[data-v-5293de3b]{transform:translateX(100%)}.slide-item.turning-mode-slideY[data-v-5293de3b]{transition:transform .35s}.slide-item.turning-mode-slideY.before[data-v-5293de3b]{transform:translateY(-100%)}.slide-item.turning-mode-slideY.after[data-v-5293de3b]{transform:translateY(100%)}.slide-content[data-v-5293de3b]{background-color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;justify-content:center;align-items:center}.header[data-v-5293de3b]{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-5293de3b .15s;animation:slideInDown-5293de3b .15s}.header .back[data-v-5293de3b]{height:100%}.thumbnails[data-v-5293de3b]{width:100%;position:absolute;bottom:0;left:0;z-index:99;background-color:rgba(29,29,29,.7);overflow:auto!important;-webkit-animation:slideInUp-5293de3b .15s;animation:slideInUp-5293de3b .15s}@-webkit-keyframes slideInUp-5293de3b{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideInUp-5293de3b{0%{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes slideInDown-5293de3b{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes slideInDown-5293de3b{0%{transform:translateY(-100%)}to{transform:translateY(0)}}.mobile-preview[data-v-4f906636]{height:100%;background-color:#f9f9f9}.tip[data-v-4f906636]{position:fixed;top:0;left:0;right:0;z-index:99}.thumbnail-list[data-v-4f906636]{height:calc(100% - 50px);padding:10px;overflow:auto}.thumbnail-item[data-v-4f906636]{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-4f906636]{margin-top:10px}.menu[data-v-4f906636]{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-4f906636]{width:50%;height:100%;display:flex;justify-content:center;align-items:center;font-size:13px}.menu .menu-item .icon[data-v-4f906636]{margin-right:8px;font-size:18px}#app,.mobile[data-v-1fb24d48]{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-4727b7ff]{display:none}.checkbox-button[data-v-699cf016]{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-699cf016]:hover{color:#d14424}.checkbox-button.checked[data-v-699cf016]{color:#fff;background-color:#d14424;border-color:#d14424}.checkbox-button.checked[data-v-699cf016]:hover{background:rgba(209,68,36,.9);border-color:rgba(209,68,36,.9)}.checkbox-button-group[data-v-b8aa6eac]{display:flex;align-items:center}.checkbox-button-group[data-v-b8aa6eac] .checkbox-button{border-radius:0;border-left-width:0;border-right-width:0;display:inline-block}.checkbox-button-group[data-v-b8aa6eac] .checkbox-button+.checkbox-button{border-left-width:1px}.checkbox-button-group[data-v-b8aa6eac] .checkbox-button:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px;border-left-width:1px}.checkbox-button-group[data-v-b8aa6eac] .checkbox-button:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right-width:1px}.checkerboard[data-v-7494636c]{background-size:contain}.alpha-checkboard-wrap[data-v-246b525c],.alpha[data-v-246b525c],.checkerboard[data-v-7494636c]{position:absolute;top:0;right:0;bottom:0;left:0}.alpha-checkboard-wrap[data-v-246b525c]{overflow:hidden}.alpha-gradient[data-v-246b525c]{position:absolute;top:0;right:0;bottom:0;left:0}.alpha-container[data-v-246b525c]{cursor:pointer;position:relative;z-index:2;height:100%;margin:0 3px}.alpha-pointer[data-v-246b525c]{z-index:2;position:absolute}.alpha-picker[data-v-246b525c]{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-60c3cca1]{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-60c3cca1]{cursor:pointer;margin:0 2px;position:relative;height:100%}.hue-pointer[data-v-60c3cca1]{z-index:2;position:absolute;top:0}.hue-picker[data-v-60c3cca1]{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-d230faf4],.saturation-white[data-v-d230faf4],.saturation[data-v-d230faf4]{position:absolute;top:0;right:0;bottom:0;left:0;cursor:pointer}.saturation-white[data-v-d230faf4]{background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.saturation-black[data-v-d230faf4]{background:linear-gradient(0deg,#000,transparent)}.saturation-pointer[data-v-d230faf4]{cursor:pointer;position:absolute}.saturation-circle[data-v-d230faf4]{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-2f428dde]{width:100%;position:relative;overflow:hidden;text-align:center;font-size:14px}.editable-input[data-v-2f428dde]:after{content:"#";position:absolute;left:0;top:50%;transform:translateY(-50%);color:#999}.input-content[data-v-2f428dde]{width:100%;padding:3px;border:0;border-bottom:1px solid #ddd;outline:none;text-align:center}.input-label[data-v-2f428dde]{text-transform:capitalize}.color-picker[data-v-c46eb110]{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-c46eb110]{width:100%;padding-bottom:50%;position:relative;overflow:hidden}.picker-controls[data-v-c46eb110]{display:flex}.picker-sliders[data-v-c46eb110]{padding:4px 0;flex:1}.picker-hue-wrap[data-v-c46eb110]{position:relative;height:10px}.picker-alpha-wrap[data-v-c46eb110]{position:relative;height:10px;margin-top:4px;overflow:hidden}.picker-color-wrap[data-v-c46eb110]{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-c46eb110]{background-size:auto}.picker-current-color[data-v-c46eb110]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2}.picker-field[data-v-c46eb110]{display:flex;margin-bottom:8px}.picker-field .straw[data-v-c46eb110]{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-c46eb110]{flex:1}.picker-presets[data-v-c46eb110]{display:flex;flex-wrap:wrap;align-content:flex-start}.picker-presets-color[data-v-c46eb110]{width:7%;margin-bottom:3.33333%;height:0;padding-bottom:7%;flex-shrink:0;position:relative;cursor:pointer}.picker-presets-color[data-v-c46eb110]:not(:nth-child(10n)){margin-right:3.33333%}.picker-presets-color.alpha[data-v-c46eb110]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAADBJREFUOE9jfPbs2X8GPEBSUhKfNAPjqAHDIgz+//+PNx08f/4cfzoYNYCBceiHAQC5flV5JzgrxQAAAABJRU5ErkJggg==)}.picker-presets-color-content[data-v-c46eb110]{position:absolute;top:0;right:0;bottom:0;left:0}.picker-gradient-presets[data-v-c46eb110]{display:flex;flex-wrap:wrap;align-content:flex-start}.picker-gradient-col[data-v-c46eb110]{width:7%;margin-bottom:3.33333%;display:flex;flex-direction:column}.picker-gradient-col[data-v-c46eb110]:not(:nth-child(10n)){margin-right:3.33333%}.picker-gradient-color[data-v-c46eb110]{width:100%;height:16px;position:relative;cursor:pointer}.recent-colors-title[data-v-c46eb110]{font-size:12px;margin-bottom:4px}.fullscreen-spin[data-v-16ead44e]{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-e470e712]{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-e470e712]{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-e470e712]{display:block}.menu-item:not(.disable):hover>.has-children.has-handler[data-v-e470e712]:after{transform:scale(1)}.menu-item[data-v-e470e712]:hover:not(.disable){background-color:rgba(209,68,36,.2)}.menu-item.divider[data-v-e470e712]{height:1px;overflow:hidden;margin:5px;background-color:#e5e5e5;line-height:0;padding:0}.menu-item.disable[data-v-e470e712]{color:#b1b1b1;cursor:no-drop}.menu-item-content[data-v-e470e712]{display:flex;align-items:center;justify-content:space-between;position:relative}.menu-item-content.has-children[data-v-e470e712]: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-e470e712]: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-e470e712]{opacity:.6}.menu-item-content .sub-menu[data-v-e470e712]{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 abfc73e2..726537ba 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.bc0864ea.js b/js/app.bc0864ea.js new file mode 100644 index 00000000..c954d16b --- /dev/null +++ b/js/app.bc0864ea.js @@ -0,0 +1,2 @@ +(function(e){function t(t){for(var c,a,r=t[0],i=t[1],u=t[2],s=0,f=[];sb){var p=e.nodeAt(o),O=p&&p.marks.find(l);if(!O||O!==a)break;s=o,r=p,o--}o=n+1,b=e.nodeSize-2;while(o-1||t.type===e},F=function(e,t){for(var n=e.depth;n>0;n--){var c=e.node(n);if(t(c))return{pos:n>0?e.before(n):0,start:e.start(n),depth:n,node:c}}},A=function(e){return function(t){return F(t.$from,e)}},R=function(e){return function(t){return A((function(t){return z(e,t)}))(t)}},P=function(e,t){var n=t.schema.nodes[e];return!!R(n)(t.selection)},H=function(e){var t,n,c=e.state,o=c.selection,l=c.doc,a=o.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)||[]},q=function(e,t,n){var c,o=Object(L["a"])(e);try{for(o.s();!(c=o.n()).done;){var l=c.value;if(l.type.name===t&&l.attrs[n])return l.attrs[n]}}catch(a){o.e(a)}finally{o.f()}return null},U=function(e,t){var n,c=Object(L["a"])(e);try{for(c.s();!(n=c.n()).done;){var o=n.value;if(o.type.name===t)return!0}}catch(l){c.e(l)}finally{c.f()}return!1},G=function(e,t){var n=e.selection,c=n.from,o=n.$from,l=n.to,a=n.empty;return a?t.isInSet(e.storedMarks||o.marks()):e.doc.rangeHasMark(c,l,t)},X=function(e,t){var n=e.state,c=n.selection,o=n.doc,l=c.from,a=c.to,r=!0,i="";return o.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(S["a"])(Object(S["a"])({},Y),t);var n=H(e),c=U(n,"strong"),o=U(n,"em"),l=U(n,"underline"),a=U(n,"strikethrough"),r=U(n,"superscript"),i=U(n,"subscript"),u=U(n,"code"),d=q(n,"forecolor","color")||t.color,s=q(n,"backcolor","backcolor")||t.backcolor,f=q(n,"fontsize","fontsize")||t.fontsize,b=q(n,"fontname","fontname")||t.fontname,p=q(n,"link","href")||"",O=X(e,"align")||t.align,m=P("bullet_list",e.state),v=P("ordered_list",e.state),j=P("blockquote",e.state);return{bold:c,em:o,underline:l,strikethrough:a,superscript:r,subscript:i,code:u,color:d,backcolor:s,fontsize:f,fontname:b,link:p,align:O,bulletList:m,orderedList:v,blockquote:j}},W=function(e){var t=H(e),n=q(t,"fontsize","fontsize")||Y.fontsize;return parseInt(n)},J={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,c=100,o=100,l="a",a=document.createElement("canvas"),r=a.getContext("2d");if(!r)return!1;a.width=c,a.height=o,r.textAlign="center",r.fillStyle="black",r.textBaseline="middle";var i=function(e){r.clearRect(0,0,c,o),r.font="".concat(n,"px ").concat(e,", ").concat(t),r.fillText(l,c/2,o/2);var a=r.getImageData(0,0,c,o).data;return[].slice.call(a).filter((function(e){return 0!==e}))};return i(t).join("")!==i(e).join("")}),K=n("2909"),$=(n("d81d"),n("ac1f"),n("5319"),n("5b81"),n("a434"),n("c740"),n("66cb")),ee=n.n($),te=n("2ef0"),ne=[{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"},oe=[{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}}"}}],le=Object(g["b"])("slides",{state:function(){return{theme:ce,slides:ne,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,c=n.map((function(e){return e.id}));return t.animations.filter((function(e){return c.includes(e.elId)}))},formatedAnimations:function(e){var t=e.slides[e.slideIndex];if(null===t||void 0===t||!t.animations)return[];var n,c=t.elements,o=c.map((function(e){return e.id})),l=t.animations.filter((function(e){return o.includes(e.elId)})),a=[],r=Object(L["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 c=a[a.length-1];c.autoNext=!0,a[a.length-1]=c,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,c=t.fontColor,o=t.fontName,l=t.backgroundColor,a=ee()(c).isDark()?"rgba(230, 230, 230, 0.5)":"rgba(180, 180, 180, 0.5)",r=JSON.stringify(oe).replaceAll("{{themeColor}}",n).replaceAll("{{fontColor}}",c).replaceAll("{{fontName}}",o).replaceAll("{{backgroundColor}}",l).replaceAll("{{subColor}}",a);return JSON.parse(r)}},actions:{setTheme:function(e){this.theme=Object(S["a"])(Object(S["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],c=this.slideIndex+1;(t=this.slides).splice.apply(t,[c,0].concat(Object(K["a"])(n))),this.slideIndex=c},updateSlide:function(e){var t=this.slideIndex;this.slides[t]=Object(S["a"])(Object(S["a"])({},this.slides[t]),e)},deleteSlide:function(e){for(var t=this,n=Array.isArray(e)?e:[e],c=[],o=function(e){var o=t.slides.findIndex((function(t){return t.id===n[e]}));c.push(o)},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,c=[].concat(Object(K["a"])(n),Object(K["a"])(t));this.slides[this.slideIndex].elements=c},deleteElement:function(e){var t=Array.isArray(e)?e:[e],n=this.slides[this.slideIndex].elements,c=n.filter((function(e){return!t.includes(e.id)}));this.slides[this.slideIndex].elements=c},updateElement:function(e){var t=e.id,n=e.props,c="string"===typeof t?[t]:t,o=this.slideIndex,l=this.slides[o],a=l.elements.map((function(e){return c.includes(e.id)?Object(S["a"])(Object(S["a"])({},e),n):e}));this.slides[o].elements=a},removeElementProps:function(e){var t=e.id,n=e.propName,c="string"===typeof n?[n]:n,o=this.slideIndex,l=this.slides[o],a=l.elements.map((function(e){return e.id===t?Object(te["omit"])(e,c):e}));this.slides[o].elements=a}}}),ae=Object(x["a"])("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"),re=ae(10),ie=Object(g["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:I,toolbarState:c.SLIDE_DESIGN,clipingImageElementId:"",richTextAttrs:J,selectedTableCells:[],isScaling:!1,selectedSlidesIndex:[],dialogForExport:"",databaseId:re}},getters:{activeElementList:function(e){var t=le(),n=t.currentSlide;return n&&n.elements?n.elements.filter((function(t){return e.activeElementIdList.includes(t.id)})):[]},handleElement:function(e){var t=le(),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=I.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}}}),ue=n("1da1"),de=(n("ddb0"),n("96cf"),n("d4ec")),se=n("257e"),fe=n("262e"),be=n("2caf"),pe=n("ade3"),Oe=n("3835"),me=(n("1276"),n("4dec")),ve="PPTIST_DISCARDED_DB",je="PPTist",he=function(){var e=Object(ue["a"])(regeneratorRuntime.mark((function e(){var t,n,c,o,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(ve),c=n?JSON.parse(n):[],e.next=5,me["a"].getDatabaseNames();case 5:o=e.sent,l=o.filter((function(e){if(-1===e.indexOf(je))return!1;var n=e.split("_"),o=Object(Oe["a"])(n,3),l=o[0],a=o[1],r=o[2];return l!==je||!a||!r||(!!c.includes(a)||t-+r>=432e5)})),a=Object(L["a"])(l);try{for(a.s();!(r=a.n()).done;)i=r.value,me["a"].delete(i)}catch(u){a.e(u)}finally{a.f()}localStorage.removeItem(ve);case 10:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),ye=function(e){Object(fe["a"])(n,e);var t=Object(be["a"])(n);function n(){var e;return Object(de["a"])(this,n),e=t.call(this,"".concat(je,"_").concat(re,"_").concat((new Date).getTime())),Object(pe["a"])(Object(se["a"])(e),"snapshots",void 0),e.version(1).stores({snapshots:"++id"}),e.snapshots=e.table("snapshots"),e}return n}(me["a"]),ge=new ye,xe=Object(g["b"])("snapshot",{state:function(){return{snapshotCursor:-1,snapshotLength:0}},getters:{canUndo:function(e){return e.snapshotCursor>0},canRedo:function(e){return e.snapshotCursor=0&&e.snapshotCursorr&&(o.push(c[0]),a--),a>=2&&ge.snapshots.update(c[a-2],{index:n.slideIndex}),t.next=15,ge.snapshots.bulkDelete(o);case 15:e.setSnapshotCursor(a-1),e.setSnapshotLength(a);case 17:case"end":return t.stop()}}),t)})))()},unDo:function(){var e=this;return Object(ue["a"])(regeneratorRuntime.mark((function t(){var n,c,o,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=le(),c=ie(),o=e.snapshotCursor-1,t.next=7,ge.snapshots.orderBy("id").toArray();case 7:l=t.sent,a=l[o],r=a.index,i=a.slides,u=r>i.length-1?i.length-1:r,n.setSlides(i),n.updateSlideIndex(u),e.setSnapshotCursor(o),c.setActiveElementIdList([]);case 15:case"end":return t.stop()}}),t)})))()},reDo:function(){var e=this;return Object(ue["a"])(regeneratorRuntime.mark((function t(){var n,c,o,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=le(),c=ie(),o=e.snapshotCursor+1,t.next=7,ge.snapshots.orderBy("id").toArray();case 7:l=t.sent,a=l[o],r=a.index,i=a.slides,u=r>i.length-1?i.length-1:r,n.setSlides(i),n.updateSlideIndex(u),e.setSnapshotCursor(o),c.setActiveElementIdList([]);case 15:case"end":return t.stop()}}),t)})))()}}}),ke=Object(g["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}}}),Ce=Object(g["b"])("screen",{state:function(){return{screening:!1}},actions:{setScreening:function(e){this.screening=e}}}),Ne=(n("466d"),function(e,t){return Object(te["padStart"])(""+e,t,"0")}),we=function(){return!navigator.userAgent.match(/(iPhone|iPod|iPad|Android|Mobile|BlackBerry|Symbian|Windows Phone)/i)};(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"}(C||(C={})),function(e){e["T"]="top",e["B"]="bottom",e["L"]="left",e["R"]="right"}(N||(N={})),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"}(w||(w={})),function(e){e["START"]="start",e["END"]="end",e["C"]="ctrl",e["C1"]="ctrl1",e["C2"]="ctrl2"}(E||(E={})),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"}(V||(V={}));var Ee,Ve,Ie,Be=[{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"}]}],Se=(n("3b18"),n("f64c")),Le=(n("a630"),n("3ca3"),n("b311")),_e=n.n(Le),Te=(n("25f0"),n("3452")),Me=n.n(Te),De="pptist",ze=function(e){return Me.a.AES.encrypt(e,De).toString()},Fe=function(e){var t=Me.a.AES.decrypt(e,De);return t.toString(Me.a.enc.Utf8)},Ae=function(e){return new Promise((function(t,n){var c=document.createElement("button"),o=new _e.a(c,{text:function(){return e},action:function(){return"copy"},container:document.body});o.on("success",(function(e){o.destroy(),t(e)})),o.on("error",(function(e){o.destroy(),n(e)})),document.body.appendChild(c),c.click(),document.body.removeChild(c)}))},Re=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")}))},Pe=function(e){var t;try{t=JSON.parse(Fe(e))}catch(n){t=e}return t},He=function(e){var t=e.split("\r\n");""===t[t.length-1]&&t.pop();var n=-1,c=[];for(var o in t){if(c[o]=t[o].split("\t"),1===c[o].length)return null;if(-1===n)n=c[o].length;else if(n!==c[o].length)return null}return c},qe=(n("159b"),function(e){var t=e.left,n=e.top,c=e.width,o=e.height,l=e.rotate,a=void 0===l?0:l,r=Math.sqrt(Math.pow(c,2)+Math.pow(o,2))/2,i=180*Math.atan(o/c)/Math.PI,u=(180-a-i)*Math.PI/180,d=(i-a)*Math.PI/180,s=t+c/2,f=n+o/2,b=[s+r*Math.cos(u),s+r*Math.cos(d),s-r*Math.cos(u),s-r*Math.cos(d)],p=[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,p),Math.max.apply(Math,p)]}}),Ue=function(e){var t=qe({left:e.left,top:e.top,width:e.width,height:e.height,rotate:0}),n=t.xRange,c=t.yRange,o=qe({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),l=o.xRange,a=o.yRange;return{offsetX:l[0]-n[0],offsetY:a[0]-c[0]}},Ge=function(e){var t,n,c,o;if("line"===e.type)t=e.left,n=e.left+Math.max(e.start[0],e.end[0]),c=e.top,o=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=qe({left:l,top:a,width:r,height:i,rotate:u}),s=d.xRange,f=d.yRange;t=s[0],n=s[1],c=f[0],o=f[1]}else t=e.left,n=e.left+e.width,c=e.top,o=e.top+e.height;return{minX:t,maxX:n,minY:c,maxY:o}},Xe=function(e){var t=[],n=[],c=[],o=[];e.forEach((function(e){var l=Ge(e),a=l.minX,r=l.maxX,i=l.minY,u=l.maxY;t.push(a),n.push(i),c.push(r),o.push(u)}));var l=Math.min.apply(Math,t),a=Math.max.apply(Math,c),r=Math.min.apply(Math,n),i=Math.max.apply(Math,o);return{minX:l,maxX:a,minY:r,maxY:i}},Ye=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 c=t[n],o=Math.min(c.range[0],e.range[0]),l=Math.max(c.range[1],e.range[1]),a=[o,l],r={value:e.value,range:a};t[n]=r}})),t},Ze=function(e){var t,n={},c={},o=Object(L["a"])(e);try{for(o.s();!(t=o.n()).done;){var l=t.value,a=l.groupId;a&&!n[a]&&(n[a]=Object(x["b"])(10)),c[l.id]=Object(x["b"])(10)}}catch(r){o.e(r)}finally{o.f()}return{groupIdMap:n,elIdMap:c}},We=function(e){var t=ee()(e);return[t.setAlpha(.3).toRgbString(),t.setAlpha(.1).toRgbString()]},Je=function(e){var t=e.start.join(","),n=e.end.join(",");if(e.broken){var c=e.broken.join(",");return"M".concat(t," L").concat(c," L").concat(n)}if(e.curve){var o=e.curve.join(",");return"M".concat(t," Q").concat(o," ").concat(n)}if(e.cubic){var l=Object(Oe["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)},Qe=n("53ca"),Ke=function(e){var t,n=e.replace(/[\n\r]+/g,"
"),c=n.split("
"),o="",l=Object(L["a"])(c);try{for(l.s();!(t=l.n()).done;){var a=t.value;a&&(o+="
".concat(a,"
"))}}catch(r){l.e(r)}finally{l.f()}return o},$e=(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,c=n.clientHeight;n.onload=null,n.onerror=null,document.body.removeChild(n),t({width:e,height:c})},n.onerror=function(){n.onload=null,n.onerror=null}}))}),et=function(e){return new Promise((function(t){var n=new FileReader;n.addEventListener("load",(function(){t(n.result)})),n.readAsDataURL(e)}))},tt=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"})(Ee||(Ee={})),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"}(Ve||(Ve={}));var nt=(Ie={},Object(pe["a"])(Ie,Ee.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"])(Ie,Ee.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"])(Ie,Ee.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"])(Ie,Ee.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"])(Ie,Ee.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"])(Ie,Ee.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"])(Ie,Ee.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"])(Ie,Ee.MESSAGE,(function(e,t){var n=e/5,c=t/5;return"M 0 0 L ".concat(e," 0 L ").concat(e," ").concat(t-c," L ").concat(e/2," ").concat(t-c," L ").concat(e/2-n," ").concat(t," L ").concat(e/2-n," ").concat(t-c," L 0 ").concat(t-c," Z")})),Object(pe["a"])(Ie,Ee.ROUND_MESSAGE,(function(e,t){var n=Math.min(e,t)/8,c=e/5,o=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-o," Q ").concat(e," ").concat(t-o," ").concat(e-n," ").concat(t-o," L ").concat(e/2," ").concat(t-o," L ").concat(e/2-c," ").concat(t," L ").concat(e/2-c," ").concat(t-o," L ").concat(n," ").concat(t-o," Q 0 ").concat(t-o," 0 ").concat(t-n-o," L 0 ").concat(n," Z")})),Object(pe["a"])(Ie,Ee.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"])(Ie,Ee.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"])(Ie,Ee.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")})),Ie),ct=[{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:Ee.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:Ee.CUT_RECT_DIAGONAL},{viewBox:[200,200],path:"M 0 200 L 0 0 L 150 0 L 200 50 L 200 200 Z",pathFormula:Ee.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:Ee.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:Ee.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:Ee.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:Ee.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:Ee.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:Ee.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:Ee.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:Ee.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:Ee.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}]}],ot={bar:"bar",horizontalBar:"bar",line:"line",area:"line",scatter:"line",pie:"pie",ring:"pie"},lt=function(){var e=xe(),t=Object(te["debounce"])((function(){e.addSnapshot()}),300,{trailing:!0}),n=Object(te["throttle"])((function(){e.reDo()}),100,{leading:!0,trailing:!1}),c=Object(te["throttle"])((function(){e.unDo()}),100,{leading:!0,trailing:!1});return{addHistorySnapshot:t,redo:n,undo:c}},at=function(){var e=ie(),t=le(),n=Object(g["c"])(e),c=n.creatingElement,o=Object(g["c"])(t),l=o.theme,a=o.viewportRatio,r=lt(),i=r.addHistorySnapshot,u=function(n,o){t.addElement(n),e.setActiveElementIdList([n.id]),c.value&&e.setCreatingElement(null),setTimeout((function(){e.setEditorareaFocus(!0)}),0),o&&o(),i()},d=function(e){$e(e).then((function(t){var n=t.width,c=t.height,o=c/n;ott?(n=tt,c=n*o):c>tt*a.value&&(c=tt*a.value,n=c/o),u({type:"image",id:Object(x["b"])(10),src:e,width:n,height:c,left:(tt-n)/2,top:(tt*a.value-c)/2,fixedRatio:!0,rotate:0})}))},s=function(e){var t={type:"chart",id:Object(x["b"])(10),chartType:ot[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(S["a"])(Object(S["a"])({},t),{},{options:n}))},f=function(e,t){for(var n={fontname:l.value.fontName,color:l.value.fontColor},c=[],o=0;o1&&void 0!==arguments[1]?arguments[1]:"",n=e.left,c=e.top,o=e.width,a=e.height,r=Object(x["b"])(10);u({type:"text",id:r,left:n,top:c,width:o,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)}))},p=function(e,t){var n=e.left,c=e.top,o=e.width,a=e.height,r={type:"shape",id:Object(x["b"])(10),left:n,top:c,width:o,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=[o,a],r.path=nt[t.pathFormula](o,a)),u(r)},O=function(e,t){var n=e.left,c=e.top,o=e.start,a=e.end,r={type:"line",id:Object(x["b"])(10),left:n,top:c,start:o,end:a,points:t.points,color:l.value.themeColor,style:t.style,width:2};t.isBroken&&(r.broken=[(o[0]+a[0])/2,(o[1]+a[1])/2]),t.isCurve&&(r.curve=[(o[0]+a[0])/2,(o[1]+a[1])/2]),t.isCubic&&(r.cubic=[[(o[0]+a[0])/2,(o[1]+a[1])/2],[(o[0]+a[0])/2,(o[1]+a[1])/2]]),u(r)},m=function(e){u({type:"latex",id:Object(x["b"])(10),width:e.w,height:e.h,rotate:0,left:(tt-e.w)/2,top:(tt*a.value-e.h)/2,path:e.path,latex:e.latex,color:l.value.fontColor,strokeWidth:2,viewBox:[e.w,e.h],fixedRatio:!0})},v=function(e){u({type:"video",id:Object(x["b"])(10),width:500,height:300,rotate:0,left:(tt-500)/2,top:(tt*a.value-300)/2,src:e})},j=function(e){u({type:"audio",id:Object(x["b"])(10),width:50,height:50,rotate:0,left:(tt-50)/2,top:(tt*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:p,createLineElement:O,createLatexElement:m,createVideoElement:v,createAudioElement:j}},rt=(n("07ac"),function(){var e=ie(),t=le(),n=Object(g["c"])(t),c=n.currentSlide,o=lt(),l=o.addHistorySnapshot,a=function(n){var o,a=Ze(n),r=a.groupIdMap,i=a.elIdMap,u=c.value.elements.map((function(e){return e.id})),d=Object(L["a"])(n);try{for(d.s();!(o=d.n()).done;){var s=o.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=Ze(e.elements),c=n.groupIdMap,o=n.elIdMap,l=Object(L["a"])(e.elements);try{for(l.s();!(t=l.n()).done;){var a=t.value;a.id=o[a.id],a.groupId&&(a.groupId=c[a.groupId])}}catch(d){l.e(d)}finally{l.f()}if(e.animations){var r,i=Object(L["a"])(e.animations);try{for(i.s();!(r=i.n()).done;){var u=r.value;u.id=Object(x["b"])(10),u.elId=o[u.elId]}}catch(d){i.e(d)}finally{i.f()}}return Object(S["a"])(Object(S["a"])({},e),{},{id:Object(x["b"])(10)})}));t.addSlide(n),l()};return{addElementsFromData:a,addSlidesFromData:r}}),it=function(){var e=at(),t=e.createTextElement,n=rt(),c=n.addElementsFromData,o=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=Pe(e);if("object"===Object(Qe["a"])(r)){var i=r.type,u=r.data;"elements"!==i||n?"slides"!==i||a||o(u):c(u)}else if(!a&&!n){var d=Ke(r);l(d)}};return{pasteTextClipboardData:a}},ut=function(){var e=ie(),t=le(),n=Object(g["c"])(e),c=n.selectedSlidesIndex,o=n.activeElementIdList,l=Object(g["c"])(t),a=l.currentSlide,r=l.slides,i=l.theme,u=l.slideIndex,d=Object(y["computed"])((function(){return[].concat(Object(K["a"])(c.value),[u.value])})),s=Object(y["computed"])((function(){return r.value.filter((function(e,t){return d.value.includes(t)}))})),f=Object(y["computed"])((function(){return s.value.map((function(e){return e.id}))})),b=it(),p=b.pasteTextClipboardData,O=rt(),m=O.addSlidesFromData,v=lt(),j=v.addHistorySnapshot,h=function(){var n={id:Object(x["b"])(10),elements:[],background:{type:"solid",color:i.value.backgroundColor}};t.updateSlideIndex(0),e.setActiveElementIdList([]),t.setSlides([n])},k=function(n){n===V.UP&&u.value>0?(o.value.length&&e.setActiveElementIdList([]),t.updateSlideIndex(u.value-1)):n===V.DOWN&&u.value0&&void 0!==arguments[0]?arguments[0]:f.value;r.value.length===n.length?h():t.deleteSlide(n),e.updateSelectedSlidesIndex([]),j()},_=function(){var e=Object(K["a"])(f.value);C(),B(e)},T=function(){var t=Array.from(Array(r.value.length),(function(e,t){return t}));e.setActiveElementIdList([]),e.updateSelectedSlidesIndex(t)};return{resetSlides:h,updateSlideIndex:k,copySlide:C,pasteSlide:N,createSlide:w,createSlideByTemplate:E,copyAndPasteSlide:I,deleteSlide:B,cutSlide:_,selectAllSlide:T}},dt=function(){var e=ie(),t=le(),n=Object(g["c"])(e),c=n.activeElementIdList,o=Object(g["c"])(t),l=o.currentSlide,a=lt(),r=a.addHistorySnapshot,i=function(){var n,o=JSON.parse(JSON.stringify(l.value.elements)),a=Object(L["a"])(o);try{for(a.s();!(n=a.n()).done;){var i=n.value;c.value.includes(i.id)&&(i.lock=!0)}}catch(u){a.e(u)}finally{a.f()}t.updateSlide({elements:o}),e.setActiveElementIdList([]),r()},u=function(n){var c=JSON.parse(JSON.stringify(l.value.elements));if(n.groupId){var o,a=[],i=Object(L["a"])(c);try{for(i.s();!(o=i.n()).done;){var u=o.value;u.groupId===n.groupId&&(u.lock=!1,a.push(u.id))}}catch(b){i.e(b)}finally{i.f()}t.updateSlide({elements:c}),e.setActiveElementIdList(a)}else{var d,s=Object(L["a"])(c);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:c}),e.setActiveElementIdList([n.id])}r()};return{lockElement:i,unlockElement:u}},st=function(){var e=ie(),t=le(),n=Object(g["c"])(e),c=n.activeElementIdList,o=n.activeGroupElementId,l=Object(g["c"])(t),a=l.currentSlide,r=lt(),i=r.addHistorySnapshot,u=function(){if(c.value.length){var n=[];n=o.value?a.value.elements.filter((function(e){return e.id!==o.value})):a.value.elements.filter((function(e){return!c.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}},ft=function(){var e=ie(),t=le(),n=Object(g["c"])(e),c=n.activeElementIdList,o=n.activeElementList,l=n.handleElementId,a=Object(g["c"])(t),r=a.currentSlide,i=lt(),u=i.addHistorySnapshot,d=Object(y["computed"])((function(){if(o.value.length<2)return!1;var e=o.value[0].groupId;if(!e)return!0;var t=o.value.every((function(t){return(t.groupId&&t.groupId)===e}));return!t})),s=function(){var e;if(o.value.length){var n,l=JSON.parse(JSON.stringify(r.value.elements)),a=Object(x["b"])(10),i=[],d=Object(L["a"])(l);try{for(d.s();!(n=d.n()).done;){var s=n.value;c.value.includes(s.id)&&(s.groupId=a,i.push(s))}}catch(O){d.e(O)}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 p=f-i.length+1;(e=l).splice.apply(e,[p,0].concat(i)),t.updateSlide({elements:l}),u()}},f=function(){if(o.value.length){var n=o.value.some((function(e){return e.groupId}));if(n){var a,i=JSON.parse(JSON.stringify(r.value.elements)),d=Object(L["a"])(i);try{for(d.s();!(a=d.n()).done;){var s=a.value;c.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}},bt=function(){var e=ie(),t=Object(g["c"])(e),n=t.activeElementIdList,c=t.activeElementList,o=it(),l=o.pasteTextClipboardData,a=st(),r=a.deleteElement,i=function(){if(n.value.length){var t=ze(JSON.stringify({type:"elements",data:c.value}));Ae(t).then((function(){e.setEditorareaFocus(!0)}))}},u=function(){i(),r()},d=function(){Re().then((function(e){l(e)})).catch((function(e){return Se["a"].warning(e)}))},s=function(){i(),d()};return{copyElement:i,cutElement:u,pasteElement:d,quickCopyElement:s}},pt=function(){var e=ie(),t=Object(g["c"])(le()),n=t.currentSlide,c=function(){var t=n.value.elements.filter((function(e){return!e.lock})),c=t.map((function(e){return e.id}));e.setActiveElementIdList(c)};return{selectAllElement:c}},Ot=function(){var e=le(),t=Object(g["c"])(ie()),n=t.activeElementIdList,c=t.activeGroupElementId,o=Object(g["c"])(e),l=o.currentSlide,a=lt(),r=a.addHistorySnapshot,i=function(t){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,a=[],i=function(e){var n=e.left,c=e.top;switch(t){case V.LEFT:n-=o;break;case V.RIGHT:n+=o;break;case V.UP:c-=o;break;case V.DOWN:c+=o;break;default:break}return Object(S["a"])(Object(S["a"])({},e),{},{left:n,top:c})};a=c.value?l.value.elements.map((function(e){return c.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}},mt=function(){var e=le(),t=Object(g["c"])(e),n=t.currentSlide,c=lt(),o=c.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 c=n.filter((function(e){return e.groupId===t.groupId})),o=l(e,c),a=o.minLevel,r=o.maxLevel;if(r===e.length-1)return;var i=n[r+1],u=n.splice(a,c.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(K["a"])(u)))}else n.splice.apply(n,[a+1,0].concat(Object(K["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 p=n.filter((function(e){return e.groupId===f.groupId}));n.splice(s+p.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 c=n.filter((function(e){return e.groupId===t.groupId})),o=l(e,c),a=o.minLevel;if(0===a)return;var r=n[a-1],i=n.splice(a,c.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(K["a"])(i)))}else n.splice.apply(n,[a-1,0].concat(Object(K["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 c=n.filter((function(e){return e.groupId===t.groupId})),o=l(e,c),a=o.minLevel,r=o.maxLevel;if(r===e.length-1)return null;var i=n.splice(a,c.length);n.push.apply(n,Object(K["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 c=n.filter((function(e){return e.groupId===t.groupId})),o=l(e,c),a=o.minLevel;if(0===a)return;var r=n.splice(a,c.length);n.unshift.apply(n,Object(K["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,c){var l;c===k.UP?l=a(n.value.elements,t):c===k.DOWN?l=r(n.value.elements,t):c===k.TOP?l=i(n.value.elements,t):c===k.BOTTOM&&(l=u(n.value.elements,t)),l&&(e.updateSlide({elements:l}),o())};return{orderElement:d}},vt=function(){var e=document.documentElement;e.requestFullscreen?e.requestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullScreen?e.webkitRequestFullScreen():e.msRequestFullscreen&&e.msRequestFullscreen()},jt=function(){document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.msExitFullscreen&&document.msExitFullscreen()},ht=function(){var e=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement||document.webkitCurrentFullScreenElement;return!!e},yt=function(){var e=Ce(),t=le(),n=function(){vt(),e.setScreening(!0)},c=function(){t.updateSlideIndex(0),n()},o=function(){e.setScreening(!1),ht()&&jt()};return{enterScreening:n,enterScreeningFromStart:c,exitScreening:o}},gt=function(){var e=ie(),t=Object(g["c"])(e),n=t.canvasPercentage,c=t.canvasScale,o=t.canvasDragged,l=Object(y["computed"])((function(){return Math.round(100*c.value)+"%"})),a=function(t){var c=n.value,o=5,l=200,a=30;"+"===t&&c<=l&&(c+=o),"-"===t&&c>=a&&(c-=o),e.setCanvasPercentage(c)},r=function(t){var o=Math.round(t/c.value*n.value)/100;e.setCanvasPercentage(o)},i=function(){e.setCanvasPercentage(90),o&&e.setCanvasDragged(!1)};return{canvasScalePercentage:l,setCanvasScalePercentage:r,scaleCanvas:a,resetCanvas:i}},xt=function(){var e=ie(),t=ke(),n=Object(g["c"])(e),c=n.activeElementIdList,o=n.disableHotkeys,l=n.handleElement,a=n.handleElementId,r=n.editorAreaFocus,i=n.thumbnailsFocus,u=Object(g["c"])(le()),d=u.currentSlide,s=Object(g["c"])(t),f=s.ctrlKeyState,b=s.shiftKeyState,p=s.spaceKeyState,O=ut(),m=O.updateSlideIndex,v=O.copySlide,j=O.createSlide,h=O.deleteSlide,x=O.cutSlide,C=O.copyAndPasteSlide,N=O.selectAllSlide,w=ft(),E=w.combineElements,I=w.uncombineElements,B=st(),S=B.deleteElement,L=dt(),_=L.lockElement,T=bt(),M=T.copyElement,D=T.cutElement,z=T.quickCopyElement,F=pt(),A=F.selectAllElement,R=Ot(),P=R.moveElement,H=mt(),q=H.orderElement,U=lt(),G=U.redo,X=U.undo,Y=yt(),Z=Y.enterScreening,W=Y.enterScreeningFromStart,J=gt(),Q=J.scaleCanvas,K=J.resetCanvas,$=function(){c.value.length?M():i.value&&v()},ee=function(){c.value.length?D():i.value&&x()},te=function(){c.value.length?z():i.value&&C()},ne=function(){r.value&&A(),i.value&&N()},ce=function(){r.value&&_()},oe=function(){r.value&&E()},ae=function(){r.value&&I()},re=function(){c.value.length?S():i.value&&h()},ue=function(e){c.value.length?P(e):e!==V.UP&&e!==V.DOWN||m(e)},de=function(e){e===V.PAGEUP?m(V.UP):e===V.PAGEDOWN&&m(V.DOWN)},se=function(e){l.value&&q(l.value,e)},fe=function(){i.value&&j()},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,c=d.value.elements[n].id;e.setActiveElementIdList([c])}else{var o=d.value.elements[0];e.setActiveElementIdList([o.id])}},pe=function(n){var c=n.ctrlKey,l=n.shiftKey,a=n.altKey,u=n.metaKey,d=c||u,s=n.key.toUpperCase();if(d&&!f.value&&t.setCtrlKeyState(!0),l&&!b.value&&t.setShiftKeyState(!0),o.value||s!==V.SPACE||t.setSpaceKeyState(!0),d&&s===V.P)return n.preventDefault(),void e.setDialogForExport("pdf");if(l&&s===V.F5)return n.preventDefault(),Z(),void t.setShiftKeyState(!1);if(s===V.F5)return n.preventDefault(),void W();if(r.value||i.value){if(d&&s===V.C){if(o.value)return;n.preventDefault(),$()}if(d&&s===V.X){if(o.value)return;n.preventDefault(),ee()}if(d&&s===V.D){if(o.value)return;n.preventDefault(),te()}if(d&&s===V.Z){if(o.value)return;n.preventDefault(),X()}if(d&&s===V.Y){if(o.value)return;n.preventDefault(),G()}if(d&&s===V.A){if(o.value)return;n.preventDefault(),ne()}if(d&&s===V.L){if(o.value)return;n.preventDefault(),ce()}if(!l&&d&&s===V.G){if(o.value)return;n.preventDefault(),oe()}if(l&&d&&s===V.G){if(o.value)return;n.preventDefault(),ae()}if(a&&s===V.F){if(o.value)return;n.preventDefault(),se(k.TOP)}if(a&&s===V.B){if(o.value)return;n.preventDefault(),se(k.BOTTOM)}if(s===V.DELETE||s===V.BACKSPACE){if(o.value)return;n.preventDefault(),re()}if(s===V.UP){if(o.value)return;n.preventDefault(),ue(V.UP)}if(s===V.DOWN){if(o.value)return;n.preventDefault(),ue(V.DOWN)}if(s===V.LEFT){if(o.value)return;n.preventDefault(),ue(V.LEFT)}if(s===V.RIGHT){if(o.value)return;n.preventDefault(),ue(V.RIGHT)}if(s===V.PAGEUP){if(o.value)return;n.preventDefault(),de(V.PAGEUP)}if(s===V.PAGEDOWN){if(o.value)return;n.preventDefault(),de(V.PAGEDOWN)}if(s===V.ENTER){if(o.value)return;n.preventDefault(),fe()}if(s===V.MINUS){if(o.value)return;n.preventDefault(),Q("-")}if(s===V.EQUAL){if(o.value)return;n.preventDefault(),Q("+")}if(s===V.DIGIT_0){if(o.value)return;n.preventDefault(),K()}if(s===V.TAB){if(o.value)return;n.preventDefault(),be()}}},Oe=function(){f.value&&t.setCtrlKeyState(!1),b.value&&t.setShiftKeyState(!1),p.value&&t.setSpaceKeyState(!1)};Object(y["onMounted"])((function(){document.addEventListener("keydown",pe),document.addEventListener("keyup",Oe),window.addEventListener("blur",Oe)})),Object(y["onUnmounted"])((function(){document.removeEventListener("keydown",pe),document.removeEventListener("keyup",Oe),window.removeEventListener("blur",Oe)}))},kt=function(){var e=Object(g["c"])(ie()),t=e.editorAreaFocus,n=e.thumbnailsFocus,c=e.disableHotkeys,o=it(),l=o.pasteTextClipboardData,a=at(),r=a.createImageElement,i=function(e){et(e).then((function(e){return r(e)}))},u=function(e){if((t.value||n.value)&&!c.value&&e.clipboardData){var o=e.clipboardData.items,a=o[0];if(a){var r,u=Object(L["a"])(o);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(y["onMounted"])((function(){document.addEventListener("paste",u)})),Object(y["onUnmounted"])((function(){document.removeEventListener("paste",u)}))},Ct=(n("9911"),n("cc71"),n("21a6")),Nt=n("8f74"),wt=n("e774"),Et=(n("00b4"),["style","script","template"]),Vt=["html","head","body","p","dt","dd","li","option","thead","th","tbody","tr","td","tfoot","colgroup"],It={li:["ul","ol","menu"],dt:["dl"],dd:["dl"],tbody:["table"],thead:["table"],tfoot:["table"],tr:["table"],td:["table"]},Bt=["!doctype","area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],St=function(e,t){var n=t-e.position;Lt(e,n)},Lt=function(e,t){e.position=e.position+t},_t=function(e,t){var n=!1;while(!n){var c=e.indexOf("<",t);if(-1===c)return c;var o=e.charAt(c+1);if("/"===o||"!"===o||/[A-Za-z0-9]/.test(o))return c;t=c+1}return-1},Tt=function(e){var t=e.str,n=_t(t,e.position);if(n!==e.position){-1===n&&(n=t.length);var c=t.slice(e.position,n);St(e,n),e.tokens.push({type:"text",content:c})}},Mt=function(e){var t=e.str;Lt(e,4);var n=t.indexOf("--\x3e",e.position),c=n+3;-1===n&&(n=c=t.length);var o=t.slice(e.position,n);St(e,c),e.tokens.push({type:"comment",content:o})},Dt=function(e){var t=e.str,n=t.length,c=e.position;while(c"===o);if(l)break;c++}var a=c+1;while(a"===r);if(!i)break;a++}St(e,a);var u=t.slice(c,a);return e.tokens.push({type:"tag",content:u}),u},zt=function(e){var t=e.str,n=e.tokens,c=e.position,o=null,l=c,a=[],r=t.length;while(c"===i;if(d){c!==l&&a.push(t.slice(l,c));break}var s=/\s/.test(i);if(s)c!==l&&a.push(t.slice(l,c)),l=c+1,c++;else{var f="'"===i||'"'===i;f?(o=i,c++):c++}}}St(e,c);for(var b="attribute",p=0;p1){var j=O+v;n.push({type:b,content:j}),p+=1;continue}var h=a[p+2];if(p+=1,h){var y=O+"="+h;n.push({type:b,content:y}),p+=1;continue}}}if(Object(te["endsWith"])(O,"=")){var g=a[p+1];if(g&&-1===g.indexOf("=")){var x=O+g;n.push({type:b,content:x}),p+=1;continue}var k=O.slice(0,-1);n.push({type:b,content:k})}else n.push({type:b,content:O})}},Ft=function(e,t){var n=t.str,c=t.tokens,o=e.toLowerCase(),l=n.length,a=t.position;while(a=0){var o=t[c].tagName;if(o===e)break;if(n.includes(o))return!0;c--}}return!1},Ut=function(e,t){e.splice(t)},Gt=function e(t){var n=t.stack,c=t.tokens,o=t.cursor,l=n[n.length-1].children,a=c.length;while(o-1)if(n[d].tagName===u){s=!0;break}while(o0){if(u===n[p].tagName){Ut(n,p);var O=p-1;l=n[O].children;break}p-=1}}var m=[],v=void 0;while(o127&&c<2048?(t+=String.fromCharCode(c>>6|192),t+=String.fromCharCode(63&c|128)):(t+=String.fromCharCode(c>>12|224),t+=String.fromCharCode(c>>6&63|128),t+=String.fromCharCode(63&c|128))}return t},on=function(e){var t,n,c,o,l,a,r,i="",u=0;e=cn(e);while(u>2,l=(3&t)<<4|n>>4,a=(15&n)<<2|c>>6,r=63&c,isNaN(n)?a=r=64:isNaN(c)&&(r=64),i=i+tn.charAt(o)+tn.charAt(l)+tn.charAt(a)+tn.charAt(r);return i},ln=function(e){var t=new XMLSerializer,n=t.serializeToString(e);return nn+on(n)},an=function(){var e=le(),t=Object(g["c"])(e),n=t.slides,c=t.theme,o=t.viewportRatio,l=rt(),a=l.addSlidesFromData,r=Object(y["ref"])(!1),i=function(e,t,n){var c=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];r.value=!0;var o="png"===t?wt["c"]:wt["b"],l=e.querySelectorAll("foreignObject [xmlns]");l.forEach((function(e){return e.removeAttribute("xmlns")})),setTimeout((function(){var l={quality:n,width:1600};c&&(l.fontEmbedCSS=""),o(e,l).then((function(e){r.value=!1,Object(Ct["saveAs"])(e,"pptist_slides.".concat(t))})).catch((function(){r.value=!1,Se["a"].error("导出图片失败")}))}),200)},u=function(e){var t=new Blob([ze(JSON.stringify(e))],{type:""});Object(Ct["saveAs"])(t,"pptist_slides.pptist")},d=function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],c=t[0],o=new FileReader;o.addEventListener("load",(function(){try{var t=JSON.parse(Fe(o.result));n?e.setSlides(t):a(t)}catch(c){Se["a"].error("无法正确读取 / 解析该文件")}})),o.readAsText(c)},s=function(){var e=new Blob([JSON.stringify(n.value)],{type:""});Object(Ct["saveAs"])(e,"pptist_slides.json")},f=function(e){var t=ee()(e),n=t.getAlpha(),c=0===n?"#ffffff":t.setAlpha(1).toHexString();return{alpha:n,color:c}},b=function(e){var t=Jt(e),n=!1,c=0,o=[],l=function e(t){var l,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=Object(L["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&&o.length){var d=o[o.length-1];d.options||(d.options={}),d.options.breakLine=!0}var s=Object(S["a"])({},a),b="attributes"in i?i.attributes.find((function(e){return"style"===e.key})):null;if(b&&b.value){var p,O=b.value.split(";"),m=Object(L["a"])(O);try{for(m.s();!(p=m.n()).done;){var v=p.value,j=v.split(": "),h=Object(Oe["a"])(j,2),y=h[0],g=h[1],x=[Object(te["trim"])(y),Object(te["trim"])(g)],k=x[0],C=x[1];k&&C&&(s[k]=C)}}catch(I){m.e(I)}finally{m.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 N=i.attributes.find((function(e){return"href"===e.key}));s["href"]=(null===N||void 0===N?void 0:N.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&&(c=+w.value)}}if("tagName"in i&&"br"===i.tagName)o.push({text:"",options:{breakLine:!0}});else if("content"in i){var E=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),c&&(V.indentLevel=c,c=0),o.push({text:E,options:V})}else"children"in i&&e(i.children,s)}}catch(I){r.e(I)}finally{r.f()}};return l(t),o},p=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}}))},O=function(e){var t=f(e.color),n=e.h,c=e.v,o=4,l=45;return 0===n&&0===c?(o=4,l=45):0===n?c>0?(o=c,l=90):(o=-c,l=270):0===c?n>0?(o=n,l=1):(o=-n,l=180):n>0&&c>0?(o=Math.max(n,c),l=45):n>0&&c<0?(o=Math.max(n,-c),l=315):n<0&&c>0?(o=Math.max(-n,c),l=135):n<0&&c<0&&(o=Math.max(-n,-c),l=225),{type:"outer",color:t.color.replace("#",""),opacity:t.alpha,blur:.75*e.blur,offset:o,angle:l}},m=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"}},v=function(e){var t=e.type,c=e.target;if("web"===t)return{url:c};if("slide"===t){var o=n.value.findIndex((function(e){return e.id===c}));if(-1!==o)return{slide:o+1}}return null},j=function(e,t){r.value=!0;var n=new Nt["a"];if(.625===o.value?n.layout="LAYOUT_16x10":.75===o.value?n.layout="LAYOUT_4x3":n.layout="LAYOUT_16x9",t){var l=f(c.value.backgroundColor),a=l.color,i=l.alpha;n.defineSlideMaster({title:"PPTIST_MASTER",background:{color:a,transparency:100*(1-i)}})}var u,d=Object(L["a"])(e);try{for(d.s();!(u=d.n()).done;){var s=u.value,j=n.addSlide();if(s.background){var h=s.background;if("image"===h.type&&h.image)j.background={data:h.image};else if("solid"===h.type&&h.color){var y=f(h.color);j.background={color:y.color,transparency:100*(1-y.alpha)}}else if("gradient"===h.type&&h.gradientColor){var g=Object(Oe["a"])(h.gradientColor,2),x=g[0],k=g[1],C=ee.a.mix(x,k).toHexString(),N=f(C);j.background={color:N.color,transparency:100*(1-N.alpha)}}}if(s.remark&&j.addNotes(s.remark),s.elements){var w,E=Object(L["a"])(s.elements);try{var V=function(){var e=w.value;if("text"===e.type){var t,c=b(e.content),o={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&&(o.rotate=e.rotate),e.wordSpace&&(o.charSpacing=.75*e.wordSpace),e.lineHeight&&(o.lineSpacingMultiple=e.lineHeight/1.25),e.fill){var l=f(e.fill),a=void 0===e.opacity?1:e.opacity;o.fill={color:l.color,transparency:100*(1-l.alpha*a)}}e.defaultColor&&(o.color=f(e.defaultColor).color),e.defaultFontName&&(o.fontFace=e.defaultFontName),e.shadow&&(o.shadow=O(e.shadow)),null!==(t=e.outline)&&void 0!==t&&t.width&&(o.line=m(e.outline)),void 0!==e.opacity&&(o.transparency=100*(1-e.opacity)),void 0!==e.paragraphSpace&&(o.paraSpaceBefore=.75*e.paragraphSpace),j.addText(c,o)}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=v(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(Oe["a"])(e.clip.range,2),h=s[0],y=s[1],g=Object(Oe["a"])(h,2),x=g[0],k=g[1],C=Object(Oe["a"])(y,2),N=C[0],E=C[1],V=e.width/((N-x)/100),I=e.height/((E-k)/100);u.w=V/100,u.h=I/100,u.sizing={type:"crop",x:x/100*V/100,y:k/100*I/100,w:(N-x)/100*V/100,h:(E-k)/100*I/100}}j.addImage(u)}else if("shape"===e.type){if(e.special){var B=document.querySelector(".thumbnail-list .base-element-".concat(e.id," svg")),S=ln(B),L={data:S,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 _=v(e.link);_&&(L.hyperlink=_)}j.addImage(L)}else{var T,M={x:e.width/e.viewBox[0],y:e.height/e.viewBox[1]},D=p(en(e.path),M),z=f(e.fill),F=void 0===e.opacity?1:e.opacity,A={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*F)},points:D};if(e.flipH&&(A.flipH=e.flipH),e.flipV&&(A.flipV=e.flipV),e.shadow&&(A.shadow=O(e.shadow)),null!==(T=e.outline)&&void 0!==T&&T.width&&(A.line=m(e.outline)),e.link){var R=v(e.link);R&&(A.hyperlink=R)}j.addShape("custGeom",A)}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),j.addText(P,H)}}else if("line"===e.type){var q=Je(e),U=p(en(q)),G=Ge(e),X=G.minX,Y=G.maxX,Z=G.minY,W=G.maxY,J=f(e.color),Q={x:e.left/100,y:e.top/100,w:(Y-X)/100,h:(W-Z)/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&&(Q.shadow=O(e.shadow)),j.addShape("custGeom",Q)}else if("chart"===e.type){for(var $=[],te=0;te1||je.rowspan>1)for(var he=pe;hei.value){var r=o*(l.value/100);c.setCanvasScale(r/tt),t.value=(o-r)/2,n.value=(a-r*i.value)/2}else{var u=a*(l.value/100);c.setCanvasScale(u/(tt*i.value)),t.value=(o-u/i.value)/2,n.value=(a-u)/2}}};Object(y["watch"])([l,i],u),Object(y["watch"])(a,(function(){a.value||u()}));var d=Object(y["computed"])((function(){return{width:tt,height:tt*i.value,left:t.value,top:n.value}})),s=new ResizeObserver(u);Object(y["onMounted"])((function(){e.value&&s.observe(e.value)})),Object(y["onUnmounted"])((function(){e.value&&s.unobserve(e.value)}));var f=function(e){var o=!0,l=e.pageX,a=e.pageY,r=t.value,i=n.value;document.onmousemove=function(e){if(o){var c=e.pageX,u=e.pageY;t.value=r+(c-l),n.value=i+(u-a)}},document.onmouseup=function(){o=!1,document.onmousemove=null,document.onmouseup=null,c.setCanvasDragged(!0)}};return{viewportStyles:d,dragViewport:f}},lc=function(e,t){var n=ie(),c=Object(g["c"])(n),o=c.canvasScale,l=Object(y["ref"])(!1),a=Object(y["ref"])(1),r=Object(y["ref"])({top:0,left:0,width:0,height:0}),i=function(c){if(t.value){var i=!0,u=t.value.getBoundingClientRect(),d=5,s=c.pageX,f=c.pageY,b=(s-u.x)/o.value,p=(f-u.y)/o.value;r.value={top:p,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,c=(t-s)/o.value,u=(n-f)/o.value,b=Math.abs(c),p=Math.abs(u);if(!(b0&&u>0?O=4:c<0&&u<0?O=1:c>0&&u<0?O=2:c<0&&u>0&&(O=3),r.value=Object(S["a"])(Object(S["a"])({},r.value),{},{width:b,height:p}),l.value=!0,a.value=O}}},document.onmouseup=function(){document.onmousemove=null,document.onmouseup=null,i=!1;for(var t=[],c=0;cu&&Od&&vu-s&&Od-f&&vu&&Od-f&&vu-s&&Od&&v0&&Math.abs(r-45)<=d?r-=r-45:r<0&&Math.abs(r+45)<=d?r-=r+45:r>0&&Math.abs(r-90)<=d?r-=r-90:r<0&&Math.abs(r+90)<=d?r-=r+90:r>0&&Math.abs(r-135)<=d?r-=r-135:r<0&&Math.abs(r+135)<=d?r-=r+135:r>0&&Math.abs(r-180)<=d?r-=r-180:r<0&&Math.abs(r+180)<=d&&(r-=r+180),e.value=e.value.map((function(e){return c.id===e.id?Object(S["a"])(Object(S["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}},uc={text:"文本",image:"图片",shape:"形状",line:"线条",chart:"图表",table:"表格",video:"视频",audio:"音频"},dc={text:20,image:20,shape:15,chart:200,table:20,video:250,audio:20},sc=function(e,t){var n=e.left,c=e.top,o=e.width,l=e.height,a=Math.sqrt(Math.pow(o,2)+Math.pow(l,2))/2,r=180*Math.atan(l/o)/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=o/2,b=l/2,p=n+f,O=c+b,m={left:p+a*Math.cos(i),top:O-a*Math.sin(i)},v={left:p+b*Math.cos(d),top:O-b*Math.sin(d)},j={left:p+a*Math.cos(u),top:O-a*Math.sin(u)},h={left:p+f*Math.cos(s),top:O+f*Math.sin(s)},y={left:p-a*Math.cos(i),top:O+a*Math.sin(i)},g={left:p-b*Math.sin(s),top:O+b*Math.cos(s)},x={left:p-a*Math.cos(u),top:O+a*Math.sin(u)},k={left:p-f*Math.cos(s),top:O-f*Math.sin(s)};return{leftTopPoint:m,topPoint:v,rightTopPoint:j,rightPoint:h,rightBottomPoint:y,bottomPoint:g,leftBottomPoint:x,leftPoint:k}},fc=function(e,t){var n,c=(n={},Object(pe["a"])(n,w.RIGHT_BOTTOM,t.leftTopPoint),Object(pe["a"])(n,w.LEFT_BOTTOM,t.rightTopPoint),Object(pe["a"])(n,w.LEFT_TOP,t.rightBottomPoint),Object(pe["a"])(n,w.RIGHT_TOP,t.leftBottomPoint),Object(pe["a"])(n,w.TOP,t.bottomPoint),Object(pe["a"])(n,w.BOTTOM,t.topPoint),Object(pe["a"])(n,w.LEFT,t.rightPoint),Object(pe["a"])(n,w.RIGHT,t.leftPoint),n);return c[e]},bc=function(e,t,n){var c=ie(),o=le(),l=Object(g["c"])(c),a=l.activeElementIdList,r=l.activeGroupElementId,i=Object(g["c"])(o),u=i.viewportRatio,d=Object(g["c"])(ke()),s=d.ctrlOrShiftKeyActive,f=lt(),b=f.addHistorySnapshot,p=function(l,i,d){var f=!(l instanceof MouseEvent);if(!f||l.changedTouches&&l.changedTouches[0]){var p=!0;c.setScalingState(!0);var O,m=i.left,v=i.top,j=i.width,h=i.height,y="rotate"in i&&i.rotate?i.rotate:0,g=Math.PI*y/180,x=s.value||"fixedRatio"in i&&i.fixedRatio,k=j/h,C=f?l.changedTouches[0].pageX:l.pageX,N=f?l.changedTouches[0].pageY:l.pageY,E=dc[i.type]||20,V=function(e){return e2&&void 0!==arguments[2])||arguments[2];if(r.value||n.setEditorareaFocus(!0),o.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=o.value.filter((function(e){return!f.includes(e)}))}else s=o.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=c instanceof MouseEvent?c.pageX:c.changedTouches[0].pageX,p=c instanceof MouseEvent?c.pageY:c.changedTouches[0].pageY;c.target.onmouseup=function(e){var t=e.pageX,c=e.pageY;b===t&&p===c&&(n.setActiveGroupElementId(i.id),e.target.onmouseup=null)}}}else{var O=[];if(O=u.value?[].concat(Object(K["a"])(o.value),[i.id]):[i.id],i.groupId){var m=[];e.value.forEach((function(e){e.groupId===i.groupId&&m.push(e.id)})),O=[].concat(Object(K["a"])(O),m)}n.setActiveElementIdList(Object(te["uniq"])(O)),n.setHandleElementId(i.id)}d&&t(c,i)},s=function(){var t=e.value.filter((function(e){return!e.lock})),c=t.map((function(e){return e.id}));n.setActiveElementIdList(c)};return{selectElement:d,selectAllElement:s}},Oc=function(e,t,n){var c=le(),o=Object(g["c"])(ie()),l=o.activeElementIdList,a=o.activeGroupElementId,r=Object(g["c"])(c),i=r.viewportRatio,u=lt(),d=u.addHistorySnapshot,s=function(o,r){var u=!(o instanceof MouseEvent);if((!u||o.changedTouches&&o.changedTouches[0])&&l.value.includes(r.id)){var s,f=!0,b=tt,p=tt*i.value,O=5,m=JSON.parse(JSON.stringify(e.value)),v=m.filter((function(e){return l.value.includes(e.id)})),j=r.left,h=r.top,y=r.width,g="height"in r&&r.height?r.height:0,x="rotate"in r&&r.rotate?r.rotate:0,k=u?o.changedTouches[0].pageX:o.pageX,C=u?o.changedTouches[0].pageY:o.pageY,N=null,w=r.id===a.value,E=[],V=[],I=Object(L["a"])(e.value);try{for(I.s();!(s=I.n()).done;){var B=s.value;if("line"!==B.type&&((!w||B.id!==r.id)&&(w||!l.value.includes(B.id)))){var _=void 0,T=void 0,M=void 0,D=void 0;if("rotate"in B&&B.rotate){var z=qe({left:B.left,top:B.top,width:B.width,height:B.height,rotate:B.rotate}),F=z.xRange,A=z.yRange;_=F[0],T=A[0],M=F[1]-F[0],D=A[1]-A[0]}else _=B.left,T=B.top,M=B.width,D=B.height;var R=_+M,P=T+D,H=T+D/2,q=_+M/2,U={value:T,range:[_,R]},G={value:P,range:[_,R]},X={value:H,range:[_,R]},Y={value:_,range:[T,P]},Z={value:R,range:[T,P]},W={value:q,range:[T,P]};E.push(U,G,X),V.push(Y,Z,W)}}}catch(le){I.e(le)}finally{I.f()}var J={value:0,range:[0,b]},Q={value:p,range:[0,b]},$={value:p/2,range:[0,b]},ee={value:0,range:[0,p]},te={value:b,range:[0,p]},ne={value:b/2,range:[0,p]};E.push(J,Q,$),V.push(ee,te,ne),E=Ye(E),V=Ye(V);var ce=function(c){var o=c instanceof MouseEvent?c.pageX:c.changedTouches[0].pageX,a=c instanceof MouseEvent?c.pageY:c.changedTouches[0].pageY;if(!1!==N&&(N=Math.abs(k-o)m&&(X[0]=U-H,Y[0]=0),O>v&&(X[1]=G-q,Y[1]=0),e.value=e.value.map((function(e){if(e.id===o.id){var t=Object(S["a"])(Object(S["a"])({},e),{},{left:H,top:q,start:X,end:Y});return a===E.START||a===E.END?(o.broken&&(t.broken=[(X[0]+Y[0])/2,(X[1]+Y[1])/2]),o.curve&&(t.curve=[(X[0]+Y[0])/2,(X[1]+Y[1])/2]),o.cubic&&(t.cubic=[[(X[0]+Y[0])/2,(X[1]+Y[1])/2],[(X[0]+Y[0])/2,(X[1]+Y[1])/2]])):a===E.C?(o.broken&&(t.broken=[h-H,y-q]),o.curve&&(t.curve=[h-H,y-q])):o.cubic&&(t.cubic=[[N-H,w-q],[V-H,I-q]]),t}return e}))}},document.onmouseup=function(n){r=!1,document.onmousemove=null,document.onmouseup=null;var c=n.pageX,o=n.pageY;u===c&&d===o||(t.updateSlide({elements:e.value}),l())}};return{dragLineElement:a}},vc=function(e){var t=ie(),n=Object(g["c"])(t),c=n.canvasScale,o=n.creatingElement,l=function(t){var n=t.start,o=t.end;if(e.value){var l=e.value.getBoundingClientRect(),a=Object(Oe["a"])(n,2),r=a[0],i=a[1],u=Object(Oe["a"])(o,2),d=u[0],s=u[1],f=Math.min(r,d),b=Math.max(r,d),p=Math.min(i,s),O=Math.max(i,s),m=(f-l.x)/c.value,v=(p-l.y)/c.value,j=(b-f)/c.value,h=(O-p)/c.value;return{left:m,top:v,width:j,height:h}}},a=function(t){var n=t.start,o=t.end;if(e.value){var l=e.value.getBoundingClientRect(),a=Object(Oe["a"])(n,2),r=a[0],i=a[1],u=Object(Oe["a"])(o,2),d=u[0],s=u[1],f=Math.min(r,d),b=Math.max(r,d),p=Math.min(i,s),O=Math.max(i,s),m=(f-l.x)/c.value,v=(p-l.y)/c.value,j=(b-f)/c.value,h=(O-p)/c.value,y=[r===f?0:j,i===p?0:h],g=[d===f?0:j,s===p?0:h];return{left:m,top:v,start:y,end:g}}},r=at(),i=r.createTextElement,u=r.createShapeElement,d=r.createLineElement,s=function(e){if(o.value){var n=o.value.type;if("text"===n){var c=l(e);c&&i(c)}else if("shape"===n){var r=l(e);r&&u(r,o.value.data)}else if("line"===n){var s=a(e);s&&d(s,o.value.data)}t.setCreatingElement(null)}};return{insertElementFromCreateSelection:s}},jc=(n("a9e3"),function(){var e=le(),t=Object(g["c"])(ie()),n=t.activeElementIdList,c=t.activeElementList,o=Object(g["c"])(e),l=o.currentSlide,a=o.viewportRatio,r=lt(),i=r.addHistorySnapshot,u=function(t){var o,r=tt,u=tt*a.value,d=Xe(c.value),s=d.minX,f=d.maxX,b=d.minY,p=d.maxY,O=JSON.parse(JSON.stringify(l.value.elements)),m=Object(L["a"])(O);try{for(m.s();!(o=m.n()).done;){var v=o.value;if(n.value.includes(v.id)){if(t===C.CENTER){var j=b+(p-b)/2-u/2,h=s+(f-s)/2-r/2;v.top=v.top-j,v.left=v.left-h}if(t===C.TOP){var y=b-0;v.top=v.top-y}else if(t===C.VERTICAL){var g=b+(p-b)/2-u/2;v.top=v.top-g}else if(t===C.BOTTOM){var x=p-u;v.top=v.top-x}else if(t===C.LEFT){var k=s-0;v.left=v.left-k}else if(t===C.HORIZONTAL){var N=s+(f-s)/2-r/2;v.left=v.left-N}else if(t===C.RIGHT){var w=f-r;v.left=v.left-w}}}}catch(E){m.e(E)}finally{m.f()}e.updateSlide({elements:O}),i()};return{alignElementToCanvas:u}}),hc=function(e){var t=Object(y["computed"])((function(){if(e.value){var t=e.value,n=t.h,c=t.v,o=t.blur,l=t.color;return"".concat(n,"px ").concat(c,"px ").concat(o,"px ").concat(l)}return""}));return{shadowStyle:t}},yc=function(e,t){var n=Object(y["computed"])((function(){var n="";return e.value&&t.value?n="rotateX(180deg) rotateY(180deg)":t.value?n="rotateX(180deg)":e.value&&(n="rotateY(180deg)"),n}));return{flipStyle:n}};(function(e){e["RECT"]="rect",e["ELLIPSE"]="ellipse",e["POLYGON"]="polygon"})(Kn||(Kn={})),function(e){e["RECT"]="rect",e["ROUNDRECT"]="roundRect",e["ELLIPSE"]="ellipse",e["TRIANGLE"]="triangle",e["PENTAGON"]="pentagon",e["RHOMBUS"]="rhombus",e["STAR"]="star"}($n||($n={}));var gc={rect:{name:"矩形",type:Kn.RECT,radius:"0",style:""},rect2:{name:"矩形2",type:Kn.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:Kn.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:Kn.RECT,radius:"10%",style:"inset(0 0 0 0 round 10% 10% 10% 10%)"},ellipse:{name:"圆形",type:Kn.ELLIPSE,style:"ellipse(50% 50% at 50% 50%)"},triangle:{name:"三角形",type:Kn.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:Kn.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:Kn.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:Kn.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:Kn.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:Kn.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:Kn.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:Kn.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:Kn.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:Kn.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")}}},xc=function(e){var t=Object(y["computed"])((function(){if(!e.value)return gc.rect;var t=e.value.shape||Kn.RECT;return gc[t]})),n=Object(y["computed"])((function(){if(!e.value)return{top:"0",left:"0",width:"100%",height:"100%"};var t=Object(Oe["a"])(e.value.range,2),n=t[0],c=t[1],o=(c[0]-n[0])/100,l=(c[1]-n[1])/100,a=n[0]/o,r=n[1]/l;return{left:-a+"%",top:-r+"%",width:100/o+"%",height:100/l+"%"}}));return{clipShape:t,imgPosition:n}},kc=(n("b64b"),function(e){var t=Object(y["computed"])((function(){if(!e.value)return"";for(var t="",n=0,c=Object.keys(e.value);n45&&c.rotate<135&&(d=(u-o)/l.value/c.width*100,s=-(i-n)/l.value/c.height*100),(c.rotate>=135&&c.rotate<=180||c.rotate>=-180&&c.rotate<=-135)&&(d=-d,s=-s),c.rotate>-135&&c.rotate<-45&&(d=-(u-o)/l.value/c.width*100,s=(i-n)/l.value/c.height*100);var f=r.left+d,b=r.top+s;f<0?f=0:f+r.width>a.width&&(f=a.width-r.width),b<0?b=0:b+r.height>a.height&&(b=a.height-r.height),p.value=Object(S["a"])(Object(S["a"])({},p.value),{},{left:f,top:b})}},document.onmouseup=function(){t=!1,document.onmousemove=null,document.onmouseup=null,x(),setTimeout((function(){u.value=!1}),0)}},C=function(e,t){u.value=!0;var n=!0,o=50/c.width*100,a=50/c.height*100,i=e.pageX,d=e.pageY,s=f.value,b=Object(S["a"])({},p.value),O=p.value.width/p.value.height;document.onmousemove=function(e){if(n){var u,f,m,v,j=e.pageX,h=e.pageY,y=(j-i)/l.value/c.width*100,g=(h-d)/l.value/c.height*100;c.rotate>45&&c.rotate<135&&(y=(h-d)/l.value/c.width*100,g=-(j-i)/l.value/c.height*100),(c.rotate>=135&&c.rotate<=180||c.rotate>=-180&&c.rotate<=-135)&&(y=-y,g=-g),c.rotate>-135&&c.rotate<-45&&(y=-(h-d)/l.value/c.width*100,g=(j-i)/l.value/c.height*100),r.value&&(t!==w.RIGHT_BOTTOM&&t!==w.LEFT_TOP||(g=y/O),t!==w.LEFT_BOTTOM&&t!==w.RIGHT_TOP||(g=-y/O)),t===w.LEFT_TOP?(b.left+y<0&&(y=-b.left),b.top+g<0&&(g=-b.top),b.width-ys.width&&(y=s.width-(b.left+b.width)),b.top+g<0&&(g=-b.top),b.width+ys.height&&(g=s.height-(b.top+b.height)),b.width-ys.width&&(y=s.width-(b.left+b.width)),b.top+b.height+g>s.height&&(g=s.height-(b.top+b.height)),b.width+ys.height&&(g=s.height-(b.top+b.height)),b.height+gs.width&&(y=s.width-(b.left+b.width)),b.width+y-22.5&&t<=22.5?e+0:t>22.5&&t<=67.5?e+45:t>67.5&&t<=112.5?e+90:t>112.5&&t<=157.5?e+135:t>157.5||t<=-157.5?e+0:t>-157.5&&t<=-112.5?e+45:t>-112.5&&t<=-67.5?e+90:t>-67.5&&t<=-22.5?e+135:e+0})),E=[w.LEFT_TOP,w.RIGHT_TOP,w.LEFT_BOTTOM,w.RIGHT_BOTTOM],I=[w.TOP,w.BOTTOM,w.LEFT,w.RIGHT];return function(t,n){var c=Object(y["resolveDirective"])("click-outside");return Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"image-clip-handler",style:Object(y["normalizeStyle"])(i.value)},[Object(y["createElementVNode"])("img",{class:"bottom-img",src:e.src,draggable:!1,alt:"",style:Object(y["normalizeStyle"])(Object(y["unref"])(b))},null,12,Gc),Object(y["createElementVNode"])("div",{class:"top-image-content",style:Object(y["normalizeStyle"])(Object(S["a"])(Object(S["a"])({},Object(y["unref"])(O)),{},{clipPath:e.clipPath}))},[Object(y["createElementVNode"])("img",{class:"top-img",src:e.src,draggable:!1,alt:"",style:Object(y["normalizeStyle"])(Object(y["unref"])(m))},null,12,Xc)],4),Object(y["createElementVNode"])("div",{class:"operate",style:Object(y["normalizeStyle"])(Object(y["unref"])(O)),onMousedown:n[0]||(n[0]=Object(y["withModifiers"])((function(e){return k(e)}),["stop"]))},[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(E,(function(e){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["clip-point",e,Object(y["unref"])(N)]),key:e,onMousedown:Object(y["withModifiers"])((function(t){return C(t,e)}),["stop"])},Wc,42,Yc)})),64)),(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(I,(function(e){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["clip-point",e,Object(y["unref"])(N)]),key:e,onMousedown:Object(y["withModifiers"])((function(t){return C(t,e)}),["stop"])},Kc,42,Jc)})),64))],36)],4)),[[c,j]])}}});n("5970");const eo=pn()($c,[["__scopeId","data-v-3e0199ec"]]);var to=eo,no=["src"],co=Object(y["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=e,n=ie(),c=le(),o=Object(g["c"])(n),l=o.clipingImageElementId,a=Object(y["computed"])((function(){return l.value===t.elementInfo.id})),r=lt(),i=r.addHistorySnapshot,u=Object(y["computed"])((function(){return t.elementInfo.shadow})),d=hc(u),s=d.shadowStyle,f=Object(y["computed"])((function(){return t.elementInfo.flipH})),b=Object(y["computed"])((function(){return t.elementInfo.flipV})),p=yc(f,b),O=p.flipStyle,m=Object(y["computed"])((function(){return t.elementInfo.clip})),v=xc(m),j=v.clipShape,h=v.imgPosition,x=Object(y["computed"])((function(){return t.elementInfo.filters})),k=kc(x),C=k.filter,N=function(e){t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},w=function(e){if(n.setClipingImageElementId(""),e){var o=e.range,l=e.position,a=t.elementInfo.clip||{shape:"rect",range:[[0,0],[100,100]]},r=t.elementInfo.left+l.left,u=t.elementInfo.top+l.top,d=t.elementInfo.width+l.width,s=t.elementInfo.height+l.height,f=0,b=0;if(t.elementInfo.rotate){var p=r+d/2-(t.elementInfo.left+t.elementInfo.width/2),O=-(u+s/2-(t.elementInfo.top+t.elementInfo.height/2)),m=-t.elementInfo.rotate*Math.PI/180,v=p*Math.cos(m)-O*Math.sin(m),j=p*Math.sin(m)+O*Math.cos(m);f=v-p,b=-(j-O)}var h={clip:Object(S["a"])(Object(S["a"])({},a),{},{range:o}),left:r+f,top:u+b,width:d,height:s};c.updateElement({id:t.elementInfo.id,props:h}),i()}};return function(t,n){var c=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-image",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["unref"])(a)?(Object(y["openBlock"])(),Object(y["createBlock"])(to,{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:Object(y["unref"])(j).style,onClip:n[0]||(n[0]=function(e){return w(e)})},null,8,["src","clipData","width","height","top","left","rotate","clipPath"])):Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:1,class:"element-content",style:Object(y["normalizeStyle"])({filter:Object(y["unref"])(s)?"drop-shadow(".concat(Object(y["unref"])(s),")"):"",transform:Object(y["unref"])(O)}),onMousedown:n[2]||(n[2]=function(e){return N(e)}),onTouchstart:n[3]||(n[3]=function(e){return N(e)})},[Object(y["createVNode"])(qc,{elementInfo:e.elementInfo},null,8,["elementInfo"]),Object(y["createElementVNode"])("div",{class:"image-content",style:Object(y["normalizeStyle"])({clipPath:Object(y["unref"])(j).style})},[Object(y["createElementVNode"])("img",{src:e.elementInfo.src,draggable:!1,style:Object(y["normalizeStyle"])({top:Object(y["unref"])(h).top,left:Object(y["unref"])(h).left,width:Object(y["unref"])(h).width,height:Object(y["unref"])(h).height,filter:Object(y["unref"])(C)}),onDragstart:n[1]||(n[1]=Object(y["withModifiers"])((function(){}),["prevent"])),alt:""},null,44,no)],4)],36)),[[c,e.contextmenus]])],4)],6)}}});n("7394");const oo=pn()(co,[["__scopeId","data-v-30dc7050"]]);var lo=oo,ao=["width","height"],ro=["d","stroke","stroke-width","stroke-dasharray"],io=Object(y["defineComponent"])({__name:"ElementOutline",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},outline:{type:Object}},setup:function(e){var t=e,n=Cc(Object(y["toRef"])(t,"outline")),c=n.outlineWidth,o=n.outlineStyle,l=n.outlineColor;return function(t,n){return e.outline?(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{key:0,class:"element-outline",overflow:"visible",width:e.width,height:e.height},[Object(y["createElementVNode"])("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:"transparent",d:"M0,0 L".concat(e.width,",0 L").concat(e.width,",").concat(e.height," L0,").concat(e.height," Z"),stroke:Object(y["unref"])(l),"stroke-width":Object(y["unref"])(c),"stroke-dasharray":"dashed"===Object(y["unref"])(o)?"10 6":"0 0"},null,8,ro)],8,ao)):Object(y["createCommentVNode"])("",!0)}}});n("4731");const uo=pn()(io,[["__scopeId","data-v-61b7d06a"]]);var so,fo=uo,bo=n("5313"),po=n("576a"),Oo=n("304a"),mo=n("7f06"),vo=n("8726"),jo=n("23f1"),ho=n("1a16"),yo=n("665f"),go=n("f95e"),xo=function(e){var t={},n=function(e,n){return t[e]=n};return n("Alt-ArrowUp",_["c"]),n("Alt-ArrowDown",_["b"]),n("Ctrl-z",vo["c"]),n("Ctrl-y",vo["b"]),n("Backspace",go["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(yo["f"])(e.nodes.list_item)),n("Mod-[",Object(yo["b"])(e.nodes.list_item)),n("Mod-]",Object(yo["e"])(e.nodes.list_item)),t},ko=function(e){return Object(go["g"])(/^\s*>\s$/,e)},Co=function(e){return Object(go["g"])(/^(\d+)\.\s$/,e,(function(e){return{order:+e[1]}}),(function(e,t){return t.childCount+t.attrs.order===+e[1]}))},No=function(e){return Object(go["g"])(/^\s*([-+*])\s$/,e)},wo=function(e){return Object(go["e"])(/^```$/,e)},Eo=function(e){var t=[].concat(Object(K["a"])(go["d"]),[go["a"],go["b"]]);return t.push(ko(e.nodes.blockquote)),t.push(Co(e.nodes.ordered_list)),t.push(No(e.nodes.bullet_list)),t.push(wo(e.nodes.code_block)),Object(go["c"])({rules:t})},Vo=function(e){return[Eo(e),Object(mo["b"])(xo(e)),Object(mo["b"])(_["a"]),Object(jo["a"])(),Object(ho["a"])(),Object(vo["a"])()]},Io=n("2210"),Bo=Object(S["a"])(Object(S["a"])({},yo["d"]),{},{content:"list_item+",group:"block"}),So=Object(S["a"])(Object(S["a"])({},yo["a"]),{},{content:"list_item+",group:"block"}),Lo=Object(S["a"])(Object(S["a"])({},yo["c"]),{},{content:"paragraph block*",group:"block"}),_o={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 c=+(e.getAttribute("data-indent")||0);return{align:n,indent:c}}}],toDOM:function(e){var t=e.attrs,n=t.align,c=t.indent,o="";n&&"left"!==n&&(o+="text-align: ".concat(n,";"));var l={style:o};return c&&(l["data-indent"]=c),["p",l,0]}},To=Object(S["a"])(Object(S["a"])({},Io["b"]),{},{ordered_list:Bo,bullet_list:So,list_item:Lo,paragraph:_o}),Mo={excludes:"subscript",parseDOM:[{tag:"sub"},{style:"vertical-align",getAttrs:function(e){return"sub"===e&&null}}],toDOM:function(){return["sub",0]}},Do={excludes:"superscript",parseDOM:[{tag:"sup"},{style:"vertical-align",getAttrs:function(e){return"super"===e&&null}}],toDOM:function(){return["sup",0]}},zo={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]}},Fo={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]}},Ao={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]}},Ro={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]}},Po={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]}},Ho={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]}},qo={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]}},Uo=Object(S["a"])(Object(S["a"])({},Io["a"]),{},{subscript:Mo,superscript:Do,strikethrough:zo,underline:Fo,forecolor:Ao,backcolor:Ro,fontsize:Po,fontname:Ho,link:qo}),Go=To,Xo=Uo,Yo=new Oo["i"]({nodes:Go,marks:Xo}),Zo=function(e){var t="
".concat(e,"
"),n=new window.DOMParser,c=n.parseFromString(t,"text/html").body.firstElementChild;return Oo["a"].fromSchema(Yo).parse(c)},Wo=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return new po["c"](e,Object(S["a"])({state:bo["b"].create({doc:Zo(t),plugins:Vo(Yo)})},n))},Jo=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"})(so||(so={}));var Qo=Object(Jo["a"])(),Ko=Qo,$o=(n("6062"),function(e,t,n){var c=e,o=c.selection,l=c.doc;if(!o||!l)return e;var a=o.from,r=o.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 c=e.type,o=e.attrs.align||"";return o!==n&&b.has(c)&&f.push({node:e,pos:t,nodeType:c}),!0})),f.length?(f.forEach((function(t){var c=t.node,o=t.pos,l=t.nodeType,a=c.attrs;a=n?Object(S["a"])(Object(S["a"])({},a),{},{align:n}):Object(S["a"])(Object(S["a"])({},a),{},{align:null}),e=e.setNodeMarkup(o,l,a,c.marks)})),e):e}),el=function(e,t){var n=e.state,c=n.schema,o=n.selection,l=$o(n.tr.setSelection(o),c,t);e.dispatch(l)},tl=function(e,t){return e.type===t.nodes.bullet_list||e.type===t.nodes.ordered_list},nl=function(e,t){return function(n,c){var o=n.schema,l=n.selection,a=l.$from,r=l.$to,i=a.blockRange(r);if(!i)return!1;var u=A((function(e){return tl(e,o)}))(l);if(i.depth>=1&&u&&i.depth-u.depth<=1){if(u.node.type===e)return Object(yo["b"])(t)(n,c);if(tl(u.node,o)&&e.validContent(u.node.content)){var d=n.tr;return d.setNodeMarkup(u.pos,e),c&&c(d),!1}}return Object(yo["g"])(e)(n,c)}};function cl(e,t,n){if(!e.doc)return e;var c=e.doc.nodeAt(t);if(!c)return e;var o=0,l=7,a=(c.attrs.indent||0)+n;if(al&&(a=l),a===c.attrs.indent)return e;var r=Object(S["a"])(Object(S["a"])({},c.attrs),{},{indent:a});return e.setNodeMarkup(t,c.type,r,c.marks)}var ol=function(e,t,n){var c=e,o=c.selection,l=c.doc;if(!o||!l)return e;if(!(o instanceof bo["g"]||o instanceof bo["a"]))return e;var a=o.from,r=o.to;return l.nodesBetween(a,r,(function(c,o){var l=c.type;return"paragraph"===l.name||"blockquote"===l.name?(e=cl(e,o,n),!1):!tl(c,t)})),e},ll=function(e,t){var n=e.state,c=n.schema,o=n.selection,l=ol(n.tr.setSelection(o),c,t);return!!l.docChanged&&(e.dispatch(l),!0)},al=Object(y["defineComponent"])({__name:"ProsemirrorEditor",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}},emits:["update","focus","blur"],setup:function(e,t){var n,c=t.expose,o=t.emit,l=e,a=ie(),r=Object(g["c"])(a),i=r.handleElementId,u=Object(y["ref"])(),d=Object(te["debounce"])((function(){o("update",n.dom.innerHTML)}),300,{trailing:!0}),s=function(){a.setDisableHotkeysState(!0),o("focus")},f=function(){a.setDisableHotkeysState(!1),o("blur")},b=Object(te["debounce"])((function(){var e=Z(n,{color:l.defaultColor,fontname:l.defaultFontName});a.setRichtextAttrs(e)}),30,{trailing:!0}),p=function(){d(),b()},O=Object(y["computed"])((function(){return l.value}));Object(y["watch"])(O,(function(){if(n&&!n.hasFocus()){var e=n.state,t=e.doc,c=e.tr;n.dispatch(c.replaceRangeWith(0,t.content.size,Zo(O.value)))}})),Object(y["watch"])((function(){return l.editable}),(function(){n.setProps({editable:function(){return l.editable}})})),Object(y["onMounted"])((function(){n=Wo(u.value,O.value,{handleDOMEvents:{focus:s,blur:f,keydown:p,click:b},editable:function(){return l.editable}}),l.autoFocus&&n.focus()})),Object(y["onUnmounted"])((function(){n&&n.destroy()}));var m=function(){return n.focus()};c({focus:m});var v=function(e){var t=e.target,c=e.action;if((t||i.value===l.elementId)&&(!t||t===l.elementId)){var o,a="command"in c?[c]:c,r=Object(L["a"])(a);try{for(r.s();!(o=r.n()).done;){var u=o.value;if("fontname"===u.command&&u.value){var s=n.state.schema.marks.fontname.create({fontname:u.value});T(n),M(n,s)}else if("fontsize"===u.command&&u.value){var f=n.state.schema.marks.fontsize.create({fontsize:u.value});T(n),M(n,f)}else if("fontsize-add"===u.command){var p=u.value?+u.value:2;T(n);var O=W(n)+p+"px",m=n.state.schema.marks.fontsize.create({fontsize:O});M(n,m)}else if("fontsize-reduce"===u.command){var v=u.value?+u.value:2;T(n);var j=W(n)-v;j<12&&(j=12);var h=n.state.schema.marks.fontsize.create({fontsize:j+"px"});M(n,h)}else if("color"===u.command&&u.value){var y=n.state.schema.marks.forecolor.create({color:u.value});T(n),M(n,y)}else if("backcolor"===u.command&&u.value){var g=n.state.schema.marks.backcolor.create({backcolor:u.value});T(n),M(n,g)}else if("bold"===u.command)T(n),Object(_["f"])(n.state.schema.marks.strong)(n.state,n.dispatch);else if("em"===u.command)T(n),Object(_["f"])(n.state.schema.marks.em)(n.state,n.dispatch);else if("underline"===u.command)T(n),Object(_["f"])(n.state.schema.marks.underline)(n.state,n.dispatch);else if("strikethrough"===u.command)T(n),Object(_["f"])(n.state.schema.marks.strikethrough)(n.state,n.dispatch);else if("subscript"===u.command)Object(_["f"])(n.state.schema.marks.subscript)(n.state,n.dispatch);else if("superscript"===u.command)Object(_["f"])(n.state.schema.marks.superscript)(n.state,n.dispatch);else if("blockquote"===u.command)Object(_["g"])(n.state.schema.nodes.blockquote)(n.state,n.dispatch);else if("code"===u.command)Object(_["f"])(n.state.schema.marks.code)(n.state,n.dispatch);else if("align"===u.command&&u.value)el(n,u.value);else if("indent"===u.command&&u.value)ll(n,+u.value);else if("bulletList"===u.command){var x=n.state.schema.nodes,k=x.bullet_list,C=x.list_item;nl(k,C)(n.state,n.dispatch)}else if("orderedList"===u.command){var N=n.state.schema.nodes,w=N.ordered_list,E=N.list_item;nl(w,E)(n.state,n.dispatch)}else if("clear"===u.command){T(n);var V=n.state.selection,I=V.$from,B=V.$to;n.dispatch(n.state.tr.removeMark(I.pos,B.pos))}else if("link"===u.command){var S=n.state.schema.marks.link,z=n.state.selection,F=z.from,A=z.to,R=D(n.state.doc,F,A,S);if(R)if(u.value){var P=n.state.schema.marks.link.create({href:u.value,title:u.value});M(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,S));else if(G(n.state,S))if(u.value){var H=n.state.schema.marks.link.create({href:u.value,title:u.value});M(n,H)}else Object(_["f"])(S)(n.state,n.dispatch);else u.value&&(T(n),Object(_["f"])(S,{href:u.value,title:u.value})(n.state,n.dispatch))}else"insert"===u.command&&u.value&&n.dispatch(n.state.tr.insertText(u.value))}}catch(q){r.e(q)}finally{r.f()}n.focus(),d(),b()}};return Ko.on(so.RICH_TEXT_COMMAND,v),Object(y["onUnmounted"])((function(){Ko.off(so.RICH_TEXT_COMMAND,v)})),function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"prosemirror-editor",ref_key:"editorViewRef",ref:u},null,512)}}});n("a511");const rl=pn()(al,[["__scopeId","data-v-1debd6ff"]]);var il=rl,ul=function(e){return Object(y["pushScopeId"])("data-v-7135a611"),e=e(),Object(y["popScopeId"])(),e},dl=ul((function(){return Object(y["createElementVNode"])("div",{class:"drag-handler top"},null,-1)})),sl=ul((function(){return Object(y["createElementVNode"])("div",{class:"drag-handler bottom"},null,-1)})),fl=Object(y["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=e,n=ie(),c=le(),o=Object(g["c"])(n),l=o.handleElementId,a=o.isScaling,r=lt(),i=r.addHistorySnapshot,u=Object(y["ref"])(),d=Object(y["computed"])((function(){return t.elementInfo.shadow})),s=hc(d),f=s.shadowStyle,b=function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo,n))},p=Object(y["ref"])(-1);Object(y["watch"])(a,(function(){l.value===t.elementInfo.id&&(a.value||-1===p.value||(c.updateElement({id:t.elementInfo.id,props:{height:p.value}}),p.value=-1))}));var O=function(e){var n=e[0].contentRect;if(u.value){var o=n.height;t.elementInfo.height!==o&&(a.value?p.value=o:c.updateElement({id:t.elementInfo.id,props:{height:o}}))}},m=new ResizeObserver(O);Object(y["onMounted"])((function(){u.value&&m.observe(u.value)})),Object(y["onUnmounted"])((function(){u.value&&m.unobserve(u.value)}));var v=function(e){c.updateElement({id:t.elementInfo.id,props:{content:e}}),i()},j=function(){var e=t.elementInfo.content.replaceAll(/<[^>]+>/g,"");e||c.deleteElement(t.elementInfo.id)},h=Object(y["computed"])((function(){return l.value===t.elementInfo.id}));return Object(y["watch"])(h,(function(){h.value||j()})),function(t,n){var c=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-text",{lock:e.elementInfo.lock}]),ref_key:"elementRef",ref:u,style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({backgroundColor:e.elementInfo.fill,opacity:e.elementInfo.opacity,textShadow:Object(y["unref"])(f),lineHeight:e.elementInfo.lineHeight,letterSpacing:(e.elementInfo.wordSpace||0)+"px",color:e.elementInfo.defaultColor,fontFamily:e.elementInfo.defaultFontName}),onMousedown:n[3]||(n[3]=function(e){return b(e)}),onTouchstart:n[4]||(n[4]=function(e){return b(e)})},[Object(y["createVNode"])(fo,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(y["createVNode"])(il,{class:"text",elementId:e.elementInfo.id,defaultColor:e.elementInfo.defaultColor,defaultFontName:e.elementInfo.defaultFontName,editable:!e.elementInfo.lock,value:e.elementInfo.content,style:Object(y["normalizeStyle"])({"--textIndent":"".concat(e.elementInfo.textIndent||0,"px"),"--paragraphSpace":"".concat(void 0===e.elementInfo.paragraphSpace?5:e.elementInfo.paragraphSpace,"px")}),onUpdate:n[0]||(n[0]=function(e){return v(e)}),onMousedown:n[1]||(n[1]=function(e){return b(e,!1)}),onTouchstart:n[2]||(n[2]=function(e){return b(e)})},null,8,["elementId","defaultColor","defaultFontName","editable","value","style"]),dl,sl],36)),[[c,e.contextmenus]])],4)],6)}}});n("59bb");const bl=pn()(fl,[["__scopeId","data-v-7135a611"]]);var pl=bl,Ol=["id","gradientTransform"],ml=["stop-color"],vl=["stop-color"],jl=["id"],hl=["stop-color"],yl=["stop-color"],gl=Object(y["defineComponent"])({__name:"GradientDefs",props:{id:{type:String,required:!0},type:{type:String},color1:{type:String,required:!0},color2:{type:String,required:!0},rotate:{type:Number,default:0}},setup:function(e){return function(t,n){return"linear"===e.type?(Object(y["openBlock"])(),Object(y["createElementBlock"])("linearGradient",{key:0,id:e.id,x1:"0%",y1:"0%",x2:"100%",y2:"0%",gradientTransform:"rotate(".concat(e.rotate,",0.5,0.5)")},[Object(y["createElementVNode"])("stop",{offset:"0%","stop-color":e.color1},null,8,ml),Object(y["createElementVNode"])("stop",{offset:"100%","stop-color":e.color2},null,8,vl)],8,Ol)):(Object(y["openBlock"])(),Object(y["createElementBlock"])("radialGradient",{key:1,id:e.id},[Object(y["createElementVNode"])("stop",{offset:"0%","stop-color":e.color1},null,8,hl),Object(y["createElementVNode"])("stop",{offset:"100%","stop-color":e.color2},null,8,yl)],8,jl))}}});const xl=gl;var kl=xl,Cl=["width","height"],Nl={key:0},wl=["transform"],El=["d","fill","stroke","stroke-width","stroke-dasharray"],Vl=Object(y["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=e,n=ie(),c=le(),o=Object(g["c"])(n),l=o.handleElementId,a=lt(),r=a.addHistorySnapshot,i=function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo,n))},u=Object(y["computed"])((function(){return t.elementInfo.outline})),d=Cc(u),s=d.outlineWidth,f=d.outlineStyle,b=d.outlineColor,p=Object(y["computed"])((function(){return t.elementInfo.shadow})),O=hc(p),m=O.shadowStyle,v=Object(y["computed"])((function(){return t.elementInfo.flipH})),j=Object(y["computed"])((function(){return t.elementInfo.flipV})),h=yc(v,j),x=h.flipStyle,k=Object(y["ref"])(!1);Object(y["watch"])(l,(function(){l.value!==t.elementInfo.id&&k.value&&(k.value=!1)}));var C=Object(y["computed"])((function(){var e={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"};return t.elementInfo.text?t.elementInfo.text:e})),N=function(e){var n=Object(S["a"])(Object(S["a"])({},C.value),{},{content:e});c.updateElement({id:t.elementInfo.id,props:{text:n}}),r()},w=function(){if(t.elementInfo.text){var e=t.elementInfo.text.content.replaceAll(/<[^>]+>/g,"");e||(c.removeElementProps({id:t.elementInfo.id,propName:"text"}),r())}},E=Object(y["ref"])(),V=function(){k.value=!0,Object(y["nextTick"])((function(){return E.value&&E.value.focus()}))};return function(t,n){var c=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-shape",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({opacity:e.elementInfo.opacity,filter:Object(y["unref"])(m)?"drop-shadow(".concat(Object(y["unref"])(m),")"):"",transform:Object(y["unref"])(x),color:Object(y["unref"])(C).defaultColor,fontFamily:Object(y["unref"])(C).defaultFontName}),onMousedown:n[4]||(n[4]=function(e){return i(e)}),onTouchstart:n[5]||(n[5]=function(e){return i(e)}),onDblclick:n[6]||(n[6]=function(e){return V()})},[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height},[e.elementInfo.gradient?(Object(y["openBlock"])(),Object(y["createElementBlock"])("defs",Nl,[Object(y["createVNode"])(kl,{id:"editabel-gradient-".concat(e.elementInfo.id),type:e.elementInfo.gradient.type,color1:e.elementInfo.gradient.color[0],color2:e.elementInfo.gradient.color[1],rotate:e.elementInfo.gradient.rotate},null,8,["id","type","color1","color2","rotate"])])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("g",{transform:"scale(".concat(e.elementInfo.width/e.elementInfo.viewBox[0],", ").concat(e.elementInfo.height/e.elementInfo.viewBox[1],") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(y["createElementVNode"])("path",{class:"shape-path","vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",d:e.elementInfo.path,fill:e.elementInfo.gradient?"url(#editabel-gradient-".concat(e.elementInfo.id,")"):e.elementInfo.fill,stroke:Object(y["unref"])(b),"stroke-width":Object(y["unref"])(s),"stroke-dasharray":"dashed"===Object(y["unref"])(f)?"10 6":"0 0"},null,8,El)],8,wl)],8,Cl)),Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["shape-text",[Object(y["unref"])(C).align,{editable:k.value||Object(y["unref"])(C).content}]])},[k.value||Object(y["unref"])(C).content?(Object(y["openBlock"])(),Object(y["createBlock"])(il,{key:0,ref_key:"prosemirrorEditorRef",ref:E,elementId:e.elementInfo.id,defaultColor:Object(y["unref"])(C).defaultColor,defaultFontName:Object(y["unref"])(C).defaultFontName,editable:!e.elementInfo.lock,value:Object(y["unref"])(C).content,onUpdate:n[0]||(n[0]=function(e){return N(e)}),onBlur:n[1]||(n[1]=function(e){return w()}),onMousedown:n[2]||(n[2]=function(e){return i(e,!1)}),onTouchstart:n[3]||(n[3]=function(e){return i(e,!1)})},null,8,["elementId","defaultColor","defaultFontName","editable","value"])):Object(y["createCommentVNode"])("",!0)],2)],36)),[[c,e.contextmenus]])],4)],6)}}});n("990c");const Il=pn()(Vl,[["__scopeId","data-v-d4c718fa"]]);var Bl=Il,Sl=["id","markerWidth","markerHeight","refX","refY"],Ll=["d","fill","transform"],_l=Object(y["defineComponent"])({__name:"LinePointMarker",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=e,n={dot:"m0 5a5 5 0 1 0 10 0a5 5 0 1 0 -10 0z",arrow:"M0,0 L10,5 0,10 Z"},c={"arrow-start":180,"arrow-end":0},o=Object(y["computed"])((function(){return n[t.type]})),l=Object(y["computed"])((function(){return c["".concat(t.type,"-").concat(t.position)]||0})),a=Object(y["computed"])((function(){return t.baseSize<2?2:t.baseSize}));return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("marker",{id:"".concat(e.id,"-").concat(e.type,"-").concat(e.position),markerUnits:"userSpaceOnUse",orient:"auto",markerWidth:3*Object(y["unref"])(a),markerHeight:3*Object(y["unref"])(a),refX:1.5*Object(y["unref"])(a),refY:1.5*Object(y["unref"])(a)},[Object(y["createElementVNode"])("path",{d:Object(y["unref"])(o),fill:e.color,transform:"scale(".concat(.3*Object(y["unref"])(a),", ").concat(.3*Object(y["unref"])(a),") rotate(").concat(Object(y["unref"])(l),", 5, 5)")},null,8,Ll)],8,Sl)}}});const Tl=_l;var Ml=Tl,Dl=["width","height"],zl=["d","stroke","stroke-width","stroke-dasharray","marker-start","marker-end"],Fl=["d"],Al=Object(y["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=e,n=function(e){t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},c=Object(y["computed"])((function(){return t.elementInfo.shadow})),o=hc(c),l=o.shadowStyle,a=Object(y["computed"])((function(){var e=Math.abs(t.elementInfo.start[0]-t.elementInfo.end[0]);return e<24?24:e})),r=Object(y["computed"])((function(){var e=Math.abs(t.elementInfo.start[1]-t.elementInfo.end[1]);return e<24?24:e})),i=Object(y["computed"])((function(){return"dashed"===t.elementInfo.style?"10 6":"0 0"})),u=Object(y["computed"])((function(){return Je(t.elementInfo)}));return function(t,c){var o=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-shape",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px"})},[Object(y["createElementVNode"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({filter:Object(y["unref"])(l)?"drop-shadow(".concat(Object(y["unref"])(l),")"):""}),onMousedown:c[0]||(c[0]=function(e){return n(e)}),onTouchstart:c[1]||(c[1]=function(e){return n(e)})},[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{overflow:"visible",width:Object(y["unref"])(a),height:Object(y["unref"])(r)},[Object(y["createElementVNode"])("defs",null,[e.elementInfo.points[0]?(Object(y["openBlock"])(),Object(y["createBlock"])(Ml,{key:0,id:e.elementInfo.id,position:"start",type:e.elementInfo.points[0],color:e.elementInfo.color,baseSize:e.elementInfo.width},null,8,["id","type","color","baseSize"])):Object(y["createCommentVNode"])("",!0),e.elementInfo.points[1]?(Object(y["openBlock"])(),Object(y["createBlock"])(Ml,{key:1,id:e.elementInfo.id,position:"end",type:e.elementInfo.points[1],color:e.elementInfo.color,baseSize:e.elementInfo.width},null,8,["id","type","color","baseSize"])):Object(y["createCommentVNode"])("",!0)]),Object(y["createElementVNode"])("path",{class:"line-point",d:Object(y["unref"])(u),stroke:e.elementInfo.color,"stroke-width":e.elementInfo.width,"stroke-dasharray":Object(y["unref"])(i),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,zl),Object(y["withDirectives"])(Object(y["createElementVNode"])("path",{class:"line-path",d:Object(y["unref"])(u),stroke:"transparent","stroke-width":"20",fill:"none"},null,8,Fl),[[o,e.contextmenus]])],8,Dl))],36)],6)}}});n("bde5");const Rl=pn()(Al,[["__scopeId","data-v-6550e504"]]);var Pl=Rl,Hl=n("ba48"),ql=n.n(Hl),Ul=(n("aa97"),Object(y["defineComponent"])({__name:"Chart",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},type:{type:String,required:!0},data:{type:Object,required:!0},options:{type:Object},themeColor:{type:Array,required:!0},legends:{type:Array,required:!0},gridColor:{type:String},legend:{type:String}},setup:function(e){var t,n=e,c=Object(y["ref"])(),o=Object(y["inject"])(tc)||Object(y["ref"])(1),l=Object(y["computed"])((function(){return n.legend?n.height-20:n.height})),a=function(){var e=n.options||{},t=Object(S["a"])(Object(S["a"])({},e),{},{width:n.width*o.value,height:l.value*o.value}),c="pie"===n.type?Object(S["a"])(Object(S["a"])({},n.data),{},{series:n.data.series[0]}):n.data;return{data:c,options:t}},r=function(){if(c.value){var e=Object(te["upperFirst"])(n.type),o=a(),l=o.data,r=o.options;t=new ql.a[e](c.value,l,r)}},i=function(){if(t){var e=a(),n=e.data,c=e.options;t.update(n,c)}else r()};Object(y["watch"])([function(){return n.width},function(){return n.height},function(){return n.data},function(){return n.options},o],i),Object(y["onMounted"])(r);var u=Object(y["computed"])((function(){var e=[];if(n.themeColor.length>=10)e=n.themeColor;else if(1===n.themeColor.length)e=ee()(n.themeColor[0]).analogous(10).map((function(e){return e.toHexString()}));else{var t=n.themeColor.length,c=ee()(n.themeColor[t-1]).analogous(11-t).map((function(e){return e.toHexString()}));e=[].concat(Object(K["a"])(n.themeColor.slice(0,t-1)),Object(K["a"])(c))}return e})),d=function(){if(c.value)for(var e=0;e<10;e++)c.value.style.setProperty("--theme-color-".concat(e+1),u.value[e])};Object(y["watch"])(u,d),Object(y["onMounted"])(d);var s=function(){c.value&&n.gridColor&&c.value.style.setProperty("--grid-color",n.gridColor)};return Object(y["watch"])((function(){return n.gridColor}),s),Object(y["onMounted"])(s),function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"chart",style:Object(y["normalizeStyle"])({flexDirection:"top"===e.legend?"column-reverse":"column"})},[Object(y["createElementVNode"])("div",{class:"chart-content",ref_key:"chartRef",ref:c,style:Object(y["normalizeStyle"])({width:e.width+"px",height:Object(y["unref"])(l)+"px",transform:"scale(".concat(1/Object(y["unref"])(o),")")})},null,4),e.legend?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:"legends",style:Object(y["normalizeStyle"])({transform:"scale(".concat(1/Object(y["unref"])(o),")")})},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.legends,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"legend",key:n,style:Object(y["normalizeStyle"])({color:e.gridColor})},[Object(y["createElementVNode"])("div",{class:"block",style:Object(y["normalizeStyle"])({backgroundColor:Object(y["unref"])(u)[n]})},null,4),Object(y["createTextVNode"])(" "+Object(y["toDisplayString"])(t),1)],4)})),128))],4)):Object(y["createCommentVNode"])("",!0)],4)}}}));n("921b"),n("f630");const Gl=pn()(Ul,[["__scopeId","data-v-1aa2357d"]]);var Xl=Gl,Yl=Object(y["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=e,n=function(e){t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},c=function(){Ko.emit(so.OPEN_CHART_DATA_EDITOR)};return function(t,o){var l=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-chart",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({backgroundColor:e.elementInfo.fill}),onMousedown:o[0]||(o[0]=function(e){return n(e)}),onTouchstart:o[1]||(o[1]=function(e){return n(e)}),onDblclick:o[2]||(o[2]=function(e){return c()})},[Object(y["createVNode"])(fo,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(y["createVNode"])(Xl,{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)),[[l,e.contextmenus]])],4)],6)}}});n("8216");const Zl=pn()(Yl,[["__scopeId","data-v-f3c03862"]]);var Wl=Zl,Jl=function(e){if(!e)return{};var t=e.bold,n=e.em,c=e.underline,o=e.strikethrough,l=e.color,a=e.backcolor,r=e.fontsize,i=e.fontname,u=e.align,d="".concat(c?"underline":""," ").concat(o?"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"}},Ql=function(e){return e.replace(/\n/g,"
").replace(/ /g," ")},Kl=function(e){var t=Object(y["computed"])((function(){for(var t=[],n=0;n1||l.rowspan>1)for(var a=n;a=d&&p<=f&&m>=s&&m<=b&&a.push("".concat(p,"_").concat(m));return a}));Object(y["watch"])(k,(function(e,t){Object(te["isEqual"])(e,t)||n("changeSelectedCells",k.value)}));var C=Object(y["computed"])((function(){return k.value.length>1?null:k.value[0]})),N=(Object(y["computed"])((function(){if(!r.value.length)return null;var e=Object(Oe["a"])(r.value,2),t=e[0],n=e[1];if(!i.value.length)return{row:[t,t],col:[n,n]};var c=Object(Oe["a"])(i.value,2),o=c[0],l=c[1];if(t===o&&n===l)return{row:[t,t],col:[n,n]};var a=Math.min(t,o),u=Math.min(n,l),d=Math.max(t,o),s=Math.max(n,l);return{row:[a,d],col:[u,s]}})),function(){return a.value=!1}),w=function(e,t,n){0===e.button&&(i.value=[],a.value=!0,r.value=[t,n])},E=function(e,t){a.value&&(i.value=[e,t])};Object(y["onMounted"])((function(){document.addEventListener("mouseup",N)})),Object(y["onUnmounted"])((function(){document.removeEventListener("mouseup",N)}));var I=function(e,t){return h.value.includes("".concat(e,"_").concat(t))},B=function(e){var t=u.value.length-1;r.value=[0,e],i.value=[t,e]},L=function(e){var t=u.value[e].length-1;r.value=[e,0],i.value=[e,t]},_=function(){var e=u.value.length-1,t=u.value[e].length-1;r.value=[0,0],i.value=[e,t]},T=function(e){for(var t=JSON.parse(JSON.stringify(u.value)),n=u.value[e],c=[],o=0;o=0;i--)if(!I(i,r)){t[i][r].rowspan=t[i][r].rowspan-1;break}t.splice(e,1),u.value=t},M=function(e){for(var t=JSON.parse(JSON.stringify(u.value)),c=[],o=0;o=0;i--)if(!I(r,i)){t[r][i].colspan=t[r][i].colspan-1;break}u.value=t.map((function(t){return t.splice(e,1),t})),b.value.splice(e,1),n("changeColWidths",b.value)},D=function(e){for(var t=JSON.parse(JSON.stringify(u.value)),n=[],c=0;cu.value.length&&(a=t+o-u.value.length),c+l>u.value[0].length&&(r=c+l-u.value[0].length),(a||r)&&F(a,r),Object(y["nextTick"])((function(){for(var a=0;a1,n=e[0].length>1;return{canDeleteRow:t,canDeleteCol:n}},W=function(e,t){var n=k.value.length>1,c=u.value[e][t],o=n,l=!n&&(c.rowspan>1||c.colspan>1);return{canMerge:o,canSplit:l}},J=function(e){var t=e.dataset.cellIndex,n=+t.split("_")[0],c=+t.split("_")[1];k.value.includes("".concat(n,"_").concat(c))||(r.value=[n,c],i.value=[]);var o=W(n,c),l=o.canMerge,a=o.canSplit,u=Z(),d=u.canDeleteRow,s=u.canDeleteCol;return[{text:"插入列",children:[{text:"到左侧",handler:function(){return z(c)}},{text:"到右侧",handler:function(){return z(c+1)}}]},{text:"插入行",children:[{text:"到上方",handler:function(){return D(n)}},{text:"到下方",handler:function(){return D(n+1)}}]},{text:"删除列",disable:!s,handler:function(){return M(c)}},{text:"删除行",disable:!d,handler:function(){return T(n)}},{divider:!0},{text:"合并单元格",disable:!l,handler:A},{text:"取消合并单元格",disable:!a,handler:function(){return R(n,c)}},{divider:!0},{text:"选中当前列",handler:function(){return B(c)}},{text:"选中当前行",handler:function(){return L(n)}},{text:"选中全部单元格",handler:_}]};return function(t,n){var c,o,l,a,r,i=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"editable-table",style:Object(y["normalizeStyle"])({width:Object(y["unref"])(p)+"px"})},[e.editable?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",oa,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(m),(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"drag-line",key:t,style:Object(y["normalizeStyle"])({left:e+"px"}),onMousedown:function(e){return P(e,t)}},null,44,la)})),128))])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("table",{class:Object(y["normalizeClass"])({theme:Object(y["unref"])(d),"row-header":null===(c=Object(y["unref"])(d))||void 0===c?void 0:c.rowHeader,"row-footer":null===(o=Object(y["unref"])(d))||void 0===o?void 0:o.rowFooter,"col-header":null===(l=Object(y["unref"])(d))||void 0===l?void 0:l.colHeader,"col-footer":null===(a=Object(y["unref"])(d))||void 0===a?void 0:a.colFooter}),style:Object(y["normalizeStyle"])("--themeColor: ".concat(null===(r=Object(y["unref"])(d))||void 0===r?void 0:r.color,"; --subThemeColor1: ").concat(Object(y["unref"])(f)[0],"; --subThemeColor2: ").concat(Object(y["unref"])(f)[1]))},[Object(y["createElementVNode"])("colgroup",null,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(b.value,(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("col",{span:"1",key:t,width:e},null,8,aa)})),128))]),Object(y["createElementVNode"])("tbody",null,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(u),(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("tr",{key:n},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(t,(function(t,c){return Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("td",{class:Object(y["normalizeClass"])(["cell",{selected:Object(y["unref"])(k).includes("".concat(n,"_").concat(c))&&Object(y["unref"])(k).length>1,active:Object(y["unref"])(C)==="".concat(n,"_").concat(c)}]),style:Object(y["normalizeStyle"])(Object(S["a"])({borderStyle:e.outline.style,borderColor:e.outline.color,borderWidth:e.outline.width+"px"},Object(y["unref"])(Jl)(t.style))),key:t.id,rowspan:t.rowspan,colspan:t.colspan,"data-cell-index":"".concat(n,"_").concat(c),onMousedown:function(e){return w(e,n,c)},onMouseenter:function(e){return E(n,c)}},[Object(y["unref"])(C)==="".concat(n,"_").concat(c)?(Object(y["openBlock"])(),Object(y["createBlock"])(ca,{key:0,class:Object(y["normalizeClass"])(["cell-text",{active:Object(y["unref"])(C)==="".concat(n,"_").concat(c)}]),value:t.text,onUpdateValue:function(e){return Object(y["unref"])(G)(e,n,c)},onInsertExcelData:function(e){return X(e,n,c)}},null,8,["class","value","onUpdateValue","onInsertExcelData"])):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:1,class:"cell-text",innerHTML:Object(y["unref"])(Ql)(t.text)},null,8,ia))],46,ra)),[[y["vShow"],!Object(y["unref"])(h).includes("".concat(n,"_").concat(c))],[i,function(e){return J(e)}]])})),128))])})),128))])],6)],4)}}});n("bc8c");const da=pn()(ua,[["__scopeId","data-v-bae8c794"]]);var sa=da,fa={class:"element-content"},ba=Object(y["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=e,n=ie(),c=le(),o=Object(g["c"])(n),l=o.canvasScale,a=o.handleElementId,r=o.isScaling,i=Object(y["ref"])(),u=lt(),d=u.addHistorySnapshot,s=function(e){t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},f=Object(y["ref"])(!1);Object(y["watch"])(a,(function(){a.value!==t.elementInfo.id&&(f.value=!1)})),Object(y["watch"])(f,(function(){n.setDisableHotkeysState(f.value)}));var b=function(){t.elementInfo.lock||(f.value=!0)},p=Object(y["ref"])(-1);Object(y["watch"])(r,(function(){a.value===t.elementInfo.id&&(r.value&&(f.value=!1),r.value||-1===p.value||(c.updateElement({id:t.elementInfo.id,props:{height:p.value}}),p.value=-1))}));var O=function(e){var n=e[0].contentRect;if(i.value){var o=n.height;t.elementInfo.height!==o&&(r.value?p.value=o:c.updateElement({id:t.elementInfo.id,props:{height:o}}))}},m=new ResizeObserver(O);Object(y["onMounted"])((function(){i.value&&m.observe(i.value)})),Object(y["onUnmounted"])((function(){i.value&&m.unobserve(i.value)}));var v=function(e){c.updateElement({id:t.elementInfo.id,props:{data:e}}),d()},j=function(e){var n=e.reduce((function(e,t){return e+t})),o=e.map((function(e){return e/n}));c.updateElement({id:t.elementInfo.id,props:{width:n,colWidths:o}}),d()},h=function(e){Object(y["nextTick"])((function(){return n.setSelectedTableCells(e)}))};return function(t,n){var c=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-table",{lock:e.elementInfo.lock}]),ref_key:"elementRef",ref:i,style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("div",fa,[Object(y["createVNode"])(sa,{onMousedown:n[0]||(n[0]=Object(y["withModifiers"])((function(){}),["stop"])),data:e.elementInfo.data,width:e.elementInfo.width,colWidths:e.elementInfo.colWidths,outline:e.elementInfo.outline,theme:e.elementInfo.theme,editable:f.value,onChange:n[1]||(n[1]=function(e){return v(e)}),onChangeColWidths:n[2]||(n[2]=function(e){return j(e)}),onChangeSelectedCells:n[3]||(n[3]=function(e){return h(e)})},null,8,["data","width","colWidths","outline","theme","editable"]),!f.value||e.elementInfo.lock?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:Object(y["normalizeClass"])(["table-mask",{lock:e.elementInfo.lock}]),onDblclick:n[4]||(n[4]=function(e){return b()}),onMousedown:n[5]||(n[5]=function(e){return s(e)}),onTouchstart:n[6]||(n[6]=function(e){return s(e)})},[Object(y["createElementVNode"])("div",{class:"mask-tip",style:Object(y["normalizeStyle"])({transform:"scale(".concat(1/Object(y["unref"])(l),")")})},"双击编辑",4)],34)):Object(y["createCommentVNode"])("",!0)])),[[c,e.contextmenus]])],4)],6)}}});n("76c1");const pa=pn()(ba,[["__scopeId","data-v-6391c486"]]);var Oa=pa,ma=["width","height","stroke","stroke-width"],va=["transform"],ja=["d"],ha=Object(y["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=e,n=function(e){t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},c=function(){Ko.emit(so.OPEN_LATEX_EDITOR)};return function(t,o){var l=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-latex",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"element-content",onMousedown:o[0]||(o[0]=function(e){return n(e)}),onTouchstart:o[1]||(o[1]=function(e){return n(e)}),onDblclick:o[2]||(o[2]=function(e){return c()})},[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.strokeWidth,fill:"none","stroke-linecap":"round","stroke-linejoin":"round"},[Object(y["createElementVNode"])("g",{transform:"scale(".concat(e.elementInfo.width/e.elementInfo.viewBox[0],", ").concat(e.elementInfo.height/e.elementInfo.viewBox[1],") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(y["createElementVNode"])("path",{d:e.elementInfo.path},null,8,ja)],8,va)],8,ma))],32)),[[l,e.contextmenus]])],4)],6)}}});n("0f64");const ya=pn()(ha,[["__scopeId","data-v-31390388"]]);var ga=ya,xa=function(e,t){Object(y["onMounted"])((function(){if(t.value){var n="normal";if(/m3u8(#|\?|$)/i.exec(e)?n="hls":/.flv(#|\?|$)/i.exec(e)&&(n="flv"),t.value&&"hls"===n&&(t.value.canPlayType("application/x-mpegURL")||t.value.canPlayType("application/vnd.apple.mpegURL"))&&(n="normal"),"hls"===n){var c=window.Hls;if(c&&c.isSupported()){var o=new c;o.loadSource(e),o.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()}}}}))},ka=function(e){return Object(y["pushScopeId"])("data-v-2fc4c202"),e=e(),Object(y["popScopeId"])(),e},Ca=["src","poster"],Na={class:"bezel"},wa=ka((function(){return Object(y["createElementVNode"])("div",{class:"controller-mask"},null,-1)})),Ea={class:"controller"},Va={class:"icons icons-left"},Ia={class:"icon-content"},Ba={class:"volume"},Sa={class:"icon-content"},La=ka((function(){return Object(y["createElementVNode"])("span",{class:"thumb"},null,-1)})),_a=[La],Ta={class:"time"},Ma={class:"ptime"},Da=Object(y["createTextVNode"])(" / "),za={class:"dtime"},Fa={class:"icons icons-right"},Aa={class:"speed"},Ra={class:"icon speed-icon"},Pa=["onClick"],Ha=ka((function(){return Object(y["createElementVNode"])("span",{class:"icon-content"},"循环",-1)})),qa=[Ha],Ua={class:"bar"},Ga=ka((function(){return Object(y["createElementVNode"])("span",{class:"thumb"},null,-1)})),Xa=[Ga],Ya=Object(y["defineComponent"])({__name:"index",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=e,n=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),c=Math.floor((e-3600*n)/60),o=Math.floor(e-3600*n-60*c);return(n>0?[n,c,o]:[c,o]).map(t).join(":")},c=function(e){return e.getBoundingClientRect().left},o=Object(y["ref"])(),l=Object(y["ref"])(),a=Object(y["ref"])(),r=Object(y["ref"])(.5),i=Object(y["ref"])(!0),u=Object(y["ref"])(0),d=Object(y["ref"])(0),s=Object(y["ref"])(0),f=Object(y["ref"])(!1),b=Object(y["ref"])(!1),p=Object(y["ref"])(1),O=Object(y["ref"])(!1),m=Object(y["ref"])("00:00"),v=Object(y["ref"])("0"),j=Object(y["computed"])((function(){return n(u.value)})),h=Object(y["computed"])((function(){return n(d.value)})),g=Object(y["computed"])((function(){return u.value/d.value*100+"%"})),x=Object(y["computed"])((function(){return s.value/d.value*100+"%"})),k=Object(y["computed"])((function(){return 100*r.value+"%"})),C=Object(y["ref"])(!1),N=[{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}],w=function(e){o.value&&(e=Math.max(e,0),e=Math.min(e,d.value),o.value.currentTime=e,u.value=e)},E=function(){o.value&&(i.value=!1,o.value.play(),b.value=!0)},V=function(){o.value&&(i.value=!0,o.value.pause(),b.value=!0)},I=function(){i.value?E():V()},B=function(e){o.value&&(e=Math.max(e,0),e=Math.min(e,1),o.value.volume=e,r.value=e,o.value.muted&&0!==e&&(o.value.muted=!1))},S=function(e){o.value&&(o.value.playbackRate=e),p.value=e},L=function(){var e;d.value=(null===(e=o.value)||void 0===e?void 0:e.duration)||0},_=function(){var e;u.value=(null===(e=o.value)||void 0===e?void 0:e.currentTime)||0},T=function(){f.value?(w(0),E()):V()},M=function(){var e;s.value=null!==(e=o.value)&&void 0!==e&&e.buffered.length?o.value.buffered.end(o.value.buffered.length-1):0},D=function(){return Se["a"].error("视频加载失败")},z=function(e){if(o.value&&l.value){var t="clientX"in e?e.clientX:e.changedTouches[0].clientX,n=(t-c(l.value))/l.value.clientWidth;n=Math.max(n,0),n=Math.min(n,1);var a=n*d.value;o.value.currentTime=a,u.value=a}},F=function e(t){if(o.value&&l.value){var n="clientX"in t?t.clientX:t.changedTouches[0].clientX,a=(n-c(l.value))/l.value.clientWidth;a=Math.max(a,0),a=Math.min(a,1);var r=a*d.value;o.value.currentTime=r,u.value=r,document.removeEventListener("mousemove",z),document.removeEventListener("touchmove",z),document.removeEventListener("mouseup",e),document.removeEventListener("touchend",e)}},A=function(){document.addEventListener("mousemove",z),document.addEventListener("touchmove",z),document.addEventListener("mouseup",F),document.addEventListener("touchend",F)},R=function(e){if(a.value){var t="clientX"in e?e.clientX:e.changedTouches[0].clientX,n=(t-c(a.value))/45;B(n)}},P=function e(){document.removeEventListener("mousemove",R),document.removeEventListener("touchmove",R),document.removeEventListener("mouseup",e),document.removeEventListener("touchend",e)},H=function(){document.addEventListener("mousemove",R),document.addEventListener("touchmove",R),document.addEventListener("mouseup",P),document.addEventListener("touchend",P)},q=function(e){if(a.value){var t=(e.clientX-c(a.value))/45;B(t)}},U=function(e){if(d.value&&l.value){var t=l.value.getBoundingClientRect().left,c=e.clientX-t;if(c<0||c>l.value.offsetWidth)return;var o=d.value*(c/l.value.offsetWidth);v.value="".concat(c-(o>=3600?25:20),"px"),m.value=n(o),O.value=!0}},G=function(){o.value&&(o.value.muted?(o.value.muted=!1,B(.5)):(o.value.muted=!0,B(0)))},X=function(){f.value=!f.value},Y=Object(y["ref"])(-1),Z=Object(y["ref"])(!1),W=function(){Z.value=!1,clearTimeout(Y.value),Y.value=setTimeout((function(){var e;null!==(e=o.value)&&void 0!==e&&e.played.length&&(Z.value=!0)}),3e3)};return xa(t.src,o),function(t,n){var c=Object(y["resolveComponent"])("IconPause"),u=Object(y["resolveComponent"])("IconPlayOne"),d=Object(y["resolveComponent"])("IconVolumeMute"),s=Object(y["resolveComponent"])("IconVolumeNotice"),w=Object(y["resolveComponent"])("IconVolumeSmall");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["video-player",{"hide-controller":Z.value}]),style:Object(y["normalizeStyle"])({width:e.width*e.scale+"px",height:e.height*e.scale+"px",transform:"scale(".concat(1/e.scale,")")}),onMousemove:n[22]||(n[22]=function(e){return W()}),onClick:n[23]||(n[23]=function(e){return W()})},[Object(y["createElementVNode"])("div",{class:"video-wrap",onClick:n[8]||(n[8]=function(e){return I()})},[Object(y["createElementVNode"])("video",{class:"video",ref_key:"videoRef",ref:o,src:e.src,poster:e.poster,"webkit-playsinline":"",playsinline:"",onDurationchange:n[0]||(n[0]=function(e){return L()}),onTimeupdate:n[1]||(n[1]=function(e){return _()}),onEnded:n[2]||(n[2]=function(e){return T()}),onProgress:n[3]||(n[3]=function(e){return M()}),onPlay:n[4]||(n[4]=function(e){return W()}),onPause:n[5]||(n[5]=function(e){return W()}),onError:n[6]||(n[6]=function(e){return D()})},null,40,Ca),Object(y["createElementVNode"])("div",Na,[Object(y["createElementVNode"])("span",{class:Object(y["normalizeClass"])(["bezel-icon",{"bezel-transition":b.value}]),onAnimationend:n[7]||(n[7]=function(e){return b.value=!1})},[i.value?(Object(y["openBlock"])(),Object(y["createBlock"])(c,{key:0})):(Object(y["openBlock"])(),Object(y["createBlock"])(u,{key:1}))],34)])]),wa,Object(y["createElementVNode"])("div",Ea,[Object(y["createElementVNode"])("div",Va,[Object(y["createElementVNode"])("div",{class:"icon play-icon",onClick:n[9]||(n[9]=function(e){return I()})},[Object(y["createElementVNode"])("span",Ia,[i.value?(Object(y["openBlock"])(),Object(y["createBlock"])(u,{key:0})):(Object(y["openBlock"])(),Object(y["createBlock"])(c,{key:1}))])]),Object(y["createElementVNode"])("div",Ba,[Object(y["createElementVNode"])("div",{class:"icon volume-icon",onClick:n[10]||(n[10]=function(e){return G()})},[Object(y["createElementVNode"])("span",Sa,[0===r.value?(Object(y["openBlock"])(),Object(y["createBlock"])(d,{key:0})):1===r.value?(Object(y["openBlock"])(),Object(y["createBlock"])(s,{key:1})):(Object(y["openBlock"])(),Object(y["createBlock"])(w,{key:2}))])]),Object(y["createElementVNode"])("div",{class:"volume-bar-wrap",onMousedown:n[11]||(n[11]=function(e){return H()}),onTouchstart:n[12]||(n[12]=function(e){return H()}),onClick:n[13]||(n[13]=function(e){return q(e)})},[Object(y["createElementVNode"])("div",{class:"volume-bar",ref_key:"volumeBarRef",ref:a},[Object(y["createElementVNode"])("div",{class:"volume-bar-inner",style:Object(y["normalizeStyle"])({width:Object(y["unref"])(k)})},_a,4)],512)],32)]),Object(y["createElementVNode"])("span",Ta,[Object(y["createElementVNode"])("span",Ma,Object(y["toDisplayString"])(Object(y["unref"])(j)),1),Da,Object(y["createElementVNode"])("span",za,Object(y["toDisplayString"])(Object(y["unref"])(h)),1)])]),Object(y["createElementVNode"])("div",Fa,[Object(y["createElementVNode"])("div",Aa,[Object(y["createElementVNode"])("div",Ra,[Object(y["createElementVNode"])("span",{class:"icon-content",onClick:n[14]||(n[14]=function(e){return C.value=!C.value})},"倍速"),C.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:"speed-menu",onMouseleave:n[15]||(n[15]=function(e){return C.value=!1})},[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(N,(function(e){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["speed-menu-item",{active:e.value===p.value}]),key:e.label,onClick:function(t){return S(e.value)}},Object(y["toDisplayString"])(e.label),11,Pa)})),64))],32)):Object(y["createCommentVNode"])("",!0)])]),Object(y["createElementVNode"])("div",{class:"loop",onClick:n[16]||(n[16]=function(e){return X()})},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["icon loop-icon",{active:f.value}])},qa,2)])]),Object(y["createElementVNode"])("div",{class:"bar-wrap",ref_key:"playBarWrap",ref:l,onMousedown:n[17]||(n[17]=function(e){return A()}),onTouchstart:n[18]||(n[18]=function(e){return A()}),onMousemove:n[19]||(n[19]=function(e){return U(e)}),onMouseenter:n[20]||(n[20]=function(e){return O.value=!0}),onMouseleave:n[21]||(n[21]=function(e){return O.value=!1})},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["bar-time",{hidden:!O.value}]),style:Object(y["normalizeStyle"])({left:v.value})},Object(y["toDisplayString"])(m.value),7),Object(y["createElementVNode"])("div",Ua,[Object(y["createElementVNode"])("div",{class:"loaded",style:Object(y["normalizeStyle"])({width:Object(y["unref"])(x)})},null,4),Object(y["createElementVNode"])("div",{class:"played",style:Object(y["normalizeStyle"])({width:Object(y["unref"])(g)})},Xa,4)])],544)])],38)}}});n("3696");const Za=pn()(Ya,[["__scopeId","data-v-2fc4c202"]]);var Wa=Za,Ja=Object(y["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=e,n=Object(g["c"])(ie()),c=n.canvasScale,o=function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo,n))};return function(t,n){var l=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-video",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"element-content",onMousedown:n[2]||(n[2]=function(e){return o(e,!1)}),onTouchstart:n[3]||(n[3]=function(e){return o(e,!1)})},[Object(y["createVNode"])(Wa,{width:e.elementInfo.width,height:e.elementInfo.height,src:e.elementInfo.src,poster:e.elementInfo.poster,scale:Object(y["unref"])(c)},null,8,["width","height","src","poster","scale"]),(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(["t","b","l","r"],(function(e){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["handler-border",e]),key:e,onMousedown:n[0]||(n[0]=function(e){return o(e)}),onTouchstart:n[1]||(n[1]=function(e){return o(e)})},null,34)})),64))],32)),[[l,e.contextmenus]])],4)],6)}}});n("679c");const Qa=pn()(Ja,[["__scopeId","data-v-9d5469c6"]]);var Ka=Qa,$a=function(e){return Object(y["pushScopeId"])("data-v-121f3d11"),e=e(),Object(y["popScopeId"])(),e},er=["src","autoplay"],tr={class:"controller"},nr={class:"icons"},cr={class:"icon-content"},or={class:"volume"},lr={class:"icon-content"},ar=$a((function(){return Object(y["createElementVNode"])("span",{class:"thumb"},null,-1)})),rr=[ar],ir={class:"time"},ur={class:"ptime"},dr=Object(y["createTextVNode"])(" / "),sr={class:"dtime"},fr={class:"bar"},br=$a((function(){return Object(y["createElementVNode"])("span",{class:"thumb"},null,-1)})),pr=[br],Or=Object(y["defineComponent"])({__name:"AudioPlayer",props:{src:{type:String,required:!0},loop:{type:Boolean,required:!0},autoplay:{type:Boolean,default:!1},scale:{type:Number,default:1}},setup:function(e,t){var n=t.expose,c=e,o=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),c=Math.floor((e-3600*n)/60),o=Math.floor(e-3600*n-60*c);return(n>0?[n,c,o]:[c,o]).map(t).join(":")},l=function(e){return e.getBoundingClientRect().left},a=Object(y["ref"])(),r=Object(y["ref"])(),i=Object(y["ref"])(),u=Object(y["ref"])(.5),d=Object(y["ref"])(!0),s=Object(y["ref"])(0),f=Object(y["ref"])(0),b=Object(y["ref"])(0),p=Object(y["ref"])(!1),O=Object(y["ref"])("00:00"),m=Object(y["ref"])("0"),v=Object(y["computed"])((function(){return o(s.value)})),j=Object(y["computed"])((function(){return o(f.value)})),h=Object(y["computed"])((function(){return s.value/f.value*100+"%"})),g=Object(y["computed"])((function(){return b.value/f.value*100+"%"})),x=Object(y["computed"])((function(){return 100*u.value+"%"})),k=function(e){a.value&&(e=Math.max(e,0),e=Math.min(e,f.value),a.value.currentTime=e,s.value=e)},C=function(){a.value&&(d.value=!1,a.value.play())},N=function(){a.value&&(d.value=!0,a.value.pause())},w=function(){d.value?C():N()},E=function(e){a.value&&(e=Math.max(e,0),e=Math.min(e,1),a.value.volume=e,u.value=e,a.value.muted&&0!==e&&(a.value.muted=!1))},V=function(){var e;f.value=(null===(e=a.value)||void 0===e?void 0:e.duration)||0},I=function(){var e;s.value=(null===(e=a.value)||void 0===e?void 0:e.currentTime)||0},B=function(){d.value=!1},S=function(){c.loop?(k(0),C()):N()},L=function(){var e;b.value=null!==(e=a.value)&&void 0!==e&&e.buffered.length?a.value.buffered.end(a.value.buffered.length-1):0},_=function(){return Se["a"].error("视频加载失败")},T=function(e){if(a.value&&r.value){var t="clientX"in e?e.clientX:e.changedTouches[0].clientX,n=(t-l(r.value))/r.value.clientWidth;n=Math.max(n,0),n=Math.min(n,1);var c=n*f.value;a.value.currentTime=c,s.value=c}},M=function e(t){if(a.value&&r.value){var n="clientX"in t?t.clientX:t.changedTouches[0].clientX,c=(n-l(r.value))/r.value.clientWidth;c=Math.max(c,0),c=Math.min(c,1);var o=c*f.value;a.value.currentTime=o,s.value=o,document.removeEventListener("mousemove",T),document.removeEventListener("touchmove",T),document.removeEventListener("mouseup",e),document.removeEventListener("touchend",e)}},D=function(){document.addEventListener("mousemove",T),document.addEventListener("touchmove",T),document.addEventListener("mouseup",M),document.addEventListener("touchend",M)},z=function(e){if(i.value){var t="clientX"in e?e.clientX:e.changedTouches[0].clientX,n=(t-l(i.value))/45;E(n)}},F=function e(){document.removeEventListener("mousemove",z),document.removeEventListener("touchmove",z),document.removeEventListener("mouseup",e),document.removeEventListener("touchend",e)},A=function(){document.addEventListener("mousemove",z),document.addEventListener("touchmove",z),document.addEventListener("mouseup",F),document.addEventListener("touchend",F)},R=function(e){if(i.value){var t=(e.clientX-l(i.value))/45;E(t)}},P=function(e){if(f.value&&r.value){var t=r.value.getBoundingClientRect().left,n=e.clientX-t;if(n<0||n>r.value.offsetWidth)return;var c=f.value*(n/r.value.offsetWidth);m.value="".concat(n-(c>=3600?25:20),"px"),O.value=o(c),p.value=!0}},H=function(){a.value&&(a.value.muted?(a.value.muted=!1,E(.5)):(a.value.muted=!0,E(0)))};return n({toggle:w}),function(t,n){var c=Object(y["resolveComponent"])("IconPlayOne"),o=Object(y["resolveComponent"])("IconPause"),l=Object(y["resolveComponent"])("IconVolumeMute"),s=Object(y["resolveComponent"])("IconVolumeNotice"),f=Object(y["resolveComponent"])("IconVolumeSmall");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"audio-player",style:Object(y["normalizeStyle"])({transform:"scale(".concat(1/e.scale,")")})},[Object(y["createElementVNode"])("audio",{class:"audio",ref_key:"audioRef",ref:a,src:e.src,autoplay:e.autoplay,onDurationchange:n[0]||(n[0]=function(e){return V()}),onTimeupdate:n[1]||(n[1]=function(e){return I()}),onPlay:n[2]||(n[2]=function(e){return B()}),onEnded:n[3]||(n[3]=function(e){return S()}),onProgress:n[4]||(n[4]=function(e){return L()}),onError:n[5]||(n[5]=function(e){return _()})},null,40,er),Object(y["createElementVNode"])("div",tr,[Object(y["createElementVNode"])("div",nr,[Object(y["createElementVNode"])("div",{class:"icon play-icon",onClick:n[6]||(n[6]=function(e){return w()})},[Object(y["createElementVNode"])("span",cr,[d.value?(Object(y["openBlock"])(),Object(y["createBlock"])(c,{key:0})):(Object(y["openBlock"])(),Object(y["createBlock"])(o,{key:1}))])]),Object(y["createElementVNode"])("div",or,[Object(y["createElementVNode"])("div",{class:"icon volume-icon",onClick:n[7]||(n[7]=function(e){return H()})},[Object(y["createElementVNode"])("span",lr,[0===u.value?(Object(y["openBlock"])(),Object(y["createBlock"])(l,{key:0})):1===u.value?(Object(y["openBlock"])(),Object(y["createBlock"])(s,{key:1})):(Object(y["openBlock"])(),Object(y["createBlock"])(f,{key:2}))])]),Object(y["createElementVNode"])("div",{class:"volume-bar-wrap",onMousedown:n[8]||(n[8]=function(e){return A()}),onTouchstart:n[9]||(n[9]=function(e){return A()}),onClick:n[10]||(n[10]=function(e){return R(e)})},[Object(y["createElementVNode"])("div",{class:"volume-bar",ref_key:"volumeBarRef",ref:i},[Object(y["createElementVNode"])("div",{class:"volume-bar-inner",style:Object(y["normalizeStyle"])({width:Object(y["unref"])(x)})},rr,4)],512)],32)])]),Object(y["createElementVNode"])("span",ir,[Object(y["createElementVNode"])("span",ur,Object(y["toDisplayString"])(Object(y["unref"])(v)),1),dr,Object(y["createElementVNode"])("span",sr,Object(y["toDisplayString"])(Object(y["unref"])(j)),1)]),Object(y["createElementVNode"])("div",{class:"bar-wrap",ref_key:"playBarWrap",ref:r,onMousedown:n[11]||(n[11]=function(e){return D()}),onTouchstart:n[12]||(n[12]=function(e){return D()}),onMousemove:n[13]||(n[13]=function(e){return P(e)}),onMouseenter:n[14]||(n[14]=function(e){return p.value=!0}),onMouseleave:n[15]||(n[15]=function(e){return p.value=!1})},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["bar-time",{hidden:!p.value}]),style:Object(y["normalizeStyle"])({left:m.value})},Object(y["toDisplayString"])(O.value),7),Object(y["createElementVNode"])("div",fr,[Object(y["createElementVNode"])("div",{class:"loaded",style:Object(y["normalizeStyle"])({width:Object(y["unref"])(g)})},null,4),Object(y["createElementVNode"])("div",{class:"played",style:Object(y["normalizeStyle"])({width:Object(y["unref"])(h)})},pr,4)])],544)])],4)}}});n("3929");const mr=pn()(Or,[["__scopeId","data-v-121f3d11"]]);var vr=mr,jr=Object(y["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=e,n=Object(g["c"])(ie()),c=n.canvasScale,o=n.handleElementId,l=Object(g["c"])(le()),a=l.viewportRatio,r=Object(y["computed"])((function(){return Math.min(t.elementInfo.width,t.elementInfo.height)+"px"})),i=Object(y["computed"])((function(){var e=tt,n=tt*a.value,o=280/c.value,l=50/c.value,r=t.elementInfo.width,i=t.elementInfo.height,u=t.elementInfo.left,d=t.elementInfo.top,s=0,f=i;return u+o>=e&&(s=r-o),d+i+l>=n&&(f=-l),{left:s+"px",top:f+"px"}})),u=function(e){t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))};return function(t,n){var l=Object(y["resolveComponent"])("IconVolumeNotice"),a=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-audio",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"element-content",onMousedown:n[1]||(n[1]=function(e){return u(e)}),onTouchstart:n[2]||(n[2]=function(e){return u(e)})},[Object(y["createVNode"])(l,{class:"audio-icon",style:Object(y["normalizeStyle"])({fontSize:Object(y["unref"])(r),color:e.elementInfo.color})},null,8,["style"]),Object(y["unref"])(o)===e.elementInfo.id?(Object(y["openBlock"])(),Object(y["createBlock"])(vr,{key:0,class:"audio-player",style:Object(y["normalizeStyle"])(Object(S["a"])({},Object(y["unref"])(i))),src:e.elementInfo.src,loop:e.elementInfo.loop,scale:Object(y["unref"])(c),onMousedown:n[0]||(n[0]=Object(y["withModifiers"])((function(){}),["stop"]))},null,8,["style","src","loop","scale"])):Object(y["createCommentVNode"])("",!0)],32)),[[a,e.contextmenus]])],4)],6)}}});n("75e6");const hr=pn()(jr,[["__scopeId","data-v-001bfbc4"]]);var yr=hr,gr=["id"],xr=Object(y["defineComponent"])({__name:"EditableElement",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=e,n=Object(y["computed"])((function(){var e,n=(e={},Object(pe["a"])(e,Ve.IMAGE,lo),Object(pe["a"])(e,Ve.TEXT,pl),Object(pe["a"])(e,Ve.SHAPE,Bl),Object(pe["a"])(e,Ve.LINE,Pl),Object(pe["a"])(e,Ve.CHART,Wl),Object(pe["a"])(e,Ve.TABLE,Oa),Object(pe["a"])(e,Ve.LATEX,ga),Object(pe["a"])(e,Ve.VIDEO,Ka),Object(pe["a"])(e,Ve.AUDIO,yr),e);return n[t.elementInfo.type]||null})),c=mt(),o=c.orderElement,l=jc(),a=l.alignElementToCanvas,r=ft(),i=r.combineElements,u=r.uncombineElements,d=st(),s=d.deleteElement,f=dt(),b=f.lockElement,p=f.unlockElement,O=bt(),m=O.copyElement,v=O.pasteElement,j=O.cutElement,h=pt(),g=h.selectAllElement,x=function(){return t.elementInfo.lock?[{text:"解锁",handler:function(){return p(t.elementInfo)}}]:[{text:"剪切",subText:"Ctrl + X",handler:j},{text:"复制",subText:"Ctrl + C",handler:m},{text:"粘贴",subText:"Ctrl + V",handler:v},{divider:!0},{text:"水平居中",handler:function(){return a(C.HORIZONTAL)},children:[{text:"水平垂直居中",handler:function(){return a(C.CENTER)}},{text:"水平居中",handler:function(){return a(C.HORIZONTAL)}},{text:"左对齐",handler:function(){return a(C.LEFT)}},{text:"右对齐",handler:function(){return a(C.RIGHT)}}]},{text:"垂直居中",handler:function(){return a(C.VERTICAL)},children:[{text:"水平垂直居中",handler:function(){return a(C.CENTER)}},{text:"垂直居中",handler:function(){return a(C.VERTICAL)}},{text:"顶部对齐",handler:function(){return a(C.TOP)}},{text:"底部对齐",handler:function(){return a(C.BOTTOM)}}]},{divider:!0},{text:"置于顶层",disable:t.isMultiSelect&&!t.elementInfo.groupId,handler:function(){return o(t.elementInfo,k.TOP)},children:[{text:"置于顶层",handler:function(){return o(t.elementInfo,k.TOP)}},{text:"上移一层",handler:function(){return o(t.elementInfo,k.UP)}}]},{text:"置于底层",disable:t.isMultiSelect&&!t.elementInfo.groupId,handler:function(){return o(t.elementInfo,k.BOTTOM)},children:[{text:"置于底层",handler:function(){return o(t.elementInfo,k.BOTTOM)}},{text:"下移一层",handler:function(){return o(t.elementInfo,k.DOWN)}}]},{divider:!0},{text:"设置链接",handler:t.openLinkDialog},{text:t.elementInfo.groupId?"取消组合":"组合",subText:"Ctrl + G",handler:t.elementInfo.groupId?u:i,hide:!t.isMultiSelect},{text:"全选",subText:"Ctrl + A",handler:g},{text:"锁定",subText:"Ctrl + L",handler:b},{text:"删除",subText:"Delete",handler:s}]};return function(t,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"editable-element",ref:"elementRef",id:"editable-element-".concat(e.elementInfo.id),style:Object(y["normalizeStyle"])({zIndex:e.elementIndex})},[(Object(y["openBlock"])(),Object(y["createBlock"])(Object(y["resolveDynamicComponent"])(Object(y["unref"])(n)),{elementInfo:e.elementInfo,selectElement:e.selectElement,contextmenus:x},null,8,["elementInfo","selectElement"]))],12,gr)}}});const kr=xr;var Cr=kr,Nr=Object(y["defineComponent"])({__name:"MouseSelection",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)}}},setup:function(e){return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])("mouse-selection quadrant-".concat(e.quadrant)),style:Object(y["normalizeStyle"])({top:e.top+"px",left:e.left+"px",width:e.width+"px",height:e.height+"px"})},null,6)}}});n("4b9a");const wr=pn()(Nr,[["__scopeId","data-v-0d6c0f73"]]);var Er=wr,Vr={class:"grid-lines"},Ir=["d","stroke"],Br=Object(y["defineComponent"])({__name:"GridLines",setup:function(e){var t=Object(g["c"])(ie()),n=t.canvasScale,c=Object(g["c"])(le()),o=c.currentSlide,l=c.viewportRatio,a=Object(y["computed"])((function(){var e;return null===(e=o.value)||void 0===e?void 0:e.background})),r=Object(y["computed"])((function(){var e,t=(null===(e=a.value)||void 0===e?void 0:e.color)||"#fff",n=["#000","#fff"];return ee.a.mostReadable(t,n,{includeFallbackColors:!0}).setAlpha(.5).toRgbString()})),i=50,u=function(){for(var e=tt,t=tt*l.value,n="",c=0;c<=Math.floor(t/i);c++)n+="M0 ".concat(c*i," L").concat(e," ").concat(c*i," ");for(var o=0;o<=Math.floor(e/i);o++)n+="M".concat(o*i," 0 L").concat(o*i," ").concat(t," ");return n},d=u();return function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",Vr,[Object(y["createElementVNode"])("path",{style:Object(y["normalizeStyle"])({transform:"scale(".concat(Object(y["unref"])(n),")")}),d:Object(y["unref"])(d),fill:"none",stroke:Object(y["unref"])(r),"stroke-width":"0.3","stroke-dasharray":"5"},null,12,Ir)])}}});n("15d9");const Sr=pn()(Br,[["__scopeId","data-v-10cd6d44"]]);var Lr=Sr,_r=function(e){var t=Object(y["computed"])((function(){if(!e.value)return{backgroundColor:"#fff"};var t=e.value,n=t.type,c=t.color,o=t.image,l=t.imageSize,a=t.gradientColor,r=t.gradientRotate,i=t.gradientType;if("solid"===n)return{backgroundColor:c};if("image"===n)return o?"repeat"===l?{backgroundImage:"url(".concat(o),backgroundRepeat:"repeat",backgroundSize:"contain"}:{backgroundImage:"url(".concat(o),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}},Tr=Object(y["defineComponent"])({__name:"ViewportBackground",setup:function(e){var t=Object(g["c"])(ie()),n=t.showGridLines,c=Object(g["c"])(le()),o=c.currentSlide,l=Object(y["computed"])((function(){var e;return null===(e=o.value)||void 0===e?void 0:e.background})),a=_r(l),r=a.backgroundStyle;return function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"viewport-background",style:Object(y["normalizeStyle"])(Object(y["unref"])(r))},[Object(y["unref"])(n)?(Object(y["openBlock"])(),Object(y["createBlock"])(Lr,{key:0})):Object(y["createCommentVNode"])("",!0)],4)}}});n("258f");const Mr=pn()(Tr,[["__scopeId","data-v-6f1e1261"]]);var Dr=Mr,zr=Object(y["defineComponent"])({__name:"AlignmentLine",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=e,n=Object(y["computed"])((function(){return t.axis.x*t.canvasScale+"px"})),c=Object(y["computed"])((function(){return t.axis.y*t.canvasScale+"px"})),o=Object(y["computed"])((function(){return"vertical"===t.type?{height:t.length*t.canvasScale+"px"}:{width:t.length*t.canvasScale+"px"}}));return function(t,l){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"alignment-line",style:Object(y["normalizeStyle"])({left:Object(y["unref"])(n),top:Object(y["unref"])(c)})},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["line",e.type]),style:Object(y["normalizeStyle"])(Object(y["unref"])(o))},null,6)],4)}}});n("5688");const Fr=pn()(zr,[["__scopeId","data-v-37fa6068"]]);var Ar=Fr,Rr={class:"ruler"},Pr=Object(y["defineComponent"])({__name:"Ruler",props:{viewportStyles:{type:Object,required:!0}},setup:function(e){var t=e,n=Object(g["c"])(ie()),c=n.canvasScale,o=Object(y["computed"])((function(){return t.viewportStyles.width*c.value/10}));return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Rr,[Object(y["createElementVNode"])("div",{class:"h",style:Object(y["normalizeStyle"])({width:e.viewportStyles.width*Object(y["unref"])(c)+"px",left:e.viewportStyles.left+"px"})},[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(10,(function(e){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["ruler-marker-100",{hide:Object(y["unref"])(o)<36,omit:Object(y["unref"])(o)<72}]),key:"marker-100-".concat(e)},[Object(y["createElementVNode"])("span",null,Object(y["toDisplayString"])(100*e),1)],2)})),64))],4),Object(y["createElementVNode"])("div",{class:"v",style:Object(y["normalizeStyle"])({height:e.viewportStyles.height*Object(y["unref"])(c)+"px",top:e.viewportStyles.top+"px"})},[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(10,(function(e){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["ruler-marker-100",{hide:Object(y["unref"])(o)<36,omit:Object(y["unref"])(o)<72}]),key:e,style:Object(y["normalizeStyle"])({height:Object(y["unref"])(o)+"px"})},[Object(y["createElementVNode"])("span",null,Object(y["toDisplayString"])(100*e),1)],6)})),64))],4)])}}});n("9854");const Hr=pn()(Pr,[["__scopeId","data-v-60e06332"]]);var qr=Hr,Ur=["width","height"],Gr=["d"],Xr=Object(y["defineComponent"])({__name:"ElementCreateSelection",emits:["created"],setup:function(e,t){var n=t.emit,c=ie(),o=Object(g["c"])(c),l=o.creatingElement,a=Object(g["c"])(ke()),r=a.ctrlOrShiftKeyActive,i=Object(y["ref"])(),u=Object(y["ref"])(),d=Object(y["ref"])(),s=Object(y["ref"])({x:0,y:0});Object(y["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,o=e.pageX,a=e.pageY;i.value=[o,a],document.onmousemove=function(e){if(l.value&&t){var n=e.pageX,c=e.pageY;if(r.value){var i=n-o,d=c-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?c=b?a-i:a+i:n=b?o-d:o+d}else"line"===l.value.type&&(s>f?c=a:n=o)}u.value=[n,c]}},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-o)>=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-o)>=b&&Math.abs(f-a)>=b)n("created",{start:i.value,end:u.value});else{var p=200,O=Math.min(s,o),m=Math.min(f,a),v=Math.max(s,o),j=Math.max(f,a),h=v-O>=b?v-O:p,y=j-m>=b?j-m:p;n("created",{start:[O,m],end:[O+h,m+y]})}}else setTimeout((function(){return c.setCreatingElement(null)}),0)}},b=Object(y["computed"])((function(){if(!i.value||!u.value)return null;if(!l.value||"line"!==l.value.type)return null;var e=Object(Oe["a"])(i.value,2),t=e[0],n=e[1],c=Object(Oe["a"])(u.value,2),o=c[0],a=c[1],r=Math.min(t,o),d=Math.max(t,o),s=Math.min(n,a),f=Math.max(n,a),b=d-r>=24?d-r:24,p=f-s>=24?f-s:24,O=t===r?0:d-r,m=n===s?0:f-s,v=o===r?0:d-r,j=a===s?0:f-s,h="M".concat(O,", ").concat(m," L").concat(v,", ").concat(j);return{svgWidth:b,svgHeight:p,startX:O,startY:m,endX:v,endY:j,path:h}})),p=Object(y["computed"])((function(){if(!i.value||!u.value)return{};var e=Object(Oe["a"])(i.value,2),t=e[0],n=e[1],c=Object(Oe["a"])(u.value,2),o=c[0],l=c[1],a=Math.min(t,o),r=Math.max(t,o),d=Math.min(n,l),f=Math.max(n,l),b=r-a,p=f-d;return{left:a-s.value.x+"px",top:d-s.value.y+"px",width:b+"px",height:p+"px"}}));return function(e,t){var n,c;return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"element-create-selection",ref_key:"selectionRef",ref:d,onMousedown:t[0]||(t[0]=Object(y["withModifiers"])((function(e){return f(e)}),["stop"])),onContextmenu:t[1]||(t[1]=Object(y["withModifiers"])((function(){}),["stop","prevent"]))},[i.value&&u.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:Object(y["normalizeClass"])(["selection",null===(n=Object(y["unref"])(l))||void 0===n?void 0:n.type]),style:Object(y["normalizeStyle"])(Object(y["unref"])(p))},["line"===(null===(c=Object(y["unref"])(l))||void 0===c?void 0:c.type)&&Object(y["unref"])(b)?(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{key:0,overflow:"visible",width:Object(y["unref"])(b).svgWidth,height:Object(y["unref"])(b).svgHeight},[Object(y["createElementVNode"])("path",{d:Object(y["unref"])(b).path,stroke:"#d14424",fill:"none","stroke-width":"2"},null,8,Gr)],8,Ur)):Object(y["createCommentVNode"])("",!0)],6)):Object(y["createCommentVNode"])("",!0)],544)}}});n("7aed");const Yr=pn()(Xr,[["__scopeId","data-v-5a941f07"]]);var Zr=Yr,Wr=function(e,t){var n=Object(y["computed"])((function(){return[{direction:w.LEFT_TOP,style:{}},{direction:w.TOP,style:{left:e.value/2+"px"}},{direction:w.RIGHT_TOP,style:{left:e.value+"px"}},{direction:w.LEFT,style:{top:t.value/2+"px"}},{direction:w.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}},{direction:w.LEFT_BOTTOM,style:{top:t.value+"px"}},{direction:w.BOTTOM,style:{left:e.value/2+"px",top:t.value+"px"}},{direction:w.RIGHT_BOTTOM,style:{left:e.value+"px",top:t.value+"px"}}]})),c=Object(y["computed"])((function(){return[{direction:w.LEFT,style:{top:t.value/2+"px"}},{direction:w.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}}]})),o=Object(y["computed"])((function(){return[{type:N.T,style:{width:e.value+"px"}},{type:N.B,style:{top:t.value+"px",width:e.value+"px"}},{type:N.L,style:{height:t.value+"px"}},{type:N.R,style:{left:e.value+"px",height:t.value+"px"}}]}));return{resizeHandlers:n,textElementResizeHandlers:c,borderLines:o}},Jr=Object(y["defineComponent"])({__name:"ResizeHandler",props:{type:{type:String,default:""},rotate:{type:Number,default:0}},setup:function(e){var t=e,n=Object(y["computed"])((function(){var e="rotate-",n=t.rotate;return n>-22.5&&n<=22.5?e+0:n>22.5&&n<=67.5?e+45:n>67.5&&n<=112.5?e+90:n>112.5&&n<=157.5?e+135:n>157.5||n<=-157.5?e+0:n>-157.5&&n<=-112.5?e+45:n>-112.5&&n<=-67.5?e+90:n>-67.5&&n<=-22.5?e+135:e+0}));return function(t,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["resize-handler",Object(y["unref"])(n),e.type])},null,2)}}});n("b510");const Qr=pn()(Jr,[["__scopeId","data-v-881ee3f8"]]);var Kr=Qr,$r=Object(y["defineComponent"])({__name:"BorderLine",props:{type:{type:String,required:!0},isWide:{type:Boolean,default:!1}},setup:function(e){return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["border-line",e.type,{wide:e.isWide}])},null,2)}}});n("2460");const ei=pn()($r,[["__scopeId","data-v-7170d1be"]]);var ti=ei,ni=Object(y["defineComponent"])({__name:"MultiSelectOperate",props:{elementList:{type:Array,required:!0},scaleMultiElement:{type:Function,required:!0}},setup:function(e){var t=e,n=Object(g["c"])(ie()),c=n.activeElementIdList,o=n.canvasScale,l=Object(y["computed"])((function(){return t.elementList.filter((function(e){return c.value.includes(e.id)}))})),a=Object(y["ref"])({minX:0,maxX:0,minY:0,maxY:0}),r=Object(y["computed"])((function(){return(a.value.maxX-a.value.minX)*o.value})),i=Object(y["computed"])((function(){return(a.value.maxY-a.value.minY)*o.value})),u=Wr(r,i),d=u.resizeHandlers,s=u.borderLines,f=function(){var e=Xe(l.value),t=e.minX,n=e.maxX,c=e.minY,o=e.maxY;a.value={minX:t,maxX:n,minY:c,maxY:o}};Object(y["watchEffect"])(f);var b=Object(y["computed"])((function(){return l.value.some((function(e){return!!("image"!==e.type&&"shape"!==e.type||e.rotate)}))}));return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"multi-select-operate",style:Object(y["normalizeStyle"])({left:a.value.minX*Object(y["unref"])(o)+"px",top:a.value.minY*Object(y["unref"])(o)+"px"})},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(s),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(ti,{key:e.type,type:e.type,style:Object(y["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),Object(y["unref"])(b)?Object(y["createCommentVNode"])("",!0):(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],{key:0},Object(y["renderList"])(Object(y["unref"])(d),(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(Kr,{key:t.direction,type:t.direction,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.scaleMultiElement(n,a.value,t.direction)}),["stop"])},null,8,["type","style","onMousedown"])})),128))],4)}}});n("a669");const ci=pn()(ni,[["__scopeId","data-v-defbd922"]]);var oi=ci,li={class:"rotate-handler"};function ai(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",li)}n("1ebd");const ri={},ii=pn()(ri,[["render",ai],["__scopeId","data-v-b99d8dae"]]);var ui=ii,di={inheritAttrs:!1},si=Object(y["defineComponent"])(Object(S["a"])(Object(S["a"])({},di),{},{__name:"ImageElementOperate",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=e,n=Object(g["c"])(ie()),c=n.canvasScale,o=n.clipingImageElementId,l=Object(y["computed"])((function(){return o.value===t.elementInfo.id})),a=Object(y["computed"])((function(){return t.elementInfo.width*c.value})),r=Object(y["computed"])((function(){return t.elementInfo.height*c.value})),i=Wr(a,r),u=i.resizeHandlers,d=i.borderLines;return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["image-element-operate",{cliping:Object(y["unref"])(l)}])},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(d),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(ti,{class:"operate-border-line",key:e.type,type:e.type,style:Object(y["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(u),(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(Kr,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(y["createVNode"])(ui,{class:"operate-rotate-handler",style:Object(y["normalizeStyle"])({left:Object(y["unref"])(a)/2+"px"}),onMousedown:n[0]||(n[0]=Object(y["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64)):Object(y["createCommentVNode"])("",!0)],2)}}}));n("ae9f");const fi=pn()(si,[["__scopeId","data-v-46b250c2"]]);var bi=fi,pi={class:"text-element-operate"},Oi={inheritAttrs:!1},mi=Object(y["defineComponent"])(Object(S["a"])(Object(S["a"])({},Oi),{},{__name:"TextElementOperate",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=e,n=Object(g["c"])(ie()),c=n.canvasScale,o=Object(y["computed"])((function(){return t.elementInfo.width*c.value})),l=Object(y["computed"])((function(){return t.elementInfo.height*c.value})),a=Wr(o,l),r=a.textElementResizeHandlers,i=a.borderLines;return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",pi,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(i),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(ti,{class:"operate-border-line",key:e.type,type:e.type,style:Object(y["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(r),(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(Kr,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(y["createVNode"])(ui,{class:"operate-rotate-handler",style:Object(y["normalizeStyle"])({left:Object(y["unref"])(o)/2+"px"}),onMousedown:n[0]||(n[0]=Object(y["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64)):Object(y["createCommentVNode"])("",!0)])}}}));const vi=mi;var ji=vi,hi={class:"shape-element-operate"},yi={inheritAttrs:!1},gi=Object(y["defineComponent"])(Object(S["a"])(Object(S["a"])({},yi),{},{__name:"ShapeElementOperate",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=e,n=Object(g["c"])(ie()),c=n.canvasScale,o=Object(y["computed"])((function(){return t.elementInfo.width*c.value})),l=Object(y["computed"])((function(){return t.elementInfo.height*c.value})),a=Wr(o,l),r=a.resizeHandlers,i=a.borderLines;return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",hi,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(i),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(ti,{class:"operate-border-line",key:e.type,type:e.type,style:Object(y["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(r),(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(Kr,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(y["createVNode"])(ui,{class:"operate-rotate-handler",style:Object(y["normalizeStyle"])({left:Object(y["unref"])(o)/2+"px"}),onMousedown:n[0]||(n[0]=Object(y["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64)):Object(y["createCommentVNode"])("",!0)])}}}));const xi=gi;var ki=xi,Ci={class:"line-element-operate"},Ni=["width","height","stroke"],wi={key:0},Ei=["x1","y1","x2","y2"],Vi=["x1","y1","x2","y2"],Ii=["x1","y1","x2","y2"],Bi=["x1","y1","x2","y2"],Si={inheritAttrs:!1},Li=Object(y["defineComponent"])(Object(S["a"])(Object(S["a"])({},Si),{},{__name:"LineElementOperate",props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},dragLineElement:{type:Function,required:!0}},setup:function(e){var t=e,n=Object(g["c"])(ie()),c=n.canvasScale,o=Object(y["computed"])((function(){return Math.max(t.elementInfo.start[0],t.elementInfo.end[0])})),l=Object(y["computed"])((function(){return Math.max(t.elementInfo.start[1],t.elementInfo.end[1])})),a=Object(y["computed"])((function(){var e=[{handler:E.START,style:{left:t.elementInfo.start[0]*c.value+"px",top:t.elementInfo.start[1]*c.value+"px"}},{handler:E.END,style:{left:t.elementInfo.end[0]*c.value+"px",top:t.elementInfo.end[1]*c.value+"px"}}];if(t.elementInfo.curve||t.elementInfo.broken){var n=t.elementInfo.curve||t.elementInfo.broken;e.push({handler:E.C,style:{left:n[0]*c.value+"px",top:n[1]*c.value+"px"}})}else if(t.elementInfo.cubic){var o=Object(Oe["a"])(t.elementInfo.cubic,2),l=o[0],a=o[1];e.push({handler:E.C1,style:{left:l[0]*c.value+"px",top:l[1]*c.value+"px"}}),e.push({handler:E.C2,style:{left:a[0]*c.value+"px",top:a[1]*c.value+"px"}})}return e}));return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Ci,[e.handlerVisible?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(a),(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(Kr,{class:"operate-resize-handler",key:t.handler,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.dragLineElement(n,e.elementInfo,t.handler)}),["stop"])},null,8,["style","onMousedown"])})),128)),(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{width:Object(y["unref"])(o)||1,height:Object(y["unref"])(l)||1,stroke:e.elementInfo.color,overflow:"visible",style:Object(y["normalizeStyle"])({transform:"scale(".concat(Object(y["unref"])(c),")")})},[e.elementInfo.curve?(Object(y["openBlock"])(),Object(y["createElementBlock"])("g",wi,[Object(y["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,Ei),Object(y["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,Vi)])):Object(y["createCommentVNode"])("",!0),e.elementInfo.cubic?(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],{key:1},Object(y["renderList"])(e.elementInfo.cubic,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("g",{key:n},[0===n?(Object(y["openBlock"])(),Object(y["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,Ii)):Object(y["createCommentVNode"])("",!0),1===n?(Object(y["openBlock"])(),Object(y["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,Bi)):Object(y["createCommentVNode"])("",!0)])})),128)):Object(y["createCommentVNode"])("",!0)],12,Ni))],64)):Object(y["createCommentVNode"])("",!0)])}}}));n("fac9");const _i=pn()(Li,[["__scopeId","data-v-4659f395"]]);var Ti=_i,Mi={class:"table-element-operate"},Di={inheritAttrs:!1},zi=Object(y["defineComponent"])(Object(S["a"])(Object(S["a"])({},Di),{},{__name:"TableElementOperate",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=e,n=Object(g["c"])(ie()),c=n.canvasScale,o=Object(y["computed"])((function(){return t.elementInfo.outline.width||1})),l=Object(y["computed"])((function(){return(t.elementInfo.width+o.value)*c.value})),a=Object(y["computed"])((function(){return t.elementInfo.height*c.value})),r=Wr(l,a),i=r.textElementResizeHandlers,u=r.borderLines;return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Mi,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(u),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(ti,{class:"operate-border-line",key:e.type,type:e.type,style:Object(y["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(i),(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(Kr,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(y["createVNode"])(ui,{class:"operate-rotate-handler",style:Object(y["normalizeStyle"])({left:Object(y["unref"])(l)/2+"px"}),onMousedown:n[0]||(n[0]=Object(y["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64)):Object(y["createCommentVNode"])("",!0)])}}}));const Fi=zi;var Ai=Fi,Ri={class:"common-element-operate"},Pi={inheritAttrs:!1},Hi=Object(y["defineComponent"])(Object(S["a"])(Object(S["a"])({},Pi),{},{__name:"CommonElementOperate",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=e,n=Object(g["c"])(ie()),c=n.canvasScale,o=Object(y["computed"])((function(){return t.elementInfo.width*c.value})),l=Object(y["computed"])((function(){return t.elementInfo.height*c.value})),a=Wr(o,l),r=a.resizeHandlers,i=a.borderLines,u=Object(y["computed"])((function(){return["video","audio"].includes(t.elementInfo.type)}));return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Ri,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(i),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(ti,{class:"operate-border-line",key:e.type,type:e.type,style:Object(y["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(r),(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(Kr,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(y["unref"])(u)?Object(y["createCommentVNode"])("",!0):(Object(y["openBlock"])(),Object(y["createBlock"])(ui,{key:0,class:"operate-rotate-handler",style:Object(y["normalizeStyle"])({left:Object(y["unref"])(o)/2+"px"}),onMousedown:n[0]||(n[0]=Object(y["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"]))],64)):Object(y["createCommentVNode"])("",!0)])}}}));const qi=Hi;var Ui=qi,Gi=function(){var e=le(),t=lt(),n=t.addHistorySnapshot,c=function(t,c){var o=/^(https?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-.,@?^=%&:\/~+#]*[\w\-@?^=%&\/~+#])?$/;if("web"===c.type&&!o.test(c.target))return Se["a"].error("不是正确的网页链接地址"),!1;var l={link:c};return e.updateElement({id:t.id,props:l}),n(),!0},o=function(t){e.removeElementProps({id:t.id,propName:"link"}),n()};return{setLink:c,removeLink:o}},Xi=["href"],Yi={key:1,class:"link"},Zi={class:"btns"},Wi=Object(y["defineComponent"])({__name:"LinkHandler",props:{elementInfo:{type:Object,required:!0},link:{type:Object,required:!0},openLinkDialog:{type:Function,required:!0}},setup:function(e){var t=e,n=Object(g["c"])(ie()),c=n.canvasScale,o=Gi(),l=o.removeLink,a=Object(y["computed"])((function(){return"line"===t.elementInfo.type?0:t.elementInfo.height}));return function(t,n){var o=Object(y["resolveComponent"])("Divider");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"link-handler",style:Object(y["normalizeStyle"])({top:Object(y["unref"])(a)*Object(y["unref"])(c)+10+"px"})},["web"===e.link.type?(Object(y["openBlock"])(),Object(y["createElementBlock"])("a",{key:0,class:"link",href:e.link.target,target:"_blank"},Object(y["toDisplayString"])(e.link.target),9,Xi)):(Object(y["openBlock"])(),Object(y["createElementBlock"])("a",Yi,"幻灯片页面 "+Object(y["toDisplayString"])(e.link.target),1)),Object(y["createElementVNode"])("div",Zi,[Object(y["createElementVNode"])("div",{class:"btn",onClick:n[0]||(n[0]=function(t){return e.openLinkDialog()})},"更换"),Object(y["createVNode"])(o,{type:"vertical"}),Object(y["createElementVNode"])("div",{class:"btn",onClick:n[1]||(n[1]=function(t){return Object(y["unref"])(l)(e.elementInfo)})},"移除")])],4)}}});n("7851");const Ji=pn()(Wi,[["__scopeId","data-v-bb722fc0"]]);var Qi=Ji,Ki={key:1,class:"animation-index"},$i=Object(y["defineComponent"])({__name:"index",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=e,n=Object(g["c"])(ie()),c=n.canvasScale,o=n.toolbarState,l=Object(g["c"])(le()),a=l.formatedAnimations,r=Object(y["computed"])((function(){var e,n=(e={},Object(pe["a"])(e,Ve.IMAGE,bi),Object(pe["a"])(e,Ve.TEXT,ji),Object(pe["a"])(e,Ve.SHAPE,ki),Object(pe["a"])(e,Ve.LINE,Ti),Object(pe["a"])(e,Ve.TABLE,Ai),Object(pe["a"])(e,Ve.CHART,Ui),Object(pe["a"])(e,Ve.LATEX,Ui),Object(pe["a"])(e,Ve.VIDEO,Ui),Object(pe["a"])(e,Ve.AUDIO,Ui),e);return n[t.elementInfo.type]||null})),i=Object(y["computed"])((function(){for(var e=[],n=0;n0?re("-"):e.deltaY<0&&re("+"):e.deltaY>0?ue(V.DOWN):e.deltaY<0&&ue(V.UP)},se=function(){t.setGridLinesState(!r.value)},fe=function(){t.setRulerState(!i.value)},be=vc(m),pe=be.insertElementFromCreateSelection,Oe=function(){return[{text:"粘贴",subText:"Ctrl + V",handler:J},{text:"全选",subText:"Ctrl + A",handler:X},{text:"网格线",subText:r.value?"√":"",handler:se},{text:"标尺",subText:i.value?"√":"",handler:fe},{text:"重置当前页",handler:Z},{divider:!0},{text:"幻灯片放映",subText:"F5",handler:K}]};return Object(y["provide"])(tc,d),function(e,t){var n=Object(y["resolveComponent"])("Modal"),a=Object(y["resolveDirective"])("contextmenu"),r=Object(y["resolveDirective"])("click-outside");return Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"canvas",ref_key:"canvasRef",ref:C,onWheel:t[3]||(t[3]=function(e){return de(e)}),onMousedown:t[4]||(t[4]=function(e){return ne(e)})},[Object(y["unref"])(u)?(Object(y["openBlock"])(),Object(y["createBlock"])(Zr,{key:0,onCreated:t[0]||(t[0]=function(e){return Object(y["unref"])(pe)(e)})})):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("div",{class:"viewport-wrapper",style:Object(y["normalizeStyle"])({width:Object(y["unref"])(E).width*Object(y["unref"])(d)+"px",height:Object(y["unref"])(E).height*Object(y["unref"])(d)+"px",left:Object(y["unref"])(E).left+"px",top:Object(y["unref"])(E).top+"px"})},[Object(y["createElementVNode"])("div",Od,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(v.value,(function(e,t){return Object(y["openBlock"])(),Object(y["createBlock"])(Ar,{key:t,type:e.type,axis:e.axis,length:e.length,canvasScale:Object(y["unref"])(d)},null,8,["type","axis","length","canvasScale"])})),128)),Object(y["unref"])(c).length>1?(Object(y["openBlock"])(),Object(y["createBlock"])(oi,{key:0,elementList:x.value,scaleMultiElement:Object(y["unref"])(H)},null,8,["elementList","scaleMultiElement"])):Object(y["createCommentVNode"])("",!0),(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(x.value,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(tu,{key:e.id,elementInfo:e,isSelected:Object(y["unref"])(c).includes(e.id),isActive:Object(y["unref"])(l)===e.id,isActiveGroupElement:Object(y["unref"])(o)===e.id,isMultiSelect:Object(y["unref"])(c).length>1,rotateElement:Object(y["unref"])(U),scaleElement:Object(y["unref"])(P),openLinkDialog:h,dragLineElement:Object(y["unref"])(z)},null,8,["elementInfo","isSelected","isActive","isActiveGroupElement","isMultiSelect","rotateElement","scaleElement","dragLineElement"])})),128)),Object(y["createVNode"])(Dr)]),Object(y["createElementVNode"])("div",{class:"viewport",ref_key:"viewportRef",ref:m,style:Object(y["normalizeStyle"])({transform:"scale(".concat(Object(y["unref"])(d),")")})},[Object(y["unref"])(S)?(Object(y["openBlock"])(),Object(y["createBlock"])(Er,{key:0,top:Object(y["unref"])(B).top,left:Object(y["unref"])(B).left,width:Object(y["unref"])(B).width,height:Object(y["unref"])(B).height,quadrant:Object(y["unref"])(L)},null,8,["top","left","width","height","quadrant"])):Object(y["createCommentVNode"])("",!0),(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(x.value,(function(e,t){return Object(y["openBlock"])(),Object(y["createBlock"])(Cr,{key:e.id,elementInfo:e,elementIndex:t+1,isMultiSelect:Object(y["unref"])(c).length>1,selectElement:Object(y["unref"])(A),openLinkDialog:h},null,8,["elementInfo","elementIndex","isMultiSelect","selectElement"])})),128))],4)],4),Object(y["unref"])(O)?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",md)):Object(y["createCommentVNode"])("",!0),Object(y["unref"])(i)?(Object(y["openBlock"])(),Object(y["createBlock"])(qr,{key:2,viewportStyles:Object(y["unref"])(E)},null,8,["viewportStyles"])):Object(y["createCommentVNode"])("",!0),Object(y["createVNode"])(n,{visible:j.value,"onUpdate:visible":t[2]||(t[2]=function(e){return j.value=e}),footer:null,centered:"",width:540,destroyOnClose:""},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(pd,{onClose:t[1]||(t[1]=function(e){return j.value=!1})})]})),_:1},8,["visible"])],32)),[[a,Oe],[r,ce]])}}});n("6060");const jd=pn()(vd,[["__scopeId","data-v-529c7227"]]);var hd=jd,yd={class:"shape-pool"},gd={class:"category-name"},xd={class:"shape-list"},kd=["onClick"],Cd={overflow:"visible",width:"18",height:"18"},Nd=["transform"],wd=["fill","stroke","d"],Ed=Object(y["defineComponent"])({__name:"ShapePool",emits:["select"],setup:function(e,t){var n=t.emit,c=function(e){n("select",e)};return function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",yd,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(ct),(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"category",key:e.type},[Object(y["createElementVNode"])("div",gd,Object(y["toDisplayString"])(e.type),1),Object(y["createElementVNode"])("div",xd,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.children,(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"shape-item",key:t},[Object(y["createElementVNode"])("div",{class:"shape-content",onClick:function(t){return c(e)}},[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",Cd,[Object(y["createElementVNode"])("g",{transform:"scale(".concat(18/e.viewBox[0],", ").concat(18/e.viewBox[1],") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(y["createElementVNode"])("path",{class:Object(y["normalizeClass"])(["shape-path",{outlined:e.outlined}]),"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:e.outlined?"#999":"transparent",stroke:e.outlined?"transparent":"#999","stroke-width":"2",d:e.path},null,10,wd)],8,Nd)]))],8,kd)])})),128))])])})),128))])}}});n("c24c9");const Vd=pn()(Ed,[["__scopeId","data-v-5788e0d2"]]);var Id=Vd,Bd=[{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}]}],Sd={class:"line-pool"},Ld={class:"category-name"},_d={class:"line-list"},Td=["onClick"],Md={overflow:"visible",width:"20",height:"20"},Dd=["d","stroke-dasharray","marker-start","marker-end"],zd=Object(y["defineComponent"])({__name:"LinePool",emits:["select"],setup:function(e,t){var n=t.emit,c=function(e){n("select",e)};return function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Sd,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(Bd),(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"category",key:e.type},[Object(y["createElementVNode"])("div",Ld,Object(y["toDisplayString"])(e.type),1),Object(y["createElementVNode"])("div",_d,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.children,(function(e,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"line-item",key:n},[Object(y["createElementVNode"])("div",{class:"line-content",onClick:function(t){return c(e)}},[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",Md,[Object(y["createElementVNode"])("defs",null,[e.points[0]?(Object(y["openBlock"])(),Object(y["createBlock"])(Ml,{key:0,class:"line-marker",id:"preset-line-".concat(t,"-").concat(n),position:"start",type:e.points[0],color:"currentColor",baseSize:2},null,8,["id","type"])):Object(y["createCommentVNode"])("",!0),e.points[1]?(Object(y["openBlock"])(),Object(y["createBlock"])(Ml,{key:1,class:"line-marker",id:"preset-line-".concat(t,"-").concat(n),position:"end",type:e.points[1],color:"currentColor",baseSize:2},null,8,["id","type"])):Object(y["createCommentVNode"])("",!0)]),Object(y["createElementVNode"])("path",{class:"line-path",d:e.path,stroke:"currentColor",fill:"none","stroke-width":"2","stroke-dasharray":"solid"===e.style?"0, 0":"4, 1","marker-start":e.points[0]?"url(#".concat("preset-line-".concat(t,"-").concat(n),"-",e.points[0],"-start)"):"","marker-end":e.points[1]?"url(#".concat("preset-line-".concat(t,"-").concat(n),"-",e.points[1],"-end)"):""},null,8,Dd)]))],8,Td)])})),128))])])})),128))])}}});n("3836");const Fd=pn()(zd,[["__scopeId","data-v-bca68faa"]]);var Ad=Fd,Rd={class:"chart-pool"},Pd=["onClick"],Hd=Object(y["defineComponent"])({__name:"ChartPool",emits:["select"],setup:function(e,t){var n=t.emit,c=["bar","horizontalBar","line","area","scatter","pie","ring"],o=function(e){n("select",e)};return function(e,t){var n=Object(y["resolveComponent"])("IconChartLine"),l=Object(y["resolveComponent"])("IconChartHistogram"),a=Object(y["resolveComponent"])("IconChartPie"),r=Object(y["resolveComponent"])("IconChartHistogramOne"),i=Object(y["resolveComponent"])("IconChartLineArea"),u=Object(y["resolveComponent"])("IconChartRing"),d=Object(y["resolveComponent"])("IconChartScatter");return Object(y["openBlock"])(),Object(y["createElementBlock"])("ul",Rd,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(c,(function(e,t){return Object(y["createElementVNode"])("li",{class:"chart-item",key:t},[Object(y["createElementVNode"])("div",{class:"chart-content",onClick:function(t){return o(e)}},["line"===e?(Object(y["openBlock"])(),Object(y["createBlock"])(n,{key:0,size:"24"})):"bar"===e?(Object(y["openBlock"])(),Object(y["createBlock"])(l,{key:1,size:"24"})):"pie"===e?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:2,size:"24"})):"horizontalBar"===e?(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:3,size:"24"})):"area"===e?(Object(y["openBlock"])(),Object(y["createBlock"])(i,{key:4,size:"24"})):"ring"===e?(Object(y["openBlock"])(),Object(y["createBlock"])(u,{key:5,size:"24"})):"scatter"===e?(Object(y["openBlock"])(),Object(y["createBlock"])(d,{key:6,size:"24"})):Object(y["createCommentVNode"])("",!0)],8,Pd)])})),64))])}}});n("24bc");const qd=pn()(Hd,[["__scopeId","data-v-3870b42e"]]);var Ud=qd,Gd=function(e){return Object(y["pushScopeId"])("data-v-144fbd05"),e=e(),Object(y["popScopeId"])(),e},Xd={class:"table-generator"},Yd={class:"title"},Zd={class:"lef"},Wd=["onMouseenter"],Jd={key:1,class:"custom"},Qd={class:"row"},Kd=Gd((function(){return Object(y["createElementVNode"])("div",{class:"label",style:{flex:"1"}},"行数:",-1)})),$d={class:"row"},es=Gd((function(){return Object(y["createElementVNode"])("div",{class:"label",style:{flex:"1"}},"列数:",-1)})),ts={class:"btns"},ns=Object(y["createTextVNode"])("取消"),cs=Object(y["createTextVNode"])("确认"),os=Object(y["defineComponent"])({__name:"TableGenerator",emits:["insert","close"],setup:function(e,t){var n=t.emit,c=Object(y["ref"])([]),o=Object(y["ref"])(3),l=Object(y["ref"])(3),a=Object(y["ref"])(!1),r=function(){if(c.value.length){var e=Object(Oe["a"])(c.value,2),t=e[0],o=e[1];n("insert",{row:t,col:o})}},i=function(){return o.value<1||o.value>20||l.value<1||l.value>20?Se["a"].warning("行数/列数必须在0~20之间!"):(n("insert",{row:o.value,col:l.value}),void(a.value=!1))},u=function(){n("close"),a.value=!1};return function(e,t){var n=Object(y["resolveComponent"])("InputNumber"),d=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Xd,[Object(y["createElementVNode"])("div",Yd,[Object(y["createElementVNode"])("div",Zd,"表格 "+Object(y["toDisplayString"])(c.value.length?"".concat(c.value[0]," x ").concat(c.value[1]):""),1),Object(y["createElementVNode"])("div",{class:"right",onClick:t[0]||(t[0]=function(e){return a.value=!a.value})},Object(y["toDisplayString"])(a.value?"返回":"自定义"),1)]),a.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Jd,[Object(y["createElementVNode"])("div",Qd,[Kd,Object(y["createVNode"])(n,{min:1,max:20,value:o.value,"onUpdate:value":t[3]||(t[3]=function(e){return o.value=e}),style:{flex:"3"}},null,8,["value"])]),Object(y["createElementVNode"])("div",$d,[es,Object(y["createVNode"])(n,{min:1,max:20,value:l.value,"onUpdate:value":t[4]||(t[4]=function(e){return l.value=e}),style:{flex:"3"}},null,8,["value"])]),Object(y["createElementVNode"])("div",ts,[Object(y["createVNode"])(d,{class:"btn",onClick:t[5]||(t[5]=function(e){return u()})},{default:Object(y["withCtx"])((function(){return[ns]})),_:1}),Object(y["createVNode"])(d,{class:"btn",type:"primary",onClick:t[6]||(t[6]=function(e){return i()})},{default:Object(y["withCtx"])((function(){return[cs]})),_:1})])])):(Object(y["openBlock"])(),Object(y["createElementBlock"])("table",{key:0,onMouseleave:t[1]||(t[1]=function(e){return c.value=[]}),onClick:t[2]||(t[2]=function(e){return r()})},[Object(y["createElementVNode"])("tbody",null,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(10,(function(e){return Object(y["createElementVNode"])("tr",{key:e},[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(10,(function(t){return Object(y["createElementVNode"])("td",{onMouseenter:function(n){return c.value=[e,t]},key:t},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["cell",{active:c.value.length&&e<=c.value[0]&&t<=c.value[1]}])},null,2)],40,Wd)})),64))])})),64))])],32))])}}});n("307a");const ls=pn()(os,[["__scopeId","data-v-144fbd05"]]);var as=ls,rs={class:"media-input"},is={class:"tabs"},us=["onClick"],ds={class:"btns"},ss=Object(y["createTextVNode"])("取消"),fs=Object(y["createTextVNode"])("确认"),bs={class:"btns"},ps=Object(y["createTextVNode"])("取消"),Os=Object(y["createTextVNode"])("确认"),ms=Object(y["defineComponent"])({__name:"MediaInput",emits:["insertVideo","insertAudio","close"],setup:function(e,t){var n=t.emit,c=Object(y["ref"])("video"),o=Object(y["ref"])("https://mazwai.com/videvo_files/video/free/2019-01/small_watermarked/181004_04_Dolphins-Whale_06_preview.webm"),l=Object(y["ref"])("https://freesound.org/data/previews/614/614107_11861866-lq.mp3"),a=[{key:"video",label:"视频"},{key:"audio",label:"音频"}],r=function(){if(!o.value)return Se["a"].error("请先输入正确的视频地址");n("insertVideo",o.value)},i=function(){if(!l.value)return Se["a"].error("请先输入正确的音频地址");n("insertAudio",l.value)};return function(e,t){var u=Object(y["resolveComponent"])("Input"),d=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",rs,[Object(y["createElementVNode"])("div",is,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(a,(function(e){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["tab",{active:c.value===e.key}]),key:e.key,onClick:function(t){return c.value=e.key}},Object(y["toDisplayString"])(e.label),11,us)})),64))]),"video"===c.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[Object(y["createVNode"])(u,{value:o.value,"onUpdate:value":t[0]||(t[0]=function(e){return o.value=e}),placeholder:"请输入视频地址,e.g. https://xxx.mp4"},null,8,["value"]),Object(y["createElementVNode"])("div",ds,[Object(y["createVNode"])(d,{onClick:t[1]||(t[1]=function(e){return n("close")}),style:{"margin-right":"10px"}},{default:Object(y["withCtx"])((function(){return[ss]})),_:1}),Object(y["createVNode"])(d,{type:"primary",onClick:t[2]||(t[2]=function(e){return r()})},{default:Object(y["withCtx"])((function(){return[fs]})),_:1})])],64)):Object(y["createCommentVNode"])("",!0),"audio"===c.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:1},[Object(y["createVNode"])(u,{value:l.value,"onUpdate:value":t[3]||(t[3]=function(e){return l.value=e}),placeholder:"请输入音频地址,e.g. https://xxx.mp3"},null,8,["value"]),Object(y["createElementVNode"])("div",bs,[Object(y["createVNode"])(d,{onClick:t[4]||(t[4]=function(e){return n("close")}),style:{"margin-right":"10px"}},{default:Object(y["withCtx"])((function(){return[ps]})),_:1}),Object(y["createVNode"])(d,{type:"primary",onClick:t[5]||(t[5]=function(e){return i()})},{default:Object(y["withCtx"])((function(){return[Os]})),_:1})])],64)):Object(y["createCommentVNode"])("",!0)])}}});n("4675");const vs=pn()(ms,[["__scopeId","data-v-b9437110"]]);var js=vs,hs=n("e5ca");hs["a"].SUB_SUP_SCALE=.5;var ys=[{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"}],gs=[{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"}]}],xs=["width","height"],ks=["transform"],Cs=["d"],Ns=Object(y["defineComponent"])({__name:"FormulaContent",props:{latex:{type:String,required:!0},width:{type:Number,required:!0},height:{type:Number,required:!0}},setup:function(e){var t=e,n=Object(y["ref"])({x:0,y:0,w:0,h:0}),c=Object(y["ref"])("");Object(y["watch"])((function(){return t.latex}),(function(){var e=new hs["b"](t.latex);c.value=e.pathd({}),n.value=e.box({})}),{immediate:!0});var o=Object(y["computed"])((function(){var e=n.value.w+32,c=n.value.h+32;return e>t.width||c>t.height?e/c>t.width/t.height?t.width/e:t.height/c:1}));return function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{class:"formula-content",overflow:"visible",width:n.value.w+32,height:n.value.h+32,stroke:"#000","stroke-width":"1",fill:"none","stroke-linecap":"round","stroke-linejoin":"round"},[Object(y["createElementVNode"])("g",{transform:"scale(".concat(Object(y["unref"])(o),", ").concat(Object(y["unref"])(o),") translate(0,0) matrix(1,0,0,1,0,0)"),"transform-origin":"0 50%"},[Object(y["createElementVNode"])("path",{d:c.value},null,8,Cs)],8,ks)],8,xs)}}});n("e9df");const ws=pn()(Ns,[["__scopeId","data-v-1c41d9fe"]]);var Es=ws,Vs=["innerHTML"],Is=Object(y["defineComponent"])({__name:"SymbolContent",props:{latex:{type:String,required:!0}},setup:function(e){var t=e,n=Object(y["computed"])((function(){var e=new hs["b"](t.latex);return e.svg({SCALE_X:10,SCALE_Y:10})}));return function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"symbol-content",innerHTML:Object(y["unref"])(n)},null,8,Vs)}}});const Bs=Is;var Ss=Bs,Ls={class:"latex-editor"},_s={class:"container"},Ts={class:"left"},Ms={class:"input-area"},Ds={class:"preview"},zs={key:0,class:"placeholder"},Fs={key:1,class:"preview-content"},As={class:"right"},Rs={class:"tabs"},Ps=["onClick"],Hs={class:"content"},qs={key:0,class:"symbol"},Us={class:"symbol-tabs"},Gs=["onClick"],Xs={class:"symbol-pool"},Ys=["onClick"],Zs={key:1,class:"formula"},Ws={class:"formula-title"},Js=["onClick"],Qs={class:"footer"},Ks=Object(y["createTextVNode"])("取消"),$s=Object(y["createTextVNode"])("确定"),ef=Object(y["defineComponent"])({__name:"index",props:{value:{type:String,default:""}},emits:["update","close"],setup:function(e,t){var n=t.emit,c=e,o=[{label:"常用符号",value:"symbol"},{label:"预置公式",value:"formula"}],l=ys,a=gs,r=Object(y["ref"])(""),i=Object(y["ref"])("symbol"),u=Object(y["ref"])(),d=Object(y["ref"])(gs[0].type),s=Object(y["computed"])((function(){var e=gs.find((function(e){return e.type===d.value}));return(null===e||void 0===e?void 0:e.children)||[]}));Object(y["onMounted"])((function(){c.value&&(r.value=c.value)}));var f=function(){if(!r.value)return Se["a"].error("公式不能为空");var e=new hs["b"](r.value),t=e.pathd({}),c=e.box({});n("update",{latex:r.value,path:t,w:c.w+32,h:c.h+32})},b=function(e){u.value&&(u.value.focus(),document.execCommand("insertText",!1,e))};return function(e,t){var c=Object(y["resolveComponent"])("TextArea"),p=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Ls,[Object(y["createElementVNode"])("div",_s,[Object(y["createElementVNode"])("div",Ts,[Object(y["createElementVNode"])("div",Ms,[Object(y["createVNode"])(c,{value:r.value,"onUpdate:value":t[0]||(t[0]=function(e){return r.value=e}),placeholder:"输入 LaTeX 公式",ref_key:"textAreaRef",ref:u},null,8,["value"])]),Object(y["createElementVNode"])("div",Ds,[r.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Fs,[Object(y["createVNode"])(Es,{width:518,height:138,latex:r.value},null,8,["latex"])])):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",zs,"公式预览"))])]),Object(y["createElementVNode"])("div",As,[Object(y["createElementVNode"])("div",Rs,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(o,(function(e){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["tab",{active:e.value===i.value}]),key:e.value,onClick:function(t){return i.value=e.value}},Object(y["toDisplayString"])(e.label),11,Ps)})),64))]),Object(y["createElementVNode"])("div",Hs,["symbol"===i.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",qs,[Object(y["createElementVNode"])("div",Us,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(a),(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["symbol-tab",{active:d.value===e.type}]),key:e.type,onClick:function(t){return d.value=e.type}},Object(y["toDisplayString"])(e.label),11,Gs)})),128))]),Object(y["createElementVNode"])("div",Xs,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(s),(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"symbol-item",key:e.latex,onClick:function(t){return b(e.latex)}},[Object(y["createVNode"])(Ss,{latex:e.latex},null,8,["latex"])],8,Ys)})),128))])])):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Zs,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(l),(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"formula-item",key:e.label},[Object(y["createElementVNode"])("div",Ws,Object(y["toDisplayString"])(e.label),1),Object(y["createElementVNode"])("div",{class:"formula-item-content",onClick:function(t){return r.value=e.latex}},[Object(y["createVNode"])(Es,{width:236,height:60,latex:e.latex},null,8,["latex"])],8,Js)])})),128))]))])])]),Object(y["createElementVNode"])("div",Qs,[Object(y["createVNode"])(p,{class:"btn",onClick:t[1]||(t[1]=function(e){return n("close")})},{default:Object(y["withCtx"])((function(){return[Ks]})),_:1}),Object(y["createVNode"])(p,{class:"btn",type:"primary",onClick:t[2]||(t[2]=function(e){return f()})},{default:Object(y["withCtx"])((function(){return[$s]})),_:1})])])}}});n("1933");const tf=pn()(ef,[["__scopeId","data-v-2d73bf28"]]);var nf=tf,cf={class:"canvas-tool"},of={class:"left-handler"},lf={class:"add-element-handler"},af={class:"right-handler"},rf={class:"viewport-size-preset"},uf=["onClick"],df={class:"text"},sf=Object(y["defineComponent"])({__name:"index",setup:function(e){var t=ie(),n=Object(g["c"])(t),c=n.creatingElement,o=Object(g["c"])(xe()),l=o.canUndo,a=o.canRedo,r=lt(),i=r.redo,u=r.undo,d=gt(),s=d.scaleCanvas,f=d.setCanvasScalePercentage,b=d.resetCanvas,p=d.canvasScalePercentage,O=[200,150,100,80,50],m=Object(y["ref"])(!1),v=function(e){f(e),m.value=!1},j=at(),h=j.createImageElement,x=j.createChartElement,k=j.createTableElement,C=j.createLatexElement,N=j.createVideoElement,w=j.createAudioElement,E=function(e){var t=e[0];t&&et(t).then((function(e){return h(e)}))},V=Object(y["ref"])(!1),I=Object(y["ref"])(!1),B=Object(y["ref"])(!1),S=Object(y["ref"])(!1),L=Object(y["ref"])(!1),_=Object(y["ref"])(!1),T=function(){t.setCreatingElement({type:"text"})},M=function(e){t.setCreatingElement({type:"shape",data:e}),V.value=!1},D=function(e){t.setCreatingElement({type:"line",data:e}),I.value=!1};return function(e,t){var n=Object(y["resolveComponent"])("IconBack"),o=Object(y["resolveComponent"])("Tooltip"),r=Object(y["resolveComponent"])("IconNext"),d=Object(y["resolveComponent"])("IconFontSize"),f=Object(y["resolveComponent"])("IconPicture"),j=Object(y["resolveComponent"])("FileInput"),h=Object(y["resolveComponent"])("IconGraphicDesign"),g=Object(y["resolveComponent"])("Popover"),z=Object(y["resolveComponent"])("IconConnection"),F=Object(y["resolveComponent"])("IconChartProportion"),A=Object(y["resolveComponent"])("IconInsertTable"),R=Object(y["resolveComponent"])("IconFormula"),P=Object(y["resolveComponent"])("IconVideoTwo"),H=Object(y["resolveComponent"])("IconMinus"),q=Object(y["resolveComponent"])("IconPlus"),U=Object(y["resolveComponent"])("IconFullScreen"),G=Object(y["resolveComponent"])("Modal");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",cf,[Object(y["createElementVNode"])("div",of,[Object(y["createVNode"])(o,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"撤销"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n,{class:Object(y["normalizeClass"])(["handler-item",{disable:!Object(y["unref"])(l)}]),onClick:t[0]||(t[0]=function(e){return Object(y["unref"])(u)()})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(o,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"重做"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{class:Object(y["normalizeClass"])(["handler-item",{disable:!Object(y["unref"])(a)}]),onClick:t[1]||(t[1]=function(e){return Object(y["unref"])(i)()})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"])]),Object(y["createElementVNode"])("div",lf,[Object(y["createVNode"])(o,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入文字"},{default:Object(y["withCtx"])((function(){var e;return[Object(y["createVNode"])(d,{class:Object(y["normalizeClass"])(["handler-item",{active:"text"===(null===(e=Object(y["unref"])(c))||void 0===e?void 0:e.type)}]),onClick:t[2]||(t[2]=function(e){return T()})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(j,{onChange:t[3]||(t[3]=function(e){return E(e)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入图片"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(g,{trigger:"click",visible:V.value,"onUpdate:visible":t[5]||(t[5]=function(e){return V.value=e})},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Id,{onSelect:t[4]||(t[4]=function(e){return M(e)})})]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入形状"},{default:Object(y["withCtx"])((function(){var e;return[Object(y["createVNode"])(h,{class:Object(y["normalizeClass"])(["handler-item",{active:"shape"===(null===(e=Object(y["unref"])(c))||void 0===e?void 0:e.type)}])},null,8,["class"])]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(y["createVNode"])(g,{trigger:"click",visible:I.value,"onUpdate:visible":t[7]||(t[7]=function(e){return I.value=e})},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Ad,{onSelect:t[6]||(t[6]=function(e){return D(e)})})]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入线条"},{default:Object(y["withCtx"])((function(){var e;return[Object(y["createVNode"])(z,{class:Object(y["normalizeClass"])(["handler-item",{active:"line"===(null===(e=Object(y["unref"])(c))||void 0===e?void 0:e.type)}])},null,8,["class"])]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(y["createVNode"])(g,{trigger:"click",visible:B.value,"onUpdate:visible":t[9]||(t[9]=function(e){return B.value=e})},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Ud,{onSelect:t[8]||(t[8]=function(e){Object(y["unref"])(x)(e),B.value=!1})})]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入图表"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(F,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(y["createVNode"])(g,{trigger:"click",visible:S.value,"onUpdate:visible":t[12]||(t[12]=function(e){return S.value=e})},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(as,{onClose:t[10]||(t[10]=function(e){return S.value=!1}),onInsert:t[11]||(t[11]=function(e){var t=e.row,n=e.col;Object(y["unref"])(k)(t,n),S.value=!1})})]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入表格"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(A,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(y["createVNode"])(o,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入公式"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(R,{class:"handler-item",onClick:t[13]||(t[13]=function(e){return _.value=!0})})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(g,{trigger:"click",visible:L.value,"onUpdate:visible":t[17]||(t[17]=function(e){return L.value=e})},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(js,{onClose:t[14]||(t[14]=function(e){return L.value=!1}),onInsertVideo:t[15]||(t[15]=function(e){Object(y["unref"])(N)(e),L.value=!1}),onInsertAudio:t[16]||(t[16]=function(e){Object(y["unref"])(w)(e),L.value=!1})})]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入音视频"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(P,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"])]),Object(y["createElementVNode"])("div",af,[Object(y["createVNode"])(H,{class:"handler-item viewport-size",onClick:t[18]||(t[18]=function(e){return Object(y["unref"])(s)("-")})}),Object(y["createVNode"])(g,{trigger:"click",visible:m.value,"onUpdate:visible":t[19]||(t[19]=function(e){return m.value=e})},{content:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",rf,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(O,(function(e){return Object(y["createElementVNode"])("div",{class:"preset-item",key:e,onClick:function(t){return v(e)}},Object(y["toDisplayString"])(e)+"%",9,uf)})),64))])]})),default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",df,Object(y["toDisplayString"])(Object(y["unref"])(p)),1)]})),_:1},8,["visible"]),Object(y["createVNode"])(q,{class:"handler-item viewport-size",onClick:t[20]||(t[20]=function(e){return Object(y["unref"])(s)("+")})}),Object(y["createVNode"])(o,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"适应屏幕"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(U,{class:"handler-item viewport-size-adaptation",onClick:t[21]||(t[21]=function(e){return Object(y["unref"])(b)()})})]})),_:1},8,["mouseEnterDelay"])]),Object(y["createVNode"])(G,{visible:_.value,"onUpdate:visible":t[24]||(t[24]=function(e){return _.value=e}),footer:null,centered:"",width:880,destroyOnClose:""},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(nf,{onClose:t[22]||(t[22]=function(e){return _.value=!1}),onUpdate:t[23]||(t[23]=function(e){Object(y["unref"])(C)(e),_.value=!1})})]})),_:1},8,["visible"])])}}});n("9ff2");const ff=pn()(sf,[["__scopeId","data-v-5d4eff54"]]);var bf=ff,pf=function(){var e=Object(g["c"])(le()),t=e.slides,n=Object(y["ref"])(null),c=Object(y["ref"])(50),o=function e(){t.value.length>c.value?n.value=setTimeout((function(){c.value=c.value+20,e()}),600):c.value=9999};return Object(y["onMounted"])(o),Object(y["onUnmounted"])((function(){n.value&&clearTimeout(n.value)})),{slidesLoadLimit:c}},Of=n("b76a"),mf=n.n(Of),vf={class:"layout-pool"},jf=["onClick"],hf=Object(y["defineComponent"])({__name:"LayoutPool",emits:["select"],setup:function(e,t){var n=t.emit,c=Object(g["c"])(le()),o=c.layouts,l=function(e){n("select",e)};return function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",vf,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(o),(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"layout-item",key:e.id,onClick:function(t){return l(e)}},[Object(y["createVNode"])(nd,{class:"thumbnail",slide:e,size:180},null,8,["slide"])],8,jf)})),128))])}}});n("3328");const yf=pn()(hf,[["__scopeId","data-v-cc6b7dca"]]);var gf=yf,xf={class:"add-slide"},kf=Object(y["createTextVNode"])("添加幻灯片"),Cf={class:"select-btn"},Nf=["onMousedown"],wf=Object(y["defineComponent"])({__name:"index",setup:function(e){var t=ie(),n=le(),c=ke(),o=Object(g["c"])(t),l=o.selectedSlidesIndex,a=o.thumbnailsFocus,r=Object(g["c"])(n),i=r.slides,u=r.slideIndex,d=Object(g["c"])(c),s=d.ctrlKeyState,f=d.shiftKeyState,b=pf(),p=b.slidesLoadLimit,O=Object(y["computed"])((function(){return[].concat(Object(K["a"])(l.value),[u.value])})),m=Object(y["ref"])(!1),v=ut(),j=v.copySlide,h=v.pasteSlide,x=v.createSlide,k=v.createSlideByTemplate,C=v.copyAndPasteSlide,N=v.deleteSlide,w=v.cutSlide,E=v.selectAllSlide,V=function(e){t.setActiveElementIdList([]),u.value!==e&&n.updateSlideIndex(e)},I=function(e,n){var c=O.value.length>1;if(!c||!O.value.includes(n)||0===e.button)if(s.value)if(u.value===n){if(!c)return;var o=O.value.filter((function(e){return e!==n}));t.updateSelectedSlidesIndex(o),V(O.value[0])}else if(O.value.includes(n)){var l=O.value.filter((function(e){return e!==n}));t.updateSelectedSlidesIndex(l)}else{var a=[].concat(Object(K["a"])(O.value),[n]);t.updateSelectedSlidesIndex(a),V(n)}else if(f.value){if(u.value===n&&!c)return;var r=Math.min.apply(Math,Object(K["a"])(O.value)),i=n;n=99}])},Object(y["toDisplayString"])(Object(y["unref"])(Ne)(n+1,2)),3),Object(y["createVNode"])(nd,{class:"thumbnail",slide:t,size:120,visible:n1&&void 0!==arguments[1]?arguments[1]:0,n=a.value,c=O(),l=c.originClipRange,i=c.originWidth,u=c.originHeight,d=c.originLeft,s=c.originTop;if(t){var f,m=u/i,v=0,j=100;if(m>t){var h=(1-t/m)/2*100;f=[[v,h],[j,j-h]]}else{var y=(1-m/t)/2*100;f=[[y,v],[j-y,j]]}o.updateElement({id:r.value,props:{clip:Object(S["a"])(Object(S["a"])({},n.clip),{},{shape:e,range:f}),left:d+i*(f[0][0]/100),top:s+u*(f[0][1]/100),width:i*(f[1][0]-f[0][0])/100,height:u*(f[1][1]-f[0][1])/100}})}else o.updateElement({id:r.value,props:{clip:Object(S["a"])(Object(S["a"])({},n.clip),{},{shape:e,range:l})}});p(),b()},v=function(e){var t=e[0];t&&(et(t).then((function(e){var t={src:e};o.updateElement({id:r.value,props:t})})),b())},j=function(){var e=a.value;if(e.clip){var t=O(),n=t.originWidth,c=t.originHeight,l=t.originLeft,i=t.originTop;o.updateElement({id:r.value,props:{left:l,top:i,width:n,height:c}})}o.removeElementProps({id:r.value,propName:["clip","outline","flip","shadow","filters"]}),b()},h=function(){var e=a.value,t=Object(S["a"])(Object(S["a"])({},u.value.background),{},{type:"image",image:e.src,imageSize:"cover"});o.updateSlide({background:t}),b()};return function(e,c){var o=Object(y["resolveComponent"])("IconTailoring"),l=Object(y["resolveComponent"])("Button"),a=Object(y["resolveComponent"])("ButtonGroup"),r=Object(y["resolveComponent"])("IconDown"),i=Object(y["resolveComponent"])("Popover"),u=Object(y["resolveComponent"])("Divider"),f=Object(y["resolveComponent"])("IconTransform"),b=Object(y["resolveComponent"])("FileInput"),O=Object(y["resolveComponent"])("IconUndo"),g=Object(y["resolveComponent"])("IconTheme");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",op,[Object(y["createElementVNode"])("div",{class:"origin-image",style:Object(y["normalizeStyle"])({backgroundImage:"url(".concat(Object(y["unref"])(d).src,")")})},null,4),Object(y["createVNode"])(Xb),Object(y["createVNode"])(a,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{style:{flex:"5"},onClick:c[0]||(c[0]=function(e){return p()})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{class:"btn-icon"}),lp]})),_:1}),Object(y["createVNode"])(i,{trigger:"click",visible:s.value,"onUpdate:visible":c[1]||(c[1]=function(e){return s.value=e})},{content:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",ap,[rp,Object(y["createElementVNode"])("div",ip,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(t),(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"shape-clip-item",key:t,onClick:function(e){return m(t)}},[Object(y["createElementVNode"])("div",{class:"shape",style:Object(y["normalizeStyle"])({clipPath:e.style})},null,4)],8,up)})),128))]),(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(n,(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:e.label},[e.label?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",dp,"按"+Object(y["toDisplayString"])(e.label)+":",1)):Object(y["createCommentVNode"])("",!0),Object(y["createVNode"])(a,{class:"row"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.children,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(l,{style:{flex:"1"},key:e.key,onClick:function(t){return m("rect",e.ratio)}},{default:Object(y["withCtx"])((function(){return[Object(y["createTextVNode"])(Object(y["toDisplayString"])(e.key),1)]})),_:2},1032,["onClick"])})),128))]})),_:2},1024)],64)})),64))])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{class:"no-padding",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r)]})),_:1})]})),_:1},8,["visible"])]})),_:1}),Object(y["createVNode"])(u),Object(y["createVNode"])(np),Object(y["createVNode"])(u),Object(y["createVNode"])(tb),Object(y["createVNode"])(u),Object(y["createVNode"])(vb),Object(y["createVNode"])(u),Object(y["createVNode"])(b,{onChange:c[2]||(c[2]=function(e){return v(e)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{class:"full-width-btn"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{class:"btn-icon"}),sp]})),_:1})]})),_:1}),Object(y["createVNode"])(l,{class:"full-width-btn",onClick:c[3]||(c[3]=function(e){return j()})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(O,{class:"btn-icon"}),fp]})),_:1}),Object(y["createVNode"])(l,{class:"full-width-btn",onClick:c[4]||(c[4]=function(e){return h()})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g,{class:"btn-icon"}),bp]})),_:1})])}}});n("911d");const Op=pn()(pp,[["__scopeId","data-v-7da35bec"]]);var mp=Op,vp=function(e){return Object(y["pushScopeId"])("data-v-02998580"),e=e(),Object(y["popScopeId"])(),e},jp={class:"shape-style-panel"},hp={class:"row"},yp=Object(y["createTextVNode"])("纯色填充"),gp=Object(y["createTextVNode"])("渐变填充"),xp=vp((function(){return Object(y["createElementVNode"])("div",{style:{flex:"1"}},null,-1)})),kp=Object(y["createTextVNode"])("线性渐变"),Cp=Object(y["createTextVNode"])("径向渐变"),Np={class:"row"},wp=vp((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"起点颜色:",-1)})),Ep={class:"row"},Vp=vp((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"终点颜色:",-1)})),Ip={key:0,class:"row"},Bp=vp((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"渐变角度:",-1)})),Sp=Object(y["createTextVNode"])("+"),Lp=Object(y["createTextVNode"])("-"),_p=Object(y["defineComponent"])({__name:"ShapeStylePanel",setup:function(e){var t=ie(),n=le(),c=Object(g["c"])(t),o=c.handleElement,l=c.handleElementId,a=c.richTextAttrs,r=c.availableFonts,i=o,u=Object(y["ref"])("#000"),d=Object(y["ref"])({type:"linear",rotate:0,color:["#fff","#fff"]}),s=Object(y["ref"])("fill"),f=Object(y["ref"])("middle");Object(y["watch"])(o,(function(){var e,t;o.value&&"shape"===o.value.type&&(u.value=o.value.fill||"#fff",d.value=o.value.gradient||{type:"linear",rotate:0,color:[u.value,"#fff"]},s.value=o.value.gradient?"gradient":"fill",f.value=(null===(e=o.value)||void 0===e||null===(t=e.text)||void 0===t?void 0:t.align)||"middle")}),{deep:!0,immediate:!0});var b=lt(),p=b.addHistorySnapshot,O=function(e){n.updateElement({id:l.value,props:e}),p()},m=function(e){"fill"===e?(n.removeElementProps({id:l.value,propName:"gradient"}),p()):O({gradient:d.value})},v=function(e){if(d.value){var t=Object(S["a"])(Object(S["a"])({},d.value),e);O({gradient:t})}},j=function(e){O({fill:e})},h=function(e){var t=o.value,n={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"},c=t.text||n;O({text:Object(S["a"])(Object(S["a"])({},c),{},{align:e})})},x=["12px","14px","16px","18px","20px","22px","24px","28px","32px","36px","40px","44px","48px","54px","60px","66px","72px","76px","80px","88px","96px","104px","112px","120px"],k=function(e,t){Ko.emit(so.RICH_TEXT_COMMAND,{action:{command:e,value:t}})};return function(e,t){var n,c=Object(y["resolveComponent"])("SelectOption"),o=Object(y["resolveComponent"])("Select"),l=Object(y["resolveComponent"])("ColorPicker"),b=Object(y["resolveComponent"])("Popover"),p=Object(y["resolveComponent"])("Slider"),O=Object(y["resolveComponent"])("Divider"),g=Object(y["resolveComponent"])("IconFontSize"),C=Object(y["resolveComponent"])("SelectOptGroup"),N=Object(y["resolveComponent"])("IconAddText"),w=Object(y["resolveComponent"])("InputGroup"),E=Object(y["resolveComponent"])("IconText"),V=Object(y["resolveComponent"])("Button"),I=Object(y["resolveComponent"])("Tooltip"),S=Object(y["resolveComponent"])("IconHighLight"),L=Object(y["resolveComponent"])("ButtonGroup"),_=Object(y["resolveComponent"])("IconTextBold"),T=Object(y["resolveComponent"])("CheckboxButton"),M=Object(y["resolveComponent"])("IconTextItalic"),D=Object(y["resolveComponent"])("IconTextUnderline"),z=Object(y["resolveComponent"])("IconFormat"),F=Object(y["resolveComponent"])("CheckboxButtonGroup"),A=Object(y["resolveComponent"])("IconAlignTextLeft"),R=Object(y["resolveComponent"])("RadioButton"),P=Object(y["resolveComponent"])("IconAlignTextCenter"),H=Object(y["resolveComponent"])("IconAlignTextRight"),q=Object(y["resolveComponent"])("RadioGroup"),U=Object(y["resolveComponent"])("IconAlignTextTopOne"),G=Object(y["resolveComponent"])("IconAlignTextMiddleOne"),X=Object(y["resolveComponent"])("IconAlignTextBottomOne");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",jp,[Object(y["createElementVNode"])("div",hp,[Object(y["createVNode"])(o,{style:{flex:"10"},value:s.value,onChange:t[0]||(t[0]=function(e){return m(e)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(c,{value:"fill"},{default:Object(y["withCtx"])((function(){return[yp]})),_:1}),Object(y["createVNode"])(c,{value:"gradient"},{default:Object(y["withCtx"])((function(){return[gp]})),_:1})]})),_:1},8,["value"]),xp,"fill"===s.value?(Object(y["openBlock"])(),Object(y["createBlock"])(b,{key:0,trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{modelValue:u.value,"onUpdate:modelValue":t[1]||(t[1]=function(e){return j(e)})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:u.value,style:{flex:"10"}},null,8,["color"])]})),_:1})):(Object(y["openBlock"])(),Object(y["createBlock"])(o,{key:1,style:{flex:"10"},value:d.value.type,onChange:t[2]||(t[2]=function(e){return v({type:e})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(c,{value:"linear"},{default:Object(y["withCtx"])((function(){return[kp]})),_:1}),Object(y["createVNode"])(c,{value:"radial"},{default:Object(y["withCtx"])((function(){return[Cp]})),_:1})]})),_:1},8,["value"]))]),"gradient"===s.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[Object(y["createElementVNode"])("div",Np,[wp,Object(y["createVNode"])(b,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{modelValue:d.value.color[0],"onUpdate:modelValue":t[3]||(t[3]=function(e){return v({color:[e,d.value.color[1]]})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:d.value.color[0],style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",Ep,[Vp,Object(y["createVNode"])(b,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{modelValue:d.value.color[1],"onUpdate:modelValue":t[4]||(t[4]=function(e){return v({color:[d.value.color[0],e]})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:d.value.color[1],style:{flex:"3"}},null,8,["color"])]})),_:1})]),"linear"===d.value.type?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Ip,[Bp,Object(y["createVNode"])(p,{class:"slider",min:0,max:360,step:15,value:d.value.rotate,onChange:t[5]||(t[5]=function(e){return v({rotate:e})})},null,8,["value"])])):Object(y["createCommentVNode"])("",!0)],64)):Object(y["createCommentVNode"])("",!0),Object(y["createVNode"])(Xb),Object(y["createVNode"])(O),null!==(n=Object(y["unref"])(i).text)&&void 0!==n&&n.content?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:1},[Object(y["createVNode"])(w,{compact:"",class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{style:{flex:"3"},value:Object(y["unref"])(a).fontname,onChange:t[6]||(t[6]=function(e){return k("fontname",e)})},{suffixIcon:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g)]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(C,{label:"系统字体"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(r),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(c,{key:e.value,value:e.value},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",{style:Object(y["normalizeStyle"])({fontFamily:e.value})},Object(y["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(y["createVNode"])(C,{label:"在线字体"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(B),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(c,{key:e.value,value:e.value},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",null,Object(y["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"]),Object(y["createVNode"])(o,{style:{flex:"2"},value:Object(y["unref"])(a).fontsize,onChange:t[7]||(t[7]=function(e){return k("fontsize",e)})},{suffixIcon:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(N)]})),default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(x,(function(e){return Object(y["createVNode"])(c,{key:e,value:e},{default:Object(y["withCtx"])((function(){return[Object(y["createTextVNode"])(Object(y["toDisplayString"])(e),1)]})),_:2},1032,["value"])})),64))]})),_:1},8,["value"])]})),_:1}),Object(y["createVNode"])(L,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{modelValue:Object(y["unref"])(a).color,"onUpdate:modelValue":t[8]||(t[8]=function(e){return k("color",e)})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(V,{class:"text-color-btn",style:{flex:"3"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(E),Object(y["createElementVNode"])("div",{class:"text-color-block",style:Object(y["normalizeStyle"])({backgroundColor:Object(y["unref"])(a).color})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(b,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{modelValue:Object(y["unref"])(a).backcolor,"onUpdate:modelValue":t[9]||(t[9]=function(e){return k("backcolor",e)})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字高亮"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(V,{class:"text-color-btn",style:{flex:"3"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(S),Object(y["createElementVNode"])("div",{class:"text-color-block",style:Object(y["normalizeStyle"])({backgroundColor:Object(y["unref"])(a).backcolor})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"增大字号"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(V,{class:"font-size-btn",style:{flex:"2"},onClick:t[10]||(t[10]=function(e){return k("fontsize-add")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g),Sp]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"减小字号"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(V,{class:"font-size-btn",style:{flex:"2"},onClick:t[11]||(t[11]=function(e){return k("fontsize-reduce")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g),Lp]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(F,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"加粗"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(T,{style:{flex:"1"},checked:Object(y["unref"])(a).bold,onClick:t[12]||(t[12]=function(e){return k("bold")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(_)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"斜体"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(T,{style:{flex:"1"},checked:Object(y["unref"])(a).em,onClick:t[13]||(t[13]=function(e){return k("em")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(M)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下划线"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(T,{style:{flex:"1"},checked:Object(y["unref"])(a).underline,onClick:t[14]||(t[14]=function(e){return k("underline")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(D)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"清除格式"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(T,{style:{flex:"1"},onClick:t[15]||(t[15]=function(e){return k("clear")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(z)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(q,{class:"row","button-style":"solid",value:Object(y["unref"])(a).align,onChange:t[16]||(t[16]=function(e){return k("align",e.target.value)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(R,{value:"left",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(A)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(R,{value:"center",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(P)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(R,{value:"right",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(H)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"]),Object(y["createVNode"])(q,{class:"row","button-style":"solid",value:f.value,onChange:t[17]||(t[17]=function(e){return h(e.target.value)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"顶对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(R,{value:"top",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(U)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(R,{value:"middle",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(G)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"底对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(R,{value:"bottom",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(X)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"]),Object(y["createVNode"])(O)],64)):Object(y["createCommentVNode"])("",!0),Object(y["createVNode"])(tb),Object(y["createVNode"])(O),Object(y["createVNode"])(vb),Object(y["createVNode"])(O),Object(y["createVNode"])(Mf)])}}});n("de23");const Tp=pn()(_p,[["__scopeId","data-v-02998580"]]);var Mp=Tp,Dp=function(e){return Object(y["pushScopeId"])("data-v-938968a2"),e=e(),Object(y["popScopeId"])(),e},zp={class:"line-style-panel"},Fp={class:"row"},Ap=Dp((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"线条样式:",-1)})),Rp=Object(y["createTextVNode"])("实线"),Pp=Object(y["createTextVNode"])("虚线"),Hp={class:"row"},qp=Dp((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"线条颜色:",-1)})),Up={class:"row"},Gp=Dp((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"线条宽度:",-1)})),Xp={class:"row"},Yp=Dp((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"起点样式:",-1)})),Zp=Object(y["createTextVNode"])("无"),Wp=Object(y["createTextVNode"])("箭头"),Jp=Object(y["createTextVNode"])("圆点"),Qp={class:"row"},Kp=Dp((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"终点样式:",-1)})),$p=Object(y["createTextVNode"])("无"),eO=Object(y["createTextVNode"])("箭头"),tO=Object(y["createTextVNode"])("圆点"),nO=Object(y["defineComponent"])({__name:"LineStylePanel",setup:function(e){var t=le(),n=Object(g["c"])(ie()),c=n.handleElement,o=c,l=lt(),a=l.addHistorySnapshot,r=function(e){c.value&&(t.updateElement({id:c.value.id,props:e}),a())};return function(e,t){var n=Object(y["resolveComponent"])("SelectOption"),c=Object(y["resolveComponent"])("Select"),l=Object(y["resolveComponent"])("ColorPicker"),a=Object(y["resolveComponent"])("Popover"),i=Object(y["resolveComponent"])("InputNumber"),u=Object(y["resolveComponent"])("Divider");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",zp,[Object(y["createElementVNode"])("div",Fp,[Ap,Object(y["createVNode"])(c,{style:{flex:"3"},value:Object(y["unref"])(o).style,onChange:t[0]||(t[0]=function(e){return r({style:e})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n,{value:"solid"},{default:Object(y["withCtx"])((function(){return[Rp]})),_:1}),Object(y["createVNode"])(n,{value:"dashed"},{default:Object(y["withCtx"])((function(){return[Pp]})),_:1})]})),_:1},8,["value"])]),Object(y["createElementVNode"])("div",Hp,[qp,Object(y["createVNode"])(a,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{modelValue:Object(y["unref"])(o).color,"onUpdate:modelValue":t[1]||(t[1]=function(e){return r({color:e})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:Object(y["unref"])(o).color,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",Up,[Gp,Object(y["createVNode"])(i,{value:Object(y["unref"])(o).width,onChange:t[2]||(t[2]=function(e){return r({width:e})}),style:{flex:"3"}},null,8,["value"])]),Object(y["createElementVNode"])("div",Xp,[Yp,Object(y["createVNode"])(c,{style:{flex:"3"},value:Object(y["unref"])(o).points[0],onChange:t[3]||(t[3]=function(e){return r({points:[e,Object(y["unref"])(o).points[1]]})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n,{value:""},{default:Object(y["withCtx"])((function(){return[Zp]})),_:1}),Object(y["createVNode"])(n,{value:"arrow"},{default:Object(y["withCtx"])((function(){return[Wp]})),_:1}),Object(y["createVNode"])(n,{value:"dot"},{default:Object(y["withCtx"])((function(){return[Jp]})),_:1})]})),_:1},8,["value"])]),Object(y["createElementVNode"])("div",Qp,[Kp,Object(y["createVNode"])(c,{style:{flex:"3"},value:Object(y["unref"])(o).points[1],onChange:t[4]||(t[4]=function(e){return r({points:[Object(y["unref"])(o).points[0],e]})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n,{value:""},{default:Object(y["withCtx"])((function(){return[$p]})),_:1}),Object(y["createVNode"])(n,{value:"arrow"},{default:Object(y["withCtx"])((function(){return[eO]})),_:1}),Object(y["createVNode"])(n,{value:"dot"},{default:Object(y["withCtx"])((function(){return[tO]})),_:1})]})),_:1},8,["value"])]),Object(y["createVNode"])(u),Object(y["createVNode"])(vb)])}}});n("d806");const cO=pn()(nO,[["__scopeId","data-v-938968a2"]]);var oO=cO,lO={class:"chart-data-editor"},aO={class:"editor-content"},rO={class:"range-box"},iO=["id","onFocus","onPaste"],uO={class:"btns"},dO={class:"left"},sO=Object(y["createTextVNode"])("清空"),fO={class:"right"},bO=Object(y["createTextVNode"])("取消"),pO=Object(y["createTextVNode"])("确认"),OO=Object(y["defineComponent"])({__name:"ChartDataEditor",props:{data:{type:Object,required:!0}},emits:["save","close"],setup:function(e,t){var n=t.emit,c=e,o=100,l=32,a=Object(y["ref"])([0,0]),r=Object(y["ref"])({width:0,height:0}),i=Object(y["ref"])(null),u=Object(y["computed"])((function(){var e=a.value[0]*o,t=a.value[1]*l;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"}}]})),d=Object(y["computed"])((function(){var e=a.value[0]*o,t=a.value[1]*l;return{left:e+"px",top:t+"px"}})),s=function(){var e=[],t=c.data,n=t.labels,o=t.legends,l=t.series,r=n.length,i=l.length;e.push([""].concat(Object(K["a"])(o)));for(var u=0;u.5*o&&(d+=o-d%o),s%l>.5*l&&(s+=l-s%l);var f=Math.round(s/l),b=Math.round(d/o);f<3&&(f=3),b<2&&(b=2),a.value=[b,f],r.value={width:0,height:0}}}};return function(e,t){var n=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",lO,[Object(y["createElementVNode"])("div",aO,[Object(y["createElementVNode"])("div",rO,[Object(y["createElementVNode"])("div",{class:"temp-range",style:Object(y["normalizeStyle"])({width:r.value.width+"px",height:r.value.height+"px"})},null,4),(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(u),(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["range-line",e.type]),key:e.type,style:Object(y["normalizeStyle"])(e.style)},null,6)})),128)),Object(y["createElementVNode"])("div",{class:"resizable",style:Object(y["normalizeStyle"])(Object(y["unref"])(d)),onMousedown:t[0]||(t[0]=Object(y["withModifiers"])((function(e){return j(e)}),["stop"]))},null,36)]),Object(y["createElementVNode"])("table",null,[Object(y["createElementVNode"])("tbody",null,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(31,(function(e){return Object(y["createElementVNode"])("tr",{key:e},[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(7,(function(t){return Object(y["createElementVNode"])("td",{key:t,class:Object(y["normalizeClass"])({head:1===t&&e<=a.value[1]||1===e&&t<=a.value[0]})},[Object(y["createElementVNode"])("input",{class:Object(y["normalizeClass"])(["item",{selected:e<=a.value[1]&&t<=a.value[0]}]),id:"cell-".concat(e-1,"-").concat(t-1),autocomplete:"off",onFocus:function(n){return i.value=[e-1,t-1]},onPaste:function(n){return m(n,e-1,t-1)}},null,42,iO)],2)})),64))])})),64))])])]),Object(y["createElementVNode"])("div",uO,[Object(y["createElementVNode"])("div",dO,[Object(y["createVNode"])(n,{class:"btn",onClick:t[1]||(t[1]=function(e){return O()})},{default:Object(y["withCtx"])((function(){return[sO]})),_:1})]),Object(y["createElementVNode"])("div",fO,[Object(y["createVNode"])(n,{class:"btn",onClick:t[2]||(t[2]=function(e){return v()})},{default:Object(y["withCtx"])((function(){return[bO]})),_:1}),Object(y["createVNode"])(n,{type:"primary",class:"btn",onClick:t[3]||(t[3]=function(e){return p()}),style:{"margin-left":"10px"}},{default:Object(y["withCtx"])((function(){return[pO]})),_:1})])])])}}});n("ca17");const mO=pn()(OO,[["__scopeId","data-v-53b32689"]]);var vO=mO,jO=function(e){return Object(y["pushScopeId"])("data-v-769d6876"),e=e(),Object(y["popScopeId"])(),e},hO={class:"chart-style-panel"},yO=Object(y["createTextVNode"])(" 编辑图表数据 "),gO={class:"row"},xO=Object(y["createTextVNode"])("面积图样式"),kO=Object(y["createTextVNode"])("散点图样式"),CO={class:"row"},NO=Object(y["createTextVNode"])("使用平滑曲线"),wO={key:1,class:"row"},EO=Object(y["createTextVNode"])("条形图样式"),VO=Object(y["createTextVNode"])("堆叠样式"),IO={key:2,class:"row"},BO=Object(y["createTextVNode"])("环形图样式"),SO={class:"row"},LO=jO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"图例:",-1)})),_O=Object(y["createTextVNode"])("不显示"),TO=Object(y["createTextVNode"])("显示在上方"),MO=Object(y["createTextVNode"])("显示在下方"),DO={class:"row"},zO=jO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"背景填充:",-1)})),FO={class:"row"},AO=jO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"网格颜色:",-1)})),RO={style:{flex:"2"}},PO={class:"color-btn-wrap",style:{flex:"3"}},HO=["onClick"],qO={class:"preset-themes"},UO=["onClick","onMouseenter"],GO=Object(y["createTextVNode"])("推荐主题"),XO=Object(y["createTextVNode"])(" 添加主题色 "),YO=Object(y["defineComponent"])({__name:"index",setup:function(e){var t=[["#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"]],n=ie(),c=le(),o=Object(g["c"])(n),l=o.handleElement,a=o.handleElementId,r=Object(g["c"])(c),i=r.theme,u=l,d=Object(y["ref"])(!1),s=Object(y["ref"])(!1),f=Object(y["ref"])([-1,-1]),b=lt(),p=b.addHistorySnapshot,O=Object(y["ref"])("#000"),m=Object(y["ref"])([]),v=Object(y["ref"])(""),j=Object(y["ref"])(""),h=Object(y["ref"])(!0),x=Object(y["ref"])(!0),k=Object(y["ref"])(!1),C=Object(y["ref"])(!1),N=Object(y["ref"])(!1),w=Object(y["ref"])(!1);Object(y["watch"])(l,(function(){if(l.value&&"chart"===l.value.type){if(O.value=l.value.fill||"#fff",l.value.options){var e=l.value.options,t=e.lineSmooth,n=e.showLine,c=e.showArea,o=e.horizontalBars,a=e.donut,r=e.stackBars;void 0!==t&&(h.value=t),void 0!==n&&(x.value=n),void 0!==c&&(k.value=c),void 0!==o&&(C.value=o),void 0!==a&&(N.value=a),void 0!==r&&(w.value=r)}m.value=l.value.themeColor,v.value=l.value.gridColor||"#333",j.value=l.value.legend||""}}),{deep:!0,immediate:!0});var E=function(e){c.updateElement({id:a.value,props:e}),p()},V=function(e){d.value=!1,E({data:e})},I=function(e){E({fill:e})},B=function(e){var t=l.value,n=Object(S["a"])(Object(S["a"])({},t.options),e);E({options:n})},L=function(e,t){var n={themeColor:m.value.map((function(n,c){return c===t?e:n}))};E(n)},_=function(){var e={themeColor:[].concat(Object(K["a"])(m.value),[i.value.themeColor])};E(e)},T=function(e,t){var n=e.slice(0,t+1);E({themeColor:n}),s.value=!1},M=function(e){var t={themeColor:m.value.filter((function(t,n){return n!==e}))};E(t)},D=function(e){E({gridColor:e})},z=function(e){E({legend:e})},F=function(){return d.value=!0};return Ko.on(so.OPEN_CHART_DATA_EDITOR,F),Object(y["onUnmounted"])((function(){Ko.off(so.OPEN_CHART_DATA_EDITOR,F)})),function(e,n){var c=Object(y["resolveComponent"])("IconEdit"),o=Object(y["resolveComponent"])("Button"),l=Object(y["resolveComponent"])("Divider"),a=Object(y["resolveComponent"])("Checkbox"),r=Object(y["resolveComponent"])("SelectOption"),i=Object(y["resolveComponent"])("Select"),b=Object(y["resolveComponent"])("ColorPicker"),p=Object(y["resolveComponent"])("Popover"),g=Object(y["resolveComponent"])("IconCloseSmall"),E=Object(y["resolveComponent"])("Tooltip"),S=Object(y["resolveComponent"])("IconPlus"),F=Object(y["resolveComponent"])("ButtonGroup"),A=Object(y["resolveComponent"])("Modal");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",hO,[Object(y["createVNode"])(o,{class:"full-width-btn",onClick:n[0]||(n[0]=function(e){return d.value=!0})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(c,{class:"btn-icon"}),yO]})),_:1}),Object(y["createVNode"])(l),"line"===Object(y["unref"])(u).chartType?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[Object(y["createElementVNode"])("div",gO,[Object(y["createVNode"])(a,{onChange:n[1]||(n[1]=function(e){return B({showArea:e.target.checked})}),checked:k.value,style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[xO]})),_:1},8,["checked"]),Object(y["createVNode"])(a,{onChange:n[2]||(n[2]=function(e){return B({showLine:!e.target.checked})}),checked:!x.value,style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[kO]})),_:1},8,["checked"])]),Object(y["createElementVNode"])("div",CO,[Object(y["createVNode"])(a,{onChange:n[3]||(n[3]=function(e){return B({lineSmooth:e.target.checked})}),checked:h.value},{default:Object(y["withCtx"])((function(){return[NO]})),_:1},8,["checked"])])],64)):Object(y["createCommentVNode"])("",!0),"bar"===Object(y["unref"])(u).chartType?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",wO,[Object(y["createVNode"])(a,{onChange:n[4]||(n[4]=function(e){return B({horizontalBars:e.target.checked})}),checked:C.value},{default:Object(y["withCtx"])((function(){return[EO]})),_:1},8,["checked"]),Object(y["createVNode"])(a,{onChange:n[5]||(n[5]=function(e){return B({stackBars:e.target.checked})}),checked:w.value},{default:Object(y["withCtx"])((function(){return[VO]})),_:1},8,["checked"])])):Object(y["createCommentVNode"])("",!0),"pie"===Object(y["unref"])(u).chartType?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",IO,[Object(y["createVNode"])(a,{onChange:n[6]||(n[6]=function(e){return B({donut:e.target.checked})}),checked:N.value},{default:Object(y["withCtx"])((function(){return[BO]})),_:1},8,["checked"])])):Object(y["createCommentVNode"])("",!0),Object(y["createVNode"])(l),Object(y["createElementVNode"])("div",SO,[LO,Object(y["createVNode"])(i,{style:{flex:"3"},value:j.value,onChange:n[7]||(n[7]=function(e){return z(e)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{value:""},{default:Object(y["withCtx"])((function(){return[_O]})),_:1}),Object(y["createVNode"])(r,{value:"top"},{default:Object(y["withCtx"])((function(){return[TO]})),_:1}),Object(y["createVNode"])(r,{value:"bottom"},{default:Object(y["withCtx"])((function(){return[MO]})),_:1})]})),_:1},8,["value"])]),Object(y["createVNode"])(l),Object(y["createElementVNode"])("div",DO,[zO,Object(y["createVNode"])(p,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b,{modelValue:O.value,"onUpdate:modelValue":n[8]||(n[8]=function(e){return I(e)})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:O.value,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",FO,[AO,Object(y["createVNode"])(p,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b,{modelValue:v.value,"onUpdate:modelValue":n[9]||(n[9]=function(e){return D(e)})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:v.value,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createVNode"])(l),(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(m.value,(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"row",key:t},[Object(y["createElementVNode"])("div",RO,Object(y["toDisplayString"])(0===t?"主题配色:":""),1),Object(y["createVNode"])(p,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b,{modelValue:e,"onUpdate:modelValue":function(e){return L(e,t)}},null,8,["modelValue","onUpdate:modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",PO,[Object(y["createVNode"])(Af,{color:e,style:{width:"100%"}},null,8,["color"]),Object(y["createVNode"])(E,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除"},{default:Object(y["withCtx"])((function(){return[0!==t?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:"delete-color-btn",onClick:Object(y["withModifiers"])((function(e){return M(t)}),["stop"])},[Object(y["createVNode"])(g)],8,HO)):Object(y["createCommentVNode"])("",!0)]})),_:2},1032,["mouseEnterDelay"])])]})),_:2},1024)])})),128)),Object(y["createVNode"])(F,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(p,{trigger:"click",visible:s.value,"onUpdate:visible":n[11]||(n[11]=function(e){return s.value=e})},{content:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",qO,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(t,(function(e,t){return Object(y["createElementVNode"])("div",{class:"preset-theme",key:t},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e,(function(c,o){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["preset-theme-color",{select:f.value[0]===t&&o<=f.value[1]}]),key:c,style:Object(y["normalizeStyle"])({backgroundColor:c}),onClick:function(t){return T(e,o)},onMouseenter:function(e){return f.value=[t,o]},onMouseleave:n[10]||(n[10]=function(e){return f.value=[-1,-1]})},null,46,UO)})),128))])})),64))])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{class:"no-padding",style:{flex:"2"}},{default:Object(y["withCtx"])((function(){return[GO]})),_:1})]})),_:1},8,["visible"]),Object(y["createVNode"])(o,{class:"no-padding",disabled:m.value.length>=10,style:{flex:"3"},onClick:n[12]||(n[12]=function(e){return _()})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(S,{class:"btn-icon"}),XO]})),_:1},8,["disabled"])]})),_:1}),Object(y["createVNode"])(l),Object(y["createVNode"])(tb),Object(y["createVNode"])(A,{visible:d.value,"onUpdate:visible":n[15]||(n[15]=function(e){return d.value=e}),footer:null,centered:"",closable:!1,width:648,destroyOnClose:""},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(vO,{data:Object(y["unref"])(u).data,onClose:n[13]||(n[13]=function(e){return d.value=!1}),onSave:n[14]||(n[14]=function(e){return V(e)})},null,8,["data"])]})),_:1},8,["visible"])])}}});n("d074");const ZO=pn()(YO,[["__scopeId","data-v-769d6876"]]);var WO=ZO,JO=function(e){return Object(y["pushScopeId"])("data-v-7e28e1d8"),e=e(),Object(y["popScopeId"])(),e},QO={class:"table-style-panel"},KO={class:"row"},$O=JO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"行数:",-1)})),em={class:"set-count",style:{flex:"3"}},tm={class:"count-text"},nm={class:"row"},cm=JO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"列数:",-1)})),om={class:"set-count",style:{flex:"3"}},lm={class:"count-text"},am={class:"row theme-switch"},rm=JO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"启用主题表格:",-1)})),im={class:"switch-wrapper",style:{flex:"3"}},um={class:"row"},dm=Object(y["createTextVNode"])("标题行"),sm=Object(y["createTextVNode"])("汇总行"),fm={class:"row"},bm=Object(y["createTextVNode"])("第一列"),pm=Object(y["createTextVNode"])("最后一列"),Om={class:"row"},mm=JO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"主题颜色:",-1)})),vm=Object(y["defineComponent"])({__name:"TableStylePanel",setup:function(e){var t=le(),n=Object(g["c"])(ie()),c=n.handleElement,o=n.handleElementId,l=n.selectedTableCells,a=n.availableFonts,r=Object(y["computed"])((function(){return t.theme.themeColor})),i=["12px","14px","16px","18px","20px","22px","24px","28px","32px"],u=Object(y["ref"])({bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"#000",fontsize:"12px",fontname:"微软雅黑",align:"left"}),d=Object(y["ref"])(),s=Object(y["ref"])(!1),f=Object(y["ref"])(0),b=Object(y["ref"])(0),p=Object(y["ref"])(0),O=Object(y["ref"])(0);Object(y["watch"])(c,(function(){c.value&&"table"===c.value.type&&(d.value=c.value.theme,s.value=!!d.value,f.value=c.value.data.length,b.value=c.value.data[0].length,p.value=c.value.data.length,O.value=c.value.data[0].length)}),{deep:!0,immediate:!0});var m=lt(),v=m.addHistorySnapshot,j=function(){if(c.value&&"table"===c.value.type){var e=0,t=0;if(l.value.length){var n=l.value[0];e=+n.split("_")[0],t=+n.split("_")[1]}var o=c.value.data[e][t].style;u.value=o?{bold:!!o.bold,em:!!o.em,underline:!!o.underline,strikethrough:!!o.strikethrough,color:o.color||"#000",backcolor:o.backcolor||"#000",fontsize:o.fontsize||"12px",fontname:o.fontname||"微软雅黑",align:o.align||"left"}:{bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"#000",fontsize:"12px",fontname:"微软雅黑",align:"left"}}};Object(y["onMounted"])((function(){l.value.length&&j()})),Object(y["watch"])(l,j);var h=function(e){t.updateElement({id:o.value,props:e}),v()},k=function(e){for(var t=c.value,n=JSON.parse(JSON.stringify(t.data)),o=0;on){var o=new Array(b.value).fill({id:Object(x["b"])(10),colspan:1,rowspan:1,text:""}),l=new Array(e-n).fill(o),a=JSON.parse(JSON.stringify(t.data));a.push.apply(a,Object(K["a"])(l)),h({data:a})}else{var r=t.data.slice(0,e);h({data:r})}},E=function(e){var t=c.value,n=t.data[0].length,o=t.data,l=t.colWidths.map((function(e){return e*t.width}));if(e>n){var a;o=o.map((function(t){var c=new Array(e-n).fill({id:Object(x["b"])(10),colspan:1,rowspan:1,text:""});return t.push.apply(t,Object(K["a"])(c)),t}));var r=new Array(e-n).fill(100);(a=l).push.apply(a,Object(K["a"])(r))}else o=o.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:o,colWidths:u};h(d)};return function(e,t){var n=Object(y["resolveComponent"])("IconFontSize"),c=Object(y["resolveComponent"])("SelectOption"),o=Object(y["resolveComponent"])("SelectOptGroup"),l=Object(y["resolveComponent"])("Select"),r=Object(y["resolveComponent"])("IconAddText"),p=Object(y["resolveComponent"])("InputGroup"),O=Object(y["resolveComponent"])("ColorPicker"),m=Object(y["resolveComponent"])("IconText"),v=Object(y["resolveComponent"])("Button"),j=Object(y["resolveComponent"])("Tooltip"),h=Object(y["resolveComponent"])("Popover"),g=Object(y["resolveComponent"])("IconFill"),x=Object(y["resolveComponent"])("ButtonGroup"),V=Object(y["resolveComponent"])("IconTextBold"),I=Object(y["resolveComponent"])("CheckboxButton"),S=Object(y["resolveComponent"])("IconTextItalic"),L=Object(y["resolveComponent"])("IconTextUnderline"),_=Object(y["resolveComponent"])("IconStrikethrough"),T=Object(y["resolveComponent"])("CheckboxButtonGroup"),M=Object(y["resolveComponent"])("IconAlignTextLeft"),D=Object(y["resolveComponent"])("RadioButton"),z=Object(y["resolveComponent"])("IconAlignTextCenter"),F=Object(y["resolveComponent"])("IconAlignTextRight"),A=Object(y["resolveComponent"])("RadioGroup"),R=Object(y["resolveComponent"])("Divider"),P=Object(y["resolveComponent"])("IconMinus"),H=Object(y["resolveComponent"])("IconPlus"),q=Object(y["resolveComponent"])("Switch"),U=Object(y["resolveComponent"])("Checkbox");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",QO,[Object(y["createVNode"])(p,{compact:"",class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{style:{flex:"3"},value:u.value.fontname,onChange:t[0]||(t[0]=function(e){return k({fontname:e})})},{suffixIcon:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n)]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{label:"系统字体"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(a),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(c,{key:e.value,value:e.value},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",{style:Object(y["normalizeStyle"])({fontFamily:e.value})},Object(y["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(y["createVNode"])(o,{label:"在线字体"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(B),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(c,{key:e.value,value:e.value},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",null,Object(y["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"]),Object(y["createVNode"])(l,{style:{flex:"2"},value:u.value.fontsize,onChange:t[1]||(t[1]=function(e){return k({fontsize:e})})},{suffixIcon:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r)]})),default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(i,(function(e){return Object(y["createVNode"])(c,{key:e,value:e},{default:Object(y["withCtx"])((function(){return[Object(y["createTextVNode"])(Object(y["toDisplayString"])(e),1)]})),_:2},1032,["value"])})),64))]})),_:1},8,["value"])]})),_:1}),Object(y["createVNode"])(x,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(h,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(O,{modelValue:u.value.color,"onUpdate:modelValue":t[2]||(t[2]=function(e){return k({color:e})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(j,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(v,{class:"text-color-btn",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(m),Object(y["createElementVNode"])("div",{class:"text-color-block",style:Object(y["normalizeStyle"])({backgroundColor:u.value.color})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(h,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(O,{modelValue:u.value.backcolor,"onUpdate:modelValue":t[3]||(t[3]=function(e){return k({backcolor:e})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(j,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"单元格填充"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(v,{class:"text-color-btn",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g),Object(y["createElementVNode"])("div",{class:"text-color-block",style:Object(y["normalizeStyle"])({backgroundColor:u.value.backcolor})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1})]})),_:1}),Object(y["createVNode"])(T,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(j,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"加粗"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(I,{style:{flex:"1"},checked:u.value.bold,onClick:t[4]||(t[4]=function(e){return k({bold:!u.value.bold})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(V)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(j,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"斜体"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(I,{style:{flex:"1"},checked:u.value.em,onClick:t[5]||(t[5]=function(e){return k({em:!u.value.em})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(S)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(j,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下划线"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(I,{style:{flex:"1"},checked:u.value.underline,onClick:t[6]||(t[6]=function(e){return k({underline:!u.value.underline})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(L)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(j,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除线"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(I,{style:{flex:"1"},checked:u.value.strikethrough,onClick:t[7]||(t[7]=function(e){return k({strikethrough:!u.value.strikethrough})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(_)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(A,{class:"row","button-style":"solid",value:u.value.align,onChange:t[8]||(t[8]=function(e){return k({align:e.target.value})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(j,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(D,{value:"left",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(M)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(j,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(D,{value:"center",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(z)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(j,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(D,{value:"right",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(F)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"]),Object(y["createVNode"])(R),Object(y["createVNode"])(tb,{fixed:!0}),Object(y["createVNode"])(R),Object(y["createElementVNode"])("div",KO,[$O,Object(y["createElementVNode"])("div",em,[Object(y["createVNode"])(v,{class:"btn",disabled:f.value<=1,onClick:t[9]||(t[9]=function(e){return w(f.value-1)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(P)]})),_:1},8,["disabled"]),Object(y["createElementVNode"])("div",tm,Object(y["toDisplayString"])(f.value),1),Object(y["createVNode"])(v,{class:"btn",disabled:f.value>=30,onClick:t[10]||(t[10]=function(e){return w(f.value+1)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(H)]})),_:1},8,["disabled"])])]),Object(y["createElementVNode"])("div",nm,[cm,Object(y["createElementVNode"])("div",om,[Object(y["createVNode"])(v,{class:"btn",disabled:b.value<=1,onClick:t[11]||(t[11]=function(e){return E(b.value-1)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(P)]})),_:1},8,["disabled"]),Object(y["createElementVNode"])("div",lm,Object(y["toDisplayString"])(b.value),1),Object(y["createVNode"])(v,{class:"btn",disabled:b.value>=30,onClick:t[12]||(t[12]=function(e){return E(b.value+1)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(H)]})),_:1},8,["disabled"])])]),Object(y["createVNode"])(R),Object(y["createElementVNode"])("div",am,[rm,Object(y["createElementVNode"])("div",im,[Object(y["createVNode"])(q,{checked:s.value,onChange:t[13]||(t[13]=function(e){return N(e)})},null,8,["checked"])])]),d.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[Object(y["createElementVNode"])("div",um,[Object(y["createVNode"])(U,{onChange:t[14]||(t[14]=function(e){return C({rowHeader:e.target.checked})}),checked:d.value.rowHeader,style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[dm]})),_:1},8,["checked"]),Object(y["createVNode"])(U,{onChange:t[15]||(t[15]=function(e){return C({rowFooter:e.target.checked})}),checked:d.value.rowFooter,style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[sm]})),_:1},8,["checked"])]),Object(y["createElementVNode"])("div",fm,[Object(y["createVNode"])(U,{onChange:t[16]||(t[16]=function(e){return C({colHeader:e.target.checked})}),checked:d.value.colHeader,style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[bm]})),_:1},8,["checked"]),Object(y["createVNode"])(U,{onChange:t[17]||(t[17]=function(e){return C({colFooter:e.target.checked})}),checked:d.value.colFooter,style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[pm]})),_:1},8,["checked"])]),Object(y["createElementVNode"])("div",Om,[mm,Object(y["createVNode"])(h,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(O,{modelValue:d.value.color,"onUpdate:modelValue":t[18]||(t[18]=function(e){return C({color:e})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:d.value.color,style:{flex:"3"}},null,8,["color"])]})),_:1})])],64)):Object(y["createCommentVNode"])("",!0)])}}});n("dcd4");const jm=pn()(vm,[["__scopeId","data-v-7e28e1d8"]]);var hm=jm,ym=function(e){return Object(y["pushScopeId"])("data-v-546adf8c"),e=e(),Object(y["popScopeId"])(),e},gm={class:"latex-style-panel"},xm={class:"row"},km=Object(y["createTextVNode"])("编辑 LaTeX"),Cm={class:"row"},Nm=ym((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"颜色:",-1)})),wm={class:"row"},Em=ym((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"粗细:",-1)})),Vm=Object(y["defineComponent"])({__name:"LatexStylePanel",setup:function(e){var t=le(),n=Object(g["c"])(ie()),c=n.handleElement,o=c,l=Object(y["ref"])(!1),a=lt(),r=a.addHistorySnapshot,i=function(e){c.value&&(t.updateElement({id:c.value.id,props:e}),r())},u=function(e){i({path:e.path,latex:e.latex,width:e.w,height:e.h,viewBox:[e.w,e.h]})},d=function(){return l.value=!0};return Ko.on(so.OPEN_LATEX_EDITOR,d),Object(y["onUnmounted"])((function(){Ko.off(so.OPEN_LATEX_EDITOR,d)})),function(e,t){var n=Object(y["resolveComponent"])("Button"),c=Object(y["resolveComponent"])("Divider"),a=Object(y["resolveComponent"])("ColorPicker"),r=Object(y["resolveComponent"])("Popover"),d=Object(y["resolveComponent"])("InputNumber"),s=Object(y["resolveComponent"])("Modal");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",gm,[Object(y["createElementVNode"])("div",xm,[Object(y["createVNode"])(n,{style:{flex:"1"},onClick:t[0]||(t[0]=function(e){return l.value=!0})},{default:Object(y["withCtx"])((function(){return[km]})),_:1})]),Object(y["createVNode"])(c),Object(y["createElementVNode"])("div",Cm,[Nm,Object(y["createVNode"])(r,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{modelValue:Object(y["unref"])(o).color,"onUpdate:modelValue":t[1]||(t[1]=function(e){return i({color:e})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:Object(y["unref"])(o).color,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",wm,[Em,Object(y["createVNode"])(d,{min:1,max:3,value:Object(y["unref"])(o).strokeWidth,onChange:t[2]||(t[2]=function(e){return i({strokeWidth:e})}),style:{flex:"3"}},null,8,["value"])]),Object(y["createVNode"])(s,{visible:l.value,"onUpdate:visible":t[5]||(t[5]=function(e){return l.value=e}),footer:null,centered:"",width:880,destroyOnClose:""},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(nf,{value:Object(y["unref"])(o).latex,onClose:t[3]||(t[3]=function(e){return l.value=!1}),onUpdate:t[4]||(t[4]=function(e){u(e),l.value=!1})},null,8,["value"])]})),_:1},8,["visible"])])}}});n("c041");const Im=pn()(Vm,[["__scopeId","data-v-546adf8c"]]);var Bm=Im,Sm=function(e){return Object(y["pushScopeId"])("data-v-ff7125dc"),e=e(),Object(y["popScopeId"])(),e},Lm={class:"video-style-panel"},_m=Sm((function(){return Object(y["createElementVNode"])("div",{class:"title"},"视频预览封面",-1)})),Tm={class:"background-image-wrapper"},Mm={class:"background-image"},Dm={class:"row"},zm=Object(y["createTextVNode"])("重置封面"),Fm=Object(y["defineComponent"])({__name:"VideoStylePanel",setup:function(e){var t=le(),n=Object(g["c"])(ie()),c=n.handleElement,o=c,l=lt(),a=l.addHistorySnapshot,r=function(e){c.value&&(t.updateElement({id:c.value.id,props:e}),a())},i=function(e){var t=e[0];t&&et(t).then((function(e){return r({poster:e})}))};return function(e,t){var n=Object(y["resolveComponent"])("IconPlus"),c=Object(y["resolveComponent"])("FileInput"),l=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Lm,[_m,Object(y["createElementVNode"])("div",Tm,[Object(y["createVNode"])(c,{onChange:t[0]||(t[0]=function(e){return i(e)})},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",Mm,[Object(y["createElementVNode"])("div",{class:"content",style:Object(y["normalizeStyle"])({backgroundImage:"url(".concat(Object(y["unref"])(o).poster,")")})},[Object(y["createVNode"])(n)],4)])]})),_:1})]),Object(y["createElementVNode"])("div",Dm,[Object(y["createVNode"])(l,{style:{flex:"1"},onClick:t[1]||(t[1]=function(e){return r({poster:""})})},{default:Object(y["withCtx"])((function(){return[zm]})),_:1})])])}}});n("a81a");const Am=pn()(Fm,[["__scopeId","data-v-ff7125dc"]]);var Rm=Am,Pm=function(e){return Object(y["pushScopeId"])("data-v-5d723d50"),e=e(),Object(y["popScopeId"])(),e},Hm={class:"audio-style-panel"},qm={class:"row"},Um=Pm((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"图标颜色:",-1)})),Gm={class:"row switch-row"},Xm=Pm((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"自动播放:",-1)})),Ym={class:"switch-wrapper",style:{flex:"3"}},Zm={class:"row switch-row"},Wm=Pm((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"循环播放:",-1)})),Jm={class:"switch-wrapper",style:{flex:"3"}},Qm=Object(y["defineComponent"])({__name:"AudioStylePanel",setup:function(e){var t=le(),n=Object(g["c"])(ie()),c=n.handleElement,o=c,l=lt(),a=l.addHistorySnapshot,r=function(e){c.value&&(t.updateElement({id:c.value.id,props:e}),a())};return function(e,t){var n=Object(y["resolveComponent"])("ColorPicker"),c=Object(y["resolveComponent"])("Popover"),l=Object(y["resolveComponent"])("Switch");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Hm,[Object(y["createElementVNode"])("div",qm,[Um,Object(y["createVNode"])(c,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n,{modelValue:Object(y["unref"])(o).color,"onUpdate:modelValue":t[0]||(t[0]=function(e){return r({color:e})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:Object(y["unref"])(o).color,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",Gm,[Xm,Object(y["createElementVNode"])("div",Ym,[Object(y["createVNode"])(l,{checked:Object(y["unref"])(o).autoplay,onChange:t[1]||(t[1]=function(e){return r({autoplay:e})})},null,8,["checked"])])]),Object(y["createElementVNode"])("div",Zm,[Wm,Object(y["createElementVNode"])("div",Jm,[Object(y["createVNode"])(l,{checked:Object(y["unref"])(o).loop,onChange:t[2]||(t[2]=function(e){return r({loop:e})})},null,8,["checked"])])])])}}});n("795e");const Km=pn()(Qm,[["__scopeId","data-v-5d723d50"]]);var $m=Km,ev=function(e){return Object(y["pushScopeId"])("data-v-71469855"),e=e(),Object(y["popScopeId"])(),e},tv={class:"multi-style-panel"},nv={class:"row"},cv=ev((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"填充颜色:",-1)})),ov={class:"row"},lv=ev((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"边框样式:",-1)})),av=Object(y["createTextVNode"])("实线边框"),rv=Object(y["createTextVNode"])("虚线边框"),iv={class:"row"},uv=ev((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"边框颜色:",-1)})),dv={class:"row"},sv=ev((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"边框粗细:",-1)})),fv=Object(y["createTextVNode"])("+"),bv=Object(y["createTextVNode"])("-"),pv=Object(y["defineComponent"])({__name:"MultiStylePanel",setup:function(e){var t=le(),n=Object(g["c"])(ie()),c=n.richTextAttrs,o=n.availableFonts,l=n.activeElementList,a=lt(),r=a.addHistorySnapshot,i=function(e,n){t.updateElement({id:e,props:n}),r()},u=["12px","14px","16px","18px","20px","22px","24px","28px","32px","36px","40px","44px","48px","54px","60px","66px","72px","76px","80px","88px","96px","104px","112px","120px"],d=Object(y["ref"])("#fff"),s=Object(y["ref"])({width:0,color:"#fff",style:"solid"}),f=function(e){var t,n=Object(L["a"])(l.value);try{for(n.s();!(t=n.n()).done;){var c=t.value;if("text"!==c.type&&"shape"!==c.type&&"chart"!==c.type||i(c.id,{fill:e}),"table"===c.type){for(var o=JSON.parse(JSON.stringify(c.data)),a=0;a1){if(!r.value)return mv;var e=l.value.find((function(e){return e.id===r.value}));return e&&n[e.type]||null}return a.value&&n[a.value.type]||null}));return function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",vv,[(Object(y["openBlock"])(),Object(y["createBlock"])(Object(y["resolveDynamicComponent"])(Object(y["unref"])(i))))])}}});const hv=jv;var yv=hv,gv=function(e){return Object(y["pushScopeId"])("data-v-6bf6c951"),e=e(),Object(y["popScopeId"])(),e},xv={class:"element-positopn-panel"},kv=gv((function(){return Object(y["createElementVNode"])("div",{class:"title"},"层级:",-1)})),Cv=Object(y["createTextVNode"])(" 置于顶层"),Nv=Object(y["createTextVNode"])(" 置于底层"),wv=Object(y["createTextVNode"])(" 上移一层"),Ev=Object(y["createTextVNode"])(" 下移一层"),Vv=gv((function(){return Object(y["createElementVNode"])("div",{class:"title"},"对齐:",-1)})),Iv={class:"row"},Bv=gv((function(){return Object(y["createElementVNode"])("div",{style:{flex:"3"}},"位置:",-1)})),Sv=gv((function(){return Object(y["createElementVNode"])("div",{style:{flex:"1"}},null,-1)})),Lv=Object(y["createStaticVNode"])('
X
Y
',1),_v={class:"row"},Tv=gv((function(){return Object(y["createElementVNode"])("div",{style:{flex:"3"}},"大小:",-1)})),Mv={key:1,style:{flex:"1"}},Dv=Object(y["createStaticVNode"])('
',1),zv={class:"row"},Fv=gv((function(){return Object(y["createElementVNode"])("div",{style:{flex:"3"}},"旋转:",-1)})),Av=gv((function(){return Object(y["createElementVNode"])("div",{style:{flex:"1"}},null,-1)})),Rv=Object(y["defineComponent"])({__name:"ElementPositionPanel",setup:function(e){var t=le(),n=Object(g["c"])(ie()),c=n.handleElement,o=n.handleElementId,l=Object(y["ref"])(0),a=Object(y["ref"])(0),r=Object(y["ref"])(0),i=Object(y["ref"])(0),u=Object(y["ref"])(0),d=Object(y["ref"])(!1),s=Object(y["computed"])((function(){return c.value&&dc[c.value.type]||20}));Object(y["watch"])(c,(function(){c.value&&(l.value=Object(te["round"])(c.value.left,1),a.value=Object(te["round"])(c.value.top,1),d.value="fixedRatio"in c.value&&!!c.value.fixedRatio,"line"!==c.value.type&&(r.value=Object(te["round"])(c.value.width,1),i.value=Object(te["round"])(c.value.height,1),u.value="rotate"in c.value&&void 0!==c.value.rotate?Object(te["round"])(c.value.rotate,1):0))}),{deep:!0,immediate:!0});var f=mt(),b=f.orderElement,p=jc(),O=p.alignElementToCanvas,m=lt(),v=m.addHistorySnapshot,j=function(e){var n={left:e};t.updateElement({id:o.value,props:n}),v()},h=function(e){var n={top:e};t.updateElement({id:o.value,props:n}),v()},x=function(e){var n={width:e};t.updateElement({id:o.value,props:n}),v()},N=function(e){var n={height:e};t.updateElement({id:o.value,props:n}),v()},w=function(e){var n={rotate:e};t.updateElement({id:o.value,props:n}),v()},E=function(e){var n={fixedRatio:e};t.updateElement({id:o.value,props:n}),v()},V=function(e){var n=45*Math.floor(u.value/45);"+"===e?n+=45:"-"===e&&(n-=45),n<-180&&(n=-180),n>180&&(n=180);var c={rotate:n};t.updateElement({id:o.value,props:c}),v()};return function(e,t){var n=Object(y["resolveComponent"])("IconSendToBack"),o=Object(y["resolveComponent"])("Button"),f=Object(y["resolveComponent"])("IconBringToFrontOne"),p=Object(y["resolveComponent"])("ButtonGroup"),m=Object(y["resolveComponent"])("IconBringToFront"),v=Object(y["resolveComponent"])("IconSentToBack"),g=Object(y["resolveComponent"])("Divider"),I=Object(y["resolveComponent"])("IconAlignLeft"),B=Object(y["resolveComponent"])("Tooltip"),S=Object(y["resolveComponent"])("IconAlignVertically"),L=Object(y["resolveComponent"])("IconAlignRight"),_=Object(y["resolveComponent"])("IconAlignTop"),T=Object(y["resolveComponent"])("IconAlignHorizontally"),M=Object(y["resolveComponent"])("IconAlignBottom"),D=Object(y["resolveComponent"])("InputNumber"),z=Object(y["resolveComponent"])("IconLock"),F=Object(y["resolveComponent"])("IconUnlock"),A=Object(y["resolveComponent"])("IconRotate");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",xv,[kv,Object(y["createVNode"])(p,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{style:{flex:"1"},onClick:t[0]||(t[0]=function(e){return Object(y["unref"])(b)(Object(y["unref"])(c),Object(y["unref"])(k).TOP)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n,{class:"btn-icon"}),Cv]})),_:1}),Object(y["createVNode"])(o,{style:{flex:"1"},onClick:t[1]||(t[1]=function(e){return Object(y["unref"])(b)(Object(y["unref"])(c),Object(y["unref"])(k).BOTTOM)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{class:"btn-icon"}),Nv]})),_:1})]})),_:1}),Object(y["createVNode"])(p,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{style:{flex:"1"},onClick:t[2]||(t[2]=function(e){return Object(y["unref"])(b)(Object(y["unref"])(c),Object(y["unref"])(k).UP)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(m,{class:"btn-icon"}),wv]})),_:1}),Object(y["createVNode"])(o,{style:{flex:"1"},onClick:t[3]||(t[3]=function(e){return Object(y["unref"])(b)(Object(y["unref"])(c),Object(y["unref"])(k).DOWN)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(v,{class:"btn-icon"}),Ev]})),_:1})]})),_:1}),Object(y["createVNode"])(g),Vv,Object(y["createVNode"])(p,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(B,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{style:{flex:"1"},onClick:t[4]||(t[4]=function(e){return Object(y["unref"])(O)(Object(y["unref"])(C).LEFT)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(I)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(B,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"水平居中"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{style:{flex:"1"},onClick:t[5]||(t[5]=function(e){return Object(y["unref"])(O)(Object(y["unref"])(C).HORIZONTAL)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(S)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(B,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{style:{flex:"1"},onClick:t[6]||(t[6]=function(e){return Object(y["unref"])(O)(Object(y["unref"])(C).RIGHT)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(L)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(p,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(B,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{style:{flex:"1"},onClick:t[7]||(t[7]=function(e){return Object(y["unref"])(O)(Object(y["unref"])(C).TOP)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(_)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(B,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"垂直居中"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{style:{flex:"1"},onClick:t[8]||(t[8]=function(e){return Object(y["unref"])(O)(Object(y["unref"])(C).VERTICAL)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(T)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(B,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{style:{flex:"1"},onClick:t[9]||(t[9]=function(e){return Object(y["unref"])(O)(Object(y["unref"])(C).BOTTOM)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(M)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(g),Object(y["createElementVNode"])("div",Iv,[Bv,Object(y["createVNode"])(D,{step:5,value:l.value,onChange:t[10]||(t[10]=function(e){return j(e)}),style:{flex:"4"}},null,8,["value"]),Sv,Object(y["createVNode"])(D,{step:5,value:a.value,onChange:t[11]||(t[11]=function(e){return h(e)}),style:{flex:"4"}},null,8,["value"])]),Lv,"line"!==Object(y["unref"])(c).type?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[Object(y["createElementVNode"])("div",_v,[Tv,Object(y["createVNode"])(D,{min:Object(y["unref"])(s),max:1500,step:5,value:r.value,onChange:t[12]||(t[12]=function(e){return x(e)}),style:{flex:"4"}},null,8,["min","value"]),["image","shape","audio"].includes(Object(y["unref"])(c).type)?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[d.value?(Object(y["openBlock"])(),Object(y["createBlock"])(B,{key:0,mouseLeaveDelay:0,mouseEnterDelay:.5,title:"解除宽高比锁定"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(z,{style:{flex:"1"},class:"icon-btn",onClick:t[13]||(t[13]=function(e){return E(!1)})})]})),_:1},8,["mouseEnterDelay"])):(Object(y["openBlock"])(),Object(y["createBlock"])(B,{key:1,mouseLeaveDelay:0,mouseEnterDelay:.5,title:"宽高比锁定"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(F,{style:{flex:"1"},class:"icon-btn",onClick:t[14]||(t[14]=function(e){return E(!0)})})]})),_:1},8,["mouseEnterDelay"]))],64)):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Mv)),Object(y["createVNode"])(D,{min:Object(y["unref"])(s),max:800,step:5,disabled:"text"===Object(y["unref"])(c).type,value:i.value,onChange:t[15]||(t[15]=function(e){return N(e)}),style:{flex:"4"}},null,8,["min","disabled","value"])]),Dv],64)):Object(y["createCommentVNode"])("",!0),["line","video","audio"].includes(Object(y["unref"])(c).type)?Object(y["createCommentVNode"])("",!0):(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:1},[Object(y["createVNode"])(g),Object(y["createElementVNode"])("div",zv,[Fv,Object(y["createVNode"])(B,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"逆时针旋转"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(A,{class:"icon-btn",onClick:t[16]||(t[16]=function(e){return V("-")}),style:{flex:"2"}})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(B,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"顺时针旋转"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(A,{class:"icon-btn",onClick:t[17]||(t[17]=function(e){return V("+")}),style:Object(y["normalizeStyle"])({flex:2,transform:"rotateY(180deg)"})},null,8,["style"])]})),_:1},8,["mouseEnterDelay"]),Av,Object(y["createVNode"])(D,{min:-180,max:180,step:5,value:u.value,onChange:t[18]||(t[18]=function(e){return w(e)}),style:{flex:"4"}},null,8,["value"])])],64))])}}});n("1b4b");const Pv=pn()(Rv,[["__scopeId","data-v-6bf6c951"]]);var Hv=Pv,qv=1e3,Uv="click",Gv="animate__",Xv=[{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"}]}],Yv=[{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"}]}],Zv=[{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"}]}],Wv=function(e){return Object(y["pushScopeId"])("data-v-2f69234f"),e=e(),Object(y["popScopeId"])(),e},Jv={class:"element-animation-panel"},Qv={key:0,class:"element-animation"},Kv={class:"tabs"},$v=["onClick"],ej={class:"type-title"},tj={class:"pool-item-wrapper"},nj=["onMouseenter","onClick"],cj={key:0,class:"mask"},oj=Object(y["createTextVNode"])(" 添加动画 "),lj={key:1,class:"tip"},aj=Object(y["createTextVNode"])(" 选中画布中的元素添加动画"),rj={class:"sequence-content"},ij={class:"index"},uj={class:"text"},dj={class:"handler"},sj={key:0,class:"configs"},fj={class:"config-item"},bj=Wv((function(){return Object(y["createElementVNode"])("div",{style:{flex:"3"}},"持续时长:",-1)})),pj={class:"config-item"},Oj=Wv((function(){return Object(y["createElementVNode"])("div",{style:{flex:"3"}},"触发方式:",-1)})),mj=Object(y["createTextVNode"])("主动触发"),vj=Object(y["createTextVNode"])("与上一动画同时"),jj=Object(y["createTextVNode"])("上一动画之后"),hj={class:"config-item"},yj=Object(y["createTextVNode"])("更换动画"),gj=Object(y["defineComponent"])({__name:"ElementAnimationPanel",setup:function(e){var t,n={},c=Object(L["a"])(Xv);try{for(c.s();!(t=c.n()).done;){var o,l=t.value,a=Object(L["a"])(l.children);try{for(a.s();!(o=a.n()).done;){var r=o.value;n[r.value]=r.name}}catch(ee){a.e(ee)}finally{a.f()}}}catch(ee){c.e(ee)}finally{c.f()}var i,u=Object(L["a"])(Yv);try{for(u.s();!(i=u.n()).done;){var d,s=i.value,f=Object(L["a"])(s.children);try{for(f.s();!(d=f.n()).done;){var b=d.value;n[b.value]=b.name}}catch(ee){f.e(ee)}finally{f.f()}}}catch(ee){u.e(ee)}finally{u.f()}var p,O=Object(L["a"])(Zv);try{for(O.s();!(p=O.n()).done;){var m,v=p.value,j=Object(L["a"])(v.children);try{for(j.s();!(m=j.n()).done;){var h=m.value;n[h.value]=h.name}}catch(ee){j.e(ee)}finally{j.f()}}}catch(ee){O.e(ee)}finally{O.f()}var k=["in","out","attention"],C=le(),N=Object(g["c"])(ie()),w=N.handleElement,E=N.handleElementId,V=Object(g["c"])(C),I=V.currentSlide,B=V.formatedAnimations,_=V.currentSlideAnimations,T=[{key:"in",label:"入场"},{key:"out",label:"退场"},{key:"attention",label:"强调"}],M=Object(y["ref"])("in");Object(y["watch"])((function(){return E.value}),(function(){z.value=!1}));var D=Object(y["ref"])(""),z=Object(y["ref"])(!1),F=lt(),A=F.addHistorySnapshot,R=Object(y["computed"])((function(){for(var e=[],t=0;t5e3)){var n=_.value.map((function(n){return n.id===e?Object(S["a"])(Object(S["a"])({},n),{},{duration:t}):n}));C.updateSlide({animations:n}),A()}},X=function(e,t){var n=_.value.map((function(n){return n.id===e?Object(S["a"])(Object(S["a"])({},n),{},{trigger:t}):n}));C.updateSlide({animations:n}),A()},Y=function(e,t){var n=_.value.map((function(n){return n.id===Z.value?Object(S["a"])(Object(S["a"])({},n),{},{type:e,effect:t}):n}));C.updateSlide({animations:n}),z.value=!1,A();var c=_.value.find((function(e){return e.elId===E.value})),o=(null===c||void 0===c?void 0:c.duration)||qv;U(E.value,t,o)},Z=Object(y["ref"])(""),W=function(e,t){if(Z.value)Y(e,t);else{var n=JSON.parse(JSON.stringify(_.value));n.push({id:Object(x["b"])(10),elId:E.value,type:e,effect:t,duration:qv,trigger:Uv}),C.updateSlide({animations:n}),z.value=!1,A(),U(E.value,t,qv)}},J=Object(y["ref"])(!1),Q=function(e){e?setTimeout((function(){return J.value=!0}),600):J.value=!1},K=function(e){z.value=!0,Z.value=e,Q(!0)},$={in:Xv,out:Yv,attention:Zv};return function(e,t){var n=Object(y["resolveComponent"])("IconEffects"),c=Object(y["resolveComponent"])("Button"),o=Object(y["resolveComponent"])("Popover"),l=Object(y["resolveComponent"])("IconClick"),a=Object(y["resolveComponent"])("Divider"),r=Object(y["resolveComponent"])("IconPlayOne"),i=Object(y["resolveComponent"])("Tooltip"),u=Object(y["resolveComponent"])("IconCloseSmall"),d=Object(y["resolveComponent"])("InputNumber"),s=Object(y["resolveComponent"])("SelectOption"),f=Object(y["resolveComponent"])("Select");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Jv,[Object(y["unref"])(w)?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Qv,[Object(y["createVNode"])(o,{trigger:"click",visible:z.value,"onUpdate:visible":t[2]||(t[2]=function(e){return z.value=e}),onVisibleChange:t[3]||(t[3]=function(e){return Q(e)})},{content:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",Kv,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(T,(function(e){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["tab",e.key,{active:M.value===e.key}]),key:e.key,onClick:function(t){return M.value=e.key}},Object(y["toDisplayString"])(e.label),11,$v)})),64))]),(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(k,(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,[M.value===e?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["animation-pool",e]),key:e},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])($[e],(function(n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"pool-type",key:n.name},[Object(y["createElementVNode"])("div",ej,Object(y["toDisplayString"])(n.name)+":",1),Object(y["createElementVNode"])("div",tj,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(n.children,(function(n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"pool-item",key:n.name,onMouseenter:function(e){return D.value=n.value},onMouseleave:t[0]||(t[0]=function(e){return D.value=""}),onClick:function(t){return W(e,n.value)}},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["animation-box",["".concat(Object(y["unref"])(Gv),"animated"),"".concat(Object(y["unref"])(Gv),"fast"),D.value===n.value&&"".concat(Object(y["unref"])(Gv)).concat(n.value)]])},Object(y["toDisplayString"])(n.name),3)],40,nj)})),128))])])})),128)),J.value?Object(y["createCommentVNode"])("",!0):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",cj))],2)):Object(y["createCommentVNode"])("",!0)],64)})),64))]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(c,{class:"element-animation-btn",onClick:t[1]||(t[1]=function(e){return Z.value=""})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n,{style:{"margin-right":"5px"}}),oj]})),_:1})]})),_:1},8,["visible"])])):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",lj,[Object(y["createVNode"])(l,{style:{"margin-right":"5px"}}),aj])),Object(y["createVNode"])(a),Object(y["createVNode"])(Object(y["unref"])(mf.a),{class:"animation-sequence",modelValue:Object(y["unref"])(R),animation:300,scroll:!0,scrollSensitivity:50,handle:".sequence-content",onEnd:q,itemKey:"id"},{item:Object(y["withCtx"])((function(e){var t,n,o=e.element;return[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["sequence-item",[o.type,{active:(null===(t=Object(y["unref"])(w))||void 0===t?void 0:t.id)===o.elId}]])},[Object(y["createElementVNode"])("div",rj,[Object(y["createElementVNode"])("div",ij,Object(y["toDisplayString"])(o.index),1),Object(y["createElementVNode"])("div",uj,"【"+Object(y["toDisplayString"])(o.elType)+"】"+Object(y["toDisplayString"])(o.animationEffect),1),Object(y["createElementVNode"])("div",dj,[Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"预览"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{class:"handler-btn",onClick:function(e){return U(o.elId,o.effect,o.duration)}},null,8,["onClick"])]})),_:2},1032,["mouseEnterDelay"]),Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{class:"handler-btn",onClick:function(e){return H(o.id)}},null,8,["onClick"])]})),_:2},1032,["mouseEnterDelay"])])]),(null===(n=Object(y["unref"])(P)[0])||void 0===n?void 0:n.elId)===o.elId?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",sj,[Object(y["createVNode"])(a,{style:{margin:"16px 0"}}),Object(y["createElementVNode"])("div",fj,[bj,Object(y["createVNode"])(d,{min:500,max:3e3,step:500,value:o.duration,onChange:function(e){return G(o.id,e)},style:{flex:"5"}},null,8,["value","onChange"])]),Object(y["createElementVNode"])("div",pj,[Oj,Object(y["createVNode"])(f,{value:o.trigger,onChange:function(e){return X(o.id,e)},style:{flex:"5"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(s,{value:"click"},{default:Object(y["withCtx"])((function(){return[mj]})),_:1}),Object(y["createVNode"])(s,{value:"meantime"},{default:Object(y["withCtx"])((function(){return[vj]})),_:1}),Object(y["createVNode"])(s,{value:"auto"},{default:Object(y["withCtx"])((function(){return[jj]})),_:1})]})),_:2},1032,["value","onChange"])]),Object(y["createElementVNode"])("div",hj,[Object(y["createVNode"])(c,{style:{flex:"1"},onClick:function(e){return K(o.id)}},{default:Object(y["withCtx"])((function(){return[yj]})),_:2},1032,["onClick"])])])):Object(y["createCommentVNode"])("",!0)],2)]})),_:1},8,["modelValue"])])}}});n("cc39");const xj=pn()(gj,[["__scopeId","data-v-2f69234f"]]);var kj=xj,Cj=[{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"}],Nj=function(e){return Object(y["pushScopeId"])("data-v-e0bbbd9e"),e=e(),Object(y["popScopeId"])(),e},wj={class:"slide-design-panel"},Ej=Nj((function(){return Object(y["createElementVNode"])("div",{class:"title"},"背景填充",-1)})),Vj={class:"row"},Ij=Object(y["createTextVNode"])("纯色填充"),Bj=Object(y["createTextVNode"])("图片填充"),Sj=Object(y["createTextVNode"])("渐变填充"),Lj=Nj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"1"}},null,-1)})),_j=Object(y["createTextVNode"])("缩放"),Tj=Object(y["createTextVNode"])("拼贴"),Mj=Object(y["createTextVNode"])("缩放铺满"),Dj=Object(y["createTextVNode"])("线性渐变"),zj=Object(y["createTextVNode"])("径向渐变"),Fj={key:0,class:"background-image-wrapper"},Aj={class:"background-image"},Rj={key:1,class:"background-gradient-wrapper"},Pj={class:"row"},Hj=Nj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"起点颜色:",-1)})),qj={class:"row"},Uj=Nj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"终点颜色:",-1)})),Gj={key:0,class:"row"},Xj=Nj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"渐变角度:",-1)})),Yj={class:"row"},Zj=Object(y["createTextVNode"])("应用背景到全部"),Wj={class:"row"},Jj=Nj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"画布尺寸:",-1)})),Qj=Object(y["createTextVNode"])("宽屏 16 : 9"),Kj=Object(y["createTextVNode"])("宽屏 16 :10"),$j=Object(y["createTextVNode"])("标准 4 :3"),eh=Nj((function(){return Object(y["createElementVNode"])("div",{class:"title"},"全局主题",-1)})),th={class:"row"},nh=Nj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"字体:",-1)})),ch={class:"row"},oh=Nj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"字体颜色:",-1)})),lh={class:"row"},ah=Nj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"背景颜色:",-1)})),rh={class:"row"},ih=Nj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"主题色:",-1)})),uh=Object(y["createTextVNode"])(" 预置主题 "),dh={key:2,class:"theme-list"},sh=["onClick"],fh={class:"theme-item-content"},bh={class:"row"},ph=Object(y["createTextVNode"])("应用主题到全部"),Oh=Object(y["defineComponent"])({__name:"SlideDesignPanel",setup:function(e){var t=le(),n=Object(g["c"])(ie()),c=n.availableFonts,o=Object(g["c"])(t),l=o.slides,a=o.currentSlide,r=o.viewportRatio,i=o.theme,u=Object(y["computed"])((function(){return a.value.background?a.value.background:{type:"solid",value:"#fff"}})),d=lt(),s=d.addHistorySnapshot,f=function(e){if("solid"===e){var n=Object(S["a"])(Object(S["a"])({},u.value),{},{type:"solid",color:u.value.color||"#fff"});t.updateSlide({background:n})}else if("image"===e){var c=Object(S["a"])(Object(S["a"])({},u.value),{},{type:"image",image:u.value.image||"",imageSize:u.value.imageSize||"cover"});t.updateSlide({background:c})}else{var o=Object(S["a"])(Object(S["a"])({},u.value),{},{type:"gradient",gradientType:u.value.gradientType||"linear",gradientColor:u.value.gradientColor||["#fff","#fff"],gradientRotate:u.value.gradientRotate||0});t.updateSlide({background:o})}s()},b=function(e){t.updateSlide({background:Object(S["a"])(Object(S["a"])({},u.value),e)}),s()},p=function(e){var t=e[0];t&&et(t).then((function(e){return b({image:e})}))},O=function(){var e=l.value.map((function(e){return Object(S["a"])(Object(S["a"])({},e),{},{background:a.value.background})}));t.setSlides(e),s()},m=function(e){t.setTheme(e)},v=function(){var e,n=JSON.parse(JSON.stringify(l.value)),c=i.value,o=c.themeColor,a=c.backgroundColor,r=c.fontColor,u=c.fontName,d=Object(L["a"])(n);try{for(d.s();!(e=d.n()).done;){var f=e.value;f.background&&"image"===f.background.type||(f.background=Object(S["a"])(Object(S["a"])({},f.background),{},{type:"solid",color:a}));var b,p=f.elements,O=Object(L["a"])(p);try{for(O.s();!(b=O.n()).done;){var m=b.value;if("shape"===m.type)m.fill=o;else if("line"===m.type)m.color=o;else if("text"===m.type)m.defaultColor=r,m.defaultFontName=u,m.fill&&(m.fill=o);else if("table"===m.type){m.theme&&(m.theme.color=o);var v,j=Object(L["a"])(m.data);try{for(j.s();!(v=j.n()).done;){var h,y=v.value,g=Object(L["a"])(y);try{for(g.s();!(h=g.n()).done;){var x=h.value;x.style&&(x.style.color=r,x.style.fontname=u)}}catch(k){g.e(k)}finally{g.f()}}}catch(k){j.e(k)}finally{j.f()}}else"chart"===m.type?(m.themeColor=[o],m.gridColor=r):"latex"===m.type?m.color=r:"audio"===m.type&&(m.color=o)}}catch(k){O.e(k)}finally{O.f()}}}catch(k){d.e(k)}finally{d.f()}t.setSlides(n),s()},j=Object(y["ref"])(!0),h=function(){j.value=!j.value},x=function(e){t.setViewportRatio(e)};return function(e,t){var n=Object(y["resolveComponent"])("SelectOption"),o=Object(y["resolveComponent"])("Select"),l=Object(y["resolveComponent"])("ColorPicker"),a=Object(y["resolveComponent"])("Popover"),d=Object(y["resolveComponent"])("IconPlus"),s=Object(y["resolveComponent"])("FileInput"),g=Object(y["resolveComponent"])("Slider"),k=Object(y["resolveComponent"])("Button"),C=Object(y["resolveComponent"])("Divider"),N=Object(y["resolveComponent"])("SelectOptGroup"),w=Object(y["resolveComponent"])("IconDown");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",wj,[Ej,Object(y["createElementVNode"])("div",Vj,[Object(y["createVNode"])(o,{style:{flex:"10"},value:Object(y["unref"])(u).type,onChange:t[0]||(t[0]=function(e){return f(e)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n,{value:"solid"},{default:Object(y["withCtx"])((function(){return[Ij]})),_:1}),Object(y["createVNode"])(n,{value:"image"},{default:Object(y["withCtx"])((function(){return[Bj]})),_:1}),Object(y["createVNode"])(n,{value:"gradient"},{default:Object(y["withCtx"])((function(){return[Sj]})),_:1})]})),_:1},8,["value"]),Lj,"solid"===Object(y["unref"])(u).type?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:0,trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{modelValue:Object(y["unref"])(u).color,"onUpdate:modelValue":t[1]||(t[1]=function(e){return b({color:e})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:Object(y["unref"])(u).color||"#fff",style:{flex:"10"}},null,8,["color"])]})),_:1})):"image"===Object(y["unref"])(u).type?(Object(y["openBlock"])(),Object(y["createBlock"])(o,{key:1,style:{flex:"10"},value:Object(y["unref"])(u).imageSize||"cover",onChange:t[2]||(t[2]=function(e){return b({imageSize:e})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n,{value:"contain"},{default:Object(y["withCtx"])((function(){return[_j]})),_:1}),Object(y["createVNode"])(n,{value:"repeat"},{default:Object(y["withCtx"])((function(){return[Tj]})),_:1}),Object(y["createVNode"])(n,{value:"cover"},{default:Object(y["withCtx"])((function(){return[Mj]})),_:1})]})),_:1},8,["value"])):(Object(y["openBlock"])(),Object(y["createBlock"])(o,{key:2,style:{flex:"10"},value:Object(y["unref"])(u).gradientType,onChange:t[3]||(t[3]=function(e){return b({gradientType:e})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n,{value:"linear"},{default:Object(y["withCtx"])((function(){return[Dj]})),_:1}),Object(y["createVNode"])(n,{value:"radial"},{default:Object(y["withCtx"])((function(){return[zj]})),_:1})]})),_:1},8,["value"]))]),"image"===Object(y["unref"])(u).type?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Fj,[Object(y["createVNode"])(s,{onChange:t[4]||(t[4]=function(e){return p(e)})},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",Aj,[Object(y["createElementVNode"])("div",{class:"content",style:Object(y["normalizeStyle"])({backgroundImage:"url(".concat(Object(y["unref"])(u).image,")")})},[Object(y["createVNode"])(d)],4)])]})),_:1})])):Object(y["createCommentVNode"])("",!0),"gradient"===Object(y["unref"])(u).type?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Rj,[Object(y["createElementVNode"])("div",Pj,[Hj,Object(y["createVNode"])(a,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{modelValue:Object(y["unref"])(u).gradientColor[0],"onUpdate:modelValue":t[5]||(t[5]=function(e){return b({gradientColor:[e,Object(y["unref"])(u).gradientColor[1]]})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:Object(y["unref"])(u).gradientColor[0],style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",qj,[Uj,Object(y["createVNode"])(a,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{modelValue:Object(y["unref"])(u).gradientColor[1],"onUpdate:modelValue":t[6]||(t[6]=function(e){return b({gradientColor:[Object(y["unref"])(u).gradientColor[0],e]})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:Object(y["unref"])(u).gradientColor[1],style:{flex:"3"}},null,8,["color"])]})),_:1})]),"linear"===Object(y["unref"])(u).gradientType?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Gj,[Xj,Object(y["createVNode"])(g,{class:"slider",min:0,max:360,step:15,value:Object(y["unref"])(u).gradientRotate,onChange:t[7]||(t[7]=function(e){return b({gradientRotate:e})})},null,8,["value"])])):Object(y["createCommentVNode"])("",!0)])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("div",Yj,[Object(y["createVNode"])(k,{style:{flex:"1"},onClick:t[8]||(t[8]=function(e){return O()})},{default:Object(y["withCtx"])((function(){return[Zj]})),_:1})]),Object(y["createVNode"])(C),Object(y["createElementVNode"])("div",Wj,[Jj,Object(y["createVNode"])(o,{style:{flex:"3"},value:Object(y["unref"])(r),onChange:t[9]||(t[9]=function(e){return x(e)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n,{value:.5625},{default:Object(y["withCtx"])((function(){return[Qj]})),_:1},8,["value"]),Object(y["createVNode"])(n,{value:.625},{default:Object(y["withCtx"])((function(){return[Kj]})),_:1},8,["value"]),Object(y["createVNode"])(n,{value:.75},{default:Object(y["withCtx"])((function(){return[$j]})),_:1},8,["value"])]})),_:1},8,["value"])]),Object(y["createVNode"])(C),eh,Object(y["createElementVNode"])("div",th,[nh,Object(y["createVNode"])(o,{style:{flex:"3"},value:Object(y["unref"])(i).fontName,onChange:t[10]||(t[10]=function(e){return m({fontName:e})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(N,{label:"系统字体"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(c),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(n,{key:e.value,value:e.value},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",{style:Object(y["normalizeStyle"])({fontFamily:e.value})},Object(y["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(y["createVNode"])(N,{label:"在线字体"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(B),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(n,{key:e.value,value:e.value},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",null,Object(y["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"])]),Object(y["createElementVNode"])("div",ch,[oh,Object(y["createVNode"])(a,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{modelValue:Object(y["unref"])(i).fontColor,"onUpdate:modelValue":t[11]||(t[11]=function(e){return m({fontColor:e})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:Object(y["unref"])(i).fontColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",lh,[ah,Object(y["createVNode"])(a,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{modelValue:Object(y["unref"])(i).backgroundColor,"onUpdate:modelValue":t[12]||(t[12]=function(e){return m({backgroundColor:e})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:Object(y["unref"])(i).backgroundColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",rh,[ih,Object(y["createVNode"])(a,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{modelValue:Object(y["unref"])(i).themeColor,"onUpdate:modelValue":t[13]||(t[13]=function(e){return m({themeColor:e})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:Object(y["unref"])(i).themeColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["title dropdown",{active:j.value}]),onClick:t[14]||(t[14]=function(e){return h()}),style:{"margin-top":"20px"}},[uh,Object(y["createVNode"])(w,{class:"icon"})],2),j.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",dh,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(Cj),(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"theme-item",key:t,style:Object(y["normalizeStyle"])({backgroundColor:e.background}),onClick:function(t){return m({fontColor:e.text,backgroundColor:e.background,themeColor:e.color})}},[Object(y["createElementVNode"])("div",fh,[Object(y["createElementVNode"])("div",{class:"text",style:Object(y["normalizeStyle"])({color:e.text})},"Aa",4),Object(y["createElementVNode"])("div",{class:"color-block",style:Object(y["normalizeStyle"])({backgroundColor:e.color})},null,4)])],12,sh)})),128))])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("div",bh,[Object(y["createVNode"])(k,{style:{flex:"1"},onClick:t[15]||(t[15]=function(e){return v()})},{default:Object(y["withCtx"])((function(){return[ph]})),_:1})])])}}});n("60fd");const mh=pn()(Oh,[["__scopeId","data-v-e0bbbd9e"]]);var vh=mh,jh={class:"slide-animation-panel"},hh={class:"animation-pool"},yh=["onClick"],gh={class:"animation-text"},xh=Object(y["createTextVNode"])("应用到全部"),kh=Object(y["defineComponent"])({__name:"SlideAnimationPanel",setup:function(e){var t=le(),n=Object(g["c"])(t),c=n.slides,o=n.currentSlide,l=Object(y["computed"])((function(){return o.value.turningMode||"slideY"})),a=[{label:"无",value:"no"},{label:"淡入淡出",value:"fade"},{label:"左右推移",value:"slideX"},{label:"上下推移",value:"slideY"}],r=lt(),i=r.addHistorySnapshot,u=function(e){e!==l.value&&(t.updateSlide({turningMode:e}),i())},d=function(){var e=c.value.map((function(e){return Object(S["a"])(Object(S["a"])({},e),{},{turningMode:o.value.turningMode})}));t.setSlides(e),i()};return function(e,t){var n=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",jh,[Object(y["createElementVNode"])("div",hh,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(a,(function(e){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["animation-item",{active:Object(y["unref"])(l)===e.value}]),key:e.label,onClick:function(t){return u(e.value)}},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["animation-block",e.value])},null,2),Object(y["createElementVNode"])("div",gh,Object(y["toDisplayString"])(e.label),1)],10,yh)})),64))]),Object(y["createVNode"])(n,{style:{width:"100%"},onClick:t[0]||(t[0]=function(e){return d()})},{default:Object(y["withCtx"])((function(){return[xh]})),_:1})])}}});n("cc76");const Ch=pn()(kh,[["__scopeId","data-v-577ae912"]]);var Nh=Ch,wh=function(){var e=le(),t=Object(g["c"])(ie()),n=t.activeElementIdList,c=t.activeElementList,o=Object(g["c"])(e),l=o.currentSlide,a=lt(),r=a.addHistorySnapshot,i=function(t){var o,a=Xe(c.value),i=a.minX,u=a.maxX,d=a.minY,s=a.maxY,f=JSON.parse(JSON.stringify(l.value.elements)),b={},p=Object(L["a"])(c.value);try{var O=function(){var e=o.value;if(e.groupId&&!b[e.groupId]){var t=c.value.filter((function(t){return t.groupId===e.groupId}));b[e.groupId]=Xe(t)}};for(p.s();!(o=p.n()).done;)O()}catch(j){p.e(j)}finally{p.f()}if(t===C.LEFT)f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=b[e.groupId],c=t.minX-i;e.left=e.left-c}else if("rotate"in e&&e.rotate){var o=Ue({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),l=o.offsetX;e.left=i-l}else e.left=i}));else if(t===C.RIGHT)f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=b[e.groupId],c=t.maxX-u;e.left=e.left-c}else{var o="line"===e.type?Math.max(e.start[0],e.end[0]):e.width;if("rotate"in e&&e.rotate){var l=Ue({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),a=l.offsetX;e.left=u-o+a}else e.left=u-o}}));else if(t===C.TOP)f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=b[e.groupId],c=t.minY-d;e.top=e.top-c}else if("rotate"in e&&e.rotate){var o=Ue({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),l=o.offsetY;e.top=d-l}else e.top=d}));else if(t===C.BOTTOM)f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=b[e.groupId],c=t.maxY-s;e.top=e.top-c}else{var o="line"===e.type?Math.max(e.start[1],e.end[1]):e.height;if("rotate"in e&&e.rotate){var l=Ue({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),a=l.offsetY;e.top=s-o+a}else e.top=s-o}}));else if(t===C.HORIZONTAL){var m=(i+u)/2;f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=b[e.groupId],c=(t.maxX+t.minX)/2,o=c-m;e.left=e.left-o}else{var l="line"===e.type?Math.max(e.start[0],e.end[0]):e.width;e.left=m-l/2}}))}else if(t===C.VERTICAL){var v=(d+s)/2;f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=b[e.groupId],c=(t.maxY+t.minY)/2,o=c-v;e.top=e.top-o}else{var l="line"===e.type?Math.max(e.start[1],e.end[1]):e.height;e.top=v-l/2}}))}e.updateSlide({elements:f}),r()};return{alignActiveElement:i}},Eh=(n("4e82"),function(){var e=le(),t=Object(g["c"])(ie()),n=t.activeElementIdList,c=t.activeElementList,o=Object(g["c"])(e),l=o.currentSlide,a=lt(),r=a.addHistorySnapshot,i=Object(y["computed"])((function(){var e,t=0,n=[],o=Object(L["a"])(c.value);try{for(o.s();!(e=o.n()).done;){var l=e.value;l.groupId?n.includes(l.groupId)||(n.push(l.groupId),t+=1):t+=1}}catch(a){o.e(a)}finally{o.f()}return t})),u=function(){var t,o=Xe(c.value),a=o.minX,i=o.maxX,u=JSON.parse(JSON.stringify(c.value)),d=JSON.parse(JSON.stringify(l.value.elements)),s=[],f=[],b=Object(L["a"])(u);try{var p=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(S["a"])(Object(S["a"])({},t),{},{els:[].concat(Object(K["a"])(t.els),[e])}):t})):f.push({groupId:e.groupId,els:[e]})}else{var c=Ge(e),o=c.minX,l=c.maxX;s.push({min:o,max:l,el:e})}};for(b.s();!(t=b.n()).done;)p()}catch(le){b.e(le)}finally{b.f()}var O,m=[],v=Object(L["a"])(f);try{for(v.s();!(O=v.n()).done;){var j=O.value,h=Xe(j.els),y=h.minX,g=h.maxX;m.push({min:y,max:g,els:j.els})}}catch(le){v.e(le)}finally{v.f()}var x=[].concat(s,m);x.sort((function(e,t){return e.min-t.min}));var k,C=0,N=Object(L["a"])(x);try{for(N.s();!(k=N.n()).done;){var w=k.value,E=w.max-w.min;C+=E}}catch(le){N.e(le)}finally{N.f()}var V=(i-a-C)/(x.length-1),I=[],B=x[0],_={min:B.min,max:B.max};if("el"in B)I.push({pos:B.min,el:B.el});else{var T,M=Object(L["a"])(B.els);try{for(M.s();!(T=M.n()).done;){var D=T.value,z=Ge(D),F=z.minX;I.push({pos:F,el:D})}}catch(le){M.e(le)}finally{M.f()}}for(var A=1;A2?(Object(y["openBlock"])(),Object(y["createBlock"])(p,{key:0,class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{style:{flex:"1"},onClick:t[6]||(t[6]=function(e){return Object(y["unref"])(s)()})},{default:Object(y["withCtx"])((function(){return[Ih]})),_:1}),Object(y["createVNode"])(a,{style:{flex:"1"},onClick:t[7]||(t[7]=function(e){return Object(y["unref"])(f)()})},{default:Object(y["withCtx"])((function(){return[Bh]})),_:1})]})),_:1})):Object(y["createCommentVNode"])("",!0),Object(y["createVNode"])(j),Object(y["createVNode"])(p,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{disabled:!Object(y["unref"])(n),onClick:t[8]||(t[8]=function(e){return Object(y["unref"])(c)()}),style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(h,{style:{"margin-right":"3px"}}),Sh]})),_:1},8,["disabled"]),Object(y["createVNode"])(a,{disabled:Object(y["unref"])(n),onClick:t[9]||(t[9]=function(e){return Object(y["unref"])(o)()}),style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g,{style:{"margin-right":"3px"}}),Lh]})),_:1},8,["disabled"])]})),_:1})])}}});n("1855");const Th=pn()(_h,[["__scopeId","data-v-0d3881c5"]]);var Mh=Th,Dh=[{key:"letter",label:"字母",children:["α","β","γ","δ","ϵ","ε","ζ","η","θ","ϑ","ι","κ","λ","μ","ν","ξ","π","ϖ","ρ","ϱ","σ","ς","τ","υ","ϕ","φ","χ","ψ","ω","Γ","Δ","Θ","Λ","Ξ","Π","Σ","Υ","Φ","Ψ","Ω","𝐀","𝐁","𝐂","𝐃","𝐄","𝐅","𝐆","𝐇","𝐈","𝐉","𝐊","𝐋","𝐌","𝐍","𝐎","𝐏","𝐐","𝐑","𝐒","𝐓","𝐔","𝐕","𝐖","𝐗","𝐘","𝐙","𝐚","𝐛","𝐜","𝐝","𝐞","𝐟","𝐠","𝐡","𝐢","𝐣","𝐤","𝐥","𝐦","𝐧","𝐨","𝐩","𝐪","𝐫","𝐬","𝐭","𝐮","𝐯","𝐰","𝐱","𝐲","𝐳","𝓐","𝓑","𝓒","𝓓","𝓔","𝓕","𝓖","𝓗","𝓘","𝓙","𝓚","𝓛","𝓜","𝓝","𝓞","𝓟","𝓠","𝓡","𝓢","𝓣","𝓤","𝓥","𝓦","𝓧","𝓨","𝓩","𝓪","𝓫","𝓬","𝓭","𝓮","𝓯","𝓰","𝓱","𝓲","𝓳","𝓴","𝓵","𝓶","𝓷","𝓸","𝓹","𝓺","𝓻","𝓼","𝓽","𝓾","𝓿","𝔀","𝔁","𝔂","𝔃"]},{key:"number",label:"序号",children:["①","②","③","④","⑤","⑥","⑦","⑧","⑨","⑩","⑪","⑫","⑬","⑭","⑮","⑯","⑰","⑱","⑲","⑳","⑴","⑵","⑶","⑷","⑸","⑹","⑺","⑻","⑼","⑽","⑾","⑿","⒀","⒁","⒂","⒃","⒄","⒅","⒆","⒇","º","¹","²","³","⁴","⁵","⁶","⁷","⁸","⁹","₀","₁","₂","₃","₄","₅","₆","₇","₈","₉","Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ","Ⅹ","Ⅺ","Ⅻ","Ⅼ","Ⅽ","Ⅾ","Ⅿ","ⅰ","ⅱ","ⅲ","ⅳ","ⅴ","ⅵ","ⅶ","ⅷ","ⅸ","ⅹ","ⅺ","ⅻ","ⅼ","ⅽ","ⅾ","ⅿ","ↀ","ↁ","ↂ","㊀","㊁","㊂","㊃","㊄","㊅","㊆","㊇","㊈","㊉","㈠","㈡","㈢","㈣","㈤","㈥","㈦","㈧","㈨","㈩","𝟘","𝟙","𝟚","𝟛","𝟜","𝟝","𝟞","𝟟","𝟠","𝟡"]},{key:"math",label:"数学",children:["+","-","×","÷","=","~","¬","±","%","°","ǃ","‰","‱","½","⅓","⅔","¼","¾","<",">","l","o","g","l","g","l","n","⨂","⨁","⨄","⨃","⨅","⨆","√","∛","∜","∝","∞","∟","∠","∡","∢","∧","∨","∩","∪","∫","∬","∭","∮","∯","∰","∱","∲","∳","∴","∵","∼","∽","∾","∿","≃","≄","≅","≆","≇","≈","≊","≋","≌","≍","≎","≏","≐","≑","≒","≓","≔","≕","≤","≥","≦","≧","≨","≩","≪","≫","≺","≻","≼","≽","≾","≿","⊀","⊁","⊂","⊃","⊄","⊅","⊆","⊇","⊈","⊉","⊊","⊋","⊏","⊐","⊑","⊒","⊓","⊔","⊢","⊣","⊤","⊥","⊦","⊧","⊨","⊩","⊪","⊫","⊬","⊭","⊮","⊯","⊲","⊳","⊴","⊵","⋀","⋁","⋂","⋃","⋉","⋊","⋋","⋌","⟨","⟩","⟪","⟫","⟮","⟯","⧼","⧽","⦰"]},{key:"arrow",label:"箭头",children:["←","↑","→","↓","↔","↕","↖","↗","↘","↙","↚","↛","↜","↝","↞","↟","↠","↡","↢","↣","↤","↥","↦","↧","↨","↫","↬","↭","↮","↯","↰","↱","↲","↳","↴","↵","↶","↷","↸","↹","↺","↻","↼","↽","↾","↿","⇀","⇁","⇂","⇃","⇄","⇅","⇆","⇇","⇈","⇉","⇊","⇋","⇌","⇍","⇎","⇏","⇐","⇑","⇒","⇓","⇔","⇕","⇖","⇗","⇘","⇙","⇚","⇛","⇜","⇝","⇞","⇟","⇠","⇡","⇢","⇣","⇤","⇥","⇦","⇧","⇨","⇩","⇪","⇫","⇬","⇭","⇮","⇯","⇰","⇱","⇲","⇳","⇴","⇵","⇶","⇷","⇸","⇹","⇺","⇻","⇼","⇽","⇾","⇿"]},{key:"graph",label:"图形",children:["▢","▣","▤","▥","▦","▧","▨","▩","▭","▮","▯","▰","▱","▲","▷","▼","◁","◈","◉","◍","◐","◑","◒","◓","◔","◕","◧","◨","◩","◪","◫","◬","◭","◮"]}],zh={class:"symbol-panel"},Fh={class:"tabs"},Ah=["onClick"],Rh={class:"pool"},Ph=["onClick"],Hh={class:"symbol"},qh=Object(y["defineComponent"])({__name:"SymbolPanel",setup:function(e){var t=Object(y["ref"])(Dh[0].key),n=Object(y["computed"])((function(){var e=Dh.find((function(e){return e.key===t.value}));return(null===e||void 0===e?void 0:e.children)||[]})),c=function(e){Ko.emit(so.RICH_TEXT_COMMAND,{action:{command:"insert",value:e}})};return function(e,o){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",zh,[Object(y["createElementVNode"])("div",Fh,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(Dh),(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["tab",{active:t.value===e.key}]),key:e.key,onClick:function(n){return t.value=e.key}},Object(y["toDisplayString"])(e.label),11,Ah)})),128))]),Object(y["createElementVNode"])("div",Rh,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(n),(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"symbol-item",key:t,onClick:function(t){return c(e)}},[Object(y["createElementVNode"])("div",Hh,Object(y["toDisplayString"])(e),1)],8,Ph)})),128))])])}}});n("1126");const Uh=pn()(qh,[["__scopeId","data-v-ba0c96fc"]]);var Gh=Uh,Xh={class:"toolbar"},Yh={class:"tabs"},Zh=["onClick"],Wh={class:"content"},Jh=Object(y["defineComponent"])({__name:"index",setup:function(e){var t=ie(),n=Object(g["c"])(t),o=n.activeElementIdList,l=n.handleElement,a=n.toolbarState,r=Object(y["computed"])((function(){var e;return"text"===(null===(e=l.value)||void 0===e?void 0:e.type)?[{label:"样式",value:c.EL_STYLE},{label:"符号",value:c.SYMBOL},{label:"位置",value:c.EL_POSITION},{label:"动画",value:c.EL_ANIMATION}]:[{label:"样式",value:c.EL_STYLE},{label:"位置",value:c.EL_POSITION},{label:"动画",value:c.EL_ANIMATION}]})),i=[{label:"设计",value:c.SLIDE_DESIGN},{label:"切换",value:c.SLIDE_ANIMATION},{label:"动画",value:c.EL_ANIMATION}],u=[{label:"样式",value:c.EL_STYLE},{label:"位置",value:c.MULTI_POSITION}],d=function(e){t.setToolbarState(e)},s=Object(y["computed"])((function(){return o.value.length?o.value.length>1?u:r.value:i}));Object(y["watch"])(s,(function(){var e=s.value.map((function(e){return e.value}));e.includes(a.value)||t.setToolbarState(e[0])}));var f=Object(y["computed"])((function(){var e,t=(e={},Object(pe["a"])(e,c.EL_STYLE,yv),Object(pe["a"])(e,c.EL_POSITION,Hv),Object(pe["a"])(e,c.EL_ANIMATION,kj),Object(pe["a"])(e,c.SLIDE_DESIGN,vh),Object(pe["a"])(e,c.SLIDE_ANIMATION,Nh),Object(pe["a"])(e,c.MULTI_POSITION,Mh),Object(pe["a"])(e,c.SYMBOL,Gh),e);return t[a.value]||null}));return function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Xh,[Object(y["createElementVNode"])("div",Yh,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(s),(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["tab",{active:e.value===Object(y["unref"])(a)}]),key:e.value,onClick:function(t){return d(e.value)}},Object(y["toDisplayString"])(e.label),11,Zh)})),128))]),Object(y["createElementVNode"])("div",Wh,[(Object(y["openBlock"])(),Object(y["createBlock"])(Object(y["resolveDynamicComponent"])(Object(y["unref"])(f))))])])}}});n("cd7e");const Qh=pn()(Jh,[["__scopeId","data-v-5303bd17"]]);var Kh=Qh,$h={class:"remark"},ey=["value"],ty=Object(y["defineComponent"])({__name:"index",props:{height:{type:Number,required:!0}},emits:["update:height"],setup:function(e,t){var n=t.emit,c=e,o=le(),l=Object(g["c"])(o),a=l.currentSlide,r=Object(y["computed"])((function(){var e;return(null===(e=a.value)||void 0===e?void 0:e.remark)||""})),i=function(e){var t=e.target.value;o.updateSlide({remark:t})},u=function(e){var t=!0,o=e.pageY,l=c.height;document.onmousemove=function(e){if(t){var c=e.pageY,a=c-o,r=-a+l;r<40&&(r=40),r>120&&(r=120),n("update:height",r)}},document.onmouseup=function(){t=!1,document.onmousemove=null,document.onmouseup=null}};return function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",$h,[Object(y["createElementVNode"])("div",{class:"resize-handler",onMousedown:t[0]||(t[0]=function(e){return u(e)})},null,32),Object(y["createElementVNode"])("textarea",{value:Object(y["unref"])(r),placeholder:"点击输入演讲者备注",onInput:t[1]||(t[1]=function(e){return i(e)})},null,40,ey)])}}});n("ec27");const ny=pn()(ty,[["__scopeId","data-v-82b674f6"]]);var cy=ny,oy=function(e){return Object(y["pushScopeId"])("data-v-60a953a0"),e=e(),Object(y["popScopeId"])(),e},ly={class:"export-img-dialog"},ay={class:"thumbnails-view"},ry={class:"configs"},iy={class:"row"},uy=oy((function(){return Object(y["createElementVNode"])("div",{class:"title"},"导出格式:",-1)})),dy=Object(y["createTextVNode"])("JPEG"),sy=Object(y["createTextVNode"])("PNG"),fy={class:"row"},by=oy((function(){return Object(y["createElementVNode"])("div",{class:"title"},"导出范围:",-1)})),py=Object(y["createTextVNode"])("全部"),Oy=Object(y["createTextVNode"])("当前页"),my=Object(y["createTextVNode"])("自定义"),vy={key:0,class:"row"},jy=["data-range"],hy={class:"row"},yy=oy((function(){return Object(y["createElementVNode"])("div",{class:"title"},"图片质量:",-1)})),gy={class:"row"},xy=oy((function(){return Object(y["createElementVNode"])("div",{class:"title"},"忽略在线字体:",-1)})),ky={class:"config-item"},Cy={class:"btns"},Ny=Object(y["createTextVNode"])("导出图片"),wy=Object(y["createTextVNode"])("关闭"),Ey=Object(y["defineComponent"])({__name:"ExportImage",emits:["close"],setup:function(e,t){var n=t.emit,c=Object(g["c"])(le()),o=c.slides,l=c.currentSlide,a=Object(y["ref"])(),r=Object(y["ref"])("all"),i=Object(y["ref"])([1,o.value.length]),u=Object(y["ref"])("jpeg"),d=Object(y["ref"])(1),s=Object(y["ref"])(!0),f=Object(y["computed"])((function(){return"all"===r.value?o.value:"current"===r.value?[l.value]:o.value.filter((function(e,t){var n=Object(Oe["a"])(i.value,2),c=n[0],o=n[1];return t>=c-1&&t<=o-1}))})),b=an(),p=b.exportImage,O=b.exporting,m=function(){a.value&&p(a.value,u.value,d.value,s.value)};return function(e,t){var c=Object(y["resolveComponent"])("RadioButton"),l=Object(y["resolveComponent"])("RadioGroup"),b=Object(y["resolveComponent"])("Slider"),p=Object(y["resolveComponent"])("Switch"),v=Object(y["resolveComponent"])("Tooltip"),j=Object(y["resolveComponent"])("Button"),h=Object(y["resolveComponent"])("FullscreenSpin");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",ly,[Object(y["createElementVNode"])("div",ay,[Object(y["createElementVNode"])("div",{class:"thumbnails",ref_key:"imageThumbnailsRef",ref:a},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(f),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(nd,{class:"thumbnail",key:e.id,slide:e,size:1600},null,8,["slide"])})),128))],512)]),Object(y["createElementVNode"])("div",ry,[Object(y["createElementVNode"])("div",iy,[uy,Object(y["createVNode"])(l,{class:"config-item",value:u.value,"onUpdate:value":t[0]||(t[0]=function(e){return u.value=e})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(c,{style:{width:"50%"},value:"jpeg"},{default:Object(y["withCtx"])((function(){return[dy]})),_:1}),Object(y["createVNode"])(c,{style:{width:"50%"},value:"png"},{default:Object(y["withCtx"])((function(){return[sy]})),_:1})]})),_:1},8,["value"])]),Object(y["createElementVNode"])("div",fy,[by,Object(y["createVNode"])(l,{class:"config-item",value:r.value,"onUpdate:value":t[1]||(t[1]=function(e){return r.value=e})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(c,{style:{width:"33.33%"},value:"all"},{default:Object(y["withCtx"])((function(){return[py]})),_:1}),Object(y["createVNode"])(c,{style:{width:"33.33%"},value:"current"},{default:Object(y["withCtx"])((function(){return[Oy]})),_:1}),Object(y["createVNode"])(c,{style:{width:"33.33%"},value:"custom"},{default:Object(y["withCtx"])((function(){return[my]})),_:1})]})),_:1},8,["value"])]),"custom"===r.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",vy,[Object(y["createElementVNode"])("div",{class:"title","data-range":"(".concat(i.value[0]," ~ ").concat(i.value[1],")")},"自定义范围:",8,jy),Object(y["createVNode"])(b,{class:"config-item",range:"",min:1,max:Object(y["unref"])(o).length,step:1,value:i.value,"onUpdate:value":t[2]||(t[2]=function(e){return i.value=e})},null,8,["max","value"])])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("div",hy,[yy,Object(y["createVNode"])(b,{class:"config-item",min:0,max:1,step:.1,value:d.value,"onUpdate:value":t[3]||(t[3]=function(e){return d.value=e})},null,8,["step","value"])]),Object(y["createElementVNode"])("div",gy,[xy,Object(y["createElementVNode"])("div",ky,[Object(y["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"导出时默认忽略在线字体,若您在幻灯片中使用了在线字体,且希望导出后保留相关样式,可选择关闭【忽略在线字体】选项,但要注意这将会增加导出用时。"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(p,{checked:s.value,"onUpdate:checked":t[4]||(t[4]=function(e){return s.value=e})},null,8,["checked"])]})),_:1},8,["mouseEnterDelay"])])])]),Object(y["createElementVNode"])("div",Cy,[Object(y["createVNode"])(j,{class:"btn export",type:"primary",onClick:t[5]||(t[5]=function(e){return m()})},{default:Object(y["withCtx"])((function(){return[Ny]})),_:1}),Object(y["createVNode"])(j,{class:"btn close",onClick:t[6]||(t[6]=function(e){return n("close")})},{default:Object(y["withCtx"])((function(){return[wy]})),_:1})]),Object(y["createVNode"])(h,{loading:Object(y["unref"])(O),tip:"正在导出..."},null,8,["loading"])])}}});n("e303");const Vy=pn()(Ey,[["__scopeId","data-v-60a953a0"]]);var Iy=Vy,By={class:"export-json-dialog"},Sy={class:"preview"},Ly={class:"btns"},_y=Object(y["createTextVNode"])("导出 JSON"),Ty=Object(y["createTextVNode"])("关闭"),My=Object(y["defineComponent"])({__name:"ExportJSON",emits:["close"],setup:function(e,t){var n=t.emit,c=Object(g["c"])(le()),o=c.slides,l=an(),a=l.exportJSON;return function(e,t){var c=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",By,[Object(y["createElementVNode"])("div",Sy,[Object(y["createElementVNode"])("pre",null,Object(y["toDisplayString"])(Object(y["unref"])(o)),1)]),Object(y["createElementVNode"])("div",Ly,[Object(y["createVNode"])(c,{class:"btn export",type:"primary",onClick:t[0]||(t[0]=function(e){return Object(y["unref"])(a)()})},{default:Object(y["withCtx"])((function(){return[_y]})),_:1}),Object(y["createVNode"])(c,{class:"btn close",onClick:t[1]||(t[1]=function(e){return n("close")})},{default:Object(y["withCtx"])((function(){return[Ty]})),_:1})])])}}});n("eba1");const Dy=pn()(My,[["__scopeId","data-v-1bc24666"]]);var zy=Dy,Fy=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},Ay=function(e,t,n){var c="",o="",l=document.styleSheets;if(l){var a,r=Object(L["a"])(l);try{for(r.s();!(a=r.n()).done;){var i=a.value;if(i.cssRules){var u,d=Object(L["a"])(i.cssRules);try{for(d.s();!(u=d.n()).done;){var s=u.value;o+=s.cssText}}catch(v){d.e(v)}finally{d.f()}}}}catch(v){r.e(v)}finally{r.f()}}var f=n.width,b=n.height,p=n.margin,O='\n \n \n \n "),m=""+t.innerHTML+"";e.open(),e.write("\n ".concat(c,"\n \n ").concat(O,"\n ").concat(m,"\n \n ")),e.close()},Ry=function(e,t){var n=Fy(),c=n.contentWindow;if(n.contentDocument&&c){Ay(n.contentDocument,e,t);var o=function(){c.focus(),c.print(),document.body.removeChild(n)};n.addEventListener("load",o)}},Py=function(e){return Object(y["pushScopeId"])("data-v-15b57798"),e=e(),Object(y["popScopeId"])(),e},Hy={class:"export-pdf-dialog"},qy={class:"thumbnails-view"},Uy={class:"configs"},Gy={class:"row"},Xy=Py((function(){return Object(y["createElementVNode"])("div",{class:"title"},"导出范围:",-1)})),Yy=Object(y["createTextVNode"])("全部幻灯片"),Zy=Object(y["createTextVNode"])("当前幻灯片"),Wy={class:"row"},Jy=Py((function(){return Object(y["createElementVNode"])("div",{class:"title"},"每页数量:",-1)})),Qy=Object(y["createTextVNode"])("1"),Ky=Object(y["createTextVNode"])("2"),$y=Object(y["createTextVNode"])("3"),eg={class:"row"},tg=Py((function(){return Object(y["createElementVNode"])("div",{class:"title"},"边缘留白:",-1)})),ng={class:"config-item"},cg=Py((function(){return Object(y["createElementVNode"])("div",{class:"tip"}," 注意:若打印预览与实际样式不一致,请在弹出的打印窗口中勾选【背景图形】选项。 ",-1)})),og={class:"btns"},lg=Object(y["createTextVNode"])("打印 / 导出 PDF"),ag=Object(y["createTextVNode"])("关闭"),rg=Object(y["defineComponent"])({__name:"ExportPDF",emits:["close"],setup:function(e,t){var n=t.emit,c=Object(g["c"])(le()),o=c.slides,l=c.currentSlide,a=Object(y["ref"])(),r=Object(y["ref"])("all"),i=Object(y["ref"])(1),u=Object(y["ref"])(!0),d=function(){if(a.value){var e={width:1600,height:"all"===r.value?900*i.value:900,margin:u.value?50:0};Ry(a.value,e)}};return function(e,t){var c=Object(y["resolveComponent"])("RadioButton"),s=Object(y["resolveComponent"])("RadioGroup"),f=Object(y["resolveComponent"])("SelectOption"),b=Object(y["resolveComponent"])("Select"),p=Object(y["resolveComponent"])("Switch"),O=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Hy,[Object(y["createElementVNode"])("div",qy,[Object(y["createElementVNode"])("div",{class:"thumbnails",ref_key:"pdfThumbnailsRef",ref:a},["current"===r.value?(Object(y["openBlock"])(),Object(y["createBlock"])(nd,{key:0,class:"thumbnail",slide:Object(y["unref"])(l),size:1600},null,8,["slide"])):(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],{key:1},Object(y["renderList"])(Object(y["unref"])(o),(function(e,t){return Object(y["openBlock"])(),Object(y["createBlock"])(nd,{class:Object(y["normalizeClass"])(["thumbnail",{"break-page":(t+1)%i.value===0}]),key:e.id,slide:e,size:1600},null,8,["class","slide"])})),128))],512)]),Object(y["createElementVNode"])("div",Uy,[Object(y["createElementVNode"])("div",Gy,[Xy,Object(y["createVNode"])(s,{class:"config-item",value:r.value,"onUpdate:value":t[0]||(t[0]=function(e){return r.value=e})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(c,{style:{width:"50%"},value:"all"},{default:Object(y["withCtx"])((function(){return[Yy]})),_:1}),Object(y["createVNode"])(c,{style:{width:"50%"},value:"current"},{default:Object(y["withCtx"])((function(){return[Zy]})),_:1})]})),_:1},8,["value"])]),Object(y["createElementVNode"])("div",Wy,[Jy,Object(y["createVNode"])(b,{class:"config-item",value:i.value,"onUpdate:value":t[1]||(t[1]=function(e){return i.value=e})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{value:1},{default:Object(y["withCtx"])((function(){return[Qy]})),_:1}),Object(y["createVNode"])(f,{value:2},{default:Object(y["withCtx"])((function(){return[Ky]})),_:1}),Object(y["createVNode"])(f,{value:3},{default:Object(y["withCtx"])((function(){return[$y]})),_:1})]})),_:1},8,["value"])]),Object(y["createElementVNode"])("div",eg,[tg,Object(y["createElementVNode"])("div",ng,[Object(y["createVNode"])(p,{checked:u.value,"onUpdate:checked":t[2]||(t[2]=function(e){return u.value=e})},null,8,["checked"])])]),cg]),Object(y["createElementVNode"])("div",og,[Object(y["createVNode"])(O,{class:"btn export",type:"primary",onClick:t[3]||(t[3]=function(e){return d()})},{default:Object(y["withCtx"])((function(){return[lg]})),_:1}),Object(y["createVNode"])(O,{class:"btn close",onClick:t[4]||(t[4]=function(e){return n("close")})},{default:Object(y["withCtx"])((function(){return[ag]})),_:1})])])}}});n("7239");const ig=pn()(rg,[["__scopeId","data-v-15b57798"]]);var ug=ig,dg=function(e){return Object(y["pushScopeId"])("data-v-3fef9be0"),e=e(),Object(y["popScopeId"])(),e},sg={class:"export-pptx-dialog"},fg={class:"configs"},bg={class:"row"},pg=dg((function(){return Object(y["createElementVNode"])("div",{class:"title"},"导出范围:",-1)})),Og=Object(y["createTextVNode"])("全部"),mg=Object(y["createTextVNode"])("当前页"),vg=Object(y["createTextVNode"])("自定义"),jg={key:0,class:"row"},hg=["data-range"],yg={class:"row"},gg=dg((function(){return Object(y["createElementVNode"])("div",{class:"title"},"覆盖默认母版:",-1)})),xg={class:"config-item"},kg={class:"btns"},Cg=Object(y["createTextVNode"])("导出 PPTX"),Ng=Object(y["createTextVNode"])("关闭"),wg=Object(y["defineComponent"])({__name:"ExportPPTX",emits:["close"],setup:function(e,t){var n=t.emit,c=Object(g["c"])(le()),o=c.slides,l=c.currentSlide,a=an(),r=a.exportPPTX,i=a.exporting,u=Object(y["ref"])("all"),d=Object(y["ref"])([1,o.value.length]),s=Object(y["ref"])(!0),f=Object(y["computed"])((function(){return"all"===u.value?o.value:"current"===u.value?[l.value]:o.value.filter((function(e,t){var n=Object(Oe["a"])(d.value,2),c=n[0],o=n[1];return t>=c-1&&t<=o-1}))}));return function(e,t){var c=Object(y["resolveComponent"])("RadioButton"),l=Object(y["resolveComponent"])("RadioGroup"),a=Object(y["resolveComponent"])("Slider"),b=Object(y["resolveComponent"])("Switch"),p=Object(y["resolveComponent"])("Button"),O=Object(y["resolveComponent"])("FullscreenSpin");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",sg,[Object(y["createElementVNode"])("div",fg,[Object(y["createElementVNode"])("div",bg,[pg,Object(y["createVNode"])(l,{class:"config-item",value:u.value,"onUpdate:value":t[0]||(t[0]=function(e){return u.value=e})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(c,{style:{width:"33.33%"},value:"all"},{default:Object(y["withCtx"])((function(){return[Og]})),_:1}),Object(y["createVNode"])(c,{style:{width:"33.33%"},value:"current"},{default:Object(y["withCtx"])((function(){return[mg]})),_:1}),Object(y["createVNode"])(c,{style:{width:"33.33%"},value:"custom"},{default:Object(y["withCtx"])((function(){return[vg]})),_:1})]})),_:1},8,["value"])]),"custom"===u.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",jg,[Object(y["createElementVNode"])("div",{class:"title","data-range":"(".concat(d.value[0]," ~ ").concat(d.value[1],")")},"自定义范围:",8,hg),Object(y["createVNode"])(a,{class:"config-item",range:"",min:1,max:Object(y["unref"])(o).length,step:1,value:d.value,"onUpdate:value":t[1]||(t[1]=function(e){return d.value=e})},null,8,["max","value"])])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("div",yg,[gg,Object(y["createElementVNode"])("div",xg,[Object(y["createVNode"])(b,{checked:s.value,"onUpdate:checked":t[2]||(t[2]=function(e){return s.value=e})},null,8,["checked"])])])]),Object(y["createElementVNode"])("div",kg,[Object(y["createVNode"])(p,{class:"btn export",type:"primary",onClick:t[3]||(t[3]=function(e){return Object(y["unref"])(r)(Object(y["unref"])(f),s.value)})},{default:Object(y["withCtx"])((function(){return[Cg]})),_:1}),Object(y["createVNode"])(p,{class:"btn close",onClick:t[4]||(t[4]=function(e){return n("close")})},{default:Object(y["withCtx"])((function(){return[Ng]})),_:1})]),Object(y["createVNode"])(O,{loading:Object(y["unref"])(i),tip:"正在导出..."},null,8,["loading"])])}}});n("fef8");const Eg=pn()(wg,[["__scopeId","data-v-3fef9be0"]]);var Vg=Eg,Ig=function(e){return Object(y["pushScopeId"])("data-v-e2b465d2"),e=e(),Object(y["popScopeId"])(),e},Bg={class:"export-pptist-dialog"},Sg={class:"configs"},Lg={class:"row"},_g=Ig((function(){return Object(y["createElementVNode"])("div",{class:"title"},"导出范围:",-1)})),Tg=Object(y["createTextVNode"])("全部"),Mg=Object(y["createTextVNode"])("当前页"),Dg=Object(y["createTextVNode"])("自定义"),zg={key:0,class:"row"},Fg=["data-range"],Ag=Ig((function(){return Object(y["createElementVNode"])("div",{class:"tip"}," 提示:.pptist 是本应用的特有文件后缀,支持将该类型的文件导入回应用中。 ",-1)})),Rg={class:"btns"},Pg=Object(y["createTextVNode"])("导出 .pptist 文件"),Hg=Object(y["createTextVNode"])("关闭"),qg=Object(y["defineComponent"])({__name:"ExportSpecificFile",emits:["close"],setup:function(e,t){var n=t.emit,c=Object(g["c"])(le()),o=c.slides,l=c.currentSlide,a=an(),r=a.exportSpecificFile,i=Object(y["ref"])("all"),u=Object(y["ref"])([1,o.value.length]),d=Object(y["computed"])((function(){return"all"===i.value?o.value:"current"===i.value?[l.value]:o.value.filter((function(e,t){var n=Object(Oe["a"])(u.value,2),c=n[0],o=n[1];return t>=c-1&&t<=o-1}))}));return function(e,t){var c=Object(y["resolveComponent"])("RadioButton"),l=Object(y["resolveComponent"])("RadioGroup"),a=Object(y["resolveComponent"])("Slider"),s=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Bg,[Object(y["createElementVNode"])("div",Sg,[Object(y["createElementVNode"])("div",Lg,[_g,Object(y["createVNode"])(l,{class:"config-item",value:i.value,"onUpdate:value":t[0]||(t[0]=function(e){return i.value=e})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(c,{style:{width:"33.33%"},value:"all"},{default:Object(y["withCtx"])((function(){return[Tg]})),_:1}),Object(y["createVNode"])(c,{style:{width:"33.33%"},value:"current"},{default:Object(y["withCtx"])((function(){return[Mg]})),_:1}),Object(y["createVNode"])(c,{style:{width:"33.33%"},value:"custom"},{default:Object(y["withCtx"])((function(){return[Dg]})),_:1})]})),_:1},8,["value"])]),"custom"===i.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",zg,[Object(y["createElementVNode"])("div",{class:"title","data-range":"(".concat(u.value[0]," ~ ").concat(u.value[1],")")},"自定义范围:",8,Fg),Object(y["createVNode"])(a,{class:"config-item",range:"",min:1,max:Object(y["unref"])(o).length,step:1,value:u.value,"onUpdate:value":t[1]||(t[1]=function(e){return u.value=e})},null,8,["max","value"])])):Object(y["createCommentVNode"])("",!0),Ag]),Object(y["createElementVNode"])("div",Rg,[Object(y["createVNode"])(s,{class:"btn export",type:"primary",onClick:t[2]||(t[2]=function(e){return Object(y["unref"])(r)(Object(y["unref"])(d))})},{default:Object(y["withCtx"])((function(){return[Pg]})),_:1}),Object(y["createVNode"])(s,{class:"btn close",onClick:t[3]||(t[3]=function(e){return n("close")})},{default:Object(y["withCtx"])((function(){return[Hg]})),_:1})])])}}});n("bf43");const Ug=pn()(qg,[["__scopeId","data-v-e2b465d2"]]);var Gg=Ug,Xg={class:"export-dialog"},Yg={class:"tabs"},Zg=["onClick"],Wg={class:"content"},Jg=Object(y["defineComponent"])({__name:"index",setup:function(e){var t=ie(),n=Object(g["c"])(t),c=n.dialogForExport,o=t.setDialogForExport,l=[{key:"pptist",label:"导出 pptist 文件"},{key:"pptx",label:"导出 PPTX"},{key:"image",label:"导出图片"},{key:"json",label:"导出 JSON"},{key:"pdf",label:"打印 / 导出 PDF"}],a=Object(y["computed"])((function(){var e={image:Iy,json:zy,pdf:ug,pptx:Vg,pptist:Gg};return e[c.value]||null}));return function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Xg,[Object(y["createElementVNode"])("div",Yg,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(l,(function(e){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["tab",{active:e.key===Object(y["unref"])(c)}]),key:e.key,onClick:function(t){return Object(y["unref"])(o)(e.key)}},Object(y["toDisplayString"])(e.label),11,Zg)})),64))]),Object(y["createElementVNode"])("div",Wg,[(Object(y["openBlock"])(),Object(y["createBlock"])(Object(y["resolveDynamicComponent"])(Object(y["unref"])(a)),{onClose:t[0]||(t[0]=function(e){return Object(y["unref"])(o)("")})},null,32))])])}}});n("d970");const Qg=pn()(Jg,[["__scopeId","data-v-1f8f1a8b"]]);var Kg=Qg,$g={class:"pptist-editor"},ex={class:"layout-content"},tx={class:"layout-content-center"},nx=Object(y["defineComponent"])({__name:"index",setup:function(e){var t=ie(),n=Object(g["c"])(t),c=n.dialogForExport,o=function(){return t.setDialogForExport("")},l=Object(y["ref"])(40);return xt(),kt(),function(e,t){var n=Object(y["resolveComponent"])("Modal");return Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,[Object(y["createElementVNode"])("div",$g,[Object(y["createVNode"])(ec,{class:"layout-header"}),Object(y["createElementVNode"])("div",ex,[Object(y["createVNode"])(Vf,{class:"layout-content-left"}),Object(y["createElementVNode"])("div",tx,[Object(y["createVNode"])(bf,{class:"center-top"}),Object(y["createVNode"])(hd,{class:"center-body",style:Object(y["normalizeStyle"])({height:"calc(100% - ".concat(l.value+40,"px)")})},null,8,["style"]),Object(y["createVNode"])(cy,{class:"center-bottom",height:l.value,"onUpdate:height":t[0]||(t[0]=function(e){return l.value=e}),style:Object(y["normalizeStyle"])({height:"".concat(l.value,"px")})},null,8,["height","style"])]),Object(y["createVNode"])(Kh,{class:"layout-content-right"})])]),Object(y["createVNode"])(n,{visible:!!Object(y["unref"])(c),footer:null,centered:"",closable:!1,width:680,destroyOnClose:"",onCancel:t[1]||(t[1]=function(e){return o()})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Kg)]})),_:1},8,["visible"])],64)}}});n("0be5");const cx=pn()(nx,[["__scopeId","data-v-328e1a4e"]]);var ox=cx,lx=function(){var e=le(),t=Object(g["c"])(e),n=t.slides,c=t.slideIndex,o=t.formatedAnimations,l=Object(y["ref"])(0),a=Object(y["ref"])(!1),r=Object(y["ref"])(c.value),i=function e(){if(!a.value){var t=o.value[l.value],n=t.animations,c=t.autoNext;l.value+=1,a.value=!0;var r,i=0,u=Object(L["a"])(n);try{var d=function(){var t=r.value,o=document.querySelector("#screen-element-".concat(t.elId," [class^=base-element-]"));if(!o)return i+=1,"continue";var l="".concat(Gv).concat(t.effect);o.style.removeProperty("--animate-duration");var u,d=Object(L["a"])(o.classList);try{for(d.s();!(u=d.n()).done;){var s=u.value;-1!==s.indexOf(Gv)&&o.classList.remove(s,"".concat(Gv,"animated"))}}catch(b){d.e(b)}finally{d.f()}o.style.setProperty("--animate-duration","".concat(t.duration,"ms")),o.classList.add(l,"".concat(Gv,"animated"));var f=function(){"out"!==t.type&&(o.style.removeProperty("--animate-duration"),o.classList.remove(l,"".concat(Gv,"animated"))),i+=1,i===n.length&&(a.value=!1,c&&e())};o.addEventListener("animationend",f,{once:!0})};for(u.s();!(r=u.n()).done;)d()}catch(s){u.e(s)}finally{u.f()}}},u=function(){l.value-=1;var e,t=o.value[l.value].animations,n=Object(L["a"])(t);try{for(n.s();!(e=n.n()).done;){var c=e.value,a=document.querySelector("#screen-element-".concat(c.elId," [class^=base-element-]"));if(a){a.style.removeProperty("--animate-duration");var r,i=Object(L["a"])(a.classList);try{for(i.s();!(r=i.n()).done;){var u=r.value;-1!==u.indexOf(Gv)&&a.classList.remove(u,"".concat(Gv,"animated"))}}catch(d){i.e(d)}finally{i.f()}}}}catch(d){n.e(d)}finally{n.f()}t.every((function(e){return"attention"===e.type}))&&b()},d=Object(y["ref"])(0),s=function(){d.value&&(clearInterval(d.value),d.value=0)};Object(y["onUnmounted"])(s);var f=Object(te["throttle"])((function(e){Se["a"].success(e)}),1e3,{leading:!0,trailing:!1}),b=function(){o.value.length&&l.value>0?u():c.value>0?(e.updateSlideIndex(c.value-1),c.value0&&p()}),500,{leading:!0,trailing:!1}),v=Object(y["ref"])(null),j=function(e){v.value={x:e.changedTouches[0].pageX,y:e.changedTouches[0].pageY}},h=function(e){if(v.value){var t=Math.abs(v.value.x-e.changedTouches[0].pageX),n=e.changedTouches[0].pageY-v.value.y;Math.abs(n)>t&&Math.abs(n)>50&&(v.value=null,n>0?b():p())}},x=function(e){var t=e.key.toUpperCase();t===V.UP||t===V.LEFT||t===V.PAGEUP?b():t!==V.DOWN&&t!==V.RIGHT&&t!==V.SPACE&&t!==V.ENTER&&t!==V.PAGEDOWN||p()};Object(y["onMounted"])((function(){return document.addEventListener("keydown",x)})),Object(y["onUnmounted"])((function(){return document.removeEventListener("keydown",x)}));var k=function(){e.updateSlideIndex(c.value-1),l.value=0},C=function(){e.updateSlideIndex(c.value+1),l.value=0},N=function(t){e.updateSlideIndex(t),l.value=0},w=function(t){var c=n.value.findIndex((function(e){return e.id===t}));-1!==c&&(e.updateSlideIndex(c),l.value=0)};return{autoPlayTimer:d,autoPlay:O,closeAutoPlay:s,mousewheelListener:m,touchStartListener:j,touchEndListener:h,turnPrevSlide:k,turnNextSlide:C,turnSlideToIndex:N,turnSlideToId:w,execPrev:b,execNext:p,animationIndex:l}},ax=function(e){var t=le(),n=Object(g["c"])(t),c=n.viewportRatio,o=Object(y["ref"])(0),l=Object(y["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===c.value?(t=r,n=i):i/r>c.value?(t=r,n=r*c.value):(t=i/c.value,n=i),o.value=t,l.value=n};return Object(y["onMounted"])((function(){a(),window.addEventListener("resize",a)})),Object(y["onUnmounted"])((function(){window.removeEventListener("resize",a)})),{slideWidth:o,slideHeight:l}},rx=function(){var e=Object(y["ref"])(!0),t=Object(y["ref"])(!0),n=yt(),c=n.exitScreening,o=function(){e.value=ht(),!e.value&&t.value&&c(),t.value=!0};Object(y["onMounted"])((function(){e.value=ht(),document.addEventListener("fullscreenchange",o),document.addEventListener("webkitfullscreenchange",o)})),Object(y["onUnmounted"])((function(){document.removeEventListener("fullscreenchange",o),document.removeEventListener("webkitfullscreenchange",o)}));var l=function(){e.value&&(t.value=!1,jt())};return{fullscreenState:e,manualExitFullscreen:l}},ix=Object(y["defineComponent"])({__name:"ScreenChartElement",props:{elementInfo:{type:Object,required:!0}},setup:function(e){return function(t,n){return Object(y["openBlock"])(),Object(y["createBlock"])(Nu,{class:"screen-element-chart",elementInfo:e.elementInfo},null,8,["elementInfo"])}}});const ux=ix;var dx=ux,sx={class:"element-content"},fx=Object(y["defineComponent"])({__name:"ScreenVideoElement",props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(g["c"])(le()),n=t.currentSlide,c=Object(y["inject"])(tc)||Object(y["ref"])(1),o=Object(y["inject"])(nc)||Object(y["ref"])(""),l=Object(y["computed"])((function(){return n.value.id===o.value}));return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"screen-element-video",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",sx,[Object(y["unref"])(l)?(Object(y["openBlock"])(),Object(y["createBlock"])(Wa,{key:0,width:e.elementInfo.width,height:e.elementInfo.height,src:e.elementInfo.src,poster:e.elementInfo.poster,scale:Object(y["unref"])(c)},null,8,["width","height","src","poster","scale"])):Object(y["createCommentVNode"])("",!0)])],4)],4)}}});n("7a78");const bx=pn()(fx,[["__scopeId","data-v-76457308"]]);var px=bx,Ox={class:"element-content"},mx=Object(y["defineComponent"])({__name:"ScreenAudioElement",props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=e,n=Object(g["c"])(le()),c=n.viewportRatio,o=n.currentSlide,l=Object(y["inject"])(tc)||Object(y["ref"])(1),a=Object(y["inject"])(nc)||Object(y["ref"])(""),r=Object(y["computed"])((function(){return o.value.id===a.value})),i=Object(y["computed"])((function(){return Math.min(t.elementInfo.width,t.elementInfo.height)+"px"})),u=Object(y["computed"])((function(){var e=tt,n=tt*c.value,o=280/l.value,a=50/l.value,r=t.elementInfo.width,i=t.elementInfo.height,u=t.elementInfo.left,d=t.elementInfo.top,s=0,f=i;return u+o>=e&&(s=r-o),d+i+a>=n&&(f=-a),{left:s+"px",top:f+"px"}})),d=Object(y["ref"])(),s=function(){d.value&&d.value.toggle()};return function(t,n){var c=Object(y["resolveComponent"])("IconVolumeNotice");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"screen-element-audio",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",Ox,[Object(y["createVNode"])(c,{class:"audio-icon",style:Object(y["normalizeStyle"])({fontSize:Object(y["unref"])(i),color:e.elementInfo.color}),onClick:n[0]||(n[0]=function(e){return s()})},null,8,["style"]),Object(y["unref"])(r)?(Object(y["openBlock"])(),Object(y["createBlock"])(vr,{key:0,class:"audio-player",ref_key:"audioPlayerRef",ref:d,style:Object(y["normalizeStyle"])(Object(S["a"])({},Object(y["unref"])(u))),src:e.elementInfo.src,loop:e.elementInfo.loop,autoplay:e.elementInfo.autoplay,scale:Object(y["unref"])(l)},null,8,["style","src","loop","autoplay","scale"])):Object(y["createCommentVNode"])("",!0)])],4)],4)}}});n("3010");const vx=pn()(mx,[["__scopeId","data-v-1172b8ee"]]);var jx=vx,hx=["id","title"],yx=Object(y["defineComponent"])({__name:"ScreenElement",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=e,n=Object(y["computed"])((function(){var e,n=(e={},Object(pe["a"])(e,Ve.IMAGE,lu),Object(pe["a"])(e,Ve.TEXT,uu),Object(pe["a"])(e,Ve.SHAPE,vu),Object(pe["a"])(e,Ve.LINE,xu),Object(pe["a"])(e,Ve.CHART,dx),Object(pe["a"])(e,Ve.TABLE,Mu),Object(pe["a"])(e,Ve.LATEX,Hu),Object(pe["a"])(e,Ve.VIDEO,px),Object(pe["a"])(e,Ve.AUDIO,jx),e);return n[t.elementInfo.type]||null})),c=Object(g["c"])(le()),o=c.formatedAnimations,l=c.theme,a=Object(y["computed"])((function(){var e=o.value.findIndex((function(e){var n=e.animations.map((function(e){return e.elId}));return n.includes(t.elementInfo.id)}));if(-1===e)return!1;if(eObject(y["unref"])(o),hide:(n===Object(y["unref"])(o)-1||n===Object(y["unref"])(o)+1)&&t.turningMode!==Object(y["unref"])(l).turningMode}]),key:t.id},[Math.abs(Object(y["unref"])(o)-n)<2||null!==(c=t.animations)&&void 0!==c&&c.length?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:"slide-content",style:Object(y["normalizeStyle"])({width:e.slideWidth+"px",height:e.slideHeight+"px"})},[Object(y["createVNode"])(Nx,{slide:t,scale:Object(y["unref"])(a),animationIndex:e.animationIndex,turnSlideToId:e.turnSlideToId,manualExitFullscreen:e.manualExitFullscreen},null,8,["slide","scale","animationIndex","turnSlideToId","manualExitFullscreen"])],4)):Object(y["createCommentVNode"])("",!0)],2)})),128))])}}});n("9557");const Vx=pn()(Ex,[["__scopeId","data-v-77a3e620"]]);var Ix=Vx,Bx={class:"slide-thumbnails"},Sx={class:"return-button"},Lx={class:"slide-thumbnails-content"},_x=["onClick"],Tx=Object(y["defineComponent"])({__name:"SlideThumbnails",props:{turnSlideToIndex:{type:Function,required:!0}},emits:["close"],setup:function(e,t){var n=t.emit,c=e,o=Object(g["c"])(le()),l=o.slides,a=o.slideIndex,r=pf(),i=r.slidesLoadLimit,u=function(e){c.turnSlideToIndex(e),n("close")};return function(e,t){var c=Object(y["resolveComponent"])("IconArrowCircleLeft");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Bx,[Object(y["createElementVNode"])("div",Sx,[Object(y["createVNode"])(c,{class:"icon",onClick:t[0]||(t[0]=function(e){return n("close")})})]),Object(y["createElementVNode"])("div",Lx,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(l),(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["thumbnail",{active:t===Object(y["unref"])(a)}]),key:e.id,onClick:function(e){return u(t)}},[Object(y["createVNode"])(nd,{slide:e,size:150,visible:t=c?a:l-i/c*l,-1===b?n:1*n/3+2*b/3},I=function(e,t){var n=(new Date).getTime();if("pen"===c.model){var o=E(e,t),l=n-f,a=V(o,l);N(e,t,a),b=a}else"mark"===c.model?N(e,t,u.value):w(e,t);d={x:e,y:t},f=(new Date).getTime()},B=function(e){if(!a.value)return[0,0];var t=e instanceof MouseEvent?e:e.changedTouches[0],n=a.value.getBoundingClientRect(),c=t.pageX-n.x,o=t.pageY-n.y;return[c,o]},S=function(e){var t=B(e),n=Object(Oe["a"])(t,2),c=n[0],o=n[1],l=c/j.value,a=o/h.value;s=!0,d={x:l,y:a},f=(new Date).getTime(),e instanceof MouseEvent||(p.value={x:c,y:o},O.value=!0)},L=function(e){var t=B(e),n=Object(Oe["a"])(t,2),c=n[0],o=n[1],l=c/j.value,a=o/h.value;p.value={x:c,y:o},s&&I(l,a)},_=function(){s&&(s=!1)},T=function(){o&&a.value&&o.clearRect(0,0,a.value.width,a.value.height)},M=function(){var e;return null===(e=a.value)||void 0===e?void 0:e.toDataURL()},D=function(e){var t=new Image;t.src=e,t.onload=function(){o&&o.drawImage(t,0,0)}},z=Object(te["throttle"])((function(e){"eraser"===c.model&&(e.deltaY<0&&i.value<200?i.value+=20:e.deltaY>0&&i.value>20&&(i.value-=20)),"pen"===c.model&&(e.deltaY<0&&r.value<10?r.value+=2:e.deltaY>0&&r.value>4&&(r.value-=2)),"mark"===c.model&&(e.deltaY<0&&u.value<40?u.value+=4:e.deltaY>0&&u.value>16&&(u.value-=4))}),300,{leading:!0,trailing:!1});return n({clearCanvas:T,getImageDataURL:M,setImageDataURL:D}),function(t,n){var c=Object(y["resolveComponent"])("IconWrite"),o=Object(y["resolveComponent"])("IconHighLight");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"writing-board",ref_key:"writingBoardRef",ref:l},[e.blackboard?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",zx)):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("canvas",{class:"canvas",ref_key:"canvasRef",ref:a,style:Object(y["normalizeStyle"])({width:m.value+"px",height:v.value+"px"}),onMousedown:n[0]||(n[0]=function(e){return S(e)}),onMousemove:n[1]||(n[1]=function(e){return L(e)}),onMouseup:n[2]||(n[2]=function(e){return _()}),onTouchstart:n[3]||(n[3]=function(e){return S(e)}),onTouchmove:n[4]||(n[4]=function(e){return L(e)}),onTouchend:n[5]||(n[5]=function(e){_(),O.value=!1}),onMouseleave:n[6]||(n[6]=function(e){_(),O.value=!1}),onMouseenter:n[7]||(n[7]=function(e){return O.value=!0}),onWheel:n[8]||(n[8]=function(e){return Object(y["unref"])(z)(e)})},null,36),O.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:1},["eraser"===e.model?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:"eraser",style:Object(y["normalizeStyle"])({left:p.value.x-i.value/2+"px",top:p.value.y-i.value/2+"px",width:i.value+"px",height:i.value+"px"})},null,4)):Object(y["createCommentVNode"])("",!0),"pen"===e.model?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:1,class:"pen",style:Object(y["normalizeStyle"])({left:p.value.x-r.value/2+"px",top:p.value.y-6*r.value+r.value/2+"px",color:e.color})},["pen"===e.model?(Object(y["openBlock"])(),Object(y["createBlock"])(c,{key:0,class:"icon",size:6*r.value},null,8,["size"])):Object(y["createCommentVNode"])("",!0)],4)):Object(y["createCommentVNode"])("",!0),"mark"===e.model?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:2,class:"pen",style:Object(y["normalizeStyle"])({left:p.value.x-u.value/2+"px",top:p.value.y+"px",color:e.color})},["mark"===e.model?(Object(y["openBlock"])(),Object(y["createBlock"])(o,{key:0,class:"icon",size:1.5*u.value},null,8,["size"])):Object(y["createCommentVNode"])("",!0)],4)):Object(y["createCommentVNode"])("",!0)],64)):Object(y["createCommentVNode"])("",!0)],512)}}});n("5fa4");const Ax=pn()(Fx,[["__scopeId","data-v-1d4eb7f0"]]);var Rx=Ax,Px={class:"writing-board-tool"},Hx={class:"colors"},qx=["onClick"],Ux=Object(y["defineComponent"])({__name:"WritingBoardTool",props:{slideWidth:{type:Number,required:!0},slideHeight:{type:Number,required:!0},position:{type:Object,default:function(){return{right:"5px",bottom:"5px"}}}},emits:["close"],setup:function(e,t){var n=t.emit,c=["#000000","#ffffff","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c","#ffff3a"],o=Object(y["ref"])(),l=Object(y["ref"])("#e2534d"),a=Object(y["ref"])("pen"),r=Object(y["ref"])(!1),i=function(e){a.value=e},u=function(){o.value.clearCanvas()},d=function(e){"eraser"===a.value&&(a.value="pen"),l.value=e},s=function(){n("close")};return function(t,n){var f=Object(y["resolveComponent"])("IconWrite"),b=Object(y["resolveComponent"])("Tooltip"),p=Object(y["resolveComponent"])("IconHighLight"),O=Object(y["resolveComponent"])("IconErase"),m=Object(y["resolveComponent"])("IconClear"),v=Object(y["resolveComponent"])("IconFill"),j=Object(y["resolveComponent"])("IconClose");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Px,[Object(y["createElementVNode"])("div",{class:"writing-board-wrap",style:Object(y["normalizeStyle"])({width:e.slideWidth+"px",height:e.slideHeight+"px"})},[Object(y["createVNode"])(Rx,{ref_key:"writingBoardRef",ref:o,color:l.value,blackboard:r.value,model:a.value},null,8,["color","blackboard","model"])],4),Object(y["createElementVNode"])("div",{class:"tools",style:Object(y["normalizeStyle"])(e.position)},[Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"画笔"},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["btn",{active:"pen"===a.value}]),onClick:n[0]||(n[0]=function(e){return i("pen")})},[Object(y["createVNode"])(f,{class:"icon"})],2)]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"荧光笔"},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["btn",{active:"mark"===a.value}]),onClick:n[1]||(n[1]=function(e){return i("mark")})},[Object(y["createVNode"])(p,{class:"icon"})],2)]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"橡皮擦"},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["btn",{active:"eraser"===a.value}]),onClick:n[2]||(n[2]=function(e){return i("eraser")})},[Object(y["createVNode"])(O,{class:"icon"})],2)]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"清除墨迹"},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",{class:"btn",onClick:n[3]||(n[3]=function(e){return u()})},[Object(y["createVNode"])(m,{class:"icon"})])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"黑板"},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["btn",{active:r.value}]),onClick:n[4]||(n[4]=function(e){return r.value=!r.value})},[Object(y["createVNode"])(v,{class:"icon"})],2)]})),_:1},8,["mouseEnterDelay"]),Object(y["createElementVNode"])("div",Hx,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(c,(function(e){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["color",{active:e===l.value}]),key:e,style:Object(y["normalizeStyle"])({backgroundColor:e}),onClick:function(t){return d(e)}},null,14,qx)})),64))]),Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"关闭画笔"},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",{class:"btn",onClick:n[5]||(n[5]=function(e){return s()})},[Object(y["createVNode"])(j,{class:"icon"})])]})),_:1},8,["mouseEnterDelay"])],4)])}}});n("4f60");const Gx=pn()(Ux,[["__scopeId","data-v-876081a6"]]);var Xx=Gx,Yx={class:"tools-left"},Zx={class:"content"},Wx=Object(y["defineComponent"])({__name:"BaseView",props:{changeViewMode:{type:Function,required:!0}},setup:function(e){var t=e,n=Object(g["c"])(le()),c=n.slides,o=n.slideIndex,l=lx(),a=l.autoPlayTimer,r=l.autoPlay,i=l.closeAutoPlay,u=l.mousewheelListener,d=l.touchStartListener,s=l.touchEndListener,f=l.turnPrevSlide,b=l.turnNextSlide,p=l.turnSlideToIndex,O=l.turnSlideToId,m=l.execPrev,v=l.execNext,j=l.animationIndex,h=ax(),x=h.slideWidth,k=h.slideHeight,C=yt(),N=C.exitScreening,w=rx(),E=w.fullscreenState,V=w.manualExitFullscreen,I=Object(y["ref"])(!1),B=Object(y["ref"])(!1),S=Object(y["ref"])(!1),L=Object(y["ref"])(!1),_=function(){return[{text:"上一页",subText:"↑ ←",disable:o.value<=0,handler:function(){return f()}},{text:"下一页",subText:"↓ →",disable:o.value>=c.value.length-1,handler:function(){return b()}},{text:"第一页",disable:0===o.value,handler:function(){return p(0)}},{text:"最后一页",disable:o.value===c.value.length-1,handler:function(){return p(c.value.length-1)}},{divider:!0},{text:"显示工具栏",handler:function(){return I.value=!0}},{text:"查看所有幻灯片",handler:function(){return S.value=!0}},{text:"画笔工具",handler:function(){return B.value=!0}},{text:"演讲者视图",handler:function(){return t.changeViewMode("presenter")}},{divider:!0},{text:a.value?"取消自动放映":"自动放映",handler:a.value?i:r},{text:"结束放映",subText:"ESC",handler:N}]};return function(t,n){var l=Object(y["resolveComponent"])("IconLeftTwo"),a=Object(y["resolveComponent"])("IconRightTwo"),r=Object(y["resolveComponent"])("IconWrite"),i=Object(y["resolveComponent"])("Tooltip"),f=Object(y["resolveComponent"])("IconMagic"),b=Object(y["resolveComponent"])("IconListView"),h=Object(y["resolveComponent"])("IconOffScreenOne"),g=Object(y["resolveComponent"])("IconFullScreenOne"),C=Object(y["resolveComponent"])("IconPower"),w=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["base-view",{"laser-pen":L.value}])},[Object(y["withDirectives"])(Object(y["createVNode"])(Ix,{slideWidth:Object(y["unref"])(x),slideHeight:Object(y["unref"])(k),animationIndex:Object(y["unref"])(j),turnSlideToId:Object(y["unref"])(O),manualExitFullscreen:Object(y["unref"])(V),onWheel:n[0]||(n[0]=function(e){return Object(y["unref"])(u)(e)}),onTouchstart:n[1]||(n[1]=function(e){return Object(y["unref"])(d)(e)}),onTouchend:n[2]||(n[2]=function(e){return Object(y["unref"])(s)(e)})},null,8,["slideWidth","slideHeight","animationIndex","turnSlideToId","manualExitFullscreen"]),[[w,_]]),S.value?(Object(y["openBlock"])(),Object(y["createBlock"])(Dx,{key:0,turnSlideToIndex:Object(y["unref"])(p),onClose:n[3]||(n[3]=function(e){return S.value=!1})},null,8,["turnSlideToIndex"])):Object(y["createCommentVNode"])("",!0),B.value?(Object(y["openBlock"])(),Object(y["createBlock"])(Xx,{key:1,slideWidth:Object(y["unref"])(x),slideHeight:Object(y["unref"])(k),onClose:n[4]||(n[4]=function(e){return B.value=!1})},null,8,["slideWidth","slideHeight"])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("div",Yx,[Object(y["createVNode"])(l,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:n[5]||(n[5]=function(e){return Object(y["unref"])(m)()})}),Object(y["createVNode"])(a,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:n[6]||(n[6]=function(e){return Object(y["unref"])(v)()})})]),Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["tools-right",{visible:I.value}]),onMouseleave:n[14]||(n[14]=function(e){return I.value=!1}),onMouseenter:n[15]||(n[15]=function(e){return I.value=!0})},[Object(y["createElementVNode"])("div",Zx,[Object(y["createElementVNode"])("div",{class:"tool-btn page-number",onClick:n[7]||(n[7]=function(e){return S.value=!0})},"幻灯片 "+Object(y["toDisplayString"])(Object(y["unref"])(o)+1)+" / "+Object(y["toDisplayString"])(Object(y["unref"])(c).length),1),Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"画笔工具"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{class:"tool-btn",onClick:n[8]||(n[8]=function(e){return B.value=!0})})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"激光笔"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{class:Object(y["normalizeClass"])(["tool-btn",{active:L.value}]),onClick:n[9]||(n[9]=function(e){return L.value=!L.value})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"演讲者视图"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b,{class:"tool-btn",onClick:n[10]||(n[10]=function(t){return e.changeViewMode("presenter")})})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:Object(y["unref"])(E)?"退出全屏":"进入全屏"},{default:Object(y["withCtx"])((function(){return[Object(y["unref"])(E)?(Object(y["openBlock"])(),Object(y["createBlock"])(h,{key:0,class:"tool-btn",onClick:n[11]||(n[11]=function(e){return Object(y["unref"])(V)()})})):(Object(y["openBlock"])(),Object(y["createBlock"])(g,{key:1,class:"tool-btn",onClick:n[12]||(n[12]=function(e){return Object(y["unref"])(vt)()})}))]})),_:1},8,["mouseEnterDelay","title"]),Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"结束放映"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(C,{class:"tool-btn",onClick:n[13]||(n[13]=function(e){return Object(y["unref"])(N)()})})]})),_:1},8,["mouseEnterDelay"])])],34)],2)}}});n("4a2e");const Jx=pn()(Wx,[["__scopeId","data-v-d72d6626"]]);var Qx=Jx,Kx=function(e){return Object(y["pushScopeId"])("data-v-5fba3eec"),e=e(),Object(y["popScopeId"])(),e},$x={class:"presenter-view"},ek={class:"toolbar"},tk=Kx((function(){return Object(y["createElementVNode"])("span",null,"普通视图",-1)})),nk=Kx((function(){return Object(y["createElementVNode"])("span",null,"画笔",-1)})),ck=Kx((function(){return Object(y["createElementVNode"])("span",null,"激光笔",-1)})),ok=Kx((function(){return Object(y["createElementVNode"])("span",null,"结束放映",-1)})),lk={class:"content"},ak=["onClick"],rk={class:"remark"},ik={class:"header"},uk=Kx((function(){return Object(y["createElementVNode"])("span",null,"演讲者备注",-1)})),dk=["innerHTML"],sk={class:"remark-scale"},fk=Object(y["defineComponent"])({__name:"PresenterView",props:{changeViewMode:{type:Function,required:!0}},setup:function(e){var t=e,n=Object(g["c"])(le()),c=n.slides,o=n.slideIndex,l=n.viewportRatio,a=n.currentSlide,r=Object(y["ref"])(),i=Object(y["ref"])(),u=Object(y["ref"])(!1),d=Object(y["ref"])(!1),s=lx(),f=s.mousewheelListener,b=s.touchStartListener,p=s.touchEndListener,O=s.turnPrevSlide,m=s.turnNextSlide,v=s.turnSlideToIndex,j=s.turnSlideToId,h=s.animationIndex,x=ax(r),k=x.slideWidth,C=x.slideHeight,N=yt(),w=N.exitScreening,E=pf(),V=E.slidesLoadLimit,I=rx(),B=I.fullscreenState,S=I.manualExitFullscreen,L=Object(y["ref"])(16),_=Object(y["computed"])((function(){return Ke(a.value.remark||"无备注")})),T=function(e){i.value&&i.value.scrollBy(e.deltaY,0)},M=function(e){e<12||e>40||(L.value=e)};Object(y["watch"])(o,(function(){Object(y["nextTick"])((function(){if(i.value){var e=i.value.querySelector(".thumbnail.active");if(e){var t=i.value.offsetWidth,n=e.offsetLeft;i.value.scrollTo({left:n-t/2,behavior:"smooth"})}}}))}));var D=function(){return[{text:"上一页",subText:"↑ ←",disable:o.value<=0,handler:function(){return O()}},{text:"下一页",subText:"↓ →",disable:o.value>=c.value.length-1,handler:function(){return m()}},{text:"第一页",disable:0===o.value,handler:function(){return v(0)}},{text:"最后一页",disable:o.value===c.value.length-1,handler:function(){return v(c.value.length-1)}},{divider:!0},{text:"画笔工具",handler:function(){return u.value=!0}},{text:"普通视图",handler:function(){return t.changeViewMode("base")}},{divider:!0},{text:"结束放映",subText:"ESC",handler:w}]};return function(t,n){var a=Object(y["resolveComponent"])("IconListView"),s=Object(y["resolveComponent"])("IconWrite"),O=Object(y["resolveComponent"])("IconMagic"),m=Object(y["resolveComponent"])("IconOffScreenOne"),g=Object(y["resolveComponent"])("Divider"),x=Object(y["resolveComponent"])("IconPower"),N=Object(y["resolveComponent"])("IconMinus"),E=Object(y["resolveComponent"])("IconPlus"),I=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",$x,[Object(y["createElementVNode"])("div",ek,[Object(y["createElementVNode"])("div",{class:"tool-btn",onClick:n[0]||(n[0]=function(t){return e.changeViewMode("base")})},[Object(y["createVNode"])(a,{class:"tool-icon"}),tk]),Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["tool-btn",{active:u.value}]),onClick:n[1]||(n[1]=function(e){return u.value=!u.value})},[Object(y["createVNode"])(s,{class:"tool-icon"}),nk],2),Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["tool-btn",{active:d.value}]),onClick:n[2]||(n[2]=function(e){return d.value=!d.value})},[Object(y["createVNode"])(O,{class:"tool-icon"}),ck],2),Object(y["createElementVNode"])("div",{class:"tool-btn",onClick:n[3]||(n[3]=function(){return Object(y["unref"])(B)?Object(y["unref"])(S)():Object(y["unref"])(vt)()})},[Object(y["unref"])(B)?(Object(y["openBlock"])(),Object(y["createBlock"])(m,{key:0,class:"tool-icon"})):(Object(y["openBlock"])(),Object(y["createBlock"])(m,{key:1,class:"tool-icon"})),Object(y["createElementVNode"])("span",null,Object(y["toDisplayString"])(Object(y["unref"])(B)?"退出全屏":"全屏"),1)]),Object(y["createVNode"])(g,{class:"divider"}),Object(y["createElementVNode"])("div",{class:"tool-btn",onClick:n[4]||(n[4]=function(e){return Object(y["unref"])(w)()})},[Object(y["createVNode"])(x,{class:"tool-icon"}),ok])]),Object(y["createElementVNode"])("div",lk,[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["slide-list-wrap",{"laser-pen":d.value}]),ref_key:"slideListWrapRef",ref:r},[Object(y["withDirectives"])(Object(y["createVNode"])(Ix,{slideWidth:Object(y["unref"])(k),slideHeight:Object(y["unref"])(C),animationIndex:Object(y["unref"])(h),turnSlideToId:Object(y["unref"])(j),manualExitFullscreen:Object(y["unref"])(S),onWheel:n[5]||(n[5]=function(e){return Object(y["unref"])(f)(e)}),onTouchstart:n[6]||(n[6]=function(e){return Object(y["unref"])(b)(e)}),onTouchend:n[7]||(n[7]=function(e){return Object(y["unref"])(p)(e)})},null,8,["slideWidth","slideHeight","animationIndex","turnSlideToId","manualExitFullscreen"]),[[I,D]]),u.value?(Object(y["openBlock"])(),Object(y["createBlock"])(Xx,{key:0,slideWidth:Object(y["unref"])(k),slideHeight:Object(y["unref"])(C),position:{left:"75px",top:"5px"},onClose:n[8]||(n[8]=function(e){return u.value=!1})},null,8,["slideWidth","slideHeight"])):Object(y["createCommentVNode"])("",!0)],2),Object(y["createElementVNode"])("div",{class:"thumbnails",ref_key:"thumbnailsRef",ref:i,onWheel:n[9]||(n[9]=Object(y["withModifiers"])((function(e){return T(e)}),["prevent"]))},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(c),(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["thumbnail",{active:t===Object(y["unref"])(o)}]),key:e.id,onClick:function(e){return Object(y["unref"])(v)(t)}},[Object(y["createVNode"])(nd,{slide:e,size:120/Object(y["unref"])(l),visible:t新添加文本

')},p=function(e){e&&e[0]&&et(e[0]).then((function(e){return s(e)}))},O=function(e){var t={viewBox:[200,200],path:"M 0 0 L 200 0 L 200 200 L 0 200 Z"},n={viewBox:[200,200],path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z"},o={square:t,round:n},l=200;f({left:(tt-l)/2,top:(tt*c.value-l)/2,width:l,height:l},o[e])},m=Object(y["computed"])((function(){var e;return(null===(e=o.value)||void 0===e?void 0:e.remark)||""})),v=function(e){var n=e.target.value;t.updateSlide({remark:n})};return function(e,t){var n=Object(y["resolveComponent"])("IconPlus"),c=Object(y["resolveComponent"])("Button"),o=Object(y["resolveComponent"])("IconCopy"),l=Object(y["resolveComponent"])("IconDelete"),u=Object(y["resolveComponent"])("ButtonGroup"),d=Object(y["resolveComponent"])("IconFontSize"),s=Object(y["resolveComponent"])("IconPicture"),f=Object(y["resolveComponent"])("FileInput"),j=Object(y["resolveComponent"])("IconSquare"),h=Object(y["resolveComponent"])("IconRound");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Sk,[Object(y["createElementVNode"])("div",Lk,[Object(y["createElementVNode"])("textarea",{value:Object(y["unref"])(m),placeholder:"点击输入演讲者备注",onInput:t[0]||(t[0]=function(e){return v(e)})},null,40,_k)]),Object(y["createElementVNode"])("div",Tk,[Object(y["createVNode"])(u,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(c,{style:{flex:"1"},onClick:t[1]||(t[1]=function(e){return Object(y["unref"])(a)()})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n,{class:"icon"}),Mk]})),_:1}),Object(y["createVNode"])(c,{style:{flex:"1"},onClick:t[2]||(t[2]=function(e){return Object(y["unref"])(r)()})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{class:"icon"}),Dk]})),_:1}),Object(y["createVNode"])(c,{style:{flex:"1"},onClick:t[3]||(t[3]=function(e){return Object(y["unref"])(i)()})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{class:"icon"}),zk]})),_:1})]})),_:1}),Object(y["createVNode"])(u,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(c,{style:{flex:"1"},onClick:t[4]||(t[4]=function(e){return b()})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(d,{class:"icon"}),Fk]})),_:1}),Object(y["createVNode"])(c,{style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{onChange:t[5]||(t[5]=function(e){return p(e)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(s,{class:"icon"}),Ak]})),_:1})]})),_:1}),Object(y["createVNode"])(c,{style:{flex:"1"},onClick:t[6]||(t[6]=function(e){return O("square")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(j,{class:"icon"}),Rk]})),_:1}),Object(y["createVNode"])(c,{style:{flex:"1"},onClick:t[7]||(t[7]=function(e){return O("round")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(h,{class:"icon"}),Pk]})),_:1})]})),_:1})]),Object(y["createVNode"])(Bk)])}}});n("66e8");const qk=pn()(Hk,[["__scopeId","data-v-29fba90e"]]);var Uk=qk,Gk=function(e){return Object(y["pushScopeId"])("data-v-446388c6"),e=e(),Object(y["popScopeId"])(),e},Xk={class:"element-toolbar"},Yk={class:"tabs"},Zk=["onClick"],Wk={class:"content"},Jk={key:0,class:"style"},Qk=Object(y["createTextVNode"])("+"),Kk=Object(y["createTextVNode"])("-"),$k={class:"row-block"},eC=Gk((function(){return Object(y["createElementVNode"])("div",{class:"label"},"文字颜色:",-1)})),tC={class:"colors"},nC=["onClick"],cC={class:"row-block"},oC=Gk((function(){return Object(y["createElementVNode"])("div",{class:"label"},"填充色:",-1)})),lC={class:"colors"},aC=["onClick"],rC={key:1,class:"common"},iC=Object(y["createTextVNode"])(" 复制"),uC=Object(y["createTextVNode"])(" 删除"),dC=Object(y["createTextVNode"])(" 置顶"),sC=Object(y["createTextVNode"])(" 置底"),fC=Object(y["createTextVNode"])(" 上移"),bC=Object(y["createTextVNode"])(" 下移"),pC=Object(y["createTextVNode"])(" 左对齐"),OC=Object(y["createTextVNode"])(" 水平居中"),mC=Object(y["createTextVNode"])(" 右对齐"),vC=Object(y["createTextVNode"])(" 上对齐"),jC=Object(y["createTextVNode"])(" 垂直居中"),hC=Object(y["createTextVNode"])(" 下对齐"),yC=Object(y["defineComponent"])({__name:"ElementToolbar",setup:function(e){var t=["#000000","#ffffff","#eeece1","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c","#c21401","#ff1e02","#ffc12a","#ffff3a","#90cf5b","#00af57"],n=ie(),c=le(),o=Object(g["c"])(n),l=o.handleElement,a=o.handleElementId,r=o.richTextAttrs,i=lt(),u=i.addHistorySnapshot,d=function(e,t){c.updateElement({id:e,props:t}),u()},s=[{key:"style",label:"样式"},{key:"common",label:"布局"}],f=Object(y["ref"])("common"),b=mt(),p=b.orderElement,O=jc(),m=O.alignElementToCanvas,v=rt(),j=v.addElementsFromData,h=st(),x=h.deleteElement,N=function(){var e=JSON.parse(JSON.stringify(l.value));j([e])},w=function(e,t){Ko.emit(so.RICH_TEXT_COMMAND,{action:{command:e,value:t}})},E=function(e){var t;if(l.value){if(("text"===l.value.type||"shape"===l.value.type&&null!==(t=l.value.text)&&void 0!==t&&t.content)&&Ko.emit(so.RICH_TEXT_COMMAND,{action:{command:"color",value:e}}),"table"===l.value.type){for(var n=JSON.parse(JSON.stringify(l.value.data)),c=0;c=a.value?(e-20)/tt:(t-20)/a.value/tt}));Object(y["onMounted"])((function(){i.value.length&&n.setActiveElementIdList([]),0!==o.value&&t.updateSlideIndex(0)}));var m=Object(y["computed"])((function(){return{width:tt*O.value+"px",height:tt*a.value*O.value+"px"}})),v=Object(y["ref"])([]),j=function(){v.value=l.value?JSON.parse(JSON.stringify(l.value.elements)):[]};Object(y["watchEffect"])(j);var h=Oc(v,s,O),x=h.dragElement,k=bc(v,s,O),C=k.scaleElement,N=function(e,t){var c=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];i.value.includes(t.id)||(n.setActiveElementIdList([t.id]),n.setHandleElementId(t.id)),c&&x(e,t)},w=function(){n.setActiveElementIdList([])};return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",SC,[Object(y["createVNode"])(BC,{changeMode:e.changeMode},null,8,["changeMode"]),Object(y["createElementVNode"])("div",{class:"content",ref_key:"contentRef",ref:d,onTouchstart:n[0]||(n[0]=function(e){return w()})},[Object(y["createElementVNode"])("div",{class:"viewport-wrapper",style:Object(y["normalizeStyle"])(Object(y["unref"])(m))},[Object(y["createElementVNode"])("div",{class:"background",style:Object(y["normalizeStyle"])(Object(y["unref"])(p))},null,4),(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(s.value,(function(e,t){return Object(y["openBlock"])(),Object(y["createBlock"])(Ar,{key:t,type:e.type,axis:e.axis,length:e.length,canvasScale:Object(y["unref"])(O)},null,8,["type","axis","length","canvasScale"])})),128)),(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(v.value,(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:e.id},["line"!==e.type?(Object(y["openBlock"])(),Object(y["createBlock"])(Ck,{key:0,elementInfo:e,isSelected:Object(y["unref"])(i).includes(e.id),canvasScale:Object(y["unref"])(O),scaleElement:Object(y["unref"])(C)},null,8,["elementInfo","isSelected","canvasScale","scaleElement"])):Object(y["createCommentVNode"])("",!0)],64)})),128)),Object(y["createElementVNode"])("div",{class:"viewport",style:Object(y["normalizeStyle"])({transform:"scale(".concat(Object(y["unref"])(O),")")})},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(v.value,(function(e,t){return Object(y["openBlock"])(),Object(y["createBlock"])(gk,{key:e.id,elementInfo:e,elementIndex:t+1,selectElement:N},null,8,["elementInfo","elementIndex"])})),128))],4)],4)],544),Object(y["createVNode"])(Uk),Object(y["unref"])(u)?(Object(y["openBlock"])(),Object(y["createBlock"])(xC,{key:0})):Object(y["createCommentVNode"])("",!0)])}}});n("2d86");const _C=pn()(LC,[["__scopeId","data-v-8cdcde82"]]);var TC=_C,MC={class:"header"},DC=Object(y["createTextVNode"])(" 退出播放"),zC=Object(y["defineComponent"])({__name:"MobilePlayer",props:{changeMode:{type:Function,required:!0}},setup:function(e){var t=le(),n=Object(g["c"])(t),c=n.slides,o=n.slideIndex,l=n.currentSlide,a=n.viewportRatio,r=Object(y["ref"])(!1),i=Object(y["ref"])({width:0,height:0});Object(y["onMounted"])((function(){0!==o.value&&t.updateSlideIndex(0),i.value={width:document.body.clientHeight,height:document.body.clientWidth}}));var u=Object(y["computed"])((function(){var e=i.value.height/i.value.width,t=0,n=0;return e>=a.value?(t=i.value.width,n=t*a.value):(n=i.value.height,t=n/a.value),{width:t,height:n}})),d=Object(y["ref"])(null),s=function(e){d.value={x:e.changedTouches[0].pageX,y:e.changedTouches[0].pageY}},f=function(e){if(d.value){var n=Math.abs(d.value.y-e.changedTouches[0].pageY),l=e.changedTouches[0].pageX-d.value.x;Math.abs(l)>n&&Math.abs(l)>50&&(d.value=null,l<0&&o.value>0&&t.updateSlideIndex(o.value-1),l>0&&o.valueObject(y["unref"])(o),hide:(t===Object(y["unref"])(o)-1||t===Object(y["unref"])(o)+1)&&e.turningMode!==Object(y["unref"])(l).turningMode}]),key:e.id},[Math.abs(Object(y["unref"])(o)-t)<2?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:"slide-content",style:Object(y["normalizeStyle"])({width:Object(y["unref"])(u).width+"px",height:Object(y["unref"])(u).height+"px"})},[Object(y["createVNode"])(nd,{slide:e,size:Object(y["unref"])(u).width},null,8,["slide","size"])],4)):Object(y["createCommentVNode"])("",!0)],2)})),128))],32),r.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[Object(y["createElementVNode"])("div",MC,[Object(y["createElementVNode"])("div",{class:"back",onClick:n[3]||(n[3]=function(t){return e.changeMode("preview")})},[Object(y["createVNode"])(a),DC])]),Object(y["createVNode"])(Bk,{class:"thumbnails"})],64)):Object(y["createCommentVNode"])("",!0)],4)}}});n("4f8b");const FC=pn()(zC,[["__scopeId","data-v-5293de3b"]]);var AC=FC,RC={class:"thumbnail-list"},PC={class:"menu"},HC=Object(y["createTextVNode"])(" 编辑"),qC=Object(y["createTextVNode"])(" 播放"),UC=Object(y["defineComponent"])({__name:"MobilePreview",props:{changeMode:{type:Function,required:!0}},setup:function(e){var t=Object(g["c"])(le()),n=t.slides,c=pf(),o=c.slidesLoadLimit,l=Object(y["ref"])(),a=Object(y["ref"])(0);return Object(y["onMounted"])((function(){l.value&&(a.value=l.value.clientWidth)})),function(t,c){var r=Object(y["resolveComponent"])("IconEdit"),i=Object(y["resolveComponent"])("Divider"),u=Object(y["resolveComponent"])("IconFullScreenPlay");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"mobile-preview",ref_key:"mobileRef",ref:l},[Object(y["createElementVNode"])("div",RC,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(n),(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"thumbnail-item",key:e.id},[Object(y["createVNode"])(nd,{slide:e,size:a.value-10,visible:tc?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})}},i=function e(){window.removeEventListener("mousemove",r),window.removeEventListener("mouseup",e)},u=function(e){r(e),window.addEventListener("mousemove",r),window.addEventListener("mouseup",i)};return Object(y["onUnmounted"])(i),function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",mE,[Object(y["createElementVNode"])("div",vE,[Object(y["createVNode"])(pE)]),Object(y["createElementVNode"])("div",{class:"alpha-gradient",style:Object(y["normalizeStyle"])({background:Object(y["unref"])(l)})},null,4),Object(y["createElementVNode"])("div",{class:"alpha-container",ref_key:"alphaRef",ref:a,onMousedown:t[0]||(t[0]=function(e){return u(e)})},[Object(y["createElementVNode"])("div",{class:"alpha-pointer",style:Object(y["normalizeStyle"])({left:100*Object(y["unref"])(o).a+"%"})},hE,4)],544)])}}});n("e83e");const gE=pn()(yE,[["__scopeId","data-v-246b525c"]]);var xE=gE,kE=function(e){return Object(y["pushScopeId"])("data-v-60c3cca1"),e=e(),Object(y["popScopeId"])(),e},CE={class:"hue"},NE=kE((function(){return Object(y["createElementVNode"])("div",{class:"hue-picker"},null,-1)})),wE=[NE],EE=Object(y["defineComponent"])({__name:"Hue",props:{value:{type:Object,required:!0},hue:{type:Number,required:!0}},emits:["colorChange"],setup:function(e,t){var n=t.emit,c=e,o=Object(y["ref"])(0),l=Object(y["ref"])(""),a=Object(y["computed"])((function(){var e=ee()(c.value).toHsl();return-1!==c.hue&&(e.h=c.hue),e})),r=Object(y["computed"])((function(){return 0===a.value.h&&"right"===l.value?"100%":100*a.value.h/360+"%"}));Object(y["watch"])((function(){return c.value}),(function(){var e=ee()(c.value).toHsl(),t=0===e.s?c.hue:e.h;0!==t&&t-o.value>0&&(l.value="right"),0!==t&&t-o.value<0&&(l.value="left"),o.value=t}));var i=Object(y["ref"])(),u=function(e){if(e.preventDefault(),i.value){var t,o,l=i.value.clientWidth,r=i.value.getBoundingClientRect().left+window.pageXOffset,u=e.pageX-r;u<0?t=0:u>l?t=360:(o=100*u/l,t=360*o/100),-1!==c.hue&&a.value.h===t||n("colorChange",{h:t,l:a.value.l,s:a.value.s,a:a.value.a})}},d=function e(){window.removeEventListener("mousemove",u),window.removeEventListener("mouseup",e)},s=function(e){u(e),window.addEventListener("mousemove",u),window.addEventListener("mouseup",d)};return Object(y["onUnmounted"])(d),function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",CE,[Object(y["createElementVNode"])("div",{class:"hue-container",ref_key:"hueRef",ref:i,onMousedown:t[0]||(t[0]=function(e){return s(e)})},[Object(y["createElementVNode"])("div",{class:"hue-pointer",style:Object(y["normalizeStyle"])({left:Object(y["unref"])(r)})},wE,4)],544)])}}});n("179a");const VE=pn()(EE,[["__scopeId","data-v-60c3cca1"]]);var IE=VE,BE=function(e){return Object(y["pushScopeId"])("data-v-d230faf4"),e=e(),Object(y["popScopeId"])(),e},SE=BE((function(){return Object(y["createElementVNode"])("div",{class:"saturation-white"},null,-1)})),LE=BE((function(){return Object(y["createElementVNode"])("div",{class:"saturation-black"},null,-1)})),_E=BE((function(){return Object(y["createElementVNode"])("div",{class:"saturation-circle"},null,-1)})),TE=[_E],ME=Object(y["defineComponent"])({__name:"Saturation",props:{value:{type:Object,required:!0},hue:{type:Number,required:!0}},emits:["colorChange"],setup:function(e,t){var n=t.emit,c=e,o=Object(y["computed"])((function(){var e=ee()(c.value).toHsv();return-1!==c.hue&&(e.h=c.hue),e})),l=Object(y["computed"])((function(){return"hsl(".concat(o.value.h,", 100%, 50%)")})),a=Object(y["computed"])((function(){return-100*o.value.v+1+100+"%"})),r=Object(y["computed"])((function(){return 100*o.value.s+"%"})),i=Object(te["throttle"])((function(e){n("colorChange",e)}),20,{leading:!0,trailing:!1}),u=Object(y["ref"])(),d=function(e){if(e.preventDefault(),u.value){var t=u.value.clientWidth,n=u.value.clientHeight,c=u.value.getBoundingClientRect().left+window.pageXOffset,l=u.value.getBoundingClientRect().top+window.pageYOffset,a=Object(te["clamp"])(e.pageX-c,0,t),r=Object(te["clamp"])(e.pageY-l,0,n),d=a/t,s=Object(te["clamp"])(-r/n+1,0,1);i({h:o.value.h,s:d,v:s,a:o.value.a})}},s=function e(){window.removeEventListener("mousemove",d),window.removeEventListener("mouseup",e)},f=function(e){d(e),window.addEventListener("mousemove",d),window.addEventListener("mouseup",s)};return Object(y["onUnmounted"])(s),function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"saturation",ref_key:"saturationRef",ref:u,style:Object(y["normalizeStyle"])({background:Object(y["unref"])(l)}),onMousedown:t[0]||(t[0]=function(e){return f(e)})},[SE,LE,Object(y["createElementVNode"])("div",{class:"saturation-pointer",style:Object(y["normalizeStyle"])({top:Object(y["unref"])(a),left:Object(y["unref"])(r)})},TE,4)],36)}}});n("0516");const DE=pn()(ME,[["__scopeId","data-v-d230faf4"]]);var zE=DE,FE={class:"editable-input"},AE=["value"],RE=Object(y["defineComponent"])({__name:"EditableInput",props:{value:{type:Object,required:!0}},emits:["colorChange"],setup:function(e,t){var n=t.emit,c=e,o=Object(y["computed"])((function(){var e="";return e=c.value.a<1?ee()(c.value).toHex8String().toUpperCase():ee()(c.value).toHexString().toUpperCase(),e.replace("#","")})),l=function(e){var t=e.target.value;t.length>=6&&n("colorChange",ee()(t).toRgb())};return function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",FE,[Object(y["createElementVNode"])("input",{class:"input-content",value:Object(y["unref"])(o),onInput:t[0]||(t[0]=function(e){return l(e)})},null,40,AE)])}}});n("a9b0");const PE=pn()(RE,[["__scopeId","data-v-2f428dde"]]);var HE=PE,qE={class:"color-picker"},UE={class:"picker-saturation-wrap"},GE={class:"picker-controls"},XE={class:"picker-color-wrap"},YE={class:"picker-sliders"},ZE={class:"picker-hue-wrap"},WE={class:"picker-alpha-wrap"},JE={class:"picker-field"},QE={class:"picker-presets"},KE=["onClick"],$E={class:"picker-gradient-presets"},eV=["onClick"],tV={class:"picker-presets"},nV=["onClick"],cV={key:0,class:"recent-colors-title"},oV={class:"picker-presets"},lV=["onClick"],aV=Object(y["defineComponent"])({__name:"index",props:{modelValue:{type:String,default:"#e86b99"}},emits:["update:modelValue"],setup:function(e,t){var n=t.emit,c=e,o="RECENT_COLORS",l=[["#7f7f7f","#f2f2f2"],["#0d0d0d","#808080"],["#1c1a10","#ddd8c3"],["#0e243d","#c6d9f0"],["#233f5e","#dae5f0"],["#632623","#f2dbdb"],["#4d602c","#eaf1de"],["#3f3150","#e6e0ec"],["#1e5867","#d9eef3"],["#99490f","#fee9da"]],a=function(e,t,n){for(var c=ee()(e).toRgb(),o=ee()(t).toRgb(),l=(o.r-c.r)/n,a=(o.g-c.g)/n,r=(o.b-c.b)/n,i=[],u=0;ut&&(s.value=s.value.slice(0,t))}}),300,{trailing:!0});Object(y["onMounted"])((function(){var e=localStorage.getItem(o);e&&(s.value=JSON.parse(e))})),Object(y["watch"])(s,(function(){var e=JSON.stringify(s.value);localStorage.setItem(o,e)}));var v=function(e){"h"in e?(d.value=e.h,f.value=ee()(e).toRgb()):(d.value=ee()(e).toHsl().h,f.value=e),m()},j=function(){var e="EyeDropper"in window;e?h():g()},h=function(){Se["a"].success("按 ESC 键关闭取色吸管");var e=new window.EyeDropper;e.open().then((function(e){var t=ee()(e.sRGBHex);d.value=t.toHsl().h,f.value=t.toRgb(),m()})).catch((function(){Se["a"].success("关闭取色吸管")}))},g=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(),o=c.left,l=c.top,a=c.width,r=c.height,i=function(e){return(!e.tagName||"FOREIGNOBJECT"!==e.tagName.toUpperCase())&&(!e.classList||!e.classList.contains("operate"))};Object(wt["a"])(e,{filter:i,fontEmbedCSS:"",width:a,height:r,canvasWidth:a,canvasHeight:r,pixelRatio:1}).then((function(e){e.style.cssText="position: absolute; top: ".concat(l,"px; left: ").concat(o,"px; cursor: crosshair;"),t.style.cursor="default",t.appendChild(e);var c=e.getContext("2d");if(c){var a="",r=function(e){var t=e.x,r=e.y,i=t-o,u=r-l,d=Object(Oe["a"])(c.getImageData(i,u,1,1).data,4),s=d[0],f=d[1],b=d[2],p=d[3];a="rgba(".concat(s,", ").concat(f,", ").concat(b,", ").concat((p/255).toFixed(2),")"),n.style.left=t+10+"px",n.style.top=r+10+"px",n.style.backgroundColor=a},i=function(){a="",n.style.left="-100px",n.style.top="-100px",n.style.backgroundColor=""},u=function n(c){if(a&&0===c.button){var o=ee()(a);d.value=o.toHsl().h,f.value=o.toRgb(),m()}document.body.removeChild(t),e.removeEventListener("mousemove",r),e.removeEventListener("mouseleave",i),window.removeEventListener("mousedown",n)};e.addEventListener("mousemove",r),e.addEventListener("mouseleave",i),window.addEventListener("mousedown",u)}})).catch((function(){Se["a"].error("取色吸管初始化失败"),document.body.removeChild(t)}))}};return function(e,t){var n=Object(y["resolveComponent"])("IconNeedle");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",qE,[Object(y["createElementVNode"])("div",UE,[Object(y["createVNode"])(zE,{value:Object(y["unref"])(f),hue:d.value,onColorChange:t[0]||(t[0]=function(e){return v(e)})},null,8,["value","hue"])]),Object(y["createElementVNode"])("div",GE,[Object(y["createElementVNode"])("div",XE,[Object(y["createElementVNode"])("div",{class:"picker-current-color",style:Object(y["normalizeStyle"])({background:Object(y["unref"])(p)})},null,4),Object(y["createVNode"])(pE)]),Object(y["createElementVNode"])("div",YE,[Object(y["createElementVNode"])("div",ZE,[Object(y["createVNode"])(IE,{value:Object(y["unref"])(f),hue:d.value,onColorChange:t[1]||(t[1]=function(e){return v(e)})},null,8,["value","hue"])]),Object(y["createElementVNode"])("div",WE,[Object(y["createVNode"])(xE,{value:Object(y["unref"])(f),onColorChange:t[2]||(t[2]=function(e){return v(e)})},null,8,["value"])])])]),Object(y["createElementVNode"])("div",JE,[Object(y["createVNode"])(HE,{class:"input",value:Object(y["unref"])(f),onColorChange:t[3]||(t[3]=function(e){return v(e)})},null,8,["value"]),Object(y["createElementVNode"])("div",{class:"straw",onClick:t[4]||(t[4]=function(e){return j()})},[Object(y["createVNode"])(n)])]),Object(y["createElementVNode"])("div",QE,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(i,(function(e){return Object(y["createElementVNode"])("div",{class:"picker-presets-color",key:e,style:Object(y["normalizeStyle"])({background:e}),onClick:function(t){return O(e)}},null,12,KE)})),64))]),Object(y["createElementVNode"])("div",$E,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(b),(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"picker-gradient-col",key:t},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e,(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"picker-gradient-color",key:e,style:Object(y["normalizeStyle"])({background:e}),onClick:function(t){return O(e)}},null,12,eV)})),128))])})),128))]),Object(y["createElementVNode"])("div",tV,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(u,(function(e){return Object(y["createElementVNode"])("div",{key:e,class:"picker-presets-color",style:Object(y["normalizeStyle"])({background:e}),onClick:function(t){return O(e)}},null,12,nV)})),64))]),s.value.length?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",cV,"最近使用:")):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("div",oV,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(s.value,(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:e,class:"picker-presets-color alpha",onClick:function(t){return O(e)}},[Object(y["createElementVNode"])("div",{class:"picker-presets-color-content",style:Object(y["normalizeStyle"])({background:e})},null,4)],8,lV)})),128))])])}}});n("ecf8");const rV=pn()(aV,[["__scopeId","data-v-c46eb110"]]);var iV=rV,uV={key:0,class:"fullscreen-spin"},dV=Object(y["defineComponent"])({__name:"FullscreenSpin",props:{loading:{type:Boolean,default:!1},tip:{type:String,default:""}},setup:function(e){return function(t,n){var c=Object(y["resolveComponent"])("Spin");return e.loading?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",uV,[Object(y["createVNode"])(c,{tip:e.tip,size:"large"},null,8,["tip"])])):Object(y["createCommentVNode"])("",!0)}}});n("5d4b");const sV=pn()(dV,[["__scopeId","data-v-16ead44e"]]);var fV=sV,bV={install:function(e){e.component("FileInput",cE),e.component("CheckboxButton",aE),e.component("CheckboxButtonGroup",sE),e.component("ColorPicker",iV),e.component("FullscreenSpin",fV)}},pV={class:"menu-content"},OV=["onClick"],mV={class:"text"},vV={key:0,class:"sub-text"},jV=Object(y["defineComponent"])({__name:"MenuContent",props:{menus:{type:Array,required:!0},handleClickMenuItem:{type:Function,required:!0}},setup:function(e){return function(t,n){var c=Object(y["resolveComponent"])("menu-content",!0);return Object(y["openBlock"])(),Object(y["createElementBlock"])("ul",pV,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.menus,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:t.text||n},[t.hide?Object(y["createCommentVNode"])("",!0):(Object(y["openBlock"])(),Object(y["createElementBlock"])("li",{key:0,class:Object(y["normalizeClass"])(["menu-item",{divider:t.divider,disable:t.disable}]),onClick:Object(y["withModifiers"])((function(n){return e.handleClickMenuItem(t)}),["stop"])},[t.divider?Object(y["createCommentVNode"])("",!0):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:Object(y["normalizeClass"])(["menu-item-content",{"has-children":t.children,"has-handler":t.handler}])},[Object(y["createElementVNode"])("span",mV,Object(y["toDisplayString"])(t.text),1),t.subText&&!t.children?(Object(y["openBlock"])(),Object(y["createElementBlock"])("span",vV,Object(y["toDisplayString"])(t.subText),1)):Object(y["createCommentVNode"])("",!0),t.children&&t.children.length?(Object(y["openBlock"])(),Object(y["createBlock"])(c,{key:1,class:"sub-menu",menus:t.children,handleClickMenuItem:e.handleClickMenuItem},null,8,["menus","handleClickMenuItem"])):Object(y["createCommentVNode"])("",!0)],2))],10,OV))],64)})),128))])}}});n("ca3c");const hV=pn()(jV,[["__scopeId","data-v-e470e712"]]);var yV=hV,gV=Object(y["defineComponent"])({__name:"index",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=e,n=Object(y["computed"])((function(){var e=170,n=30,c=11,o=5,l=t.axis,a=l.x,r=l.y,i=t.menus.filter((function(e){return!(e.divider||e.hide)})).length,u=t.menus.filter((function(e){return e.divider})).length,d=e,s=i*n+u*c+2*o,f=document.body.clientWidth,b=document.body.clientHeight;return{left:f<=a+d?a-d:a,top:b<=r+s?r-s:r}})),c=function(e){e.disable||e.children&&!e.handler||(e.handler&&e.handler(t.el),t.removeContextmenu())};return function(t,o){return Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,[Object(y["createElementVNode"])("div",{class:"mask",onContextmenu:o[0]||(o[0]=Object(y["withModifiers"])((function(t){return e.removeContextmenu()}),["prevent"])),onMousedown:o[1]||(o[1]=function(t){return e.removeContextmenu()})},null,32),Object(y["createElementVNode"])("div",{class:"contextmenu",style:Object(y["normalizeStyle"])({left:Object(y["unref"])(n).left+"px",top:Object(y["unref"])(n).top+"px"}),onContextmenu:o[2]||(o[2]=Object(y["withModifiers"])((function(){}),["prevent"]))},[Object(y["createVNode"])(yV,{menus:e.menus,handleClickMenuItem:c},null,8,["menus"])],36)],64)}}});n("b096");const xV=gV;var kV=xV,CV="CTX_CONTEXTMENU_HANDLER",NV=function(e,t,n){t.stopPropagation(),t.preventDefault();var c=n.value(e);if(c){var o=null,l=function t(){o&&(document.body.removeChild(o),o=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:c,removeContextmenu:l};o=document.createElement("div");var r=Object(y["createVNode"])(kV,a,null);Object(y["render"])(r,o),document.body.appendChild(o),e.classList.add("contextmenu-active"),document.body.addEventListener("scroll",l),window.addEventListener("resize",l)}},wV={mounted:function(e,t){e[CV]=function(n){return NV(e,n,t)},e.addEventListener("contextmenu",e[CV])},unmounted:function(e){e&&e[CV]&&(e.removeEventListener("contextmenu",e[CV]),delete e[CV])}},EV=wV,VV="CTX_CLICK_OUTSIDE_HANDLER",IV=function(e,t,n){var c=n.value,o=t.composedPath(),l=o?o.indexOf(e)<0:!e.contains(t.target);l&&c(t)},BV={mounted:function(e,t){e[VV]=function(n){return IV(e,n,t)},setTimeout((function(){document.addEventListener("click",e[VV])}),0)},unmounted:function(e){e[VV]&&(document.removeEventListener("click",e[VV]),delete e[VV])}},SV=BV,LV={install:function(e){e.directive("contextmenu",EV),e.directive("click-outside",SV)}},_V=Object(y["createApp"])($C);_V.component("InputNumber",h["a"]),_V.component("Divider",j["a"]),_V.component("Button",v["a"]),_V.component("ButtonGroup",v["a"].Group),_V.component("Tooltip",m["a"]),_V.component("Popover",O["a"]),_V.component("Slider",p["a"]),_V.component("Select",b["a"]),_V.component("SelectOption",b["a"].Option),_V.component("SelectOptGroup",b["a"].OptGroup),_V.component("Switch",f["a"]),_V.component("Radio",s["a"]),_V.component("RadioGroup",s["a"].Group),_V.component("RadioButton",s["a"].Button),_V.component("Input",d["a"]),_V.component("InputGroup",d["a"].Group),_V.component("TextArea",d["a"].TextArea),_V.component("Modal",u["a"]),_V.component("Dropdown",i["a"]),_V.component("Menu",r["a"]),_V.component("MenuItem",r["a"].Item),_V.component("Checkbox",a["a"]),_V.component("Drawer",l["a"]),_V.component("Spin",o["a"]),_V.use($w),_V.use(bV),_V.use(LV),_V.use(Object(g["a"])()),_V.mount("#app")},cd4f:function(e,t,n){},cd7e:function(e,t,n){"use strict";n("fb92")},d074:function(e,t,n){"use strict";n("8cb8")},d1ee:function(e,t,n){},d2a4:function(e,t,n){},d2ee:function(e,t,n){"use strict";n("36ac")},d31d:function(e,t,n){},d422:function(e,t,n){},d594:function(e,t,n){},d73b:function(e,t,n){},d806:function(e,t,n){"use strict";n("1441")},d908:function(e,t,n){"use strict";n("29d1")},d970:function(e,t,n){"use strict";n("97ba")},da06:function(e,t,n){},dcba:function(e,t,n){},dcd4:function(e,t,n){"use strict";n("f567")},dd03:function(e,t,n){"use strict";n("d31d")},dd28:function(e,t,n){"use strict";n("ae7d")},de23:function(e,t,n){"use strict";n("1bd7")},de3c:function(e,t,n){},e16b:function(e,t,n){},e25c:function(e,t,n){"use strict";n("8bc3")},e303:function(e,t,n){"use strict";n("ab80")},e394:function(e,t,n){},e5b5:function(e,t,n){"use strict";n("de3c")},e611:function(e,t,n){},e739:function(e,t,n){},e83e:function(e,t,n){"use strict";n("6b65")},e9df:function(e,t,n){"use strict";n("5c9a")},ea69:function(e,t,n){},eb5e:function(e,t,n){},eba1:function(e,t,n){"use strict";n("889b")},eba5:function(e,t,n){},ec27:function(e,t,n){"use strict";n("e394")},ecf8:function(e,t,n){"use strict";n("f4fe")},ef77:function(e,t,n){},f40d:function(e,t,n){"use strict";n("0585")},f4fe:function(e,t,n){},f567:function(e,t,n){},f630:function(e,t,n){"use strict";n("0b53")},f6a3:function(e,t,n){},fa09:function(e,t,n){},fac9:function(e,t,n){"use strict";n("45c1")},fb92:function(e,t,n){},fbfe:function(e,t,n){"use strict";n("ef77")},fef7:function(e,t,n){"use strict";n("084d")},fef8:function(e,t,n){"use strict";n("3c3b")}}); +//# sourceMappingURL=app.bc0864ea.js.map \ No newline at end of file diff --git a/js/app.bc0864ea.js.map b/js/app.bc0864ea.js.map new file mode 100644 index 00000000..a9518180 --- /dev/null +++ b/js/app.bc0864ea.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/views/Mobile/MobileEditor/Header.vue?a1a5","webpack:///./src/views/Editor/Toolbar/common/ElementFlip.vue?5f8c","webpack:///./src/views/components/element/AudioElement/BaseAudioElement.vue?d01d","webpack:///./src/components/ColorPicker/Saturation.vue?c2ef","webpack:///./src/views/components/element/TextElement/BaseTextElement.vue?2437","webpack:///./src/views/Editor/index.vue?55c1","webpack:///./src/views/components/element/LatexElement/index.vue?dedd","webpack:///./src/views/Editor/Toolbar/SymbolPanel.vue?fba6","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/MultiStylePanel.vue?b007","webpack:///./src/views/Editor/Canvas/GridLines.vue?425f","webpack:///./src/views/Editor/EditorHeader/index.vue?7b2b","webpack:///./src/components/ColorPicker/Hue.vue?51e2","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue?3407","webpack:///./src/views/Editor/Toolbar/MultiPositionPanel.vue?6c96","webpack:///./src/components/LaTeXEditor/index.vue?52f1","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue?4aed","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue?3de2","webpack:///./src/views/Mobile/MobileEditor/ElementToolbar.vue?c87b","webpack:///./src/views/Editor/Canvas/Operate/RotateHandler.vue?1148","webpack:///./src/views/Editor/Canvas/Operate/BorderLine.vue?dc09","webpack:///./src/views/Editor/CanvasTool/ChartPool.vue?e6bd","webpack:///./src/views/Editor/Canvas/ViewportBackground.vue?e204","webpack:///./src/views/Screen/SlideThumbnails.vue?76b9","webpack:///./src/views/Editor/EditorHeader/HotkeyDoc.vue?f5e5","webpack:///./src/views/Mobile/MobileEditor/index.vue?88cc","webpack:///./src/views/components/element/AudioElement/ScreenAudioElement.vue?1f5e","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue?f0ff","webpack:///./src/views/Editor/Thumbnails/LayoutPool.vue?6185","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue?96eb","webpack:///./src/views/Editor/Toolbar/common/ElementShadow.vue?ec3d","webpack:///./src/views/components/element/VideoElement/VideoPlayer/index.vue?1035","webpack:///./src/views/Editor/CanvasTool/LinePool.vue?b397","webpack:///./src/views/components/element/AudioElement/AudioPlayer.vue?194f","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue?7128","webpack:///./src/views/Editor/CanvasTool/MediaInput.vue?8211","webpack:///./src/views/Editor/Canvas/LinkDialog.vue?2579","webpack:///./src/views/components/element/ElementOutline.vue?1a7f","webpack:///./src/views/Screen/index.vue?f2f3","webpack:///./src/views/Screen/BaseView.vue?0e4f","webpack:///./src/views/Editor/Canvas/MouseSelection.vue?c748","webpack:///./src/views/Screen/WritingBoardTool.vue?ffea","webpack:///./src/views/Mobile/MobilePlayer.vue?4f23","webpack:///./src/components/CheckboxButtonGroup.vue?504a","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue?d210","webpack:///./src/components/CheckboxButton.vue?9231","webpack:///./src/views/Editor/Toolbar/common/ElementFilter.vue?cc25","webpack:///./src/views/components/element/LatexElement/BaseLatexElement.vue?dc6f","webpack:///./src/views/components/element/ImageElement/ImageClipHandler.vue?ee13","webpack:///./src/views/components/element/TextElement/index.vue?0cef","webpack:///./src/views/components/element/VideoElement/BaseVideoElement.vue?da7f","webpack:///./src/components/FullscreenSpin.vue?e67d","webpack:///./src/components/WritingBoard.vue?cb3b","webpack:///./src/views/Editor/Canvas/index.vue?4424","webpack:///./src/views/Editor/Toolbar/SlideDesignPanel.vue?5b06","webpack:///./src/views/Mobile/MobileEditor/SlideToolbar.vue?578f","webpack:///./src/views/components/element/VideoElement/index.vue?1b93","webpack:///./src/views/Editor/ExportDialog/ExportPDF.vue?8de5","webpack:///./src/views/components/element/ImageElement/index.vue?a2c9","webpack:///./src/views/Editor/Canvas/Operate/index.vue?204f","webpack:///./src/views/components/element/AudioElement/index.vue?3fea","webpack:///./src/views/components/element/TableElement/index.vue?2bcc","webpack:///./src/views/Editor/Canvas/Operate/LinkHandler.vue?807a","webpack:///./src/App.vue?3f87","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/AudioStylePanel.vue?b2c4","webpack:///./src/views/Screen/PresenterView.vue?7d60","webpack:///./src/views/components/element/VideoElement/ScreenVideoElement.vue?edf3","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue?f9c5","webpack:///./src/views/components/element/TableElement/CustomTextarea.vue?8683","webpack:///./src/views/components/element/ChartElement/index.vue?03dc","webpack:///./src/views/components/element/TableElement/StaticTable.vue?57f9","webpack:///./src/views/components/element/ShapeElement/BaseShapeElement.vue?afd8","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue?57b4","webpack:///./src/views/components/element/ChartElement/Chart.vue?c9a6","webpack:///./src/views/Editor/Toolbar/common/ColorButton.vue?208a","webpack:///./src/views/Screen/ScreenSlideList.vue?56b9","webpack:///./src/views/Editor/Canvas/Ruler.vue?10b2","webpack:///./src/views/components/element/ShapeElement/index.vue?62ee","webpack:///./src/views/components/element/ChartElement/BaseChartElement.vue?84b4","webpack:///./src/views/Editor/CanvasTool/index.vue?d5ad","webpack:///./src/views/Screen/ScreenSlide.vue?4e32","webpack:///./src/views/components/element/TableElement/BaseTableElement.vue?dae1","webpack:///./src/views/components/element/ProsemirrorEditor.vue?f57c","webpack:///./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue?7843","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/VideoStylePanel.vue?7d7a","webpack:///./src/components/ColorPicker/Checkboard.vue?a884","webpack:///./src/components/ColorPicker/EditableInput.vue?ace0","webpack:///./src/views/Mobile/MobilePreview.vue?cb16","webpack:///./src/views/Editor/Canvas/Operate/ImageElementOperate.vue?36e6","webpack:///./src/components/Contextmenu/index.vue?07b9","webpack:///./src/views/Editor/Canvas/Operate/ResizeHandler.vue?881c","webpack:///./src/views/components/ThumbnailSlide/index.vue?bdc7","webpack:///./src/views/components/element/TableElement/EditableTable.vue?024d","webpack:///./src/views/components/element/LineElement/index.vue?179c","webpack:///./src/views/Mobile/index.vue?3233","webpack:///./src/views/Editor/ExportDialog/ExportSpecificFile.vue?1a34","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LatexStylePanel.vue?1c85","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue?c5f0","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue?c89e","webpack:///./src/components/Contextmenu/MenuContent.vue?6675","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue?b7a2","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue?08e0","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/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/utils/htmlParser/tags.ts","webpack:///./src/utils/htmlParser/lexer.ts","webpack:///./src/utils/htmlParser/parser.ts","webpack:///./src/utils/htmlParser/format.ts","webpack:///./src/utils/htmlParser/index.ts","webpack:///./src/utils/svgPathParser.ts","webpack:///./src/utils/svg2Base64.ts","webpack:///./src/hooks/useExport.ts","webpack:///./src/views/Editor/EditorHeader/HotkeyDoc.vue","webpack:///./src/views/Editor/EditorHeader/HotkeyDoc.vue?b691","webpack:///./src/views/Editor/EditorHeader/index.vue","webpack:///./src/views/Editor/EditorHeader/index.vue?f944","webpack:///./src/configs/imageClip.ts","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/hooks/useAlignElementToCanvas.ts","webpack:///./src/views/components/element/hooks/useElementShadow.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/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","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue?f9e6","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","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/ElementOutline.vue","webpack:///./src/views/components/element/ElementOutline.vue?e7ed","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/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/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/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/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","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","webpack:///./src/views/components/element/LatexElement/index.vue?faec","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/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","webpack:///./src/views/Editor/Canvas/MouseSelection.vue?4329","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","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue?af47","webpack:///./src/views/Editor/Canvas/Ruler.vue","webpack:///./src/views/Editor/Canvas/Ruler.vue?8bb7","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue?e33f","webpack:///./src/views/Editor/Canvas/hooks/useCommonOperate.ts","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","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/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","webpack:///./src/views/Editor/Canvas/Operate/TextElementOperate.vue?3000","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","webpack:///./src/views/Editor/Canvas/Operate/LineElementOperate.vue?8922","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","webpack:///./src/views/Editor/Canvas/Operate/CommonElementOperate.vue?b957","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/components/element/ImageElement/BaseImageElement.vue","webpack:///./src/views/components/element/ImageElement/BaseImageElement.vue?dbd8","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","webpack:///./src/views/components/element/ShapeElement/BaseShapeElement.vue?5afd","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","webpack:///./src/views/components/element/ChartElement/BaseChartElement.vue?928d","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","webpack:///./src/views/components/element/LatexElement/BaseLatexElement.vue?45c1","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","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/ShapePool.vue","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue?258a","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","webpack:///./src/views/Editor/CanvasTool/ChartPool.vue?2e9d","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue?ddc5","webpack:///./src/views/Editor/CanvasTool/MediaInput.vue","webpack:///./src/views/Editor/CanvasTool/MediaInput.vue?23a0","webpack:///./src/components/LaTeXEditor/hfmath.ts","webpack:///./src/configs/latex.ts","webpack:///./src/components/LaTeXEditor/FormulaContent.vue","webpack:///./src/components/LaTeXEditor/FormulaContent.vue?ecb1","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/hooks/useLoadSlides.ts","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/common/ElementOpacity.vue","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue?8eaf","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","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/common/ElementFlip.vue","webpack:///./src/views/Editor/Toolbar/common/ElementFlip.vue?0828","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","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue?6e51","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue?ebc3","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","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue?1838","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","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/VideoStylePanel.vue?27ee","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","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","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue?9199","webpack:///./src/configs/animation.ts","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue?9f55","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","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue?09d8","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/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","webpack:///./src/views/Editor/Remark/index.vue?4c66","webpack:///./src/views/Editor/ExportDialog/ExportImage.vue","webpack:///./src/views/Editor/ExportDialog/ExportImage.vue?e2fb","webpack:///./src/views/Editor/ExportDialog/ExportJSON.vue","webpack:///./src/views/Editor/ExportDialog/ExportJSON.vue?89c4","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","webpack:///./src/views/Editor/ExportDialog/ExportPPTX.vue?edaf","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/hooks/useExecPlay.ts","webpack:///./src/views/Screen/hooks/useSlideSize.ts","webpack:///./src/views/Screen/hooks/useFullscreen.ts","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","webpack:///./src/views/components/element/VideoElement/ScreenVideoElement.vue?1989","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","webpack:///./src/views/Screen/SlideThumbnails.vue?2aa3","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","webpack:///./src/views/Screen/PresenterView.vue?6e6b","webpack:///./src/views/Screen/index.vue","webpack:///./src/views/Screen/index.vue?d18a","webpack:///./src/views/Mobile/MobileEditor/MobileEditableElement.vue","webpack:///./src/views/Mobile/MobileEditor/MobileEditableElement.vue?6c30","webpack:///./src/views/Mobile/MobileEditor/MobileOperate.vue","webpack:///./src/views/Mobile/MobileEditor/MobileOperate.vue?c9a6","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","webpack:///./src/views/Mobile/MobileEditor/ElementToolbar.vue?d8d2","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","webpack:///./src/views/Mobile/MobilePlayer.vue?362c","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","webpack:///./src/components/FileInput.vue?ae58","webpack:///./src/components/CheckboxButton.vue","webpack:///./src/components/CheckboxButton.vue?b241","webpack:///./src/components/CheckboxButtonGroup.vue","webpack:///./src/components/CheckboxButtonGroup.vue?da6b","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","webpack:///./src/components/ColorPicker/Hue.vue?01db","webpack:///./src/components/ColorPicker/Saturation.vue","webpack:///./src/components/ColorPicker/Saturation.vue?7588","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","webpack:///./src/components/FullscreenSpin.vue?40fd","webpack:///./src/plugins/component.ts","webpack:///./src/components/Contextmenu/MenuContent.vue","webpack:///./src/components/Contextmenu/MenuContent.vue?0215","webpack:///./src/components/Contextmenu/index.vue","webpack:///./src/components/Contextmenu/index.vue?0141","webpack:///./src/plugins/directive/contextmenu.ts","webpack:///./src/plugins/directive/clickOutside.ts","webpack:///./src/plugins/directive/index.ts","webpack:///./src/main.ts","webpack:///./src/views/Editor/Toolbar/index.vue?cacf","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue?b28e","webpack:///./src/views/Screen/ScreenElement.vue?9349","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue?74a2","webpack:///./src/views/Editor/Thumbnails/index.vue?e476","webpack:///./src/views/Editor/ExportDialog/index.vue?589d","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue?a0c8","webpack:///./src/views/Mobile/MobileEditor/MobileOperate.vue?5efe","webpack:///./src/views/Mobile/MobileThumbnails.vue?6c4a","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue?e1f3","webpack:///./src/components/FileInput.vue?2066","webpack:///./src/views/Editor/ExportDialog/ExportImage.vue?acc4","webpack:///./src/views/components/element/ImageElement/BaseImageElement.vue?ffad","webpack:///./src/components/ColorPicker/Alpha.vue?3aaa","webpack:///./src/components/LaTeXEditor/FormulaContent.vue?ad41","webpack:///./src/views/Editor/ExportDialog/ExportJSON.vue?1d04","webpack:///./src/views/Editor/Remark/index.vue?d576","webpack:///./src/components/ColorPicker/index.vue?9fcf","webpack:///./src/views/Editor/Toolbar/common/ElementOutline.vue?7394","webpack:///./src/views/components/element/ChartElement/Chart.vue?e5ce","webpack:///./src/views/Editor/Canvas/Operate/LineElementOperate.vue?b7eb","webpack:///./src/views/components/element/LineElement/BaseLineElement.vue?d2fd","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue?6dda","webpack:///./src/views/Editor/ExportDialog/ExportPPTX.vue?5f02"],"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","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","screening","setScreening","digit","len","isPC","navigator","userAgent","match","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","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","importSpecificFile","files","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","target","exportPPTX","masterOverwrite","pptx","layout","bgColor","bgAlpha","defineSlideMaster","title","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","_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","__name","setup","__props","_ctx","_cache","hotkey","__exports__","_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","_hoisted_32","useExport","toggleGridLines","toggleRuler","hotkeyDrawerVisible","goIssues","open","_component_IconFolderClose","_component_MenuItem","_component_FileInput","_component_Menu","_component_Dropdown","_component_IconEdit","_component_IconPpt","_component_IconHelpcenter","_component_IconShare","_component_Tooltip","_component_IconGithub","_component_Drawer","overlay","default","accept","onChange","_","onClick","$event","mouseLeaveDelay","placement","closable","visible","onClose","HotkeyDoc","ClipPathTypes","ClipPaths","injectKeySlideScale","injectKeySlideId","removeAllRanges","getSelection","canvasRef","viewportLeft","viewportTop","setViewportPosition","canvasWidth","canvasHeight","viewportActualWidth","viewportActualHeight","viewportStyles","resizeObserver","ResizeObserver","observe","unobserve","dragViewport","isMouseDown","startPageX","pageX","startPageY","pageY","originLeft","originTop","onmousemove","currentPageX","currentPageY","onmouseup","viewportRef","mouseSelectionVisible","mouseSelectionQuadrant","mouseSelection","updateMouseSelection","viewportRect","getBoundingClientRect","minSelectionRange","offsetWidth","offsetHeight","abs","quadrant","inRangeElementList","mouseSelectionLeft","mouseSelectionTop","mouseSelectionWidth","mouseSelectionHeight","isInclude","inRangeElement","groupElementList","groupElement","inRangeElementIdList","elementRef","handleDrop","dataTransfer","dataTransferItem","ondragleave","ondrop","ondragenter","ondragover","getAngleFromCoordinate","radian","atan2","rotateElement","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","alignmentLines","scaleElement","isTouchEvent","MouseEvent","changedTouches","elOriginLeft","elOriginTop","elOriginWidth","elOriginHeight","elRotate","rotateRadian","aspectRatio","minSize","getSizeWithinRange","baseLeft","baseTop","horizontalLines","verticalLines","oppositePoint","edgeWidth","edgeHeight","isActiveGroupElement","right","bottom","topLine","bottomLine","leftLine","rightLine","edgeTopLine","edgeBottomLine","edgeHorizontalCenterLine","edgeLeftLine","edgeRightLine","edgeVerticalCenterLine","alignedAdsorption","currentX","currentY","_alignmentLines","isVerticalAdsorbed","isHorizontalAdsorbed","correctionVal","axis","handleMousemove","revisedX","revisedY","currentPoints","currentOppositePoint","currentBaseLeft","currentBaseTop","moveX","moveY","handleMouseup","ontouchmove","ontouchend","scaleMultiElement","operateWidth","operateHeight","originElementList","currentMinX","currentMaxX","currentMinY","currentMaxY","currentOppositeWidth","currentOppositeHeight","widthScale","heightScale","originElement","originEl","selectElement","startMove","newActiveIdList","groupMembersId","dragElement","originActiveElementList","isMisoperation","horizontalCenterLine","verticalCenterLine","targetMinX","targetMaxX","targetMinY","targetMaxY","targetLeft","targetTop","targetCenterX","targetCenterY","dragLineElement","adsorptionPoints","midX","midY","c1X","c1Y","c2X","c2Y","START","adsorptionPoint","END","C1","C2","newEl","formatCreateSelection","selectionData","formatCreateSelectionForLine","_start","_end","insertElementFromCreateSelection","alignElementToCanvas","viewportWidth","viewportHeight","CENTER","VERTICAL","HORIZONTAL","shadowStyle","flipStyle","CLIPPATHS","rect","RECT","rect2","POLYGON","createPath","rect3","roundRect","ellipse","ELLIPSE","triangle","triangle2","triangle3","rhombus","hexagon","pentagon","parallelogram","parallelogram2","trapezoid","trapezoid2","clipShape","imgPosition","outlineWidth","outlineStyle","outlineColor","Number","required","useElementOutline","overflow","stroke","Function","elementInfo","useClipImage","ImageRectOutline","ImageEllipseOutline","ImagePolygonOutline","clipData","clipPath","emits","emit","clipWrapperPositionStyle","isSettingClipRange","currentRange","getClipDataTransformInfo","bottomImgPositionStyle","topImgWrapperPosition","topImgWrapperPositionStyle","topImgPositionStyle","bottomWidth","bottomHeight","initClipPosition","handleClip","clipedEmitData","keyboardListener","updateRange","retPosition","moveClipRange","bottomPosition","originPositopn","scaleClipRange","minWidth","minHeight","targetWidth","targetHeight","rotateClassName","cornerPoint","edgePoints","_directive_click_outside","draggable","alt","onMousedown","contextmenus","isCliping","useElementShadow","useElementFlip","useFilter","handleSelectElement","stopPropagation","originClip","centerOffsetX","centerOffsetY","rotatedCenterX","rotatedCenterY","_props","_directive_contextmenu","transform","ImageClipHandler","onClip","onTouchstart","ImageOutline","onDragstart","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","editable","Boolean","autoFocus","expose","editorViewRef","handleInput","innerHTML","handleFocus","handleBlur","handleClick","handleKeydown","textContent","hasFocus","replaceRangeWith","setProps","handleDOMEvents","keydown","execCommand","removeMark","insertText","RICH_TEXT_COMMAND","off","ref_key","ref","canMove","realHeightCache","updateTextElementHeight","entries","contentRect","realHeight","updateContent","checkEmptyText","pureText","isHandleElement","textShadow","letterSpacing","fontFamily","ElementOutline","ProsemirrorEditor","textIndent","onUpdate","gradientTransform","defaultText","updateText","_text","prosemirrorEditorRef","startEdit","onDblclick","gradient","GradientDefs","onBlur","baseSize","pathMap","dot","arrow","rotateMap","markerUnits","orient","markerWidth","markerHeight","refX","refY","svgWidth","svgHeight","lineDashArray","LinePointMarker","chartRef","slideScale","chartHeight","getDataAndOptions","propsOptopns","renderChart","updateChart","themeColors","colors","updateTheme","setProperty","updateGridColor","flexDirection","openDataEditor","OPEN_CHART_DATA_EDITOR","Chart","getTextStyle","textDecoration","fontWeight","fontStyle","formatText","hideCells","subThemeColor","immediate","contenteditable","textareaRef","onpaste","excelData","onFocus","onInput","isStartSelect","startCell","endCell","tableCells","set","newData","useSubThemeColor","colSizeList","totalWidth","reduce","a","b","removeSelectedCells","dragLinePosition","useHideCells","selectedCells","oldValue","activedCell","handleCellMousedown","rowIndex","colIndex","button","handleCellMouseenter","isHideCell","selectCol","maxRow","selectRow","maxCol","deleteRow","_tableCells","targetCells","hideCellsPos","deleteCol","insertRow","insertCol","fillTable","rowCount","defaultCell","newRows","mergeCells","splitCells","handleMousedownColHandler","originWidth","clearSelectedCellText","tabActiveCell","getNextCell","nextRow","nextCol","nextCell","textRef","insertExcelData","fillRowCount","fillColCount","getEffectiveTableCells","effectiveTableCells","_rowCells","checkCanDeleteRowOrCol","canDeleteRow","canDeleteCol","checkCanMergeOrSplit","isMultiSelected","targetCell","canMerge","canSplit","cellIndex","dataset","handler","divider","span","borderStyle","borderColor","borderWidth","onMouseenter","CustomTextarea","onUpdateValue","onInsertExcelData","updateTableElementHeight","updateTableCells","updateColWidths","widths","updateSelectedCells","EditableTable","onChangeColWidths","onChangeSelectedCells","openLatexEditor","OPEN_LATEX_EDITOR","videoRef","exec","canPlayType","Hls","isSupported","hls","loadSource","attachMedia","flvjs","flvPlayer","createPlayer","attachMediaElement","load","poster","secondToTime","second","add0","num","hour","floor","sec","getBoundingClientRectViewLeft","playBarWrap","volumeBarRef","volume","paused","currentTime","duration","loaded","bezelTransition","playbackRate","playBarTimeVisible","playBarTime","playBarTimeLeft","ptime","dtime","playedBarWidth","loadedBarWidth","volumeBarWidth","speedMenuVisible","speedOptions","seek","play","pause","toggle","setVolume","muted","speed","rate","handleDurationchange","handleTimeupdate","handleEnded","handleProgress","buffered","handleError","thumbMove","clientX","thumbUp","handleMousedownPlayBar","volumeMove","volumeUp","handleMousedownVolumeBar","handleClickVolumeBar","handleMousemovePlayBar","tx","toggleVolume","toggleLoop","autoHideControllerTimer","hideController","autoHideController","clearTimeout","played","useMSE","_component_IconPause","_component_IconPlayOne","_component_IconVolumeMute","_component_IconVolumeNotice","_component_IconVolumeSmall","onMousemove","playsinline","onDurationchange","onTimeupdate","onEnded","onProgress","onPlay","onPause","onError","onAnimationend","onMouseleave","VideoPlayer","audioRef","handlePlayed","audioIconSize","audioPlayerPosition","audioWidth","audioHeight","AudioPlayer","elementIndex","isMultiSelect","openLinkDialog","currentElementComponent","elementTypeMap","IMAGE","ImageElement","TEXT","TextElement","SHAPE","ShapeElement","LINE","LineElement","CHART","ChartElement","TABLE","TableElement","LATEX","LatexElement","VIDEO","VideoElement","AUDIO","AudioElement","useAlignElementToCanvas","subText","hide","zIndex","validator","colorList","mostReadable","includeFallbackColors","gridSize","getPath","backgroundStyle","imageSize","gradientRotate","gradientType","backgroundImage","backgroundRepeat","backgroundSize","useSlideBackgroundStyle","GridLines","sizeStyle","markerSize","marker","selectionRef","createSelection","absX","absY","isOpposite","endPageX","endPageY","defaultSize","lineData","_startX","_startY","_endX","_endY","onContextmenu","resizeHandlers","textElementResizeHandlers","borderLines","T","R","isWide","localActiveElementList","useCommonOperate","setRange","disableResize","BorderLine","ResizeHandler","script","render","__default__","inheritAttrs","handlerVisible","scaleWidth","scaleHeight","RotateHandler","handlers","ctrlHandler","ctrlHandler1","ctrlHandler2","cannotRotate","setLink","linkRegExp","removeLink","useLink","_component_Divider","isSelected","isActive","currentOperateComponent","ImageElementOperate","TextElementOperate","ShapeElementOperate","LineElementOperate","TableElementOperate","CommonElementOperate","elementIndexListInAnimation","indexList","transformOrigin","LinkHandler","cssVar","needScaleSize","zoom","StaticTable","BaseImageElement","BaseTextElement","BaseShapeElement","BaseLineElement","BaseChartElement","BaseTableElement","BaseLatexElement","BaseVideoElement","BaseAudioElement","ThumbnailElement","address","selectedSlide","tabs","save","success","_component_Input","_component_SelectOption","_component_Select","_component_Button","tab","placeholder","ThumbnailSlide","linkDialogVisible","setLocalElementList","useViewportSize","useDropImageOrText","useMouseSelection","useDragElement","useDragLineElement","useSelectElement","useScaleElement","useRotateElement","handleClickBlankArea","removeEditorAreaFocus","throttleScaleCanvas","throttleUpdateSlideIndex","handleMousewheelCanvas","deltaY","useInsertFromCreateSelection","_component_Modal","onWheel","ElementCreateSelection","onCreated","AlignmentLine","MultiSelectOperate","Operate","ViewportBackground","MouseSelection","EditableElement","Ruler","footer","centered","destroyOnClose","LinkDialog","selectShape","LINE_LIST","selectLine","chartList","selectChart","_component_IconChartLine","_component_IconChartHistogram","_component_IconChartPie","_component_IconChartHistogramOne","_component_IconChartLineArea","_component_IconChartRing","_component_IconChartScatter","customRow","customCol","isCustom","handleClickTable","insertCustomTable","_component_InputNumber","videoSrc","audioSrc","insertVideo","insertAudio","hfmath","SUB_SUP_SCALE","FORMULA_LIST","SYMBOL_LIST","box","pathd","eq","boxW","boxH","SCALE_X","SCALE_Y","formulaList","symbolList","textAreaRef","selectedSymbolKey","symbolPool","selectedSymbol","insertSymbol","_component_TextArea","FormulaContent","SymbolContent","canvasScalePresetList","canvasScaleVisible","applyCanvasPresetScale","insertImageElement","shapePoolVisible","linePoolVisible","chartPoolVisible","tableGeneratorVisible","mediaInputVisible","latexEditorVisible","drawText","drawShape","drawLine","_component_IconBack","_component_IconNext","_component_IconFontSize","_component_IconPicture","_component_IconGraphicDesign","_component_Popover","_component_IconConnection","_component_IconChartProportion","_component_IconInsertTable","_component_IconFormula","_component_IconVideoTwo","_component_IconMinus","_component_IconPlus","_component_IconFullScreen","mouseEnterDelay","ShapePool","onSelect","LinePool","ChartPool","TableGenerator","onInsert","MediaInput","onInsertVideo","onInsertAudio","LaTeXEditor","timer","slidesLoadLimit","loadSlide","selectSlideTemplate","useLoadSlides","presetLayoutPopoverVisible","changSlideIndex","handleClickSlideThumbnail","minIndex","handleDragEnd","eventData","oldIndex","_slide","contextmenusThumbnails","contextmenusThumbnailItem","_component_IconDown","LayoutPool","modelValue","scroll","scrollSensitivity","setData","onEnd","itemKey","deep","updateOpacity","_component_Slider","_component_IconPlatte","fixed","hasOutline","updateOutline","outlineProps","toggleOutline","checked","_outline","_component_Switch","_component_ColorPicker","ColorButton","hasShadow","updateShadow","shadowProps","_shadow","toggleShadow","presetStyles","fontSizeOptions","lineHeightOptions","wordSpaceOptions","textIndentOptions","paragraphSpaceOptions","updateLineHeight","updateParagraphSpace","updateWordSpace","updateTextIndent","updateFill","emitRichTextCommand","emitBatchRichTextCommand","linkPopoverVisible","openLinkPopover","updateLink","_component_SelectOptGroup","_component_IconAddText","_component_InputGroup","_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","compact","suffixIcon","disabled","ElementShadow","ElementOpacity","updateFlip","flipProps","_component_IconFlipVertically","_component_IconFlipHorizontally","defaultFilters","unit","filterOptions","hasFilters","updateFilter","_handleElement","originFilters","toggleFilters","shapeClipPathOptions","ratioClipOptions","ratio","handleImageElement","clipPanelVisible","clipImage","getImageElementDataBeforeClip","imgLeft","imgTop","originClipRange","originHeight","presetImageClip","imageRatio","distance","replaceImage","resetImage","setBackgroundImage","_component_IconTailoring","_component_IconTransform","_component_IconUndo","_component_IconTheme","ElementFlip","ElementFilter","handleShapeElement","fillType","updateFillType","updateGradient","gradientProps","_gradient","updateTextAlign","_component_IconAlignTextTopOne","_component_IconAlignTextMiddleOne","_component_IconAlignTextBottomOne","handleLineElement","updateLine","CELL_WIDTH","CELL_HEIGHT","selectedRange","tempRangeSize","focusCell","rangeLines","resizablePointStyle","initData","_data","inputRef","moveNextRow","getTableData","labelsItem","labelInputRef","legendsItem","seriesItem","valueInputRef","clear","handlePaste","closeEditor","changeSelectRange","autocomplete","onPaste","presetChartThemes","handleChartElement","chartDataEditorVisible","presetThemesVisible","presetThemeColorHoverIndex","stackBars","_lineSmooth","_showLine","_showArea","_horizontalBars","_donut","_stackBars","updateData","updateOptions","optionProps","newOptions","addThemeColor","applyPresetTheme","deleteThemeColor","updateLegend","_component_Checkbox","_component_IconCloseSmall","itemIndex","ChartDataEditor","onSave","textAttrs","hasTheme","minRowCount","minColCount","updateTextAttrState","selectedCell","updateTextAttrs","textAttrProp","themeProp","_theme","toggleTheme","setTableRow","newTableCells","setTableCol","newColSizeList","_component_IconFill","handleLatexElement","updateLatex","updateLatexData","handleVideoElement","updateVideo","setVideoPoster","handleAudioElement","updateAudio","updateFontStyle","panelMap","TextStylePanel","ImageStylePanel","ShapeStylePanel","LineStylePanel","ChartStylePanel","TableStylePanel","LatexStylePanel","VideoStylePanel","AudioStylePanel","currentPanelComponent","MultiStylePanel","activeGroupElement","updateLeft","updateTop","updateWidth","updateHeight","updateRotate","updateFixedRatio","updateRotate45","_rotate","_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","flex","ANIMATION_DEFAULT_DURATION","ANIMATION_DEFAULT_TRIGGER","ANIMATION_CLASS_PREFIX","ENTER_ANIMATIONS","EXIT_ANIMATIONS","ATTENTION_ANIMATIONS","animationEffects","effect","animationTypes","activeTab","animationPoolVisible","hoverPreviewAnimation","animationSequence","elType","animationEffect","handleElementAnimation","deleteAnimation","runAnimation","elRef","animationName","classList","handleAnimationEnd","removeProperty","once","updateElementAnimationDuration","updateElementAnimationTrigger","updateElementAnimation","handleAnimationId","animationItem","addAnimation","popoverMaskHide","handlePopoverVisibleChange","openAnimationPool","in","out","attention","_component_IconEffects","_component_IconClick","onVisibleChange","handle","PRESET_THEMES","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","updateBackgroundType","newBackground","updateBackground","uploadBackgroundImage","applyBackgroundAllSlide","applyThemeAllSlide","showPresetThemes","togglePresetThemesVisible","updateViewportRatio","currentTurningMode","turningMode","updateTurningMode","applyAllSlide","alignActiveElement","groupElementRangeMap","activeElement","groupElements","horizontalCenter","center","verticalCenter","displayItemCount","count","groupIdList","uniformHorizontalDisplay","copyOfActiveElementList","singleElemetList","groupList","groupEl","formatedGroupList","groupItem","list","sort","itemA","itemB","sortedElementData","firstItem","lastPos","lastWidth","currentPos","currentWidth","sortedItem","uniformVerticalDisplay","totalHeight","lastHeight","currentHeight","useAlignActiveElement","useUniformDisplayElement","alignElement","_component_IconGroup","_component_IconUngroup","selectSymbol","elementTabs","EL_STYLE","SYMBOL","EL_POSITION","EL_ANIMATION","slideTabs","SLIDE_ANIMATION","multiSelectTabs","MULTI_POSITION","currentTabs","currentTabsValue","ElementStylePanel","ElementPositionPanel","ElementAnimationPanel","SlideDesignPanel","SlideAnimationPanel","MultiPositionPanel","SymbolPanel","resize","newHeight","imageThumbnailsRef","rangeType","renderSlides","expImage","_component_FullscreenSpin","loading","tip","createIframe","iframe","printNode","docType","styleSheets","styleSheet","cssRules","rule","cssText","head","write","print","iframeContentWindow","contentWindow","contentDocument","handleLoadIframe","pdfThumbnailsRef","padding","expPDF","pageSize","currentDialogComponent","dialogMap","ExportImage","ExportJSON","ExportPDF","ExportPPTX","ExportSpecificFile","closeExportDialog","remarkHeight","useGlobalHotkey","usePasteEvent","EditorHeader","Thumbnails","CanvasTool","Canvas","Remark","Toolbar","onCancel","ExportDialog","animationIndex","inAnimation","playedSlidesMinIndex","endAnimationCount","classname","revokeAnimation","execPrev","autoPlayTimer","closeAutoPlay","clearInterval","throttleMassage","execNext","autoPlay","setInterval","mousewheelListener","touchInfo","touchStartListener","touchEndListener","turnPrevSlide","turnNextSlide","turnSlideToIndex","turnSlideToId","wrapRef","slideWidth","slideHeight","setSlideContentSize","slideWrapRef","winWidth","winHeight","fullscreenState","escExit","handleFullscreenChange","manualExitFullscreen","audioPlayerRef","ScreenChartElement","ScreenVideoElement","ScreenAudioElement","needWaitAnimation","elementIndexInAnimation","firstAnimation","openLink","visibility","ScreenElement","ScreenSlide","turnSlide","_component_IconArrowCircleLeft","model","blackboard","writingBoardRef","penSize","rubberSize","markSize","lastTime","lastLineWidth","mouse","mouseInCanvas","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","handleMousedown","clearCanvas","getImageDataURL","toDataURL","setImageDataURL","imageDataURL","Image","drawImage","_component_IconWrite","onMouseup","onTouchmove","onTouchend","writingBoardColors","writingBoardColor","writingBoardModel","changeModel","changeColor","closeWritingBoard","_component_IconErase","_component_IconClear","_component_IconClose","WritingBoard","changeViewMode","useExecPlay","useSlideSize","useFullscreen","rightToolsVisible","writingBoardToolVisible","slideThumbnailModelVisible","laserPen","_component_IconLeftTwo","_component_IconRightTwo","_component_IconMagic","_component_IconListView","_component_IconOffScreenOne","_component_IconFullScreenOne","_component_IconPower","ScreenSlideList","SlideThumbnails","WritingBoardTool","slideListWrapRef","thumbnailsRef","remarkFontSize","currentSlideRemark","handleMousewheelThumbnails","scrollBy","setRemarkFontSize","activeThumbnailRef","offsetLeft","scrollTo","behavior","viewMode","ESC","BaseView","PresenterView","_resizeHandlers","changeSlideIndex","insertTextElement","insertShapeElement","square","handleInputMark","_component_IconCopy","_component_IconDelete","_component_IconSquare","_component_IconRound","MobileThumbnails","updateFontColor","changeMode","_component_IconLogout","contentRef","contentWidth","contentheight","contentRatio","Header","MobileOperate","MobileEditableElement","SlideToolbar","ElementToolbar","toolVisible","playerSize","slideSize","playerRatio","mobileRef","screenWidth","_component_IconFullScreenPlay","_mode","currentComponent","componentMap","MobileEditor","MobilePlayer","MobilePreview","_isPC","onbeforeunload","discardedDB","discardedDBList","newDiscardedDB","setItem","Screen","Editor","Mobile","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","Needle","install","app","component","handleChange","$slots","white","grey","checkboardCache","renderCheckboard","fillRect","translate","getCheckboard","checkboard","bgStyle","rgbaStr","g","alphaRef","containerWidth","xOffset","pageXOffset","unbindEventListeners","handleMouseDown","Checkboard","hue","oldHue","pullDirection","hsla","toHsl","pointerLeft","hueRef","percent","hsva","toHsv","pointerTop","emitChangeEvent","param","saturationRef","containerHeight","yOffset","pageYOffset","saturation","bright","val","_hex","toHex8String","toRgb","RECENT_COLORS","presetColorConfig","startColor","endColor","_startColor","_endColor","rStep","gStep","bStep","gradientColorArr","getPresetColors","presetColors","standardColors","recentColors","rgbaString","currentColor","selectPresetColor","colorString","updateRecentColorsCache","maxLength","recentColorsCache","openEyeDropper","isSupportedEyeDropper","browserEyeDropper","customEyeDropper","eyeDropper","EyeDropper","tColor","sRGBHex","targetRef","maskRef","colorBlockRef","contains","pixelRatio","toFixed","handleMouseleave","_component_IconNeedle","Saturation","onColorChange","Hue","Alpha","EditableInput","_component_Spin","FileInput","CheckboxButton","CheckboxButtonGroup","ColorPicker","FullscreenSpin","menus","handleClickMenuItem","_component_menu_content","menu","removeContextmenu","MENU_WIDTH","MENU_HEIGHT","DIVIDER_HEIGHT","PADDING","menuCount","dividerCount","menuWidth","menuHeight","screenHeight","MenuContent","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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6ECAA,W,oCCAA,W,kCCAA,W,oCCAA,W,oCCAA,W,kFCAA,W,2DCAA,W,kCCAA,W,gNCAA,W,yDCAA,W,oCCAA,W,kCCAA,W,kCCAA,W,sFCAA,W,oCCAA,W,oCCAA,W,oCCAA,W,6JCAA,W,kCCAA,W,oCCAA,W,oCCAA,W,oCCAA,W,yDCAA,W,oCCAA,W,oCCAA,W,sFCAA,W,oCCAA,W,kCCAA,W,6DCAA,W,2JCAA,W,oCCAA,W,wLCAA,W,oFCAA,W,oFCAA,W,oCCAA,W,oCCAA,W,oFCAA,W,kCCAA,W,oCCAA,W,oCCAA,W,oCCAA,W,oCCAA,W,oCCAA,W,kCCAA,W,kCCAA,W,kCCAA,W,0LCAA,W,oCCAA,W,2DCAA,W,yDCAA,W,oFCAA,W,oCCAA,W,oCCAA,W,+GCAA,W,kCCAA,W,kCCAA,W,kCCAA,W,kCCAA,W,kCCAA,W,kCCAA,W,yDCAA,W,gFCAA,W,yDCAA,W,yDCAA,W,uGCAA,W,uGCAA,W,gFCAA,W,kCCAA,W,kCCAA,W,yDCAA,W,yDCAA,W,mCCAA,W,4KCAA,W,kCCAA,W,gFCAA,W,yDCAA,W,8ECAkByC,E,mgBAAlB,SAAkBA,GAChB,qBACA,gCACA,wBACA,8BACA,gCACA,sCACA,qCAPF,CAAkBA,MAAa,KCAxB,ICIKC,EAOAC,EAUMC,EAOAC,EAWAC,ECvCAC,EFALC,EAAY,CACvB,CAAEC,MAAO,QAASxB,MAAO,SACzB,CAAEwB,MAAO,OAAQxB,MAAO,mBACxB,CAAEwB,MAAO,KAAMxB,MAAO,UACtB,CAAEwB,MAAO,KAAMxB,MAAO,UACtB,CAAEwB,MAAO,KAAMxB,MAAO,SACtB,CAAEwB,MAAO,MAAOxB,MAAO,WACvB,CAAEwB,MAAO,KAAMxB,MAAO,YACtB,CAAEwB,MAAO,KAAMxB,MAAO,eACtB,CAAEwB,MAAO,OAAQxB,MAAO,WACxB,CAAEwB,MAAO,OAAQxB,MAAO,WACxB,CAAEwB,MAAO,OAAQxB,MAAO,UACxB,CAAEwB,MAAO,OAAQxB,MAAO,cACxB,CAAEwB,MAAO,OAAQxB,MAAO,eACxB,CAAEwB,MAAO,OAAQxB,MAAO,UACxB,CAAEwB,MAAO,OAAQxB,MAAO,YA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ACfC,KAAM,uGACN6U,YAAapI,GAAsBoH,YAErC,CACE9T,QAAS,CAAC,IAAK,KACfC,KAAM,sDACN6U,YAAapI,GAAsBqH,mBAErC,CACE/T,QAAS,CAAC,IAAK,KACfC,KAAM,6CACN6U,YAAapI,GAAsBsH,iBAErC,CACEhU,QAAS,CAAC,IAAK,KACfC,KAAM,qDACN6U,YAAapI,GAAsBuH,mBAErC,CACEjU,QAAS,CAAC,IAAK,KACfC,KAAM,wEACN6U,YAAapI,GAAsBwH,qBAErC,CACElU,QAAS,CAAC,IAAK,KACfC,KAAM,yDACN6U,YAAapI,GAAsByH,mBAErC,CACEnU,QAAS,CAAC,IAAK,KACfC,KAAM,+DACN6U,YAAapI,GAAsB0H,uBAKzC,CACEza,KAAM,OACNkT,SAAU,CACR,CACE7M,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,4DACN6U,YAAapI,GAAsB+H,GAErC,CACEzU,QAAS,CAAC,IAAK,KACfC,KAAM,uEACN6U,YAAapI,GAAsBiI,WAErC,CACE3U,QAAS,CAAC,IAAK,KACfC,KAAM,iEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,mHACN6U,YAAapI,GAAsBkI,MAErC,CACE5U,QAAS,CAAC,IAAK,KACfC,KAAM,sHAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,gEACN6U,YAAapI,GAAsB2H,SAErC,CACErU,QAAS,CAAC,IAAK,KACfC,KAAM,mIACN6U,YAAapI,GAAsB8H,eAErC,CACExU,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,KACNkT,SAAU,CACR,CACE7M,QAAS,CAAC,IAAK,KACfC,KAAM,6EAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6EAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6EAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6EAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,qGAER,CACED,QAAS,CAAC,I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","file":"js/app.bc0864ea.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!./Header.vue?vue&type=style&index=0&id=10cd6713&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=59a1646e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=5258e03b&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=d230faf4&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=659e869d&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=328e1a4e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=31390388&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=ba0c96fc&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=71469855&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=10cd6d44&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=6c34fc9c&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=60c3cca1&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/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=41071294&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=0d3881c5&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=2d73bf28&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=5830b9cf&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=6bf6c951&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=446388c6&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=b99d8dae&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=7170d1be&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=3870b42e&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=6f1e1261&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=b7c6c0cc&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=4b1afc5f&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=8cdcde82&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=1172b8ee&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=144fbd05&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=cc6b7dca&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=22345a51&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=053ed706&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/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=2fc4c202&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!./LinePool.vue?vue&type=style&index=0&id=bca68faa&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=121f3d11&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!./ImageEllipseOutline.vue?vue&type=style&index=0&id=71b17928&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=b9437110&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=dfb654e8&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=61b7d06a&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=6bf3d190&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=d72d6626&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=0d6c0f73&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=876081a6&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=5293de3b&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/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=b8aa6eac&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=37fa6068&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/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=699cf016&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=37fbdfde&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=9a47b5f4&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=3e0199ec&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=7135a611&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=56b7f716&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/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=16ead44e&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/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=1d4eb7f0&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=529c7227&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=e0bbbd9e&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=29fba90e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=9d5469c6&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=15b57798&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=30dc7050&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=c3f7ca96&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=001bfbc4&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=6391c486&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=bb722fc0&lang=scss&scoped=true\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../node_modules/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=f5c43528&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!./AudioStylePanel.vue?vue&type=style&index=0&id=5d723d50&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=5fba3eec&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=76457308&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=5a941f07&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=cdb58a1e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=f3c03862&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=00712fa4&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=073084bf&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=7da35bec&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=1aa2357d&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=ed8f2044&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=77a3e620&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=60e06332&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=d4c718fa&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=7d2e5c4e&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=5d4eff54&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=7cf7f9e7&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=53e0f1ba&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=1debd6ff&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=defbd922&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=ff7125dc&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=7494636c&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=2f428dde&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=4f906636&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=46b250c2&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=e70aeb5c&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!./ResizeHandler.vue?vue&type=style&index=0&id=881ee3f8&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=f69fb5b2&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=bae8c794&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=6550e504&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=1fb24d48&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=e2b465d2&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=546adf8c&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=5788e0d2&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/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=53b32689&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=e470e712&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=2f69234f&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=577ae912&lang=scss&scoped=true\"","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 { 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}","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: FileList, 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 { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-4b1afc5f\"),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\nimport { HOTKEY_DOC } from '@/configs/hotkey' \n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'HotkeyDoc',\n setup(__props) {\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(HOTKEY_DOC), (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}\n}\n\n})","import script from \"./HotkeyDoc.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./HotkeyDoc.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./HotkeyDoc.vue?vue&type=style&index=0&id=4b1afc5f&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4b1afc5f\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, unref as _unref, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6c34fc9c\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst mainStore = useMainStore()\nconst { showGridLines, showRuler } = storeToRefs(mainStore)\n\nconst { enterScreening, enterScreeningFromStart } = useScreening()\nconst { createSlide, deleteSlide, resetSlides } = useSlideHandler()\nconst { redo, undo } = useHistorySnapshot()\nconst { importSpecificFile } = useExport()\n\nconst setDialogForExport = mainStore.setDialogForExport\n\nconst toggleGridLines = () => {\n mainStore.setGridLinesState(!showGridLines.value)\n}\n\nconst toggleRuler = () => {\n mainStore.setRulerState(!showRuler.value)\n}\n\nconst hotkeyDrawerVisible = ref(false)\n\nconst goIssues = () => {\n window.open('https://github.com/pipipi-pikachu/PPTist/issues')\n}\n\nreturn (_ctx: any,_cache: 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_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 => _unref(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) => (_unref(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) => (_unref(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) => (_unref(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) => (_unref(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) => (_unref(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) => (_unref(undo)()))\n }, {\n default: _withCtx(() => [\n _hoisted_15\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_unref(redo)()))\n }, {\n default: _withCtx(() => [\n _hoisted_16\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_unref(createSlide)()))\n }, {\n default: _withCtx(() => [\n _hoisted_17\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_unref(deleteSlide)()))\n }, {\n default: _withCtx(() => [\n _hoisted_18\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[10] || (_cache[10] = ($event: any) => (toggleGridLines()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(showGridLines) ? '关闭网格线' : '打开网格线'), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[11] || (_cache[11] = ($event: any) => (toggleRuler()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(showRuler) ? '关闭标尺' : '打开标尺'), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[12] || (_cache[12] = ($event: any) => (_unref(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) => (_unref(enterScreeningFromStart)()))\n }, {\n default: _withCtx(() => [\n _hoisted_23\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[14] || (_cache[14] = ($event: any) => (_unref(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) => (goIssues()))\n }, {\n default: _withCtx(() => [\n _hoisted_28\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[16] || (_cache[16] = ($event: any) => (hotkeyDrawerVisible.value = 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) => (_unref(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) => (_unref(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: hotkeyDrawerVisible.value,\n onClose: _cache[19] || (_cache[19] = ($event: any) => (hotkeyDrawerVisible.value = false))\n }, {\n default: _withCtx(() => [\n _createVNode(HotkeyDoc)\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=6c34fc9c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6c34fc9c\"]])\n\nexport default __exports__","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 { 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 { 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 { 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}","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 { 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}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-b5bace06\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"rx\", \"ry\", \"width\", \"height\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nimport { PropType, toRef } from 'vue'\nimport { PPTElementOutline } from '@/types/slides'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ImageRectOutline',\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\nconst props = __props\n\n\n\nconst {\n outlineWidth,\n outlineStyle,\n outlineColor,\n} = useElementOutline(toRef(props, 'outline'))\n\nreturn (_ctx: any,_cache: any) => {\n return (__props.outline)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n class: \"image-rect-outline\",\n overflow: \"visible\",\n width: __props.width,\n height: __props.height\n }, [\n _createElementVNode(\"rect\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n fill: \"transparent\",\n rx: __props.radius,\n ry: __props.radius,\n width: __props.width,\n height: __props.height,\n stroke: _unref(outlineColor),\n \"stroke-width\": _unref(outlineWidth),\n \"stroke-dasharray\": _unref(outlineStyle) === 'dashed' ? '10 6' : '0 0'\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./ImageRectOutline.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ImageRectOutline.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ImageRectOutline.vue?vue&type=style&index=0&id=b5bace06&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b5bace06\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-71b17928\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"cx\", \"cy\", \"rx\", \"ry\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nimport { PropType, toRef } from 'vue'\nimport { PPTElementOutline } from '@/types/slides'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ImageEllipseOutline',\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\nconst props = __props\n\n\n\nconst {\n outlineWidth,\n outlineStyle,\n outlineColor,\n} = useElementOutline(toRef(props, 'outline'))\n\nreturn (_ctx: any,_cache: any) => {\n return (__props.outline)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n class: \"image-ellipse-outline\",\n overflow: \"visible\",\n width: __props.width,\n height: __props.height\n }, [\n _createElementVNode(\"ellipse\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n fill: \"transparent\",\n cx: __props.width / 2,\n cy: __props.height / 2,\n rx: __props.width / 2,\n ry: __props.height / 2,\n stroke: _unref(outlineColor),\n \"stroke-width\": _unref(outlineWidth),\n \"stroke-dasharray\": _unref(outlineStyle) === 'dashed' ? '10 6' : '0 0'\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./ImageEllipseOutline.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ImageEllipseOutline.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ImageEllipseOutline.vue?vue&type=style&index=0&id=71b17928&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-71b17928\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-41071294\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nimport { PropType, toRef } from 'vue'\nimport { PPTElementOutline } from '@/types/slides'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ImagePolygonOutline',\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\nconst props = __props\n\n\n\nconst {\n outlineWidth,\n outlineStyle,\n outlineColor,\n} = useElementOutline(toRef(props, 'outline'))\n\nreturn (_ctx: any,_cache: any) => {\n return (__props.outline)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n class: \"image-polygon-outline\",\n overflow: \"visible\",\n width: __props.width,\n height: __props.height\n }, [\n _createElementVNode(\"path\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n fill: \"transparent\",\n d: __props.createPath(__props.width, __props.height),\n stroke: _unref(outlineColor),\n \"stroke-width\": _unref(outlineWidth),\n \"stroke-dasharray\": _unref(outlineStyle) === 'dashed' ? '10 6' : '0 0'\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./ImagePolygonOutline.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ImagePolygonOutline.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ImagePolygonOutline.vue?vue&type=style&index=0&id=41071294&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-41071294\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"image-outline\" }\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst clip = computed(() => props.elementInfo.clip)\nconst { clipShape } = useClipImage(clip)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(clipShape).type === 'rect')\n ? (_openBlock(), _createBlock(ImageRectOutline, {\n key: 0,\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n radius: _unref(clipShape).radius,\n outline: __props.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"radius\", \"outline\"]))\n : (_unref(clipShape).type === 'ellipse')\n ? (_openBlock(), _createBlock(ImageEllipseOutline, {\n key: 1,\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n outline: __props.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]))\n : (_unref(clipShape).type === 'polygon')\n ? (_openBlock(), _createBlock(ImagePolygonOutline, {\n key: 2,\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n outline: __props.elementInfo.outline,\n createPath: _unref(clipShape).createPath\n }, null, 8, [\"width\", \"height\", \"outline\", \"createPath\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-3e0199ec\"),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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ImageClipHandler',\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 emits: [\"clip\"],\n setup(__props, { emit }: { emit: ({\n (event: 'clip', payload: ImageClipedEmitData | null): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst { canvasScale } = storeToRefs(useMainStore())\nconst { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n\nconst clipWrapperPositionStyle = ref({\n top: '0',\n left: '0',\n})\nconst isSettingClipRange = ref(false)\nconst currentRange = ref(null)\n\n// 获取裁剪区域信息(裁剪区域占原图的宽高比例,处在原图中的位置)\nconst 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// 底层图片位置大小(遮罩区域图片)\nconst 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// 底层图片位置大小样式(遮罩区域图片)\nconst 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// 顶层图片容器位置大小(裁剪高亮区域)\nconst topImgWrapperPosition = ref({\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n})\n\n// 顶层图片容器位置大小样式(裁剪高亮区域)\nconst 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// 顶层图片位置大小样式(裁剪区域图片)\nconst 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// 初始化裁剪位置信息\nconst 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// 执行裁剪:计算裁剪后的图片位置大小和裁剪信息,并将数据同步出去\nconst 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// 快捷键监听:回车确认裁剪\nconst keyboardListener = (e: KeyboardEvent) => {\n const key = e.key.toUpperCase()\n if (key === KEYS.ENTER) handleClip()\n}\n\nonMounted(() => {\n initClipPosition()\n document.addEventListener('keydown', keyboardListener)\n})\nonUnmounted(() => {\n document.removeEventListener('keydown', keyboardListener)\n})\n\n// 计算并更新裁剪区域范围数据\nconst 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// 移动裁剪区域\nconst 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// 缩放裁剪区域\nconst 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\nconst 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\nconst cornerPoint = [\n OperateResizeHandlers.LEFT_TOP,\n OperateResizeHandlers.RIGHT_TOP,\n OperateResizeHandlers.LEFT_BOTTOM,\n OperateResizeHandlers.RIGHT_BOTTOM,\n]\nconst edgePoints = [\n OperateResizeHandlers.TOP,\n OperateResizeHandlers.BOTTOM,\n OperateResizeHandlers.LEFT,\n OperateResizeHandlers.RIGHT,\n]\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_click_outside = _resolveDirective(\"click-outside\")!\n\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"image-clip-handler\",\n style: _normalizeStyle(clipWrapperPositionStyle.value)\n }, [\n _createElementVNode(\"img\", {\n class: \"bottom-img\",\n src: __props.src,\n draggable: false,\n alt: \"\",\n style: _normalizeStyle(_unref(bottomImgPositionStyle))\n }, null, 12, _hoisted_1),\n _createElementVNode(\"div\", {\n class: \"top-image-content\",\n style: _normalizeStyle({\n ..._unref(topImgWrapperPositionStyle),\n clipPath: __props.clipPath,\n })\n }, [\n _createElementVNode(\"img\", {\n class: \"top-img\",\n src: __props.src,\n draggable: false,\n alt: \"\",\n style: _normalizeStyle(_unref(topImgPositionStyle))\n }, null, 12, _hoisted_2)\n ], 4),\n _createElementVNode(\"div\", {\n class: \"operate\",\n style: _normalizeStyle(_unref(topImgWrapperPositionStyle)),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers($event => moveClipRange($event), [\"stop\"]))\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(cornerPoint, (point) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass(['clip-point', point, _unref(rotateClassName)]),\n key: point,\n onMousedown: _withModifiers($event => scaleClipRange($event, point), [\"stop\"])\n }, _hoisted_5, 42, _hoisted_3)\n }), 64)),\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(edgePoints, (point) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass(['clip-point', point, _unref(rotateClassName)]),\n key: point,\n onMousedown: _withModifiers($event => scaleClipRange($event, point), [\"stop\"])\n }, _hoisted_8, 42, _hoisted_6)\n }), 64))\n ], 36)\n ], 4)), [\n [_directive_click_outside, handleClip]\n ])\n}\n}\n\n})","import script from \"./ImageClipHandler.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ImageClipHandler.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ImageClipHandler.vue?vue&type=style&index=0&id=3e0199ec&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3e0199ec\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-30dc7050\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"src\"]\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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\nconst props = __props\n\n\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { clipingImageElementId } = storeToRefs(mainStore)\n\nconst isCliping = computed(() => clipingImageElementId.value === props.elementInfo.id)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst flipH = computed(() => props.elementInfo.flipH)\nconst flipV = computed(() => props.elementInfo.flipV)\nconst { flipStyle } = useElementFlip(flipH, flipV)\n\nconst clip = computed(() => props.elementInfo.clip)\nconst { clipShape, imgPosition } = useClipImage(clip)\n\nconst filters = computed(() => props.elementInfo.filters)\nconst { filter } = useFilter(filters)\n\nconst handleSelectElement = (e: MouseEvent | TouchEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n props.selectElement(e, props.elementInfo)\n}\n\nconst handleClip = (data: ImageClipedEmitData | null) => {\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\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-image\", { 'lock': __props.elementInfo.lock }]),\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n height: __props.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n (_unref(isCliping))\n ? (_openBlock(), _createBlock(ImageClipHandler, {\n key: 0,\n src: __props.elementInfo.src,\n clipData: __props.elementInfo.clip,\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n top: __props.elementInfo.top,\n left: __props.elementInfo.left,\n rotate: __props.elementInfo.rotate,\n clipPath: _unref(clipShape).style,\n onClip: _cache[0] || (_cache[0] = range => 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: _unref(shadowStyle) ? `drop-shadow(${_unref(shadowStyle)})` : '',\n transform: _unref(flipStyle),\n }),\n onMousedown: _cache[2] || (_cache[2] = $event => handleSelectElement($event)),\n onTouchstart: _cache[3] || (_cache[3] = $event => handleSelectElement($event))\n }, [\n _createVNode(ImageOutline, { elementInfo: __props.elementInfo }, null, 8, [\"elementInfo\"]),\n _createElementVNode(\"div\", {\n class: \"image-content\",\n style: _normalizeStyle({ clipPath: _unref(clipShape).style })\n }, [\n _createElementVNode(\"img\", {\n src: __props.elementInfo.src,\n draggable: false,\n style: _normalizeStyle({\n top: _unref(imgPosition).top,\n left: _unref(imgPosition).left,\n width: _unref(imgPosition).width,\n height: _unref(imgPosition).height,\n filter: _unref(filter),\n }),\n onDragstart: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"prevent\"])),\n alt: \"\"\n }, null, 44, _hoisted_1)\n ], 4)\n ], 36)), [\n [_directive_contextmenu, __props.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=30dc7050&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-30dc7050\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-61b7d06a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nimport { PropType, toRef } from 'vue'\nimport { PPTElementOutline } from '@/types/slides'\n\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementOutline',\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\nconst props = __props\n\n\n\nconst {\n outlineWidth,\n outlineStyle,\n outlineColor,\n} = useElementOutline(toRef(props, 'outline'))\n\nreturn (_ctx: any,_cache: any) => {\n return (__props.outline)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n class: \"element-outline\",\n overflow: \"visible\",\n width: __props.width,\n height: __props.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${__props.width},0 L${__props.width},${__props.height} L0,${__props.height} Z`,\n stroke: _unref(outlineColor),\n \"stroke-width\": _unref(outlineWidth),\n \"stroke-dasharray\": _unref(outlineStyle) === 'dashed' ? '10 6' : '0 0'\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./ElementOutline.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementOutline.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementOutline.vue?vue&type=style&index=0&id=61b7d06a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-61b7d06a\"]])\n\nexport default __exports__","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}","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ProsemirrorEditor',\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 emits: [\"update\", \"focus\", \"blur\"],\n setup(__props, { expose, emit }: { emit: ({\n (event: 'update', payload: string): void\n (event: 'focus'): void\n (event: 'blur'): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst mainStore = useMainStore()\nconst { handleElementId } = storeToRefs(mainStore)\n\nconst editorViewRef = ref()\nlet editorView: EditorView\n\n// 富文本的各种交互事件监听:\n// 聚焦时取消全局快捷键事件\n// 输入文字时同步数据到vuex\n// 点击鼠标和键盘时同步富文本状态到工具栏\nconst handleInput = debounce(function() {\n emit('update', editorView.dom.innerHTML)\n}, 300, { trailing: true })\n\nconst handleFocus = () => {\n mainStore.setDisableHotkeysState(true)\n emit('focus')\n}\n\nconst handleBlur = () => {\n mainStore.setDisableHotkeysState(false)\n emit('blur')\n}\n\nconst 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\nconst handleKeydown = () => {\n handleInput()\n handleClick()\n}\n\n// 将富文本内容同步到DOM\nconst textContent = computed(() => props.value)\nwatch(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// 打开/关闭编辑器的编辑模式\nwatch(() => props.editable, () => {\n editorView.setProps({ editable: () => props.editable })\n})\n\n// Prosemirror编辑器的初始化和卸载\nonMounted(() => {\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})\nonUnmounted(() => {\n editorView && editorView.destroy()\n})\n\n// 暴露 focus 方法\nconst focus = () => editorView.focus()\nexpose({ focus })\n\n// 执行富文本命令(可以是一个或多个)\n// 部分命令在执行前先判断当前选区是否为空,如果选区为空先进行全选操作\nconst 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\nemitter.on(EmitterEvents.RICH_TEXT_COMMAND, execCommand)\nonUnmounted(() => {\n emitter.off(EmitterEvents.RICH_TEXT_COMMAND, execCommand)\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"prosemirror-editor\",\n ref_key: \"editorViewRef\",\n ref: editorViewRef\n }, null, 512))\n}\n}\n\n})","import script from \"./ProsemirrorEditor.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ProsemirrorEditor.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ProsemirrorEditor.vue?vue&type=style&index=0&id=1debd6ff&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1debd6ff\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-7135a611\"),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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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\nconst props = __props\n\n\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { handleElementId, isScaling } = storeToRefs(mainStore)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst elementRef = ref()\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst 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// 如果高度变化时正处在缩放操作中,则等待缩放操作结束后再更新\nconst realHeightCache = ref(-1)\n\nwatch(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\nconst 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}\nconst resizeObserver = new ResizeObserver(updateTextElementHeight)\n\nonMounted(() => {\n if (elementRef.value) resizeObserver.observe(elementRef.value)\n})\nonUnmounted(() => {\n if (elementRef.value) resizeObserver.unobserve(elementRef.value)\n})\n\nconst updateContent = (content: string) => {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { content },\n })\n \n addHistorySnapshot()\n}\n\nconst checkEmptyText = () => {\n const pureText = props.elementInfo.content.replaceAll(/<[^>]+>/g, '')\n if (!pureText) slidesStore.deleteElement(props.elementInfo.id)\n}\n\nconst isHandleElement = computed(() => handleElementId.value === props.elementInfo.id)\nwatch(isHandleElement, () => {\n if (!isHandleElement.value) checkEmptyText()\n})\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-text\", { 'lock': __props.elementInfo.lock }]),\n ref_key: \"elementRef\",\n ref: elementRef,\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n backgroundColor: __props.elementInfo.fill,\n opacity: __props.elementInfo.opacity,\n textShadow: _unref(shadowStyle),\n lineHeight: __props.elementInfo.lineHeight,\n letterSpacing: (__props.elementInfo.wordSpace || 0) + 'px',\n color: __props.elementInfo.defaultColor,\n fontFamily: __props.elementInfo.defaultFontName,\n }),\n onMousedown: _cache[3] || (_cache[3] = $event => handleSelectElement($event)),\n onTouchstart: _cache[4] || (_cache[4] = $event => handleSelectElement($event))\n }, [\n _createVNode(ElementOutline, {\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n outline: __props.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]),\n _createVNode(ProsemirrorEditor, {\n class: \"text\",\n elementId: __props.elementInfo.id,\n defaultColor: __props.elementInfo.defaultColor,\n defaultFontName: __props.elementInfo.defaultFontName,\n editable: !__props.elementInfo.lock,\n value: __props.elementInfo.content,\n style: _normalizeStyle({\n '--textIndent': `${__props.elementInfo.textIndent || 0}px`,\n '--paragraphSpace': `${__props.elementInfo.paragraphSpace === undefined ? 5 : __props.elementInfo.paragraphSpace}px`,\n }),\n onUpdate: _cache[0] || (_cache[0] = value => updateContent(value)),\n onMousedown: _cache[1] || (_cache[1] = $event => handleSelectElement($event, false)),\n onTouchstart: _cache[2] || (_cache[2] = $event => handleSelectElement($event))\n }, null, 8, [\"elementId\", \"defaultColor\", \"defaultFontName\", \"editable\", \"value\", \"style\"]),\n _hoisted_1,\n _hoisted_2\n ], 36)), [\n [_directive_contextmenu, __props.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=7135a611&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7135a611\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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\nimport { PropType } from 'vue'\r\n\r\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'GradientDefs',\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},\n setup(__props) {\n\r\n\r\n\nreturn (_ctx: any,_cache: any) => {\n return (__props.type === 'linear')\n ? (_openBlock(), _createElementBlock(\"linearGradient\", {\n key: 0,\n id: __props.id,\n x1: \"0%\",\n y1: \"0%\",\n x2: \"100%\",\n y2: \"0%\",\n gradientTransform: `rotate(${__props.rotate},0.5,0.5)`\n }, [\n _createElementVNode(\"stop\", {\n offset: \"0%\",\n \"stop-color\": __props.color1\n }, null, 8, _hoisted_2),\n _createElementVNode(\"stop\", {\n offset: \"100%\",\n \"stop-color\": __props.color2\n }, null, 8, _hoisted_3)\n ], 8, _hoisted_1))\n : (_openBlock(), _createElementBlock(\"radialGradient\", {\n key: 1,\n id: __props.id\n }, [\n _createElementVNode(\"stop\", {\n offset: \"0%\",\n \"stop-color\": __props.color1\n }, null, 8, _hoisted_5),\n _createElementVNode(\"stop\", {\n offset: \"100%\",\n \"stop-color\": __props.color2\n }, null, 8, _hoisted_6)\n ], 8, _hoisted_4))\n}\n}\n\n})","import script from \"./GradientDefs.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./GradientDefs.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-d4c718fa\"),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\nimport { computed, nextTick, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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\nconst props = __props\n\n\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { handleElementId } = storeToRefs(mainStore)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst 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\nconst outline = computed(() => props.elementInfo.outline)\nconst { outlineWidth, outlineStyle, outlineColor } = useElementOutline(outline)\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst flipH = computed(() => props.elementInfo.flipH)\nconst flipV = computed(() => props.elementInfo.flipV)\nconst { flipStyle } = useElementFlip(flipH, flipV)\n\nconst editable = ref(false)\n\nwatch(handleElementId, () => {\n if (handleElementId.value !== props.elementInfo.id) {\n if (editable.value) editable.value = false\n }\n})\n\nconst 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\nconst 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\nconst 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\nconst prosemirrorEditorRef = ref()\nconst startEdit = () => {\n editable.value = true\n nextTick(() => prosemirrorEditorRef.value && prosemirrorEditorRef.value.focus())\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-shape\", { 'lock': __props.elementInfo.lock }]),\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n height: __props.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n opacity: __props.elementInfo.opacity,\n filter: _unref(shadowStyle) ? `drop-shadow(${_unref(shadowStyle)})` : '',\n transform: _unref(flipStyle),\n color: _unref(text).defaultColor,\n fontFamily: _unref(text).defaultFontName,\n }),\n onMousedown: _cache[4] || (_cache[4] = $event => handleSelectElement($event)),\n onTouchstart: _cache[5] || (_cache[5] = $event => handleSelectElement($event)),\n onDblclick: _cache[6] || (_cache[6] = ($event: any) => (startEdit()))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: __props.elementInfo.width,\n height: __props.elementInfo.height\n }, [\n (__props.elementInfo.gradient)\n ? (_openBlock(), _createElementBlock(\"defs\", _hoisted_2, [\n _createVNode(GradientDefs, {\n id: `editabel-gradient-${__props.elementInfo.id}`,\n type: __props.elementInfo.gradient.type,\n color1: __props.elementInfo.gradient.color[0],\n color2: __props.elementInfo.gradient.color[1],\n rotate: __props.elementInfo.gradient.rotate\n }, null, 8, [\"id\", \"type\", \"color1\", \"color2\", \"rotate\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"g\", {\n transform: `scale(${__props.elementInfo.width / __props.elementInfo.viewBox[0]}, ${__props.elementInfo.height / __props.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: __props.elementInfo.path,\n fill: __props.elementInfo.gradient ? `url(#editabel-gradient-${__props.elementInfo.id})` : __props.elementInfo.fill,\n stroke: _unref(outlineColor),\n \"stroke-width\": _unref(outlineWidth),\n \"stroke-dasharray\": _unref(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\", [_unref(text).align, { 'editable': editable.value || _unref(text).content }]])\n }, [\n (editable.value || _unref(text).content)\n ? (_openBlock(), _createBlock(ProsemirrorEditor, {\n key: 0,\n ref_key: \"prosemirrorEditorRef\",\n ref: prosemirrorEditorRef,\n elementId: __props.elementInfo.id,\n defaultColor: _unref(text).defaultColor,\n defaultFontName: _unref(text).defaultFontName,\n editable: !__props.elementInfo.lock,\n value: _unref(text).content,\n onUpdate: _cache[0] || (_cache[0] = value => updateText(value)),\n onBlur: _cache[1] || (_cache[1] = ($event: any) => (checkEmptyText())),\n onMousedown: _cache[2] || (_cache[2] = $event => handleSelectElement($event, false)),\n onTouchstart: _cache[3] || (_cache[3] = $event => handleSelectElement($event, false))\n }, null, 8, [\"elementId\", \"defaultColor\", \"defaultFontName\", \"editable\", \"value\"]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ], 36)), [\n [_directive_contextmenu, __props.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=d4c718fa&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-d4c718fa\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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\nimport { computed, PropType } from 'vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LinePointMarker',\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\nconst props = __props\n\n\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\nconst path = computed(() => pathMap[props.type])\nconst rotate = computed(() => rotateMap[`${props.type}-${props.position}`] || 0)\nconst size = computed(() => props.baseSize < 2 ? 2 : props.baseSize)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"marker\", {\n id: `${__props.id}-${__props.type}-${__props.position}`,\n markerUnits: \"userSpaceOnUse\",\n orient: \"auto\",\n markerWidth: _unref(size) * 3,\n markerHeight: _unref(size) * 3,\n refX: _unref(size) * 1.5,\n refY: _unref(size) * 1.5\n }, [\n _createElementVNode(\"path\", {\n d: _unref(path),\n fill: __props.color,\n transform: `scale(${_unref(size) * 0.3}, ${_unref(size) * 0.3}) rotate(${_unref(rotate)}, 5, 5)`\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n}\n}\n\n})","import script from \"./LinePointMarker.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LinePointMarker.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-6550e504\"),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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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\nconst props = __props\n\n\n\nconst handleSelectElement = (e: MouseEvent | TouchEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n}\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst svgWidth = computed(() => {\n const width = Math.abs(props.elementInfo.start[0] - props.elementInfo.end[0])\n return width < 24 ? 24 : width\n})\nconst svgHeight = computed(() => {\n const height = Math.abs(props.elementInfo.start[1] - props.elementInfo.end[1])\n return height < 24 ? 24 : height\n})\n\nconst lineDashArray = computed(() => props.elementInfo.style === 'dashed' ? '10 6' : '0 0')\n\nconst path = computed(() => {\n return getLineElementPath(props.elementInfo)\n})\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-shape\", { 'lock': __props.elementInfo.lock }]),\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({ filter: _unref(shadowStyle) ? `drop-shadow(${_unref(shadowStyle)})` : '' }),\n onMousedown: _cache[0] || (_cache[0] = $event => handleSelectElement($event)),\n onTouchstart: _cache[1] || (_cache[1] = $event => handleSelectElement($event))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: _unref(svgWidth),\n height: _unref(svgHeight)\n }, [\n _createElementVNode(\"defs\", null, [\n (__props.elementInfo.points[0])\n ? (_openBlock(), _createBlock(LinePointMarker, {\n key: 0,\n id: __props.elementInfo.id,\n position: \"start\",\n type: __props.elementInfo.points[0],\n color: __props.elementInfo.color,\n baseSize: __props.elementInfo.width\n }, null, 8, [\"id\", \"type\", \"color\", \"baseSize\"]))\n : _createCommentVNode(\"\", true),\n (__props.elementInfo.points[1])\n ? (_openBlock(), _createBlock(LinePointMarker, {\n key: 1,\n id: __props.elementInfo.id,\n position: \"end\",\n type: __props.elementInfo.points[1],\n color: __props.elementInfo.color,\n baseSize: __props.elementInfo.width\n }, null, 8, [\"id\", \"type\", \"color\", \"baseSize\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"path\", {\n class: \"line-point\",\n d: _unref(path),\n stroke: __props.elementInfo.color,\n \"stroke-width\": __props.elementInfo.width,\n \"stroke-dasharray\": _unref(lineDashArray),\n fill: \"none\",\n \"marker-start\": __props.elementInfo.points[0] ? `url(#${__props.elementInfo.id}-${__props.elementInfo.points[0]}-start)` : '',\n \"marker-end\": __props.elementInfo.points[1] ? `url(#${__props.elementInfo.id}-${__props.elementInfo.points[1]}-end)` : ''\n }, null, 8, _hoisted_2),\n _withDirectives(_createElementVNode(\"path\", {\n class: \"line-path\",\n d: _unref(path),\n stroke: \"transparent\",\n \"stroke-width\": \"20\",\n fill: \"none\"\n }, null, 8, _hoisted_3), [\n [_directive_contextmenu, __props.contextmenus]\n ])\n ], 8, _hoisted_1))\n ], 36)\n ], 6))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=6550e504&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6550e504\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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\nimport { computed, 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\n\nexport default /*#__PURE__*/_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\nconst props = __props\n\n\n\nconst chartRef = ref()\nconst slideScale = inject(injectKeySlideScale) || ref(1)\n\nlet chart: IChartistLineChart | IChartistBarChart | IChartistPieChart | undefined\n\nconst chartHeight = computed(() => {\n if (props.legend) return props.height - 20\n return props.height\n})\n\nconst 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\nconst 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\nconst updateChart = () => {\n if (!chart) {\n renderChart()\n return\n }\n const { data, options } = getDataAndOptions()\n chart.update(data, options)\n}\n\nwatch([\n () => props.width,\n () => props.height,\n () => props.data,\n () => props.options,\n slideScale,\n], updateChart)\n\nonMounted(renderChart)\n\nconst 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,剩余部分获取最后一个主题色的相近颜色作为配色\nconst 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\nwatch(themeColors, updateTheme)\nonMounted(updateTheme)\n\n// 更新网格颜色,包括坐标的文字部分\nconst updateGridColor = () => {\n if (!chartRef.value) return\n if (props.gridColor) chartRef.value.style.setProperty(`--grid-color`, props.gridColor)\n}\n\nwatch(() => props.gridColor, updateGridColor)\nonMounted(updateGridColor)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"chart\",\n style: _normalizeStyle({ flexDirection: __props.legend === 'top' ? 'column-reverse' : 'column' })\n }, [\n _createElementVNode(\"div\", {\n class: \"chart-content\",\n ref_key: \"chartRef\",\n ref: chartRef,\n style: _normalizeStyle({\n width: __props.width + 'px',\n height: _unref(chartHeight) + 'px',\n transform: `scale(${1 / _unref(slideScale)})`,\n })\n }, null, 4),\n (__props.legend)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"legends\",\n style: _normalizeStyle({ transform: `scale(${1 / _unref(slideScale)})` })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(__props.legends, (legend, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"legend\",\n key: index,\n style: _normalizeStyle({ color: __props.gridColor })\n }, [\n _createElementVNode(\"div\", {\n class: \"block\",\n style: _normalizeStyle({ backgroundColor: _unref(themeColors)[index] })\n }, null, 4),\n _createTextVNode(\" \" + _toDisplayString(legend), 1)\n ], 4))\n }), 128))\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 4))\n}\n}\n\n})","import script from \"./Chart.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Chart.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Chart.vue?vue&type=style&index=0&id=1aa2357d&lang=scss&scoped=true\"\nimport \"./Chart.vue?vue&type=style&index=1&id=1aa2357d&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, [['__scopeId',\"data-v-1aa2357d\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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},\n setup(__props) {\n\nconst props = __props\n\r\n\r\n\r\nconst 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\nconst openDataEditor = () => {\r\n emitter.emit(EmitterEvents.OPEN_CHART_DATA_EDITOR)\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-chart\", { 'lock': __props.elementInfo.lock }]),\n style: _normalizeStyle({\r\n top: __props.elementInfo.top + 'px',\r\n left: __props.elementInfo.left + 'px',\r\n width: __props.elementInfo.width + 'px',\r\n height: __props.elementInfo.height + 'px',\r\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\r\n backgroundColor: __props.elementInfo.fill,\r\n }),\n onMousedown: _cache[0] || (_cache[0] = $event => handleSelectElement($event)),\n onTouchstart: _cache[1] || (_cache[1] = $event => handleSelectElement($event)),\n onDblclick: _cache[2] || (_cache[2] = ($event: any) => (openDataEditor()))\n }, [\n _createVNode(ElementOutline, {\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n outline: __props.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]),\n _createVNode(Chart, {\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n type: __props.elementInfo.chartType,\n data: __props.elementInfo.data,\n options: __props.elementInfo.options,\n themeColor: __props.elementInfo.themeColor,\n gridColor: __props.elementInfo.gridColor,\n legends: __props.elementInfo.data.legends,\n legend: __props.elementInfo.legend || ''\n }, null, 8, [\"width\", \"height\", \"type\", \"data\", \"options\", \"themeColor\", \"gridColor\", \"legends\", \"legend\"])\n ], 36)), [\n [_directive_contextmenu, __props.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=f3c03862&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f3c03862\"]])\n\nexport default __exports__","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 { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-cdb58a1e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"innerHTML\"]\n\nimport { onUnmounted, ref, watch } from 'vue'\nimport { pasteCustomClipboardString, pasteExcelClipboardString } from '@/utils/clipboard'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'CustomTextarea',\n props: {\n value: {\n type: String,\n default: '',\n },\n contenteditable: {\n type: [Boolean, String],\n default: false,\n },\n},\n emits: [\"updateValue\", \"insertExcelData\"],\n setup(__props, { emit }: { emit: ({\n (event: 'updateValue', payload: string): void\n (event: 'insertExcelData', payload: string[][]): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst textareaRef = ref()\nconst text = ref('')\nconst isFocus = ref(false)\n\n// 自定义v-modal,同步数据\n// 当文本框聚焦时,不执行数据同步\nwatch(() => 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\nconst handleInput = () => {\n if (!textareaRef.value) return\n const text = textareaRef.value.innerHTML\n emit('updateValue', text)\n}\n\n// 聚焦时更新焦点标记,并监听粘贴事件\nconst 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// 失焦时更新焦点标记,清除粘贴事件监听\nconst handleBlur = () => {\n isFocus.value = false\n if (textareaRef.value) textareaRef.value.onpaste = null\n}\n\n// 清除粘贴事件监听\nonUnmounted(() => {\n if (textareaRef.value) textareaRef.value.onpaste = null\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"custom-textarea\",\n ref_key: \"textareaRef\",\n ref: textareaRef,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onInput: _cache[0] || (_cache[0] = ($event: any) => (handleInput())),\n innerHTML: text.value\n }, null, 40, _hoisted_1))\n}\n}\n\n})","import script from \"./CustomTextarea.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./CustomTextarea.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./CustomTextarea.vue?vue&type=style&index=0&id=cdb58a1e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-cdb58a1e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, 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-bae8c794\"),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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'EditableTable',\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 emits: [\"change\", \"changeColWidths\", \"changeSelectedCells\"],\n setup(__props, { emit }: { emit: ({\n (event: 'change', payload: TableCell[][]): void\n (event: 'changeColWidths', payload: number[]): void\n (event: 'changeSelectedCells', payload: string[]): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst { canvasScale } = storeToRefs(useMainStore())\n \nconst isStartSelect = ref(false)\nconst startCell = ref([])\nconst endCell = ref([])\n\nconst tableCells = computed({\n get() {\n return props.data\n },\n set(newData) {\n emit('change', newData)\n },\n})\n\n// 主题辅助色\nconst theme = computed(() => props.theme)\nconst { subThemeColor } = useSubThemeColor(theme)\n\n// 计算表格每一列的列宽和总宽度\nconst colSizeList = ref([])\nconst totalWidth = computed(() => colSizeList.value.reduce((a, b) => a + b))\nwatch([\n () => props.colWidths,\n () => props.width,\n], () => {\n colSizeList.value = props.colWidths.map(item => item * props.width)\n}, { immediate: true })\n\n// 清除全部单元格的选中状态\n// 表格处于不可编辑状态时也需要清除\nconst removeSelectedCells = () => {\n startCell.value = []\n endCell.value = []\n}\n\nwatch(() => props.editable, () => {\n if (!props.editable) removeSelectedCells()\n})\n\n// 用于拖拽列宽的操作节点位置\nconst 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// 无效的单元格位置(被合并的单元格位置)集合\nconst cells = computed(() => props.data)\nconst { hideCells } = useHideCells(cells)\n\n// 当前选中的单元格集合\nconst 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\nwatch(selectedCells, (value, oldValue) => {\n if (isEqual(value, oldValue)) return\n emit('changeSelectedCells', selectedCells.value)\n})\n\n// 当前激活的单元格:当且仅当只有一个选中单元格时,该单元格为激活的单元格\nconst activedCell = computed(() => {\n if (selectedCells.value.length > 1) return null\n return selectedCells.value[0]\n})\n\n// 当前选中的单元格位置范围\nconst 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// 设置选中单元格状态(鼠标点击或拖选)\nconst handleMouseup = () => isStartSelect.value = false\n\nconst 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\nconst handleCellMouseenter = (rowIndex: number, colIndex: number) => {\n if (!isStartSelect.value) return\n endCell.value = [rowIndex, colIndex]\n}\n\nonMounted(() => {\n document.addEventListener('mouseup', handleMouseup)\n})\nonUnmounted(() => {\n document.removeEventListener('mouseup', handleMouseup)\n})\n\n// 判断某位置是否为无效单元格(被合并掉的位置)\nconst isHideCell = (rowIndex: number, colIndex: number) => hideCells.value.includes(`${rowIndex}_${colIndex}`)\n\n// 选中指定的列\nconst selectCol = (index: number) => {\n const maxRow = tableCells.value.length - 1\n startCell.value = [0, index]\n endCell.value = [maxRow, index]\n}\n\n// 选中指定的行\nconst selectRow = (index: number) => {\n const maxCol = tableCells.value[index].length - 1\n startCell.value = [index, 0]\n endCell.value = [index, maxCol]\n}\n\n// 选中全部单元格\nconst 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// 删除一行\nconst 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// 删除一列\nconst 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// 插入一行\nconst 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// 插入一列\nconst 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// 填充指定的行/列数\nconst 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// 合并单元格\nconst 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// 拆分单元格\nconst 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// 鼠标拖拽调整列宽\nconst 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// 清空选中单元格内的文字\nconst 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// 当前行右边无单元格(已处在行末),且不存在下一行(已处在最后一行)时,新建一行并将焦点移动至下一行行首\nconst 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// 表格快捷键监听\nconst 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\nonMounted(() => {\n document.addEventListener('keydown', keydownListener)\n})\nonUnmounted(() => {\n document.removeEventListener('keydown', keydownListener)\n})\n\n// 单元格文字输入时更新表格数据\nconst 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的数据,表格的行/列数不够时自动补足\nconst 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// 获取有效的单元格(排除掉被合并的单元格)\nconst 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\nconst 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// 必须单选且所选单元格为合并单元格才可以拆分\nconst 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\nconst 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\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"editable-table\",\n style: _normalizeStyle({ width: _unref(totalWidth) + 'px' })\n }, [\n (__props.editable)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(dragLinePosition), (pos, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"drag-line\",\n key: index,\n style: _normalizeStyle({ left: pos + 'px' }),\n onMousedown: $event => handleMousedownColHandler($event, index)\n }, null, 44, _hoisted_2))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"table\", {\n class: _normalizeClass({\n 'theme': _unref(theme),\n 'row-header': _unref(theme)?.rowHeader,\n 'row-footer': _unref(theme)?.rowFooter,\n 'col-header': _unref(theme)?.colHeader,\n 'col-footer': _unref(theme)?.colFooter,\n }),\n style: _normalizeStyle(`--themeColor: ${_unref(theme)?.color}; --subThemeColor1: ${_unref(subThemeColor)[0]}; --subThemeColor2: ${_unref(subThemeColor)[1]}`)\n }, [\n _createElementVNode(\"colgroup\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(colSizeList.value, (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(_unref(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': _unref(selectedCells).includes(`${rowIndex}_${colIndex}`) && _unref(selectedCells).length > 1,\n 'active': _unref(activedCell) === `${rowIndex}_${colIndex}`,\n }]),\n style: _normalizeStyle({\n borderStyle: __props.outline.style,\n borderColor: __props.outline.color,\n borderWidth: __props.outline.width + 'px',\n ..._unref(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 => handleCellMousedown($event, rowIndex, colIndex),\n onMouseenter: ($event: any) => (handleCellMouseenter(rowIndex, colIndex))\n }, [\n (_unref(activedCell) === `${rowIndex}_${colIndex}`)\n ? (_openBlock(), _createBlock(CustomTextarea, {\n key: 0,\n class: _normalizeClass([\"cell-text\", { 'active': _unref(activedCell) === `${rowIndex}_${colIndex}` }]),\n value: cell.text,\n onUpdateValue: value => _unref(handleInput)(value, rowIndex, colIndex),\n onInsertExcelData: value => insertExcelData(value, rowIndex, colIndex)\n }, null, 8, [\"class\", \"value\", \"onUpdateValue\", \"onInsertExcelData\"]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"cell-text\",\n innerHTML: _unref(formatText)(cell.text)\n }, null, 8, _hoisted_5))\n ], 46, _hoisted_4)), [\n [_vShow, !_unref(hideCells).includes(`${rowIndex}_${colIndex}`)],\n [_directive_contextmenu, (el) => contextmenus(el)]\n ])\n }), 128))\n ]))\n }), 128))\n ])\n ], 6)\n ], 4))\n}\n}\n\n})","import script from \"./EditableTable.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./EditableTable.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./EditableTable.vue?vue&type=style&index=0&id=bae8c794&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-bae8c794\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { withModifiers as _withModifiers, createVNode as _createVNode, unref as _unref, 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-6391c486\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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\nconst props = __props\n\n\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { canvasScale, handleElementId, isScaling } = storeToRefs(mainStore)\n\nconst elementRef = ref()\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst handleSelectElement = (e: MouseEvent | TouchEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n}\n\n// 更新表格的可编辑状态,表格处于编辑状态时需要禁用全局快捷键\nconst editable = ref(false)\n\nwatch(handleElementId, () => {\n if (handleElementId.value !== props.elementInfo.id) editable.value = false\n})\n\nwatch(editable, () => {\n mainStore.setDisableHotkeysState(editable.value)\n})\n\nconst startEdit = () => {\n if (!props.elementInfo.lock) editable.value = true\n}\n\n// 监听表格元素的尺寸变化,当高度变化时,更新高度到vuex\n// 如果高度变化时正处在缩放操作中,则等待缩放操作结束后再更新\nconst realHeightCache = ref(-1)\n\nwatch(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\nconst 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\nconst resizeObserver = new ResizeObserver(updateTableElementHeight)\n\nonMounted(() => {\n if (elementRef.value) resizeObserver.observe(elementRef.value)\n})\nonUnmounted(() => {\n if (elementRef.value) resizeObserver.unobserve(elementRef.value)\n})\n\n// 更新表格内容数据\nconst updateTableCells = (data: TableCell[][]) => {\n slidesStore.updateElement({\n id: props.elementInfo.id, \n props: { data },\n })\n addHistorySnapshot()\n}\n\n// 更新表格的列宽数据\nconst 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// 更新表格当前选中的单元格\nconst updateSelectedCells = (cells: string[]) => {\n nextTick(() => mainStore.setSelectedTableCells(cells))\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-table\", { 'lock': __props.elementInfo.lock }]),\n ref_key: \"elementRef\",\n ref: elementRef,\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(EditableTable, {\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"])),\n data: __props.elementInfo.data,\n width: __props.elementInfo.width,\n colWidths: __props.elementInfo.colWidths,\n outline: __props.elementInfo.outline,\n theme: __props.elementInfo.theme,\n editable: editable.value,\n onChange: _cache[1] || (_cache[1] = data => updateTableCells(data)),\n onChangeColWidths: _cache[2] || (_cache[2] = widths => updateColWidths(widths)),\n onChangeSelectedCells: _cache[3] || (_cache[3] = cells => updateSelectedCells(cells))\n }, null, 8, [\"data\", \"width\", \"colWidths\", \"outline\", \"theme\", \"editable\"]),\n (!editable.value || __props.elementInfo.lock)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"table-mask\", { 'lock': __props.elementInfo.lock }]),\n onDblclick: _cache[4] || (_cache[4] = ($event: any) => (startEdit())),\n onMousedown: _cache[5] || (_cache[5] = $event => handleSelectElement($event)),\n onTouchstart: _cache[6] || (_cache[6] = $event => handleSelectElement($event))\n }, [\n _createElementVNode(\"div\", {\n class: \"mask-tip\",\n style: _normalizeStyle({ transform: `scale(${ 1 / _unref(canvasScale) })` })\n }, \"双击编辑\", 4)\n ], 34))\n : _createCommentVNode(\"\", true)\n ])), [\n [_directive_contextmenu, __props.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=6391c486&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6391c486\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-31390388\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\", \"stroke\", \"stroke-width\"]\nconst _hoisted_2 = [\"transform\"]\nconst _hoisted_3 = [\"d\"]\n\nimport { PropType } from 'vue'\nimport { PPTLatexElement } from '@/types/slides'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport emitter, { EmitterEvents } from '@/utils/emitter'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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\nconst props = __props\n\n\n\nconst handleSelectElement = (e: MouseEvent | TouchEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n}\n\nconst openLatexEditor = () => {\n emitter.emit(EmitterEvents.OPEN_LATEX_EDITOR)\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-latex\", { 'lock': __props.elementInfo.lock }]),\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n height: __props.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n onMousedown: _cache[0] || (_cache[0] = $event => handleSelectElement($event)),\n onTouchstart: _cache[1] || (_cache[1] = $event => handleSelectElement($event)),\n onDblclick: _cache[2] || (_cache[2] = ($event: any) => (openLatexEditor()))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n stroke: __props.elementInfo.color,\n \"stroke-width\": __props.elementInfo.strokeWidth,\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n }, [\n _createElementVNode(\"g\", {\n transform: `scale(${__props.elementInfo.width / __props.elementInfo.viewBox[0]}, ${__props.elementInfo.height / __props.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n d: __props.elementInfo.path\n }, null, 8, _hoisted_3)\n ], 8, _hoisted_2)\n ], 8, _hoisted_1))\n ], 32)), [\n [_directive_contextmenu, __props.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=31390388&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-31390388\"]])\n\nexport default __exports__","/* 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}","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, unref as _unref, 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-2fc4c202\"),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 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_10 = [\n _hoisted_9\n]\nconst _hoisted_11 = { class: \"time\" }\nconst _hoisted_12 = { class: \"ptime\" }\nconst _hoisted_13 = /*#__PURE__*/_createTextVNode(\" / \")\nconst _hoisted_14 = { class: \"dtime\" }\nconst _hoisted_15 = { class: \"icons icons-right\" }\nconst _hoisted_16 = { class: \"speed\" }\nconst _hoisted_17 = { class: \"icon speed-icon\" }\nconst _hoisted_18 = [\"onClick\"]\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"icon-content\" }, \"循环\", -1))\nconst _hoisted_20 = [\n _hoisted_19\n]\nconst _hoisted_21 = { class: \"bar\" }\nconst _hoisted_22 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_23 = [\n _hoisted_22\n]\n\nimport { computed, ref } from 'vue'\nimport useMSE from './useMSE'\nimport { message } from 'ant-design-vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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\nconst props = __props\n\n\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\nconst videoRef = ref()\nconst playBarWrap = ref()\nconst volumeBarRef = ref()\n\nconst volume = ref(0.5)\nconst paused = ref(true)\nconst currentTime = ref(0)\nconst duration = ref(0)\nconst loaded = ref(0)\nconst loop = ref(false)\nconst bezelTransition = ref(false)\nconst playbackRate = ref(1)\n\nconst playBarTimeVisible = ref(false)\nconst playBarTime = ref('00:00')\nconst playBarTimeLeft = ref('0')\n\nconst ptime = computed(() => secondToTime(currentTime.value))\nconst dtime = computed(() => secondToTime(duration.value))\nconst playedBarWidth = computed(() => currentTime.value / duration.value * 100 + '%')\nconst loadedBarWidth = computed(() => loaded.value / duration.value * 100 + '%')\nconst volumeBarWidth = computed(() => volume.value * 100 + '%')\n\nconst speedMenuVisible = ref(false)\nconst 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\nconst 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\nconst play = () => {\n if (!videoRef.value) return\n\n paused.value = false\n videoRef.value.play()\n bezelTransition.value = true\n}\n\nconst pause = () => {\n if (!videoRef.value) return\n\n paused.value = true\n videoRef.value.pause()\n bezelTransition.value = true\n}\n\nconst toggle = () => {\n if (paused.value) play() \n else pause()\n}\n\nconst 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\nconst speed = (rate: number) => {\n if (videoRef.value) videoRef.value.playbackRate = rate\n playbackRate.value = rate\n}\n\nconst handleDurationchange = () => {\n duration.value = videoRef.value?.duration || 0\n}\n\nconst handleTimeupdate = () => {\n currentTime.value = videoRef.value?.currentTime || 0\n}\n\nconst handleEnded = () => {\n if (!loop.value) pause()\n else {\n seek(0)\n play()\n }\n}\n\nconst handleProgress = () => {\n loaded.value = videoRef.value?.buffered.length ? videoRef.value.buffered.end(videoRef.value.buffered.length - 1) : 0\n}\n\nconst handleError = () => message.error('视频加载失败')\n\nconst 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\nconst 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\nconst handleMousedownPlayBar = () => {\n document.addEventListener('mousemove', thumbMove)\n document.addEventListener('touchmove', thumbMove)\n document.addEventListener('mouseup', thumbUp)\n document.addEventListener('touchend', thumbUp)\n}\n\nconst 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)) / 45\n setVolume(percentage)\n}\n\nconst volumeUp = () => {\n document.removeEventListener('mousemove', volumeMove)\n document.removeEventListener('touchmove', volumeMove)\n document.removeEventListener('mouseup', volumeUp)\n document.removeEventListener('touchend', volumeUp)\n}\n\nconst handleMousedownVolumeBar = () => {\n document.addEventListener('mousemove', volumeMove)\n document.addEventListener('touchmove', volumeMove)\n document.addEventListener('mouseup', volumeUp)\n document.addEventListener('touchend', volumeUp)\n}\n\nconst handleClickVolumeBar = (e: MouseEvent) => {\n if (!volumeBarRef.value) return\n const percentage = (e.clientX - getBoundingClientRectViewLeft(volumeBarRef.value)) / 45\n setVolume(percentage)\n}\n\nconst 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\nconst 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\nconst toggleLoop = () => {\n loop.value = !loop.value\n}\n\nconst autoHideControllerTimer = ref(-1)\nconst hideController = ref(false)\nconst 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\nuseMSE(props.src, videoRef)\n\nreturn (_ctx: any,_cache: 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': hideController.value }]),\n style: _normalizeStyle({\n width: __props.width * __props.scale + 'px',\n height: __props.height * __props.scale + 'px',\n transform: `scale(${1 / __props.scale})`,\n }),\n onMousemove: _cache[22] || (_cache[22] = ($event: any) => (autoHideController())),\n onClick: _cache[23] || (_cache[23] = ($event: any) => (autoHideController()))\n }, [\n _createElementVNode(\"div\", {\n class: \"video-wrap\",\n onClick: _cache[8] || (_cache[8] = ($event: any) => (toggle()))\n }, [\n _createElementVNode(\"video\", {\n class: \"video\",\n ref_key: \"videoRef\",\n ref: videoRef,\n src: __props.src,\n poster: __props.poster,\n \"webkit-playsinline\": \"\",\n playsinline: \"\",\n onDurationchange: _cache[0] || (_cache[0] = ($event: any) => (handleDurationchange())),\n onTimeupdate: _cache[1] || (_cache[1] = ($event: any) => (handleTimeupdate())),\n onEnded: _cache[2] || (_cache[2] = ($event: any) => (handleEnded())),\n onProgress: _cache[3] || (_cache[3] = ($event: any) => (handleProgress())),\n onPlay: _cache[4] || (_cache[4] = ($event: any) => (autoHideController())),\n onPause: _cache[5] || (_cache[5] = ($event: any) => (autoHideController())),\n onError: _cache[6] || (_cache[6] = ($event: any) => (handleError()))\n }, null, 40, _hoisted_1),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", {\n class: _normalizeClass([\"bezel-icon\", { 'bezel-transition': bezelTransition.value }]),\n onAnimationend: _cache[7] || (_cache[7] = ($event: any) => (bezelTransition.value = false))\n }, [\n (paused.value)\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) => (toggle()))\n }, [\n _createElementVNode(\"span\", _hoisted_6, [\n (paused.value)\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) => (toggleVolume()))\n }, [\n _createElementVNode(\"span\", _hoisted_8, [\n (volume.value === 0)\n ? (_openBlock(), _createBlock(_component_IconVolumeMute, { key: 0 }))\n : (volume.value === 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) => (handleMousedownVolumeBar())),\n onTouchstart: _cache[12] || (_cache[12] = ($event: any) => (handleMousedownVolumeBar())),\n onClick: _cache[13] || (_cache[13] = $event => handleClickVolumeBar($event))\n }, [\n _createElementVNode(\"div\", {\n class: \"volume-bar\",\n ref_key: \"volumeBarRef\",\n ref: volumeBarRef\n }, [\n _createElementVNode(\"div\", {\n class: \"volume-bar-inner\",\n style: _normalizeStyle({ width: _unref(volumeBarWidth) })\n }, _hoisted_10, 4)\n ], 512)\n ], 32)\n ]),\n _createElementVNode(\"span\", _hoisted_11, [\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_unref(ptime)), 1),\n _hoisted_13,\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_unref(dtime)), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_15, [\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"div\", _hoisted_17, [\n _createElementVNode(\"span\", {\n class: \"icon-content\",\n onClick: _cache[14] || (_cache[14] = ($event: any) => (speedMenuVisible.value = !speedMenuVisible.value))\n }, \"倍速\"),\n (speedMenuVisible.value)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"speed-menu\",\n onMouseleave: _cache[15] || (_cache[15] = ($event: any) => (speedMenuVisible.value = false))\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(speedOptions, (item) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"speed-menu-item\", { 'active': item.value === playbackRate.value }]),\n key: item.label,\n onClick: ($event: any) => (speed(item.value))\n }, _toDisplayString(item.label), 11, _hoisted_18)\n }), 64))\n ], 32))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _createElementVNode(\"div\", {\n class: \"loop\",\n onClick: _cache[16] || (_cache[16] = ($event: any) => (toggleLoop()))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"icon loop-icon\", { 'active': loop.value }])\n }, _hoisted_20, 2)\n ])\n ]),\n _createElementVNode(\"div\", {\n class: \"bar-wrap\",\n ref_key: \"playBarWrap\",\n ref: playBarWrap,\n onMousedown: _cache[17] || (_cache[17] = ($event: any) => (handleMousedownPlayBar())),\n onTouchstart: _cache[18] || (_cache[18] = ($event: any) => (handleMousedownPlayBar())),\n onMousemove: _cache[19] || (_cache[19] = $event => handleMousemovePlayBar($event)),\n onMouseenter: _cache[20] || (_cache[20] = ($event: any) => (playBarTimeVisible.value = true)),\n onMouseleave: _cache[21] || (_cache[21] = ($event: any) => (playBarTimeVisible.value = false))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"bar-time\", { 'hidden': !playBarTimeVisible.value }]),\n style: _normalizeStyle({ left: playBarTimeLeft.value })\n }, _toDisplayString(playBarTime.value), 7),\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"div\", {\n class: \"loaded\",\n style: _normalizeStyle({ width: _unref(loadedBarWidth) })\n }, null, 4),\n _createElementVNode(\"div\", {\n class: \"played\",\n style: _normalizeStyle({ width: _unref(playedBarWidth) })\n }, _hoisted_23, 4)\n ])\n ], 544)\n ])\n ], 38))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=2fc4c202&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, [['__scopeId',\"data-v-2fc4c202\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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\nconst props = __props\n\n\n\nconst { canvasScale } = storeToRefs(useMainStore())\n\nconst 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\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-video\", { 'lock': __props.elementInfo.lock }]),\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n height: __props.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n onMousedown: _cache[2] || (_cache[2] = $event => handleSelectElement($event, false)),\n onTouchstart: _cache[3] || (_cache[3] = $event => handleSelectElement($event, false))\n }, [\n _createVNode(VideoPlayer, {\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n src: __props.elementInfo.src,\n poster: __props.elementInfo.poster,\n scale: _unref(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 => handleSelectElement($event)),\n onTouchstart: _cache[1] || (_cache[1] = $event => handleSelectElement($event))\n }, null, 34)\n }), 64))\n ], 32)), [\n [_directive_contextmenu, __props.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=9d5469c6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-9d5469c6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, unref as _unref, 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-121f3d11\"),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 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_8 = [\n _hoisted_7\n]\nconst _hoisted_9 = { class: \"time\" }\nconst _hoisted_10 = { class: \"ptime\" }\nconst _hoisted_11 = /*#__PURE__*/_createTextVNode(\" / \")\nconst _hoisted_12 = { class: \"dtime\" }\nconst _hoisted_13 = { class: \"bar\" }\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_15 = [\n _hoisted_14\n]\n\nimport { computed, ref } from 'vue'\nimport { message } from 'ant-design-vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AudioPlayer',\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, { expose }) {\n\nconst props = __props\n\n\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\nconst audioRef = ref()\nconst playBarWrap = ref()\nconst volumeBarRef = ref()\n\nconst volume = ref(0.5)\nconst paused = ref(true)\nconst currentTime = ref(0)\nconst duration = ref(0)\nconst loaded = ref(0)\n\nconst playBarTimeVisible = ref(false)\nconst playBarTime = ref('00:00')\nconst playBarTimeLeft = ref('0')\n\nconst ptime = computed(() => secondToTime(currentTime.value))\nconst dtime = computed(() => secondToTime(duration.value))\nconst playedBarWidth = computed(() => currentTime.value / duration.value * 100 + '%')\nconst loadedBarWidth = computed(() => loaded.value / duration.value * 100 + '%')\nconst volumeBarWidth = computed(() => volume.value * 100 + '%')\n\nconst 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\nconst play = () => {\n if (!audioRef.value) return\n\n paused.value = false\n audioRef.value.play()\n}\n\nconst pause = () => {\n if (!audioRef.value) return\n\n paused.value = true\n audioRef.value.pause()\n}\n\nconst toggle = () => {\n if (paused.value) play() \n else pause()\n}\n\nconst 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\nconst handleDurationchange = () => {\n duration.value = audioRef.value?.duration || 0\n}\n\nconst handleTimeupdate = () => {\n currentTime.value = audioRef.value?.currentTime || 0\n}\n\nconst handlePlayed = () => {\n paused.value = false\n}\n\nconst handleEnded = () => {\n if (!props.loop) pause()\n else {\n seek(0)\n play()\n }\n}\n\nconst handleProgress = () => {\n loaded.value = audioRef.value?.buffered.length ? audioRef.value.buffered.end(audioRef.value.buffered.length - 1) : 0\n}\n\nconst handleError = () => message.error('视频加载失败')\n\nconst 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\nconst 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\nconst handleMousedownPlayBar = () => {\n document.addEventListener('mousemove', thumbMove)\n document.addEventListener('touchmove', thumbMove)\n document.addEventListener('mouseup', thumbUp)\n document.addEventListener('touchend', thumbUp)\n}\n\nconst 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)) / 45\n setVolume(percentage)\n}\n\nconst volumeUp = () => {\n document.removeEventListener('mousemove', volumeMove)\n document.removeEventListener('touchmove', volumeMove)\n document.removeEventListener('mouseup', volumeUp)\n document.removeEventListener('touchend', volumeUp)\n}\n\nconst handleMousedownVolumeBar = () => {\n document.addEventListener('mousemove', volumeMove)\n document.addEventListener('touchmove', volumeMove)\n document.addEventListener('mouseup', volumeUp)\n document.addEventListener('touchend', volumeUp)\n}\n\nconst handleClickVolumeBar = (e: MouseEvent) => {\n if (!volumeBarRef.value) return\n const percentage = (e.clientX - getBoundingClientRectViewLeft(volumeBarRef.value)) / 45\n setVolume(percentage)\n}\n\nconst 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\nconst 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\nexpose({\n toggle,\n})\n\nreturn (_ctx: any,_cache: 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 / __props.scale})` })\n }, [\n _createElementVNode(\"audio\", {\n class: \"audio\",\n ref_key: \"audioRef\",\n ref: audioRef,\n src: __props.src,\n autoplay: __props.autoplay,\n onDurationchange: _cache[0] || (_cache[0] = ($event: any) => (handleDurationchange())),\n onTimeupdate: _cache[1] || (_cache[1] = ($event: any) => (handleTimeupdate())),\n onPlay: _cache[2] || (_cache[2] = ($event: any) => (handlePlayed())),\n onEnded: _cache[3] || (_cache[3] = ($event: any) => (handleEnded())),\n onProgress: _cache[4] || (_cache[4] = ($event: any) => (handleProgress())),\n onError: _cache[5] || (_cache[5] = ($event: any) => (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) => (toggle()))\n }, [\n _createElementVNode(\"span\", _hoisted_4, [\n (paused.value)\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) => (toggleVolume()))\n }, [\n _createElementVNode(\"span\", _hoisted_6, [\n (volume.value === 0)\n ? (_openBlock(), _createBlock(_component_IconVolumeMute, { key: 0 }))\n : (volume.value === 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) => (handleMousedownVolumeBar())),\n onTouchstart: _cache[9] || (_cache[9] = ($event: any) => (handleMousedownVolumeBar())),\n onClick: _cache[10] || (_cache[10] = $event => handleClickVolumeBar($event))\n }, [\n _createElementVNode(\"div\", {\n class: \"volume-bar\",\n ref_key: \"volumeBarRef\",\n ref: volumeBarRef\n }, [\n _createElementVNode(\"div\", {\n class: \"volume-bar-inner\",\n style: _normalizeStyle({ width: _unref(volumeBarWidth) })\n }, _hoisted_8, 4)\n ], 512)\n ], 32)\n ])\n ]),\n _createElementVNode(\"span\", _hoisted_9, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_unref(ptime)), 1),\n _hoisted_11,\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_unref(dtime)), 1)\n ]),\n _createElementVNode(\"div\", {\n class: \"bar-wrap\",\n ref_key: \"playBarWrap\",\n ref: playBarWrap,\n onMousedown: _cache[11] || (_cache[11] = ($event: any) => (handleMousedownPlayBar())),\n onTouchstart: _cache[12] || (_cache[12] = ($event: any) => (handleMousedownPlayBar())),\n onMousemove: _cache[13] || (_cache[13] = $event => handleMousemovePlayBar($event)),\n onMouseenter: _cache[14] || (_cache[14] = ($event: any) => (playBarTimeVisible.value = true)),\n onMouseleave: _cache[15] || (_cache[15] = ($event: any) => (playBarTimeVisible.value = false))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"bar-time\", { 'hidden': !playBarTimeVisible.value }]),\n style: _normalizeStyle({ left: playBarTimeLeft.value })\n }, _toDisplayString(playBarTime.value), 7),\n _createElementVNode(\"div\", _hoisted_13, [\n _createElementVNode(\"div\", {\n class: \"loaded\",\n style: _normalizeStyle({ width: _unref(loadedBarWidth) })\n }, null, 4),\n _createElementVNode(\"div\", {\n class: \"played\",\n style: _normalizeStyle({ width: _unref(playedBarWidth) })\n }, _hoisted_15, 4)\n ])\n ], 544)\n ])\n ], 4))\n}\n}\n\n})","import script from \"./AudioPlayer.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./AudioPlayer.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./AudioPlayer.vue?vue&type=style&index=0&id=121f3d11&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, [['__scopeId',\"data-v-121f3d11\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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\nconst props = __props\n\n\n\nconst { canvasScale, handleElementId } = storeToRefs(useMainStore())\nconst { viewportRatio } = storeToRefs(useSlidesStore())\n\nconst audioIconSize = computed(() => {\n return Math.min(props.elementInfo.width, props.elementInfo.height) + 'px'\n})\nconst 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\nconst handleSelectElement = (e: MouseEvent | TouchEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconVolumeNotice = _resolveComponent(\"IconVolumeNotice\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-audio\", { 'lock': __props.elementInfo.lock }]),\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n height: __props.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n onMousedown: _cache[1] || (_cache[1] = $event => handleSelectElement($event)),\n onTouchstart: _cache[2] || (_cache[2] = $event => handleSelectElement($event))\n }, [\n _createVNode(_component_IconVolumeNotice, {\n class: \"audio-icon\",\n style: _normalizeStyle({\n fontSize: _unref(audioIconSize),\n color: __props.elementInfo.color,\n })\n }, null, 8, [\"style\"]),\n (_unref(handleElementId) === __props.elementInfo.id)\n ? (_openBlock(), _createBlock(AudioPlayer, {\n key: 0,\n class: \"audio-player\",\n style: _normalizeStyle({ ..._unref(audioPlayerPosition) }),\n src: __props.elementInfo.src,\n loop: __props.elementInfo.loop,\n scale: _unref(canvasScale),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, null, 8, [\"style\", \"src\", \"loop\", \"scale\"]))\n : _createCommentVNode(\"\", true)\n ], 32)), [\n [_directive_contextmenu, __props.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=001bfbc4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-001bfbc4\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"id\"]\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'EditableElement',\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\nconst props = __props\n\n\n\nconst 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\nconst { orderElement } = useOrderElement()\nconst { alignElementToCanvas } = useAlignElementToCanvas()\nconst { combineElements, uncombineElements } = useCombineElement()\nconst { deleteElement } = useDeleteElement()\nconst { lockElement, unlockElement } = useLockElement()\nconst { copyElement, pasteElement, cutElement } = useCopyAndPasteElement()\nconst { selectAllElement } = useSelectAllElement()\n\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"editable-element\",\n ref: \"elementRef\",\n id: `editable-element-${__props.elementInfo.id}`,\n style: _normalizeStyle({\n zIndex: __props.elementIndex,\n })\n }, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_unref(currentElementComponent)), {\n elementInfo: __props.elementInfo,\n selectElement: __props.selectElement,\n contextmenus: contextmenus\n }, null, 8, [\"elementInfo\", \"selectElement\"]))\n ], 12, _hoisted_1))\n}\n}\n\n})","import script from \"./EditableElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./EditableElement.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MouseSelection',\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 setup(__props) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(`mouse-selection quadrant-${__props.quadrant}`),\n style: _normalizeStyle({\n top: __props.top + 'px',\n left: __props.left + 'px',\n width: __props.width + 'px',\n height: __props.height + 'px',\n })\n }, null, 6))\n}\n}\n\n})","import script from \"./MouseSelection.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MouseSelection.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MouseSelection.vue?vue&type=style&index=0&id=0d6c0f73&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0d6c0f73\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-10cd6d44\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"grid-lines\" }\nconst _hoisted_2 = [\"d\", \"stroke\"]\n\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'GridLines',\n setup(__props) {\n\nconst { canvasScale } = storeToRefs(useMainStore())\nconst { currentSlide, viewportRatio } = storeToRefs(useSlidesStore())\n\nconst background = computed(() => currentSlide.value?.background)\n\n// 计算网格线的颜色,避免与背景的颜色太接近\nconst 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\nconst gridSize = 50\n\n// 计算网格路径\nconst 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\nconst path = getPath()\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [\n _createElementVNode(\"path\", {\n style: _normalizeStyle({\n transform: `scale(${_unref(canvasScale)})`,\n }),\n d: _unref(path),\n fill: \"none\",\n stroke: _unref(gridColor),\n \"stroke-width\": \"0.3\",\n \"stroke-dasharray\": \"5\"\n }, null, 12, _hoisted_2)\n ]))\n}\n}\n\n})","import script from \"./GridLines.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./GridLines.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./GridLines.vue?vue&type=style&index=0&id=10cd6d44&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-10cd6d44\"]])\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}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed } 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ViewportBackground',\n setup(__props) {\n\nconst { showGridLines } = storeToRefs(useMainStore())\nconst { currentSlide } = storeToRefs(useSlidesStore())\nconst background = computed(() => currentSlide.value?.background)\n\nconst { backgroundStyle } = useSlideBackgroundStyle(background)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"viewport-background\",\n style: _normalizeStyle(_unref(backgroundStyle))\n }, [\n (_unref(showGridLines))\n ? (_openBlock(), _createBlock(GridLines, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ], 4))\n}\n}\n\n})","import script from \"./ViewportBackground.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ViewportBackground.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ViewportBackground.vue?vue&type=style&index=0&id=6f1e1261&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6f1e1261\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed, PropType } from 'vue'\nimport { AlignmentLineAxis } from '@/types/edit'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AlignmentLine',\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\nconst props = __props\n\n\n\n// 吸附对齐线的位置\nconst left = computed(() => props.axis.x * props.canvasScale + 'px')\nconst top = computed(() => props.axis.y * props.canvasScale + 'px')\n\n// 吸附对齐线的长度\nconst sizeStyle = computed(() => {\n if (props.type === 'vertical') return { height: props.length * props.canvasScale + 'px' }\n return { width: props.length * props.canvasScale + 'px' }\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"alignment-line\",\n style: _normalizeStyle({ left: _unref(left), top: _unref(top) })\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass(['line', __props.type]),\n style: _normalizeStyle(_unref(sizeStyle))\n }, null, 6)\n ], 4))\n}\n}\n\n})","import script from \"./AlignmentLine.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./AlignmentLine.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./AlignmentLine.vue?vue&type=style&index=0&id=37fa6068&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-37fa6068\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-60e06332\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"ruler\" }\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Ruler',\n props: {\n viewportStyles: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst { canvasScale } = storeToRefs(useMainStore())\n\nconst markerSize = computed(() => {\n return props.viewportStyles.width * canvasScale.value / 10\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"h\",\n style: _normalizeStyle({\n width: __props.viewportStyles.width * _unref(canvasScale) + 'px',\n left: __props.viewportStyles.left + 'px',\n })\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(10, (marker) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"ruler-marker-100\", { 'hide': _unref(markerSize) < 36, 'omit': _unref(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: __props.viewportStyles.height * _unref(canvasScale) + 'px',\n top: __props.viewportStyles.top + 'px',\n })\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(10, (marker) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"ruler-marker-100\", { 'hide': _unref(markerSize) < 36, 'omit': _unref(markerSize) < 72 }]),\n key: marker,\n style: _normalizeStyle({ height: _unref(markerSize) + 'px' })\n }, [\n _createElementVNode(\"span\", null, _toDisplayString(marker * 100), 1)\n ], 6)\n }), 64))\n ], 4)\n ]))\n}\n}\n\n})","import script from \"./Ruler.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Ruler.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Ruler.vue?vue&type=style&index=0&id=60e06332&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-60e06332\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-5a941f07\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\"]\n\nimport { computed, onMounted, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useKeyboardStore } from '@/store'\nimport { CreateElementSelectionData } from '@/types/edit'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementCreateSelection',\n emits: [\"created\"],\n setup(__props, { emit }: { emit: ({\n (event: 'created', payload: CreateElementSelectionData): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst mainStore = useMainStore()\nconst { creatingElement } = storeToRefs(mainStore)\nconst { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n\nconst start = ref<[number, number]>()\nconst end = ref<[number, number]>()\n\nconst selectionRef = ref()\nconst offset = ref({\n x: 0,\n y: 0,\n})\nonMounted(() => {\n if (!selectionRef.value) return\n const { x, y } = selectionRef.value.getBoundingClientRect()\n offset.value = { x, y }\n})\n\n// 鼠标拖动创建元素生成位置大小\n// 获取范围的起始位置和终点位置\nconst 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// 绘制线条的路径相关数据(仅当绘制元素类型为线条时使用)\nconst 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// 根据生成范围的起始位置和终点位置,计算元素创建时的位置和大小\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"element-create-selection\",\n ref_key: \"selectionRef\",\n ref: selectionRef,\n onMousedown: _cache[0] || (_cache[0] = _withModifiers($event => createSelection($event), [\"stop\"])),\n onContextmenu: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"stop\",\"prevent\"]))\n }, [\n (start.value && end.value)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass(['selection', _unref(creatingElement)?.type]),\n style: _normalizeStyle(_unref(position))\n }, [\n (_unref(creatingElement)?.type === 'line' && _unref(lineData))\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n overflow: \"visible\",\n width: _unref(lineData).svgWidth,\n height: _unref(lineData).svgHeight\n }, [\n _createElementVNode(\"path\", {\n d: _unref(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}\n}\n\n})","import script from \"./ElementCreateSelection.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementCreateSelection.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementCreateSelection.vue?vue&type=style&index=0&id=5a941f07&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5a941f07\"]])\n\nexport default __exports__","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 { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed, PropType } from 'vue'\nimport { OperateResizeHandlers } from '@/types/edit'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ResizeHandler',\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\nconst props = __props\n\n\n\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['resize-handler', _unref(rotateClassName), __props.type])\n }, null, 2))\n}\n}\n\n})","import script from \"./ResizeHandler.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ResizeHandler.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ResizeHandler.vue?vue&type=style&index=0&id=881ee3f8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-881ee3f8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { PropType } from 'vue'\nimport { OperateBorderLines } from '@/types/edit'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BorderLine',\n props: {\n type: {\n type: String as PropType,\n required: true,\n },\n isWide: {\n type: Boolean,\n default: false,\n },\n},\n setup(__props) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['border-line', __props.type, { 'wide': __props.isWide }])\n }, null, 2))\n}\n}\n\n})","import script from \"./BorderLine.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BorderLine.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BorderLine.vue?vue&type=style&index=0&id=7170d1be&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7170d1be\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MultiSelectOperate',\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\nconst props = __props\n\n\n\nconst { activeElementIdList, canvasScale } = storeToRefs(useMainStore())\n\nconst localActiveElementList = computed(() => props.elementList.filter(el => activeElementIdList.value.includes(el.id)))\n\nconst range = ref({\n minX: 0,\n maxX: 0,\n minY: 0,\n maxY: 0,\n})\n\n// 根据多选元素整体在画布中的范围,计算边框线和缩放点的位置信息\nconst width = computed(() => (range.value.maxX - range.value.minX) * canvasScale.value)\nconst height = computed(() => (range.value.maxY - range.value.minY) * canvasScale.value)\nconst { resizeHandlers, borderLines } = useCommonOperate(width, height)\n\n// 计算多选元素整体在画布中的范围\nconst setRange = () => {\n const { minX, maxX, minY, maxY } = getElementListRange(localActiveElementList.value)\n range.value = { minX, maxX, minY, maxY }\n}\nwatchEffect(setRange)\n\n// 禁用多选状态下缩放:仅未旋转的图片和形状可以在多选状态下缩放\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"multi-select-operate\",\n style: _normalizeStyle({\n left: range.value.minX * _unref(canvasScale) + 'px',\n top: range.value.minY * _unref(canvasScale) + 'px',\n })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(BorderLine, {\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (!_unref(disableResize))\n ? (_openBlock(true), _createElementBlock(_Fragment, { key: 0 }, _renderList(_unref(resizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n key: point.direction,\n type: point.direction,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers(($event: any) => (__props.scaleMultiElement($event, range.value, point.direction)), [\"stop\"])\n }, null, 8, [\"type\", \"style\", \"onMousedown\"]))\n }), 128))\n : _createCommentVNode(\"\", true)\n ], 4))\n}\n}\n\n})","import script from \"./MultiSelectOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MultiSelectOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MultiSelectOperate.vue?vue&type=style&index=0&id=defbd922&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-defbd922\"]])\n\nexport default __exports__","\n\n\n\n","import { render } from \"./RotateHandler.vue?vue&type=template&id=b99d8dae&scoped=true\"\nconst script = {}\n\nimport \"./RotateHandler.vue?vue&type=style&index=0&id=b99d8dae&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b99d8dae\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createVNode as _createVNode, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nimport { computed, 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\n\r\nconst __default__ = {\r\n inheritAttrs: false,\r\n}\r\n\nexport default /*#__PURE__*/_defineComponent({\n ...__default__,\n __name: 'ImageElementOperate',\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},\n setup(__props) {\n\nconst props = __props\n\r\n\r\n\r\nconst { canvasScale, clipingImageElementId } = storeToRefs(useMainStore())\r\n\r\nconst isCliping = computed(() => clipingImageElementId.value === props.elementInfo.id)\r\n\r\nconst scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\r\nconst scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\r\nconst { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"image-element-operate\", { 'cliping': _unref(isCliping) }])\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(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 (__props.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(resizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: __props.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => __props.scaleElement($event, __props.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n _createVNode(RotateHandler, {\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: _unref(scaleWidth) / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (__props.rotateElement(__props.elementInfo)), [\"stop\"]))\n }, null, 8, [\"style\"])\n ], 64))\n : _createCommentVNode(\"\", true)\n ], 2))\n}\n}\n\n})","import script from \"./ImageElementOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ImageElementOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ImageElementOperate.vue?vue&type=style&index=0&id=46b250c2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-46b250c2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, 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\nimport { computed, 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\n\r\nconst __default__ = {\r\n inheritAttrs: false,\r\n}\r\n\nexport default /*#__PURE__*/_defineComponent({\n ...__default__,\n __name: 'TextElementOperate',\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},\n setup(__props) {\n\nconst props = __props\n\r\n\r\n\r\nconst { canvasScale } = storeToRefs(useMainStore())\r\n\r\nconst scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\r\nconst scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\r\n\r\nconst { textElementResizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(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 (__props.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(textElementResizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: __props.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => __props.scaleElement($event, __props.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n _createVNode(RotateHandler, {\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: _unref(scaleWidth) / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (__props.rotateElement(__props.elementInfo)), [\"stop\"]))\n }, null, 8, [\"style\"])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./TextElementOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./TextElementOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, 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\nimport { computed, 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\n\nconst __default__ = {\n inheritAttrs: false,\n}\n\nexport default /*#__PURE__*/_defineComponent({\n ...__default__,\n __name: 'ShapeElementOperate',\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\nconst props = __props\n\n\n\nconst { canvasScale } = storeToRefs(useMainStore())\n\nconst scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\nconst scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\nconst { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(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 (__props.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(resizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: __props.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => __props.scaleElement($event, __props.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n _createVNode(RotateHandler, {\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: _unref(scaleWidth) / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (__props.rotateElement(__props.elementInfo)), [\"stop\"]))\n }, null, 8, [\"style\"])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./ShapeElementOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ShapeElementOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, 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-4659f395\"),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\nimport { computed, 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\n\nconst __default__ = {\n inheritAttrs: false,\n}\n\nexport default /*#__PURE__*/_defineComponent({\n ...__default__,\n __name: 'LineElementOperate',\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\nconst props = __props\n\n\n\nconst { canvasScale } = storeToRefs(useMainStore())\n\nconst svgWidth = computed(() => Math.max(props.elementInfo.start[0], props.elementInfo.end[0]))\nconst svgHeight = computed(() => Math.max(props.elementInfo.start[1], props.elementInfo.end[1]))\n\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (__props.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(resizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.handler,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => __props.dragLineElement($event, __props.elementInfo, point.handler), [\"stop\"])\n }, null, 8, [\"style\", \"onMousedown\"]))\n }), 128)),\n (_openBlock(), _createElementBlock(\"svg\", {\n width: _unref(svgWidth) || 1,\n height: _unref(svgHeight) || 1,\n stroke: __props.elementInfo.color,\n overflow: \"visible\",\n style: _normalizeStyle({ transform: `scale(${_unref(canvasScale)})` })\n }, [\n (__props.elementInfo.curve)\n ? (_openBlock(), _createElementBlock(\"g\", _hoisted_3, [\n _createElementVNode(\"line\", {\n class: \"anchor-line\",\n x1: __props.elementInfo.start[0],\n y1: __props.elementInfo.start[1],\n x2: __props.elementInfo.curve[0],\n y2: __props.elementInfo.curve[1]\n }, null, 8, _hoisted_4),\n _createElementVNode(\"line\", {\n class: \"anchor-line\",\n x1: __props.elementInfo.end[0],\n y1: __props.elementInfo.end[1],\n x2: __props.elementInfo.curve[0],\n y2: __props.elementInfo.curve[1]\n }, null, 8, _hoisted_5)\n ]))\n : _createCommentVNode(\"\", true),\n (__props.elementInfo.cubic)\n ? (_openBlock(true), _createElementBlock(_Fragment, { key: 1 }, _renderList(__props.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: __props.elementInfo.start[0],\n y1: __props.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: __props.elementInfo.end[0],\n y1: __props.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}\n}\n\n})","import script from \"./LineElementOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LineElementOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./LineElementOperate.vue?vue&type=style&index=0&id=4659f395&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4659f395\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, 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\nimport { computed, 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\n\nconst __default__ = {\n inheritAttrs: false,\n}\n\nexport default /*#__PURE__*/_defineComponent({\n ...__default__,\n __name: 'TableElementOperate',\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\nconst props = __props\n\n\n\nconst { canvasScale } = storeToRefs(useMainStore())\n\nconst outlineWidth = computed(() => props.elementInfo.outline.width || 1)\n\nconst scaleWidth = computed(() => (props.elementInfo.width + outlineWidth.value) * canvasScale.value)\nconst scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\n\nconst { textElementResizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(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 (__props.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(textElementResizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: __props.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => __props.scaleElement($event, __props.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n _createVNode(RotateHandler, {\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: _unref(scaleWidth) / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (__props.rotateElement(__props.elementInfo)), [\"stop\"]))\n }, null, 8, [\"style\"])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./TableElementOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./TableElementOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"common-element-operate\" }\n\nimport { computed, 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\n\nconst __default__ = {\n inheritAttrs: false,\n}\n\nexport default /*#__PURE__*/_defineComponent({\n ...__default__,\n __name: 'CommonElementOperate',\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\nconst props = __props\n\n\n\nconst { canvasScale } = storeToRefs(useMainStore())\n\nconst scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\nconst scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\nconst { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\n\nconst cannotRotate = computed(() => ['video', 'audio'].includes(props.elementInfo.type))\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(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 (__props.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(resizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: __props.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => __props.scaleElement($event, __props.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n (!_unref(cannotRotate))\n ? (_openBlock(), _createBlock(RotateHandler, {\n key: 0,\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: _unref(scaleWidth) / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (__props.rotateElement(__props.elementInfo)), [\"stop\"]))\n }, null, 8, [\"style\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./CommonElementOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./CommonElementOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","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}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-bb722fc0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"href\"]\nconst _hoisted_2 = {\n key: 1,\n class: \"link\"\n}\nconst _hoisted_3 = { class: \"btns\" }\n\nimport { computed, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { PPTElement, PPTElementLink } from '@/types/slides'\nimport useLink from '@/hooks/useLink'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LinkHandler',\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\nconst props = __props\n\n\n\nconst { canvasScale } = storeToRefs(useMainStore())\nconst { removeLink } = useLink()\nconst height = computed(() => props.elementInfo.type === 'line' ? 0 : props.elementInfo.height)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Divider = _resolveComponent(\"Divider\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"link-handler\",\n style: _normalizeStyle({ top: _unref(height) * _unref(canvasScale) + 10 + 'px' })\n }, [\n (__props.link.type === 'web')\n ? (_openBlock(), _createElementBlock(\"a\", {\n key: 0,\n class: \"link\",\n href: __props.link.target,\n target: \"_blank\"\n }, _toDisplayString(__props.link.target), 9, _hoisted_1))\n : (_openBlock(), _createElementBlock(\"a\", _hoisted_2, \"幻灯片页面 \" + _toDisplayString(__props.link.target), 1)),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (__props.openLinkDialog()))\n }, \"更换\"),\n _createVNode(_component_Divider, { type: \"vertical\" }),\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_unref(removeLink)(__props.elementInfo)))\n }, \"移除\")\n ])\n ], 4))\n}\n}\n\n})","import script from \"./LinkHandler.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LinkHandler.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./LinkHandler.vue?vue&type=style&index=0&id=bb722fc0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-bb722fc0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, 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-c3f7ca96\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 1,\n class: \"animation-index\"\n}\n\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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},\n setup(__props) {\n\nconst props = __props\n\r\n\r\n\r\nconst { canvasScale, toolbarState } = storeToRefs(useMainStore())\r\nconst { formatedAnimations } = storeToRefs(useSlidesStore())\r\n\r\nconst 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\nconst 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\nconst rotate = computed(() => 'rotate' in props.elementInfo ? props.elementInfo.rotate : 0)\r\nconst height = computed(() => 'height' in props.elementInfo ? props.elementInfo.height : 0)\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"operate\", { 'multi-select': __props.isMultiSelect && !__props.isActive }]),\n style: _normalizeStyle({\r\n top: __props.elementInfo.top * _unref(canvasScale) + 'px',\r\n left: __props.elementInfo.left * _unref(canvasScale) + 'px',\r\n transform: `rotate(${_unref(rotate)}deg)`,\r\n transformOrigin: `${__props.elementInfo.width * _unref(canvasScale) / 2}px ${_unref(height) * _unref(canvasScale) / 2}px`,\r\n })\n }, [\n (__props.isSelected)\n ? (_openBlock(), _createBlock(_resolveDynamicComponent(_unref(currentOperateComponent)), {\n key: 0,\n elementInfo: __props.elementInfo,\n handlerVisible: !__props.elementInfo.lock && (__props.isActiveGroupElement || !__props.isMultiSelect),\n rotateElement: __props.rotateElement,\n scaleElement: __props.scaleElement,\n dragLineElement: __props.dragLineElement\n }, null, 8, [\"elementInfo\", \"handlerVisible\", \"rotateElement\", \"scaleElement\", \"dragLineElement\"]))\n : _createCommentVNode(\"\", true),\n (_unref(toolbarState) === 'elAnimation' && _unref(elementIndexListInAnimation).length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(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 (__props.isActive && __props.elementInfo.link)\n ? (_openBlock(), _createBlock(LinkHandler, {\n key: 2,\n elementInfo: __props.elementInfo,\n link: __props.elementInfo.link,\n openLinkDialog: __props.openLinkDialog,\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, null, 8, [\"elementInfo\", \"link\", \"openLinkDialog\"]))\n : _createCommentVNode(\"\", true)\n ], 6))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=c3f7ca96&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-c3f7ca96\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-66f2009f\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"src\"]\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseImageElement',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst flipH = computed(() => props.elementInfo.flipH)\nconst flipV = computed(() => props.elementInfo.flipV)\nconst { flipStyle } = useElementFlip(flipH, flipV)\n\nconst clip = computed(() => props.elementInfo.clip)\nconst { clipShape, imgPosition } = useClipImage(clip)\n\nconst filters = computed(() => props.elementInfo.filters)\nconst { filter } = useFilter(filters)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-image\",\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n height: __props.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n filter: _unref(shadowStyle) ? `drop-shadow(${_unref(shadowStyle)})` : '',\n transform: _unref(flipStyle),\n })\n }, [\n _createVNode(ImageOutline, { elementInfo: __props.elementInfo }, null, 8, [\"elementInfo\"]),\n _createElementVNode(\"div\", {\n class: \"image-content\",\n style: _normalizeStyle({ clipPath: _unref(clipShape).style })\n }, [\n _createElementVNode(\"img\", {\n src: __props.elementInfo.src,\n draggable: false,\n style: _normalizeStyle({\n top: _unref(imgPosition).top,\n left: _unref(imgPosition).left,\n width: _unref(imgPosition).width,\n height: _unref(imgPosition).height,\n filter: _unref(filter),\n }),\n alt: \"\"\n }, null, 12, _hoisted_1)\n ], 4)\n ], 4)\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./BaseImageElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseImageElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseImageElement.vue?vue&type=style&index=0&id=66f2009f&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-66f2009f\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-659e869d\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"innerHTML\"]\n\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseTextElement',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst cssVar = computed(() => ({\n '--textIndent': `${props.elementInfo.textIndent || 0}px`,\n '--paragraphSpace': `${props.elementInfo.paragraphSpace === undefined ? 5 : props.elementInfo.paragraphSpace}px`,\n} as StyleValue))\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-text\",\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n backgroundColor: __props.elementInfo.fill,\n opacity: __props.elementInfo.opacity,\n textShadow: _unref(shadowStyle),\n lineHeight: __props.elementInfo.lineHeight,\n letterSpacing: (__props.elementInfo.wordSpace || 0) + 'px',\n color: __props.elementInfo.defaultColor,\n fontFamily: __props.elementInfo.defaultFontName,\n })\n }, [\n _createVNode(ElementOutline, {\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n outline: __props.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]),\n _createElementVNode(\"div\", {\n class: \"text ProseMirror-static\",\n style: _normalizeStyle(_unref(cssVar)),\n innerHTML: __props.elementInfo.content\n }, null, 12, _hoisted_1)\n ], 4)\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./BaseTextElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseTextElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseTextElement.vue?vue&type=style&index=0&id=659e869d&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-659e869d\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-073084bf\"),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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseShapeElement',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst outline = computed(() => props.elementInfo.outline)\nconst { outlineWidth, outlineStyle, outlineColor } = useElementOutline(outline)\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst flipH = computed(() => props.elementInfo.flipH)\nconst flipV = computed(() => props.elementInfo.flipV)\nconst { flipStyle } = useElementFlip(flipH, flipV)\n\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-shape\",\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n height: __props.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n opacity: __props.elementInfo.opacity,\n filter: _unref(shadowStyle) ? `drop-shadow(${_unref(shadowStyle)})` : '',\n transform: _unref(flipStyle),\n color: _unref(text).defaultColor,\n fontFamily: _unref(text).defaultFontName,\n })\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: __props.elementInfo.width,\n height: __props.elementInfo.height\n }, [\n (__props.elementInfo.gradient)\n ? (_openBlock(), _createElementBlock(\"defs\", _hoisted_2, [\n _createVNode(GradientDefs, {\n id: `base-gradient-${__props.elementInfo.id}`,\n type: __props.elementInfo.gradient.type,\n color1: __props.elementInfo.gradient.color[0],\n color2: __props.elementInfo.gradient.color[1],\n rotate: __props.elementInfo.gradient.rotate\n }, null, 8, [\"id\", \"type\", \"color1\", \"color2\", \"rotate\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"g\", {\n transform: `scale(${__props.elementInfo.width / __props.elementInfo.viewBox[0]}, ${__props.elementInfo.height / __props.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: __props.elementInfo.path,\n fill: __props.elementInfo.gradient ? `url(#base-gradient-${__props.elementInfo.id})` : __props.elementInfo.fill,\n stroke: _unref(outlineColor),\n \"stroke-width\": _unref(outlineWidth),\n \"stroke-dasharray\": _unref(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\", _unref(text).align])\n }, [\n _createElementVNode(\"div\", {\n class: \"ProseMirror-static\",\n innerHTML: _unref(text).content\n }, null, 8, _hoisted_5)\n ], 2)\n ], 4)\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./BaseShapeElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseShapeElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseShapeElement.vue?vue&type=style&index=0&id=073084bf&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-073084bf\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-340cdee8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\", \"stroke\", \"stroke-width\", \"stroke-dasharray\", \"marker-start\", \"marker-end\"]\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseLineElement',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst svgWidth = computed(() => {\n const width = Math.abs(props.elementInfo.start[0] - props.elementInfo.end[0])\n return width < 24 ? 24 : width\n})\nconst svgHeight = computed(() => {\n const height = Math.abs(props.elementInfo.start[1] - props.elementInfo.end[1])\n return height < 24 ? 24 : height\n})\n\nconst lineDashArray = computed(() => props.elementInfo.style === 'dashed' ? '10, 5' : '0, 0')\n\nconst path = computed(() => {\n return getLineElementPath(props.elementInfo)\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-line\",\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({ filter: _unref(shadowStyle) ? `drop-shadow(${_unref(shadowStyle)})` : '' })\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: _unref(svgWidth),\n height: _unref(svgHeight)\n }, [\n _createElementVNode(\"defs\", null, [\n (__props.elementInfo.points[0])\n ? (_openBlock(), _createBlock(LinePointMarker, {\n key: 0,\n id: __props.elementInfo.id,\n position: \"start\",\n type: __props.elementInfo.points[0],\n color: __props.elementInfo.color,\n baseSize: __props.elementInfo.width\n }, null, 8, [\"id\", \"type\", \"color\", \"baseSize\"]))\n : _createCommentVNode(\"\", true),\n (__props.elementInfo.points[1])\n ? (_openBlock(), _createBlock(LinePointMarker, {\n key: 1,\n id: __props.elementInfo.id,\n position: \"end\",\n type: __props.elementInfo.points[1],\n color: __props.elementInfo.color,\n baseSize: __props.elementInfo.width\n }, null, 8, [\"id\", \"type\", \"color\", \"baseSize\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"path\", {\n d: _unref(path),\n stroke: __props.elementInfo.color,\n \"stroke-width\": __props.elementInfo.width,\n \"stroke-dasharray\": _unref(lineDashArray),\n fill: \"none\",\n \"marker-start\": __props.elementInfo.points[0] ? `url(#${__props.elementInfo.id}-${__props.elementInfo.points[0]}-start)` : '',\n \"marker-end\": __props.elementInfo.points[1] ? `url(#${__props.elementInfo.id}-${__props.elementInfo.points[1]}-end)` : ''\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./BaseLineElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseLineElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseLineElement.vue?vue&type=style&index=0&id=340cdee8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-340cdee8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, unref as _unref, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseChartElement',\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n},\n setup(__props) {\n\r\n\r\n\r\nconst slideScale = inject(injectKeySlideScale) || ref(1)\r\n\r\nconst needScaleSize = computed(() => slideScale.value < 1)\r\nconst zoom = computed(() => needScaleSize.value ? 1 / slideScale.value : 1)\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-chart\",\n style: _normalizeStyle({\r\n top: __props.elementInfo.top + 'px',\r\n left: __props.elementInfo.left + 'px',\r\n width: __props.elementInfo.width + 'px',\r\n height: __props.elementInfo.height + 'px',\r\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\r\n backgroundColor: __props.elementInfo.fill,\r\n })\n }, [\n _createVNode(ElementOutline, {\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n outline: __props.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]),\n _createVNode(Chart, {\n width: __props.elementInfo.width * _unref(zoom),\n height: __props.elementInfo.height * _unref(zoom),\n type: __props.elementInfo.chartType,\n data: __props.elementInfo.data,\n options: __props.elementInfo.options,\n themeColor: __props.elementInfo.themeColor,\n gridColor: __props.elementInfo.gridColor,\n legends: __props.elementInfo.data.legends,\n legend: __props.elementInfo.legend || '',\n style: _normalizeStyle({ zoom: 1 / _unref(zoom) })\n }, null, 8, [\"width\", \"height\", \"type\", \"data\", \"options\", \"themeColor\", \"gridColor\", \"legends\", \"legend\", \"style\"])\n ], 4)\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./BaseChartElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseChartElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseChartElement.vue?vue&type=style&index=0&id=7d2e5c4e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7d2e5c4e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-00712fa4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\"]\nconst _hoisted_2 = [\"rowspan\", \"colspan\"]\nconst _hoisted_3 = [\"innerHTML\"]\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'StaticTable',\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\nconst props = __props\n\n\n\nconst colSizeList = ref([])\nconst totalWidth = computed(() => colSizeList.value.reduce((a, b) => a + b))\n\nwatch([\n () => props.colWidths,\n () => props.width,\n], () => {\n colSizeList.value = props.colWidths.map(item => item * props.width)\n}, { immediate: true })\n\nconst cells = computed(() => props.data)\nconst { hideCells } = useHideCells(cells)\n\nconst theme = computed(() => props.theme)\nconst { subThemeColor } = useSubThemeColor(theme)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"static-table\",\n style: _normalizeStyle({ width: _unref(totalWidth) + 'px' })\n }, [\n _createElementVNode(\"table\", {\n class: _normalizeClass({\n 'theme': _unref(theme),\n 'row-header': _unref(theme)?.rowHeader,\n 'row-footer': _unref(theme)?.rowFooter,\n 'col-header': _unref(theme)?.colHeader,\n 'col-footer': _unref(theme)?.colFooter,\n }),\n style: _normalizeStyle(`--themeColor: ${_unref(theme)?.color}; --subThemeColor1: ${_unref(subThemeColor)[0]}; --subThemeColor2: ${_unref(subThemeColor)[1]}`)\n }, [\n _createElementVNode(\"colgroup\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(colSizeList.value, (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(__props.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: __props.outline.style,\n borderColor: __props.outline.color,\n borderWidth: __props.outline.width + 'px',\n ..._unref(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: _unref(formatText)(cell.text)\n }, null, 8, _hoisted_3)\n ], 12, _hoisted_2)), [\n [_vShow, !_unref(hideCells).includes(`${rowIndex}_${colIndex}`)]\n ])\n }), 128))\n ]))\n }), 128))\n ])\n ], 6)\n ], 4))\n}\n}\n\n})","import script from \"./StaticTable.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./StaticTable.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./StaticTable.vue?vue&type=style&index=0&id=00712fa4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-00712fa4\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-53e0f1ba\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nimport { PropType } from 'vue'\nimport { PPTTableElement } from '@/types/slides'\n\nimport StaticTable from './StaticTable.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseTableElement',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-table\",\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(StaticTable, {\n data: __props.elementInfo.data,\n width: __props.elementInfo.width,\n colWidths: __props.elementInfo.colWidths,\n outline: __props.elementInfo.outline,\n theme: __props.elementInfo.theme\n }, null, 8, [\"data\", \"width\", \"colWidths\", \"outline\", \"theme\"])\n ])\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./BaseTableElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseTableElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseTableElement.vue?vue&type=style&index=0&id=53e0f1ba&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-53e0f1ba\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-9a47b5f4\"),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\nimport { PropType } from 'vue'\nimport { PPTLatexElement } from '@/types/slides'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseLatexElement',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-latex\",\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n height: __props.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n stroke: __props.elementInfo.color,\n \"stroke-width\": __props.elementInfo.strokeWidth,\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n }, [\n _createElementVNode(\"g\", {\n transform: `scale(${__props.elementInfo.width / __props.elementInfo.viewBox[0]}, ${__props.elementInfo.height / __props.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n d: __props.elementInfo.path\n }, null, 8, _hoisted_4)\n ], 8, _hoisted_3)\n ], 8, _hoisted_2))\n ])\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./BaseLatexElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseLatexElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseLatexElement.vue?vue&type=style&index=0&id=9a47b5f4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-9a47b5f4\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { PropType } from 'vue'\nimport { PPTVideoElement } from '@/types/slides'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseVideoElement',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconPlayOne = _resolveComponent(\"IconPlayOne\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-video\",\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n height: __props.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({ backgroundImage: `url(${__props.elementInfo.poster})` })\n }, [\n _createVNode(_component_IconPlayOne, { class: \"icon\" })\n ], 4)\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./BaseVideoElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseVideoElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseVideoElement.vue?vue&type=style&index=0&id=56b7f716&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-56b7f716\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-5258e03b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nimport { computed, PropType } from 'vue'\nimport { PPTAudioElement } from '@/types/slides'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseAudioElement',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst audioIconSize = computed(() => {\n return Math.min(props.elementInfo.width, props.elementInfo.height) + 'px'\n})\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconVolumeNotice = _resolveComponent(\"IconVolumeNotice\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-audio\",\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n height: __props.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_IconVolumeNotice, {\n class: \"audio-icon\",\n style: _normalizeStyle({\n fontSize: _unref(audioIconSize),\n color: __props.elementInfo.color,\n })\n }, null, 8, [\"style\"])\n ])\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./BaseAudioElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseAudioElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseAudioElement.vue?vue&type=style&index=0&id=5258e03b&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5258e03b\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ThumbnailElement',\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\nconst props = __props\n\n\n\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"base-element\", `base-element-${__props.elementInfo.id}`]),\n style: _normalizeStyle({\n zIndex: __props.elementIndex,\n })\n }, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_unref(currentElementComponent)), {\n elementInfo: __props.elementInfo,\n target: \"thumbnail\"\n }, null, 8, [\"elementInfo\"]))\n ], 6))\n}\n}\n\n})","import script from \"./ThumbnailElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ThumbnailElement.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-f69fb5b2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 1,\n class: \"placeholder\"\n}\n\nimport { computed, PropType, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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\nconst props = __props\n\n\n\nconst { viewportRatio } = storeToRefs(useSlidesStore())\n\nconst background = computed(() => props.slide.background)\nconst { backgroundStyle } = useSlideBackgroundStyle(background)\n\nconst scale = computed(() => props.size / VIEWPORT_SIZE)\nprovide(injectKeySlideScale, scale)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"thumbnail-slide\",\n style: _normalizeStyle({\n width: __props.size + 'px',\n height: __props.size * _unref(viewportRatio) + 'px',\n })\n }, [\n (__props.visible)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"elements\",\n style: _normalizeStyle({\n width: _unref(VIEWPORT_SIZE) + 'px',\n height: _unref(VIEWPORT_SIZE) * _unref(viewportRatio) + 'px',\n transform: `scale(${_unref(scale)})`,\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"background\",\n style: _normalizeStyle(_unref(backgroundStyle))\n }, null, 4),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(__props.slide.elements, (element, index) => {\n return (_openBlock(), _createBlock(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}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=f69fb5b2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f69fb5b2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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, unref as _unref, createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-dfb654e8\"),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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LinkDialog',\n emits: [\"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst { handleElement } = storeToRefs(useMainStore())\nconst { slides } = storeToRefs(useSlidesStore())\n\nconst type = ref('web')\nconst address = ref('')\nconst slideId = ref('')\n\nslideId.value = slides.value[0].id\n\nconst selectedSlide = computed(() => {\n if (!slideId.value) return null\n\n return slides.value.find(item => item.id === slideId.value) || null\n})\n\nconst tabs: TabItem[] = [\n { key: 'web', label: '网页链接' },\n { key: 'slide', label: '幻灯片页面' },\n]\n\nconst { setLink } = useLink()\n\nonMounted(() => {\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\nconst 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) emit('close')\n else address.value = ''\n }\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Input = _resolveComponent(\"Input\")!\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_Button = _resolveComponent(\"Button\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(tabs, (tab) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': type.value === tab.key }]),\n key: tab.key,\n onClick: ($event: any) => (type.value = tab.key)\n }, _toDisplayString(tab.label), 11, _hoisted_3)\n }), 64))\n ]),\n (type.value === 'web')\n ? (_openBlock(), _createBlock(_component_Input, {\n key: 0,\n class: \"input\",\n value: address.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((address).value = $event)),\n placeholder: \"请输入网页链接地址\"\n }, null, 8, [\"value\"]))\n : _createCommentVNode(\"\", true),\n (type.value === 'slide')\n ? (_openBlock(), _createBlock(_component_Select, {\n key: 1,\n class: \"input\",\n value: slideId.value,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((slideId).value = $event))\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(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 (type.value === 'slide' && _unref(selectedSlide))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(ThumbnailSlide, {\n class: \"thumbnail\",\n slide: _unref(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) => (emit('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) => (save()))\n }, {\n default: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","import script from \"./LinkDialog.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LinkDialog.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./LinkDialog.vue?vue&type=style&index=0&id=dfb654e8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-dfb654e8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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, resolveComponent as _resolveComponent, withCtx as _withCtx, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-529c7227\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"operates\" }\nconst _hoisted_2 = {\n key: 1,\n class: \"drag-mask\"\n}\n\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst mainStore = useMainStore()\nconst {\n activeElementIdList,\n activeGroupElementId,\n handleElementId,\n editorAreaFocus,\n showGridLines,\n showRuler,\n creatingElement,\n canvasScale,\n} = storeToRefs(mainStore)\nconst { currentSlide } = storeToRefs(useSlidesStore())\nconst { ctrlKeyState, spaceKeyState } = storeToRefs(useKeyboardStore())\n\nconst viewportRef = ref()\nconst alignmentLines = ref([])\n\nconst linkDialogVisible = ref(false)\nconst openLinkDialog = () => linkDialogVisible.value = true\n\nwatch(handleElementId, () => {\n mainStore.setActiveGroupElementId('')\n})\n\nconst elementList = ref([])\nconst setLocalElementList = () => {\n elementList.value = currentSlide.value ? JSON.parse(JSON.stringify(currentSlide.value.elements)) : []\n}\nwatchEffect(setLocalElementList)\n\nconst canvasRef = ref()\nconst { dragViewport, viewportStyles } = useViewportSize(canvasRef)\n\nuseDropImageOrText(canvasRef)\n\nconst { mouseSelection, mouseSelectionVisible, mouseSelectionQuadrant, updateMouseSelection } = useMouseSelection(elementList, viewportRef)\n\nconst { dragElement } = useDragElement(elementList, alignmentLines, canvasScale)\nconst { dragLineElement } = useDragLineElement(elementList)\nconst { selectElement } = useSelectElement(elementList, dragElement)\nconst { scaleElement, scaleMultiElement } = useScaleElement(elementList, alignmentLines, canvasScale)\nconst { rotateElement } = useRotateElement(elementList, viewportRef)\n\nconst { selectAllElement } = useSelectAllElement()\nconst { deleteAllElements } = useDeleteElement()\nconst { pasteElement } = useCopyAndPasteElement()\nconst { enterScreeningFromStart } = useScreening()\nconst { updateSlideIndex } = useSlideHandler()\n\n// 组件渲染时,如果存在元素焦点,需要清除\n// 这种情况存在于:有焦点元素的情况下进入了放映模式,再退出时,需要清除原先的焦点(因为可能已经切换了页面)\nonMounted(() => {\n if (activeElementIdList.value.length) mainStore.setActiveElementIdList([])\n})\n\n// 点击画布的空白区域:清空焦点元素、设置画布焦点、清除文字选区\nconst 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// 移除画布编辑区域焦点\nconst removeEditorAreaFocus = () => {\n if (editorAreaFocus.value) mainStore.setEditorareaFocus(false)\n}\n\n// 滚动鼠标\nconst { scaleCanvas } = useScaleCanvas()\nconst throttleScaleCanvas = throttle(scaleCanvas, 100, { leading: true, trailing: false })\nconst throttleUpdateSlideIndex = throttle(updateSlideIndex, 300, { leading: true, trailing: false })\n\nconst 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// 开关网格线\nconst toggleGridLines = () => {\n mainStore.setGridLinesState(!showGridLines.value)\n}\n\n// 开关标尺\nconst toggleRuler = () => {\n mainStore.setRulerState(!showRuler.value)\n}\n\n// 在鼠标绘制的范围插入元素\nconst { insertElementFromCreateSelection } = useInsertFromCreateSelection(viewportRef)\n\nconst 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\nprovide(injectKeySlideScale, canvasScale)\n\nreturn (_ctx: any,_cache: any) => {\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_key: \"canvasRef\",\n ref: canvasRef,\n onWheel: _cache[3] || (_cache[3] = $event => handleMousewheelCanvas($event)),\n onMousedown: _cache[4] || (_cache[4] = $event => handleClickBlankArea($event))\n }, [\n (_unref(creatingElement))\n ? (_openBlock(), _createBlock(ElementCreateSelection, {\n key: 0,\n onCreated: _cache[0] || (_cache[0] = data => _unref(insertElementFromCreateSelection)(data))\n }))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", {\n class: \"viewport-wrapper\",\n style: _normalizeStyle({\n width: _unref(viewportStyles).width * _unref(canvasScale) + 'px',\n height: _unref(viewportStyles).height * _unref(canvasScale) + 'px',\n left: _unref(viewportStyles).left + 'px',\n top: _unref(viewportStyles).top + 'px',\n })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(alignmentLines.value, (line, index) => {\n return (_openBlock(), _createBlock(AlignmentLine, {\n key: index,\n type: line.type,\n axis: line.axis,\n length: line.length,\n canvasScale: _unref(canvasScale)\n }, null, 8, [\"type\", \"axis\", \"length\", \"canvasScale\"]))\n }), 128)),\n (_unref(activeElementIdList).length > 1)\n ? (_openBlock(), _createBlock(MultiSelectOperate, {\n key: 0,\n elementList: elementList.value,\n scaleMultiElement: _unref(scaleMultiElement)\n }, null, 8, [\"elementList\", \"scaleMultiElement\"]))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(elementList.value, (element) => {\n return (_openBlock(), _createBlock(Operate, {\n key: element.id,\n elementInfo: element,\n isSelected: _unref(activeElementIdList).includes(element.id),\n isActive: _unref(handleElementId) === element.id,\n isActiveGroupElement: _unref(activeGroupElementId) === element.id,\n isMultiSelect: _unref(activeElementIdList).length > 1,\n rotateElement: _unref(rotateElement),\n scaleElement: _unref(scaleElement),\n openLinkDialog: openLinkDialog,\n dragLineElement: _unref(dragLineElement)\n }, null, 8, [\"elementInfo\", \"isSelected\", \"isActive\", \"isActiveGroupElement\", \"isMultiSelect\", \"rotateElement\", \"scaleElement\", \"dragLineElement\"]))\n }), 128)),\n _createVNode(ViewportBackground)\n ]),\n _createElementVNode(\"div\", {\n class: \"viewport\",\n ref_key: \"viewportRef\",\n ref: viewportRef,\n style: _normalizeStyle({ transform: `scale(${_unref(canvasScale)})` })\n }, [\n (_unref(mouseSelectionVisible))\n ? (_openBlock(), _createBlock(MouseSelection, {\n key: 0,\n top: _unref(mouseSelection).top,\n left: _unref(mouseSelection).left,\n width: _unref(mouseSelection).width,\n height: _unref(mouseSelection).height,\n quadrant: _unref(mouseSelectionQuadrant)\n }, null, 8, [\"top\", \"left\", \"width\", \"height\", \"quadrant\"]))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(elementList.value, (element, index) => {\n return (_openBlock(), _createBlock(EditableElement, {\n key: element.id,\n elementInfo: element,\n elementIndex: index + 1,\n isMultiSelect: _unref(activeElementIdList).length > 1,\n selectElement: _unref(selectElement),\n openLinkDialog: openLinkDialog\n }, null, 8, [\"elementInfo\", \"elementIndex\", \"isMultiSelect\", \"selectElement\"]))\n }), 128))\n ], 4)\n ], 4),\n (_unref(spaceKeyState))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2))\n : _createCommentVNode(\"\", true),\n (_unref(showRuler))\n ? (_openBlock(), _createBlock(Ruler, {\n key: 2,\n viewportStyles: _unref(viewportStyles)\n }, null, 8, [\"viewportStyles\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_Modal, {\n visible: linkDialogVisible.value,\n \"onUpdate:visible\": _cache[2] || (_cache[2] = ($event: any) => ((linkDialogVisible).value = $event)),\n footer: null,\n centered: \"\",\n width: 540,\n destroyOnClose: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(LinkDialog, {\n onClose: _cache[1] || (_cache[1] = ($event: any) => (linkDialogVisible.value = false))\n })\n ]),\n _: 1\n }, 8, [\"visible\"])\n ], 32)), [\n [_directive_contextmenu, contextmenus],\n [_directive_click_outside, removeEditorAreaFocus]\n ])\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=529c7227&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-529c7227\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-5788e0d2\"),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\nimport { SHAPE_LIST, ShapePoolItem } from '@/configs/shapes'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ShapePool',\n emits: [\"select\"],\n setup(__props, { emit }: { emit: ({\n (event: 'select', payload: ShapePoolItem): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst selectShape = (shape: ShapePoolItem) => {\n emit('select', shape)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(SHAPE_LIST), (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) => (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}\n}\n\n})","import script from \"./ShapePool.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ShapePool.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ShapePool.vue?vue&type=style&index=0&id=5788e0d2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5788e0d2\"]])\n\nexport default __exports__","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]","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-bca68faa\"),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\nimport { LINE_LIST, LinePoolItem } from '@/configs/lines'\n\nimport LinePointMarker from '@/views/components/element/LineElement/LinePointMarker.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LinePool',\n emits: [\"select\"],\n setup(__props, { emit }: { emit: ({\n (event: 'select', payload: LinePoolItem): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst selectLine = (line: LinePoolItem) => {\n emit('select', line)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(LINE_LIST), (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) => (selectLine(line))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", _hoisted_5, [\n _createElementVNode(\"defs\", null, [\n (line.points[0])\n ? (_openBlock(), _createBlock(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(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}\n}\n\n})","import script from \"./LinePool.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LinePool.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./LinePool.vue?vue&type=style&index=0&id=bca68faa&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-bca68faa\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-3870b42e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"chart-pool\" }\nconst _hoisted_2 = [\"onClick\"]\n\nimport { PresetChartType } from '@/types/slides'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ChartPool',\n emits: [\"select\"],\n setup(__props, { emit }: { emit: ({\n (event: 'select', payload: PresetChartType): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst chartList: PresetChartType[] = ['bar', 'horizontalBar', 'line', 'area', 'scatter', 'pie', 'ring']\n\nconst selectChart = (chart: PresetChartType) => {\n emit('select', chart)\n}\n\nreturn (_ctx: any,_cache: 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(), _createElementBlock(_Fragment, null, _renderList(chartList, (chart, index) => {\n return _createElementVNode(\"li\", {\n class: \"chart-item\",\n key: index\n }, [\n _createElementVNode(\"div\", {\n class: \"chart-content\",\n onClick: ($event: any) => (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 }), 64))\n ]))\n}\n}\n\n})","import script from \"./ChartPool.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ChartPool.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ChartPool.vue?vue&type=style&index=0&id=3870b42e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3870b42e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-144fbd05\"),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\nimport { ref } from 'vue'\nimport { message } from 'ant-design-vue'\n\ninterface InsertData {\n row: number\n col: number\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'TableGenerator',\n emits: [\"insert\", \"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'insert', payload: InsertData): void\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst endCell = ref([])\nconst customRow = ref(3)\nconst customCol = ref(3)\nconst isCustom = ref(false)\n\nconst handleClickTable = () => {\n if (!endCell.value.length) return\n const [row, col] = endCell.value\n emit('insert', { row, col })\n}\n\nconst 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\nconst close = () => {\n emit('close')\n isCustom.value = false\n}\n\nreturn (_ctx: any,_cache: 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(endCell.value.length ? `${endCell.value[0]} x ${endCell.value[1]}` : ''), 1),\n _createElementVNode(\"div\", {\n class: \"right\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (isCustom.value = !isCustom.value))\n }, _toDisplayString(isCustom.value ? '返回' : '自定义'), 1)\n ]),\n (!isCustom.value)\n ? (_openBlock(), _createElementBlock(\"table\", {\n key: 0,\n onMouseleave: _cache[1] || (_cache[1] = ($event: any) => (endCell.value = [])),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (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) => (endCell.value = [row, col]),\n key: col\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"cell\", { 'active': endCell.value.length && row <= endCell.value[0] && col <= endCell.value[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: customRow.value,\n \"onUpdate:value\": _cache[3] || (_cache[3] = ($event: any) => ((customRow).value = $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: customCol.value,\n \"onUpdate:value\": _cache[4] || (_cache[4] = ($event: any) => ((customCol).value = $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) => (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) => (insertCustomTable()))\n }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n })\n ])\n ]))\n ]))\n}\n}\n\n})","import script from \"./TableGenerator.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./TableGenerator.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./TableGenerator.vue?vue&type=style&index=0&id=144fbd05&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-144fbd05\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-b9437110\"),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\nimport { ref } from 'vue'\nimport { message } from 'ant-design-vue'\n\ntype TypeKey = 'video' | 'audio'\ninterface TabItem {\n key: TypeKey\n label: string\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MediaInput',\n emits: [\"insertVideo\", \"insertAudio\", \"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'insertVideo', payload: string): void\n (event: 'insertAudio', payload: string): void\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst type = ref('video')\n\nconst videoSrc = ref('https://mazwai.com/videvo_files/video/free/2019-01/small_watermarked/181004_04_Dolphins-Whale_06_preview.webm')\nconst audioSrc = ref('https://freesound.org/data/previews/614/614107_11861866-lq.mp3')\n\nconst tabs: TabItem[] = [\n { key: 'video', label: '视频' },\n { key: 'audio', label: '音频' },\n]\n\nconst insertVideo = () => {\n if (!videoSrc.value) return message.error('请先输入正确的视频地址')\n emit('insertVideo', videoSrc.value)\n}\n\nconst insertAudio = () => {\n if (!audioSrc.value) return message.error('请先输入正确的音频地址')\n emit('insertAudio', audioSrc.value)\n}\n\nreturn (_ctx: any,_cache: 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(), _createElementBlock(_Fragment, null, _renderList(tabs, (tab) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': type.value === tab.key }]),\n key: tab.key,\n onClick: ($event: any) => (type.value = tab.key)\n }, _toDisplayString(tab.label), 11, _hoisted_3)\n }), 64))\n ]),\n (type.value === 'video')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createVNode(_component_Input, {\n value: videoSrc.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((videoSrc).value = $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) => (emit('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) => (insertVideo()))\n }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n })\n ])\n ], 64))\n : _createCommentVNode(\"\", true),\n (type.value === 'audio')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createVNode(_component_Input, {\n value: audioSrc.value,\n \"onUpdate:value\": _cache[3] || (_cache[3] = ($event: any) => ((audioSrc).value = $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) => (emit('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) => (insertAudio()))\n }, {\n default: _withCtx(() => [\n _hoisted_9\n ]),\n _: 1\n })\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./MediaInput.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MediaInput.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MediaInput.vue?vue&type=style&index=0&id=b9437110&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b9437110\"]])\n\nexport default __exports__","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 { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1c41d9fe\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"transform\"]\nconst _hoisted_3 = [\"d\"]\n\nimport { computed, ref, watch } from 'vue'\nimport { hfmath } from './hfmath'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'FormulaContent',\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\nconst props = __props\n\n\n\nconst box = ref({ x: 0, y: 0, w: 0, h: 0 })\nconst pathd = ref('')\n\nwatch(() => props.latex, () => {\n const eq = new hfmath(props.latex)\n pathd.value = eq.pathd({})\n box.value = eq.box({})\n}, { immediate: true })\n\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"svg\", {\n class: \"formula-content\",\n overflow: \"visible\",\n width: box.value.w + 32,\n height: box.value.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(${_unref(scale)}, ${_unref(scale)}) translate(0,0) matrix(1,0,0,1,0,0)`,\n \"transform-origin\": \"0 50%\"\n }, [\n _createElementVNode(\"path\", { d: pathd.value }, null, 8, _hoisted_3)\n ], 8, _hoisted_2)\n ], 8, _hoisted_1))\n}\n}\n\n})","import script from \"./FormulaContent.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./FormulaContent.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./FormulaContent.vue?vue&type=style&index=0&id=1c41d9fe&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1c41d9fe\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"innerHTML\"]\n\nimport { computed } from 'vue'\nimport { hfmath } from './hfmath'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'SymbolContent',\n props: {\n latex: {\n type: String,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst svg = computed(() => {\n const eq = new hfmath(props.latex)\n return eq.svg({\n SCALE_X: 10,\n SCALE_Y: 10,\n })\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"symbol-content\",\n innerHTML: _unref(svg)\n }, null, 8, _hoisted_1))\n}\n}\n\n})","import script from \"./SymbolContent.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./SymbolContent.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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, unref as _unref, createTextVNode as _createTextVNode, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2d73bf28\"),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\nimport { computed, 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\nimport { message } from 'ant-design-vue'\n\ninterface Tab {\n label: string\n value: 'symbol' | 'formula'\n}\n\ninterface LatexResult {\n latex: string\n path: string\n w: number\n h: number\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n value: {\n type: String,\n default: '',\n },\n},\n emits: [\"update\", \"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'update', payload: LatexResult): void\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\nconst tabs: Tab[] = [\n { label: '常用符号', value: 'symbol' },\n { label: '预置公式', value: 'formula' },\n]\n\n\n\n\n\nconst formulaList = FORMULA_LIST\nconst symbolList = SYMBOL_LIST\n\nconst latex = ref('')\nconst toolbarState = ref<'symbol' | 'formula'>('symbol')\nconst textAreaRef = ref()\n\nconst selectedSymbolKey = ref(SYMBOL_LIST[0].type)\nconst symbolPool = computed(() => {\n const selectedSymbol = SYMBOL_LIST.find(item => item.type === selectedSymbolKey.value)\n return selectedSymbol?.children || []\n})\n\nonMounted(() => {\n if (props.value) latex.value = props.value\n})\n\nconst update = () => {\n if (!latex.value) return message.error('公式不能为空')\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\nconst insertSymbol = (latex: string) => {\n if (!textAreaRef.value) return\n textAreaRef.value.focus()\n document.execCommand('insertText', false, latex)\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_TextArea = _resolveComponent(\"TextArea\")!\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: latex.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((latex).value = $event)),\n placeholder: \"输入 LaTeX 公式\",\n ref_key: \"textAreaRef\",\n ref: textAreaRef\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n (!latex.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, \"公式预览\"))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createVNode(FormulaContent, {\n width: 518,\n height: 138,\n latex: latex.value\n }, null, 8, [\"latex\"])\n ]))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"div\", _hoisted_9, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(tabs, (tab) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': tab.value === toolbarState.value }]),\n key: tab.value,\n onClick: ($event: any) => (toolbarState.value = tab.value)\n }, _toDisplayString(tab.label), 11, _hoisted_10)\n }), 64))\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n (toolbarState.value === 'symbol')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createElementVNode(\"div\", _hoisted_13, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(symbolList), (group) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"symbol-tab\", { 'active': selectedSymbolKey.value === group.type }]),\n key: group.type,\n onClick: ($event: any) => (selectedSymbolKey.value = group.type)\n }, _toDisplayString(group.label), 11, _hoisted_14))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_15, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(symbolPool), (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"symbol-item\",\n key: item.latex,\n onClick: ($event: any) => (insertSymbol(item.latex))\n }, [\n _createVNode(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(_unref(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) => (latex.value =item.latex)\n }, [\n _createVNode(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) => (emit('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) => (update()))\n }, {\n default: _withCtx(() => [\n _hoisted_22\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=2d73bf28&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2d73bf28\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-5d4eff54\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst mainStore = useMainStore()\nconst { creatingElement } = storeToRefs(mainStore)\nconst { canUndo, canRedo } = storeToRefs(useSnapshotStore())\n\nconst { redo, undo } = useHistorySnapshot()\n\nconst {\n scaleCanvas,\n setCanvasScalePercentage,\n resetCanvas,\n canvasScalePercentage,\n} = useScaleCanvas()\n\nconst canvasScalePresetList = [200, 150, 100, 80, 50]\nconst canvasScaleVisible = ref(false)\n\nconst applyCanvasPresetScale = (value: number) => {\n setCanvasScalePercentage(value)\n canvasScaleVisible.value = false\n}\n\nconst {\n createImageElement,\n createChartElement,\n createTableElement,\n createLatexElement,\n createVideoElement,\n createAudioElement,\n} = useCreateElement()\n\nconst insertImageElement = (files: FileList) => {\n const imageFile = files[0]\n if (!imageFile) return\n getImageDataURL(imageFile).then(dataURL => createImageElement(dataURL))\n}\n\nconst shapePoolVisible = ref(false)\nconst linePoolVisible = ref(false)\nconst chartPoolVisible = ref(false)\nconst tableGeneratorVisible = ref(false)\nconst mediaInputVisible = ref(false)\nconst latexEditorVisible = ref(false)\n\n// 绘制文字范围\nconst drawText = () => {\n mainStore.setCreatingElement({\n type: 'text',\n })\n}\n\n// 绘制形状范围\nconst drawShape = (shape: ShapePoolItem) => {\n mainStore.setCreatingElement({\n type: 'shape',\n data: shape,\n })\n shapePoolVisible.value = false\n}\n\n// 绘制线条路径\nconst drawLine = (line: LinePoolItem) => {\n mainStore.setCreatingElement({\n type: 'line',\n data: line,\n })\n linePoolVisible.value = false\n}\n\nreturn (_ctx: any,_cache: 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_IconGraphicDesign = _resolveComponent(\"IconGraphicDesign\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_IconConnection = _resolveComponent(\"IconConnection\")!\n const _component_IconChartProportion = _resolveComponent(\"IconChartProportion\")!\n const _component_IconInsertTable = _resolveComponent(\"IconInsertTable\")!\n const _component_IconFormula = _resolveComponent(\"IconFormula\")!\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_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': !_unref(canUndo) }]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_unref(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': !_unref(canRedo) }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_unref(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': _unref(creatingElement)?.type === 'text' }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (drawText()))\n }, null, 8, [\"class\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_FileInput, {\n onChange: _cache[3] || (_cache[3] = files => 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: shapePoolVisible.value,\n \"onUpdate:visible\": _cache[5] || (_cache[5] = ($event: any) => ((shapePoolVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(ShapePool, {\n onSelect: _cache[4] || (_cache[4] = shape => 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': _unref(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: linePoolVisible.value,\n \"onUpdate:visible\": _cache[7] || (_cache[7] = ($event: any) => ((linePoolVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(LinePool, {\n onSelect: _cache[6] || (_cache[6] = line => 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': _unref(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: chartPoolVisible.value,\n \"onUpdate:visible\": _cache[9] || (_cache[9] = ($event: any) => ((chartPoolVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(ChartPool, {\n onSelect: _cache[8] || (_cache[8] = chart => { _unref(createChartElement)(chart); chartPoolVisible.value = 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: tableGeneratorVisible.value,\n \"onUpdate:visible\": _cache[12] || (_cache[12] = ($event: any) => ((tableGeneratorVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(TableGenerator, {\n onClose: _cache[10] || (_cache[10] = ($event: any) => (tableGeneratorVisible.value = false)),\n onInsert: _cache[11] || (_cache[11] = ({ row, col }) => { _unref(createTableElement)(row, col); tableGeneratorVisible.value = 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) => (latexEditorVisible.value = true))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Popover, {\n trigger: \"click\",\n visible: mediaInputVisible.value,\n \"onUpdate:visible\": _cache[17] || (_cache[17] = ($event: any) => ((mediaInputVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(MediaInput, {\n onClose: _cache[14] || (_cache[14] = ($event: any) => (mediaInputVisible.value = false)),\n onInsertVideo: _cache[15] || (_cache[15] = src => { _unref(createVideoElement)(src); mediaInputVisible.value = false }),\n onInsertAudio: _cache[16] || (_cache[16] = src => { _unref(createAudioElement)(src); mediaInputVisible.value = 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) => (_unref(scaleCanvas)('-')))\n }),\n _createVNode(_component_Popover, {\n trigger: \"click\",\n visible: canvasScaleVisible.value,\n \"onUpdate:visible\": _cache[19] || (_cache[19] = ($event: any) => ((canvasScaleVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_5, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(canvasScalePresetList, (item) => {\n return _createElementVNode(\"div\", {\n class: \"preset-item\",\n key: item,\n onClick: ($event: any) => (applyCanvasPresetScale(item))\n }, _toDisplayString(item) + \"%\", 9, _hoisted_6)\n }), 64))\n ])\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_unref(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) => (_unref(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) => (_unref(resetCanvas)()))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _createVNode(_component_Modal, {\n visible: latexEditorVisible.value,\n \"onUpdate:visible\": _cache[24] || (_cache[24] = ($event: any) => ((latexEditorVisible).value = $event)),\n footer: null,\n centered: \"\",\n width: 880,\n destroyOnClose: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(LaTeXEditor, {\n onClose: _cache[22] || (_cache[22] = ($event: any) => (latexEditorVisible.value = false)),\n onUpdate: _cache[23] || (_cache[23] = data => { _unref(createLatexElement)(data); latexEditorVisible.value = false })\n })\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=5d4eff54&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5d4eff54\"]])\n\nexport default __exports__","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 { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-cc6b7dca\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"layout-pool\" }\nconst _hoisted_2 = [\"onClick\"]\n\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { Slide } from '@/types/slides'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LayoutPool',\n emits: [\"select\"],\n setup(__props, { emit }: { emit: ({\n (event: 'select', payload: Slide): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst { layouts } = storeToRefs(useSlidesStore())\n\nconst selectSlideTemplate = (slide: Slide) => {\n emit('select', slide)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(layouts), (slide) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"layout-item\",\n key: slide.id,\n onClick: ($event: any) => (selectSlideTemplate(slide))\n }, [\n _createVNode(ThumbnailSlide, {\n class: \"thumbnail\",\n slide: slide,\n size: 180\n }, null, 8, [\"slide\"])\n ], 8, _hoisted_2))\n }), 128))\n ]))\n}\n}\n\n})","import script from \"./LayoutPool.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LayoutPool.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./LayoutPool.vue?vue&type=style&index=0&id=cc6b7dca&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-cc6b7dca\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, unref as _unref, 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-153c0b44\"),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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst keyboardStore = useKeyboardStore()\nconst { selectedSlidesIndex: _selectedSlidesIndex, thumbnailsFocus } = storeToRefs(mainStore)\nconst { slides, slideIndex } = storeToRefs(slidesStore)\nconst { ctrlKeyState, shiftKeyState } = storeToRefs(keyboardStore)\n\nconst { slidesLoadLimit } = useLoadSlides()\n\nconst selectedSlidesIndex = computed(() => [..._selectedSlidesIndex.value, slideIndex.value])\n\nconst presetLayoutPopoverVisible = ref(false)\n\nconst {\n copySlide,\n pasteSlide,\n createSlide,\n createSlideByTemplate,\n copyAndPasteSlide,\n deleteSlide,\n cutSlide,\n selectAllSlide,\n} = useSlideHandler()\n\n// 切换页面\nconst changSlideIndex = (index: number) => {\n mainStore.setActiveElementIdList([])\n\n if (slideIndex.value === index) return\n slidesStore.updateSlideIndex(index)\n}\n\n// 点击缩略图\nconst 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// 设置缩略图工具栏聚焦状态(只有聚焦状态下,该部分的快捷键才能生效)\nconst setThumbnailsFocus = (focus: boolean) => {\n if (thumbnailsFocus.value === focus) return\n mainStore.setThumbnailsFocus(focus)\n\n if (!focus) mainStore.updateSelectedSlidesIndex([])\n}\n\n// 拖拽调整顺序后进行数据的同步\nconst 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\nconst { enterScreening, enterScreeningFromStart } = useScreening()\n\nconst 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\nconst 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\nreturn (_ctx: any,_cache: any) => {\n const _component_IconPlus = _resolveComponent(\"IconPlus\")!\n const _component_IconDown = _resolveComponent(\"IconDown\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\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] = () => setThumbnailsFocus(true))\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_unref(createSlide)()))\n }, [\n _createVNode(_component_IconPlus, { class: \"icon\" }),\n _hoisted_2\n ]),\n _createVNode(_component_Popover, {\n trigger: \"click\",\n placement: \"bottomLeft\",\n visible: presetLayoutPopoverVisible.value,\n \"onUpdate:visible\": _cache[2] || (_cache[2] = ($event: any) => ((presetLayoutPopoverVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(LayoutPool, {\n onSelect: _cache[1] || (_cache[1] = slide => { _unref(createSlideByTemplate)(slide); presetLayoutPopoverVisible.value = 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(_unref(Draggable), {\n class: \"thumbnail-list\",\n modelValue: _unref(slides),\n animation: 300,\n scroll: true,\n scrollSensitivity: 50,\n setData: null,\n onEnd: handleDragEnd,\n itemKey: \"id\"\n }, {\n item: _withCtx(({ element, index }) => [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"thumbnail-item\", {\n 'active': _unref(slideIndex) === index,\n 'selected': _unref(selectedSlidesIndex).includes(index),\n }]),\n onMousedown: $event => handleClickSlideThumbnail($event, index)\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"label\", { 'offset-left': index >= 99 }])\n }, _toDisplayString(_unref(fillDigit)(index + 1, 2)), 3),\n _createVNode(ThumbnailSlide, {\n class: \"thumbnail\",\n slide: element,\n size: 120,\n visible: index < _unref(slidesLoadLimit)\n }, null, 8, [\"slide\", \"visible\"])\n ], 42, _hoisted_4)), [\n [_directive_contextmenu, contextmenusThumbnailItem]\n ])\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ], 32)), [\n [_directive_click_outside, () => setThumbnailsFocus(false)],\n [_directive_contextmenu, contextmenusThumbnails]\n ])\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=153c0b44&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-153c0b44\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-22345a51\"),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\nimport { ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementOpacity',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { handleElement } = storeToRefs(useMainStore())\n\nconst opacity = ref(1)\n\nwatch(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\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst 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\nreturn (_ctx: any,_cache: 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: opacity.value,\n onChange: _cache[0] || (_cache[0] = value => updateOpacity(value as number))\n }, null, 8, [\"step\", \"value\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./ElementOpacity.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementOpacity.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementOpacity.vue?vue&type=style&index=0&id=22345a51&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-22345a51\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-ed8f2044\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"color-block\" }\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ColorButton',\n props: {\n color: {\n type: String,\n required: true,\n },\n},\n setup(__props) {\n\n\n\nreturn (_ctx: any,_cache: 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: __props.color })\n }, null, 4)\n ]),\n _createVNode(_component_IconPlatte, { class: \"color-btn-icon\" })\n ]),\n _: 1\n }))\n}\n}\n\n})","import script from \"./ColorButton.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ColorButton.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ColorButton.vue?vue&type=style&index=0&id=ed8f2044&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-ed8f2044\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-e91e3764\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementOutline',\n props: {\n fixed: {\n type: Boolean,\n default: false,\n },\n},\n setup(__props) {\n\n\n\nconst slidesStore = useSlidesStore()\nconst { handleElement } = storeToRefs(useMainStore())\n\nconst outline = ref()\nconst hasOutline = ref(false)\n\nwatch(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\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst 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\nconst 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\nreturn (_ctx: any,_cache: 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_Popover = _resolveComponent(\"Popover\")!\n const _component_InputNumber = _resolveComponent(\"InputNumber\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (!__props.fixed)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_Switch, {\n checked: hasOutline.value,\n onChange: _cache[0] || (_cache[0] = checked => toggleOutline(checked as boolean))\n }, null, 8, [\"checked\"])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (hasOutline.value && outline.value)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createElementVNode(\"div\", _hoisted_5, [\n _hoisted_6,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: outline.value.style,\n onChange: _cache[1] || (_cache[1] = value => 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: outline.value.color,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = value => updateOutline({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: outline.value.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: outline.value.width,\n onChange: _cache[3] || (_cache[3] = value => updateOutline({ width: value as number })),\n style: {\"flex\":\"3\"}\n }, null, 8, [\"value\"])\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./ElementOutline.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementOutline.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementOutline.vue?vue&type=style&index=0&id=e91e3764&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-e91e3764\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-053ed706\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementShadow',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { handleElement } = storeToRefs(useMainStore())\n\nconst shadow = ref()\nconst hasShadow = ref(false)\n\nwatch(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\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst 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\nconst 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\nreturn (_ctx: any,_cache: any) => {\n const _component_Switch = _resolveComponent(\"Switch\")!\n const _component_Slider = _resolveComponent(\"Slider\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\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: hasShadow.value,\n onChange: _cache[0] || (_cache[0] = checked => toggleShadow(checked as boolean))\n }, null, 8, [\"checked\"])\n ])\n ]),\n (hasShadow.value && shadow.value)\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: shadow.value.h,\n onChange: _cache[1] || (_cache[1] = value => 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: shadow.value.v,\n onChange: _cache[2] || (_cache[2] = value => 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: shadow.value.blur,\n onChange: _cache[3] || (_cache[3] = value => 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: shadow.value.color,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = value => updateShadow({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: shadow.value.color,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./ElementShadow.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementShadow.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementShadow.vue?vue&type=style&index=0&id=053ed706&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-053ed706\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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, unref as _unref, withCtx as _withCtx, createBlock as _createBlock, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5830b9cf\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'TextStylePanel',\n setup(__props) {\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 slidesStore = useSlidesStore()\nconst { handleElement, handleElementId, richTextAttrs, availableFonts } = storeToRefs(useMainStore())\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst updateElement = (props: Partial) => {\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n}\n\nconst fill = ref('#000')\nconst lineHeight = ref()\nconst wordSpace = ref()\nconst textIndent = ref()\nconst paragraphSpace = ref()\n\nwatch(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\nconst 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]\nconst lineHeightOptions = [0.9, 1.0, 1.15, 1.2, 1.4, 1.5, 1.8, 2.0, 2.5, 3.0]\nconst wordSpaceOptions = [0, 1, 2, 3, 4, 5, 6, 8, 10]\nconst textIndentOptions = [0, 48, 96, 144, 192, 240, 288, 336]\nconst paragraphSpaceOptions = [0, 5, 10, 15, 20, 25, 30, 40, 50, 80]\n\n// 设置行高\nconst updateLineHeight = (value: number) => {\n updateElement({ lineHeight: value })\n}\n\n// 设置段间距\nconst updateParagraphSpace = (value: number) => {\n updateElement({ paragraphSpace: value })\n}\n\n// 设置字间距\nconst updateWordSpace = (value: number) => {\n updateElement({ wordSpace: value })\n}\n\n// 设置首行缩进\nconst updateTextIndent = (value: number) => {\n updateElement({ textIndent: value })\n}\n\n// 设置文本框填充\nconst updateFill = (value: string) => {\n updateElement({ fill: value })\n}\n\n// 发射富文本设置命令\nconst emitRichTextCommand = (command: string, value?: string) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { action: { command, value } })\n}\n\n// 发射富文本设置命令(批量)\nconst emitBatchRichTextCommand = (action: RichTextAction[]) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { action })\n}\n\n// 设置富文本超链接\nconst link = ref('')\nconst linkPopoverVisible = ref(false)\n\nwatch(richTextAttrs, () => linkPopoverVisible.value = false)\n\nconst openLinkPopover = () => {\n link.value = richTextAttrs.value.link\n linkPopoverVisible.value = true\n}\nconst 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\nreturn (_ctx: any,_cache: 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\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(presetStyles, (item) => {\n return _createElementVNode(\"div\", {\n class: \"preset-style-item\",\n key: item.label,\n style: _normalizeStyle(item.style),\n onClick: ($event: any) => (emitBatchRichTextCommand(item.cmd))\n }, _toDisplayString(item.label), 13, _hoisted_3)\n }), 64))\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: _unref(richTextAttrs).fontname,\n onChange: _cache[0] || (_cache[0] = value => 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(_unref(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(_unref(WEB_FONTS), (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: _unref(richTextAttrs).fontsize,\n onChange: _cache[1] || (_cache[1] = value => emitRichTextCommand('fontsize', value as string))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconAddText)\n ]),\n default: _withCtx(() => [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(fontSizeOptions, (fontsize) => {\n return _createVNode(_component_SelectOption, {\n key: fontsize,\n value: fontsize\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(fontsize), 1)\n ]),\n _: 2\n }, 1032, [\"value\"])\n }), 64))\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: _unref(richTextAttrs).color,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = value => 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: _unref(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: _unref(richTextAttrs).backcolor,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = value => 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: _unref(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) => (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) => (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: _unref(richTextAttrs).bold,\n onClick: _cache[6] || (_cache[6] = ($event: any) => (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: _unref(richTextAttrs).em,\n onClick: _cache[7] || (_cache[7] = ($event: any) => (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: _unref(richTextAttrs).underline,\n onClick: _cache[8] || (_cache[8] = ($event: any) => (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: _unref(richTextAttrs).strikethrough,\n onClick: _cache[9] || (_cache[9] = ($event: any) => (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) => (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: _unref(richTextAttrs).superscript,\n onClick: _cache[11] || (_cache[11] = ($event: any) => (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: _unref(richTextAttrs).subscript,\n onClick: _cache[12] || (_cache[12] = ($event: any) => (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: _unref(richTextAttrs).code,\n onClick: _cache[13] || (_cache[13] = ($event: any) => (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: _unref(richTextAttrs).blockquote,\n onClick: _cache[14] || (_cache[14] = ($event: any) => (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: linkPopoverVisible.value,\n \"onUpdate:visible\": _cache[19] || (_cache[19] = ($event: any) => ((linkPopoverVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_component_Input, {\n value: link.value,\n \"onUpdate:value\": _cache[15] || (_cache[15] = ($event: any) => ((link).value = $event)),\n placeholder: \"请输入超链接\"\n }, null, 8, [\"value\"]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(_component_Button, {\n size: \"small\",\n disabled: !_unref(richTextAttrs).link,\n onClick: _cache[16] || (_cache[16] = ($event: any) => (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) => (updateLink(link.value)))\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: !!_unref(richTextAttrs).link,\n onClick: _cache[18] || (_cache[18] = ($event: any) => (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: _unref(richTextAttrs).align,\n onChange: _cache[20] || (_cache[20] = e => 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: _unref(richTextAttrs).bulletList,\n onClick: _cache[21] || (_cache[21] = ($event: any) => (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: _unref(richTextAttrs).orderedList,\n onClick: _cache[22] || (_cache[22] = ($event: any) => (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) => (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) => (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: lineHeight.value,\n onChange: _cache[25] || (_cache[25] = value => updateLineHeight(value as number))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconRowHeight)\n ]),\n default: _withCtx(() => [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(lineHeightOptions, (item) => {\n return _createVNode(_component_SelectOption, {\n key: item,\n value: item\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(item) + \"倍\", 1)\n ]),\n _: 2\n }, 1032, [\"value\"])\n }), 64))\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: paragraphSpace.value,\n onChange: _cache[26] || (_cache[26] = value => updateParagraphSpace(value as number))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconVerticalSpacingBetweenItems)\n ]),\n default: _withCtx(() => [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(paragraphSpaceOptions, (item) => {\n return _createVNode(_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 }), 64))\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: wordSpace.value,\n onChange: _cache[27] || (_cache[27] = value => updateWordSpace(value as number))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconFullwidth)\n ]),\n default: _withCtx(() => [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(wordSpaceOptions, (item) => {\n return _createVNode(_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 }), 64))\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: textIndent.value,\n onChange: _cache[28] || (_cache[28] = value => updateTextIndent(value as number))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconIndentRight)\n ]),\n default: _withCtx(() => [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(textIndentOptions, (item) => {\n return _createVNode(_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 }), 64))\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: fill.value,\n \"onUpdate:modelValue\": _cache[29] || (_cache[29] = value => updateFill(value))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: fill.value,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createVNode(_component_Divider),\n _createVNode(ElementOutline),\n _createVNode(_component_Divider),\n _createVNode(ElementShadow),\n _createVNode(_component_Divider),\n _createVNode(ElementOpacity)\n ]))\n}\n}\n\n})","import script from \"./TextStylePanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./TextStylePanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./TextStylePanel.vue?vue&type=style&index=0&id=5830b9cf&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5830b9cf\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-59a1646e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-flip\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\" 垂直翻转\")\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\" 水平翻转\")\n\nimport { ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { ImageOrShapeFlip } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementFlip',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { handleElement } = storeToRefs(useMainStore())\n\nconst flipH = ref(false)\nconst flipV = ref(false)\n\nwatch(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\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst updateFlip = (flipProps: ImageOrShapeFlip) => {\n if (!handleElement.value) return\n slidesStore.updateElement({ id: handleElement.value.id, props: flipProps })\n addHistorySnapshot()\n}\n\nreturn (_ctx: any,_cache: 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: flipV.value,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (updateFlip({ flipV: !flipV.value })))\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: flipH.value,\n onClick: _cache[1] || (_cache[1] = ($event: any) => (updateFlip({ flipH: !flipH.value })))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFlipHorizontally),\n _hoisted_3\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./ElementFlip.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementFlip.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementFlip.vue?vue&type=style&index=0&id=59a1646e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-59a1646e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-37fbdfde\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementFilter',\n setup(__props) {\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\nconst slidesStore = useSlidesStore()\nconst { handleElement, handleElementId } = storeToRefs(useMainStore())\n\nconst filterOptions = ref(JSON.parse(JSON.stringify(defaultFilters)))\nconst hasFilters = ref(false)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nwatch(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// 设置滤镜\nconst 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\nconst 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\nreturn (_ctx: any,_cache: 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: hasFilters.value,\n onChange: _cache[0] || (_cache[0] = checked => toggleFilters(checked as boolean))\n }, null, 8, [\"checked\"])\n ])\n ]),\n (hasFilters.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(filterOptions.value, (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 => updateFilter(filter, value as number)\n }, null, 8, [\"max\", \"step\", \"value\", \"onChange\"])\n ]))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./ElementFilter.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementFilter.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementFilter.vue?vue&type=style&index=0&id=37fbdfde&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-37fbdfde\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, createVNode as _createVNode, resolveComponent as _resolveComponent, 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-7da35bec\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ImageStylePanel',\n setup(__props) {\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\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { handleElement, handleElementId } = storeToRefs(mainStore)\nconst { currentSlide } = storeToRefs(slidesStore)\n\nconst handleImageElement = handleElement as Ref\n\nconst clipPanelVisible = ref(false)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\n// 打开自由裁剪\nconst clipImage = () => {\n mainStore.setClipingImageElementId(handleElementId.value)\n clipPanelVisible.value = false\n}\n\n// 获取原始图片的位置大小\nconst 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// 预设裁剪\nconst 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// 替换图片(保持当前的样式)\nconst replaceImage = (files: FileList) => {\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// 重置图片:清除全部样式\nconst 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// 将图片设置为背景\nconst 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\nreturn (_ctx: any,_cache: any) => {\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_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(${_unref(handleImageElement).src})` })\n }, null, 4),\n _createVNode(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) => (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: clipPanelVisible.value,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = ($event: any) => ((clipPanelVisible).value = $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(_unref(shapeClipPathOptions), (item, key) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"shape-clip-item\",\n key: key,\n onClick: ($event: any) => (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(), _createElementBlock(_Fragment, null, _renderList(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) => (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 }), 64))\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(ElementFilter),\n _createVNode(_component_Divider),\n _createVNode(ElementOutline),\n _createVNode(_component_Divider),\n _createVNode(ElementShadow),\n _createVNode(_component_Divider),\n _createVNode(_component_FileInput, {\n onChange: _cache[2] || (_cache[2] = files => 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) => (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) => (setBackgroundImage()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTheme, { class: \"btn-icon\" }),\n _hoisted_10\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./ImageStylePanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ImageStylePanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ImageStylePanel.vue?vue&type=style&index=0&id=7da35bec&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7da35bec\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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, unref as _unref, renderList as _renderList, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-02998580\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ShapeStylePanel',\n setup(__props) {\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { handleElement, handleElementId, richTextAttrs, availableFonts } = storeToRefs(mainStore)\n\nconst handleShapeElement = handleElement as Ref\n\nconst fill = ref('#000')\nconst gradient = ref({\n type: 'linear', \n rotate: 0,\n color: ['#fff', '#fff'],\n})\nconst fillType = ref('fill')\nconst textAlign = ref('middle')\n\nwatch(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\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst updateElement = (props: Partial) => {\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n}\n\n// 设置填充类型:渐变、纯色\nconst 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// 设置渐变填充\nconst updateGradient = (gradientProps: Partial) => {\n if (!gradient.value) return\n const _gradient: ShapeGradient = { ...gradient.value, ...gradientProps }\n updateElement({ gradient: _gradient })\n}\n\n// 设置填充色\nconst updateFill = (value: string) => {\n updateElement({ fill: value })\n}\n\nconst 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\nconst 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\nconst emitRichTextCommand = (command: string, value?: string) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { action: { command, value } })\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_Slider = _resolveComponent(\"Slider\")!\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\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Select, {\n style: {\"flex\":\"10\"},\n value: fillType.value,\n onChange: _cache[0] || (_cache[0] = value => 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 (fillType.value === 'fill')\n ? (_openBlock(), _createBlock(_component_Popover, {\n key: 0,\n trigger: \"click\"\n }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: fill.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = value => updateFill(value))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: fill.value,\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: gradient.value.type,\n onChange: _cache[2] || (_cache[2] = value => 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 (fillType.value === '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: gradient.value.color[0],\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = value => updateGradient({ color: [value, gradient.value.color[1]] }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: gradient.value.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: gradient.value.color[1],\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = value => updateGradient({ color: [gradient.value.color[0], value] }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: gradient.value.color[1],\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n (gradient.value.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: gradient.value.rotate,\n onChange: _cache[5] || (_cache[5] = value => updateGradient({ rotate: value as number }))\n }, null, 8, [\"value\"])\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n : _createCommentVNode(\"\", true),\n _createVNode(ElementFlip),\n _createVNode(_component_Divider),\n (_unref(handleShapeElement).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: _unref(richTextAttrs).fontname,\n onChange: _cache[6] || (_cache[6] = value => 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(_unref(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(_unref(WEB_FONTS), (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: _unref(richTextAttrs).fontsize,\n onChange: _cache[7] || (_cache[7] = value => emitRichTextCommand('fontsize', value as string))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconAddText)\n ]),\n default: _withCtx(() => [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(fontSizeOptions, (fontsize) => {\n return _createVNode(_component_SelectOption, {\n key: fontsize,\n value: fontsize\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(fontsize), 1)\n ]),\n _: 2\n }, 1032, [\"value\"])\n }), 64))\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: _unref(richTextAttrs).color,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = value => 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: _unref(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: _unref(richTextAttrs).backcolor,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = value => 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: _unref(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) => (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) => (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: _unref(richTextAttrs).bold,\n onClick: _cache[12] || (_cache[12] = ($event: any) => (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: _unref(richTextAttrs).em,\n onClick: _cache[13] || (_cache[13] = ($event: any) => (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: _unref(richTextAttrs).underline,\n onClick: _cache[14] || (_cache[14] = ($event: any) => (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) => (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: _unref(richTextAttrs).align,\n onChange: _cache[16] || (_cache[16] = e => 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: textAlign.value,\n onChange: _cache[17] || (_cache[17] = e => 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(ElementOutline),\n _createVNode(_component_Divider),\n _createVNode(ElementShadow),\n _createVNode(_component_Divider),\n _createVNode(ElementOpacity)\n ]))\n}\n}\n\n})","import script from \"./ShapeStylePanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ShapeStylePanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ShapeStylePanel.vue?vue&type=style&index=0&id=02998580&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-02998580\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, 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-938968a2\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LineStylePanel',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { handleElement } = storeToRefs(useMainStore())\n\nconst handleLineElement = handleElement as Ref\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst updateLine = (props: Partial) => {\n if (!handleElement.value) return\n slidesStore.updateElement({ id: handleElement.value.id, props })\n addHistorySnapshot()\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_InputNumber = _resolveComponent(\"InputNumber\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\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: _unref(handleLineElement).style,\n onChange: _cache[0] || (_cache[0] = value => 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: _unref(handleLineElement).color,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = value => updateLine({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: _unref(handleLineElement).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: _unref(handleLineElement).width,\n onChange: _cache[2] || (_cache[2] = value => 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: _unref(handleLineElement).points[0],\n onChange: _cache[3] || (_cache[3] = value => updateLine({ points: [value as 'arrow' | 'dot', _unref(handleLineElement).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: _unref(handleLineElement).points[1],\n onChange: _cache[4] || (_cache[4] = value => updateLine({ points: [_unref(handleLineElement).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(ElementShadow)\n ]))\n}\n}\n\n})","import script from \"./LineStylePanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LineStylePanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./LineStylePanel.vue?vue&type=style&index=0&id=938968a2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-938968a2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, unref as _unref, 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-53b32689\"),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\nimport { computed, onMounted, onUnmounted, PropType, ref } from 'vue'\nimport { ChartData } from '@/types/slides'\nimport { KEYS } from '@/configs/hotkey'\nimport { pasteCustomClipboardString, pasteExcelClipboardString } from '@/utils/clipboard'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ChartDataEditor',\n props: {\n data: {\n type: Object as PropType,\n required: true,\n }\n},\n emits: [\"save\", \"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'save', payload: ChartData): void\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst CELL_WIDTH = 100\nconst CELL_HEIGHT = 32\n\nconst selectedRange = ref([0, 0])\nconst tempRangeSize = ref({ width: 0, height: 0 })\nconst focusCell = ref<[number, number] | null>(null)\n\n// 当前选区的边框线条位置\nconst 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// 当前选区的缩放点位置\nconst 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\nconst 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\nonMounted(initData)\n\n// 快捷键监听:回车移动焦点到下一行\nconst 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\nconst keyboardListener = (e: KeyboardEvent) => {\n const key = e.key.toUpperCase()\n if (key === KEYS.ENTER) moveNextRow()\n}\n\nonMounted(() => {\n document.addEventListener('keydown', keyboardListener)\n})\nonUnmounted(() => {\n document.removeEventListener('keydown', keyboardListener)\n})\n\n// 获取当前图表DOM中的数据,整理格式化后传递出去\nconst 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// 清空表格数据\nconst 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// 自定义粘贴事件(尝试读取剪贴板中的表格数据)\nconst 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// 关闭图表数据编辑器\nconst closeEditor = () => emit('close')\n\n// 鼠标拖拽修改选中的数据范围\nconst 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\nreturn (_ctx: any,_cache: 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: tempRangeSize.value.width + 'px',\n height: tempRangeSize.value.height + 'px',\n })\n }, null, 4),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(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(_unref(resizablePointStyle)),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (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 <= selectedRange.value[1]) || (rowIndex === 1 && colIndex <= selectedRange.value[0]) })\n }, [\n _createElementVNode(\"input\", {\n class: _normalizeClass(['item', { 'selected': rowIndex <= selectedRange.value[1] && colIndex <= selectedRange.value[0] }]),\n id: `cell-${rowIndex - 1}-${colIndex - 1}`,\n autocomplete: \"off\",\n onFocus: ($event: any) => (focusCell.value = [rowIndex - 1, colIndex - 1]),\n onPaste: $event => 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) => (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) => (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) => (getTableData())),\n style: {\"margin-left\":\"10px\"}\n }, {\n default: _withCtx(() => [\n _hoisted_10\n ]),\n _: 1\n })\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./ChartDataEditor.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ChartDataEditor.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ChartDataEditor.vue?vue&type=style&index=0&id=53b32689&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-53b32689\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, unref as _unref, 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-769d6876\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\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\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { handleElement, handleElementId } = storeToRefs(mainStore)\nconst { theme } = storeToRefs(slidesStore)\n\nconst handleChartElement = handleElement as Ref\n\nconst chartDataEditorVisible = ref(false)\nconst presetThemesVisible = ref(false)\nconst presetThemeColorHoverIndex = ref<[number, number]>([-1, -1])\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst fill = ref('#000')\n\nconst themeColor = ref([])\nconst gridColor = ref('')\nconst legend = ref('')\n\nconst lineSmooth = ref(true)\nconst showLine = ref(true)\nconst showArea = ref(false)\nconst horizontalBars = ref(false)\nconst donut = ref(false)\nconst stackBars = ref(false)\n\nwatch(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\nconst updateElement = (props: Partial) => {\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n}\n\n// 设置图表数据\nconst updateData = (data: ChartData) => {\n chartDataEditorVisible.value = false\n updateElement({ data })\n}\n\n// 设置填充色\nconst updateFill = (value: string) => {\n updateElement({ fill: value })\n}\n\n// 设置其他选项:柱状图转条形图、折线图转面积图、折线图转散点图、饼图转环形图、折线图开关平滑曲线\nconst updateOptions = (optionProps: ChartOptions) => {\n const _handleElement = handleElement.value as PPTChartElement\n\n const newOptions = { ..._handleElement.options, ...optionProps }\n updateElement({ options: newOptions })\n}\n\n// 设置主题色\nconst 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// 添加主题色\nconst addThemeColor = () => {\n const props = {\n themeColor: [...themeColor.value, theme.value.themeColor],\n }\n updateElement(props)\n}\n\n// 使用预置主题配色\nconst applyPresetTheme = (colors: string[], index: number) => {\n const themeColor = colors.slice(0, index + 1)\n updateElement({ themeColor })\n presetThemesVisible.value = false\n}\n\n// 删除主题色\nconst deleteThemeColor = (index: number) => {\n const props = {\n themeColor: themeColor.value.filter((c, i) => i !== index),\n }\n updateElement(props)\n}\n\n// 设置网格颜色\nconst updateGridColor = (gridColor: string) => {\n updateElement({ gridColor })\n}\n\n// 设置图例位置/不显示\nconst updateLegend = (legend: '' | 'top' | 'bottom') => {\n updateElement({ legend })\n}\n\nconst openDataEditor = () => chartDataEditorVisible.value = true\n\nemitter.on(EmitterEvents.OPEN_CHART_DATA_EDITOR, openDataEditor)\nonUnmounted(() => {\n emitter.off(EmitterEvents.OPEN_CHART_DATA_EDITOR, openDataEditor)\n})\n\n// handleElement: handleElement as Ref,\n\nreturn (_ctx: any,_cache: 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_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_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) => (chartDataEditorVisible.value = true))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconEdit, { class: \"btn-icon\" }),\n _hoisted_2\n ]),\n _: 1\n }),\n _createVNode(_component_Divider),\n (_unref(handleChartElement).chartType === 'line')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_Checkbox, {\n onChange: _cache[1] || (_cache[1] = e => updateOptions({ showArea: e.target.checked })),\n checked: showArea.value,\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 => updateOptions({ showLine: !e.target.checked })),\n checked: !showLine.value,\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 => updateOptions({ lineSmooth: e.target.checked })),\n checked: lineSmooth.value\n }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n }, 8, [\"checked\"])\n ])\n ], 64))\n : _createCommentVNode(\"\", true),\n (_unref(handleChartElement).chartType === 'bar')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createVNode(_component_Checkbox, {\n onChange: _cache[4] || (_cache[4] = e => updateOptions({ horizontalBars: e.target.checked })),\n checked: horizontalBars.value\n }, {\n default: _withCtx(() => [\n _hoisted_9\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(_component_Checkbox, {\n onChange: _cache[5] || (_cache[5] = e => updateOptions({ stackBars: e.target.checked })),\n checked: stackBars.value\n }, {\n default: _withCtx(() => [\n _hoisted_10\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(handleChartElement).chartType === 'pie')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n _createVNode(_component_Checkbox, {\n onChange: _cache[6] || (_cache[6] = e => updateOptions({ donut: e.target.checked })),\n checked: donut.value\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: legend.value,\n onChange: _cache[7] || (_cache[7] = value => 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: fill.value,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = value => updateFill(value))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: fill.value,\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: gridColor.value,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = value => updateGridColor(value))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: gridColor.value,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createVNode(_component_Divider),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(themeColor.value, (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 => updateTheme(value, index)\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\"])\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_23, [\n _createVNode(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) => (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: presetThemesVisible.value,\n \"onUpdate:visible\": _cache[11] || (_cache[11] = ($event: any) => ((presetThemesVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_25, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(presetChartThemes, (item, index) => {\n return _createElementVNode(\"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': presetThemeColorHoverIndex.value[0] === index && itemIndex <= presetThemeColorHoverIndex.value[1] }]),\n key: color,\n style: _normalizeStyle({ backgroundColor: color }),\n onClick: ($event: any) => (applyPresetTheme(item, itemIndex)),\n onMouseenter: ($event: any) => (presetThemeColorHoverIndex.value = [index, itemIndex]),\n onMouseleave: _cache[10] || (_cache[10] = ($event: any) => (presetThemeColorHoverIndex.value = [-1, -1]))\n }, null, 46, _hoisted_26))\n }), 128))\n ])\n }), 64))\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: themeColor.value.length >= 10,\n style: {\"flex\":\"3\"},\n onClick: _cache[12] || (_cache[12] = ($event: any) => (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(ElementOutline),\n _createVNode(_component_Modal, {\n visible: chartDataEditorVisible.value,\n \"onUpdate:visible\": _cache[15] || (_cache[15] = ($event: any) => ((chartDataEditorVisible).value = $event)),\n footer: null,\n centered: \"\",\n closable: false,\n width: 648,\n destroyOnClose: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(ChartDataEditor, {\n data: _unref(handleChartElement).data,\n onClose: _cache[13] || (_cache[13] = ($event: any) => (chartDataEditorVisible.value = false)),\n onSave: _cache[14] || (_cache[14] = value => updateData(value))\n }, null, 8, [\"data\"])\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=769d6876&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-769d6876\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, unref as _unref, 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-7e28e1d8\"),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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'TableStylePanel',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { handleElement, handleElementId, selectedTableCells: selectedCells, availableFonts } = storeToRefs(useMainStore())\nconst themeColor = computed(() => slidesStore.theme.themeColor)\n\nconst fontSizeOptions = [\n '12px', '14px', '16px', '18px', '20px', '22px', '24px', '28px', '32px',\n]\n\nconst 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\nconst theme = ref()\nconst hasTheme = ref(false)\nconst rowCount = ref(0)\nconst colCount = ref(0)\nconst minRowCount = ref(0)\nconst minColCount = ref(0)\n\nwatch(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\nconst { addHistorySnapshot } = useHistorySnapshot()\n\n// 更新当前选中单元格的文本样式状态\nconst 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\nonMounted(() => {\n if (selectedCells.value.length) updateTextAttrState()\n})\n\nwatch(selectedCells, updateTextAttrState)\n\nconst updateElement = (props: Partial) => {\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n}\n\n// 设置单元格内容文本样式\nconst 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// 更新表格主题:主题色、标题行、汇总行、第一列、最后一列\nconst updateTheme = (themeProp: Partial) => {\n if (!theme.value) return\n const _theme = { ...theme.value, ...themeProp }\n updateElement({ theme: _theme })\n}\n\n// 开启/关闭表格主题\nconst 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// 设置表格行数\nconst 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// 设置表格列数\nconst 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\nreturn (_ctx: any,_cache: 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_IconMinus = _resolveComponent(\"IconMinus\")!\n const _component_IconPlus = _resolveComponent(\"IconPlus\")!\n const _component_Switch = _resolveComponent(\"Switch\")!\n const _component_Checkbox = _resolveComponent(\"Checkbox\")!\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: textAttrs.value.fontname,\n onChange: _cache[0] || (_cache[0] = value => 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(_unref(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(_unref(WEB_FONTS), (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: textAttrs.value.fontsize,\n onChange: _cache[1] || (_cache[1] = value => updateTextAttrs({ fontsize: value as string }))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconAddText)\n ]),\n default: _withCtx(() => [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(fontSizeOptions, (fontsize) => {\n return _createVNode(_component_SelectOption, {\n key: fontsize,\n value: fontsize\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(fontsize), 1)\n ]),\n _: 2\n }, 1032, [\"value\"])\n }), 64))\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: textAttrs.value.color,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = value => 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: textAttrs.value.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: textAttrs.value.backcolor,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = value => 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: textAttrs.value.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: textAttrs.value.bold,\n onClick: _cache[4] || (_cache[4] = ($event: any) => (updateTextAttrs({ bold: !textAttrs.value.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: textAttrs.value.em,\n onClick: _cache[5] || (_cache[5] = ($event: any) => (updateTextAttrs({ em: !textAttrs.value.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: textAttrs.value.underline,\n onClick: _cache[6] || (_cache[6] = ($event: any) => (updateTextAttrs({ underline: !textAttrs.value.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: textAttrs.value.strikethrough,\n onClick: _cache[7] || (_cache[7] = ($event: any) => (updateTextAttrs({ strikethrough: !textAttrs.value.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: textAttrs.value.align,\n onChange: _cache[8] || (_cache[8] = e => 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(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: rowCount.value <= 1,\n onClick: _cache[9] || (_cache[9] = ($event: any) => (setTableRow(rowCount.value - 1)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconMinus)\n ]),\n _: 1\n }, 8, [\"disabled\"]),\n _createElementVNode(\"div\", _hoisted_5, _toDisplayString(rowCount.value), 1),\n _createVNode(_component_Button, {\n class: \"btn\",\n disabled: rowCount.value >= 30,\n onClick: _cache[10] || (_cache[10] = ($event: any) => (setTableRow(rowCount.value + 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: colCount.value <= 1,\n onClick: _cache[11] || (_cache[11] = ($event: any) => (setTableCol(colCount.value - 1)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconMinus)\n ]),\n _: 1\n }, 8, [\"disabled\"]),\n _createElementVNode(\"div\", _hoisted_9, _toDisplayString(colCount.value), 1),\n _createVNode(_component_Button, {\n class: \"btn\",\n disabled: colCount.value >= 30,\n onClick: _cache[12] || (_cache[12] = ($event: any) => (setTableCol(colCount.value + 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: hasTheme.value,\n onChange: _cache[13] || (_cache[13] = checked => toggleTheme(checked as boolean))\n }, null, 8, [\"checked\"])\n ])\n ]),\n (theme.value)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_13, [\n _createVNode(_component_Checkbox, {\n onChange: _cache[14] || (_cache[14] = e => updateTheme({ rowHeader: e.target.checked })),\n checked: theme.value.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 => updateTheme({ rowFooter: e.target.checked })),\n checked: theme.value.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 => updateTheme({ colHeader: e.target.checked })),\n checked: theme.value.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 => updateTheme({ colFooter: e.target.checked })),\n checked: theme.value.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: theme.value.color,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = value => updateTheme({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: theme.value.color,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./TableStylePanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./TableStylePanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./TableStylePanel.vue?vue&type=style&index=0&id=7e28e1d8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7e28e1d8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-546adf8c\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LatexStylePanel',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { handleElement } = storeToRefs(useMainStore())\n\nconst handleLatexElement = handleElement as Ref\n\nconst latexEditorVisible = ref(false)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst updateLatex = (props: Partial) => {\n if (!handleElement.value) return\n slidesStore.updateElement({ id: handleElement.value.id, props })\n addHistorySnapshot()\n}\n\nconst 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\nconst openLatexEditor = () => latexEditorVisible.value = true\n\nemitter.on(EmitterEvents.OPEN_LATEX_EDITOR, openLatexEditor)\nonUnmounted(() => {\n emitter.off(EmitterEvents.OPEN_LATEX_EDITOR, openLatexEditor)\n})\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_InputNumber = _resolveComponent(\"InputNumber\")!\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) => (latexEditorVisible.value = 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: _unref(handleLatexElement).color,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = value => updateLatex({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: _unref(handleLatexElement).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: _unref(handleLatexElement).strokeWidth,\n onChange: _cache[2] || (_cache[2] = value => updateLatex({ strokeWidth: value as number })),\n style: {\"flex\":\"3\"}\n }, null, 8, [\"value\"])\n ]),\n _createVNode(_component_Modal, {\n visible: latexEditorVisible.value,\n \"onUpdate:visible\": _cache[5] || (_cache[5] = ($event: any) => ((latexEditorVisible).value = $event)),\n footer: null,\n centered: \"\",\n width: 880,\n destroyOnClose: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(LaTeXEditor, {\n value: _unref(handleLatexElement).latex,\n onClose: _cache[3] || (_cache[3] = ($event: any) => (latexEditorVisible.value = false)),\n onUpdate: _cache[4] || (_cache[4] = data => { updateLatexData(data); latexEditorVisible.value = false })\n }, null, 8, [\"value\"])\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]))\n}\n}\n\n})","import script from \"./LatexStylePanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LatexStylePanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./LatexStylePanel.vue?vue&type=style&index=0&id=546adf8c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-546adf8c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, 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-ff7125dc\"),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\nimport { Ref } 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'VideoStylePanel',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { handleElement } = storeToRefs(useMainStore())\n\nconst handleVideoElement = handleElement as Ref\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst updateVideo = (props: Partial) => {\n if (!handleElement.value) return\n slidesStore.updateElement({ id: handleElement.value.id, props })\n addHistorySnapshot()\n}\n\n// 设置视频预览封面\nconst setVideoPoster = (files: FileList) => {\n const imageFile = files[0]\n if (!imageFile) return\n getImageDataURL(imageFile).then(dataURL => updateVideo({ poster: dataURL }))\n}\n\nreturn (_ctx: any,_cache: 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 => setVideoPoster(files))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", {\n class: \"content\",\n style: _normalizeStyle({ backgroundImage: `url(${_unref(handleVideoElement).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) => (updateVideo({ poster: '' })))\n }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","import script from \"./VideoStylePanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./VideoStylePanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./VideoStylePanel.vue?vue&type=style&index=0&id=ff7125dc&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-ff7125dc\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, 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-5d723d50\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AudioStylePanel',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { handleElement } = storeToRefs(useMainStore())\n\nconst handleAudioElement = handleElement as Ref\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst updateAudio = (props: Partial) => {\n if (!handleElement.value) return\n slidesStore.updateElement({ id: handleElement.value.id, props })\n addHistorySnapshot()\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\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: _unref(handleAudioElement).color,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = value => updateAudio({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: _unref(handleAudioElement).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: _unref(handleAudioElement).autoplay,\n onChange: _cache[1] || (_cache[1] = checked => 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: _unref(handleAudioElement).loop,\n onChange: _cache[2] || (_cache[2] = checked => updateAudio({ loop: checked as boolean }))\n }, null, 8, [\"checked\"])\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./AudioStylePanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./AudioStylePanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./AudioStylePanel.vue?vue&type=style&index=0&id=5d723d50&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5d723d50\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, unref as _unref, 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-71469855\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MultiStylePanel',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { richTextAttrs, availableFonts, activeElementList } = storeToRefs(useMainStore())\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst updateElement = (id: string, props: Partial) => {\n slidesStore.updateElement({ id, props })\n addHistorySnapshot()\n}\n\nconst 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\nconst fill = ref('#fff')\nconst outline = ref({\n width: 0,\n color: '#fff',\n style: 'solid',\n})\n\n// 批量修改填充色(表格元素为单元格填充、音频元素为图标颜色)\nconst 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// 修改边框/线条样式\nconst 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// 修改文字样式\nconst 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\nreturn (_ctx: any,_cache: any) => {\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\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: fill.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = value => updateFill(value))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: fill.value,\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: outline.value.style,\n onChange: _cache[1] || (_cache[1] = value => 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: outline.value.color,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = value => updateOutline({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: outline.value.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: outline.value.width,\n onChange: _cache[3] || (_cache[3] = value => 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: _unref(richTextAttrs).fontname,\n onChange: _cache[4] || (_cache[4] = value => 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(_unref(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(_unref(WEB_FONTS), (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: _unref(richTextAttrs).fontsize,\n onChange: _cache[5] || (_cache[5] = value => updateFontStyle('fontsize', value as string))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconAddText)\n ]),\n default: _withCtx(() => [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(fontSizeOptions, (fontsize) => {\n return _createVNode(_component_SelectOption, {\n key: fontsize,\n value: fontsize\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(fontsize), 1)\n ]),\n _: 2\n }, 1032, [\"value\"])\n }), 64))\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: _unref(richTextAttrs).color,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = value => 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: _unref(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: _unref(richTextAttrs).backcolor,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = value => 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: _unref(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) => (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) => (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: _unref(richTextAttrs).align,\n onChange: _cache[10] || (_cache[10] = e => 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}\n}\n\n})","import script from \"./MultiStylePanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MultiStylePanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MultiStylePanel.vue?vue&type=style&index=0&id=71469855&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-71469855\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"element-style-panel\" }\n\nimport { computed } 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\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\nconst { activeElementIdList, activeElementList, handleElement, activeGroupElementId } = storeToRefs(useMainStore())\n\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_unref(currentPanelComponent))))\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, unref as _unref, 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-6bf6c951\"),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\nimport { computed, ref, watch } from 'vue'\nimport { round } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementPositionPanel',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { handleElement, handleElementId } = storeToRefs(useMainStore())\n\nconst left = ref(0)\nconst top = ref(0)\nconst width = ref(0)\nconst height = ref(0)\nconst rotate = ref(0)\nconst fixedRatio = ref(false)\n\nconst minSize = computed(() => {\n if (!handleElement.value) return 20\n return MIN_SIZE[handleElement.value.type] || 20\n})\n\nwatch(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\nconst { orderElement } = useOrderElement()\nconst { alignElementToCanvas } = useAlignElementToCanvas()\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\n// 设置元素位置\nconst updateLeft = (value: number) => {\n const props = { left: value }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n}\nconst updateTop = (value: number) => {\n const props = { top: value }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n}\n\n// 设置元素宽度、高度、旋转角度\nconst updateWidth = (value: number) => {\n const props = { width: value }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n}\nconst updateHeight = (value: number) => {\n const props = { height: value }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n}\nconst updateRotate = (value: number) => {\n const props = { rotate: value }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n}\n\n// 固定元素的宽高比\nconst updateFixedRatio = (value: boolean) => {\n const props = { fixedRatio: value }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n}\n\n// 将元素旋转45度(顺时针或逆时针)\nconst 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\nreturn (_ctx: any,_cache: 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) => (_unref(orderElement)(_unref(handleElement)!, _unref(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) => (_unref(orderElement)(_unref(handleElement)!, _unref(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) => (_unref(orderElement)(_unref(handleElement)!, _unref(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) => (_unref(orderElement)(_unref(handleElement)!, _unref(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) => (_unref(alignElementToCanvas)(_unref(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) => (_unref(alignElementToCanvas)(_unref(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) => (_unref(alignElementToCanvas)(_unref(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) => (_unref(alignElementToCanvas)(_unref(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) => (_unref(alignElementToCanvas)(_unref(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) => (_unref(alignElementToCanvas)(_unref(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: left.value,\n onChange: _cache[10] || (_cache[10] = value => updateLeft(value as number)),\n style: {\"flex\":\"4\"}\n }, null, 8, [\"value\"]),\n _hoisted_10,\n _createVNode(_component_InputNumber, {\n step: 5,\n value: top.value,\n onChange: _cache[11] || (_cache[11] = value => updateTop(value as number)),\n style: {\"flex\":\"4\"}\n }, null, 8, [\"value\"])\n ]),\n _hoisted_11,\n (_unref(handleElement)!.type !== 'line')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_12, [\n _hoisted_13,\n _createVNode(_component_InputNumber, {\n min: _unref(minSize),\n max: 1500,\n step: 5,\n value: width.value,\n onChange: _cache[12] || (_cache[12] = value => updateWidth(value as number)),\n style: {\"flex\":\"4\"}\n }, null, 8, [\"min\", \"value\"]),\n (['image', 'shape', 'audio'].includes(_unref(handleElement)!.type))\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (fixedRatio.value)\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) => (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) => (updateFixedRatio(true)))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]))\n ], 64))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_14)),\n _createVNode(_component_InputNumber, {\n min: _unref(minSize),\n max: 800,\n step: 5,\n disabled: _unref(handleElement)!.type === 'text',\n value: height.value,\n onChange: _cache[15] || (_cache[15] = value => 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(_unref(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) => (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) => (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: rotate.value,\n onChange: _cache[18] || (_cache[18] = value => updateRotate(value as number)),\n style: {\"flex\":\"4\"}\n }, null, 8, [\"value\"])\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./ElementPositionPanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementPositionPanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementPositionPanel.vue?vue&type=style&index=0&id=6bf6c951&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6bf6c951\"]])\n\nexport default __exports__","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]","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-2f69234f\"),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\nimport { computed, 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\ntype AnimationType = 'in' | 'out' | 'attention'\ninterface TabItem {\n key: AnimationType\n label: string\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementAnimationPanel',\n setup(__props) {\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\nconst animationTypes: AnimationType[] = ['in', 'out', 'attention']\n\nconst slidesStore = useSlidesStore()\nconst { handleElement, handleElementId } = storeToRefs(useMainStore())\nconst { currentSlide, formatedAnimations, currentSlideAnimations } = storeToRefs(slidesStore)\n\nconst tabs: TabItem[] = [\n { key: 'in', label: '入场' },\n { key: 'out', label: '退场' },\n { key: 'attention', label: '强调' },\n]\nconst activeTab = ref('in')\n\nwatch(() => handleElementId.value, () => {\n animationPoolVisible.value = false\n})\n\nconst hoverPreviewAnimation = ref('')\nconst animationPoolVisible = ref(false)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\n// 当前页面的动画列表\nconst 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// 当前选中元素的入场动画信息\nconst handleElementAnimation = computed(() => {\n const animations = currentSlideAnimations.value\n const animation = animations.filter(item => item.elId === handleElementId.value)\n return animation || []\n})\n\n// 删除元素动画\nconst deleteAnimation = (id: string) => {\n const animations = currentSlideAnimations.value.filter(item => item.id !== id)\n slidesStore.updateSlide({ animations })\n addHistorySnapshot()\n}\n\n// 拖拽修改动画顺序后同步数据\nconst 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// 执行动画预览\nconst 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// 修改元素动画持续时间\nconst 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// 修改触发方式\nconst 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// 修改元素动画,并执行一次预览\nconst 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\nconst handleAnimationId = ref('')\n// 添加元素动画,并执行一次预览\nconst 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后再移除遮罩层,否则打开面板后迅速滑入鼠标预览会导致抖动\nconst popoverMaskHide = ref(false)\nconst handlePopoverVisibleChange = (visible: boolean) => {\n if (visible) {\n setTimeout(() => popoverMaskHide.value = true, 600)\n }\n else popoverMaskHide.value = false\n}\n\nconst openAnimationPool = (elementId: string) => {\n animationPoolVisible.value = true\n handleAnimationId.value = elementId\n handlePopoverVisibleChange(true)\n}\n\nconst animations = {\n in: ENTER_ANIMATIONS,\n out: EXIT_ANIMATIONS,\n attention: ATTENTION_ANIMATIONS,\n}\n\nreturn (_ctx: any,_cache: 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\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(handleElement))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createVNode(_component_Popover, {\n trigger: \"click\",\n visible: animationPoolVisible.value,\n \"onUpdate:visible\": _cache[2] || (_cache[2] = ($event: any) => ((animationPoolVisible).value = $event)),\n onVisibleChange: _cache[3] || (_cache[3] = visible => handlePopoverVisibleChange(visible))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(tabs, (tab) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass(['tab', tab.key, { 'active': activeTab.value === tab.key }]),\n key: tab.key,\n onClick: ($event: any) => (activeTab.value = tab.key)\n }, _toDisplayString(tab.label), 11, _hoisted_4)\n }), 64))\n ]),\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(animationTypes, (key) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (activeTab.value === key)\n ? (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['animation-pool', key]),\n key: key\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(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) => (hoverPreviewAnimation.value = item.value),\n onMouseleave: _cache[0] || (_cache[0] = ($event: any) => (hoverPreviewAnimation.value = '')),\n onClick: ($event: any) => (addAnimation(key, item.value))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"animation-box\", [\n `${_unref(ANIMATION_CLASS_PREFIX)}animated`,\n `${_unref(ANIMATION_CLASS_PREFIX)}fast`,\n hoverPreviewAnimation.value === item.value && `${_unref(ANIMATION_CLASS_PREFIX)}${item.value}`,\n ]])\n }, _toDisplayString(item.name), 3)\n ], 40, _hoisted_7))\n }), 128))\n ])\n ]))\n }), 128)),\n (!popoverMaskHide.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8))\n : _createCommentVNode(\"\", true)\n ], 2))\n : _createCommentVNode(\"\", true)\n ], 64))\n }), 64))\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"element-animation-btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (handleAnimationId.value = ''))\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(_unref(Draggable), {\n class: \"animation-sequence\",\n modelValue: _unref(animationSequence),\n animation: 300,\n scroll: true,\n scrollSensitivity: 50,\n handle: \".sequence-content\",\n onEnd: handleDragEnd,\n itemKey: \"id\"\n }, {\n item: _withCtx(({ element }) => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"sequence-item\", [element.type, { 'active': _unref(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) => (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) => (deleteAnimation(element.id))\n }, null, 8, [\"onClick\"])\n ]),\n _: 2\n }, 1032, [\"mouseEnterDelay\"])\n ])\n ]),\n (_unref(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 => 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 => 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) => (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\"])\n ]))\n}\n}\n\n})","import script from \"./ElementAnimationPanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementAnimationPanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementAnimationPanel.vue?vue&type=style&index=0&id=2f69234f&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2f69234f\"]])\n\nexport default __exports__","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]","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, 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-e0bbbd9e\"),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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'SlideDesignPanel',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { availableFonts } = storeToRefs(useMainStore())\nconst { slides, currentSlide, viewportRatio, theme } = storeToRefs(slidesStore)\n\nconst 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\nconst { addHistorySnapshot } = useHistorySnapshot()\n\n// 设置背景模式:纯色、图片、渐变色\nconst 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// 设置背景图片\nconst updateBackground = (props: Partial) => {\n slidesStore.updateSlide({ background: { ...background.value, ...props } })\n addHistorySnapshot()\n}\n\n// 上传背景图片\nconst uploadBackgroundImage = (files: FileList) => {\n const imageFile = files[0]\n if (!imageFile) return\n getImageDataURL(imageFile).then(dataURL => updateBackground({ image: dataURL }))\n}\n\n// 应用当前页背景到全部页面\nconst 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// 设置主题\nconst updateTheme = (themeProps: Partial) => {\n slidesStore.setTheme(themeProps)\n}\n\n// 将当前主题应用到全部页面\nconst 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// 是否显示预设主题\nconst showPresetThemes = ref(true)\nconst togglePresetThemesVisible = () => {\n showPresetThemes.value = !showPresetThemes.value\n}\n\n// 设置画布尺寸(宽高比例)\nconst updateViewportRatio = (value: number) => {\n slidesStore.setViewportRatio(value)\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\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: _unref(background).type,\n onChange: _cache[0] || (_cache[0] = value => 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 (_unref(background).type === 'solid')\n ? (_openBlock(), _createBlock(_component_Popover, {\n key: 0,\n trigger: \"click\"\n }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _unref(background).color,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = color => updateBackground({ color }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: _unref(background).color || '#fff',\n style: {\"flex\":\"10\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n }))\n : (_unref(background).type === 'image')\n ? (_openBlock(), _createBlock(_component_Select, {\n key: 1,\n style: {\"flex\":\"10\"},\n value: _unref(background).imageSize || 'cover',\n onChange: _cache[2] || (_cache[2] = value => 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: _unref(background).gradientType,\n onChange: _cache[3] || (_cache[3] = value => 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 (_unref(background).type === 'image')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createVNode(_component_FileInput, {\n onChange: _cache[4] || (_cache[4] = files => uploadBackgroundImage(files))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", {\n class: \"content\",\n style: _normalizeStyle({ backgroundImage: `url(${_unref(background).image})` })\n }, [\n _createVNode(_component_IconPlus)\n ], 4)\n ])\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(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: _unref(background).gradientColor![0],\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = value => updateBackground({ gradientColor: [value, _unref(background).gradientColor![1]] }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: _unref(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: _unref(background).gradientColor![1],\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = value => updateBackground({ gradientColor: [_unref(background).gradientColor![0], value] }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: _unref(background).gradientColor![1],\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n (_unref(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: _unref(background).gradientRotate,\n onChange: _cache[7] || (_cache[7] = value => 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) => (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: _unref(viewportRatio),\n onChange: _cache[9] || (_cache[9] = value => 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: _unref(theme).fontName,\n onChange: _cache[10] || (_cache[10] = value => updateTheme({ fontName: value as string }))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOptGroup, { label: \"系统字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(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(_unref(WEB_FONTS), (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: _unref(theme).fontColor,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = value => updateTheme({ fontColor: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: _unref(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: _unref(theme).backgroundColor,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = value => updateTheme({ backgroundColor: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: _unref(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: _unref(theme).themeColor,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = value => updateTheme({ themeColor: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: _unref(theme).themeColor,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"title dropdown\", { 'active': showPresetThemes.value }]),\n onClick: _cache[14] || (_cache[14] = ($event: any) => (togglePresetThemesVisible())),\n style: {\"margin-top\":\"20px\"}\n }, [\n _hoisted_38,\n _createVNode(_component_IconDown, { class: \"icon\" })\n ], 2),\n (showPresetThemes.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_39, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(PRESET_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) => (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) => (applyThemeAllSlide()))\n }, {\n default: _withCtx(() => [\n _hoisted_43\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","import script from \"./SlideDesignPanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./SlideDesignPanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./SlideDesignPanel.vue?vue&type=style&index=0&id=e0bbbd9e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-e0bbbd9e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, 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-577ae912\"),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\nimport { computed } 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'SlideAnimationPanel',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { slides, currentSlide } = storeToRefs(slidesStore)\n\nconst currentTurningMode = computed(() => currentSlide.value.turningMode || 'slideY')\n\nconst animations: Animations[] = [\n { label: '无', value: 'no' },\n { label: '淡入淡出', value: 'fade' },\n { label: '左右推移', value: 'slideX' },\n { label: '上下推移', value: 'slideY' },\n]\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\n// 修改播放时的切换页面方式\nconst updateTurningMode = (mode: TurningMode) => {\n if (mode === currentTurningMode.value) return\n slidesStore.updateSlide({ turningMode: mode })\n addHistorySnapshot()\n}\n\n// 将当前页的切换页面方式应用到全部页面\nconst 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\nreturn (_ctx: any,_cache: any) => {\n const _component_Button = _resolveComponent(\"Button\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(animations, (item) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"animation-item\", { 'active': _unref(currentTurningMode) === item.value }]),\n key: item.label,\n onClick: ($event: any) => (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 }), 64))\n ]),\n _createVNode(_component_Button, {\n style: {\"width\":\"100%\"},\n onClick: _cache[0] || (_cache[0] = ($event: any) => (applyAllSlide()))\n }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./SlideAnimationPanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./SlideAnimationPanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./SlideAnimationPanel.vue?vue&type=style&index=0&id=577ae912&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-577ae912\"]])\n\nexport default __exports__","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}","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, unref as _unref, 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-0d3881c5\"),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\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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MultiPositionPanel',\n setup(__props) {\n\nconst { canCombine, combineElements, uncombineElements } = useCombineElement()\nconst { alignActiveElement } = useAlignActiveElement()\nconst { alignElementToCanvas } = useAlignElementToCanvas()\nconst { displayItemCount, uniformHorizontalDisplay, uniformVerticalDisplay } = useUniformDisplayElement()\n\n// 多选元素对齐,需要先判断当前所选中的元素状态:\n// 如果所选元素为一组组合元素,则将它对齐到画布;\n// 如果所选元素不是组合元素或不止一组元素(即当前为可组合状态),则将这多个(多组)元素相互对齐。\nconst alignElement = (command: ElementAlignCommands) => {\n if (canCombine.value) alignActiveElement(command)\n else alignElementToCanvas(command)\n}\n\nreturn (_ctx: any,_cache: 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) => (alignElement(_unref(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) => (alignElement(_unref(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) => (alignElement(_unref(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) => (alignElement(_unref(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) => (alignElement(_unref(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) => (alignElement(_unref(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 (_unref(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) => (_unref(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) => (_unref(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: !_unref(canCombine),\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_unref(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: _unref(canCombine),\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_unref(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}\n}\n\n})","import script from \"./MultiPositionPanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MultiPositionPanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MultiPositionPanel.vue?vue&type=style&index=0&id=0d3881c5&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0d3881c5\"]])\n\nexport default __exports__","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]","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-ba0c96fc\"),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\nimport { computed, ref } from 'vue'\nimport { SYMBOL_LIST } from '@/configs/symbol'\nimport emitter, { EmitterEvents } from '@/utils/emitter'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'SymbolPanel',\n setup(__props) {\n\nconst selectedSymbolKey = ref(SYMBOL_LIST[0].key)\nconst symbolPool = computed(() => {\n const selectedSymbol = SYMBOL_LIST.find(item => item.key === selectedSymbolKey.value)\n return selectedSymbol?.children || []\n})\n\nconst selectSymbol = (value: string) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { action: { command: 'insert', value } })\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(SYMBOL_LIST), (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': selectedSymbolKey.value === item.key }]),\n key: item.key,\n onClick: ($event: any) => (selectedSymbolKey.value = item.key)\n }, _toDisplayString(item.label), 11, _hoisted_3))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(symbolPool), (item, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"symbol-item\",\n key: index,\n onClick: ($event: any) => (selectSymbol(item))\n }, [\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(item), 1)\n ], 8, _hoisted_5))\n }), 128))\n ])\n ]))\n}\n}\n\n})","import script from \"./SymbolPanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./SymbolPanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./SymbolPanel.vue?vue&type=style&index=0&id=ba0c96fc&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-ba0c96fc\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-5303bd17\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"toolbar\" }\nconst _hoisted_2 = { class: \"tabs\" }\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = { class: \"content\" }\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst mainStore = useMainStore()\nconst { activeElementIdList, handleElement, toolbarState } = storeToRefs(mainStore)\n\nconst 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})\nconst slideTabs = [\n { label: '设计', value: ToolbarStates.SLIDE_DESIGN },\n { label: '切换', value: ToolbarStates.SLIDE_ANIMATION },\n { label: '动画', value: ToolbarStates.EL_ANIMATION },\n]\nconst multiSelectTabs = [\n { label: '样式', value: ToolbarStates.EL_STYLE },\n { label: '位置', value: ToolbarStates.MULTI_POSITION },\n]\n\nconst setToolbarState = (value: ToolbarStates) => {\n mainStore.setToolbarState(value)\n}\n\nconst currentTabs = computed(() => {\n if (!activeElementIdList.value.length) return slideTabs\n else if (activeElementIdList.value.length > 1) return multiSelectTabs\n return elementTabs.value\n})\n\nwatch(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\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(currentTabs), (tab) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': tab.value === _unref(toolbarState) }]),\n key: tab.value,\n onClick: ($event: any) => (setToolbarState(tab.value))\n }, _toDisplayString(tab.label), 11, _hoisted_3))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_unref(currentPanelComponent))))\n ])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=5303bd17&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5303bd17\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-82b674f6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"remark\" }\nconst _hoisted_2 = [\"value\"]\n\nimport { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n height: {\n type: Number,\n required: true,\n },\n},\n emits: [\"update:height\"],\n setup(__props, { emit }: { emit: ({\n (event: 'update:height', payload: number): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst slidesStore = useSlidesStore()\nconst { currentSlide } = storeToRefs(slidesStore)\n\nconst remark = computed(() => currentSlide.value?.remark || '')\n\nconst handleInput = (e: Event) => {\n const value = (e.target as HTMLTextAreaElement).value\n slidesStore.updateSlide({ remark: value })\n}\n\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"resize-handler\",\n onMousedown: _cache[0] || (_cache[0] = $event => resize($event))\n }, null, 32),\n _createElementVNode(\"textarea\", {\n value: _unref(remark),\n placeholder: \"点击输入演讲者备注\",\n onInput: _cache[1] || (_cache[1] = $event => handleInput($event))\n }, null, 40, _hoisted_2)\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=82b674f6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-82b674f6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-60a953a0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"export-img-dialog\" }\nconst _hoisted_2 = { class: \"thumbnails-view\" }\nconst _hoisted_3 = { class: \"configs\" }\nconst _hoisted_4 = { class: \"row\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"导出格式:\", -1))\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\"JPEG\")\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"PNG\")\nconst _hoisted_8 = { class: \"row\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"导出范围:\", -1))\nconst _hoisted_10 = /*#__PURE__*/_createTextVNode(\"全部\")\nconst _hoisted_11 = /*#__PURE__*/_createTextVNode(\"当前页\")\nconst _hoisted_12 = /*#__PURE__*/_createTextVNode(\"自定义\")\nconst _hoisted_13 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_14 = [\"data-range\"]\nconst _hoisted_15 = { class: \"row\" }\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"图片质量:\", -1))\nconst _hoisted_17 = { class: \"row\" }\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"忽略在线字体:\", -1))\nconst _hoisted_19 = { class: \"config-item\" }\nconst _hoisted_20 = { class: \"btns\" }\nconst _hoisted_21 = /*#__PURE__*/_createTextVNode(\"导出图片\")\nconst _hoisted_22 = /*#__PURE__*/_createTextVNode(\"关闭\")\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ExportImage',\n emits: [\"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst { slides, currentSlide } = storeToRefs(useSlidesStore())\n\nconst imageThumbnailsRef = ref()\nconst rangeType = ref<'all' | 'current' | 'custom'>('all')\nconst range = ref<[number, number]>([1, slides.value.length])\nconst format = ref<'jpeg' | 'png'>('jpeg')\nconst quality = ref(1)\nconst ignoreWebfont = ref(true)\n\nconst 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\nconst { exportImage, exporting } = useExport()\n\nconst expImage = () => {\n if (!imageThumbnailsRef.value) return\n exportImage(imageThumbnailsRef.value, format.value, quality.value, ignoreWebfont.value)\n}\n\nreturn (_ctx: any,_cache: 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_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\", {\n class: \"thumbnails\",\n ref_key: \"imageThumbnailsRef\",\n ref: imageThumbnailsRef\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(renderSlides), (slide) => {\n return (_openBlock(), _createBlock(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_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(_component_RadioGroup, {\n class: \"config-item\",\n value: format.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((format).value = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"50%\"},\n value: \"jpeg\"\n }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n }),\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"50%\"},\n value: \"png\"\n }, {\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_RadioGroup, {\n class: \"config-item\",\n value: rangeType.value,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((rangeType).value = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"33.33%\"},\n value: \"all\"\n }, {\n default: _withCtx(() => [\n _hoisted_10\n ]),\n _: 1\n }),\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"33.33%\"},\n value: \"current\"\n }, {\n default: _withCtx(() => [\n _hoisted_11\n ]),\n _: 1\n }),\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"33.33%\"},\n value: \"custom\"\n }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n (rangeType.value === 'custom')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createElementVNode(\"div\", {\n class: \"title\",\n \"data-range\": `(${range.value[0]} ~ ${range.value[1]})`\n }, \"自定义范围:\", 8, _hoisted_14),\n _createVNode(_component_Slider, {\n class: \"config-item\",\n range: \"\",\n min: 1,\n max: _unref(slides).length,\n step: 1,\n value: range.value,\n \"onUpdate:value\": _cache[2] || (_cache[2] = ($event: any) => ((range).value = $event))\n }, null, 8, [\"max\", \"value\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_15, [\n _hoisted_16,\n _createVNode(_component_Slider, {\n class: \"config-item\",\n min: 0,\n max: 1,\n step: 0.1,\n value: quality.value,\n \"onUpdate:value\": _cache[3] || (_cache[3] = ($event: any) => ((quality).value = $event))\n }, null, 8, [\"step\", \"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_17, [\n _hoisted_18,\n _createElementVNode(\"div\", _hoisted_19, [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"导出时默认忽略在线字体,若您在幻灯片中使用了在线字体,且希望导出后保留相关样式,可选择关闭【忽略在线字体】选项,但要注意这将会增加导出用时。\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Switch, {\n checked: ignoreWebfont.value,\n \"onUpdate:checked\": _cache[4] || (_cache[4] = ($event: any) => ((ignoreWebfont).value = $event))\n }, null, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_20, [\n _createVNode(_component_Button, {\n class: \"btn export\",\n type: \"primary\",\n onClick: _cache[5] || (_cache[5] = ($event: any) => (expImage()))\n }, {\n default: _withCtx(() => [\n _hoisted_21\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n class: \"btn close\",\n onClick: _cache[6] || (_cache[6] = ($event: any) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _hoisted_22\n ]),\n _: 1\n })\n ]),\n _createVNode(_component_FullscreenSpin, {\n loading: _unref(exporting),\n tip: \"正在导出...\"\n }, null, 8, [\"loading\"])\n ]))\n}\n}\n\n})","import script from \"./ExportImage.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ExportImage.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ExportImage.vue?vue&type=style&index=0&id=60a953a0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-60a953a0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-1bc24666\"),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\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useExport from '@/hooks/useExport'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ExportJSON',\n emits: [\"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst { slides } = storeToRefs(useSlidesStore())\nconst { exportJSON } = useExport()\n\nreturn (_ctx: any,_cache: 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(_unref(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) => (_unref(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) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","import script from \"./ExportJSON.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ExportJSON.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ExportJSON.vue?vue&type=style&index=0&id=1bc24666&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1bc24666\"]])\n\nexport default __exports__","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}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-15b57798\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"export-pdf-dialog\" }\nconst _hoisted_2 = { class: \"thumbnails-view\" }\nconst _hoisted_3 = { class: \"configs\" }\nconst _hoisted_4 = { class: \"row\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"导出范围:\", -1))\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\"全部幻灯片\")\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"当前幻灯片\")\nconst _hoisted_8 = { class: \"row\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"每页数量:\", -1))\nconst _hoisted_10 = /*#__PURE__*/_createTextVNode(\"1\")\nconst _hoisted_11 = /*#__PURE__*/_createTextVNode(\"2\")\nconst _hoisted_12 = /*#__PURE__*/_createTextVNode(\"3\")\nconst _hoisted_13 = { class: \"row\" }\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"边缘留白:\", -1))\nconst _hoisted_15 = { class: \"config-item\" }\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"tip\" }, \" 注意:若打印预览与实际样式不一致,请在弹出的打印窗口中勾选【背景图形】选项。 \", -1))\nconst _hoisted_17 = { class: \"btns\" }\nconst _hoisted_18 = /*#__PURE__*/_createTextVNode(\"打印 / 导出 PDF\")\nconst _hoisted_19 = /*#__PURE__*/_createTextVNode(\"关闭\")\n\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ExportPDF',\n emits: [\"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst { slides, currentSlide } = storeToRefs(useSlidesStore())\n\nconst pdfThumbnailsRef = ref()\nconst rangeType = ref<'all' | 'current'>('all')\nconst count = ref(1)\nconst padding = ref(true)\n\nconst 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\nreturn (_ctx: any,_cache: any) => {\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\", {\n class: \"thumbnails\",\n ref_key: \"pdfThumbnailsRef\",\n ref: pdfThumbnailsRef\n }, [\n (rangeType.value === 'current')\n ? (_openBlock(), _createBlock(ThumbnailSlide, {\n key: 0,\n class: \"thumbnail\",\n slide: _unref(currentSlide),\n size: 1600\n }, null, 8, [\"slide\"]))\n : (_openBlock(true), _createElementBlock(_Fragment, { key: 1 }, _renderList(_unref(slides), (slide, index) => {\n return (_openBlock(), _createBlock(ThumbnailSlide, {\n class: _normalizeClass([\"thumbnail\", { 'break-page': (index + 1) % count.value === 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_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(_component_RadioGroup, {\n class: \"config-item\",\n value: rangeType.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((rangeType).value = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"50%\"},\n value: \"all\"\n }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n }),\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"50%\"},\n value: \"current\"\n }, {\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_Select, {\n class: \"config-item\",\n value: count.value,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((count).value = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: 1 }, {\n default: _withCtx(() => [\n _hoisted_10\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: 2 }, {\n default: _withCtx(() => [\n _hoisted_11\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: 3 }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_13, [\n _hoisted_14,\n _createElementVNode(\"div\", _hoisted_15, [\n _createVNode(_component_Switch, {\n checked: padding.value,\n \"onUpdate:checked\": _cache[2] || (_cache[2] = ($event: any) => ((padding).value = $event))\n }, null, 8, [\"checked\"])\n ])\n ]),\n _hoisted_16\n ]),\n _createElementVNode(\"div\", _hoisted_17, [\n _createVNode(_component_Button, {\n class: \"btn export\",\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (expPDF()))\n }, {\n default: _withCtx(() => [\n _hoisted_18\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n class: \"btn close\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _hoisted_19\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","import script from \"./ExportPDF.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ExportPDF.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ExportPDF.vue?vue&type=style&index=0&id=15b57798&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-15b57798\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3fef9be0\"),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\nimport { computed, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useExport from '@/hooks/useExport'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ExportPPTX',\n emits: [\"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst { slides, currentSlide } = storeToRefs(useSlidesStore())\n\nconst { exportPPTX, exporting } = useExport()\n\nconst rangeType = ref<'all' | 'current' | 'custom'>('all')\nconst range = ref<[number, number]>([1, slides.value.length])\nconst masterOverwrite = ref(true)\n\nconst 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\nreturn (_ctx: any,_cache: 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: rangeType.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((rangeType).value = $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 (rangeType.value === 'custom')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createElementVNode(\"div\", {\n class: \"title\",\n \"data-range\": `(${range.value[0]} ~ ${range.value[1]})`\n }, \"自定义范围:\", 8, _hoisted_9),\n _createVNode(_component_Slider, {\n class: \"config-item\",\n range: \"\",\n min: 1,\n max: _unref(slides).length,\n step: 1,\n value: range.value,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((range).value = $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: masterOverwrite.value,\n \"onUpdate:checked\": _cache[2] || (_cache[2] = ($event: any) => ((masterOverwrite).value = $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) => (_unref(exportPPTX)(_unref(selectedSlides), masterOverwrite.value)))\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) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _hoisted_15\n ]),\n _: 1\n })\n ]),\n _createVNode(_component_FullscreenSpin, {\n loading: _unref(exporting),\n tip: \"正在导出...\"\n }, null, 8, [\"loading\"])\n ]))\n}\n}\n\n})","import script from \"./ExportPPTX.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ExportPPTX.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ExportPPTX.vue?vue&type=style&index=0&id=3fef9be0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3fef9be0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-e2b465d2\"),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\nimport { computed, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useExport from '@/hooks/useExport'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ExportSpecificFile',\n emits: [\"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst { slides, currentSlide } = storeToRefs(useSlidesStore())\n\nconst { exportSpecificFile } = useExport()\n\nconst rangeType = ref<'all' | 'current' | 'custom'>('all')\nconst range = ref<[number, number]>([1, slides.value.length])\n\nconst 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\nreturn (_ctx: any,_cache: 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: rangeType.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((rangeType).value = $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 (rangeType.value === 'custom')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createElementVNode(\"div\", {\n class: \"title\",\n \"data-range\": `(${range.value[0]} ~ ${range.value[1]})`\n }, \"自定义范围:\", 8, _hoisted_9),\n _createVNode(_component_Slider, {\n class: \"config-item\",\n range: \"\",\n min: 1,\n max: _unref(slides).length,\n step: 1,\n value: range.value,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((range).value = $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) => (_unref(exportSpecificFile)(_unref(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) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _hoisted_13\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","import script from \"./ExportSpecificFile.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ExportSpecificFile.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ExportSpecificFile.vue?vue&type=style&index=0&id=e2b465d2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-e2b465d2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, 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-1f8f1a8b\"),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\nimport { computed } 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst mainStore = useMainStore()\nconst { dialogForExport } = storeToRefs(mainStore)\n\nconst setDialogForExport = mainStore.setDialogForExport\n\nconst 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\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(tabs, (tab) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': tab.key === _unref(dialogForExport) }]),\n key: tab.key,\n onClick: ($event: any) => (_unref(setDialogForExport)(tab.key))\n }, _toDisplayString(tab.label), 11, _hoisted_3)\n }), 64))\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_unref(currentDialogComponent)), {\n onClose: _cache[0] || (_cache[0] = ($event: any) => (_unref(setDialogForExport)('')))\n }, null, 32))\n ])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=1f8f1a8b&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1f8f1a8b\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, unref as _unref, resolveComponent as _resolveComponent, 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-328e1a4e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"pptist-editor\" }\nconst _hoisted_2 = { class: \"layout-content\" }\nconst _hoisted_3 = { class: \"layout-content-center\" }\n\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst mainStore = useMainStore()\nconst { dialogForExport } = storeToRefs(mainStore)\nconst closeExportDialog = () => mainStore.setDialogForExport('')\n\nconst remarkHeight = ref(40)\n\nuseGlobalHotkey()\nusePasteEvent()\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(EditorHeader, { class: \"layout-header\" }),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(Thumbnails, { class: \"layout-content-left\" }),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(CanvasTool, { class: \"center-top\" }),\n _createVNode(Canvas, {\n class: \"center-body\",\n style: _normalizeStyle({ height: `calc(100% - ${remarkHeight.value + 40}px)` })\n }, null, 8, [\"style\"]),\n _createVNode(Remark, {\n class: \"center-bottom\",\n height: remarkHeight.value,\n \"onUpdate:height\": _cache[0] || (_cache[0] = ($event: any) => ((remarkHeight).value = $event)),\n style: _normalizeStyle({ height: `${remarkHeight.value}px` })\n }, null, 8, [\"height\", \"style\"])\n ]),\n _createVNode(Toolbar, { class: \"layout-content-right\" })\n ])\n ]),\n _createVNode(_component_Modal, {\n visible: !!_unref(dialogForExport),\n footer: null,\n centered: \"\",\n closable: false,\n width: 680,\n destroyOnClose: \"\",\n onCancel: _cache[1] || (_cache[1] = ($event: any) => (closeExportDialog()))\n }, {\n default: _withCtx(() => [\n _createVNode(ExportDialog)\n ]),\n _: 1\n }, 8, [\"visible\"])\n ], 64))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=328e1a4e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-328e1a4e\"]])\n\nexport default __exports__","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 { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { PropType } from 'vue'\nimport { PPTChartElement } from '@/types/slides'\n\nimport BaseChartElement from './BaseChartElement.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ScreenChartElement',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(BaseChartElement, {\n class: \"screen-element-chart\",\n elementInfo: __props.elementInfo\n }, null, 8, [\"elementInfo\"]))\n}\n}\n\n})","import script from \"./ScreenChartElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ScreenChartElement.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-76457308\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ScreenVideoElement',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst { currentSlide } = storeToRefs(useSlidesStore())\n\nconst scale = inject(injectKeySlideScale) || ref(1)\nconst slideId = inject(injectKeySlideId) || ref('')\n\nconst inCurrentSlide = computed(() => currentSlide.value.id === slideId.value)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"screen-element-video\",\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n height: __props.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_unref(inCurrentSlide))\n ? (_openBlock(), _createBlock(VideoPlayer, {\n key: 0,\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n src: __props.elementInfo.src,\n poster: __props.elementInfo.poster,\n scale: _unref(scale)\n }, null, 8, [\"width\", \"height\", \"src\", \"poster\", \"scale\"]))\n : _createCommentVNode(\"\", true)\n ])\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./ScreenVideoElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ScreenVideoElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ScreenVideoElement.vue?vue&type=style&index=0&id=76457308&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-76457308\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-1172b8ee\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ScreenAudioElement',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst { viewportRatio, currentSlide } = storeToRefs(useSlidesStore())\n\nconst scale = inject(injectKeySlideScale) || ref(1)\nconst slideId = inject(injectKeySlideId) || ref('')\n\nconst inCurrentSlide = computed(() => currentSlide.value.id === slideId.value)\n\nconst audioIconSize = computed(() => {\n return Math.min(props.elementInfo.width, props.elementInfo.height) + 'px'\n})\nconst 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\nconst audioPlayerRef = ref()\nconst toggle = () => {\n if (!audioPlayerRef.value) return\n audioPlayerRef.value.toggle()\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconVolumeNotice = _resolveComponent(\"IconVolumeNotice\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"screen-element-audio\",\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n height: __props.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_IconVolumeNotice, {\n class: \"audio-icon\",\n style: _normalizeStyle({\n fontSize: _unref(audioIconSize),\n color: __props.elementInfo.color,\n }),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (toggle()))\n }, null, 8, [\"style\"]),\n (_unref(inCurrentSlide))\n ? (_openBlock(), _createBlock(AudioPlayer, {\n key: 0,\n class: \"audio-player\",\n ref_key: \"audioPlayerRef\",\n ref: audioPlayerRef,\n style: _normalizeStyle({ ..._unref(audioPlayerPosition) }),\n src: __props.elementInfo.src,\n loop: __props.elementInfo.loop,\n autoplay: __props.elementInfo.autoplay,\n scale: _unref(scale)\n }, null, 8, [\"style\", \"src\", \"loop\", \"autoplay\", \"scale\"]))\n : _createCommentVNode(\"\", true)\n ])\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./ScreenAudioElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ScreenAudioElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ScreenAudioElement.vue?vue&type=style&index=0&id=1172b8ee&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1172b8ee\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-a15cc1d8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"id\", \"title\"]\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ScreenElement',\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\nconst props = __props\n\n\n\nconst 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\nconst { formatedAnimations, theme } = storeToRefs(useSlidesStore())\n\n// 判断元素是否需要等待执行入场动画:等待执行入场的元素需要先隐藏\nconst 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// 打开元素绑定的超链接\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"screen-element\", { 'link': __props.elementInfo.link }]),\n id: `screen-element-${__props.elementInfo.id}`,\n style: _normalizeStyle({\n zIndex: __props.elementIndex,\n color: _unref(theme).fontColor,\n fontFamily: _unref(theme).fontName,\n visibility: _unref(needWaitAnimation) ? 'hidden' : 'visible',\n }),\n title: __props.elementInfo.link?.target || '',\n onClick: _cache[0] || (_cache[0] = ($event: any) => (openLink()))\n }, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_unref(currentElementComponent)), { elementInfo: __props.elementInfo }, null, 8, [\"elementInfo\"]))\n ], 14, _hoisted_1))\n}\n}\n\n})","import script from \"./ScreenElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ScreenElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ScreenElement.vue?vue&type=style&index=0&id=a15cc1d8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-a15cc1d8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock } from \"vue\"\n\nimport { computed, PropType, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ScreenSlide',\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\nconst props = __props\n\n\n\nconst { viewportRatio } = storeToRefs(useSlidesStore())\n\nconst background = computed(() => props.slide.background)\nconst { backgroundStyle } = useSlideBackgroundStyle(background)\n\nconst slideId = computed(() => props.slide.id)\nprovide(injectKeySlideId, slideId)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"screen-slide\",\n style: _normalizeStyle({\n width: _unref(VIEWPORT_SIZE) + 'px',\n height: _unref(VIEWPORT_SIZE) * _unref(viewportRatio) + 'px',\n transform: `scale(${__props.scale})`,\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"background\",\n style: _normalizeStyle({ ..._unref(backgroundStyle) })\n }, null, 4),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(__props.slide.elements, (element, index) => {\n return (_openBlock(), _createBlock(ScreenElement, {\n key: element.id,\n elementInfo: element,\n elementIndex: index + 1,\n animationIndex: __props.animationIndex,\n turnSlideToId: __props.turnSlideToId,\n manualExitFullscreen: __props.manualExitFullscreen\n }, null, 8, [\"elementInfo\", \"elementIndex\", \"animationIndex\", \"turnSlideToId\", \"manualExitFullscreen\"]))\n }), 128))\n ], 4))\n}\n}\n\n})","import script from \"./ScreenSlide.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ScreenSlide.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ScreenSlide.vue?vue&type=style&index=0&id=7cf7f9e7&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7cf7f9e7\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, 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-77a3e620\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"screen-slide-list\" }\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ScreenSlideList',\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\nconst props = __props\n\n\n\nconst { slides, slideIndex, currentSlide } = storeToRefs(useSlidesStore())\n\nconst scale = computed(() => props.slideWidth / VIEWPORT_SIZE)\nprovide(injectKeySlideScale, scale)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(slides), (slide, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\n 'slide-item', \n `turning-mode-${slide.turningMode || 'slideY'}`,\n {\n 'current': index === _unref(slideIndex),\n 'before': index < _unref(slideIndex),\n 'after': index > _unref(slideIndex),\n 'hide': (index === _unref(slideIndex) - 1 || index === _unref(slideIndex) + 1) && slide.turningMode !== _unref(currentSlide).turningMode,\n }\n ]),\n key: slide.id\n }, [\n (Math.abs(_unref(slideIndex) - index) < 2 || slide.animations?.length)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"slide-content\",\n style: _normalizeStyle({\n width: __props.slideWidth + 'px',\n height: __props.slideHeight + 'px',\n })\n }, [\n _createVNode(ScreenSlide, {\n slide: slide,\n scale: _unref(scale),\n animationIndex: __props.animationIndex,\n turnSlideToId: __props.turnSlideToId,\n manualExitFullscreen: __props.manualExitFullscreen\n }, null, 8, [\"slide\", \"scale\", \"animationIndex\", \"turnSlideToId\", \"manualExitFullscreen\"])\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 2))\n }), 128))\n ]))\n}\n}\n\n})","import script from \"./ScreenSlideList.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ScreenSlideList.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ScreenSlideList.vue?vue&type=style&index=0&id=77a3e620&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-77a3e620\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, unref as _unref, 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-b7c6c0cc\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'SlideThumbnails',\n props: {\n turnSlideToIndex: {\n type: Function as PropType<(index: number) => void>,\n required: true,\n },\n},\n emits: [\"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst { slides, slideIndex } = storeToRefs(useSlidesStore())\n\nconst { slidesLoadLimit } = useLoadSlides()\n\nconst turnSlide = (index: number) => {\n props.turnSlideToIndex(index)\n emit('close')\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconArrowCircleLeft = _resolveComponent(\"IconArrowCircleLeft\")!\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) => (emit('close')))\n })\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(slides), (slide, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"thumbnail\", { 'active': index === _unref(slideIndex) }]),\n key: slide.id,\n onClick: ($event: any) => (turnSlide(index))\n }, [\n _createVNode(ThumbnailSlide, {\n slide: slide,\n size: 150,\n visible: index < _unref(slidesLoadLimit)\n }, null, 8, [\"slide\", \"visible\"])\n ], 10, _hoisted_4))\n }), 128))\n ])\n ]))\n}\n}\n\n})","import script from \"./SlideThumbnails.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./SlideThumbnails.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./SlideThumbnails.vue?vue&type=style&index=0&id=b7c6c0cc&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b7c6c0cc\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, 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-1d4eb7f0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"blackboard\"\n}\n\nimport { computed, onMounted, onUnmounted, PropType, ref, watch } from 'vue'\nimport { throttle } from 'lodash'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'WritingBoard',\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, { expose }) {\n\nconst props = __props\n\n\n\nlet ctx: CanvasRenderingContext2D | null = null\nconst writingBoardRef = ref()\nconst canvasRef = ref()\n\nconst penSize = ref(6)\nconst rubberSize = ref(80)\nconst markSize = ref(24)\n\nlet lastPos = {\n x: 0,\n y: 0,\n}\nlet isMouseDown = false\nlet lastTime = 0\nlet lastLineWidth = -1\n\n// 鼠标位置坐标:用于画笔或橡皮位置跟随\nconst mouse = ref({\n x: 0,\n y: 0,\n})\n\n// 鼠标是否处在画布范围内:处在范围内才会显示画笔或橡皮\nconst mouseInCanvas = ref(false)\n\n// 监听更新canvas尺寸\nconst canvasWidth = ref(0)\nconst canvasHeight = ref(0)\n\nconst widthScale = computed(() => canvasRef.value ? canvasWidth.value / canvasRef.value.width : 1)\nconst heightScale = computed(() => canvasRef.value ? canvasHeight.value / canvasRef.value.height : 1)\n\nconst updateCanvasSize = () => {\n if (!writingBoardRef.value) return\n canvasWidth.value = writingBoardRef.value.clientWidth\n canvasHeight.value = writingBoardRef.value.clientHeight\n}\nconst resizeObserver = new ResizeObserver(updateCanvasSize)\nonMounted(() => {\n if (writingBoardRef.value) resizeObserver.observe(writingBoardRef.value)\n})\nonUnmounted(() => {\n if (writingBoardRef.value) resizeObserver.unobserve(writingBoardRef.value)\n})\n\n// 初始化画布\nconst 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}\nonMounted(initCanvas)\n\n// 切换画笔模式时,更新 canvas ctx 配置\nconst 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}\nwatch(() => props.model, updateCtx)\n\n// 绘制画笔墨迹方法\nconst 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// 擦除墨迹方法\nconst 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// 计算鼠标两次移动之间的距离\nconst 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计算绘制速度,速度越快,墨迹越细\nconst 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// 路径操作\nconst 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中的相对位置\nconst 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// 准备开始绘制/擦除墨迹(落笔)\nconst 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// 开始绘制/擦除墨迹(移动)\nconst 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// 结束绘制/擦除墨迹(停笔)\nconst handleMouseup = () => {\n if (!isMouseDown) return\n isMouseDown = false\n}\n\n// 清空画布\nconst clearCanvas = () => {\n if (!ctx || !canvasRef.value) return\n ctx.clearRect(0, 0, canvasRef.value.width, canvasRef.value.height)\n}\n\n// 获取 DataURL\nconst getImageDataURL = () => {\n return canvasRef.value?.toDataURL()\n}\n\n// 设置 DataURL(绘制图片到 canvas)\nconst 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// 滚动鼠标滚轮,调整笔触大小\nconst 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\nexpose({\n clearCanvas,\n getImageDataURL,\n setImageDataURL,\n})\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconWrite = _resolveComponent(\"IconWrite\")!\n const _component_IconHighLight = _resolveComponent(\"IconHighLight\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"writing-board\",\n ref_key: \"writingBoardRef\",\n ref: writingBoardRef\n }, [\n (__props.blackboard)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"canvas\", {\n class: \"canvas\",\n ref_key: \"canvasRef\",\n ref: canvasRef,\n style: _normalizeStyle({\n width: canvasWidth.value + 'px',\n height: canvasHeight.value + 'px',\n }),\n onMousedown: _cache[0] || (_cache[0] = $event => handleMousedown($event)),\n onMousemove: _cache[1] || (_cache[1] = $event => handleMousemove($event)),\n onMouseup: _cache[2] || (_cache[2] = ($event: any) => (handleMouseup())),\n onTouchstart: _cache[3] || (_cache[3] = $event => handleMousedown($event)),\n onTouchmove: _cache[4] || (_cache[4] = $event => handleMousemove($event)),\n onTouchend: _cache[5] || (_cache[5] = ($event: any) => {handleMouseup(); mouseInCanvas.value = false}),\n onMouseleave: _cache[6] || (_cache[6] = ($event: any) => {handleMouseup(); mouseInCanvas.value = false}),\n onMouseenter: _cache[7] || (_cache[7] = ($event: any) => (mouseInCanvas.value = true)),\n onWheel: _cache[8] || (_cache[8] = $event => _unref(mousewheelListener)($event))\n }, null, 36),\n (mouseInCanvas.value)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n (__props.model === 'eraser')\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"eraser\",\n style: _normalizeStyle({\n left: mouse.value.x - rubberSize.value / 2 + 'px',\n top: mouse.value.y - rubberSize.value / 2 + 'px',\n width: rubberSize.value + 'px',\n height: rubberSize.value + 'px',\n })\n }, null, 4))\n : _createCommentVNode(\"\", true),\n (__props.model === 'pen')\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"pen\",\n style: _normalizeStyle({\n left: mouse.value.x - penSize.value / 2 + 'px',\n top: mouse.value.y - penSize.value * 6 + penSize.value / 2 + 'px',\n color: __props.color,\n })\n }, [\n (__props.model === 'pen')\n ? (_openBlock(), _createBlock(_component_IconWrite, {\n key: 0,\n class: \"icon\",\n size: penSize.value * 6\n }, null, 8, [\"size\"]))\n : _createCommentVNode(\"\", true)\n ], 4))\n : _createCommentVNode(\"\", true),\n (__props.model === 'mark')\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 2,\n class: \"pen\",\n style: _normalizeStyle({\n left: mouse.value.x - markSize.value / 2 + 'px',\n top: mouse.value.y + 'px',\n color: __props.color,\n })\n }, [\n (__props.model === 'mark')\n ? (_openBlock(), _createBlock(_component_IconHighLight, {\n key: 0,\n class: \"icon\",\n size: markSize.value * 1.5\n }, null, 8, [\"size\"]))\n : _createCommentVNode(\"\", true)\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 64))\n : _createCommentVNode(\"\", true)\n ], 512))\n}\n}\n\n})","import script from \"./WritingBoard.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./WritingBoard.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./WritingBoard.vue?vue&type=style&index=0&id=1d4eb7f0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1d4eb7f0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, 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-876081a6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"writing-board-tool\" }\nconst _hoisted_2 = { class: \"colors\" }\nconst _hoisted_3 = [\"onClick\"]\n\nimport { PropType, ref, StyleValue } from 'vue'\nimport WritingBoard from '@/components/WritingBoard.vue'\n\ntype WritingBoardModel = 'pen' | 'mark' | 'eraser'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'WritingBoardTool',\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 emits: [\"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst writingBoardColors = ['#000000', '#ffffff', '#1e497b', '#4e81bb', '#e2534d', '#9aba60', '#8165a0', '#47acc5', '#f9974c', '#ffff3a']\n\n\n\n\n\nconst writingBoardRef = ref()\nconst writingBoardColor = ref('#e2534d')\nconst writingBoardModel = ref('pen')\nconst blackboard = ref(false)\n\nconst changeModel = (model: WritingBoardModel) => {\n writingBoardModel.value = model\n}\n\n// 清除画布上的墨迹\nconst clearCanvas = () => {\n writingBoardRef.value!.clearCanvas()\n}\n\n// 修改画笔颜色,如果当前处于橡皮状态则先切换到画笔状态\nconst changeColor = (color: string) => {\n if (writingBoardModel.value === 'eraser') writingBoardModel.value = 'pen'\n writingBoardColor.value = color\n}\n\n// 关闭写字板\nconst closeWritingBoard = () => {\n emit('close')\n}\n\nreturn (_ctx: any,_cache: any) => {\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: __props.slideWidth + 'px',\n height: __props.slideHeight + 'px',\n })\n }, [\n _createVNode(WritingBoard, {\n ref_key: \"writingBoardRef\",\n ref: writingBoardRef,\n color: writingBoardColor.value,\n blackboard: blackboard.value,\n model: writingBoardModel.value\n }, null, 8, [\"color\", \"blackboard\", \"model\"])\n ], 4),\n _createElementVNode(\"div\", {\n class: \"tools\",\n style: _normalizeStyle(__props.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': writingBoardModel.value === 'pen' }]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (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': writingBoardModel.value === 'mark' }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (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': writingBoardModel.value === 'eraser' }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (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) => (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': blackboard.value }]),\n onClick: _cache[4] || (_cache[4] = ($event: any) => (blackboard.value = !blackboard.value))\n }, [\n _createVNode(_component_IconFill, { class: \"icon\" })\n ], 2)\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(writingBoardColors, (color) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"color\", { 'active': color === writingBoardColor.value }]),\n key: color,\n style: _normalizeStyle({ backgroundColor: color }),\n onClick: ($event: any) => (changeColor(color))\n }, null, 14, _hoisted_3)\n }), 64))\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) => (closeWritingBoard()))\n }, [\n _createVNode(_component_IconClose, { class: \"icon\" })\n ])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ], 4)\n ]))\n}\n}\n\n})","import script from \"./WritingBoardTool.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./WritingBoardTool.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./WritingBoardTool.vue?vue&type=style&index=0&id=876081a6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-876081a6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveDirective as _resolveDirective, createVNode as _createVNode, withDirectives as _withDirectives, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, 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-d72d6626\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"tools-left\" }\nconst _hoisted_2 = { class: \"content\" }\n\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseView',\n props: {\n changeViewMode: {\n type: Function as PropType<(mode: 'base' | 'presenter') => void>,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst { slides, slideIndex } = storeToRefs(useSlidesStore())\n\nconst {\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\nconst { slideWidth, slideHeight } = useSlideSize()\nconst { exitScreening } = useScreening()\nconst { fullscreenState, manualExitFullscreen } = useFullscreen()\n\nconst rightToolsVisible = ref(false)\nconst writingBoardToolVisible = ref(false)\nconst slideThumbnailModelVisible = ref(false)\nconst laserPen = ref(false)\n\nconst 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\nreturn (_ctx: any,_cache: any) => {\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': laserPen.value }])\n }, [\n _withDirectives(_createVNode(ScreenSlideList, {\n slideWidth: _unref(slideWidth),\n slideHeight: _unref(slideHeight),\n animationIndex: _unref(animationIndex),\n turnSlideToId: _unref(turnSlideToId),\n manualExitFullscreen: _unref(manualExitFullscreen),\n onWheel: _cache[0] || (_cache[0] = $event => _unref(mousewheelListener)($event)),\n onTouchstart: _cache[1] || (_cache[1] = $event => _unref(touchStartListener)($event)),\n onTouchend: _cache[2] || (_cache[2] = $event => _unref(touchEndListener)($event))\n }, null, 8, [\"slideWidth\", \"slideHeight\", \"animationIndex\", \"turnSlideToId\", \"manualExitFullscreen\"]), [\n [_directive_contextmenu, contextmenus]\n ]),\n (slideThumbnailModelVisible.value)\n ? (_openBlock(), _createBlock(SlideThumbnails, {\n key: 0,\n turnSlideToIndex: _unref(turnSlideToIndex),\n onClose: _cache[3] || (_cache[3] = ($event: any) => (slideThumbnailModelVisible.value = false))\n }, null, 8, [\"turnSlideToIndex\"]))\n : _createCommentVNode(\"\", true),\n (writingBoardToolVisible.value)\n ? (_openBlock(), _createBlock(WritingBoardTool, {\n key: 1,\n slideWidth: _unref(slideWidth),\n slideHeight: _unref(slideHeight),\n onClose: _cache[4] || (_cache[4] = ($event: any) => (writingBoardToolVisible.value = 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) => (_unref(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) => (_unref(execNext)()))\n })\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"tools-right\", { 'visible': rightToolsVisible.value }]),\n onMouseleave: _cache[14] || (_cache[14] = ($event: any) => (rightToolsVisible.value = false)),\n onMouseenter: _cache[15] || (_cache[15] = ($event: any) => (rightToolsVisible.value = true))\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: \"tool-btn page-number\",\n onClick: _cache[7] || (_cache[7] = ($event: any) => (slideThumbnailModelVisible.value = true))\n }, \"幻灯片 \" + _toDisplayString(_unref(slideIndex) + 1) + \" / \" + _toDisplayString(_unref(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) => (writingBoardToolVisible.value = 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': laserPen.value }]),\n onClick: _cache[9] || (_cache[9] = ($event: any) => (laserPen.value = !laserPen.value))\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) => (__props.changeViewMode('presenter')))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: _unref(fullscreenState) ? '退出全屏' : '进入全屏'\n }, {\n default: _withCtx(() => [\n (_unref(fullscreenState))\n ? (_openBlock(), _createBlock(_component_IconOffScreenOne, {\n key: 0,\n class: \"tool-btn\",\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_unref(manualExitFullscreen)()))\n }))\n : (_openBlock(), _createBlock(_component_IconFullScreenOne, {\n key: 1,\n class: \"tool-btn\",\n onClick: _cache[12] || (_cache[12] = ($event: any) => (_unref(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) => (_unref(exitScreening)()))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ])\n ], 34)\n ], 2))\n}\n}\n\n})","import script from \"./BaseView.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseView.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseView.vue?vue&type=style&index=0&id=d72d6626&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-d72d6626\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, unref as _unref, 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-5fba3eec\"),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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PresenterView',\n props: {\n changeViewMode: {\n type: Function as PropType<(mode: 'base' | 'presenter') => void>,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst { slides, slideIndex, viewportRatio, currentSlide } = storeToRefs(useSlidesStore())\n\nconst slideListWrapRef = ref()\nconst thumbnailsRef = ref()\nconst writingBoardToolVisible = ref(false)\nconst laserPen = ref(false)\n\nconst {\n mousewheelListener,\n touchStartListener,\n touchEndListener,\n turnPrevSlide,\n turnNextSlide,\n turnSlideToIndex,\n turnSlideToId,\n animationIndex,\n} = useExecPlay()\n\nconst { slideWidth, slideHeight } = useSlideSize(slideListWrapRef)\nconst { exitScreening } = useScreening()\nconst { slidesLoadLimit } = useLoadSlides()\nconst { fullscreenState, manualExitFullscreen } = useFullscreen()\n\nconst remarkFontSize = ref(16)\nconst currentSlideRemark = computed(() => {\n return parseText2Paragraphs(currentSlide.value.remark || '无备注')\n})\n\nconst handleMousewheelThumbnails = (e: WheelEvent) => {\n if (!thumbnailsRef.value) return\n thumbnailsRef.value.scrollBy(e.deltaY, 0)\n}\n\nconst setRemarkFontSize = (fontSize: number) => {\n if (fontSize < 12 || fontSize > 40) return\n remarkFontSize.value = fontSize\n}\n\nwatch(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\nconst 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\nreturn (_ctx: any,_cache: 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_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) => (__props.changeViewMode('base')))\n }, [\n _createVNode(_component_IconListView, { class: \"tool-icon\" }),\n _hoisted_3\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"tool-btn\", { 'active': writingBoardToolVisible.value }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (writingBoardToolVisible.value = !writingBoardToolVisible.value))\n }, [\n _createVNode(_component_IconWrite, { class: \"tool-icon\" }),\n _hoisted_4\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"tool-btn\", { 'active': laserPen.value }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (laserPen.value = !laserPen.value))\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] = () => _unref(fullscreenState) ? _unref(manualExitFullscreen)() : _unref(enterFullscreen)())\n }, [\n (_unref(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(_unref(fullscreenState) ? '退出全屏' : '全屏'), 1)\n ]),\n _createVNode(_component_Divider, { class: \"divider\" }),\n _createElementVNode(\"div\", {\n class: \"tool-btn\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_unref(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': laserPen.value }]),\n ref_key: \"slideListWrapRef\",\n ref: slideListWrapRef\n }, [\n _withDirectives(_createVNode(ScreenSlideList, {\n slideWidth: _unref(slideWidth),\n slideHeight: _unref(slideHeight),\n animationIndex: _unref(animationIndex),\n turnSlideToId: _unref(turnSlideToId),\n manualExitFullscreen: _unref(manualExitFullscreen),\n onWheel: _cache[5] || (_cache[5] = $event => _unref(mousewheelListener)($event)),\n onTouchstart: _cache[6] || (_cache[6] = $event => _unref(touchStartListener)($event)),\n onTouchend: _cache[7] || (_cache[7] = $event => _unref(touchEndListener)($event))\n }, null, 8, [\"slideWidth\", \"slideHeight\", \"animationIndex\", \"turnSlideToId\", \"manualExitFullscreen\"]), [\n [_directive_contextmenu, contextmenus]\n ]),\n (writingBoardToolVisible.value)\n ? (_openBlock(), _createBlock(WritingBoardTool, {\n key: 0,\n slideWidth: _unref(slideWidth),\n slideHeight: _unref(slideHeight),\n position: {\n left: '75px',\n top: '5px',\n },\n onClose: _cache[8] || (_cache[8] = ($event: any) => (writingBoardToolVisible.value = false))\n }, null, 8, [\"slideWidth\", \"slideHeight\"]))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"div\", {\n class: \"thumbnails\",\n ref_key: \"thumbnailsRef\",\n ref: thumbnailsRef,\n onWheel: _cache[9] || (_cache[9] = _withModifiers($event => handleMousewheelThumbnails($event), [\"prevent\"]))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(slides), (slide, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"thumbnail\", { 'active': index === _unref(slideIndex) }]),\n key: slide.id,\n onClick: ($event: any) => (_unref(turnSlideToIndex)(index))\n }, [\n _createVNode(ThumbnailSlide, {\n slide: slide,\n size: 120 / _unref(viewportRatio),\n visible: index < _unref(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(_unref(slideIndex) + 1) + \" / \" + _toDisplayString(_unref(slides).length), 1)\n ]),\n _createElementVNode(\"div\", {\n class: \"remark-content\",\n style: _normalizeStyle({ fontSize: remarkFontSize.value + 'px' }),\n innerHTML: _unref(currentSlideRemark)\n }, null, 12, _hoisted_12),\n _createElementVNode(\"div\", _hoisted_13, [\n _createElementVNode(\"div\", {\n class: _normalizeClass(['scale-btn', { 'disable': remarkFontSize.value === 12 }]),\n onClick: _cache[10] || (_cache[10] = ($event: any) => (setRemarkFontSize(remarkFontSize.value - 2)))\n }, [\n _createVNode(_component_IconMinus)\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass(['scale-btn', { 'disable': remarkFontSize.value === 40 }]),\n onClick: _cache[11] || (_cache[11] = ($event: any) => (setRemarkFontSize(remarkFontSize.value + 2)))\n }, [\n _createVNode(_component_IconPlus)\n ], 2)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./PresenterView.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./PresenterView.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./PresenterView.vue?vue&type=style&index=0&id=5fba3eec&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5fba3eec\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-6bf3d190\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"pptist-screen\" }\n\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst viewMode = ref<'base' | 'presenter'>('base')\n\nconst changeViewMode = (mode: 'base' | 'presenter') => {\n viewMode.value = mode\n}\n\nconst { exitScreening } = useScreening()\n\n// 快捷键退出放映\nconst keydownListener = (e: KeyboardEvent) => {\n const key = e.key.toUpperCase()\n if (key === KEYS.ESC) exitScreening()\n}\n\nonMounted(() => document.addEventListener('keydown', keydownListener))\nonUnmounted(() => document.removeEventListener('keydown', keydownListener))\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (viewMode.value === 'base')\n ? (_openBlock(), _createBlock(BaseView, {\n key: 0,\n changeViewMode: changeViewMode\n }))\n : (viewMode.value === 'presenter')\n ? (_openBlock(), _createBlock(PresenterView, {\n key: 1,\n changeViewMode: changeViewMode\n }))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=6bf3d190&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6bf3d190\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MobileEditableElement',\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\nconst props = __props\n\n\n\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"mobile-editable-element\",\n style: _normalizeStyle({\n zIndex: __props.elementIndex,\n })\n }, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_unref(currentElementComponent)), {\n elementInfo: __props.elementInfo,\n selectElement: __props.selectElement,\n contextmenus: () => null\n }, null, 8, [\"elementInfo\", \"selectElement\", \"contextmenus\"]))\n ], 4))\n}\n}\n\n})","import script from \"./MobileEditableElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MobileEditableElement.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MobileOperate',\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\nconst props = __props\n\n\n\nconst rotate = computed(() => 'rotate' in props.elementInfo ? props.elementInfo.rotate : 0)\n\nconst scaleWidth = computed(() => props.elementInfo.width * props.canvasScale)\nconst scaleHeight = computed(() => props.elementInfo.height * props.canvasScale)\nconst {\n borderLines,\n resizeHandlers: _resizeHandlers,\n textElementResizeHandlers,\n} = useCommonOperate(scaleWidth, scaleHeight)\n\nconst resizeHandlers = props.elementInfo.type === 'text' || props.elementInfo.type === 'table' ? textElementResizeHandlers : _resizeHandlers\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"mobile-operate\",\n style: _normalizeStyle({\n top: __props.elementInfo.top * __props.canvasScale + 'px',\n left: __props.elementInfo.left * __props.canvasScale + 'px',\n transform: `rotate(${_unref(rotate)}deg)`,\n transformOrigin: `${__props.elementInfo.width * __props.canvasScale / 2}px ${__props.elementInfo.height * __props.canvasScale / 2}px`,\n })\n }, [\n (__props.isSelected)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(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(_unref(resizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: __props.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onTouchstart: _withModifiers($event => __props.scaleElement($event, __props.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onTouchstart\"]))\n }), 128))\n ], 64))\n : _createCommentVNode(\"\", true)\n ], 4))\n}\n}\n\n})","import script from \"./MobileOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MobileOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MobileOperate.vue?vue&type=style&index=0&id=7fdc6c04&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7fdc6c04\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createVNode as _createVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4a0c7aa7\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mobile-thumbnails\" }\nconst _hoisted_2 = [\"onClick\"]\nconst _hoisted_3 = { class: \"label\" }\n\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useLoadSlides from '@/hooks/useLoadSlides'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MobileThumbnails',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { slides, slideIndex } = storeToRefs(slidesStore)\n\nconst { slidesLoadLimit } = useLoadSlides()\nconst changeSlideIndex = (index: number) => {\n slidesStore.updateSlideIndex(index)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(slides), (slide, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"thumbnail-item\", { 'active': _unref(slideIndex) === index }]),\n key: slide.id,\n onClick: ($event: any) => (changeSlideIndex(index))\n }, [\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(index + 1), 1),\n _createVNode(ThumbnailSlide, {\n class: \"thumbnail\",\n slide: slide,\n size: 120,\n visible: index < _unref(slidesLoadLimit)\n }, null, 8, [\"slide\", \"visible\"])\n ], 10, _hoisted_2))\n }), 128))\n ]))\n}\n}\n\n})","import script from \"./MobileThumbnails.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MobileThumbnails.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MobileThumbnails.vue?vue&type=style&index=0&id=4a0c7aa7&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4a0c7aa7\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-29fba90e\"),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\nimport { computed } 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'SlideToolbar',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { viewportRatio, currentSlide } = storeToRefs(slidesStore)\n\nconst { createSlide, copyAndPasteSlide, deleteSlide, } = useSlideHandler()\nconst { createTextElement, createImageElement, createShapeElement } = useCreateElement()\n\nconst 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\nconst insertImageElement = (files: FileList) => {\n if (!files || !files[0]) return\n getImageDataURL(files[0]).then(dataURL => createImageElement(dataURL))\n}\n\nconst 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\nconst remark = computed(() => currentSlide.value?.remark || '')\n\nconst handleInputMark = (e: Event) => {\n const value = (e.target as HTMLTextAreaElement).value\n slidesStore.updateSlide({ remark: value })\n}\n\nreturn (_ctx: any,_cache: 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\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"textarea\", {\n value: _unref(remark),\n placeholder: \"点击输入演讲者备注\",\n onInput: _cache[0] || (_cache[0] = $event => 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) => (_unref(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) => (_unref(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) => (_unref(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) => (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 => 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) => (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) => (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(MobileThumbnails)\n ]))\n}\n}\n\n})","import script from \"./SlideToolbar.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./SlideToolbar.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./SlideToolbar.vue?vue&type=style&index=0&id=29fba90e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-29fba90e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, unref as _unref, 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-446388c6\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementToolbar',\n setup(__props) {\n\nconst colors = ['#000000', '#ffffff', '#eeece1', '#1e497b', '#4e81bb', '#e2534d', '#9aba60', '#8165a0', '#47acc5', '#f9974c', '#c21401', '#ff1e02', '#ffc12a', '#ffff3a', '#90cf5b', '#00af57']\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { handleElement, handleElementId, richTextAttrs } = storeToRefs(mainStore)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst updateElement = (id: string, props: Partial) => {\n slidesStore.updateElement({ id, props })\n addHistorySnapshot()\n}\n\nconst tabs: TabItem[] = [\n { key: 'style', label: '样式' },\n { key: 'common', label: '布局' },\n]\nconst activeTab = ref('common')\n\nconst { orderElement } = useOrderElement()\nconst { alignElementToCanvas } = useAlignElementToCanvas()\nconst { addElementsFromData } = useAddSlidesOrElements()\nconst { deleteElement } = useDeleteElement()\n\nconst copyElement = () => {\n const element: PPTElement = JSON.parse(JSON.stringify(handleElement.value))\n addElementsFromData([element])\n}\n\nconst emitRichTextCommand = (command: string, value?: string) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { action: { command, value } })\n}\n\nconst 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\nconst 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\nreturn (_ctx: any,_cache: 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(), _createElementBlock(_Fragment, null, _renderList(tabs, (item) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': activeTab.value === item.key }]),\n key: item.key,\n onClick: ($event: any) => (activeTab.value = item.key)\n }, _toDisplayString(item.label), 11, _hoisted_3)\n }), 64))\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (activeTab.value === '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: _unref(richTextAttrs).bold,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (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: _unref(richTextAttrs).em,\n onClick: _cache[1] || (_cache[1] = ($event: any) => (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: _unref(richTextAttrs).underline,\n onClick: _cache[2] || (_cache[2] = ($event: any) => (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: _unref(richTextAttrs).strikethrough,\n onClick: _cache[3] || (_cache[3] = ($event: any) => (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) => (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) => (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: _unref(richTextAttrs).align,\n onChange: _cache[6] || (_cache[6] = e => 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(), _createElementBlock(_Fragment, null, _renderList(colors, (color) => {\n return _createElementVNode(\"div\", {\n class: \"color\",\n key: color,\n onClick: ($event: any) => (updateFontColor(color))\n }, [\n _createElementVNode(\"div\", {\n class: \"color-block\",\n style: _normalizeStyle({ backgroundColor: color })\n }, null, 4)\n ], 8, _hoisted_11)\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _hoisted_13,\n _createElementVNode(\"div\", _hoisted_14, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(colors, (color) => {\n return _createElementVNode(\"div\", {\n class: \"color\",\n key: color,\n onClick: ($event: any) => (updateFill(color))\n }, [\n _createElementVNode(\"div\", {\n class: \"color-block\",\n style: _normalizeStyle({ backgroundColor: color })\n }, null, 4)\n ], 8, _hoisted_15)\n }), 64))\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (activeTab.value === '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) => (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) => (_unref(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) => (_unref(orderElement)(_unref(handleElement)!, _unref(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) => (_unref(orderElement)(_unref(handleElement)!, _unref(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) => (_unref(orderElement)(_unref(handleElement)!, _unref(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) => (_unref(orderElement)(_unref(handleElement)!, _unref(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) => (_unref(alignElementToCanvas)(_unref(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) => (_unref(alignElementToCanvas)(_unref(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) => (_unref(alignElementToCanvas)(_unref(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) => (_unref(alignElementToCanvas)(_unref(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) => (_unref(alignElementToCanvas)(_unref(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) => (_unref(alignElementToCanvas)(_unref(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}\n}\n\n})","import script from \"./ElementToolbar.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementToolbar.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementToolbar.vue?vue&type=style&index=0&id=446388c6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-446388c6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-10cd6713\"),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\nimport { PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSnapshotStore } from '@/store'\nimport { Mode } from '@/types/mobile'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Header',\n props: {\n changeMode: {\n type: Function as PropType<(mode: Mode) => void>,\n required: true,\n },\n},\n setup(__props) {\n\n\n\nconst { canUndo, canRedo } = storeToRefs(useSnapshotStore())\nconst { redo, undo } = useHistorySnapshot()\n\nreturn (_ctx: any,_cache: 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': !_unref(canUndo) }]),\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_unref(undo)()), [\"stop\"]))\n }, [\n _createVNode(_component_IconBack),\n _hoisted_3\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"history-item\", { 'disable': !_unref(canRedo) }]),\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_unref(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) => (__props.changeMode('preview')))\n }, [\n _createVNode(_component_IconLogout),\n _hoisted_5\n ])\n ]))\n}\n}\n\n})","import script from \"./Header.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Header.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Header.vue?vue&type=style&index=0&id=10cd6713&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-10cd6713\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, unref as _unref, 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-8cdcde82\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mobile-editor\" }\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n changeMode: {\n type: Function as PropType<(mode: Mode) => void>,\n required: true,\n },\n},\n setup(__props) {\n\n\n\nconst slidesStore = useSlidesStore()\nconst mainStore = useMainStore()\nconst { slideIndex, currentSlide, viewportRatio } = storeToRefs(slidesStore)\nconst { activeElementIdList, handleElement } = storeToRefs(mainStore)\n\nconst contentRef = ref()\n\nconst alignmentLines = ref([])\n\nconst background = computed(() => currentSlide.value.background)\nconst { backgroundStyle } = useSlideBackgroundStyle(background)\n\nconst 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\nonMounted(() => {\n if (activeElementIdList.value.length) mainStore.setActiveElementIdList([])\n if (slideIndex.value !== 0) slidesStore.updateSlideIndex(0)\n})\n\nconst viewportStyles = computed(() => ({\n width: VIEWPORT_SIZE * canvasScale.value + 'px',\n height: VIEWPORT_SIZE * viewportRatio.value * canvasScale.value + 'px',\n}))\n\nconst elementList = ref([])\nconst setLocalElementList = () => {\n elementList.value = currentSlide.value ? JSON.parse(JSON.stringify(currentSlide.value.elements)) : []\n}\nwatchEffect(setLocalElementList)\n\nconst { dragElement } = useDragElement(elementList, alignmentLines, canvasScale)\nconst { scaleElement } = useScaleElement(elementList, alignmentLines, canvasScale)\n\nconst 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\nconst handleClickBlankArea = () => {\n mainStore.setActiveElementIdList([])\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(Header, { changeMode: __props.changeMode }, null, 8, [\"changeMode\"]),\n _createElementVNode(\"div\", {\n class: \"content\",\n ref_key: \"contentRef\",\n ref: contentRef,\n onTouchstart: _cache[0] || (_cache[0] = ($event: any) => (handleClickBlankArea()))\n }, [\n _createElementVNode(\"div\", {\n class: \"viewport-wrapper\",\n style: _normalizeStyle(_unref(viewportStyles))\n }, [\n _createElementVNode(\"div\", {\n class: \"background\",\n style: _normalizeStyle(_unref(backgroundStyle))\n }, null, 4),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(alignmentLines.value, (line, index) => {\n return (_openBlock(), _createBlock(AlignmentLine, {\n key: index,\n type: line.type,\n axis: line.axis,\n length: line.length,\n canvasScale: _unref(canvasScale)\n }, null, 8, [\"type\", \"axis\", \"length\", \"canvasScale\"]))\n }), 128)),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(elementList.value, (element) => {\n return (_openBlock(), _createElementBlock(_Fragment, {\n key: element.id\n }, [\n (element.type !== 'line')\n ? (_openBlock(), _createBlock(MobileOperate, {\n key: 0,\n elementInfo: element,\n isSelected: _unref(activeElementIdList).includes(element.id),\n canvasScale: _unref(canvasScale),\n scaleElement: _unref(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(${_unref(canvasScale)})` })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(elementList.value, (element, index) => {\n return (_openBlock(), _createBlock(MobileEditableElement, {\n key: element.id,\n elementInfo: element,\n elementIndex: index + 1,\n selectElement: selectElement\n }, null, 8, [\"elementInfo\", \"elementIndex\"]))\n }), 128))\n ], 4)\n ], 4)\n ], 544),\n _createVNode(SlideToolbar),\n (_unref(handleElement))\n ? (_openBlock(), _createBlock(ElementToolbar, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=8cdcde82&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-8cdcde82\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5293de3b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"header\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\" 退出播放\")\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MobilePlayer',\n props: {\n changeMode: {\n type: Function as PropType<(mode: Mode) => void>,\n required: true,\n },\n},\n setup(__props) {\n\n\n\nconst slidesStore = useSlidesStore()\nconst { slides, slideIndex, currentSlide, viewportRatio } = storeToRefs(slidesStore)\n\nconst toolVisible = ref(false)\n\nconst playerSize = ref({ width: 0, height: 0 })\n\nonMounted(() => {\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\nconst 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\nconst touchInfo = ref<{ x: number; y: number; } | null>(null)\nconst touchStartListener = (e: TouchEvent) => {\n touchInfo.value = {\n x: e.changedTouches[0].pageX,\n y: e.changedTouches[0].pageY,\n }\n}\nconst 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\nreturn (_ctx: any,_cache: any) => {\n const _component_IconLogout = _resolveComponent(\"IconLogout\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"mobile-player\",\n style: _normalizeStyle({\n width: playerSize.value.width + 'px',\n height: playerSize.value.height + 'px',\n transform: `rotate(90deg) translateY(-${playerSize.value.height}px)`,\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"screen-slide-list\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (toolVisible.value = !toolVisible.value)),\n onTouchstart: _cache[1] || (_cache[1] = $event => touchStartListener($event)),\n onTouchend: _cache[2] || (_cache[2] = $event => touchEndListener($event))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(slides), (slide, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\n 'slide-item', \n `turning-mode-${slide.turningMode || 'slideY'}`,\n {\n 'current': index === _unref(slideIndex),\n 'before': index < _unref(slideIndex),\n 'after': index > _unref(slideIndex),\n 'hide': (index === _unref(slideIndex) - 1 || index === _unref(slideIndex) + 1) && slide.turningMode !== _unref(currentSlide).turningMode,\n }\n ]),\n key: slide.id\n }, [\n (Math.abs(_unref(slideIndex) - index) < 2)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"slide-content\",\n style: _normalizeStyle({\n width: _unref(slideSize).width + 'px',\n height: _unref(slideSize).height + 'px',\n })\n }, [\n _createVNode(ThumbnailSlide, {\n slide: slide,\n size: _unref(slideSize).width\n }, null, 8, [\"slide\", \"size\"])\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 2))\n }), 128))\n ], 32),\n (toolVisible.value)\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) => (__props.changeMode('preview')))\n }, [\n _createVNode(_component_IconLogout),\n _hoisted_2\n ])\n ]),\n _createVNode(MobileThumbnails, { class: \"thumbnails\" })\n ], 64))\n : _createCommentVNode(\"\", true)\n ], 4))\n}\n}\n\n})","import script from \"./MobilePlayer.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MobilePlayer.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MobilePlayer.vue?vue&type=style&index=0&id=5293de3b&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5293de3b\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createVNode as _createVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4f906636\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"thumbnail-list\" }\nconst _hoisted_2 = { class: \"menu\" }\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\" 编辑\")\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\" 播放\")\n\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MobilePreview',\n props: {\n changeMode: {\n type: Function as PropType<(mode: Mode) => void>,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst { slides } = storeToRefs(useSlidesStore())\nconst { slidesLoadLimit } = useLoadSlides()\n\nconst mobileRef = ref()\nconst screenWidth = ref(0)\n\nonMounted(() => {\n if (!mobileRef.value) return\n screenWidth.value = mobileRef.value.clientWidth\n})\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconEdit = _resolveComponent(\"IconEdit\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_IconFullScreenPlay = _resolveComponent(\"IconFullScreenPlay\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"mobile-preview\",\n ref_key: \"mobileRef\",\n ref: mobileRef\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(slides), (slide, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"thumbnail-item\",\n key: slide.id\n }, [\n _createVNode(ThumbnailSlide, {\n slide: slide,\n size: screenWidth.value - 10,\n visible: index < _unref(slidesLoadLimit)\n }, null, 8, [\"slide\", \"size\", \"visible\"])\n ]))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: \"menu-item\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (__props.changeMode('editor')))\n }, [\n _createVNode(_component_IconEdit, { class: \"icon\" }),\n _hoisted_3\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) => (__props.changeMode('player')))\n }, [\n _createVNode(_component_IconFullScreenPlay, { class: \"icon\" }),\n _hoisted_4\n ])\n ])\n ], 512))\n}\n}\n\n})","import script from \"./MobilePreview.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MobilePreview.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MobilePreview.vue?vue&type=style&index=0&id=4f906636&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4f906636\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-1fb24d48\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mobile\" }\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst mode = ref('preview')\n \nconst changeMode = (_mode: Mode) => mode.value = _mode\n\nconst currentComponent = computed(() => {\n const componentMap = {\n 'editor': MobileEditor,\n 'player': MobilePlayer,\n 'preview': MobilePreview,\n }\n return componentMap[mode.value] || null\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_unref(currentComponent)), { changeMode: changeMode }))\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=1fb24d48&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1fb24d48\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'App',\n setup(__props) {\n\nconst _isPC = isPC()\n\nconst mainStore = useMainStore()\nconst snapshotStore = useSnapshotStore()\nconst { databaseId } = storeToRefs(mainStore)\nconst { screening } = storeToRefs(useScreenStore())\n\nif (process.env.NODE_ENV === 'production') {\n window.onbeforeunload = () => false\n}\n\nonMounted(() => {\n snapshotStore.initSnapshotDatabase()\n mainStore.setAvailableFonts()\n})\n\n// 应用注销时向 localStorage 中记录下本次 indexedDB 的数据库ID,用于之后清除数据库\nwindow.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\nreturn (_ctx: any,_cache: any) => {\n return (_unref(screening))\n ? (_openBlock(), _createBlock(Screen, { key: 0 }))\n : (_unref(_isPC))\n ? (_openBlock(), _createBlock(Editor, { key: 1 }))\n : (_openBlock(), _createBlock(Mobile, { key: 2 }))\n}\n}\n\n})","import script from \"./App.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./App.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./App.vue?vue&type=style&index=0&id=f5c43528&lang=scss\"\n\nconst __exports__ = script;\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 Needle,\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 Needle,\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 { defineComponent as _defineComponent } from 'vue'\nimport { 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-4727b7ff\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"accept\"]\n\nimport { ref } from 'vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'FileInput',\n props: {\n accept: {\n type: String,\n default: 'image/*',\n },\n},\n emits: [\"change\"],\n setup(__props, { emit }: { emit: ({\n (event: 'change', payload: FileList): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst inputRef = ref()\n\nconst handleClick = () => {\n if (!inputRef.value) return\n inputRef.value.value = ''\n inputRef.value.click()\n}\nconst handleChange = (e: Event) => {\n const files = (e.target as HTMLInputElement).files\n if (files) emit('change', files)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"file-input\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (handleClick()))\n }, [\n _renderSlot(_ctx.$slots, \"default\"),\n _createElementVNode(\"input\", {\n class: \"input\",\n type: \"file\",\n name: \"upload\",\n ref_key: \"inputRef\",\n ref: inputRef,\n accept: __props.accept,\n onChange: _cache[0] || (_cache[0] = $event => handleChange($event))\n }, null, 40, _hoisted_1)\n ]))\n}\n}\n\n})","import script from \"./FileInput.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./FileInput.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./FileInput.vue?vue&type=style&index=0&id=4727b7ff&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4727b7ff\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'CheckboxButton',\n props: {\r\n checked: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n},\n setup(__props) {\n\r\n\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"button\", {\n class: _normalizeClass([\"checkbox-button\", { 'checked': __props.checked }])\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ], 2))\n}\n}\n\n})","import script from \"./CheckboxButton.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./CheckboxButton.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./CheckboxButton.vue?vue&type=style&index=0&id=699cf016&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-699cf016\"]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n","import { render } from \"./CheckboxButtonGroup.vue?vue&type=template&id=b8aa6eac&scoped=true\"\nconst script = {}\n\nimport \"./CheckboxButtonGroup.vue?vue&type=style&index=0&id=b8aa6eac&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b8aa6eac\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed } from 'vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Checkboard',\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\nconst props = __props\n\n\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\nconst bgStyle = computed(() => {\n const checkboard = getCheckboard(props.white, props.grey, props.size)\n return { backgroundImage: `url(${checkboard})` }\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"checkerboard\",\n style: _normalizeStyle(_unref(bgStyle))\n }, null, 4))\n}\n}\n\n})","import script from \"./Checkboard.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Checkboard.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Checkboard.vue?vue&type=style&index=0&id=7494636c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7494636c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, unref as _unref, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-246b525c\"),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\nimport { computed, onUnmounted, PropType, ref } from 'vue'\n\nimport Checkboard from './Checkboard.vue'\nimport { ColorFormats } from 'tinycolor2'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Alpha',\n props: {\n value: {\n type: Object as PropType,\n required: true,\n },\n},\n emits: [\"colorChange\"],\n setup(__props, { emit }: { emit: ({\n (event: 'colorChange', payload: ColorFormats.RGBA): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst color = computed(() => props.value)\n \nconst 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\nconst alphaRef = ref()\nconst 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\nconst unbindEventListeners = () => {\n window.removeEventListener('mousemove', handleChange)\n window.removeEventListener('mouseup', unbindEventListeners)\n}\nconst handleMouseDown = (e: MouseEvent) => {\n handleChange(e)\n window.addEventListener('mousemove', handleChange)\n window.addEventListener('mouseup', unbindEventListeners)\n}\nonUnmounted(unbindEventListeners)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(Checkboard)\n ]),\n _createElementVNode(\"div\", {\n class: \"alpha-gradient\",\n style: _normalizeStyle({ background: _unref(gradientColor) })\n }, null, 4),\n _createElementVNode(\"div\", {\n class: \"alpha-container\",\n ref_key: \"alphaRef\",\n ref: alphaRef,\n onMousedown: _cache[0] || (_cache[0] = $event => handleMouseDown($event))\n }, [\n _createElementVNode(\"div\", {\n class: \"alpha-pointer\",\n style: _normalizeStyle({ left: _unref(color).a * 100 + '%' })\n }, _hoisted_4, 4)\n ], 544)\n ]))\n}\n}\n\n})","import script from \"./Alpha.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Alpha.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Alpha.vue?vue&type=style&index=0&id=246b525c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-246b525c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-60c3cca1\"),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\nimport { computed, onUnmounted, PropType, ref, watch } from 'vue'\nimport tinycolor, { ColorFormats } from 'tinycolor2'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Hue',\n props: {\n value: {\n type: Object as PropType,\n required: true,\n },\n hue: {\n type: Number,\n required: true,\n },\n},\n emits: [\"colorChange\"],\n setup(__props, { emit }: { emit: ({\n (event: 'colorChange', payload: ColorFormats.HSLA): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst oldHue = ref(0)\nconst pullDirection = ref('')\n\nconst color = computed(() => {\n const hsla = tinycolor(props.value).toHsl()\n if (props.hue !== -1) hsla.h = props.hue\n return hsla\n})\n\nconst pointerLeft = computed(() => {\n if (color.value.h === 0 && pullDirection.value === 'right') return '100%'\n return color.value.h * 100 / 360 + '%'\n})\n\nwatch(() => 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\nconst hueRef = ref()\nconst 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\nconst unbindEventListeners = () => {\n window.removeEventListener('mousemove', handleChange)\n window.removeEventListener('mouseup', unbindEventListeners)\n}\nconst handleMouseDown = (e: MouseEvent) => {\n handleChange(e)\n window.addEventListener('mousemove', handleChange)\n window.addEventListener('mouseup', unbindEventListeners)\n}\nonUnmounted(unbindEventListeners)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"hue-container\",\n ref_key: \"hueRef\",\n ref: hueRef,\n onMousedown: _cache[0] || (_cache[0] = $event => handleMouseDown($event))\n }, [\n _createElementVNode(\"div\", {\n class: \"hue-pointer\",\n style: _normalizeStyle({ left: _unref(pointerLeft) })\n }, _hoisted_3, 4)\n ], 544)\n ]))\n}\n}\n\n})","import script from \"./Hue.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Hue.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Hue.vue?vue&type=style&index=0&id=60c3cca1&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-60c3cca1\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-d230faf4\"),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\nimport { computed, onUnmounted, PropType, ref } from 'vue'\nimport tinycolor, { ColorFormats } from 'tinycolor2'\nimport { throttle, clamp } from 'lodash'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Saturation',\n props: {\n value: {\n type: Object as PropType,\n required: true,\n },\n hue: {\n type: Number,\n required: true,\n },\n},\n emits: [\"colorChange\"],\n setup(__props, { emit }: { emit: ({\n (event: 'colorChange', payload: ColorFormats.HSVA): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst color = computed(() => {\n const hsva = tinycolor(props.value).toHsv()\n if (props.hue !== -1) hsva.h = props.hue\n return hsva\n})\n\nconst bgColor = computed(() => `hsl(${color.value.h}, 100%, 50%)`)\nconst pointerTop = computed(() => (-(color.value.v * 100) + 1) + 100 + '%')\nconst pointerLeft = computed(() => color.value.s * 100 + '%')\n\nconst emitChangeEvent = throttle(function(param: ColorFormats.HSVA) {\n emit('colorChange', param)\n}, 20, { leading: true, trailing: false })\n\nconst saturationRef = ref()\nconst 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\nconst unbindEventListeners = () => {\n window.removeEventListener('mousemove', handleChange)\n window.removeEventListener('mouseup', unbindEventListeners)\n}\nconst handleMouseDown = (e: MouseEvent) => {\n handleChange(e)\n window.addEventListener('mousemove', handleChange)\n window.addEventListener('mouseup', unbindEventListeners)\n}\nonUnmounted(unbindEventListeners)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"saturation\",\n ref_key: \"saturationRef\",\n ref: saturationRef,\n style: _normalizeStyle({ background: _unref(bgColor) }),\n onMousedown: _cache[0] || (_cache[0] = $event => handleMouseDown($event))\n }, [\n _hoisted_1,\n _hoisted_2,\n _createElementVNode(\"div\", {\n class: \"saturation-pointer\",\n style: _normalizeStyle({\n top: _unref(pointerTop),\n left: _unref(pointerLeft),\n })\n }, _hoisted_4, 4)\n ], 36))\n}\n}\n\n})","import script from \"./Saturation.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Saturation.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Saturation.vue?vue&type=style&index=0&id=d230faf4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-d230faf4\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2f428dde\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"editable-input\" }\nconst _hoisted_2 = [\"value\"]\n\nimport { computed, PropType } from 'vue'\nimport tinycolor, { ColorFormats } from 'tinycolor2'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'EditableInput',\n props: {\n value: {\n type: Object as PropType,\n required: true,\n },\n},\n emits: [\"colorChange\"],\n setup(__props, { emit }: { emit: ({\n (event: 'colorChange', payload: ColorFormats.RGBA): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst 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\nconst handleInput = (e: Event) => {\n const value = (e.target as HTMLInputElement).value\n if (value.length >= 6) emit('colorChange', tinycolor(value).toRgb())\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"input\", {\n class: \"input-content\",\n value: _unref(val),\n onInput: _cache[0] || (_cache[0] = $event => handleInput($event))\n }, null, 40, _hoisted_2)\n ]))\n}\n}\n\n})","import script from \"./EditableInput.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./EditableInput.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./EditableInput.vue?vue&type=style&index=0&id=2f428dde&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2f428dde\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, resolveComponent as _resolveComponent, 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-c46eb110\"),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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n modelValue: {\n type: String,\n default: '#e86b99',\n },\n},\n emits: [\"update:modelValue\"],\n setup(__props, { emit }: { emit: ({\n (event: 'update:modelValue', payload: string): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\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\nconst hue = ref(-1)\nconst recentColors = ref([])\n\nconst 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\nconst presetColors = getPresetColors()\n\nconst currentColor = computed(() => {\n return `rgba(${[color.value.r, color.value.g, color.value.b, color.value.a].join(',')})`\n})\n\nconst selectPresetColor = (colorString: string) => {\n hue.value = tinycolor(colorString).toHsl().h\n emit('update:modelValue', colorString)\n}\n\n// 每次选择非预设颜色时,需要将该颜色加入到最近使用列表中\nconst 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\nonMounted(() => {\n const recentColorsCache = localStorage.getItem(RECENT_COLORS)\n if (recentColorsCache) recentColors.value = JSON.parse(recentColorsCache)\n})\n\nwatch(recentColors, () => {\n const recentColorsCache = JSON.stringify(recentColors.value)\n localStorage.setItem(RECENT_COLORS, recentColorsCache)\n})\n\nconst 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// 打开取色吸管\n// 检查环境是否支持原生取色吸管,支持则使用原生吸管,否则使用自定义吸管\nconst openEyeDropper = () => {\n const isSupportedEyeDropper = 'EyeDropper' in window\n\n if (isSupportedEyeDropper) browserEyeDropper()\n else customEyeDropper()\n}\n\n// 原生取色吸管\nconst browserEyeDropper = () => {\n message.success('按 ESC 键关闭取色吸管')\n\n // eslint-disable-next-line\n const eyeDropper = new (window as any).EyeDropper()\n eyeDropper.open().then((result: { sRGBHex: string }) => {\n const tColor = tinycolor(result.sRGBHex)\n hue.value = tColor.toHsl().h\n color.value = tColor.toRgb()\n\n updateRecentColorsCache()\n }).catch(() => {\n message.success('关闭取色吸管')\n })\n}\n\n// 基于 Canvas 的自定义取色吸管\nconst customEyeDropper = () => {\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\nreturn (_ctx: any,_cache: any) => {\n const _component_IconNeedle = _resolveComponent(\"IconNeedle\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(Saturation, {\n value: _unref(color),\n hue: hue.value,\n onColorChange: _cache[0] || (_cache[0] = value => 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: _unref(currentColor) })\n }, null, 4),\n _createVNode(Checkboard)\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(Hue, {\n value: _unref(color),\n hue: hue.value,\n onColorChange: _cache[1] || (_cache[1] = value => changeColor(value))\n }, null, 8, [\"value\", \"hue\"])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(Alpha, {\n value: _unref(color),\n onColorChange: _cache[2] || (_cache[2] = value => changeColor(value))\n }, null, 8, [\"value\"])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(EditableInput, {\n class: \"input\",\n value: _unref(color),\n onColorChange: _cache[3] || (_cache[3] = value => changeColor(value))\n }, null, 8, [\"value\"]),\n _createElementVNode(\"div\", {\n class: \"straw\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (openEyeDropper()))\n }, [\n _createVNode(_component_IconNeedle)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(themeColors, (c) => {\n return _createElementVNode(\"div\", {\n class: \"picker-presets-color\",\n key: c,\n style: _normalizeStyle({ background: c }),\n onClick: ($event: any) => (selectPresetColor(c))\n }, null, 12, _hoisted_10)\n }), 64))\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(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) => (selectPresetColor(c))\n }, null, 12, _hoisted_12))\n }), 128))\n ]))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_13, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(standardColors, (c) => {\n return _createElementVNode(\"div\", {\n key: c,\n class: \"picker-presets-color\",\n style: _normalizeStyle({ background: c }),\n onClick: ($event: any) => (selectPresetColor(c))\n }, null, 12, _hoisted_14)\n }), 64))\n ]),\n (recentColors.value.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, \"最近使用:\"))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_16, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(recentColors.value, (c) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: c,\n class: \"picker-presets-color alpha\",\n onClick: ($event: any) => (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}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=c46eb110&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-c46eb110\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-16ead44e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"fullscreen-spin\"\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'FullscreenSpin',\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n tip: {\n type: String,\n default: '',\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Spin = _resolveComponent(\"Spin\")!\n\n return (__props.loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Spin, {\n tip: __props.tip,\n size: \"large\"\n }, null, 8, [\"tip\"])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./FullscreenSpin.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./FullscreenSpin.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./FullscreenSpin.vue?vue&type=style&index=0&id=16ead44e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-16ead44e\"]])\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 { defineComponent as _defineComponent } from 'vue'\nimport { 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-e470e712\"),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\nimport { PropType } from 'vue'\nimport { ContextmenuItem } from './types'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MenuContent',\n props: {\n menus: {\n type: Array as PropType,\n required: true,\n },\n handleClickMenuItem: {\n type: Function,\n required: true,\n },\n},\n setup(__props) {\n\n\n\nreturn (_ctx: any,_cache: 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(__props.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) => (__props.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: __props.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}\n}\n\n})","import script from \"./MenuContent.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MenuContent.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MenuContent.vue?vue&type=style&index=0&id=e470e712&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-e470e712\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { withModifiers as _withModifiers, createElementVNode as _createElementVNode, unref as _unref, createVNode as _createVNode, normalizeStyle as _normalizeStyle, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed, PropType } from 'vue'\nimport { ContextmenuItem, Axis } from './types'\n\nimport MenuContent from './MenuContent.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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\nconst props = __props\n\n\n\nconst 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\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", {\n class: \"mask\",\n onContextmenu: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (__props.removeContextmenu()), [\"prevent\"])),\n onMousedown: _cache[1] || (_cache[1] = ($event: any) => (__props.removeContextmenu()))\n }, null, 32),\n _createElementVNode(\"div\", {\n class: \"contextmenu\",\n style: _normalizeStyle({\n left: _unref(style).left + 'px',\n top: _unref(style).top + 'px',\n }),\n onContextmenu: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"prevent\"]))\n }, [\n _createVNode(MenuContent, {\n menus: __props.menus,\n handleClickMenuItem: handleClickMenuItem\n }, null, 8, [\"menus\"])\n ], 36)\n ], 64))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=e70aeb5c&lang=scss\"\n\nconst __exports__ = script;\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!./index.vue?vue&type=style&index=0&id=5303bd17&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/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=769d6876&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=a15cc1d8&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=938968a2&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=153c0b44&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=1f8f1a8b&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=7e28e1d8&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=7fdc6c04&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=4a0c7aa7&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=02998580&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/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=4727b7ff&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=60a953a0&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=66f2009f&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=246b525c&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=1c41d9fe&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=1bc24666&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=82b674f6&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=c46eb110&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=e91e3764&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=1aa2357d&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!./LineElementOperate.vue?vue&type=style&index=0&id=4659f395&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=340cdee8&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/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=b5bace06&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=3fef9be0&lang=scss&scoped=true\""],"sourceRoot":""} \ No newline at end of file diff --git a/js/app.d2c3d541.js b/js/app.d2c3d541.js deleted file mode 100644 index ed5c582e..00000000 --- a/js/app.d2c3d541.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(e){function t(t){for(var c,a,r=t[0],i=t[1],u=t[2],s=0,f=[];sb){var p=e.nodeAt(o),O=p&&p.marks.find(l);if(!O||O!==a)break;s=o,r=p,o--}o=n+1,b=e.nodeSize-2;while(o-1||t.type===e},F=function(e,t){for(var n=e.depth;n>0;n--){var c=e.node(n);if(t(c))return{pos:n>0?e.before(n):0,start:e.start(n),depth:n,node:c}}},A=function(e){return function(t){return F(t.$from,e)}},R=function(e){return function(t){return A((function(t){return z(e,t)}))(t)}},P=function(e,t){var n=t.schema.nodes[e];return!!R(n)(t.selection)},H=function(e){var t,n,c=e.state,o=c.selection,l=c.doc,a=o.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)||[]},q=function(e,t,n){var c,o=Object(L["a"])(e);try{for(o.s();!(c=o.n()).done;){var l=c.value;if(l.type.name===t&&l.attrs[n])return l.attrs[n]}}catch(a){o.e(a)}finally{o.f()}return null},U=function(e,t){var n,c=Object(L["a"])(e);try{for(c.s();!(n=c.n()).done;){var o=n.value;if(o.type.name===t)return!0}}catch(l){c.e(l)}finally{c.f()}return!1},G=function(e,t){var n=e.selection,c=n.from,o=n.$from,l=n.to,a=n.empty;return a?t.isInSet(e.storedMarks||o.marks()):e.doc.rangeHasMark(c,l,t)},X=function(e,t){var n=e.state,c=n.selection,o=n.doc,l=c.from,a=c.to,r=!0,i="";return o.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(S["a"])(Object(S["a"])({},Y),t);var n=H(e),c=U(n,"strong"),o=U(n,"em"),l=U(n,"underline"),a=U(n,"strikethrough"),r=U(n,"superscript"),i=U(n,"subscript"),u=U(n,"code"),d=q(n,"forecolor","color")||t.color,s=q(n,"backcolor","backcolor")||t.backcolor,f=q(n,"fontsize","fontsize")||t.fontsize,b=q(n,"fontname","fontname")||t.fontname,p=q(n,"link","href")||"",O=X(e,"align")||t.align,m=P("bullet_list",e.state),v=P("ordered_list",e.state),j=P("blockquote",e.state);return{bold:c,em:o,underline:l,strikethrough:a,superscript:r,subscript:i,code:u,color:d,backcolor:s,fontsize:f,fontname:b,link:p,align:O,bulletList:m,orderedList:v,blockquote:j}},W=function(e){var t=H(e),n=q(t,"fontsize","fontsize")||Y.fontsize;return parseInt(n)},J={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,c=100,o=100,l="a",a=document.createElement("canvas"),r=a.getContext("2d");if(!r)return!1;a.width=c,a.height=o,r.textAlign="center",r.fillStyle="black",r.textBaseline="middle";var i=function(e){r.clearRect(0,0,c,o),r.font="".concat(n,"px ").concat(e,", ").concat(t),r.fillText(l,c/2,o/2);var a=r.getImageData(0,0,c,o).data;return[].slice.call(a).filter((function(e){return 0!==e}))};return i(t).join("")!==i(e).join("")}),K=n("2909"),$=(n("d81d"),n("ac1f"),n("5319"),n("5b81"),n("a434"),n("c740"),n("66cb")),ee=n.n($),te=n("2ef0"),ne=[{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"},oe=[{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}}"}}],le=Object(g["b"])("slides",{state:function(){return{theme:ce,slides:ne,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,c=n.map((function(e){return e.id}));return t.animations.filter((function(e){return c.includes(e.elId)}))},formatedAnimations:function(e){var t=e.slides[e.slideIndex];if(null===t||void 0===t||!t.animations)return[];var n,c=t.elements,o=c.map((function(e){return e.id})),l=t.animations.filter((function(e){return o.includes(e.elId)})),a=[],r=Object(L["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 c=a[a.length-1];c.autoNext=!0,a[a.length-1]=c,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,c=t.fontColor,o=t.fontName,l=t.backgroundColor,a=ee()(c).isDark()?"rgba(230, 230, 230, 0.5)":"rgba(180, 180, 180, 0.5)",r=JSON.stringify(oe).replaceAll("{{themeColor}}",n).replaceAll("{{fontColor}}",c).replaceAll("{{fontName}}",o).replaceAll("{{backgroundColor}}",l).replaceAll("{{subColor}}",a);return JSON.parse(r)}},actions:{setTheme:function(e){this.theme=Object(S["a"])(Object(S["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],c=this.slideIndex+1;(t=this.slides).splice.apply(t,[c,0].concat(Object(K["a"])(n))),this.slideIndex=c},updateSlide:function(e){var t=this.slideIndex;this.slides[t]=Object(S["a"])(Object(S["a"])({},this.slides[t]),e)},deleteSlide:function(e){for(var t=this,n=Array.isArray(e)?e:[e],c=[],o=function(e){var o=t.slides.findIndex((function(t){return t.id===n[e]}));c.push(o)},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,c=[].concat(Object(K["a"])(n),Object(K["a"])(t));this.slides[this.slideIndex].elements=c},deleteElement:function(e){var t=Array.isArray(e)?e:[e],n=this.slides[this.slideIndex].elements,c=n.filter((function(e){return!t.includes(e.id)}));this.slides[this.slideIndex].elements=c},updateElement:function(e){var t=e.id,n=e.props,c="string"===typeof t?[t]:t,o=this.slideIndex,l=this.slides[o],a=l.elements.map((function(e){return c.includes(e.id)?Object(S["a"])(Object(S["a"])({},e),n):e}));this.slides[o].elements=a},removeElementProps:function(e){var t=e.id,n=e.propName,c="string"===typeof n?[n]:n,o=this.slideIndex,l=this.slides[o],a=l.elements.map((function(e){return e.id===t?Object(te["omit"])(e,c):e}));this.slides[o].elements=a}}}),ae=Object(x["a"])("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"),re=ae(10),ie=Object(g["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:I,toolbarState:c.SLIDE_DESIGN,clipingImageElementId:"",richTextAttrs:J,selectedTableCells:[],isScaling:!1,selectedSlidesIndex:[],dialogForExport:"",databaseId:re}},getters:{activeElementList:function(e){var t=le(),n=t.currentSlide;return n&&n.elements?n.elements.filter((function(t){return e.activeElementIdList.includes(t.id)})):[]},handleElement:function(e){var t=le(),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=I.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}}}),ue=n("1da1"),de=(n("ddb0"),n("96cf"),n("d4ec")),se=n("257e"),fe=n("262e"),be=n("2caf"),pe=n("ade3"),Oe=n("3835"),me=(n("1276"),n("4dec")),ve="PPTIST_DISCARDED_DB",je="PPTist",he=function(){var e=Object(ue["a"])(regeneratorRuntime.mark((function e(){var t,n,c,o,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(ve),c=n?JSON.parse(n):[],e.next=5,me["a"].getDatabaseNames();case 5:o=e.sent,l=o.filter((function(e){if(-1===e.indexOf(je))return!1;var n=e.split("_"),o=Object(Oe["a"])(n,3),l=o[0],a=o[1],r=o[2];return l!==je||!a||!r||(!!c.includes(a)||t-+r>=432e5)})),a=Object(L["a"])(l);try{for(a.s();!(r=a.n()).done;)i=r.value,me["a"].delete(i)}catch(u){a.e(u)}finally{a.f()}localStorage.removeItem(ve);case 10:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),ye=function(e){Object(fe["a"])(n,e);var t=Object(be["a"])(n);function n(){var e;return Object(de["a"])(this,n),e=t.call(this,"".concat(je,"_").concat(re,"_").concat((new Date).getTime())),Object(pe["a"])(Object(se["a"])(e),"snapshots",void 0),e.version(1).stores({snapshots:"++id"}),e.snapshots=e.table("snapshots"),e}return n}(me["a"]),ge=new ye,xe=Object(g["b"])("snapshot",{state:function(){return{snapshotCursor:-1,snapshotLength:0}},getters:{canUndo:function(e){return e.snapshotCursor>0},canRedo:function(e){return e.snapshotCursor=0&&e.snapshotCursorr&&(o.push(c[0]),a--),a>=2&&ge.snapshots.update(c[a-2],{index:n.slideIndex}),t.next=15,ge.snapshots.bulkDelete(o);case 15:e.setSnapshotCursor(a-1),e.setSnapshotLength(a);case 17:case"end":return t.stop()}}),t)})))()},unDo:function(){var e=this;return Object(ue["a"])(regeneratorRuntime.mark((function t(){var n,c,o,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=le(),c=ie(),o=e.snapshotCursor-1,t.next=7,ge.snapshots.orderBy("id").toArray();case 7:l=t.sent,a=l[o],r=a.index,i=a.slides,u=r>i.length-1?i.length-1:r,n.setSlides(i),n.updateSlideIndex(u),e.setSnapshotCursor(o),c.setActiveElementIdList([]);case 15:case"end":return t.stop()}}),t)})))()},reDo:function(){var e=this;return Object(ue["a"])(regeneratorRuntime.mark((function t(){var n,c,o,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=le(),c=ie(),o=e.snapshotCursor+1,t.next=7,ge.snapshots.orderBy("id").toArray();case 7:l=t.sent,a=l[o],r=a.index,i=a.slides,u=r>i.length-1?i.length-1:r,n.setSlides(i),n.updateSlideIndex(u),e.setSnapshotCursor(o),c.setActiveElementIdList([]);case 15:case"end":return t.stop()}}),t)})))()}}}),ke=Object(g["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}}}),Ce=Object(g["b"])("screen",{state:function(){return{screening:!1}},actions:{setScreening:function(e){this.screening=e}}}),Ne=(n("466d"),function(e,t){return Object(te["padStart"])(""+e,t,"0")}),we=function(){return!navigator.userAgent.match(/(iPhone|iPod|iPad|Android|Mobile|BlackBerry|Symbian|Windows Phone)/i)};(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"}(C||(C={})),function(e){e["T"]="top",e["B"]="bottom",e["L"]="left",e["R"]="right"}(N||(N={})),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"}(w||(w={})),function(e){e["START"]="start",e["END"]="end",e["C"]="ctrl",e["C1"]="ctrl1",e["C2"]="ctrl2"}(E||(E={})),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"}(V||(V={}));var Ee,Ve,Ie,Be=[{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"}]}],Se=(n("3b18"),n("f64c")),Le=(n("a630"),n("3ca3"),n("b311")),_e=n.n(Le),Te=(n("25f0"),n("3452")),Me=n.n(Te),De="pptist",ze=function(e){return Me.a.AES.encrypt(e,De).toString()},Fe=function(e){var t=Me.a.AES.decrypt(e,De);return t.toString(Me.a.enc.Utf8)},Ae=function(e){return new Promise((function(t,n){var c=document.createElement("button"),o=new _e.a(c,{text:function(){return e},action:function(){return"copy"},container:document.body});o.on("success",(function(e){o.destroy(),t(e)})),o.on("error",(function(e){o.destroy(),n(e)})),document.body.appendChild(c),c.click(),document.body.removeChild(c)}))},Re=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")}))},Pe=function(e){var t;try{t=JSON.parse(Fe(e))}catch(n){t=e}return t},He=function(e){var t=e.split("\r\n");""===t[t.length-1]&&t.pop();var n=-1,c=[];for(var o in t){if(c[o]=t[o].split("\t"),1===c[o].length)return null;if(-1===n)n=c[o].length;else if(n!==c[o].length)return null}return c},qe=(n("159b"),function(e){var t=e.left,n=e.top,c=e.width,o=e.height,l=e.rotate,a=void 0===l?0:l,r=Math.sqrt(Math.pow(c,2)+Math.pow(o,2))/2,i=180*Math.atan(o/c)/Math.PI,u=(180-a-i)*Math.PI/180,d=(i-a)*Math.PI/180,s=t+c/2,f=n+o/2,b=[s+r*Math.cos(u),s+r*Math.cos(d),s-r*Math.cos(u),s-r*Math.cos(d)],p=[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,p),Math.max.apply(Math,p)]}}),Ue=function(e){var t=qe({left:e.left,top:e.top,width:e.width,height:e.height,rotate:0}),n=t.xRange,c=t.yRange,o=qe({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),l=o.xRange,a=o.yRange;return{offsetX:l[0]-n[0],offsetY:a[0]-c[0]}},Ge=function(e){var t,n,c,o;if("line"===e.type)t=e.left,n=e.left+Math.max(e.start[0],e.end[0]),c=e.top,o=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=qe({left:l,top:a,width:r,height:i,rotate:u}),s=d.xRange,f=d.yRange;t=s[0],n=s[1],c=f[0],o=f[1]}else t=e.left,n=e.left+e.width,c=e.top,o=e.top+e.height;return{minX:t,maxX:n,minY:c,maxY:o}},Xe=function(e){var t=[],n=[],c=[],o=[];e.forEach((function(e){var l=Ge(e),a=l.minX,r=l.maxX,i=l.minY,u=l.maxY;t.push(a),n.push(i),c.push(r),o.push(u)}));var l=Math.min.apply(Math,t),a=Math.max.apply(Math,c),r=Math.min.apply(Math,n),i=Math.max.apply(Math,o);return{minX:l,maxX:a,minY:r,maxY:i}},Ye=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 c=t[n],o=Math.min(c.range[0],e.range[0]),l=Math.max(c.range[1],e.range[1]),a=[o,l],r={value:e.value,range:a};t[n]=r}})),t},Ze=function(e){var t,n={},c={},o=Object(L["a"])(e);try{for(o.s();!(t=o.n()).done;){var l=t.value,a=l.groupId;a&&!n[a]&&(n[a]=Object(x["b"])(10)),c[l.id]=Object(x["b"])(10)}}catch(r){o.e(r)}finally{o.f()}return{groupIdMap:n,elIdMap:c}},We=function(e){var t=ee()(e);return[t.setAlpha(.3).toRgbString(),t.setAlpha(.1).toRgbString()]},Je=function(e){var t=e.start.join(","),n=e.end.join(",");if(e.broken){var c=e.broken.join(",");return"M".concat(t," L").concat(c," L").concat(n)}if(e.curve){var o=e.curve.join(",");return"M".concat(t," Q").concat(o," ").concat(n)}if(e.cubic){var l=Object(Oe["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)},Qe=n("53ca"),Ke=function(e){var t,n=e.replace(/[\n\r]+/g,"
"),c=n.split("
"),o="",l=Object(L["a"])(c);try{for(l.s();!(t=l.n()).done;){var a=t.value;a&&(o+="
".concat(a,"
"))}}catch(r){l.e(r)}finally{l.f()}return o},$e=(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,c=n.clientHeight;n.onload=null,n.onerror=null,document.body.removeChild(n),t({width:e,height:c})},n.onerror=function(){n.onload=null,n.onerror=null}}))}),et=function(e){return new Promise((function(t){var n=new FileReader;n.addEventListener("load",(function(){t(n.result)})),n.readAsDataURL(e)}))},tt=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"})(Ee||(Ee={})),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"}(Ve||(Ve={}));var nt=(Ie={},Object(pe["a"])(Ie,Ee.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"])(Ie,Ee.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"])(Ie,Ee.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"])(Ie,Ee.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"])(Ie,Ee.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"])(Ie,Ee.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"])(Ie,Ee.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"])(Ie,Ee.MESSAGE,(function(e,t){var n=e/5,c=t/5;return"M 0 0 L ".concat(e," 0 L ").concat(e," ").concat(t-c," L ").concat(e/2," ").concat(t-c," L ").concat(e/2-n," ").concat(t," L ").concat(e/2-n," ").concat(t-c," L 0 ").concat(t-c," Z")})),Object(pe["a"])(Ie,Ee.ROUND_MESSAGE,(function(e,t){var n=Math.min(e,t)/8,c=e/5,o=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-o," Q ").concat(e," ").concat(t-o," ").concat(e-n," ").concat(t-o," L ").concat(e/2," ").concat(t-o," L ").concat(e/2-c," ").concat(t," L ").concat(e/2-c," ").concat(t-o," L ").concat(n," ").concat(t-o," Q 0 ").concat(t-o," 0 ").concat(t-n-o," L 0 ").concat(n," Z")})),Object(pe["a"])(Ie,Ee.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"])(Ie,Ee.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"])(Ie,Ee.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")})),Ie),ct=[{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:Ee.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:Ee.CUT_RECT_DIAGONAL},{viewBox:[200,200],path:"M 0 200 L 0 0 L 150 0 L 200 50 L 200 200 Z",pathFormula:Ee.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:Ee.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:Ee.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:Ee.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:Ee.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:Ee.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:Ee.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:Ee.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:Ee.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:Ee.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}]}],ot={bar:"bar",horizontalBar:"bar",line:"line",area:"line",scatter:"line",pie:"pie",ring:"pie"},lt=function(){var e=xe(),t=Object(te["debounce"])((function(){e.addSnapshot()}),300,{trailing:!0}),n=Object(te["throttle"])((function(){e.reDo()}),100,{leading:!0,trailing:!1}),c=Object(te["throttle"])((function(){e.unDo()}),100,{leading:!0,trailing:!1});return{addHistorySnapshot:t,redo:n,undo:c}},at=function(){var e=ie(),t=le(),n=Object(g["c"])(e),c=n.creatingElement,o=Object(g["c"])(t),l=o.theme,a=o.viewportRatio,r=lt(),i=r.addHistorySnapshot,u=function(n,o){t.addElement(n),e.setActiveElementIdList([n.id]),c.value&&e.setCreatingElement(null),setTimeout((function(){e.setEditorareaFocus(!0)}),0),o&&o(),i()},d=function(e){$e(e).then((function(t){var n=t.width,c=t.height,o=c/n;ott?(n=tt,c=n*o):c>tt*a.value&&(c=tt*a.value,n=c/o),u({type:"image",id:Object(x["b"])(10),src:e,width:n,height:c,left:(tt-n)/2,top:(tt*a.value-c)/2,fixedRatio:!0,rotate:0})}))},s=function(e){var t={type:"chart",id:Object(x["b"])(10),chartType:ot[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(S["a"])(Object(S["a"])({},t),{},{options:n}))},f=function(e,t){for(var n={fontname:l.value.fontName,color:l.value.fontColor},c=[],o=0;o1&&void 0!==arguments[1]?arguments[1]:"",n=e.left,c=e.top,o=e.width,a=e.height,r=Object(x["b"])(10);u({type:"text",id:r,left:n,top:c,width:o,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)}))},p=function(e,t){var n=e.left,c=e.top,o=e.width,a=e.height,r={type:"shape",id:Object(x["b"])(10),left:n,top:c,width:o,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=[o,a],r.path=nt[t.pathFormula](o,a)),u(r)},O=function(e,t){var n=e.left,c=e.top,o=e.start,a=e.end,r={type:"line",id:Object(x["b"])(10),left:n,top:c,start:o,end:a,points:t.points,color:l.value.themeColor,style:t.style,width:2};t.isBroken&&(r.broken=[(o[0]+a[0])/2,(o[1]+a[1])/2]),t.isCurve&&(r.curve=[(o[0]+a[0])/2,(o[1]+a[1])/2]),t.isCubic&&(r.cubic=[[(o[0]+a[0])/2,(o[1]+a[1])/2],[(o[0]+a[0])/2,(o[1]+a[1])/2]]),u(r)},m=function(e){u({type:"latex",id:Object(x["b"])(10),width:e.w,height:e.h,rotate:0,left:(tt-e.w)/2,top:(tt*a.value-e.h)/2,path:e.path,latex:e.latex,color:l.value.fontColor,strokeWidth:2,viewBox:[e.w,e.h],fixedRatio:!0})},v=function(e){u({type:"video",id:Object(x["b"])(10),width:500,height:300,rotate:0,left:(tt-500)/2,top:(tt*a.value-300)/2,src:e})},j=function(e){u({type:"audio",id:Object(x["b"])(10),width:50,height:50,rotate:0,left:(tt-50)/2,top:(tt*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:p,createLineElement:O,createLatexElement:m,createVideoElement:v,createAudioElement:j}},rt=(n("07ac"),function(){var e=ie(),t=le(),n=Object(g["c"])(t),c=n.currentSlide,o=lt(),l=o.addHistorySnapshot,a=function(n){var o,a=Ze(n),r=a.groupIdMap,i=a.elIdMap,u=c.value.elements.map((function(e){return e.id})),d=Object(L["a"])(n);try{for(d.s();!(o=d.n()).done;){var s=o.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=Ze(e.elements),c=n.groupIdMap,o=n.elIdMap,l=Object(L["a"])(e.elements);try{for(l.s();!(t=l.n()).done;){var a=t.value;a.id=o[a.id],a.groupId&&(a.groupId=c[a.groupId])}}catch(d){l.e(d)}finally{l.f()}if(e.animations){var r,i=Object(L["a"])(e.animations);try{for(i.s();!(r=i.n()).done;){var u=r.value;u.id=Object(x["b"])(10),u.elId=o[u.elId]}}catch(d){i.e(d)}finally{i.f()}}return Object(S["a"])(Object(S["a"])({},e),{},{id:Object(x["b"])(10)})}));t.addSlide(n),l()};return{addElementsFromData:a,addSlidesFromData:r}}),it=function(){var e=at(),t=e.createTextElement,n=rt(),c=n.addElementsFromData,o=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=Pe(e);if("object"===Object(Qe["a"])(r)){var i=r.type,u=r.data;"elements"!==i||n?"slides"!==i||a||o(u):c(u)}else if(!a&&!n){var d=Ke(r);l(d)}};return{pasteTextClipboardData:a}},ut=function(){var e=ie(),t=le(),n=Object(g["c"])(e),c=n.selectedSlidesIndex,o=n.activeElementIdList,l=Object(g["c"])(t),a=l.currentSlide,r=l.slides,i=l.theme,u=l.slideIndex,d=Object(y["computed"])((function(){return[].concat(Object(K["a"])(c.value),[u.value])})),s=Object(y["computed"])((function(){return r.value.filter((function(e,t){return d.value.includes(t)}))})),f=Object(y["computed"])((function(){return s.value.map((function(e){return e.id}))})),b=it(),p=b.pasteTextClipboardData,O=rt(),m=O.addSlidesFromData,v=lt(),j=v.addHistorySnapshot,h=function(){var n={id:Object(x["b"])(10),elements:[],background:{type:"solid",color:i.value.backgroundColor}};t.updateSlideIndex(0),e.setActiveElementIdList([]),t.setSlides([n])},k=function(n){n===V.UP&&u.value>0?(o.value.length&&e.setActiveElementIdList([]),t.updateSlideIndex(u.value-1)):n===V.DOWN&&u.value0&&void 0!==arguments[0]?arguments[0]:f.value;r.value.length===n.length?h():t.deleteSlide(n),e.updateSelectedSlidesIndex([]),j()},_=function(){var e=Object(K["a"])(f.value);C(),B(e)},T=function(){var t=Array.from(Array(r.value.length),(function(e,t){return t}));e.setActiveElementIdList([]),e.updateSelectedSlidesIndex(t)};return{resetSlides:h,updateSlideIndex:k,copySlide:C,pasteSlide:N,createSlide:w,createSlideByTemplate:E,copyAndPasteSlide:I,deleteSlide:B,cutSlide:_,selectAllSlide:T}},dt=function(){var e=ie(),t=le(),n=Object(g["c"])(e),c=n.activeElementIdList,o=Object(g["c"])(t),l=o.currentSlide,a=lt(),r=a.addHistorySnapshot,i=function(){var n,o=JSON.parse(JSON.stringify(l.value.elements)),a=Object(L["a"])(o);try{for(a.s();!(n=a.n()).done;){var i=n.value;c.value.includes(i.id)&&(i.lock=!0)}}catch(u){a.e(u)}finally{a.f()}t.updateSlide({elements:o}),e.setActiveElementIdList([]),r()},u=function(n){var c=JSON.parse(JSON.stringify(l.value.elements));if(n.groupId){var o,a=[],i=Object(L["a"])(c);try{for(i.s();!(o=i.n()).done;){var u=o.value;u.groupId===n.groupId&&(u.lock=!1,a.push(u.id))}}catch(b){i.e(b)}finally{i.f()}t.updateSlide({elements:c}),e.setActiveElementIdList(a)}else{var d,s=Object(L["a"])(c);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:c}),e.setActiveElementIdList([n.id])}r()};return{lockElement:i,unlockElement:u}},st=function(){var e=ie(),t=le(),n=Object(g["c"])(e),c=n.activeElementIdList,o=n.activeGroupElementId,l=Object(g["c"])(t),a=l.currentSlide,r=lt(),i=r.addHistorySnapshot,u=function(){if(c.value.length){var n=[];n=o.value?a.value.elements.filter((function(e){return e.id!==o.value})):a.value.elements.filter((function(e){return!c.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}},ft=function(){var e=ie(),t=le(),n=Object(g["c"])(e),c=n.activeElementIdList,o=n.activeElementList,l=n.handleElementId,a=Object(g["c"])(t),r=a.currentSlide,i=lt(),u=i.addHistorySnapshot,d=Object(y["computed"])((function(){if(o.value.length<2)return!1;var e=o.value[0].groupId;if(!e)return!0;var t=o.value.every((function(t){return(t.groupId&&t.groupId)===e}));return!t})),s=function(){var e;if(o.value.length){var n,l=JSON.parse(JSON.stringify(r.value.elements)),a=Object(x["b"])(10),i=[],d=Object(L["a"])(l);try{for(d.s();!(n=d.n()).done;){var s=n.value;c.value.includes(s.id)&&(s.groupId=a,i.push(s))}}catch(O){d.e(O)}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 p=f-i.length+1;(e=l).splice.apply(e,[p,0].concat(i)),t.updateSlide({elements:l}),u()}},f=function(){if(o.value.length){var n=o.value.some((function(e){return e.groupId}));if(n){var a,i=JSON.parse(JSON.stringify(r.value.elements)),d=Object(L["a"])(i);try{for(d.s();!(a=d.n()).done;){var s=a.value;c.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}},bt=function(){var e=ie(),t=Object(g["c"])(e),n=t.activeElementIdList,c=t.activeElementList,o=it(),l=o.pasteTextClipboardData,a=st(),r=a.deleteElement,i=function(){if(n.value.length){var t=ze(JSON.stringify({type:"elements",data:c.value}));Ae(t).then((function(){e.setEditorareaFocus(!0)}))}},u=function(){i(),r()},d=function(){Re().then((function(e){l(e)})).catch((function(e){return Se["a"].warning(e)}))},s=function(){i(),d()};return{copyElement:i,cutElement:u,pasteElement:d,quickCopyElement:s}},pt=function(){var e=ie(),t=Object(g["c"])(le()),n=t.currentSlide,c=function(){var t=n.value.elements.filter((function(e){return!e.lock})),c=t.map((function(e){return e.id}));e.setActiveElementIdList(c)};return{selectAllElement:c}},Ot=function(){var e=le(),t=Object(g["c"])(ie()),n=t.activeElementIdList,c=t.activeGroupElementId,o=Object(g["c"])(e),l=o.currentSlide,a=lt(),r=a.addHistorySnapshot,i=function(t){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,a=[],i=function(e){var n=e.left,c=e.top;switch(t){case V.LEFT:n-=o;break;case V.RIGHT:n+=o;break;case V.UP:c-=o;break;case V.DOWN:c+=o;break;default:break}return Object(S["a"])(Object(S["a"])({},e),{},{left:n,top:c})};a=c.value?l.value.elements.map((function(e){return c.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}},mt=function(){var e=le(),t=Object(g["c"])(e),n=t.currentSlide,c=lt(),o=c.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 c=n.filter((function(e){return e.groupId===t.groupId})),o=l(e,c),a=o.minLevel,r=o.maxLevel;if(r===e.length-1)return;var i=n[r+1],u=n.splice(a,c.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(K["a"])(u)))}else n.splice.apply(n,[a+1,0].concat(Object(K["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 p=n.filter((function(e){return e.groupId===f.groupId}));n.splice(s+p.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 c=n.filter((function(e){return e.groupId===t.groupId})),o=l(e,c),a=o.minLevel;if(0===a)return;var r=n[a-1],i=n.splice(a,c.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(K["a"])(i)))}else n.splice.apply(n,[a-1,0].concat(Object(K["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 c=n.filter((function(e){return e.groupId===t.groupId})),o=l(e,c),a=o.minLevel,r=o.maxLevel;if(r===e.length-1)return null;var i=n.splice(a,c.length);n.push.apply(n,Object(K["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 c=n.filter((function(e){return e.groupId===t.groupId})),o=l(e,c),a=o.minLevel;if(0===a)return;var r=n.splice(a,c.length);n.unshift.apply(n,Object(K["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,c){var l;c===k.UP?l=a(n.value.elements,t):c===k.DOWN?l=r(n.value.elements,t):c===k.TOP?l=i(n.value.elements,t):c===k.BOTTOM&&(l=u(n.value.elements,t)),l&&(e.updateSlide({elements:l}),o())};return{orderElement:d}},vt=function(){var e=document.documentElement;e.requestFullscreen?e.requestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullScreen?e.webkitRequestFullScreen():e.msRequestFullscreen&&e.msRequestFullscreen()},jt=function(){document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.msExitFullscreen&&document.msExitFullscreen()},ht=function(){var e=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement||document.webkitCurrentFullScreenElement;return!!e},yt=function(){var e=Ce(),t=le(),n=function(){vt(),e.setScreening(!0)},c=function(){t.updateSlideIndex(0),n()},o=function(){e.setScreening(!1),ht()&&jt()};return{enterScreening:n,enterScreeningFromStart:c,exitScreening:o}},gt=function(){var e=ie(),t=Object(g["c"])(e),n=t.canvasPercentage,c=t.canvasScale,o=t.canvasDragged,l=Object(y["computed"])((function(){return Math.round(100*c.value)+"%"})),a=function(t){var c=n.value,o=5,l=200,a=30;"+"===t&&c<=l&&(c+=o),"-"===t&&c>=a&&(c-=o),e.setCanvasPercentage(c)},r=function(t){var o=Math.round(t/c.value*n.value)/100;e.setCanvasPercentage(o)},i=function(){e.setCanvasPercentage(90),o&&e.setCanvasDragged(!1)};return{canvasScalePercentage:l,setCanvasScalePercentage:r,scaleCanvas:a,resetCanvas:i}},xt=function(){var e=ie(),t=ke(),n=Object(g["c"])(e),c=n.activeElementIdList,o=n.disableHotkeys,l=n.handleElement,a=n.handleElementId,r=n.editorAreaFocus,i=n.thumbnailsFocus,u=Object(g["c"])(le()),d=u.currentSlide,s=Object(g["c"])(t),f=s.ctrlKeyState,b=s.shiftKeyState,p=s.spaceKeyState,O=ut(),m=O.updateSlideIndex,v=O.copySlide,j=O.createSlide,h=O.deleteSlide,x=O.cutSlide,C=O.copyAndPasteSlide,N=O.selectAllSlide,w=ft(),E=w.combineElements,I=w.uncombineElements,B=st(),S=B.deleteElement,L=dt(),_=L.lockElement,T=bt(),M=T.copyElement,D=T.cutElement,z=T.quickCopyElement,F=pt(),A=F.selectAllElement,R=Ot(),P=R.moveElement,H=mt(),q=H.orderElement,U=lt(),G=U.redo,X=U.undo,Y=yt(),Z=Y.enterScreening,W=Y.enterScreeningFromStart,J=gt(),Q=J.scaleCanvas,K=J.resetCanvas,$=function(){c.value.length?M():i.value&&v()},ee=function(){c.value.length?D():i.value&&x()},te=function(){c.value.length?z():i.value&&C()},ne=function(){r.value&&A(),i.value&&N()},ce=function(){r.value&&_()},oe=function(){r.value&&E()},ae=function(){r.value&&I()},re=function(){c.value.length?S():i.value&&h()},ue=function(e){c.value.length?P(e):e!==V.UP&&e!==V.DOWN||m(e)},de=function(e){e===V.PAGEUP?m(V.UP):e===V.PAGEDOWN&&m(V.DOWN)},se=function(e){l.value&&q(l.value,e)},fe=function(){i.value&&j()},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,c=d.value.elements[n].id;e.setActiveElementIdList([c])}else{var o=d.value.elements[0];e.setActiveElementIdList([o.id])}},pe=function(n){var c=n.ctrlKey,l=n.shiftKey,a=n.altKey,u=n.metaKey,d=c||u,s=n.key.toUpperCase();if(d&&!f.value&&t.setCtrlKeyState(!0),l&&!b.value&&t.setShiftKeyState(!0),o.value||s!==V.SPACE||t.setSpaceKeyState(!0),d&&s===V.P)return n.preventDefault(),void e.setDialogForExport("pdf");if(l&&s===V.F5)return n.preventDefault(),Z(),void t.setShiftKeyState(!1);if(s===V.F5)return n.preventDefault(),void W();if(r.value||i.value){if(d&&s===V.C){if(o.value)return;n.preventDefault(),$()}if(d&&s===V.X){if(o.value)return;n.preventDefault(),ee()}if(d&&s===V.D){if(o.value)return;n.preventDefault(),te()}if(d&&s===V.Z){if(o.value)return;n.preventDefault(),X()}if(d&&s===V.Y){if(o.value)return;n.preventDefault(),G()}if(d&&s===V.A){if(o.value)return;n.preventDefault(),ne()}if(d&&s===V.L){if(o.value)return;n.preventDefault(),ce()}if(!l&&d&&s===V.G){if(o.value)return;n.preventDefault(),oe()}if(l&&d&&s===V.G){if(o.value)return;n.preventDefault(),ae()}if(a&&s===V.F){if(o.value)return;n.preventDefault(),se(k.TOP)}if(a&&s===V.B){if(o.value)return;n.preventDefault(),se(k.BOTTOM)}if(s===V.DELETE||s===V.BACKSPACE){if(o.value)return;n.preventDefault(),re()}if(s===V.UP){if(o.value)return;n.preventDefault(),ue(V.UP)}if(s===V.DOWN){if(o.value)return;n.preventDefault(),ue(V.DOWN)}if(s===V.LEFT){if(o.value)return;n.preventDefault(),ue(V.LEFT)}if(s===V.RIGHT){if(o.value)return;n.preventDefault(),ue(V.RIGHT)}if(s===V.PAGEUP){if(o.value)return;n.preventDefault(),de(V.PAGEUP)}if(s===V.PAGEDOWN){if(o.value)return;n.preventDefault(),de(V.PAGEDOWN)}if(s===V.ENTER){if(o.value)return;n.preventDefault(),fe()}if(s===V.MINUS){if(o.value)return;n.preventDefault(),Q("-")}if(s===V.EQUAL){if(o.value)return;n.preventDefault(),Q("+")}if(s===V.DIGIT_0){if(o.value)return;n.preventDefault(),K()}if(s===V.TAB){if(o.value)return;n.preventDefault(),be()}}},Oe=function(){f.value&&t.setCtrlKeyState(!1),b.value&&t.setShiftKeyState(!1),p.value&&t.setSpaceKeyState(!1)};Object(y["onMounted"])((function(){document.addEventListener("keydown",pe),document.addEventListener("keyup",Oe),window.addEventListener("blur",Oe)})),Object(y["onUnmounted"])((function(){document.removeEventListener("keydown",pe),document.removeEventListener("keyup",Oe),window.removeEventListener("blur",Oe)}))},kt=function(){var e=Object(g["c"])(ie()),t=e.editorAreaFocus,n=e.thumbnailsFocus,c=e.disableHotkeys,o=it(),l=o.pasteTextClipboardData,a=at(),r=a.createImageElement,i=function(e){et(e).then((function(e){return r(e)}))},u=function(e){if((t.value||n.value)&&!c.value&&e.clipboardData){var o=e.clipboardData.items,a=o[0];if(a){var r,u=Object(L["a"])(o);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(y["onMounted"])((function(){document.addEventListener("paste",u)})),Object(y["onUnmounted"])((function(){document.removeEventListener("paste",u)}))},Ct=(n("9911"),n("cc71"),n("21a6")),Nt=n("8f74"),wt=n("e774"),Et=(n("00b4"),["style","script","template"]),Vt=["html","head","body","p","dt","dd","li","option","thead","th","tbody","tr","td","tfoot","colgroup"],It={li:["ul","ol","menu"],dt:["dl"],dd:["dl"],tbody:["table"],thead:["table"],tfoot:["table"],tr:["table"],td:["table"]},Bt=["!doctype","area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],St=function(e,t){var n=t-e.position;Lt(e,n)},Lt=function(e,t){e.position=e.position+t},_t=function(e,t){var n=!1;while(!n){var c=e.indexOf("<",t);if(-1===c)return c;var o=e.charAt(c+1);if("/"===o||"!"===o||/[A-Za-z0-9]/.test(o))return c;t=c+1}return-1},Tt=function(e){var t=e.str,n=_t(t,e.position);if(n!==e.position){-1===n&&(n=t.length);var c=t.slice(e.position,n);St(e,n),e.tokens.push({type:"text",content:c})}},Mt=function(e){var t=e.str;Lt(e,4);var n=t.indexOf("--\x3e",e.position),c=n+3;-1===n&&(n=c=t.length);var o=t.slice(e.position,n);St(e,c),e.tokens.push({type:"comment",content:o})},Dt=function(e){var t=e.str,n=t.length,c=e.position;while(c"===o);if(l)break;c++}var a=c+1;while(a"===r);if(!i)break;a++}St(e,a);var u=t.slice(c,a);return e.tokens.push({type:"tag",content:u}),u},zt=function(e){var t=e.str,n=e.tokens,c=e.position,o=null,l=c,a=[],r=t.length;while(c"===i;if(d){c!==l&&a.push(t.slice(l,c));break}var s=/\s/.test(i);if(s)c!==l&&a.push(t.slice(l,c)),l=c+1,c++;else{var f="'"===i||'"'===i;f?(o=i,c++):c++}}}St(e,c);for(var b="attribute",p=0;p1){var j=O+v;n.push({type:b,content:j}),p+=1;continue}var h=a[p+2];if(p+=1,h){var y=O+"="+h;n.push({type:b,content:y}),p+=1;continue}}}if(Object(te["endsWith"])(O,"=")){var g=a[p+1];if(g&&-1===g.indexOf("=")){var x=O+g;n.push({type:b,content:x}),p+=1;continue}var k=O.slice(0,-1);n.push({type:b,content:k})}else n.push({type:b,content:O})}},Ft=function(e,t){var n=t.str,c=t.tokens,o=e.toLowerCase(),l=n.length,a=t.position;while(a=0){var o=t[c].tagName;if(o===e)break;if(n.includes(o))return!0;c--}}return!1},Ut=function(e,t){e.splice(t)},Gt=function e(t){var n=t.stack,c=t.tokens,o=t.cursor,l=n[n.length-1].children,a=c.length;while(o-1)if(n[d].tagName===u){s=!0;break}while(o0){if(u===n[p].tagName){Ut(n,p);var O=p-1;l=n[O].children;break}p-=1}}var m=[],v=void 0;while(o127&&c<2048?(t+=String.fromCharCode(c>>6|192),t+=String.fromCharCode(63&c|128)):(t+=String.fromCharCode(c>>12|224),t+=String.fromCharCode(c>>6&63|128),t+=String.fromCharCode(63&c|128))}return t},on=function(e){var t,n,c,o,l,a,r,i="",u=0;e=cn(e);while(u>2,l=(3&t)<<4|n>>4,a=(15&n)<<2|c>>6,r=63&c,isNaN(n)?a=r=64:isNaN(c)&&(r=64),i=i+tn.charAt(o)+tn.charAt(l)+tn.charAt(a)+tn.charAt(r);return i},ln=function(e){var t=new XMLSerializer,n=t.serializeToString(e);return nn+on(n)},an=function(){var e=le(),t=Object(g["c"])(e),n=t.slides,c=t.theme,o=t.viewportRatio,l=rt(),a=l.addSlidesFromData,r=Object(y["ref"])(!1),i=function(e,t,n){var c=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];r.value=!0;var o="png"===t?wt["c"]:wt["b"],l=e.querySelectorAll("foreignObject [xmlns]");l.forEach((function(e){return e.removeAttribute("xmlns")})),setTimeout((function(){var l={quality:n,width:1600};c&&(l.fontEmbedCSS=""),o(e,l).then((function(e){r.value=!1,Object(Ct["saveAs"])(e,"pptist_slides.".concat(t))})).catch((function(){r.value=!1,Se["a"].error("导出图片失败")}))}),200)},u=function(e){var t=new Blob([ze(JSON.stringify(e))],{type:""});Object(Ct["saveAs"])(t,"pptist_slides.pptist")},d=function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],c=t[0],o=new FileReader;o.addEventListener("load",(function(){try{var t=JSON.parse(Fe(o.result));n?e.setSlides(t):a(t)}catch(c){Se["a"].error("无法正确读取 / 解析该文件")}})),o.readAsText(c)},s=function(){var e=new Blob([JSON.stringify(n.value)],{type:""});Object(Ct["saveAs"])(e,"pptist_slides.json")},f=function(e){var t=ee()(e),n=t.getAlpha(),c=0===n?"#ffffff":t.setAlpha(1).toHexString();return{alpha:n,color:c}},b=function(e){var t=Jt(e),n=!1,c=0,o=[],l=function e(t){var l,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=Object(L["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&&o.length){var d=o[o.length-1];d.options||(d.options={}),d.options.breakLine=!0}var s=Object(S["a"])({},a),b="attributes"in i?i.attributes.find((function(e){return"style"===e.key})):null;if(b&&b.value){var p,O=b.value.split(";"),m=Object(L["a"])(O);try{for(m.s();!(p=m.n()).done;){var v=p.value,j=v.split(": "),h=Object(Oe["a"])(j,2),y=h[0],g=h[1],x=[Object(te["trim"])(y),Object(te["trim"])(g)],k=x[0],C=x[1];k&&C&&(s[k]=C)}}catch(I){m.e(I)}finally{m.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 N=i.attributes.find((function(e){return"href"===e.key}));s["href"]=(null===N||void 0===N?void 0:N.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&&(c=+w.value)}}if("tagName"in i&&"br"===i.tagName)o.push({text:"",options:{breakLine:!0}});else if("content"in i){var E=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),c&&(V.indentLevel=c,c=0),o.push({text:E,options:V})}else"children"in i&&e(i.children,s)}}catch(I){r.e(I)}finally{r.f()}};return l(t),o},p=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}}))},O=function(e){var t=f(e.color),n=e.h,c=e.v,o=4,l=45;return 0===n&&0===c?(o=4,l=45):0===n?c>0?(o=c,l=90):(o=-c,l=270):0===c?n>0?(o=n,l=1):(o=-n,l=180):n>0&&c>0?(o=Math.max(n,c),l=45):n>0&&c<0?(o=Math.max(n,-c),l=315):n<0&&c>0?(o=Math.max(-n,c),l=135):n<0&&c<0&&(o=Math.max(-n,-c),l=225),{type:"outer",color:t.color.replace("#",""),opacity:t.alpha,blur:.75*e.blur,offset:o,angle:l}},m=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"}},v=function(e){var t=e.type,c=e.target;if("web"===t)return{url:c};if("slide"===t){var o=n.value.findIndex((function(e){return e.id===c}));if(-1!==o)return{slide:o+1}}return null},j=function(e,t){r.value=!0;var n=new Nt["a"];if(.625===o.value?n.layout="LAYOUT_16x10":.75===o.value?n.layout="LAYOUT_4x3":n.layout="LAYOUT_16x9",t){var l=f(c.value.backgroundColor),a=l.color,i=l.alpha;n.defineSlideMaster({title:"PPTIST_MASTER",background:{color:a,transparency:100*(1-i)}})}var u,d=Object(L["a"])(e);try{for(d.s();!(u=d.n()).done;){var s=u.value,j=n.addSlide();if(s.background){var h=s.background;if("image"===h.type&&h.image)j.background={data:h.image};else if("solid"===h.type&&h.color){var y=f(h.color);j.background={color:y.color,transparency:100*(1-y.alpha)}}else if("gradient"===h.type&&h.gradientColor){var g=Object(Oe["a"])(h.gradientColor,2),x=g[0],k=g[1],C=ee.a.mix(x,k).toHexString(),N=f(C);j.background={color:N.color,transparency:100*(1-N.alpha)}}}if(s.remark&&j.addNotes(s.remark),s.elements){var w,E=Object(L["a"])(s.elements);try{var V=function(){var e=w.value;if("text"===e.type){var t,c=b(e.content),o={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&&(o.rotate=e.rotate),e.wordSpace&&(o.charSpacing=.75*e.wordSpace),e.lineHeight&&(o.lineSpacingMultiple=e.lineHeight/1.25),e.fill){var l=f(e.fill),a=void 0===e.opacity?1:e.opacity;o.fill={color:l.color,transparency:100*(1-l.alpha*a)}}e.defaultColor&&(o.color=f(e.defaultColor).color),e.defaultFontName&&(o.fontFace=e.defaultFontName),e.shadow&&(o.shadow=O(e.shadow)),null!==(t=e.outline)&&void 0!==t&&t.width&&(o.line=m(e.outline)),void 0!==e.opacity&&(o.transparency=100*(1-e.opacity)),void 0!==e.paragraphSpace&&(o.paraSpaceBefore=.75*e.paragraphSpace),j.addText(c,o)}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=v(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(Oe["a"])(e.clip.range,2),h=s[0],y=s[1],g=Object(Oe["a"])(h,2),x=g[0],k=g[1],C=Object(Oe["a"])(y,2),N=C[0],E=C[1],V=e.width/((N-x)/100),I=e.height/((E-k)/100);u.w=V/100,u.h=I/100,u.sizing={type:"crop",x:x/100*V/100,y:k/100*I/100,w:(N-x)/100*V/100,h:(E-k)/100*I/100}}j.addImage(u)}else if("shape"===e.type){if(e.special){var B=document.querySelector(".thumbnail-list .base-element-".concat(e.id," svg")),S=ln(B),L={data:S,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 _=v(e.link);_&&(L.hyperlink=_)}j.addImage(L)}else{var T,M={x:e.width/e.viewBox[0],y:e.height/e.viewBox[1]},D=p(en(e.path),M),z=f(e.fill),F=void 0===e.opacity?1:e.opacity,A={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*F)},points:D};if(e.flipH&&(A.flipH=e.flipH),e.flipV&&(A.flipV=e.flipV),e.shadow&&(A.shadow=O(e.shadow)),null!==(T=e.outline)&&void 0!==T&&T.width&&(A.line=m(e.outline)),e.link){var R=v(e.link);R&&(A.hyperlink=R)}j.addShape("custGeom",A)}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),j.addText(P,H)}}else if("line"===e.type){var q=Je(e),U=p(en(q)),G=Ge(e),X=G.minX,Y=G.maxX,Z=G.minY,W=G.maxY,J=f(e.color),Q={x:e.left/100,y:e.top/100,w:(Y-X)/100,h:(W-Z)/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&&(Q.shadow=O(e.shadow)),j.addShape("custGeom",Q)}else if("chart"===e.type){for(var $=[],te=0;te1||je.rowspan>1)for(var he=pe;hei.value){var r=o*(l.value/100);c.setCanvasScale(r/tt),t.value=(o-r)/2,n.value=(a-r*i.value)/2}else{var u=a*(l.value/100);c.setCanvasScale(u/(tt*i.value)),t.value=(o-u/i.value)/2,n.value=(a-u)/2}}};Object(y["watch"])([l,i],u),Object(y["watch"])(a,(function(){a.value||u()}));var d=Object(y["computed"])((function(){return{width:tt,height:tt*i.value,left:t.value,top:n.value}})),s=new ResizeObserver(u);Object(y["onMounted"])((function(){e.value&&s.observe(e.value)})),Object(y["onUnmounted"])((function(){e.value&&s.unobserve(e.value)}));var f=function(e){var o=!0,l=e.pageX,a=e.pageY,r=t.value,i=n.value;document.onmousemove=function(e){if(o){var c=e.pageX,u=e.pageY;t.value=r+(c-l),n.value=i+(u-a)}},document.onmouseup=function(){o=!1,document.onmousemove=null,document.onmouseup=null,c.setCanvasDragged(!0)}};return{viewportStyles:d,dragViewport:f}},lc=function(e,t){var n=ie(),c=Object(g["c"])(n),o=c.canvasScale,l=Object(y["ref"])(!1),a=Object(y["ref"])(1),r=Object(y["ref"])({top:0,left:0,width:0,height:0}),i=function(c){if(t.value){var i=!0,u=t.value.getBoundingClientRect(),d=5,s=c.pageX,f=c.pageY,b=(s-u.x)/o.value,p=(f-u.y)/o.value;r.value={top:p,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,c=(t-s)/o.value,u=(n-f)/o.value,b=Math.abs(c),p=Math.abs(u);if(!(b0&&u>0?O=4:c<0&&u<0?O=1:c>0&&u<0?O=2:c<0&&u>0&&(O=3),r.value=Object(S["a"])(Object(S["a"])({},r.value),{},{width:b,height:p}),l.value=!0,a.value=O}}},document.onmouseup=function(){document.onmousemove=null,document.onmouseup=null,i=!1;for(var t=[],c=0;cu&&Od&&vu-s&&Od-f&&vu&&Od-f&&vu-s&&Od&&v0&&Math.abs(r-45)<=d?r-=r-45:r<0&&Math.abs(r+45)<=d?r-=r+45:r>0&&Math.abs(r-90)<=d?r-=r-90:r<0&&Math.abs(r+90)<=d?r-=r+90:r>0&&Math.abs(r-135)<=d?r-=r-135:r<0&&Math.abs(r+135)<=d?r-=r+135:r>0&&Math.abs(r-180)<=d?r-=r-180:r<0&&Math.abs(r+180)<=d&&(r-=r+180),e.value=e.value.map((function(e){return c.id===e.id?Object(S["a"])(Object(S["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}},uc={text:"文本",image:"图片",shape:"形状",line:"线条",chart:"图表",table:"表格",video:"视频",audio:"音频"},dc={text:20,image:20,shape:15,chart:200,table:20,video:250,audio:20},sc=function(e,t){var n=e.left,c=e.top,o=e.width,l=e.height,a=Math.sqrt(Math.pow(o,2)+Math.pow(l,2))/2,r=180*Math.atan(l/o)/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=o/2,b=l/2,p=n+f,O=c+b,m={left:p+a*Math.cos(i),top:O-a*Math.sin(i)},v={left:p+b*Math.cos(d),top:O-b*Math.sin(d)},j={left:p+a*Math.cos(u),top:O-a*Math.sin(u)},h={left:p+f*Math.cos(s),top:O+f*Math.sin(s)},y={left:p-a*Math.cos(i),top:O+a*Math.sin(i)},g={left:p-b*Math.sin(s),top:O+b*Math.cos(s)},x={left:p-a*Math.cos(u),top:O+a*Math.sin(u)},k={left:p-f*Math.cos(s),top:O-f*Math.sin(s)};return{leftTopPoint:m,topPoint:v,rightTopPoint:j,rightPoint:h,rightBottomPoint:y,bottomPoint:g,leftBottomPoint:x,leftPoint:k}},fc=function(e,t){var n,c=(n={},Object(pe["a"])(n,w.RIGHT_BOTTOM,t.leftTopPoint),Object(pe["a"])(n,w.LEFT_BOTTOM,t.rightTopPoint),Object(pe["a"])(n,w.LEFT_TOP,t.rightBottomPoint),Object(pe["a"])(n,w.RIGHT_TOP,t.leftBottomPoint),Object(pe["a"])(n,w.TOP,t.bottomPoint),Object(pe["a"])(n,w.BOTTOM,t.topPoint),Object(pe["a"])(n,w.LEFT,t.rightPoint),Object(pe["a"])(n,w.RIGHT,t.leftPoint),n);return c[e]},bc=function(e,t,n){var c=ie(),o=le(),l=Object(g["c"])(c),a=l.activeElementIdList,r=l.activeGroupElementId,i=Object(g["c"])(o),u=i.viewportRatio,d=Object(g["c"])(ke()),s=d.ctrlOrShiftKeyActive,f=lt(),b=f.addHistorySnapshot,p=function(l,i,d){var f=!(l instanceof MouseEvent);if(!f||l.changedTouches&&l.changedTouches[0]){var p=!0;c.setScalingState(!0);var O,m=i.left,v=i.top,j=i.width,h=i.height,y="rotate"in i&&i.rotate?i.rotate:0,g=Math.PI*y/180,x=s.value||"fixedRatio"in i&&i.fixedRatio,k=j/h,C=f?l.changedTouches[0].pageX:l.pageX,N=f?l.changedTouches[0].pageY:l.pageY,E=dc[i.type]||20,V=function(e){return e2&&void 0!==arguments[2])||arguments[2];if(r.value||n.setEditorareaFocus(!0),o.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=o.value.filter((function(e){return!f.includes(e)}))}else s=o.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=c instanceof MouseEvent?c.pageX:c.changedTouches[0].pageX,p=c instanceof MouseEvent?c.pageY:c.changedTouches[0].pageY;c.target.onmouseup=function(e){var t=e.pageX,c=e.pageY;b===t&&p===c&&(n.setActiveGroupElementId(i.id),e.target.onmouseup=null)}}}else{var O=[];if(O=u.value?[].concat(Object(K["a"])(o.value),[i.id]):[i.id],i.groupId){var m=[];e.value.forEach((function(e){e.groupId===i.groupId&&m.push(e.id)})),O=[].concat(Object(K["a"])(O),m)}n.setActiveElementIdList(Object(te["uniq"])(O)),n.setHandleElementId(i.id)}d&&t(c,i)},s=function(){var t=e.value.filter((function(e){return!e.lock})),c=t.map((function(e){return e.id}));n.setActiveElementIdList(c)};return{selectElement:d,selectAllElement:s}},Oc=function(e,t,n){var c=le(),o=Object(g["c"])(ie()),l=o.activeElementIdList,a=o.activeGroupElementId,r=Object(g["c"])(c),i=r.viewportRatio,u=lt(),d=u.addHistorySnapshot,s=function(o,r){var u=!(o instanceof MouseEvent);if((!u||o.changedTouches&&o.changedTouches[0])&&l.value.includes(r.id)){var s,f=!0,b=tt,p=tt*i.value,O=5,m=JSON.parse(JSON.stringify(e.value)),v=m.filter((function(e){return l.value.includes(e.id)})),j=r.left,h=r.top,y=r.width,g="height"in r&&r.height?r.height:0,x="rotate"in r&&r.rotate?r.rotate:0,k=u?o.changedTouches[0].pageX:o.pageX,C=u?o.changedTouches[0].pageY:o.pageY,N=null,w=r.id===a.value,E=[],V=[],I=Object(L["a"])(e.value);try{for(I.s();!(s=I.n()).done;){var B=s.value;if("line"!==B.type&&((!w||B.id!==r.id)&&(w||!l.value.includes(B.id)))){var _=void 0,T=void 0,M=void 0,D=void 0;if("rotate"in B&&B.rotate){var z=qe({left:B.left,top:B.top,width:B.width,height:B.height,rotate:B.rotate}),F=z.xRange,A=z.yRange;_=F[0],T=A[0],M=F[1]-F[0],D=A[1]-A[0]}else _=B.left,T=B.top,M=B.width,D=B.height;var R=_+M,P=T+D,H=T+D/2,q=_+M/2,U={value:T,range:[_,R]},G={value:P,range:[_,R]},X={value:H,range:[_,R]},Y={value:_,range:[T,P]},Z={value:R,range:[T,P]},W={value:q,range:[T,P]};E.push(U,G,X),V.push(Y,Z,W)}}}catch(le){I.e(le)}finally{I.f()}var J={value:0,range:[0,b]},Q={value:p,range:[0,b]},$={value:p/2,range:[0,b]},ee={value:0,range:[0,p]},te={value:b,range:[0,p]},ne={value:b/2,range:[0,p]};E.push(J,Q,$),V.push(ee,te,ne),E=Ye(E),V=Ye(V);var ce=function(c){var o=c instanceof MouseEvent?c.pageX:c.changedTouches[0].pageX,a=c instanceof MouseEvent?c.pageY:c.changedTouches[0].pageY;if(!1!==N&&(N=Math.abs(k-o)m&&(X[0]=U-H,Y[0]=0),O>v&&(X[1]=G-q,Y[1]=0),e.value=e.value.map((function(e){if(e.id===o.id){var t=Object(S["a"])(Object(S["a"])({},e),{},{left:H,top:q,start:X,end:Y});return a===E.START||a===E.END?(o.broken&&(t.broken=[(X[0]+Y[0])/2,(X[1]+Y[1])/2]),o.curve&&(t.curve=[(X[0]+Y[0])/2,(X[1]+Y[1])/2]),o.cubic&&(t.cubic=[[(X[0]+Y[0])/2,(X[1]+Y[1])/2],[(X[0]+Y[0])/2,(X[1]+Y[1])/2]])):a===E.C?(o.broken&&(t.broken=[h-H,y-q]),o.curve&&(t.curve=[h-H,y-q])):o.cubic&&(t.cubic=[[N-H,w-q],[V-H,I-q]]),t}return e}))}},document.onmouseup=function(n){r=!1,document.onmousemove=null,document.onmouseup=null;var c=n.pageX,o=n.pageY;u===c&&d===o||(t.updateSlide({elements:e.value}),l())}};return{dragLineElement:a}},vc=function(e){var t=ie(),n=Object(g["c"])(t),c=n.canvasScale,o=n.creatingElement,l=function(t){var n=t.start,o=t.end;if(e.value){var l=e.value.getBoundingClientRect(),a=Object(Oe["a"])(n,2),r=a[0],i=a[1],u=Object(Oe["a"])(o,2),d=u[0],s=u[1],f=Math.min(r,d),b=Math.max(r,d),p=Math.min(i,s),O=Math.max(i,s),m=(f-l.x)/c.value,v=(p-l.y)/c.value,j=(b-f)/c.value,h=(O-p)/c.value;return{left:m,top:v,width:j,height:h}}},a=function(t){var n=t.start,o=t.end;if(e.value){var l=e.value.getBoundingClientRect(),a=Object(Oe["a"])(n,2),r=a[0],i=a[1],u=Object(Oe["a"])(o,2),d=u[0],s=u[1],f=Math.min(r,d),b=Math.max(r,d),p=Math.min(i,s),O=Math.max(i,s),m=(f-l.x)/c.value,v=(p-l.y)/c.value,j=(b-f)/c.value,h=(O-p)/c.value,y=[r===f?0:j,i===p?0:h],g=[d===f?0:j,s===p?0:h];return{left:m,top:v,start:y,end:g}}},r=at(),i=r.createTextElement,u=r.createShapeElement,d=r.createLineElement,s=function(e){if(o.value){var n=o.value.type;if("text"===n){var c=l(e);c&&i(c)}else if("shape"===n){var r=l(e);r&&u(r,o.value.data)}else if("line"===n){var s=a(e);s&&d(s,o.value.data)}t.setCreatingElement(null)}};return{insertElementFromCreateSelection:s}},jc=(n("a9e3"),function(){var e=le(),t=Object(g["c"])(ie()),n=t.activeElementIdList,c=t.activeElementList,o=Object(g["c"])(e),l=o.currentSlide,a=o.viewportRatio,r=lt(),i=r.addHistorySnapshot,u=function(t){var o,r=tt,u=tt*a.value,d=Xe(c.value),s=d.minX,f=d.maxX,b=d.minY,p=d.maxY,O=JSON.parse(JSON.stringify(l.value.elements)),m=Object(L["a"])(O);try{for(m.s();!(o=m.n()).done;){var v=o.value;if(n.value.includes(v.id)){if(t===C.CENTER){var j=b+(p-b)/2-u/2,h=s+(f-s)/2-r/2;v.top=v.top-j,v.left=v.left-h}if(t===C.TOP){var y=b-0;v.top=v.top-y}else if(t===C.VERTICAL){var g=b+(p-b)/2-u/2;v.top=v.top-g}else if(t===C.BOTTOM){var x=p-u;v.top=v.top-x}else if(t===C.LEFT){var k=s-0;v.left=v.left-k}else if(t===C.HORIZONTAL){var N=s+(f-s)/2-r/2;v.left=v.left-N}else if(t===C.RIGHT){var w=f-r;v.left=v.left-w}}}}catch(E){m.e(E)}finally{m.f()}e.updateSlide({elements:O}),i()};return{alignElementToCanvas:u}}),hc=function(e){var t=Object(y["computed"])((function(){if(e.value){var t=e.value,n=t.h,c=t.v,o=t.blur,l=t.color;return"".concat(n,"px ").concat(c,"px ").concat(o,"px ").concat(l)}return""}));return{shadowStyle:t}},yc=function(e,t){var n=Object(y["computed"])((function(){var n="";return e.value&&t.value?n="rotateX(180deg) rotateY(180deg)":t.value?n="rotateX(180deg)":e.value&&(n="rotateY(180deg)"),n}));return{flipStyle:n}};(function(e){e["RECT"]="rect",e["ELLIPSE"]="ellipse",e["POLYGON"]="polygon"})(Kn||(Kn={})),function(e){e["RECT"]="rect",e["ROUNDRECT"]="roundRect",e["ELLIPSE"]="ellipse",e["TRIANGLE"]="triangle",e["PENTAGON"]="pentagon",e["RHOMBUS"]="rhombus",e["STAR"]="star"}($n||($n={}));var gc={rect:{name:"矩形",type:Kn.RECT,radius:"0",style:""},rect2:{name:"矩形2",type:Kn.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:Kn.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:Kn.RECT,radius:"10%",style:"inset(0 0 0 0 round 10% 10% 10% 10%)"},ellipse:{name:"圆形",type:Kn.ELLIPSE,style:"ellipse(50% 50% at 50% 50%)"},triangle:{name:"三角形",type:Kn.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:Kn.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:Kn.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:Kn.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:Kn.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:Kn.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:Kn.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:Kn.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:Kn.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:Kn.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")}}},xc=function(e){var t=Object(y["computed"])((function(){if(!e.value)return gc.rect;var t=e.value.shape||Kn.RECT;return gc[t]})),n=Object(y["computed"])((function(){if(!e.value)return{top:"0",left:"0",width:"100%",height:"100%"};var t=Object(Oe["a"])(e.value.range,2),n=t[0],c=t[1],o=(c[0]-n[0])/100,l=(c[1]-n[1])/100,a=n[0]/o,r=n[1]/l;return{left:-a+"%",top:-r+"%",width:100/o+"%",height:100/l+"%"}}));return{clipShape:t,imgPosition:n}},kc=(n("b64b"),function(e){var t=Object(y["computed"])((function(){if(!e.value)return"";for(var t="",n=0,c=Object.keys(e.value);n45&&c.rotate<135&&(d=(u-o)/l.value/c.width*100,s=-(i-n)/l.value/c.height*100),(c.rotate>=135&&c.rotate<=180||c.rotate>=-180&&c.rotate<=-135)&&(d=-d,s=-s),c.rotate>-135&&c.rotate<-45&&(d=-(u-o)/l.value/c.width*100,s=(i-n)/l.value/c.height*100);var f=r.left+d,b=r.top+s;f<0?f=0:f+r.width>a.width&&(f=a.width-r.width),b<0?b=0:b+r.height>a.height&&(b=a.height-r.height),p.value=Object(S["a"])(Object(S["a"])({},p.value),{},{left:f,top:b})}},document.onmouseup=function(){t=!1,document.onmousemove=null,document.onmouseup=null,x(),setTimeout((function(){u.value=!1}),0)}},C=function(e,t){u.value=!0;var n=!0,o=50/c.width*100,a=50/c.height*100,i=e.pageX,d=e.pageY,s=f.value,b=Object(S["a"])({},p.value),O=p.value.width/p.value.height;document.onmousemove=function(e){if(n){var u,f,m,v,j=e.pageX,h=e.pageY,y=(j-i)/l.value/c.width*100,g=(h-d)/l.value/c.height*100;c.rotate>45&&c.rotate<135&&(y=(h-d)/l.value/c.width*100,g=-(j-i)/l.value/c.height*100),(c.rotate>=135&&c.rotate<=180||c.rotate>=-180&&c.rotate<=-135)&&(y=-y,g=-g),c.rotate>-135&&c.rotate<-45&&(y=-(h-d)/l.value/c.width*100,g=(j-i)/l.value/c.height*100),r.value&&(t!==w.RIGHT_BOTTOM&&t!==w.LEFT_TOP||(g=y/O),t!==w.LEFT_BOTTOM&&t!==w.RIGHT_TOP||(g=-y/O)),t===w.LEFT_TOP?(b.left+y<0&&(y=-b.left),b.top+g<0&&(g=-b.top),b.width-ys.width&&(y=s.width-(b.left+b.width)),b.top+g<0&&(g=-b.top),b.width+ys.height&&(g=s.height-(b.top+b.height)),b.width-ys.width&&(y=s.width-(b.left+b.width)),b.top+b.height+g>s.height&&(g=s.height-(b.top+b.height)),b.width+ys.height&&(g=s.height-(b.top+b.height)),b.height+gs.width&&(y=s.width-(b.left+b.width)),b.width+y-22.5&&t<=22.5?e+0:t>22.5&&t<=67.5?e+45:t>67.5&&t<=112.5?e+90:t>112.5&&t<=157.5?e+135:t>157.5||t<=-157.5?e+0:t>-157.5&&t<=-112.5?e+45:t>-112.5&&t<=-67.5?e+90:t>-67.5&&t<=-22.5?e+135:e+0})),E=[w.LEFT_TOP,w.RIGHT_TOP,w.LEFT_BOTTOM,w.RIGHT_BOTTOM],I=[w.TOP,w.BOTTOM,w.LEFT,w.RIGHT];return function(t,n){var c=Object(y["resolveDirective"])("click-outside");return Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"image-clip-handler",style:Object(y["normalizeStyle"])(i.value)},[Object(y["createElementVNode"])("img",{class:"bottom-img",src:e.src,draggable:!1,alt:"",style:Object(y["normalizeStyle"])(Object(y["unref"])(b))},null,12,Gc),Object(y["createElementVNode"])("div",{class:"top-image-content",style:Object(y["normalizeStyle"])(Object(S["a"])(Object(S["a"])({},Object(y["unref"])(O)),{},{clipPath:e.clipPath}))},[Object(y["createElementVNode"])("img",{class:"top-img",src:e.src,draggable:!1,alt:"",style:Object(y["normalizeStyle"])(Object(y["unref"])(m))},null,12,Xc)],4),Object(y["createElementVNode"])("div",{class:"operate",style:Object(y["normalizeStyle"])(Object(y["unref"])(O)),onMousedown:n[0]||(n[0]=Object(y["withModifiers"])((function(e){return k(e)}),["stop"]))},[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(E,(function(e){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["clip-point",e,Object(y["unref"])(N)]),key:e,onMousedown:Object(y["withModifiers"])((function(t){return C(t,e)}),["stop"])},Wc,42,Yc)})),64)),(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(I,(function(e){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["clip-point",e,Object(y["unref"])(N)]),key:e,onMousedown:Object(y["withModifiers"])((function(t){return C(t,e)}),["stop"])},Kc,42,Jc)})),64))],36)],4)),[[c,j]])}}});n("5970");const eo=pn()($c,[["__scopeId","data-v-3e0199ec"]]);var to=eo,no=["src"],co=Object(y["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=e,n=ie(),c=le(),o=Object(g["c"])(n),l=o.clipingImageElementId,a=Object(y["computed"])((function(){return l.value===t.elementInfo.id})),r=lt(),i=r.addHistorySnapshot,u=Object(y["computed"])((function(){return t.elementInfo.shadow})),d=hc(u),s=d.shadowStyle,f=Object(y["computed"])((function(){return t.elementInfo.flipH})),b=Object(y["computed"])((function(){return t.elementInfo.flipV})),p=yc(f,b),O=p.flipStyle,m=Object(y["computed"])((function(){return t.elementInfo.clip})),v=xc(m),j=v.clipShape,h=v.imgPosition,x=Object(y["computed"])((function(){return t.elementInfo.filters})),k=kc(x),C=k.filter,N=function(e){t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},w=function(e){if(n.setClipingImageElementId(""),e){var o=e.range,l=e.position,a=t.elementInfo.clip||{shape:"rect",range:[[0,0],[100,100]]},r=t.elementInfo.left+l.left,u=t.elementInfo.top+l.top,d=t.elementInfo.width+l.width,s=t.elementInfo.height+l.height,f=0,b=0;if(t.elementInfo.rotate){var p=r+d/2-(t.elementInfo.left+t.elementInfo.width/2),O=-(u+s/2-(t.elementInfo.top+t.elementInfo.height/2)),m=-t.elementInfo.rotate*Math.PI/180,v=p*Math.cos(m)-O*Math.sin(m),j=p*Math.sin(m)+O*Math.cos(m);f=v-p,b=-(j-O)}var h={clip:Object(S["a"])(Object(S["a"])({},a),{},{range:o}),left:r+f,top:u+b,width:d,height:s};c.updateElement({id:t.elementInfo.id,props:h}),i()}};return function(t,n){var c=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-image",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["unref"])(a)?(Object(y["openBlock"])(),Object(y["createBlock"])(to,{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:Object(y["unref"])(j).style,onClip:n[0]||(n[0]=function(e){return w(e)})},null,8,["src","clipData","width","height","top","left","rotate","clipPath"])):Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:1,class:"element-content",style:Object(y["normalizeStyle"])({filter:Object(y["unref"])(s)?"drop-shadow(".concat(Object(y["unref"])(s),")"):"",transform:Object(y["unref"])(O)}),onMousedown:n[2]||(n[2]=function(e){return N(e)}),onTouchstart:n[3]||(n[3]=function(e){return N(e)})},[Object(y["createVNode"])(qc,{elementInfo:e.elementInfo},null,8,["elementInfo"]),Object(y["createElementVNode"])("div",{class:"image-content",style:Object(y["normalizeStyle"])({clipPath:Object(y["unref"])(j).style})},[Object(y["createElementVNode"])("img",{src:e.elementInfo.src,draggable:!1,style:Object(y["normalizeStyle"])({top:Object(y["unref"])(h).top,left:Object(y["unref"])(h).left,width:Object(y["unref"])(h).width,height:Object(y["unref"])(h).height,filter:Object(y["unref"])(C)}),onDragstart:n[1]||(n[1]=Object(y["withModifiers"])((function(){}),["prevent"])),alt:""},null,44,no)],4)],36)),[[c,e.contextmenus]])],4)],6)}}});n("7394");const oo=pn()(co,[["__scopeId","data-v-30dc7050"]]);var lo=oo,ao=["width","height"],ro=["d","stroke","stroke-width","stroke-dasharray"],io=Object(y["defineComponent"])({__name:"ElementOutline",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},outline:{type:Object}},setup:function(e){var t=e,n=Cc(Object(y["toRef"])(t,"outline")),c=n.outlineWidth,o=n.outlineStyle,l=n.outlineColor;return function(t,n){return e.outline?(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{key:0,class:"element-outline",overflow:"visible",width:e.width,height:e.height},[Object(y["createElementVNode"])("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:"transparent",d:"M0,0 L".concat(e.width,",0 L").concat(e.width,",").concat(e.height," L0,").concat(e.height," Z"),stroke:Object(y["unref"])(l),"stroke-width":Object(y["unref"])(c),"stroke-dasharray":"dashed"===Object(y["unref"])(o)?"10 6":"0 0"},null,8,ro)],8,ao)):Object(y["createCommentVNode"])("",!0)}}});n("4731");const uo=pn()(io,[["__scopeId","data-v-61b7d06a"]]);var so,fo=uo,bo=n("5313"),po=n("576a"),Oo=n("304a"),mo=n("7f06"),vo=n("8726"),jo=n("23f1"),ho=n("1a16"),yo=n("665f"),go=n("f95e"),xo=function(e){var t={},n=function(e,n){return t[e]=n};return n("Alt-ArrowUp",_["c"]),n("Alt-ArrowDown",_["b"]),n("Ctrl-z",vo["c"]),n("Ctrl-y",vo["b"]),n("Backspace",go["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(yo["f"])(e.nodes.list_item)),n("Mod-[",Object(yo["b"])(e.nodes.list_item)),n("Mod-]",Object(yo["e"])(e.nodes.list_item)),t},ko=function(e){return Object(go["g"])(/^\s*>\s$/,e)},Co=function(e){return Object(go["g"])(/^(\d+)\.\s$/,e,(function(e){return{order:+e[1]}}),(function(e,t){return t.childCount+t.attrs.order===+e[1]}))},No=function(e){return Object(go["g"])(/^\s*([-+*])\s$/,e)},wo=function(e){return Object(go["e"])(/^```$/,e)},Eo=function(e){var t=[].concat(Object(K["a"])(go["d"]),[go["a"],go["b"]]);return t.push(ko(e.nodes.blockquote)),t.push(Co(e.nodes.ordered_list)),t.push(No(e.nodes.bullet_list)),t.push(wo(e.nodes.code_block)),Object(go["c"])({rules:t})},Vo=function(e){return[Eo(e),Object(mo["b"])(xo(e)),Object(mo["b"])(_["a"]),Object(jo["a"])(),Object(ho["a"])(),Object(vo["a"])()]},Io=n("2210"),Bo=Object(S["a"])(Object(S["a"])({},yo["d"]),{},{content:"list_item+",group:"block"}),So=Object(S["a"])(Object(S["a"])({},yo["a"]),{},{content:"list_item+",group:"block"}),Lo=Object(S["a"])(Object(S["a"])({},yo["c"]),{},{content:"paragraph block*",group:"block"}),_o={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 c=+(e.getAttribute("data-indent")||0);return{align:n,indent:c}}}],toDOM:function(e){var t=e.attrs,n=t.align,c=t.indent,o="";n&&"left"!==n&&(o+="text-align: ".concat(n,";"));var l={style:o};return c&&(l["data-indent"]=c),["p",l,0]}},To=Object(S["a"])(Object(S["a"])({},Io["b"]),{},{ordered_list:Bo,bullet_list:So,list_item:Lo,paragraph:_o}),Mo={excludes:"subscript",parseDOM:[{tag:"sub"},{style:"vertical-align",getAttrs:function(e){return"sub"===e&&null}}],toDOM:function(){return["sub",0]}},Do={excludes:"superscript",parseDOM:[{tag:"sup"},{style:"vertical-align",getAttrs:function(e){return"super"===e&&null}}],toDOM:function(){return["sup",0]}},zo={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]}},Fo={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]}},Ao={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]}},Ro={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]}},Po={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]}},Ho={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]}},qo={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]}},Uo=Object(S["a"])(Object(S["a"])({},Io["a"]),{},{subscript:Mo,superscript:Do,strikethrough:zo,underline:Fo,forecolor:Ao,backcolor:Ro,fontsize:Po,fontname:Ho,link:qo}),Go=To,Xo=Uo,Yo=new Oo["i"]({nodes:Go,marks:Xo}),Zo=function(e){var t="
".concat(e,"
"),n=new window.DOMParser,c=n.parseFromString(t,"text/html").body.firstElementChild;return Oo["a"].fromSchema(Yo).parse(c)},Wo=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return new po["c"](e,Object(S["a"])({state:bo["b"].create({doc:Zo(t),plugins:Vo(Yo)})},n))},Jo=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"})(so||(so={}));var Qo=Object(Jo["a"])(),Ko=Qo,$o=(n("6062"),function(e,t,n){var c=e,o=c.selection,l=c.doc;if(!o||!l)return e;var a=o.from,r=o.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 c=e.type,o=e.attrs.align||"";return o!==n&&b.has(c)&&f.push({node:e,pos:t,nodeType:c}),!0})),f.length?(f.forEach((function(t){var c=t.node,o=t.pos,l=t.nodeType,a=c.attrs;a=n?Object(S["a"])(Object(S["a"])({},a),{},{align:n}):Object(S["a"])(Object(S["a"])({},a),{},{align:null}),e=e.setNodeMarkup(o,l,a,c.marks)})),e):e}),el=function(e,t){var n=e.state,c=n.schema,o=n.selection,l=$o(n.tr.setSelection(o),c,t);e.dispatch(l)},tl=function(e,t){return e.type===t.nodes.bullet_list||e.type===t.nodes.ordered_list},nl=function(e,t){return function(n,c){var o=n.schema,l=n.selection,a=l.$from,r=l.$to,i=a.blockRange(r);if(!i)return!1;var u=A((function(e){return tl(e,o)}))(l);if(i.depth>=1&&u&&i.depth-u.depth<=1){if(u.node.type===e)return Object(yo["b"])(t)(n,c);if(tl(u.node,o)&&e.validContent(u.node.content)){var d=n.tr;return d.setNodeMarkup(u.pos,e),c&&c(d),!1}}return Object(yo["g"])(e)(n,c)}};function cl(e,t,n){if(!e.doc)return e;var c=e.doc.nodeAt(t);if(!c)return e;var o=0,l=7,a=(c.attrs.indent||0)+n;if(al&&(a=l),a===c.attrs.indent)return e;var r=Object(S["a"])(Object(S["a"])({},c.attrs),{},{indent:a});return e.setNodeMarkup(t,c.type,r,c.marks)}var ol=function(e,t,n){var c=e,o=c.selection,l=c.doc;if(!o||!l)return e;if(!(o instanceof bo["g"]||o instanceof bo["a"]))return e;var a=o.from,r=o.to;return l.nodesBetween(a,r,(function(c,o){var l=c.type;return"paragraph"===l.name||"blockquote"===l.name?(e=cl(e,o,n),!1):!tl(c,t)})),e},ll=function(e,t){var n=e.state,c=n.schema,o=n.selection,l=ol(n.tr.setSelection(o),c,t);return!!l.docChanged&&(e.dispatch(l),!0)},al=Object(y["defineComponent"])({__name:"ProsemirrorEditor",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}},emits:["update","focus","blur"],setup:function(e,t){var n,c=t.emit,o=e,l=ie(),a=Object(g["c"])(l),r=a.handleElementId,i=Object(y["ref"])(),u=Object(te["debounce"])((function(){c("update",n.dom.innerHTML)}),300,{trailing:!0}),d=function(){l.setDisableHotkeysState(!0),c("focus")},s=function(){l.setDisableHotkeysState(!1),c("blur")},f=Object(te["debounce"])((function(){var e=Z(n,{color:o.defaultColor,fontname:o.defaultFontName});l.setRichtextAttrs(e)}),30,{trailing:!0}),b=function(){u(),f()},p=Object(y["computed"])((function(){return o.value}));Object(y["watch"])(p,(function(){if(n&&!n.hasFocus()){var e=n.state,t=e.doc,c=e.tr;n.dispatch(c.replaceRangeWith(0,t.content.size,Zo(p.value)))}})),Object(y["watch"])((function(){return o.editable}),(function(){n.setProps({editable:function(){return o.editable}})})),Object(y["onMounted"])((function(){n=Wo(i.value,p.value,{handleDOMEvents:{focus:d,blur:s,keydown:b,click:f},editable:function(){return o.editable}}),o.autoFocus&&n.focus()})),Object(y["onUnmounted"])((function(){n&&n.destroy()}));var O=function(e){var t=e.target,c=e.action;if((t||r.value===o.elementId)&&(!t||t===o.elementId)){var l,a="command"in c?[c]:c,i=Object(L["a"])(a);try{for(i.s();!(l=i.n()).done;){var d=l.value;if("fontname"===d.command&&d.value){var s=n.state.schema.marks.fontname.create({fontname:d.value});T(n),M(n,s)}else if("fontsize"===d.command&&d.value){var b=n.state.schema.marks.fontsize.create({fontsize:d.value});T(n),M(n,b)}else if("fontsize-add"===d.command){var p=d.value?+d.value:2;T(n);var O=W(n)+p+"px",m=n.state.schema.marks.fontsize.create({fontsize:O});M(n,m)}else if("fontsize-reduce"===d.command){var v=d.value?+d.value:2;T(n);var j=W(n)-v;j<12&&(j=12);var h=n.state.schema.marks.fontsize.create({fontsize:j+"px"});M(n,h)}else if("color"===d.command&&d.value){var y=n.state.schema.marks.forecolor.create({color:d.value});T(n),M(n,y)}else if("backcolor"===d.command&&d.value){var g=n.state.schema.marks.backcolor.create({backcolor:d.value});T(n),M(n,g)}else if("bold"===d.command)T(n),Object(_["f"])(n.state.schema.marks.strong)(n.state,n.dispatch);else if("em"===d.command)T(n),Object(_["f"])(n.state.schema.marks.em)(n.state,n.dispatch);else if("underline"===d.command)T(n),Object(_["f"])(n.state.schema.marks.underline)(n.state,n.dispatch);else if("strikethrough"===d.command)T(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)ll(n,+d.value);else if("bulletList"===d.command){var x=n.state.schema.nodes,k=x.bullet_list,C=x.list_item;nl(k,C)(n.state,n.dispatch)}else if("orderedList"===d.command){var N=n.state.schema.nodes,w=N.ordered_list,E=N.list_item;nl(w,E)(n.state,n.dispatch)}else if("clear"===d.command){T(n);var V=n.state.selection,I=V.$from,B=V.$to;n.dispatch(n.state.tr.removeMark(I.pos,B.pos))}else if("link"===d.command){var S=n.state.schema.marks.link,z=n.state.selection,F=z.from,A=z.to,R=D(n.state.doc,F,A,S);if(R)if(d.value){var P=n.state.schema.marks.link.create({href:d.value,title:d.value});M(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,S));else if(G(n.state,S))if(d.value){var H=n.state.schema.marks.link.create({href:d.value,title:d.value});M(n,H)}else Object(_["f"])(S)(n.state,n.dispatch);else d.value&&(T(n),Object(_["f"])(S,{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){i.e(q)}finally{i.f()}n.focus(),u(),f()}};return Ko.on(so.RICH_TEXT_COMMAND,O),Object(y["onUnmounted"])((function(){Ko.off(so.RICH_TEXT_COMMAND,O)})),function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"prosemirror-editor",ref_key:"editorViewRef",ref:i},null,512)}}});n("825d");const rl=pn()(al,[["__scopeId","data-v-01b8c64e"]]);var il=rl,ul=function(e){return Object(y["pushScopeId"])("data-v-7135a611"),e=e(),Object(y["popScopeId"])(),e},dl=ul((function(){return Object(y["createElementVNode"])("div",{class:"drag-handler top"},null,-1)})),sl=ul((function(){return Object(y["createElementVNode"])("div",{class:"drag-handler bottom"},null,-1)})),fl=Object(y["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=e,n=ie(),c=le(),o=Object(g["c"])(n),l=o.handleElementId,a=o.isScaling,r=lt(),i=r.addHistorySnapshot,u=Object(y["ref"])(),d=Object(y["computed"])((function(){return t.elementInfo.shadow})),s=hc(d),f=s.shadowStyle,b=function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo,n))},p=Object(y["ref"])(-1);Object(y["watch"])(a,(function(){l.value===t.elementInfo.id&&(a.value||-1===p.value||(c.updateElement({id:t.elementInfo.id,props:{height:p.value}}),p.value=-1))}));var O=function(e){var n=e[0].contentRect;if(u.value){var o=n.height;t.elementInfo.height!==o&&(a.value?p.value=o:c.updateElement({id:t.elementInfo.id,props:{height:o}}))}},m=new ResizeObserver(O);Object(y["onMounted"])((function(){u.value&&m.observe(u.value)})),Object(y["onUnmounted"])((function(){u.value&&m.unobserve(u.value)}));var v=function(e){c.updateElement({id:t.elementInfo.id,props:{content:e}}),i()},j=function(){var e=t.elementInfo.content.replaceAll(/<[^>]+>/g,"");e||c.deleteElement(t.elementInfo.id)},h=Object(y["computed"])((function(){return l.value===t.elementInfo.id}));return Object(y["watch"])(h,(function(){h.value||j()})),function(t,n){var c=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-text",{lock:e.elementInfo.lock}]),ref_key:"elementRef",ref:u,style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({backgroundColor:e.elementInfo.fill,opacity:e.elementInfo.opacity,textShadow:Object(y["unref"])(f),lineHeight:e.elementInfo.lineHeight,letterSpacing:(e.elementInfo.wordSpace||0)+"px",color:e.elementInfo.defaultColor,fontFamily:e.elementInfo.defaultFontName}),onMousedown:n[3]||(n[3]=function(e){return b(e)}),onTouchstart:n[4]||(n[4]=function(e){return b(e)})},[Object(y["createVNode"])(fo,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(y["createVNode"])(il,{class:"text",elementId:e.elementInfo.id,defaultColor:e.elementInfo.defaultColor,defaultFontName:e.elementInfo.defaultFontName,editable:!e.elementInfo.lock,value:e.elementInfo.content,style:Object(y["normalizeStyle"])({"--textIndent":"".concat(e.elementInfo.textIndent||0,"px"),"--paragraphSpace":"".concat(void 0===e.elementInfo.paragraphSpace?5:e.elementInfo.paragraphSpace,"px")}),onUpdate:n[0]||(n[0]=function(e){return v(e)}),onMousedown:n[1]||(n[1]=function(e){return b(e,!1)}),onTouchstart:n[2]||(n[2]=function(e){return b(e)})},null,8,["elementId","defaultColor","defaultFontName","editable","value","style"]),dl,sl],36)),[[c,e.contextmenus]])],4)],6)}}});n("59bb");const bl=pn()(fl,[["__scopeId","data-v-7135a611"]]);var pl=bl,Ol=["id","gradientTransform"],ml=["stop-color"],vl=["stop-color"],jl=["id"],hl=["stop-color"],yl=["stop-color"],gl=Object(y["defineComponent"])({__name:"GradientDefs",props:{id:{type:String,required:!0},type:{type:String},color1:{type:String,required:!0},color2:{type:String,required:!0},rotate:{type:Number,default:0}},setup:function(e){return function(t,n){return"linear"===e.type?(Object(y["openBlock"])(),Object(y["createElementBlock"])("linearGradient",{key:0,id:e.id,x1:"0%",y1:"0%",x2:"100%",y2:"0%",gradientTransform:"rotate(".concat(e.rotate,",0.5,0.5)")},[Object(y["createElementVNode"])("stop",{offset:"0%","stop-color":e.color1},null,8,ml),Object(y["createElementVNode"])("stop",{offset:"100%","stop-color":e.color2},null,8,vl)],8,Ol)):(Object(y["openBlock"])(),Object(y["createElementBlock"])("radialGradient",{key:1,id:e.id},[Object(y["createElementVNode"])("stop",{offset:"0%","stop-color":e.color1},null,8,hl),Object(y["createElementVNode"])("stop",{offset:"100%","stop-color":e.color2},null,8,yl)],8,jl))}}});const xl=gl;var kl=xl,Cl=["width","height"],Nl={key:0},wl=["transform"],El=["d","fill","stroke","stroke-width","stroke-dasharray"],Vl=Object(y["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=e,n=ie(),c=le(),o=Object(g["c"])(n),l=o.handleElementId,a=lt(),r=a.addHistorySnapshot,i=function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo,n))},u=Object(y["computed"])((function(){return t.elementInfo.outline})),d=Cc(u),s=d.outlineWidth,f=d.outlineStyle,b=d.outlineColor,p=Object(y["computed"])((function(){return t.elementInfo.shadow})),O=hc(p),m=O.shadowStyle,v=Object(y["computed"])((function(){return t.elementInfo.flipH})),j=Object(y["computed"])((function(){return t.elementInfo.flipV})),h=yc(v,j),x=h.flipStyle,k=Object(y["ref"])(!1);Object(y["watch"])(l,(function(){l.value!==t.elementInfo.id&&k.value&&(k.value=!1)}));var C=Object(y["computed"])((function(){var e={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"};return t.elementInfo.text?t.elementInfo.text:e})),N=function(e){var n=Object(S["a"])(Object(S["a"])({},C.value),{},{content:e});c.updateElement({id:t.elementInfo.id,props:{text:n}}),r()},w=function(){if(t.elementInfo.text){var e=t.elementInfo.text.content.replaceAll(/<[^>]+>/g,"");e||(c.removeElementProps({id:t.elementInfo.id,propName:"text"}),r())}};return function(t,n){var c=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-shape",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({opacity:e.elementInfo.opacity,filter:Object(y["unref"])(m)?"drop-shadow(".concat(Object(y["unref"])(m),")"):"",transform:Object(y["unref"])(x),color:Object(y["unref"])(C).defaultColor,fontFamily:Object(y["unref"])(C).defaultFontName}),onMousedown:n[4]||(n[4]=function(e){return i(e)}),onTouchstart:n[5]||(n[5]=function(e){return i(e)}),onDblclick:n[6]||(n[6]=function(e){return k.value=!0})},[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height},[e.elementInfo.gradient?(Object(y["openBlock"])(),Object(y["createElementBlock"])("defs",Nl,[Object(y["createVNode"])(kl,{id:"editabel-gradient-".concat(e.elementInfo.id),type:e.elementInfo.gradient.type,color1:e.elementInfo.gradient.color[0],color2:e.elementInfo.gradient.color[1],rotate:e.elementInfo.gradient.rotate},null,8,["id","type","color1","color2","rotate"])])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("g",{transform:"scale(".concat(e.elementInfo.width/e.elementInfo.viewBox[0],", ").concat(e.elementInfo.height/e.elementInfo.viewBox[1],") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(y["createElementVNode"])("path",{class:"shape-path","vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",d:e.elementInfo.path,fill:e.elementInfo.gradient?"url(#editabel-gradient-".concat(e.elementInfo.id,")"):e.elementInfo.fill,stroke:Object(y["unref"])(b),"stroke-width":Object(y["unref"])(s),"stroke-dasharray":"dashed"===Object(y["unref"])(f)?"10 6":"0 0"},null,8,El)],8,wl)],8,Cl)),Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["shape-text",[Object(y["unref"])(C).align,{editable:k.value||Object(y["unref"])(C).content}]])},[k.value||Object(y["unref"])(C).content?(Object(y["openBlock"])(),Object(y["createBlock"])(il,{key:0,elementId:e.elementInfo.id,defaultColor:Object(y["unref"])(C).defaultColor,defaultFontName:Object(y["unref"])(C).defaultFontName,editable:!e.elementInfo.lock,autoFocus:!0,value:Object(y["unref"])(C).content,onUpdate:n[0]||(n[0]=function(e){return N(e)}),onBlur:n[1]||(n[1]=function(e){return w()}),onMousedown:n[2]||(n[2]=function(e){return i(e,!1)}),onTouchstart:n[3]||(n[3]=function(e){return i(e,!1)})},null,8,["elementId","defaultColor","defaultFontName","editable","value"])):Object(y["createCommentVNode"])("",!0)],2)],36)),[[c,e.contextmenus]])],4)],6)}}});n("6506");const Il=pn()(Vl,[["__scopeId","data-v-4e9cdb03"]]);var Bl=Il,Sl=["id","markerWidth","markerHeight","refX","refY"],Ll=["d","fill","transform"],_l=Object(y["defineComponent"])({__name:"LinePointMarker",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=e,n={dot:"m0 5a5 5 0 1 0 10 0a5 5 0 1 0 -10 0z",arrow:"M0,0 L10,5 0,10 Z"},c={"arrow-start":180,"arrow-end":0},o=Object(y["computed"])((function(){return n[t.type]})),l=Object(y["computed"])((function(){return c["".concat(t.type,"-").concat(t.position)]||0})),a=Object(y["computed"])((function(){return t.baseSize<2?2:t.baseSize}));return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("marker",{id:"".concat(e.id,"-").concat(e.type,"-").concat(e.position),markerUnits:"userSpaceOnUse",orient:"auto",markerWidth:3*Object(y["unref"])(a),markerHeight:3*Object(y["unref"])(a),refX:1.5*Object(y["unref"])(a),refY:1.5*Object(y["unref"])(a)},[Object(y["createElementVNode"])("path",{d:Object(y["unref"])(o),fill:e.color,transform:"scale(".concat(.3*Object(y["unref"])(a),", ").concat(.3*Object(y["unref"])(a),") rotate(").concat(Object(y["unref"])(l),", 5, 5)")},null,8,Ll)],8,Sl)}}});const Tl=_l;var Ml=Tl,Dl=["width","height"],zl=["d","stroke","stroke-width","stroke-dasharray","marker-start","marker-end"],Fl=["d"],Al=Object(y["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=e,n=function(e){t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},c=Object(y["computed"])((function(){return t.elementInfo.shadow})),o=hc(c),l=o.shadowStyle,a=Object(y["computed"])((function(){var e=Math.abs(t.elementInfo.start[0]-t.elementInfo.end[0]);return e<24?24:e})),r=Object(y["computed"])((function(){var e=Math.abs(t.elementInfo.start[1]-t.elementInfo.end[1]);return e<24?24:e})),i=Object(y["computed"])((function(){return"dashed"===t.elementInfo.style?"10 6":"0 0"})),u=Object(y["computed"])((function(){return Je(t.elementInfo)}));return function(t,c){var o=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-shape",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px"})},[Object(y["createElementVNode"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({filter:Object(y["unref"])(l)?"drop-shadow(".concat(Object(y["unref"])(l),")"):""}),onMousedown:c[0]||(c[0]=function(e){return n(e)}),onTouchstart:c[1]||(c[1]=function(e){return n(e)})},[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{overflow:"visible",width:Object(y["unref"])(a),height:Object(y["unref"])(r)},[Object(y["createElementVNode"])("defs",null,[e.elementInfo.points[0]?(Object(y["openBlock"])(),Object(y["createBlock"])(Ml,{key:0,id:e.elementInfo.id,position:"start",type:e.elementInfo.points[0],color:e.elementInfo.color,baseSize:e.elementInfo.width},null,8,["id","type","color","baseSize"])):Object(y["createCommentVNode"])("",!0),e.elementInfo.points[1]?(Object(y["openBlock"])(),Object(y["createBlock"])(Ml,{key:1,id:e.elementInfo.id,position:"end",type:e.elementInfo.points[1],color:e.elementInfo.color,baseSize:e.elementInfo.width},null,8,["id","type","color","baseSize"])):Object(y["createCommentVNode"])("",!0)]),Object(y["createElementVNode"])("path",{class:"line-point",d:Object(y["unref"])(u),stroke:e.elementInfo.color,"stroke-width":e.elementInfo.width,"stroke-dasharray":Object(y["unref"])(i),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,zl),Object(y["withDirectives"])(Object(y["createElementVNode"])("path",{class:"line-path",d:Object(y["unref"])(u),stroke:"transparent","stroke-width":"20",fill:"none"},null,8,Fl),[[o,e.contextmenus]])],8,Dl))],36)],6)}}});n("bde5");const Rl=pn()(Al,[["__scopeId","data-v-6550e504"]]);var Pl=Rl,Hl=n("ba48"),ql=n.n(Hl),Ul=(n("aa97"),Object(y["defineComponent"])({__name:"Chart",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},type:{type:String,required:!0},data:{type:Object,required:!0},options:{type:Object},themeColor:{type:Array,required:!0},legends:{type:Array,required:!0},gridColor:{type:String},legend:{type:String}},setup:function(e){var t,n=e,c=Object(y["ref"])(),o=Object(y["inject"])(tc)||Object(y["ref"])(1),l=Object(y["computed"])((function(){return n.legend?n.height-20:n.height})),a=function(){var e=n.options||{},t=Object(S["a"])(Object(S["a"])({},e),{},{width:n.width*o.value,height:l.value*o.value}),c="pie"===n.type?Object(S["a"])(Object(S["a"])({},n.data),{},{series:n.data.series[0]}):n.data;return{data:c,options:t}},r=function(){if(c.value){var e=Object(te["upperFirst"])(n.type),o=a(),l=o.data,r=o.options;t=new ql.a[e](c.value,l,r)}},i=function(){if(t){var e=a(),n=e.data,c=e.options;t.update(n,c)}else r()};Object(y["watch"])([function(){return n.width},function(){return n.height},function(){return n.data},function(){return n.options},o],i),Object(y["onMounted"])(r);var u=Object(y["computed"])((function(){var e=[];if(n.themeColor.length>=10)e=n.themeColor;else if(1===n.themeColor.length)e=ee()(n.themeColor[0]).analogous(10).map((function(e){return e.toHexString()}));else{var t=n.themeColor.length,c=ee()(n.themeColor[t-1]).analogous(11-t).map((function(e){return e.toHexString()}));e=[].concat(Object(K["a"])(n.themeColor.slice(0,t-1)),Object(K["a"])(c))}return e})),d=function(){if(c.value)for(var e=0;e<10;e++)c.value.style.setProperty("--theme-color-".concat(e+1),u.value[e])};Object(y["watch"])(u,d),Object(y["onMounted"])(d);var s=function(){c.value&&n.gridColor&&c.value.style.setProperty("--grid-color",n.gridColor)};return Object(y["watch"])((function(){return n.gridColor}),s),Object(y["onMounted"])(s),function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"chart",style:Object(y["normalizeStyle"])({flexDirection:"top"===e.legend?"column-reverse":"column"})},[Object(y["createElementVNode"])("div",{class:"chart-content",ref_key:"chartRef",ref:c,style:Object(y["normalizeStyle"])({width:e.width+"px",height:Object(y["unref"])(l)+"px",transform:"scale(".concat(1/Object(y["unref"])(o),")")})},null,4),e.legend?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:"legends",style:Object(y["normalizeStyle"])({transform:"scale(".concat(1/Object(y["unref"])(o),")")})},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.legends,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"legend",key:n,style:Object(y["normalizeStyle"])({color:e.gridColor})},[Object(y["createElementVNode"])("div",{class:"block",style:Object(y["normalizeStyle"])({backgroundColor:Object(y["unref"])(u)[n]})},null,4),Object(y["createTextVNode"])(" "+Object(y["toDisplayString"])(t),1)],4)})),128))],4)):Object(y["createCommentVNode"])("",!0)],4)}}}));n("921b"),n("f630");const Gl=pn()(Ul,[["__scopeId","data-v-1aa2357d"]]);var Xl=Gl,Yl=Object(y["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=e,n=function(e){t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},c=function(){Ko.emit(so.OPEN_CHART_DATA_EDITOR)};return function(t,o){var l=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-chart",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({backgroundColor:e.elementInfo.fill}),onMousedown:o[0]||(o[0]=function(e){return n(e)}),onTouchstart:o[1]||(o[1]=function(e){return n(e)}),onDblclick:o[2]||(o[2]=function(e){return c()})},[Object(y["createVNode"])(fo,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(y["createVNode"])(Xl,{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)),[[l,e.contextmenus]])],4)],6)}}});n("8216");const Zl=pn()(Yl,[["__scopeId","data-v-f3c03862"]]);var Wl=Zl,Jl=function(e){if(!e)return{};var t=e.bold,n=e.em,c=e.underline,o=e.strikethrough,l=e.color,a=e.backcolor,r=e.fontsize,i=e.fontname,u=e.align,d="".concat(c?"underline":""," ").concat(o?"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"}},Ql=function(e){return e.replace(/\n/g,"
").replace(/ /g," ")},Kl=function(e){var t=Object(y["computed"])((function(){for(var t=[],n=0;n1||l.rowspan>1)for(var a=n;a=d&&p<=f&&m>=s&&m<=b&&a.push("".concat(p,"_").concat(m));return a}));Object(y["watch"])(k,(function(e,t){Object(te["isEqual"])(e,t)||n("changeSelectedCells",k.value)}));var C=Object(y["computed"])((function(){return k.value.length>1?null:k.value[0]})),N=(Object(y["computed"])((function(){if(!r.value.length)return null;var e=Object(Oe["a"])(r.value,2),t=e[0],n=e[1];if(!i.value.length)return{row:[t,t],col:[n,n]};var c=Object(Oe["a"])(i.value,2),o=c[0],l=c[1];if(t===o&&n===l)return{row:[t,t],col:[n,n]};var a=Math.min(t,o),u=Math.min(n,l),d=Math.max(t,o),s=Math.max(n,l);return{row:[a,d],col:[u,s]}})),function(){return a.value=!1}),w=function(e,t,n){0===e.button&&(i.value=[],a.value=!0,r.value=[t,n])},E=function(e,t){a.value&&(i.value=[e,t])};Object(y["onMounted"])((function(){document.addEventListener("mouseup",N)})),Object(y["onUnmounted"])((function(){document.removeEventListener("mouseup",N)}));var I=function(e,t){return h.value.includes("".concat(e,"_").concat(t))},B=function(e){var t=u.value.length-1;r.value=[0,e],i.value=[t,e]},L=function(e){var t=u.value[e].length-1;r.value=[e,0],i.value=[e,t]},_=function(){var e=u.value.length-1,t=u.value[e].length-1;r.value=[0,0],i.value=[e,t]},T=function(e){for(var t=JSON.parse(JSON.stringify(u.value)),n=u.value[e],c=[],o=0;o=0;i--)if(!I(i,r)){t[i][r].rowspan=t[i][r].rowspan-1;break}t.splice(e,1),u.value=t},M=function(e){for(var t=JSON.parse(JSON.stringify(u.value)),c=[],o=0;o=0;i--)if(!I(r,i)){t[r][i].colspan=t[r][i].colspan-1;break}u.value=t.map((function(t){return t.splice(e,1),t})),b.value.splice(e,1),n("changeColWidths",b.value)},D=function(e){for(var t=JSON.parse(JSON.stringify(u.value)),n=[],c=0;cu.value.length&&(a=t+o-u.value.length),c+l>u.value[0].length&&(r=c+l-u.value[0].length),(a||r)&&F(a,r),Object(y["nextTick"])((function(){for(var a=0;a1,n=e[0].length>1;return{canDeleteRow:t,canDeleteCol:n}},W=function(e,t){var n=k.value.length>1,c=u.value[e][t],o=n,l=!n&&(c.rowspan>1||c.colspan>1);return{canMerge:o,canSplit:l}},J=function(e){var t=e.dataset.cellIndex,n=+t.split("_")[0],c=+t.split("_")[1];k.value.includes("".concat(n,"_").concat(c))||(r.value=[n,c],i.value=[]);var o=W(n,c),l=o.canMerge,a=o.canSplit,u=Z(),d=u.canDeleteRow,s=u.canDeleteCol;return[{text:"插入列",children:[{text:"到左侧",handler:function(){return z(c)}},{text:"到右侧",handler:function(){return z(c+1)}}]},{text:"插入行",children:[{text:"到上方",handler:function(){return D(n)}},{text:"到下方",handler:function(){return D(n+1)}}]},{text:"删除列",disable:!s,handler:function(){return M(c)}},{text:"删除行",disable:!d,handler:function(){return T(n)}},{divider:!0},{text:"合并单元格",disable:!l,handler:A},{text:"取消合并单元格",disable:!a,handler:function(){return R(n,c)}},{divider:!0},{text:"选中当前列",handler:function(){return B(c)}},{text:"选中当前行",handler:function(){return L(n)}},{text:"选中全部单元格",handler:_}]};return function(t,n){var c,o,l,a,r,i=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"editable-table",style:Object(y["normalizeStyle"])({width:Object(y["unref"])(p)+"px"})},[e.editable?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",oa,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(m),(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"drag-line",key:t,style:Object(y["normalizeStyle"])({left:e+"px"}),onMousedown:function(e){return P(e,t)}},null,44,la)})),128))])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("table",{class:Object(y["normalizeClass"])({theme:Object(y["unref"])(d),"row-header":null===(c=Object(y["unref"])(d))||void 0===c?void 0:c.rowHeader,"row-footer":null===(o=Object(y["unref"])(d))||void 0===o?void 0:o.rowFooter,"col-header":null===(l=Object(y["unref"])(d))||void 0===l?void 0:l.colHeader,"col-footer":null===(a=Object(y["unref"])(d))||void 0===a?void 0:a.colFooter}),style:Object(y["normalizeStyle"])("--themeColor: ".concat(null===(r=Object(y["unref"])(d))||void 0===r?void 0:r.color,"; --subThemeColor1: ").concat(Object(y["unref"])(f)[0],"; --subThemeColor2: ").concat(Object(y["unref"])(f)[1]))},[Object(y["createElementVNode"])("colgroup",null,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(b.value,(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("col",{span:"1",key:t,width:e},null,8,aa)})),128))]),Object(y["createElementVNode"])("tbody",null,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(u),(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("tr",{key:n},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(t,(function(t,c){return Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("td",{class:Object(y["normalizeClass"])(["cell",{selected:Object(y["unref"])(k).includes("".concat(n,"_").concat(c))&&Object(y["unref"])(k).length>1,active:Object(y["unref"])(C)==="".concat(n,"_").concat(c)}]),style:Object(y["normalizeStyle"])(Object(S["a"])({borderStyle:e.outline.style,borderColor:e.outline.color,borderWidth:e.outline.width+"px"},Object(y["unref"])(Jl)(t.style))),key:t.id,rowspan:t.rowspan,colspan:t.colspan,"data-cell-index":"".concat(n,"_").concat(c),onMousedown:function(e){return w(e,n,c)},onMouseenter:function(e){return E(n,c)}},[Object(y["unref"])(C)==="".concat(n,"_").concat(c)?(Object(y["openBlock"])(),Object(y["createBlock"])(ca,{key:0,class:Object(y["normalizeClass"])(["cell-text",{active:Object(y["unref"])(C)==="".concat(n,"_").concat(c)}]),value:t.text,onUpdateValue:function(e){return Object(y["unref"])(G)(e,n,c)},onInsertExcelData:function(e){return X(e,n,c)}},null,8,["class","value","onUpdateValue","onInsertExcelData"])):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:1,class:"cell-text",innerHTML:Object(y["unref"])(Ql)(t.text)},null,8,ia))],46,ra)),[[y["vShow"],!Object(y["unref"])(h).includes("".concat(n,"_").concat(c))],[i,function(e){return J(e)}]])})),128))])})),128))])],6)],4)}}});n("bc8c");const da=pn()(ua,[["__scopeId","data-v-bae8c794"]]);var sa=da,fa={class:"element-content"},ba=Object(y["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=e,n=ie(),c=le(),o=Object(g["c"])(n),l=o.canvasScale,a=o.handleElementId,r=o.isScaling,i=Object(y["ref"])(),u=lt(),d=u.addHistorySnapshot,s=function(e){t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},f=Object(y["ref"])(!1);Object(y["watch"])(a,(function(){a.value!==t.elementInfo.id&&(f.value=!1)})),Object(y["watch"])(f,(function(){n.setDisableHotkeysState(f.value)}));var b=function(){t.elementInfo.lock||(f.value=!0)},p=Object(y["ref"])(-1);Object(y["watch"])(r,(function(){a.value===t.elementInfo.id&&(r.value&&(f.value=!1),r.value||-1===p.value||(c.updateElement({id:t.elementInfo.id,props:{height:p.value}}),p.value=-1))}));var O=function(e){var n=e[0].contentRect;if(i.value){var o=n.height;t.elementInfo.height!==o&&(r.value?p.value=o:c.updateElement({id:t.elementInfo.id,props:{height:o}}))}},m=new ResizeObserver(O);Object(y["onMounted"])((function(){i.value&&m.observe(i.value)})),Object(y["onUnmounted"])((function(){i.value&&m.unobserve(i.value)}));var v=function(e){c.updateElement({id:t.elementInfo.id,props:{data:e}}),d()},j=function(e){var n=e.reduce((function(e,t){return e+t})),o=e.map((function(e){return e/n}));c.updateElement({id:t.elementInfo.id,props:{width:n,colWidths:o}}),d()},h=function(e){Object(y["nextTick"])((function(){return n.setSelectedTableCells(e)}))};return function(t,n){var c=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-table",{lock:e.elementInfo.lock}]),ref_key:"elementRef",ref:i,style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("div",fa,[Object(y["createVNode"])(sa,{onMousedown:n[0]||(n[0]=Object(y["withModifiers"])((function(){}),["stop"])),data:e.elementInfo.data,width:e.elementInfo.width,colWidths:e.elementInfo.colWidths,outline:e.elementInfo.outline,theme:e.elementInfo.theme,editable:f.value,onChange:n[1]||(n[1]=function(e){return v(e)}),onChangeColWidths:n[2]||(n[2]=function(e){return j(e)}),onChangeSelectedCells:n[3]||(n[3]=function(e){return h(e)})},null,8,["data","width","colWidths","outline","theme","editable"]),!f.value||e.elementInfo.lock?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:Object(y["normalizeClass"])(["table-mask",{lock:e.elementInfo.lock}]),onDblclick:n[4]||(n[4]=function(e){return b()}),onMousedown:n[5]||(n[5]=function(e){return s(e)}),onTouchstart:n[6]||(n[6]=function(e){return s(e)})},[Object(y["createElementVNode"])("div",{class:"mask-tip",style:Object(y["normalizeStyle"])({transform:"scale(".concat(1/Object(y["unref"])(l),")")})},"双击编辑",4)],34)):Object(y["createCommentVNode"])("",!0)])),[[c,e.contextmenus]])],4)],6)}}});n("76c1");const pa=pn()(ba,[["__scopeId","data-v-6391c486"]]);var Oa=pa,ma=["width","height","stroke","stroke-width"],va=["transform"],ja=["d"],ha=Object(y["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=e,n=function(e){t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},c=function(){Ko.emit(so.OPEN_LATEX_EDITOR)};return function(t,o){var l=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-latex",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"element-content",onMousedown:o[0]||(o[0]=function(e){return n(e)}),onTouchstart:o[1]||(o[1]=function(e){return n(e)}),onDblclick:o[2]||(o[2]=function(e){return c()})},[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.strokeWidth,fill:"none","stroke-linecap":"round","stroke-linejoin":"round"},[Object(y["createElementVNode"])("g",{transform:"scale(".concat(e.elementInfo.width/e.elementInfo.viewBox[0],", ").concat(e.elementInfo.height/e.elementInfo.viewBox[1],") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(y["createElementVNode"])("path",{d:e.elementInfo.path},null,8,ja)],8,va)],8,ma))],32)),[[l,e.contextmenus]])],4)],6)}}});n("0f64");const ya=pn()(ha,[["__scopeId","data-v-31390388"]]);var ga=ya,xa=function(e,t){Object(y["onMounted"])((function(){if(t.value){var n="normal";if(/m3u8(#|\?|$)/i.exec(e)?n="hls":/.flv(#|\?|$)/i.exec(e)&&(n="flv"),t.value&&"hls"===n&&(t.value.canPlayType("application/x-mpegURL")||t.value.canPlayType("application/vnd.apple.mpegURL"))&&(n="normal"),"hls"===n){var c=window.Hls;if(c&&c.isSupported()){var o=new c;o.loadSource(e),o.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()}}}}))},ka=function(e){return Object(y["pushScopeId"])("data-v-2fc4c202"),e=e(),Object(y["popScopeId"])(),e},Ca=["src","poster"],Na={class:"bezel"},wa=ka((function(){return Object(y["createElementVNode"])("div",{class:"controller-mask"},null,-1)})),Ea={class:"controller"},Va={class:"icons icons-left"},Ia={class:"icon-content"},Ba={class:"volume"},Sa={class:"icon-content"},La=ka((function(){return Object(y["createElementVNode"])("span",{class:"thumb"},null,-1)})),_a=[La],Ta={class:"time"},Ma={class:"ptime"},Da=Object(y["createTextVNode"])(" / "),za={class:"dtime"},Fa={class:"icons icons-right"},Aa={class:"speed"},Ra={class:"icon speed-icon"},Pa=["onClick"],Ha=ka((function(){return Object(y["createElementVNode"])("span",{class:"icon-content"},"循环",-1)})),qa=[Ha],Ua={class:"bar"},Ga=ka((function(){return Object(y["createElementVNode"])("span",{class:"thumb"},null,-1)})),Xa=[Ga],Ya=Object(y["defineComponent"])({__name:"index",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=e,n=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),c=Math.floor((e-3600*n)/60),o=Math.floor(e-3600*n-60*c);return(n>0?[n,c,o]:[c,o]).map(t).join(":")},c=function(e){return e.getBoundingClientRect().left},o=Object(y["ref"])(),l=Object(y["ref"])(),a=Object(y["ref"])(),r=Object(y["ref"])(.5),i=Object(y["ref"])(!0),u=Object(y["ref"])(0),d=Object(y["ref"])(0),s=Object(y["ref"])(0),f=Object(y["ref"])(!1),b=Object(y["ref"])(!1),p=Object(y["ref"])(1),O=Object(y["ref"])(!1),m=Object(y["ref"])("00:00"),v=Object(y["ref"])("0"),j=Object(y["computed"])((function(){return n(u.value)})),h=Object(y["computed"])((function(){return n(d.value)})),g=Object(y["computed"])((function(){return u.value/d.value*100+"%"})),x=Object(y["computed"])((function(){return s.value/d.value*100+"%"})),k=Object(y["computed"])((function(){return 100*r.value+"%"})),C=Object(y["ref"])(!1),N=[{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}],w=function(e){o.value&&(e=Math.max(e,0),e=Math.min(e,d.value),o.value.currentTime=e,u.value=e)},E=function(){o.value&&(i.value=!1,o.value.play(),b.value=!0)},V=function(){o.value&&(i.value=!0,o.value.pause(),b.value=!0)},I=function(){i.value?E():V()},B=function(e){o.value&&(e=Math.max(e,0),e=Math.min(e,1),o.value.volume=e,r.value=e,o.value.muted&&0!==e&&(o.value.muted=!1))},S=function(e){o.value&&(o.value.playbackRate=e),p.value=e},L=function(){var e;d.value=(null===(e=o.value)||void 0===e?void 0:e.duration)||0},_=function(){var e;u.value=(null===(e=o.value)||void 0===e?void 0:e.currentTime)||0},T=function(){f.value?(w(0),E()):V()},M=function(){var e;s.value=null!==(e=o.value)&&void 0!==e&&e.buffered.length?o.value.buffered.end(o.value.buffered.length-1):0},D=function(){return Se["a"].error("视频加载失败")},z=function(e){if(o.value&&l.value){var t="clientX"in e?e.clientX:e.changedTouches[0].clientX,n=(t-c(l.value))/l.value.clientWidth;n=Math.max(n,0),n=Math.min(n,1);var a=n*d.value;o.value.currentTime=a,u.value=a}},F=function e(t){if(o.value&&l.value){var n="clientX"in t?t.clientX:t.changedTouches[0].clientX,a=(n-c(l.value))/l.value.clientWidth;a=Math.max(a,0),a=Math.min(a,1);var r=a*d.value;o.value.currentTime=r,u.value=r,document.removeEventListener("mousemove",z),document.removeEventListener("touchmove",z),document.removeEventListener("mouseup",e),document.removeEventListener("touchend",e)}},A=function(){document.addEventListener("mousemove",z),document.addEventListener("touchmove",z),document.addEventListener("mouseup",F),document.addEventListener("touchend",F)},R=function(e){if(a.value){var t="clientX"in e?e.clientX:e.changedTouches[0].clientX,n=(t-c(a.value))/45;B(n)}},P=function e(){document.removeEventListener("mousemove",R),document.removeEventListener("touchmove",R),document.removeEventListener("mouseup",e),document.removeEventListener("touchend",e)},H=function(){document.addEventListener("mousemove",R),document.addEventListener("touchmove",R),document.addEventListener("mouseup",P),document.addEventListener("touchend",P)},q=function(e){if(a.value){var t=(e.clientX-c(a.value))/45;B(t)}},U=function(e){if(d.value&&l.value){var t=l.value.getBoundingClientRect().left,c=e.clientX-t;if(c<0||c>l.value.offsetWidth)return;var o=d.value*(c/l.value.offsetWidth);v.value="".concat(c-(o>=3600?25:20),"px"),m.value=n(o),O.value=!0}},G=function(){o.value&&(o.value.muted?(o.value.muted=!1,B(.5)):(o.value.muted=!0,B(0)))},X=function(){f.value=!f.value},Y=Object(y["ref"])(-1),Z=Object(y["ref"])(!1),W=function(){Z.value=!1,clearTimeout(Y.value),Y.value=setTimeout((function(){var e;null!==(e=o.value)&&void 0!==e&&e.played.length&&(Z.value=!0)}),3e3)};return xa(t.src,o),function(t,n){var c=Object(y["resolveComponent"])("IconPause"),u=Object(y["resolveComponent"])("IconPlayOne"),d=Object(y["resolveComponent"])("IconVolumeMute"),s=Object(y["resolveComponent"])("IconVolumeNotice"),w=Object(y["resolveComponent"])("IconVolumeSmall");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["video-player",{"hide-controller":Z.value}]),style:Object(y["normalizeStyle"])({width:e.width*e.scale+"px",height:e.height*e.scale+"px",transform:"scale(".concat(1/e.scale,")")}),onMousemove:n[22]||(n[22]=function(e){return W()}),onClick:n[23]||(n[23]=function(e){return W()})},[Object(y["createElementVNode"])("div",{class:"video-wrap",onClick:n[8]||(n[8]=function(e){return I()})},[Object(y["createElementVNode"])("video",{class:"video",ref_key:"videoRef",ref:o,src:e.src,poster:e.poster,"webkit-playsinline":"",playsinline:"",onDurationchange:n[0]||(n[0]=function(e){return L()}),onTimeupdate:n[1]||(n[1]=function(e){return _()}),onEnded:n[2]||(n[2]=function(e){return T()}),onProgress:n[3]||(n[3]=function(e){return M()}),onPlay:n[4]||(n[4]=function(e){return W()}),onPause:n[5]||(n[5]=function(e){return W()}),onError:n[6]||(n[6]=function(e){return D()})},null,40,Ca),Object(y["createElementVNode"])("div",Na,[Object(y["createElementVNode"])("span",{class:Object(y["normalizeClass"])(["bezel-icon",{"bezel-transition":b.value}]),onAnimationend:n[7]||(n[7]=function(e){return b.value=!1})},[i.value?(Object(y["openBlock"])(),Object(y["createBlock"])(c,{key:0})):(Object(y["openBlock"])(),Object(y["createBlock"])(u,{key:1}))],34)])]),wa,Object(y["createElementVNode"])("div",Ea,[Object(y["createElementVNode"])("div",Va,[Object(y["createElementVNode"])("div",{class:"icon play-icon",onClick:n[9]||(n[9]=function(e){return I()})},[Object(y["createElementVNode"])("span",Ia,[i.value?(Object(y["openBlock"])(),Object(y["createBlock"])(u,{key:0})):(Object(y["openBlock"])(),Object(y["createBlock"])(c,{key:1}))])]),Object(y["createElementVNode"])("div",Ba,[Object(y["createElementVNode"])("div",{class:"icon volume-icon",onClick:n[10]||(n[10]=function(e){return G()})},[Object(y["createElementVNode"])("span",Sa,[0===r.value?(Object(y["openBlock"])(),Object(y["createBlock"])(d,{key:0})):1===r.value?(Object(y["openBlock"])(),Object(y["createBlock"])(s,{key:1})):(Object(y["openBlock"])(),Object(y["createBlock"])(w,{key:2}))])]),Object(y["createElementVNode"])("div",{class:"volume-bar-wrap",onMousedown:n[11]||(n[11]=function(e){return H()}),onTouchstart:n[12]||(n[12]=function(e){return H()}),onClick:n[13]||(n[13]=function(e){return q(e)})},[Object(y["createElementVNode"])("div",{class:"volume-bar",ref_key:"volumeBarRef",ref:a},[Object(y["createElementVNode"])("div",{class:"volume-bar-inner",style:Object(y["normalizeStyle"])({width:Object(y["unref"])(k)})},_a,4)],512)],32)]),Object(y["createElementVNode"])("span",Ta,[Object(y["createElementVNode"])("span",Ma,Object(y["toDisplayString"])(Object(y["unref"])(j)),1),Da,Object(y["createElementVNode"])("span",za,Object(y["toDisplayString"])(Object(y["unref"])(h)),1)])]),Object(y["createElementVNode"])("div",Fa,[Object(y["createElementVNode"])("div",Aa,[Object(y["createElementVNode"])("div",Ra,[Object(y["createElementVNode"])("span",{class:"icon-content",onClick:n[14]||(n[14]=function(e){return C.value=!C.value})},"倍速"),C.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:"speed-menu",onMouseleave:n[15]||(n[15]=function(e){return C.value=!1})},[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(N,(function(e){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["speed-menu-item",{active:e.value===p.value}]),key:e.label,onClick:function(t){return S(e.value)}},Object(y["toDisplayString"])(e.label),11,Pa)})),64))],32)):Object(y["createCommentVNode"])("",!0)])]),Object(y["createElementVNode"])("div",{class:"loop",onClick:n[16]||(n[16]=function(e){return X()})},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["icon loop-icon",{active:f.value}])},qa,2)])]),Object(y["createElementVNode"])("div",{class:"bar-wrap",ref_key:"playBarWrap",ref:l,onMousedown:n[17]||(n[17]=function(e){return A()}),onTouchstart:n[18]||(n[18]=function(e){return A()}),onMousemove:n[19]||(n[19]=function(e){return U(e)}),onMouseenter:n[20]||(n[20]=function(e){return O.value=!0}),onMouseleave:n[21]||(n[21]=function(e){return O.value=!1})},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["bar-time",{hidden:!O.value}]),style:Object(y["normalizeStyle"])({left:v.value})},Object(y["toDisplayString"])(m.value),7),Object(y["createElementVNode"])("div",Ua,[Object(y["createElementVNode"])("div",{class:"loaded",style:Object(y["normalizeStyle"])({width:Object(y["unref"])(x)})},null,4),Object(y["createElementVNode"])("div",{class:"played",style:Object(y["normalizeStyle"])({width:Object(y["unref"])(g)})},Xa,4)])],544)])],38)}}});n("3696");const Za=pn()(Ya,[["__scopeId","data-v-2fc4c202"]]);var Wa=Za,Ja=Object(y["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=e,n=Object(g["c"])(ie()),c=n.canvasScale,o=function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo,n))};return function(t,n){var l=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-video",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"element-content",onMousedown:n[2]||(n[2]=function(e){return o(e,!1)}),onTouchstart:n[3]||(n[3]=function(e){return o(e,!1)})},[Object(y["createVNode"])(Wa,{width:e.elementInfo.width,height:e.elementInfo.height,src:e.elementInfo.src,poster:e.elementInfo.poster,scale:Object(y["unref"])(c)},null,8,["width","height","src","poster","scale"]),(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(["t","b","l","r"],(function(e){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["handler-border",e]),key:e,onMousedown:n[0]||(n[0]=function(e){return o(e)}),onTouchstart:n[1]||(n[1]=function(e){return o(e)})},null,34)})),64))],32)),[[l,e.contextmenus]])],4)],6)}}});n("679c");const Qa=pn()(Ja,[["__scopeId","data-v-9d5469c6"]]);var Ka=Qa,$a=function(e){return Object(y["pushScopeId"])("data-v-121f3d11"),e=e(),Object(y["popScopeId"])(),e},er=["src","autoplay"],tr={class:"controller"},nr={class:"icons"},cr={class:"icon-content"},or={class:"volume"},lr={class:"icon-content"},ar=$a((function(){return Object(y["createElementVNode"])("span",{class:"thumb"},null,-1)})),rr=[ar],ir={class:"time"},ur={class:"ptime"},dr=Object(y["createTextVNode"])(" / "),sr={class:"dtime"},fr={class:"bar"},br=$a((function(){return Object(y["createElementVNode"])("span",{class:"thumb"},null,-1)})),pr=[br],Or=Object(y["defineComponent"])({__name:"AudioPlayer",props:{src:{type:String,required:!0},loop:{type:Boolean,required:!0},autoplay:{type:Boolean,default:!1},scale:{type:Number,default:1}},setup:function(e,t){var n=t.expose,c=e,o=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),c=Math.floor((e-3600*n)/60),o=Math.floor(e-3600*n-60*c);return(n>0?[n,c,o]:[c,o]).map(t).join(":")},l=function(e){return e.getBoundingClientRect().left},a=Object(y["ref"])(),r=Object(y["ref"])(),i=Object(y["ref"])(),u=Object(y["ref"])(.5),d=Object(y["ref"])(!0),s=Object(y["ref"])(0),f=Object(y["ref"])(0),b=Object(y["ref"])(0),p=Object(y["ref"])(!1),O=Object(y["ref"])("00:00"),m=Object(y["ref"])("0"),v=Object(y["computed"])((function(){return o(s.value)})),j=Object(y["computed"])((function(){return o(f.value)})),h=Object(y["computed"])((function(){return s.value/f.value*100+"%"})),g=Object(y["computed"])((function(){return b.value/f.value*100+"%"})),x=Object(y["computed"])((function(){return 100*u.value+"%"})),k=function(e){a.value&&(e=Math.max(e,0),e=Math.min(e,f.value),a.value.currentTime=e,s.value=e)},C=function(){a.value&&(d.value=!1,a.value.play())},N=function(){a.value&&(d.value=!0,a.value.pause())},w=function(){d.value?C():N()},E=function(e){a.value&&(e=Math.max(e,0),e=Math.min(e,1),a.value.volume=e,u.value=e,a.value.muted&&0!==e&&(a.value.muted=!1))},V=function(){var e;f.value=(null===(e=a.value)||void 0===e?void 0:e.duration)||0},I=function(){var e;s.value=(null===(e=a.value)||void 0===e?void 0:e.currentTime)||0},B=function(){d.value=!1},S=function(){c.loop?(k(0),C()):N()},L=function(){var e;b.value=null!==(e=a.value)&&void 0!==e&&e.buffered.length?a.value.buffered.end(a.value.buffered.length-1):0},_=function(){return Se["a"].error("视频加载失败")},T=function(e){if(a.value&&r.value){var t="clientX"in e?e.clientX:e.changedTouches[0].clientX,n=(t-l(r.value))/r.value.clientWidth;n=Math.max(n,0),n=Math.min(n,1);var c=n*f.value;a.value.currentTime=c,s.value=c}},M=function e(t){if(a.value&&r.value){var n="clientX"in t?t.clientX:t.changedTouches[0].clientX,c=(n-l(r.value))/r.value.clientWidth;c=Math.max(c,0),c=Math.min(c,1);var o=c*f.value;a.value.currentTime=o,s.value=o,document.removeEventListener("mousemove",T),document.removeEventListener("touchmove",T),document.removeEventListener("mouseup",e),document.removeEventListener("touchend",e)}},D=function(){document.addEventListener("mousemove",T),document.addEventListener("touchmove",T),document.addEventListener("mouseup",M),document.addEventListener("touchend",M)},z=function(e){if(i.value){var t="clientX"in e?e.clientX:e.changedTouches[0].clientX,n=(t-l(i.value))/45;E(n)}},F=function e(){document.removeEventListener("mousemove",z),document.removeEventListener("touchmove",z),document.removeEventListener("mouseup",e),document.removeEventListener("touchend",e)},A=function(){document.addEventListener("mousemove",z),document.addEventListener("touchmove",z),document.addEventListener("mouseup",F),document.addEventListener("touchend",F)},R=function(e){if(i.value){var t=(e.clientX-l(i.value))/45;E(t)}},P=function(e){if(f.value&&r.value){var t=r.value.getBoundingClientRect().left,n=e.clientX-t;if(n<0||n>r.value.offsetWidth)return;var c=f.value*(n/r.value.offsetWidth);m.value="".concat(n-(c>=3600?25:20),"px"),O.value=o(c),p.value=!0}},H=function(){a.value&&(a.value.muted?(a.value.muted=!1,E(.5)):(a.value.muted=!0,E(0)))};return n({toggle:w}),function(t,n){var c=Object(y["resolveComponent"])("IconPlayOne"),o=Object(y["resolveComponent"])("IconPause"),l=Object(y["resolveComponent"])("IconVolumeMute"),s=Object(y["resolveComponent"])("IconVolumeNotice"),f=Object(y["resolveComponent"])("IconVolumeSmall");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"audio-player",style:Object(y["normalizeStyle"])({transform:"scale(".concat(1/e.scale,")")})},[Object(y["createElementVNode"])("audio",{class:"audio",ref_key:"audioRef",ref:a,src:e.src,autoplay:e.autoplay,onDurationchange:n[0]||(n[0]=function(e){return V()}),onTimeupdate:n[1]||(n[1]=function(e){return I()}),onPlay:n[2]||(n[2]=function(e){return B()}),onEnded:n[3]||(n[3]=function(e){return S()}),onProgress:n[4]||(n[4]=function(e){return L()}),onError:n[5]||(n[5]=function(e){return _()})},null,40,er),Object(y["createElementVNode"])("div",tr,[Object(y["createElementVNode"])("div",nr,[Object(y["createElementVNode"])("div",{class:"icon play-icon",onClick:n[6]||(n[6]=function(e){return w()})},[Object(y["createElementVNode"])("span",cr,[d.value?(Object(y["openBlock"])(),Object(y["createBlock"])(c,{key:0})):(Object(y["openBlock"])(),Object(y["createBlock"])(o,{key:1}))])]),Object(y["createElementVNode"])("div",or,[Object(y["createElementVNode"])("div",{class:"icon volume-icon",onClick:n[7]||(n[7]=function(e){return H()})},[Object(y["createElementVNode"])("span",lr,[0===u.value?(Object(y["openBlock"])(),Object(y["createBlock"])(l,{key:0})):1===u.value?(Object(y["openBlock"])(),Object(y["createBlock"])(s,{key:1})):(Object(y["openBlock"])(),Object(y["createBlock"])(f,{key:2}))])]),Object(y["createElementVNode"])("div",{class:"volume-bar-wrap",onMousedown:n[8]||(n[8]=function(e){return A()}),onTouchstart:n[9]||(n[9]=function(e){return A()}),onClick:n[10]||(n[10]=function(e){return R(e)})},[Object(y["createElementVNode"])("div",{class:"volume-bar",ref_key:"volumeBarRef",ref:i},[Object(y["createElementVNode"])("div",{class:"volume-bar-inner",style:Object(y["normalizeStyle"])({width:Object(y["unref"])(x)})},rr,4)],512)],32)])]),Object(y["createElementVNode"])("span",ir,[Object(y["createElementVNode"])("span",ur,Object(y["toDisplayString"])(Object(y["unref"])(v)),1),dr,Object(y["createElementVNode"])("span",sr,Object(y["toDisplayString"])(Object(y["unref"])(j)),1)]),Object(y["createElementVNode"])("div",{class:"bar-wrap",ref_key:"playBarWrap",ref:r,onMousedown:n[11]||(n[11]=function(e){return D()}),onTouchstart:n[12]||(n[12]=function(e){return D()}),onMousemove:n[13]||(n[13]=function(e){return P(e)}),onMouseenter:n[14]||(n[14]=function(e){return p.value=!0}),onMouseleave:n[15]||(n[15]=function(e){return p.value=!1})},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["bar-time",{hidden:!p.value}]),style:Object(y["normalizeStyle"])({left:m.value})},Object(y["toDisplayString"])(O.value),7),Object(y["createElementVNode"])("div",fr,[Object(y["createElementVNode"])("div",{class:"loaded",style:Object(y["normalizeStyle"])({width:Object(y["unref"])(g)})},null,4),Object(y["createElementVNode"])("div",{class:"played",style:Object(y["normalizeStyle"])({width:Object(y["unref"])(h)})},pr,4)])],544)])],4)}}});n("3929");const mr=pn()(Or,[["__scopeId","data-v-121f3d11"]]);var vr=mr,jr=Object(y["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=e,n=Object(g["c"])(ie()),c=n.canvasScale,o=n.handleElementId,l=Object(g["c"])(le()),a=l.viewportRatio,r=Object(y["computed"])((function(){return Math.min(t.elementInfo.width,t.elementInfo.height)+"px"})),i=Object(y["computed"])((function(){var e=tt,n=tt*a.value,o=280/c.value,l=50/c.value,r=t.elementInfo.width,i=t.elementInfo.height,u=t.elementInfo.left,d=t.elementInfo.top,s=0,f=i;return u+o>=e&&(s=r-o),d+i+l>=n&&(f=-l),{left:s+"px",top:f+"px"}})),u=function(e){t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))};return function(t,n){var l=Object(y["resolveComponent"])("IconVolumeNotice"),a=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-audio",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"element-content",onMousedown:n[1]||(n[1]=function(e){return u(e)}),onTouchstart:n[2]||(n[2]=function(e){return u(e)})},[Object(y["createVNode"])(l,{class:"audio-icon",style:Object(y["normalizeStyle"])({fontSize:Object(y["unref"])(r),color:e.elementInfo.color})},null,8,["style"]),Object(y["unref"])(o)===e.elementInfo.id?(Object(y["openBlock"])(),Object(y["createBlock"])(vr,{key:0,class:"audio-player",style:Object(y["normalizeStyle"])(Object(S["a"])({},Object(y["unref"])(i))),src:e.elementInfo.src,loop:e.elementInfo.loop,scale:Object(y["unref"])(c),onMousedown:n[0]||(n[0]=Object(y["withModifiers"])((function(){}),["stop"]))},null,8,["style","src","loop","scale"])):Object(y["createCommentVNode"])("",!0)],32)),[[a,e.contextmenus]])],4)],6)}}});n("75e6");const hr=pn()(jr,[["__scopeId","data-v-001bfbc4"]]);var yr=hr,gr=["id"],xr=Object(y["defineComponent"])({__name:"EditableElement",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=e,n=Object(y["computed"])((function(){var e,n=(e={},Object(pe["a"])(e,Ve.IMAGE,lo),Object(pe["a"])(e,Ve.TEXT,pl),Object(pe["a"])(e,Ve.SHAPE,Bl),Object(pe["a"])(e,Ve.LINE,Pl),Object(pe["a"])(e,Ve.CHART,Wl),Object(pe["a"])(e,Ve.TABLE,Oa),Object(pe["a"])(e,Ve.LATEX,ga),Object(pe["a"])(e,Ve.VIDEO,Ka),Object(pe["a"])(e,Ve.AUDIO,yr),e);return n[t.elementInfo.type]||null})),c=mt(),o=c.orderElement,l=jc(),a=l.alignElementToCanvas,r=ft(),i=r.combineElements,u=r.uncombineElements,d=st(),s=d.deleteElement,f=dt(),b=f.lockElement,p=f.unlockElement,O=bt(),m=O.copyElement,v=O.pasteElement,j=O.cutElement,h=pt(),g=h.selectAllElement,x=function(){return t.elementInfo.lock?[{text:"解锁",handler:function(){return p(t.elementInfo)}}]:[{text:"剪切",subText:"Ctrl + X",handler:j},{text:"复制",subText:"Ctrl + C",handler:m},{text:"粘贴",subText:"Ctrl + V",handler:v},{divider:!0},{text:"水平居中",handler:function(){return a(C.HORIZONTAL)},children:[{text:"水平垂直居中",handler:function(){return a(C.CENTER)}},{text:"水平居中",handler:function(){return a(C.HORIZONTAL)}},{text:"左对齐",handler:function(){return a(C.LEFT)}},{text:"右对齐",handler:function(){return a(C.RIGHT)}}]},{text:"垂直居中",handler:function(){return a(C.VERTICAL)},children:[{text:"水平垂直居中",handler:function(){return a(C.CENTER)}},{text:"垂直居中",handler:function(){return a(C.VERTICAL)}},{text:"顶部对齐",handler:function(){return a(C.TOP)}},{text:"底部对齐",handler:function(){return a(C.BOTTOM)}}]},{divider:!0},{text:"置于顶层",disable:t.isMultiSelect&&!t.elementInfo.groupId,handler:function(){return o(t.elementInfo,k.TOP)},children:[{text:"置于顶层",handler:function(){return o(t.elementInfo,k.TOP)}},{text:"上移一层",handler:function(){return o(t.elementInfo,k.UP)}}]},{text:"置于底层",disable:t.isMultiSelect&&!t.elementInfo.groupId,handler:function(){return o(t.elementInfo,k.BOTTOM)},children:[{text:"置于底层",handler:function(){return o(t.elementInfo,k.BOTTOM)}},{text:"下移一层",handler:function(){return o(t.elementInfo,k.DOWN)}}]},{divider:!0},{text:"设置链接",handler:t.openLinkDialog},{text:t.elementInfo.groupId?"取消组合":"组合",subText:"Ctrl + G",handler:t.elementInfo.groupId?u:i,hide:!t.isMultiSelect},{text:"全选",subText:"Ctrl + A",handler:g},{text:"锁定",subText:"Ctrl + L",handler:b},{text:"删除",subText:"Delete",handler:s}]};return function(t,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"editable-element",ref:"elementRef",id:"editable-element-".concat(e.elementInfo.id),style:Object(y["normalizeStyle"])({zIndex:e.elementIndex})},[(Object(y["openBlock"])(),Object(y["createBlock"])(Object(y["resolveDynamicComponent"])(Object(y["unref"])(n)),{elementInfo:e.elementInfo,selectElement:e.selectElement,contextmenus:x},null,8,["elementInfo","selectElement"]))],12,gr)}}});const kr=xr;var Cr=kr,Nr=Object(y["defineComponent"])({__name:"MouseSelection",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)}}},setup:function(e){return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])("mouse-selection quadrant-".concat(e.quadrant)),style:Object(y["normalizeStyle"])({top:e.top+"px",left:e.left+"px",width:e.width+"px",height:e.height+"px"})},null,6)}}});n("4b9a");const wr=pn()(Nr,[["__scopeId","data-v-0d6c0f73"]]);var Er=wr,Vr={class:"grid-lines"},Ir=["d","stroke"],Br=Object(y["defineComponent"])({__name:"GridLines",setup:function(e){var t=Object(g["c"])(ie()),n=t.canvasScale,c=Object(g["c"])(le()),o=c.currentSlide,l=c.viewportRatio,a=Object(y["computed"])((function(){var e;return null===(e=o.value)||void 0===e?void 0:e.background})),r=Object(y["computed"])((function(){var e,t=(null===(e=a.value)||void 0===e?void 0:e.color)||"#fff",n=["#000","#fff"];return ee.a.mostReadable(t,n,{includeFallbackColors:!0}).setAlpha(.5).toRgbString()})),i=50,u=function(){for(var e=tt,t=tt*l.value,n="",c=0;c<=Math.floor(t/i);c++)n+="M0 ".concat(c*i," L").concat(e," ").concat(c*i," ");for(var o=0;o<=Math.floor(e/i);o++)n+="M".concat(o*i," 0 L").concat(o*i," ").concat(t," ");return n},d=u();return function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",Vr,[Object(y["createElementVNode"])("path",{style:Object(y["normalizeStyle"])({transform:"scale(".concat(Object(y["unref"])(n),")")}),d:Object(y["unref"])(d),fill:"none",stroke:Object(y["unref"])(r),"stroke-width":"0.3","stroke-dasharray":"5"},null,12,Ir)])}}});n("15d9");const Sr=pn()(Br,[["__scopeId","data-v-10cd6d44"]]);var Lr=Sr,_r=function(e){var t=Object(y["computed"])((function(){if(!e.value)return{backgroundColor:"#fff"};var t=e.value,n=t.type,c=t.color,o=t.image,l=t.imageSize,a=t.gradientColor,r=t.gradientRotate,i=t.gradientType;if("solid"===n)return{backgroundColor:c};if("image"===n)return o?"repeat"===l?{backgroundImage:"url(".concat(o),backgroundRepeat:"repeat",backgroundSize:"contain"}:{backgroundImage:"url(".concat(o),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}},Tr=Object(y["defineComponent"])({__name:"ViewportBackground",setup:function(e){var t=Object(g["c"])(ie()),n=t.showGridLines,c=Object(g["c"])(le()),o=c.currentSlide,l=Object(y["computed"])((function(){var e;return null===(e=o.value)||void 0===e?void 0:e.background})),a=_r(l),r=a.backgroundStyle;return function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"viewport-background",style:Object(y["normalizeStyle"])(Object(y["unref"])(r))},[Object(y["unref"])(n)?(Object(y["openBlock"])(),Object(y["createBlock"])(Lr,{key:0})):Object(y["createCommentVNode"])("",!0)],4)}}});n("258f");const Mr=pn()(Tr,[["__scopeId","data-v-6f1e1261"]]);var Dr=Mr,zr=Object(y["defineComponent"])({__name:"AlignmentLine",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=e,n=Object(y["computed"])((function(){return t.axis.x*t.canvasScale+"px"})),c=Object(y["computed"])((function(){return t.axis.y*t.canvasScale+"px"})),o=Object(y["computed"])((function(){return"vertical"===t.type?{height:t.length*t.canvasScale+"px"}:{width:t.length*t.canvasScale+"px"}}));return function(t,l){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"alignment-line",style:Object(y["normalizeStyle"])({left:Object(y["unref"])(n),top:Object(y["unref"])(c)})},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["line",e.type]),style:Object(y["normalizeStyle"])(Object(y["unref"])(o))},null,6)],4)}}});n("5688");const Fr=pn()(zr,[["__scopeId","data-v-37fa6068"]]);var Ar=Fr,Rr={class:"ruler"},Pr=Object(y["defineComponent"])({__name:"Ruler",props:{viewportStyles:{type:Object,required:!0}},setup:function(e){var t=e,n=Object(g["c"])(ie()),c=n.canvasScale,o=Object(y["computed"])((function(){return t.viewportStyles.width*c.value/10}));return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Rr,[Object(y["createElementVNode"])("div",{class:"h",style:Object(y["normalizeStyle"])({width:e.viewportStyles.width*Object(y["unref"])(c)+"px",left:e.viewportStyles.left+"px"})},[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(10,(function(e){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["ruler-marker-100",{hide:Object(y["unref"])(o)<36,omit:Object(y["unref"])(o)<72}]),key:"marker-100-".concat(e)},[Object(y["createElementVNode"])("span",null,Object(y["toDisplayString"])(100*e),1)],2)})),64))],4),Object(y["createElementVNode"])("div",{class:"v",style:Object(y["normalizeStyle"])({height:e.viewportStyles.height*Object(y["unref"])(c)+"px",top:e.viewportStyles.top+"px"})},[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(10,(function(e){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["ruler-marker-100",{hide:Object(y["unref"])(o)<36,omit:Object(y["unref"])(o)<72}]),key:e,style:Object(y["normalizeStyle"])({height:Object(y["unref"])(o)+"px"})},[Object(y["createElementVNode"])("span",null,Object(y["toDisplayString"])(100*e),1)],6)})),64))],4)])}}});n("9854");const Hr=pn()(Pr,[["__scopeId","data-v-60e06332"]]);var qr=Hr,Ur=["width","height"],Gr=["d"],Xr=Object(y["defineComponent"])({__name:"ElementCreateSelection",emits:["created"],setup:function(e,t){var n=t.emit,c=ie(),o=Object(g["c"])(c),l=o.creatingElement,a=Object(g["c"])(ke()),r=a.ctrlOrShiftKeyActive,i=Object(y["ref"])(),u=Object(y["ref"])(),d=Object(y["ref"])(),s=Object(y["ref"])({x:0,y:0});Object(y["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,o=e.pageX,a=e.pageY;i.value=[o,a],document.onmousemove=function(e){if(l.value&&t){var n=e.pageX,c=e.pageY;if(r.value){var i=n-o,d=c-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?c=b?a-i:a+i:n=b?o-d:o+d}else"line"===l.value.type&&(s>f?c=a:n=o)}u.value=[n,c]}},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-o)>=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-o)>=b&&Math.abs(f-a)>=b)n("created",{start:i.value,end:u.value});else{var p=200,O=Math.min(s,o),m=Math.min(f,a),v=Math.max(s,o),j=Math.max(f,a),h=v-O>=b?v-O:p,y=j-m>=b?j-m:p;n("created",{start:[O,m],end:[O+h,m+y]})}}else setTimeout((function(){return c.setCreatingElement(null)}),0)}},b=Object(y["computed"])((function(){if(!i.value||!u.value)return null;if(!l.value||"line"!==l.value.type)return null;var e=Object(Oe["a"])(i.value,2),t=e[0],n=e[1],c=Object(Oe["a"])(u.value,2),o=c[0],a=c[1],r=Math.min(t,o),d=Math.max(t,o),s=Math.min(n,a),f=Math.max(n,a),b=d-r>=24?d-r:24,p=f-s>=24?f-s:24,O=t===r?0:d-r,m=n===s?0:f-s,v=o===r?0:d-r,j=a===s?0:f-s,h="M".concat(O,", ").concat(m," L").concat(v,", ").concat(j);return{svgWidth:b,svgHeight:p,startX:O,startY:m,endX:v,endY:j,path:h}})),p=Object(y["computed"])((function(){if(!i.value||!u.value)return{};var e=Object(Oe["a"])(i.value,2),t=e[0],n=e[1],c=Object(Oe["a"])(u.value,2),o=c[0],l=c[1],a=Math.min(t,o),r=Math.max(t,o),d=Math.min(n,l),f=Math.max(n,l),b=r-a,p=f-d;return{left:a-s.value.x+"px",top:d-s.value.y+"px",width:b+"px",height:p+"px"}}));return function(e,t){var n,c;return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"element-create-selection",ref_key:"selectionRef",ref:d,onMousedown:t[0]||(t[0]=Object(y["withModifiers"])((function(e){return f(e)}),["stop"])),onContextmenu:t[1]||(t[1]=Object(y["withModifiers"])((function(){}),["stop","prevent"]))},[i.value&&u.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:Object(y["normalizeClass"])(["selection",null===(n=Object(y["unref"])(l))||void 0===n?void 0:n.type]),style:Object(y["normalizeStyle"])(Object(y["unref"])(p))},["line"===(null===(c=Object(y["unref"])(l))||void 0===c?void 0:c.type)&&Object(y["unref"])(b)?(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{key:0,overflow:"visible",width:Object(y["unref"])(b).svgWidth,height:Object(y["unref"])(b).svgHeight},[Object(y["createElementVNode"])("path",{d:Object(y["unref"])(b).path,stroke:"#d14424",fill:"none","stroke-width":"2"},null,8,Gr)],8,Ur)):Object(y["createCommentVNode"])("",!0)],6)):Object(y["createCommentVNode"])("",!0)],544)}}});n("7aed");const Yr=pn()(Xr,[["__scopeId","data-v-5a941f07"]]);var Zr=Yr,Wr=function(e,t){var n=Object(y["computed"])((function(){return[{direction:w.LEFT_TOP,style:{}},{direction:w.TOP,style:{left:e.value/2+"px"}},{direction:w.RIGHT_TOP,style:{left:e.value+"px"}},{direction:w.LEFT,style:{top:t.value/2+"px"}},{direction:w.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}},{direction:w.LEFT_BOTTOM,style:{top:t.value+"px"}},{direction:w.BOTTOM,style:{left:e.value/2+"px",top:t.value+"px"}},{direction:w.RIGHT_BOTTOM,style:{left:e.value+"px",top:t.value+"px"}}]})),c=Object(y["computed"])((function(){return[{direction:w.LEFT,style:{top:t.value/2+"px"}},{direction:w.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}}]})),o=Object(y["computed"])((function(){return[{type:N.T,style:{width:e.value+"px"}},{type:N.B,style:{top:t.value+"px",width:e.value+"px"}},{type:N.L,style:{height:t.value+"px"}},{type:N.R,style:{left:e.value+"px",height:t.value+"px"}}]}));return{resizeHandlers:n,textElementResizeHandlers:c,borderLines:o}},Jr=Object(y["defineComponent"])({__name:"ResizeHandler",props:{type:{type:String,default:""},rotate:{type:Number,default:0}},setup:function(e){var t=e,n=Object(y["computed"])((function(){var e="rotate-",n=t.rotate;return n>-22.5&&n<=22.5?e+0:n>22.5&&n<=67.5?e+45:n>67.5&&n<=112.5?e+90:n>112.5&&n<=157.5?e+135:n>157.5||n<=-157.5?e+0:n>-157.5&&n<=-112.5?e+45:n>-112.5&&n<=-67.5?e+90:n>-67.5&&n<=-22.5?e+135:e+0}));return function(t,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["resize-handler",Object(y["unref"])(n),e.type])},null,2)}}});n("b510");const Qr=pn()(Jr,[["__scopeId","data-v-881ee3f8"]]);var Kr=Qr,$r=Object(y["defineComponent"])({__name:"BorderLine",props:{type:{type:String,required:!0},isWide:{type:Boolean,default:!1}},setup:function(e){return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["border-line",e.type,{wide:e.isWide}])},null,2)}}});n("2460");const ei=pn()($r,[["__scopeId","data-v-7170d1be"]]);var ti=ei,ni=Object(y["defineComponent"])({__name:"MultiSelectOperate",props:{elementList:{type:Array,required:!0},scaleMultiElement:{type:Function,required:!0}},setup:function(e){var t=e,n=Object(g["c"])(ie()),c=n.activeElementIdList,o=n.canvasScale,l=Object(y["computed"])((function(){return t.elementList.filter((function(e){return c.value.includes(e.id)}))})),a=Object(y["ref"])({minX:0,maxX:0,minY:0,maxY:0}),r=Object(y["computed"])((function(){return(a.value.maxX-a.value.minX)*o.value})),i=Object(y["computed"])((function(){return(a.value.maxY-a.value.minY)*o.value})),u=Wr(r,i),d=u.resizeHandlers,s=u.borderLines,f=function(){var e=Xe(l.value),t=e.minX,n=e.maxX,c=e.minY,o=e.maxY;a.value={minX:t,maxX:n,minY:c,maxY:o}};Object(y["watchEffect"])(f);var b=Object(y["computed"])((function(){return l.value.some((function(e){return!!("image"!==e.type&&"shape"!==e.type||e.rotate)}))}));return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"multi-select-operate",style:Object(y["normalizeStyle"])({left:a.value.minX*Object(y["unref"])(o)+"px",top:a.value.minY*Object(y["unref"])(o)+"px"})},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(s),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(ti,{key:e.type,type:e.type,style:Object(y["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),Object(y["unref"])(b)?Object(y["createCommentVNode"])("",!0):(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],{key:0},Object(y["renderList"])(Object(y["unref"])(d),(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(Kr,{key:t.direction,type:t.direction,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.scaleMultiElement(n,a.value,t.direction)}),["stop"])},null,8,["type","style","onMousedown"])})),128))],4)}}});n("a669");const ci=pn()(ni,[["__scopeId","data-v-defbd922"]]);var oi=ci,li={class:"rotate-handler"};function ai(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",li)}n("1ebd");const ri={},ii=pn()(ri,[["render",ai],["__scopeId","data-v-b99d8dae"]]);var ui=ii,di={inheritAttrs:!1},si=Object(y["defineComponent"])(Object(S["a"])(Object(S["a"])({},di),{},{__name:"ImageElementOperate",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=e,n=Object(g["c"])(ie()),c=n.canvasScale,o=n.clipingImageElementId,l=Object(y["computed"])((function(){return o.value===t.elementInfo.id})),a=Object(y["computed"])((function(){return t.elementInfo.width*c.value})),r=Object(y["computed"])((function(){return t.elementInfo.height*c.value})),i=Wr(a,r),u=i.resizeHandlers,d=i.borderLines;return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["image-element-operate",{cliping:Object(y["unref"])(l)}])},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(d),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(ti,{class:"operate-border-line",key:e.type,type:e.type,style:Object(y["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(u),(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(Kr,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(y["createVNode"])(ui,{class:"operate-rotate-handler",style:Object(y["normalizeStyle"])({left:Object(y["unref"])(a)/2+"px"}),onMousedown:n[0]||(n[0]=Object(y["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64)):Object(y["createCommentVNode"])("",!0)],2)}}}));n("ae9f");const fi=pn()(si,[["__scopeId","data-v-46b250c2"]]);var bi=fi,pi={class:"text-element-operate"},Oi={inheritAttrs:!1},mi=Object(y["defineComponent"])(Object(S["a"])(Object(S["a"])({},Oi),{},{__name:"TextElementOperate",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=e,n=Object(g["c"])(ie()),c=n.canvasScale,o=Object(y["computed"])((function(){return t.elementInfo.width*c.value})),l=Object(y["computed"])((function(){return t.elementInfo.height*c.value})),a=Wr(o,l),r=a.textElementResizeHandlers,i=a.borderLines;return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",pi,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(i),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(ti,{class:"operate-border-line",key:e.type,type:e.type,style:Object(y["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(r),(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(Kr,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(y["createVNode"])(ui,{class:"operate-rotate-handler",style:Object(y["normalizeStyle"])({left:Object(y["unref"])(o)/2+"px"}),onMousedown:n[0]||(n[0]=Object(y["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64)):Object(y["createCommentVNode"])("",!0)])}}}));const vi=mi;var ji=vi,hi={class:"shape-element-operate"},yi={inheritAttrs:!1},gi=Object(y["defineComponent"])(Object(S["a"])(Object(S["a"])({},yi),{},{__name:"ShapeElementOperate",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=e,n=Object(g["c"])(ie()),c=n.canvasScale,o=Object(y["computed"])((function(){return t.elementInfo.width*c.value})),l=Object(y["computed"])((function(){return t.elementInfo.height*c.value})),a=Wr(o,l),r=a.resizeHandlers,i=a.borderLines;return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",hi,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(i),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(ti,{class:"operate-border-line",key:e.type,type:e.type,style:Object(y["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(r),(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(Kr,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(y["createVNode"])(ui,{class:"operate-rotate-handler",style:Object(y["normalizeStyle"])({left:Object(y["unref"])(o)/2+"px"}),onMousedown:n[0]||(n[0]=Object(y["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64)):Object(y["createCommentVNode"])("",!0)])}}}));const xi=gi;var ki=xi,Ci={class:"line-element-operate"},Ni=["width","height","stroke"],wi={key:0},Ei=["x1","y1","x2","y2"],Vi=["x1","y1","x2","y2"],Ii=["x1","y1","x2","y2"],Bi=["x1","y1","x2","y2"],Si={inheritAttrs:!1},Li=Object(y["defineComponent"])(Object(S["a"])(Object(S["a"])({},Si),{},{__name:"LineElementOperate",props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},dragLineElement:{type:Function,required:!0}},setup:function(e){var t=e,n=Object(g["c"])(ie()),c=n.canvasScale,o=Object(y["computed"])((function(){return Math.max(t.elementInfo.start[0],t.elementInfo.end[0])})),l=Object(y["computed"])((function(){return Math.max(t.elementInfo.start[1],t.elementInfo.end[1])})),a=Object(y["computed"])((function(){var e=[{handler:E.START,style:{left:t.elementInfo.start[0]*c.value+"px",top:t.elementInfo.start[1]*c.value+"px"}},{handler:E.END,style:{left:t.elementInfo.end[0]*c.value+"px",top:t.elementInfo.end[1]*c.value+"px"}}];if(t.elementInfo.curve||t.elementInfo.broken){var n=t.elementInfo.curve||t.elementInfo.broken;e.push({handler:E.C,style:{left:n[0]*c.value+"px",top:n[1]*c.value+"px"}})}else if(t.elementInfo.cubic){var o=Object(Oe["a"])(t.elementInfo.cubic,2),l=o[0],a=o[1];e.push({handler:E.C1,style:{left:l[0]*c.value+"px",top:l[1]*c.value+"px"}}),e.push({handler:E.C2,style:{left:a[0]*c.value+"px",top:a[1]*c.value+"px"}})}return e}));return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Ci,[e.handlerVisible?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(a),(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(Kr,{class:"operate-resize-handler",key:t.handler,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.dragLineElement(n,e.elementInfo,t.handler)}),["stop"])},null,8,["style","onMousedown"])})),128)),(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{width:Object(y["unref"])(o)||1,height:Object(y["unref"])(l)||1,stroke:e.elementInfo.color,overflow:"visible",style:Object(y["normalizeStyle"])({transform:"scale(".concat(Object(y["unref"])(c),")")})},[e.elementInfo.curve?(Object(y["openBlock"])(),Object(y["createElementBlock"])("g",wi,[Object(y["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,Ei),Object(y["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,Vi)])):Object(y["createCommentVNode"])("",!0),e.elementInfo.cubic?(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],{key:1},Object(y["renderList"])(e.elementInfo.cubic,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("g",{key:n},[0===n?(Object(y["openBlock"])(),Object(y["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,Ii)):Object(y["createCommentVNode"])("",!0),1===n?(Object(y["openBlock"])(),Object(y["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,Bi)):Object(y["createCommentVNode"])("",!0)])})),128)):Object(y["createCommentVNode"])("",!0)],12,Ni))],64)):Object(y["createCommentVNode"])("",!0)])}}}));n("fac9");const _i=pn()(Li,[["__scopeId","data-v-4659f395"]]);var Ti=_i,Mi={class:"table-element-operate"},Di={inheritAttrs:!1},zi=Object(y["defineComponent"])(Object(S["a"])(Object(S["a"])({},Di),{},{__name:"TableElementOperate",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=e,n=Object(g["c"])(ie()),c=n.canvasScale,o=Object(y["computed"])((function(){return t.elementInfo.outline.width||1})),l=Object(y["computed"])((function(){return(t.elementInfo.width+o.value)*c.value})),a=Object(y["computed"])((function(){return t.elementInfo.height*c.value})),r=Wr(l,a),i=r.textElementResizeHandlers,u=r.borderLines;return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Mi,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(u),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(ti,{class:"operate-border-line",key:e.type,type:e.type,style:Object(y["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(i),(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(Kr,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(y["createVNode"])(ui,{class:"operate-rotate-handler",style:Object(y["normalizeStyle"])({left:Object(y["unref"])(l)/2+"px"}),onMousedown:n[0]||(n[0]=Object(y["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64)):Object(y["createCommentVNode"])("",!0)])}}}));const Fi=zi;var Ai=Fi,Ri={class:"common-element-operate"},Pi={inheritAttrs:!1},Hi=Object(y["defineComponent"])(Object(S["a"])(Object(S["a"])({},Pi),{},{__name:"CommonElementOperate",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=e,n=Object(g["c"])(ie()),c=n.canvasScale,o=Object(y["computed"])((function(){return t.elementInfo.width*c.value})),l=Object(y["computed"])((function(){return t.elementInfo.height*c.value})),a=Wr(o,l),r=a.resizeHandlers,i=a.borderLines,u=Object(y["computed"])((function(){return["video","audio"].includes(t.elementInfo.type)}));return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Ri,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(i),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(ti,{class:"operate-border-line",key:e.type,type:e.type,style:Object(y["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(r),(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(Kr,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(y["unref"])(u)?Object(y["createCommentVNode"])("",!0):(Object(y["openBlock"])(),Object(y["createBlock"])(ui,{key:0,class:"operate-rotate-handler",style:Object(y["normalizeStyle"])({left:Object(y["unref"])(o)/2+"px"}),onMousedown:n[0]||(n[0]=Object(y["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"]))],64)):Object(y["createCommentVNode"])("",!0)])}}}));const qi=Hi;var Ui=qi,Gi=function(){var e=le(),t=lt(),n=t.addHistorySnapshot,c=function(t,c){var o=/^(https?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-.,@?^=%&:\/~+#]*[\w\-@?^=%&\/~+#])?$/;if("web"===c.type&&!o.test(c.target))return Se["a"].error("不是正确的网页链接地址"),!1;var l={link:c};return e.updateElement({id:t.id,props:l}),n(),!0},o=function(t){e.removeElementProps({id:t.id,propName:"link"}),n()};return{setLink:c,removeLink:o}},Xi=["href"],Yi={key:1,class:"link"},Zi={class:"btns"},Wi=Object(y["defineComponent"])({__name:"LinkHandler",props:{elementInfo:{type:Object,required:!0},link:{type:Object,required:!0},openLinkDialog:{type:Function,required:!0}},setup:function(e){var t=e,n=Object(g["c"])(ie()),c=n.canvasScale,o=Gi(),l=o.removeLink,a=Object(y["computed"])((function(){return"line"===t.elementInfo.type?0:t.elementInfo.height}));return function(t,n){var o=Object(y["resolveComponent"])("Divider");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"link-handler",style:Object(y["normalizeStyle"])({top:Object(y["unref"])(a)*Object(y["unref"])(c)+10+"px"})},["web"===e.link.type?(Object(y["openBlock"])(),Object(y["createElementBlock"])("a",{key:0,class:"link",href:e.link.target,target:"_blank"},Object(y["toDisplayString"])(e.link.target),9,Xi)):(Object(y["openBlock"])(),Object(y["createElementBlock"])("a",Yi,"幻灯片页面 "+Object(y["toDisplayString"])(e.link.target),1)),Object(y["createElementVNode"])("div",Zi,[Object(y["createElementVNode"])("div",{class:"btn",onClick:n[0]||(n[0]=function(t){return e.openLinkDialog()})},"更换"),Object(y["createVNode"])(o,{type:"vertical"}),Object(y["createElementVNode"])("div",{class:"btn",onClick:n[1]||(n[1]=function(t){return Object(y["unref"])(l)(e.elementInfo)})},"移除")])],4)}}});n("7851");const Ji=pn()(Wi,[["__scopeId","data-v-bb722fc0"]]);var Qi=Ji,Ki={key:1,class:"animation-index"},$i=Object(y["defineComponent"])({__name:"index",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=e,n=Object(g["c"])(ie()),c=n.canvasScale,o=n.toolbarState,l=Object(g["c"])(le()),a=l.formatedAnimations,r=Object(y["computed"])((function(){var e,n=(e={},Object(pe["a"])(e,Ve.IMAGE,bi),Object(pe["a"])(e,Ve.TEXT,ji),Object(pe["a"])(e,Ve.SHAPE,ki),Object(pe["a"])(e,Ve.LINE,Ti),Object(pe["a"])(e,Ve.TABLE,Ai),Object(pe["a"])(e,Ve.CHART,Ui),Object(pe["a"])(e,Ve.LATEX,Ui),Object(pe["a"])(e,Ve.VIDEO,Ui),Object(pe["a"])(e,Ve.AUDIO,Ui),e);return n[t.elementInfo.type]||null})),i=Object(y["computed"])((function(){for(var e=[],n=0;n0?re("-"):e.deltaY<0&&re("+"):e.deltaY>0?ue(V.DOWN):e.deltaY<0&&ue(V.UP)},se=function(){t.setGridLinesState(!r.value)},fe=function(){t.setRulerState(!i.value)},be=vc(m),pe=be.insertElementFromCreateSelection,Oe=function(){return[{text:"粘贴",subText:"Ctrl + V",handler:J},{text:"全选",subText:"Ctrl + A",handler:X},{text:"网格线",subText:r.value?"√":"",handler:se},{text:"标尺",subText:i.value?"√":"",handler:fe},{text:"重置当前页",handler:Z},{divider:!0},{text:"幻灯片放映",subText:"F5",handler:K}]};return Object(y["provide"])(tc,d),function(e,t){var n=Object(y["resolveComponent"])("Modal"),a=Object(y["resolveDirective"])("contextmenu"),r=Object(y["resolveDirective"])("click-outside");return Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"canvas",ref_key:"canvasRef",ref:C,onWheel:t[3]||(t[3]=function(e){return de(e)}),onMousedown:t[4]||(t[4]=function(e){return ne(e)})},[Object(y["unref"])(u)?(Object(y["openBlock"])(),Object(y["createBlock"])(Zr,{key:0,onCreated:t[0]||(t[0]=function(e){return Object(y["unref"])(pe)(e)})})):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("div",{class:"viewport-wrapper",style:Object(y["normalizeStyle"])({width:Object(y["unref"])(E).width*Object(y["unref"])(d)+"px",height:Object(y["unref"])(E).height*Object(y["unref"])(d)+"px",left:Object(y["unref"])(E).left+"px",top:Object(y["unref"])(E).top+"px"})},[Object(y["createElementVNode"])("div",Od,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(v.value,(function(e,t){return Object(y["openBlock"])(),Object(y["createBlock"])(Ar,{key:t,type:e.type,axis:e.axis,length:e.length,canvasScale:Object(y["unref"])(d)},null,8,["type","axis","length","canvasScale"])})),128)),Object(y["unref"])(c).length>1?(Object(y["openBlock"])(),Object(y["createBlock"])(oi,{key:0,elementList:x.value,scaleMultiElement:Object(y["unref"])(H)},null,8,["elementList","scaleMultiElement"])):Object(y["createCommentVNode"])("",!0),(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(x.value,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(tu,{key:e.id,elementInfo:e,isSelected:Object(y["unref"])(c).includes(e.id),isActive:Object(y["unref"])(l)===e.id,isActiveGroupElement:Object(y["unref"])(o)===e.id,isMultiSelect:Object(y["unref"])(c).length>1,rotateElement:Object(y["unref"])(U),scaleElement:Object(y["unref"])(P),openLinkDialog:h,dragLineElement:Object(y["unref"])(z)},null,8,["elementInfo","isSelected","isActive","isActiveGroupElement","isMultiSelect","rotateElement","scaleElement","dragLineElement"])})),128)),Object(y["createVNode"])(Dr)]),Object(y["createElementVNode"])("div",{class:"viewport",ref_key:"viewportRef",ref:m,style:Object(y["normalizeStyle"])({transform:"scale(".concat(Object(y["unref"])(d),")")})},[Object(y["unref"])(S)?(Object(y["openBlock"])(),Object(y["createBlock"])(Er,{key:0,top:Object(y["unref"])(B).top,left:Object(y["unref"])(B).left,width:Object(y["unref"])(B).width,height:Object(y["unref"])(B).height,quadrant:Object(y["unref"])(L)},null,8,["top","left","width","height","quadrant"])):Object(y["createCommentVNode"])("",!0),(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(x.value,(function(e,t){return Object(y["openBlock"])(),Object(y["createBlock"])(Cr,{key:e.id,elementInfo:e,elementIndex:t+1,isMultiSelect:Object(y["unref"])(c).length>1,selectElement:Object(y["unref"])(A),openLinkDialog:h},null,8,["elementInfo","elementIndex","isMultiSelect","selectElement"])})),128))],4)],4),Object(y["unref"])(O)?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",md)):Object(y["createCommentVNode"])("",!0),Object(y["unref"])(i)?(Object(y["openBlock"])(),Object(y["createBlock"])(qr,{key:2,viewportStyles:Object(y["unref"])(E)},null,8,["viewportStyles"])):Object(y["createCommentVNode"])("",!0),Object(y["createVNode"])(n,{visible:j.value,"onUpdate:visible":t[2]||(t[2]=function(e){return j.value=e}),footer:null,centered:"",width:540,destroyOnClose:""},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(pd,{onClose:t[1]||(t[1]=function(e){return j.value=!1})})]})),_:1},8,["visible"])],32)),[[a,Oe],[r,ce]])}}});n("6060");const jd=pn()(vd,[["__scopeId","data-v-529c7227"]]);var hd=jd,yd={class:"shape-pool"},gd={class:"category-name"},xd={class:"shape-list"},kd=["onClick"],Cd={overflow:"visible",width:"18",height:"18"},Nd=["transform"],wd=["fill","stroke","d"],Ed=Object(y["defineComponent"])({__name:"ShapePool",emits:["select"],setup:function(e,t){var n=t.emit,c=function(e){n("select",e)};return function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",yd,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(ct),(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"category",key:e.type},[Object(y["createElementVNode"])("div",gd,Object(y["toDisplayString"])(e.type),1),Object(y["createElementVNode"])("div",xd,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.children,(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"shape-item",key:t},[Object(y["createElementVNode"])("div",{class:"shape-content",onClick:function(t){return c(e)}},[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",Cd,[Object(y["createElementVNode"])("g",{transform:"scale(".concat(18/e.viewBox[0],", ").concat(18/e.viewBox[1],") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(y["createElementVNode"])("path",{class:Object(y["normalizeClass"])(["shape-path",{outlined:e.outlined}]),"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:e.outlined?"#999":"transparent",stroke:e.outlined?"transparent":"#999","stroke-width":"2",d:e.path},null,10,wd)],8,Nd)]))],8,kd)])})),128))])])})),128))])}}});n("c24c9");const Vd=pn()(Ed,[["__scopeId","data-v-5788e0d2"]]);var Id=Vd,Bd=[{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}]}],Sd={class:"line-pool"},Ld={class:"category-name"},_d={class:"line-list"},Td=["onClick"],Md={overflow:"visible",width:"20",height:"20"},Dd=["d","stroke-dasharray","marker-start","marker-end"],zd=Object(y["defineComponent"])({__name:"LinePool",emits:["select"],setup:function(e,t){var n=t.emit,c=function(e){n("select",e)};return function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Sd,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(Bd),(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"category",key:e.type},[Object(y["createElementVNode"])("div",Ld,Object(y["toDisplayString"])(e.type),1),Object(y["createElementVNode"])("div",_d,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.children,(function(e,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"line-item",key:n},[Object(y["createElementVNode"])("div",{class:"line-content",onClick:function(t){return c(e)}},[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",Md,[Object(y["createElementVNode"])("defs",null,[e.points[0]?(Object(y["openBlock"])(),Object(y["createBlock"])(Ml,{key:0,class:"line-marker",id:"preset-line-".concat(t,"-").concat(n),position:"start",type:e.points[0],color:"currentColor",baseSize:2},null,8,["id","type"])):Object(y["createCommentVNode"])("",!0),e.points[1]?(Object(y["openBlock"])(),Object(y["createBlock"])(Ml,{key:1,class:"line-marker",id:"preset-line-".concat(t,"-").concat(n),position:"end",type:e.points[1],color:"currentColor",baseSize:2},null,8,["id","type"])):Object(y["createCommentVNode"])("",!0)]),Object(y["createElementVNode"])("path",{class:"line-path",d:e.path,stroke:"currentColor",fill:"none","stroke-width":"2","stroke-dasharray":"solid"===e.style?"0, 0":"4, 1","marker-start":e.points[0]?"url(#".concat("preset-line-".concat(t,"-").concat(n),"-",e.points[0],"-start)"):"","marker-end":e.points[1]?"url(#".concat("preset-line-".concat(t,"-").concat(n),"-",e.points[1],"-end)"):""},null,8,Dd)]))],8,Td)])})),128))])])})),128))])}}});n("3836");const Fd=pn()(zd,[["__scopeId","data-v-bca68faa"]]);var Ad=Fd,Rd={class:"chart-pool"},Pd=["onClick"],Hd=Object(y["defineComponent"])({__name:"ChartPool",emits:["select"],setup:function(e,t){var n=t.emit,c=["bar","horizontalBar","line","area","scatter","pie","ring"],o=function(e){n("select",e)};return function(e,t){var n=Object(y["resolveComponent"])("IconChartLine"),l=Object(y["resolveComponent"])("IconChartHistogram"),a=Object(y["resolveComponent"])("IconChartPie"),r=Object(y["resolveComponent"])("IconChartHistogramOne"),i=Object(y["resolveComponent"])("IconChartLineArea"),u=Object(y["resolveComponent"])("IconChartRing"),d=Object(y["resolveComponent"])("IconChartScatter");return Object(y["openBlock"])(),Object(y["createElementBlock"])("ul",Rd,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(c,(function(e,t){return Object(y["createElementVNode"])("li",{class:"chart-item",key:t},[Object(y["createElementVNode"])("div",{class:"chart-content",onClick:function(t){return o(e)}},["line"===e?(Object(y["openBlock"])(),Object(y["createBlock"])(n,{key:0,size:"24"})):"bar"===e?(Object(y["openBlock"])(),Object(y["createBlock"])(l,{key:1,size:"24"})):"pie"===e?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:2,size:"24"})):"horizontalBar"===e?(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:3,size:"24"})):"area"===e?(Object(y["openBlock"])(),Object(y["createBlock"])(i,{key:4,size:"24"})):"ring"===e?(Object(y["openBlock"])(),Object(y["createBlock"])(u,{key:5,size:"24"})):"scatter"===e?(Object(y["openBlock"])(),Object(y["createBlock"])(d,{key:6,size:"24"})):Object(y["createCommentVNode"])("",!0)],8,Pd)])})),64))])}}});n("24bc");const qd=pn()(Hd,[["__scopeId","data-v-3870b42e"]]);var Ud=qd,Gd=function(e){return Object(y["pushScopeId"])("data-v-144fbd05"),e=e(),Object(y["popScopeId"])(),e},Xd={class:"table-generator"},Yd={class:"title"},Zd={class:"lef"},Wd=["onMouseenter"],Jd={key:1,class:"custom"},Qd={class:"row"},Kd=Gd((function(){return Object(y["createElementVNode"])("div",{class:"label",style:{flex:"1"}},"行数:",-1)})),$d={class:"row"},es=Gd((function(){return Object(y["createElementVNode"])("div",{class:"label",style:{flex:"1"}},"列数:",-1)})),ts={class:"btns"},ns=Object(y["createTextVNode"])("取消"),cs=Object(y["createTextVNode"])("确认"),os=Object(y["defineComponent"])({__name:"TableGenerator",emits:["insert","close"],setup:function(e,t){var n=t.emit,c=Object(y["ref"])([]),o=Object(y["ref"])(3),l=Object(y["ref"])(3),a=Object(y["ref"])(!1),r=function(){if(c.value.length){var e=Object(Oe["a"])(c.value,2),t=e[0],o=e[1];n("insert",{row:t,col:o})}},i=function(){return o.value<1||o.value>20||l.value<1||l.value>20?Se["a"].warning("行数/列数必须在0~20之间!"):(n("insert",{row:o.value,col:l.value}),void(a.value=!1))},u=function(){n("close"),a.value=!1};return function(e,t){var n=Object(y["resolveComponent"])("InputNumber"),d=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Xd,[Object(y["createElementVNode"])("div",Yd,[Object(y["createElementVNode"])("div",Zd,"表格 "+Object(y["toDisplayString"])(c.value.length?"".concat(c.value[0]," x ").concat(c.value[1]):""),1),Object(y["createElementVNode"])("div",{class:"right",onClick:t[0]||(t[0]=function(e){return a.value=!a.value})},Object(y["toDisplayString"])(a.value?"返回":"自定义"),1)]),a.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Jd,[Object(y["createElementVNode"])("div",Qd,[Kd,Object(y["createVNode"])(n,{min:1,max:20,value:o.value,"onUpdate:value":t[3]||(t[3]=function(e){return o.value=e}),style:{flex:"3"}},null,8,["value"])]),Object(y["createElementVNode"])("div",$d,[es,Object(y["createVNode"])(n,{min:1,max:20,value:l.value,"onUpdate:value":t[4]||(t[4]=function(e){return l.value=e}),style:{flex:"3"}},null,8,["value"])]),Object(y["createElementVNode"])("div",ts,[Object(y["createVNode"])(d,{class:"btn",onClick:t[5]||(t[5]=function(e){return u()})},{default:Object(y["withCtx"])((function(){return[ns]})),_:1}),Object(y["createVNode"])(d,{class:"btn",type:"primary",onClick:t[6]||(t[6]=function(e){return i()})},{default:Object(y["withCtx"])((function(){return[cs]})),_:1})])])):(Object(y["openBlock"])(),Object(y["createElementBlock"])("table",{key:0,onMouseleave:t[1]||(t[1]=function(e){return c.value=[]}),onClick:t[2]||(t[2]=function(e){return r()})},[Object(y["createElementVNode"])("tbody",null,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(10,(function(e){return Object(y["createElementVNode"])("tr",{key:e},[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(10,(function(t){return Object(y["createElementVNode"])("td",{onMouseenter:function(n){return c.value=[e,t]},key:t},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["cell",{active:c.value.length&&e<=c.value[0]&&t<=c.value[1]}])},null,2)],40,Wd)})),64))])})),64))])],32))])}}});n("307a");const ls=pn()(os,[["__scopeId","data-v-144fbd05"]]);var as=ls,rs={class:"media-input"},is={class:"tabs"},us=["onClick"],ds={class:"btns"},ss=Object(y["createTextVNode"])("取消"),fs=Object(y["createTextVNode"])("确认"),bs={class:"btns"},ps=Object(y["createTextVNode"])("取消"),Os=Object(y["createTextVNode"])("确认"),ms=Object(y["defineComponent"])({__name:"MediaInput",emits:["insertVideo","insertAudio","close"],setup:function(e,t){var n=t.emit,c=Object(y["ref"])("video"),o=Object(y["ref"])("https://mazwai.com/videvo_files/video/free/2019-01/small_watermarked/181004_04_Dolphins-Whale_06_preview.webm"),l=Object(y["ref"])("https://freesound.org/data/previews/614/614107_11861866-lq.mp3"),a=[{key:"video",label:"视频"},{key:"audio",label:"音频"}],r=function(){if(!o.value)return Se["a"].error("请先输入正确的视频地址");n("insertVideo",o.value)},i=function(){if(!l.value)return Se["a"].error("请先输入正确的音频地址");n("insertAudio",l.value)};return function(e,t){var u=Object(y["resolveComponent"])("Input"),d=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",rs,[Object(y["createElementVNode"])("div",is,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(a,(function(e){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["tab",{active:c.value===e.key}]),key:e.key,onClick:function(t){return c.value=e.key}},Object(y["toDisplayString"])(e.label),11,us)})),64))]),"video"===c.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[Object(y["createVNode"])(u,{value:o.value,"onUpdate:value":t[0]||(t[0]=function(e){return o.value=e}),placeholder:"请输入视频地址,e.g. https://xxx.mp4"},null,8,["value"]),Object(y["createElementVNode"])("div",ds,[Object(y["createVNode"])(d,{onClick:t[1]||(t[1]=function(e){return n("close")}),style:{"margin-right":"10px"}},{default:Object(y["withCtx"])((function(){return[ss]})),_:1}),Object(y["createVNode"])(d,{type:"primary",onClick:t[2]||(t[2]=function(e){return r()})},{default:Object(y["withCtx"])((function(){return[fs]})),_:1})])],64)):Object(y["createCommentVNode"])("",!0),"audio"===c.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:1},[Object(y["createVNode"])(u,{value:l.value,"onUpdate:value":t[3]||(t[3]=function(e){return l.value=e}),placeholder:"请输入音频地址,e.g. https://xxx.mp3"},null,8,["value"]),Object(y["createElementVNode"])("div",bs,[Object(y["createVNode"])(d,{onClick:t[4]||(t[4]=function(e){return n("close")}),style:{"margin-right":"10px"}},{default:Object(y["withCtx"])((function(){return[ps]})),_:1}),Object(y["createVNode"])(d,{type:"primary",onClick:t[5]||(t[5]=function(e){return i()})},{default:Object(y["withCtx"])((function(){return[Os]})),_:1})])],64)):Object(y["createCommentVNode"])("",!0)])}}});n("4675");const vs=pn()(ms,[["__scopeId","data-v-b9437110"]]);var js=vs,hs=n("e5ca");hs["a"].SUB_SUP_SCALE=.5;var ys=[{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"}],gs=[{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"}]}],xs=["width","height"],ks=["transform"],Cs=["d"],Ns=Object(y["defineComponent"])({__name:"FormulaContent",props:{latex:{type:String,required:!0},width:{type:Number,required:!0},height:{type:Number,required:!0}},setup:function(e){var t=e,n=Object(y["ref"])({x:0,y:0,w:0,h:0}),c=Object(y["ref"])("");Object(y["watch"])((function(){return t.latex}),(function(){var e=new hs["b"](t.latex);c.value=e.pathd({}),n.value=e.box({})}),{immediate:!0});var o=Object(y["computed"])((function(){var e=n.value.w+32,c=n.value.h+32;return e>t.width||c>t.height?e/c>t.width/t.height?t.width/e:t.height/c:1}));return function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{class:"formula-content",overflow:"visible",width:n.value.w+32,height:n.value.h+32,stroke:"#000","stroke-width":"1",fill:"none","stroke-linecap":"round","stroke-linejoin":"round"},[Object(y["createElementVNode"])("g",{transform:"scale(".concat(Object(y["unref"])(o),", ").concat(Object(y["unref"])(o),") translate(0,0) matrix(1,0,0,1,0,0)"),"transform-origin":"0 50%"},[Object(y["createElementVNode"])("path",{d:c.value},null,8,Cs)],8,ks)],8,xs)}}});n("e9df");const ws=pn()(Ns,[["__scopeId","data-v-1c41d9fe"]]);var Es=ws,Vs=["innerHTML"],Is=Object(y["defineComponent"])({__name:"SymbolContent",props:{latex:{type:String,required:!0}},setup:function(e){var t=e,n=Object(y["computed"])((function(){var e=new hs["b"](t.latex);return e.svg({SCALE_X:10,SCALE_Y:10})}));return function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"symbol-content",innerHTML:Object(y["unref"])(n)},null,8,Vs)}}});const Bs=Is;var Ss=Bs,Ls={class:"latex-editor"},_s={class:"container"},Ts={class:"left"},Ms={class:"input-area"},Ds={class:"preview"},zs={key:0,class:"placeholder"},Fs={key:1,class:"preview-content"},As={class:"right"},Rs={class:"tabs"},Ps=["onClick"],Hs={class:"content"},qs={key:0,class:"symbol"},Us={class:"symbol-tabs"},Gs=["onClick"],Xs={class:"symbol-pool"},Ys=["onClick"],Zs={key:1,class:"formula"},Ws={class:"formula-title"},Js=["onClick"],Qs={class:"footer"},Ks=Object(y["createTextVNode"])("取消"),$s=Object(y["createTextVNode"])("确定"),ef=Object(y["defineComponent"])({__name:"index",props:{value:{type:String,default:""}},emits:["update","close"],setup:function(e,t){var n=t.emit,c=e,o=[{label:"常用符号",value:"symbol"},{label:"预置公式",value:"formula"}],l=ys,a=gs,r=Object(y["ref"])(""),i=Object(y["ref"])("symbol"),u=Object(y["ref"])(),d=Object(y["ref"])(gs[0].type),s=Object(y["computed"])((function(){var e=gs.find((function(e){return e.type===d.value}));return(null===e||void 0===e?void 0:e.children)||[]}));Object(y["onMounted"])((function(){c.value&&(r.value=c.value)}));var f=function(){if(!r.value)return Se["a"].error("公式不能为空");var e=new hs["b"](r.value),t=e.pathd({}),c=e.box({});n("update",{latex:r.value,path:t,w:c.w+32,h:c.h+32})},b=function(e){u.value&&(u.value.focus(),document.execCommand("insertText",!1,e))};return function(e,t){var c=Object(y["resolveComponent"])("TextArea"),p=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Ls,[Object(y["createElementVNode"])("div",_s,[Object(y["createElementVNode"])("div",Ts,[Object(y["createElementVNode"])("div",Ms,[Object(y["createVNode"])(c,{value:r.value,"onUpdate:value":t[0]||(t[0]=function(e){return r.value=e}),placeholder:"输入 LaTeX 公式",ref_key:"textAreaRef",ref:u},null,8,["value"])]),Object(y["createElementVNode"])("div",Ds,[r.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Fs,[Object(y["createVNode"])(Es,{width:518,height:138,latex:r.value},null,8,["latex"])])):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",zs,"公式预览"))])]),Object(y["createElementVNode"])("div",As,[Object(y["createElementVNode"])("div",Rs,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(o,(function(e){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["tab",{active:e.value===i.value}]),key:e.value,onClick:function(t){return i.value=e.value}},Object(y["toDisplayString"])(e.label),11,Ps)})),64))]),Object(y["createElementVNode"])("div",Hs,["symbol"===i.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",qs,[Object(y["createElementVNode"])("div",Us,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(a),(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["symbol-tab",{active:d.value===e.type}]),key:e.type,onClick:function(t){return d.value=e.type}},Object(y["toDisplayString"])(e.label),11,Gs)})),128))]),Object(y["createElementVNode"])("div",Xs,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(s),(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"symbol-item",key:e.latex,onClick:function(t){return b(e.latex)}},[Object(y["createVNode"])(Ss,{latex:e.latex},null,8,["latex"])],8,Ys)})),128))])])):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Zs,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(l),(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"formula-item",key:e.label},[Object(y["createElementVNode"])("div",Ws,Object(y["toDisplayString"])(e.label),1),Object(y["createElementVNode"])("div",{class:"formula-item-content",onClick:function(t){return r.value=e.latex}},[Object(y["createVNode"])(Es,{width:236,height:60,latex:e.latex},null,8,["latex"])],8,Js)])})),128))]))])])]),Object(y["createElementVNode"])("div",Qs,[Object(y["createVNode"])(p,{class:"btn",onClick:t[1]||(t[1]=function(e){return n("close")})},{default:Object(y["withCtx"])((function(){return[Ks]})),_:1}),Object(y["createVNode"])(p,{class:"btn",type:"primary",onClick:t[2]||(t[2]=function(e){return f()})},{default:Object(y["withCtx"])((function(){return[$s]})),_:1})])])}}});n("1933");const tf=pn()(ef,[["__scopeId","data-v-2d73bf28"]]);var nf=tf,cf={class:"canvas-tool"},of={class:"left-handler"},lf={class:"add-element-handler"},af={class:"right-handler"},rf={class:"viewport-size-preset"},uf=["onClick"],df={class:"text"},sf=Object(y["defineComponent"])({__name:"index",setup:function(e){var t=ie(),n=Object(g["c"])(t),c=n.creatingElement,o=Object(g["c"])(xe()),l=o.canUndo,a=o.canRedo,r=lt(),i=r.redo,u=r.undo,d=gt(),s=d.scaleCanvas,f=d.setCanvasScalePercentage,b=d.resetCanvas,p=d.canvasScalePercentage,O=[200,150,100,80,50],m=Object(y["ref"])(!1),v=function(e){f(e),m.value=!1},j=at(),h=j.createImageElement,x=j.createChartElement,k=j.createTableElement,C=j.createLatexElement,N=j.createVideoElement,w=j.createAudioElement,E=function(e){var t=e[0];t&&et(t).then((function(e){return h(e)}))},V=Object(y["ref"])(!1),I=Object(y["ref"])(!1),B=Object(y["ref"])(!1),S=Object(y["ref"])(!1),L=Object(y["ref"])(!1),_=Object(y["ref"])(!1),T=function(){t.setCreatingElement({type:"text"})},M=function(e){t.setCreatingElement({type:"shape",data:e}),V.value=!1},D=function(e){t.setCreatingElement({type:"line",data:e}),I.value=!1};return function(e,t){var n=Object(y["resolveComponent"])("IconBack"),o=Object(y["resolveComponent"])("Tooltip"),r=Object(y["resolveComponent"])("IconNext"),d=Object(y["resolveComponent"])("IconFontSize"),f=Object(y["resolveComponent"])("IconPicture"),j=Object(y["resolveComponent"])("FileInput"),h=Object(y["resolveComponent"])("IconGraphicDesign"),g=Object(y["resolveComponent"])("Popover"),z=Object(y["resolveComponent"])("IconConnection"),F=Object(y["resolveComponent"])("IconChartProportion"),A=Object(y["resolveComponent"])("IconInsertTable"),R=Object(y["resolveComponent"])("IconFormula"),P=Object(y["resolveComponent"])("IconVideoTwo"),H=Object(y["resolveComponent"])("IconMinus"),q=Object(y["resolveComponent"])("IconPlus"),U=Object(y["resolveComponent"])("IconFullScreen"),G=Object(y["resolveComponent"])("Modal");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",cf,[Object(y["createElementVNode"])("div",of,[Object(y["createVNode"])(o,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"撤销"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n,{class:Object(y["normalizeClass"])(["handler-item",{disable:!Object(y["unref"])(l)}]),onClick:t[0]||(t[0]=function(e){return Object(y["unref"])(u)()})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(o,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"重做"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{class:Object(y["normalizeClass"])(["handler-item",{disable:!Object(y["unref"])(a)}]),onClick:t[1]||(t[1]=function(e){return Object(y["unref"])(i)()})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"])]),Object(y["createElementVNode"])("div",lf,[Object(y["createVNode"])(o,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入文字"},{default:Object(y["withCtx"])((function(){var e;return[Object(y["createVNode"])(d,{class:Object(y["normalizeClass"])(["handler-item",{active:"text"===(null===(e=Object(y["unref"])(c))||void 0===e?void 0:e.type)}]),onClick:t[2]||(t[2]=function(e){return T()})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(j,{onChange:t[3]||(t[3]=function(e){return E(e)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入图片"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(g,{trigger:"click",visible:V.value,"onUpdate:visible":t[5]||(t[5]=function(e){return V.value=e})},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Id,{onSelect:t[4]||(t[4]=function(e){return M(e)})})]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入形状"},{default:Object(y["withCtx"])((function(){var e;return[Object(y["createVNode"])(h,{class:Object(y["normalizeClass"])(["handler-item",{active:"shape"===(null===(e=Object(y["unref"])(c))||void 0===e?void 0:e.type)}])},null,8,["class"])]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(y["createVNode"])(g,{trigger:"click",visible:I.value,"onUpdate:visible":t[7]||(t[7]=function(e){return I.value=e})},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Ad,{onSelect:t[6]||(t[6]=function(e){return D(e)})})]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入线条"},{default:Object(y["withCtx"])((function(){var e;return[Object(y["createVNode"])(z,{class:Object(y["normalizeClass"])(["handler-item",{active:"line"===(null===(e=Object(y["unref"])(c))||void 0===e?void 0:e.type)}])},null,8,["class"])]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(y["createVNode"])(g,{trigger:"click",visible:B.value,"onUpdate:visible":t[9]||(t[9]=function(e){return B.value=e})},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Ud,{onSelect:t[8]||(t[8]=function(e){Object(y["unref"])(x)(e),B.value=!1})})]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入图表"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(F,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(y["createVNode"])(g,{trigger:"click",visible:S.value,"onUpdate:visible":t[12]||(t[12]=function(e){return S.value=e})},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(as,{onClose:t[10]||(t[10]=function(e){return S.value=!1}),onInsert:t[11]||(t[11]=function(e){var t=e.row,n=e.col;Object(y["unref"])(k)(t,n),S.value=!1})})]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入表格"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(A,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(y["createVNode"])(o,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入公式"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(R,{class:"handler-item",onClick:t[13]||(t[13]=function(e){return _.value=!0})})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(g,{trigger:"click",visible:L.value,"onUpdate:visible":t[17]||(t[17]=function(e){return L.value=e})},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(js,{onClose:t[14]||(t[14]=function(e){return L.value=!1}),onInsertVideo:t[15]||(t[15]=function(e){Object(y["unref"])(N)(e),L.value=!1}),onInsertAudio:t[16]||(t[16]=function(e){Object(y["unref"])(w)(e),L.value=!1})})]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入音视频"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(P,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"])]),Object(y["createElementVNode"])("div",af,[Object(y["createVNode"])(H,{class:"handler-item viewport-size",onClick:t[18]||(t[18]=function(e){return Object(y["unref"])(s)("-")})}),Object(y["createVNode"])(g,{trigger:"click",visible:m.value,"onUpdate:visible":t[19]||(t[19]=function(e){return m.value=e})},{content:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",rf,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(O,(function(e){return Object(y["createElementVNode"])("div",{class:"preset-item",key:e,onClick:function(t){return v(e)}},Object(y["toDisplayString"])(e)+"%",9,uf)})),64))])]})),default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",df,Object(y["toDisplayString"])(Object(y["unref"])(p)),1)]})),_:1},8,["visible"]),Object(y["createVNode"])(q,{class:"handler-item viewport-size",onClick:t[20]||(t[20]=function(e){return Object(y["unref"])(s)("+")})}),Object(y["createVNode"])(o,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"适应屏幕"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(U,{class:"handler-item viewport-size-adaptation",onClick:t[21]||(t[21]=function(e){return Object(y["unref"])(b)()})})]})),_:1},8,["mouseEnterDelay"])]),Object(y["createVNode"])(G,{visible:_.value,"onUpdate:visible":t[24]||(t[24]=function(e){return _.value=e}),footer:null,centered:"",width:880,destroyOnClose:""},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(nf,{onClose:t[22]||(t[22]=function(e){return _.value=!1}),onUpdate:t[23]||(t[23]=function(e){Object(y["unref"])(C)(e),_.value=!1})})]})),_:1},8,["visible"])])}}});n("9ff2");const ff=pn()(sf,[["__scopeId","data-v-5d4eff54"]]);var bf=ff,pf=function(){var e=Object(g["c"])(le()),t=e.slides,n=Object(y["ref"])(null),c=Object(y["ref"])(50),o=function e(){t.value.length>c.value?n.value=setTimeout((function(){c.value=c.value+20,e()}),600):c.value=9999};return Object(y["onMounted"])(o),Object(y["onUnmounted"])((function(){n.value&&clearTimeout(n.value)})),{slidesLoadLimit:c}},Of=n("b76a"),mf=n.n(Of),vf={class:"layout-pool"},jf=["onClick"],hf=Object(y["defineComponent"])({__name:"LayoutPool",emits:["select"],setup:function(e,t){var n=t.emit,c=Object(g["c"])(le()),o=c.layouts,l=function(e){n("select",e)};return function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",vf,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(o),(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"layout-item",key:e.id,onClick:function(t){return l(e)}},[Object(y["createVNode"])(nd,{class:"thumbnail",slide:e,size:180},null,8,["slide"])],8,jf)})),128))])}}});n("3328");const yf=pn()(hf,[["__scopeId","data-v-cc6b7dca"]]);var gf=yf,xf={class:"add-slide"},kf=Object(y["createTextVNode"])("添加幻灯片"),Cf={class:"select-btn"},Nf=["onMousedown"],wf=Object(y["defineComponent"])({__name:"index",setup:function(e){var t=ie(),n=le(),c=ke(),o=Object(g["c"])(t),l=o.selectedSlidesIndex,a=o.thumbnailsFocus,r=Object(g["c"])(n),i=r.slides,u=r.slideIndex,d=Object(g["c"])(c),s=d.ctrlKeyState,f=d.shiftKeyState,b=pf(),p=b.slidesLoadLimit,O=Object(y["computed"])((function(){return[].concat(Object(K["a"])(l.value),[u.value])})),m=Object(y["ref"])(!1),v=ut(),j=v.copySlide,h=v.pasteSlide,x=v.createSlide,k=v.createSlideByTemplate,C=v.copyAndPasteSlide,N=v.deleteSlide,w=v.cutSlide,E=v.selectAllSlide,V=function(e){t.setActiveElementIdList([]),u.value!==e&&n.updateSlideIndex(e)},I=function(e,n){var c=O.value.length>1;if(!c||!O.value.includes(n)||0===e.button)if(s.value)if(u.value===n){if(!c)return;var o=O.value.filter((function(e){return e!==n}));t.updateSelectedSlidesIndex(o),V(O.value[0])}else if(O.value.includes(n)){var l=O.value.filter((function(e){return e!==n}));t.updateSelectedSlidesIndex(l)}else{var a=[].concat(Object(K["a"])(O.value),[n]);t.updateSelectedSlidesIndex(a),V(n)}else if(f.value){if(u.value===n&&!c)return;var r=Math.min.apply(Math,Object(K["a"])(O.value)),i=n;n=99}])},Object(y["toDisplayString"])(Object(y["unref"])(Ne)(n+1,2)),3),Object(y["createVNode"])(nd,{class:"thumbnail",slide:t,size:120,visible:n1&&void 0!==arguments[1]?arguments[1]:0,n=a.value,c=O(),l=c.originClipRange,i=c.originWidth,u=c.originHeight,d=c.originLeft,s=c.originTop;if(t){var f,m=u/i,v=0,j=100;if(m>t){var h=(1-t/m)/2*100;f=[[v,h],[j,j-h]]}else{var y=(1-m/t)/2*100;f=[[y,v],[j-y,j]]}o.updateElement({id:r.value,props:{clip:Object(S["a"])(Object(S["a"])({},n.clip),{},{shape:e,range:f}),left:d+i*(f[0][0]/100),top:s+u*(f[0][1]/100),width:i*(f[1][0]-f[0][0])/100,height:u*(f[1][1]-f[0][1])/100}})}else o.updateElement({id:r.value,props:{clip:Object(S["a"])(Object(S["a"])({},n.clip),{},{shape:e,range:l})}});p(),b()},v=function(e){var t=e[0];t&&(et(t).then((function(e){var t={src:e};o.updateElement({id:r.value,props:t})})),b())},j=function(){var e=a.value;if(e.clip){var t=O(),n=t.originWidth,c=t.originHeight,l=t.originLeft,i=t.originTop;o.updateElement({id:r.value,props:{left:l,top:i,width:n,height:c}})}o.removeElementProps({id:r.value,propName:["clip","outline","flip","shadow","filters"]}),b()},h=function(){var e=a.value,t=Object(S["a"])(Object(S["a"])({},u.value.background),{},{type:"image",image:e.src,imageSize:"cover"});o.updateSlide({background:t}),b()};return function(e,c){var o=Object(y["resolveComponent"])("IconTailoring"),l=Object(y["resolveComponent"])("Button"),a=Object(y["resolveComponent"])("ButtonGroup"),r=Object(y["resolveComponent"])("IconDown"),i=Object(y["resolveComponent"])("Popover"),u=Object(y["resolveComponent"])("Divider"),f=Object(y["resolveComponent"])("IconTransform"),b=Object(y["resolveComponent"])("FileInput"),O=Object(y["resolveComponent"])("IconUndo"),g=Object(y["resolveComponent"])("IconTheme");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",op,[Object(y["createElementVNode"])("div",{class:"origin-image",style:Object(y["normalizeStyle"])({backgroundImage:"url(".concat(Object(y["unref"])(d).src,")")})},null,4),Object(y["createVNode"])(Xb),Object(y["createVNode"])(a,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{style:{flex:"5"},onClick:c[0]||(c[0]=function(e){return p()})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{class:"btn-icon"}),lp]})),_:1}),Object(y["createVNode"])(i,{trigger:"click",visible:s.value,"onUpdate:visible":c[1]||(c[1]=function(e){return s.value=e})},{content:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",ap,[rp,Object(y["createElementVNode"])("div",ip,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(t),(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"shape-clip-item",key:t,onClick:function(e){return m(t)}},[Object(y["createElementVNode"])("div",{class:"shape",style:Object(y["normalizeStyle"])({clipPath:e.style})},null,4)],8,up)})),128))]),(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(n,(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:e.label},[e.label?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",dp,"按"+Object(y["toDisplayString"])(e.label)+":",1)):Object(y["createCommentVNode"])("",!0),Object(y["createVNode"])(a,{class:"row"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.children,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(l,{style:{flex:"1"},key:e.key,onClick:function(t){return m("rect",e.ratio)}},{default:Object(y["withCtx"])((function(){return[Object(y["createTextVNode"])(Object(y["toDisplayString"])(e.key),1)]})),_:2},1032,["onClick"])})),128))]})),_:2},1024)],64)})),64))])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{class:"no-padding",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r)]})),_:1})]})),_:1},8,["visible"])]})),_:1}),Object(y["createVNode"])(u),Object(y["createVNode"])(np),Object(y["createVNode"])(u),Object(y["createVNode"])(tb),Object(y["createVNode"])(u),Object(y["createVNode"])(vb),Object(y["createVNode"])(u),Object(y["createVNode"])(b,{onChange:c[2]||(c[2]=function(e){return v(e)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{class:"full-width-btn"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{class:"btn-icon"}),sp]})),_:1})]})),_:1}),Object(y["createVNode"])(l,{class:"full-width-btn",onClick:c[3]||(c[3]=function(e){return j()})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(O,{class:"btn-icon"}),fp]})),_:1}),Object(y["createVNode"])(l,{class:"full-width-btn",onClick:c[4]||(c[4]=function(e){return h()})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g,{class:"btn-icon"}),bp]})),_:1})])}}});n("911d");const Op=pn()(pp,[["__scopeId","data-v-7da35bec"]]);var mp=Op,vp=function(e){return Object(y["pushScopeId"])("data-v-02998580"),e=e(),Object(y["popScopeId"])(),e},jp={class:"shape-style-panel"},hp={class:"row"},yp=Object(y["createTextVNode"])("纯色填充"),gp=Object(y["createTextVNode"])("渐变填充"),xp=vp((function(){return Object(y["createElementVNode"])("div",{style:{flex:"1"}},null,-1)})),kp=Object(y["createTextVNode"])("线性渐变"),Cp=Object(y["createTextVNode"])("径向渐变"),Np={class:"row"},wp=vp((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"起点颜色:",-1)})),Ep={class:"row"},Vp=vp((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"终点颜色:",-1)})),Ip={key:0,class:"row"},Bp=vp((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"渐变角度:",-1)})),Sp=Object(y["createTextVNode"])("+"),Lp=Object(y["createTextVNode"])("-"),_p=Object(y["defineComponent"])({__name:"ShapeStylePanel",setup:function(e){var t=ie(),n=le(),c=Object(g["c"])(t),o=c.handleElement,l=c.handleElementId,a=c.richTextAttrs,r=c.availableFonts,i=o,u=Object(y["ref"])("#000"),d=Object(y["ref"])({type:"linear",rotate:0,color:["#fff","#fff"]}),s=Object(y["ref"])("fill"),f=Object(y["ref"])("middle");Object(y["watch"])(o,(function(){var e,t;o.value&&"shape"===o.value.type&&(u.value=o.value.fill||"#fff",d.value=o.value.gradient||{type:"linear",rotate:0,color:[u.value,"#fff"]},s.value=o.value.gradient?"gradient":"fill",f.value=(null===(e=o.value)||void 0===e||null===(t=e.text)||void 0===t?void 0:t.align)||"middle")}),{deep:!0,immediate:!0});var b=lt(),p=b.addHistorySnapshot,O=function(e){n.updateElement({id:l.value,props:e}),p()},m=function(e){"fill"===e?(n.removeElementProps({id:l.value,propName:"gradient"}),p()):O({gradient:d.value})},v=function(e){if(d.value){var t=Object(S["a"])(Object(S["a"])({},d.value),e);O({gradient:t})}},j=function(e){O({fill:e})},h=function(e){var t=o.value,n={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"},c=t.text||n;O({text:Object(S["a"])(Object(S["a"])({},c),{},{align:e})})},x=["12px","14px","16px","18px","20px","22px","24px","28px","32px","36px","40px","44px","48px","54px","60px","66px","72px","76px","80px","88px","96px","104px","112px","120px"],k=function(e,t){Ko.emit(so.RICH_TEXT_COMMAND,{action:{command:e,value:t}})};return function(e,t){var n,c=Object(y["resolveComponent"])("SelectOption"),o=Object(y["resolveComponent"])("Select"),l=Object(y["resolveComponent"])("ColorPicker"),b=Object(y["resolveComponent"])("Popover"),p=Object(y["resolveComponent"])("Slider"),O=Object(y["resolveComponent"])("Divider"),g=Object(y["resolveComponent"])("IconFontSize"),C=Object(y["resolveComponent"])("SelectOptGroup"),N=Object(y["resolveComponent"])("IconAddText"),w=Object(y["resolveComponent"])("InputGroup"),E=Object(y["resolveComponent"])("IconText"),V=Object(y["resolveComponent"])("Button"),I=Object(y["resolveComponent"])("Tooltip"),S=Object(y["resolveComponent"])("IconHighLight"),L=Object(y["resolveComponent"])("ButtonGroup"),_=Object(y["resolveComponent"])("IconTextBold"),T=Object(y["resolveComponent"])("CheckboxButton"),M=Object(y["resolveComponent"])("IconTextItalic"),D=Object(y["resolveComponent"])("IconTextUnderline"),z=Object(y["resolveComponent"])("IconFormat"),F=Object(y["resolveComponent"])("CheckboxButtonGroup"),A=Object(y["resolveComponent"])("IconAlignTextLeft"),R=Object(y["resolveComponent"])("RadioButton"),P=Object(y["resolveComponent"])("IconAlignTextCenter"),H=Object(y["resolveComponent"])("IconAlignTextRight"),q=Object(y["resolveComponent"])("RadioGroup"),U=Object(y["resolveComponent"])("IconAlignTextTopOne"),G=Object(y["resolveComponent"])("IconAlignTextMiddleOne"),X=Object(y["resolveComponent"])("IconAlignTextBottomOne");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",jp,[Object(y["createElementVNode"])("div",hp,[Object(y["createVNode"])(o,{style:{flex:"10"},value:s.value,onChange:t[0]||(t[0]=function(e){return m(e)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(c,{value:"fill"},{default:Object(y["withCtx"])((function(){return[yp]})),_:1}),Object(y["createVNode"])(c,{value:"gradient"},{default:Object(y["withCtx"])((function(){return[gp]})),_:1})]})),_:1},8,["value"]),xp,"fill"===s.value?(Object(y["openBlock"])(),Object(y["createBlock"])(b,{key:0,trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{modelValue:u.value,"onUpdate:modelValue":t[1]||(t[1]=function(e){return j(e)})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:u.value,style:{flex:"10"}},null,8,["color"])]})),_:1})):(Object(y["openBlock"])(),Object(y["createBlock"])(o,{key:1,style:{flex:"10"},value:d.value.type,onChange:t[2]||(t[2]=function(e){return v({type:e})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(c,{value:"linear"},{default:Object(y["withCtx"])((function(){return[kp]})),_:1}),Object(y["createVNode"])(c,{value:"radial"},{default:Object(y["withCtx"])((function(){return[Cp]})),_:1})]})),_:1},8,["value"]))]),"gradient"===s.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[Object(y["createElementVNode"])("div",Np,[wp,Object(y["createVNode"])(b,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{modelValue:d.value.color[0],"onUpdate:modelValue":t[3]||(t[3]=function(e){return v({color:[e,d.value.color[1]]})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:d.value.color[0],style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",Ep,[Vp,Object(y["createVNode"])(b,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{modelValue:d.value.color[1],"onUpdate:modelValue":t[4]||(t[4]=function(e){return v({color:[d.value.color[0],e]})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:d.value.color[1],style:{flex:"3"}},null,8,["color"])]})),_:1})]),"linear"===d.value.type?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Ip,[Bp,Object(y["createVNode"])(p,{class:"slider",min:0,max:360,step:15,value:d.value.rotate,onChange:t[5]||(t[5]=function(e){return v({rotate:e})})},null,8,["value"])])):Object(y["createCommentVNode"])("",!0)],64)):Object(y["createCommentVNode"])("",!0),Object(y["createVNode"])(Xb),Object(y["createVNode"])(O),null!==(n=Object(y["unref"])(i).text)&&void 0!==n&&n.content?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:1},[Object(y["createVNode"])(w,{compact:"",class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{style:{flex:"3"},value:Object(y["unref"])(a).fontname,onChange:t[6]||(t[6]=function(e){return k("fontname",e)})},{suffixIcon:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g)]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(C,{label:"系统字体"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(r),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(c,{key:e.value,value:e.value},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",{style:Object(y["normalizeStyle"])({fontFamily:e.value})},Object(y["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(y["createVNode"])(C,{label:"在线字体"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(B),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(c,{key:e.value,value:e.value},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",null,Object(y["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"]),Object(y["createVNode"])(o,{style:{flex:"2"},value:Object(y["unref"])(a).fontsize,onChange:t[7]||(t[7]=function(e){return k("fontsize",e)})},{suffixIcon:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(N)]})),default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(x,(function(e){return Object(y["createVNode"])(c,{key:e,value:e},{default:Object(y["withCtx"])((function(){return[Object(y["createTextVNode"])(Object(y["toDisplayString"])(e),1)]})),_:2},1032,["value"])})),64))]})),_:1},8,["value"])]})),_:1}),Object(y["createVNode"])(L,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{modelValue:Object(y["unref"])(a).color,"onUpdate:modelValue":t[8]||(t[8]=function(e){return k("color",e)})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(V,{class:"text-color-btn",style:{flex:"3"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(E),Object(y["createElementVNode"])("div",{class:"text-color-block",style:Object(y["normalizeStyle"])({backgroundColor:Object(y["unref"])(a).color})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(b,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{modelValue:Object(y["unref"])(a).backcolor,"onUpdate:modelValue":t[9]||(t[9]=function(e){return k("backcolor",e)})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字高亮"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(V,{class:"text-color-btn",style:{flex:"3"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(S),Object(y["createElementVNode"])("div",{class:"text-color-block",style:Object(y["normalizeStyle"])({backgroundColor:Object(y["unref"])(a).backcolor})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"增大字号"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(V,{class:"font-size-btn",style:{flex:"2"},onClick:t[10]||(t[10]=function(e){return k("fontsize-add")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g),Sp]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"减小字号"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(V,{class:"font-size-btn",style:{flex:"2"},onClick:t[11]||(t[11]=function(e){return k("fontsize-reduce")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g),Lp]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(F,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"加粗"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(T,{style:{flex:"1"},checked:Object(y["unref"])(a).bold,onClick:t[12]||(t[12]=function(e){return k("bold")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(_)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"斜体"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(T,{style:{flex:"1"},checked:Object(y["unref"])(a).em,onClick:t[13]||(t[13]=function(e){return k("em")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(M)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下划线"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(T,{style:{flex:"1"},checked:Object(y["unref"])(a).underline,onClick:t[14]||(t[14]=function(e){return k("underline")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(D)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"清除格式"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(T,{style:{flex:"1"},onClick:t[15]||(t[15]=function(e){return k("clear")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(z)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(q,{class:"row","button-style":"solid",value:Object(y["unref"])(a).align,onChange:t[16]||(t[16]=function(e){return k("align",e.target.value)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(R,{value:"left",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(A)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(R,{value:"center",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(P)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(R,{value:"right",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(H)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"]),Object(y["createVNode"])(q,{class:"row","button-style":"solid",value:f.value,onChange:t[17]||(t[17]=function(e){return h(e.target.value)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"顶对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(R,{value:"top",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(U)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(R,{value:"middle",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(G)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(I,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"底对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(R,{value:"bottom",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(X)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"]),Object(y["createVNode"])(O)],64)):Object(y["createCommentVNode"])("",!0),Object(y["createVNode"])(tb),Object(y["createVNode"])(O),Object(y["createVNode"])(vb),Object(y["createVNode"])(O),Object(y["createVNode"])(Mf)])}}});n("de23");const Tp=pn()(_p,[["__scopeId","data-v-02998580"]]);var Mp=Tp,Dp=function(e){return Object(y["pushScopeId"])("data-v-938968a2"),e=e(),Object(y["popScopeId"])(),e},zp={class:"line-style-panel"},Fp={class:"row"},Ap=Dp((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"线条样式:",-1)})),Rp=Object(y["createTextVNode"])("实线"),Pp=Object(y["createTextVNode"])("虚线"),Hp={class:"row"},qp=Dp((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"线条颜色:",-1)})),Up={class:"row"},Gp=Dp((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"线条宽度:",-1)})),Xp={class:"row"},Yp=Dp((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"起点样式:",-1)})),Zp=Object(y["createTextVNode"])("无"),Wp=Object(y["createTextVNode"])("箭头"),Jp=Object(y["createTextVNode"])("圆点"),Qp={class:"row"},Kp=Dp((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"终点样式:",-1)})),$p=Object(y["createTextVNode"])("无"),eO=Object(y["createTextVNode"])("箭头"),tO=Object(y["createTextVNode"])("圆点"),nO=Object(y["defineComponent"])({__name:"LineStylePanel",setup:function(e){var t=le(),n=Object(g["c"])(ie()),c=n.handleElement,o=c,l=lt(),a=l.addHistorySnapshot,r=function(e){c.value&&(t.updateElement({id:c.value.id,props:e}),a())};return function(e,t){var n=Object(y["resolveComponent"])("SelectOption"),c=Object(y["resolveComponent"])("Select"),l=Object(y["resolveComponent"])("ColorPicker"),a=Object(y["resolveComponent"])("Popover"),i=Object(y["resolveComponent"])("InputNumber"),u=Object(y["resolveComponent"])("Divider");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",zp,[Object(y["createElementVNode"])("div",Fp,[Ap,Object(y["createVNode"])(c,{style:{flex:"3"},value:Object(y["unref"])(o).style,onChange:t[0]||(t[0]=function(e){return r({style:e})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n,{value:"solid"},{default:Object(y["withCtx"])((function(){return[Rp]})),_:1}),Object(y["createVNode"])(n,{value:"dashed"},{default:Object(y["withCtx"])((function(){return[Pp]})),_:1})]})),_:1},8,["value"])]),Object(y["createElementVNode"])("div",Hp,[qp,Object(y["createVNode"])(a,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{modelValue:Object(y["unref"])(o).color,"onUpdate:modelValue":t[1]||(t[1]=function(e){return r({color:e})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:Object(y["unref"])(o).color,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",Up,[Gp,Object(y["createVNode"])(i,{value:Object(y["unref"])(o).width,onChange:t[2]||(t[2]=function(e){return r({width:e})}),style:{flex:"3"}},null,8,["value"])]),Object(y["createElementVNode"])("div",Xp,[Yp,Object(y["createVNode"])(c,{style:{flex:"3"},value:Object(y["unref"])(o).points[0],onChange:t[3]||(t[3]=function(e){return r({points:[e,Object(y["unref"])(o).points[1]]})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n,{value:""},{default:Object(y["withCtx"])((function(){return[Zp]})),_:1}),Object(y["createVNode"])(n,{value:"arrow"},{default:Object(y["withCtx"])((function(){return[Wp]})),_:1}),Object(y["createVNode"])(n,{value:"dot"},{default:Object(y["withCtx"])((function(){return[Jp]})),_:1})]})),_:1},8,["value"])]),Object(y["createElementVNode"])("div",Qp,[Kp,Object(y["createVNode"])(c,{style:{flex:"3"},value:Object(y["unref"])(o).points[1],onChange:t[4]||(t[4]=function(e){return r({points:[Object(y["unref"])(o).points[0],e]})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n,{value:""},{default:Object(y["withCtx"])((function(){return[$p]})),_:1}),Object(y["createVNode"])(n,{value:"arrow"},{default:Object(y["withCtx"])((function(){return[eO]})),_:1}),Object(y["createVNode"])(n,{value:"dot"},{default:Object(y["withCtx"])((function(){return[tO]})),_:1})]})),_:1},8,["value"])]),Object(y["createVNode"])(u),Object(y["createVNode"])(vb)])}}});n("d806");const cO=pn()(nO,[["__scopeId","data-v-938968a2"]]);var oO=cO,lO={class:"chart-data-editor"},aO={class:"editor-content"},rO={class:"range-box"},iO=["id","onFocus","onPaste"],uO={class:"btns"},dO={class:"left"},sO=Object(y["createTextVNode"])("清空"),fO={class:"right"},bO=Object(y["createTextVNode"])("取消"),pO=Object(y["createTextVNode"])("确认"),OO=Object(y["defineComponent"])({__name:"ChartDataEditor",props:{data:{type:Object,required:!0}},emits:["save","close"],setup:function(e,t){var n=t.emit,c=e,o=100,l=32,a=Object(y["ref"])([0,0]),r=Object(y["ref"])({width:0,height:0}),i=Object(y["ref"])(null),u=Object(y["computed"])((function(){var e=a.value[0]*o,t=a.value[1]*l;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"}}]})),d=Object(y["computed"])((function(){var e=a.value[0]*o,t=a.value[1]*l;return{left:e+"px",top:t+"px"}})),s=function(){var e=[],t=c.data,n=t.labels,o=t.legends,l=t.series,r=n.length,i=l.length;e.push([""].concat(Object(K["a"])(o)));for(var u=0;u.5*o&&(d+=o-d%o),s%l>.5*l&&(s+=l-s%l);var f=Math.round(s/l),b=Math.round(d/o);f<3&&(f=3),b<2&&(b=2),a.value=[b,f],r.value={width:0,height:0}}}};return function(e,t){var n=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",lO,[Object(y["createElementVNode"])("div",aO,[Object(y["createElementVNode"])("div",rO,[Object(y["createElementVNode"])("div",{class:"temp-range",style:Object(y["normalizeStyle"])({width:r.value.width+"px",height:r.value.height+"px"})},null,4),(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(u),(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["range-line",e.type]),key:e.type,style:Object(y["normalizeStyle"])(e.style)},null,6)})),128)),Object(y["createElementVNode"])("div",{class:"resizable",style:Object(y["normalizeStyle"])(Object(y["unref"])(d)),onMousedown:t[0]||(t[0]=Object(y["withModifiers"])((function(e){return j(e)}),["stop"]))},null,36)]),Object(y["createElementVNode"])("table",null,[Object(y["createElementVNode"])("tbody",null,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(31,(function(e){return Object(y["createElementVNode"])("tr",{key:e},[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(7,(function(t){return Object(y["createElementVNode"])("td",{key:t,class:Object(y["normalizeClass"])({head:1===t&&e<=a.value[1]||1===e&&t<=a.value[0]})},[Object(y["createElementVNode"])("input",{class:Object(y["normalizeClass"])(["item",{selected:e<=a.value[1]&&t<=a.value[0]}]),id:"cell-".concat(e-1,"-").concat(t-1),autocomplete:"off",onFocus:function(n){return i.value=[e-1,t-1]},onPaste:function(n){return m(n,e-1,t-1)}},null,42,iO)],2)})),64))])})),64))])])]),Object(y["createElementVNode"])("div",uO,[Object(y["createElementVNode"])("div",dO,[Object(y["createVNode"])(n,{class:"btn",onClick:t[1]||(t[1]=function(e){return O()})},{default:Object(y["withCtx"])((function(){return[sO]})),_:1})]),Object(y["createElementVNode"])("div",fO,[Object(y["createVNode"])(n,{class:"btn",onClick:t[2]||(t[2]=function(e){return v()})},{default:Object(y["withCtx"])((function(){return[bO]})),_:1}),Object(y["createVNode"])(n,{type:"primary",class:"btn",onClick:t[3]||(t[3]=function(e){return p()}),style:{"margin-left":"10px"}},{default:Object(y["withCtx"])((function(){return[pO]})),_:1})])])])}}});n("ca17");const mO=pn()(OO,[["__scopeId","data-v-53b32689"]]);var vO=mO,jO=function(e){return Object(y["pushScopeId"])("data-v-769d6876"),e=e(),Object(y["popScopeId"])(),e},hO={class:"chart-style-panel"},yO=Object(y["createTextVNode"])(" 编辑图表数据 "),gO={class:"row"},xO=Object(y["createTextVNode"])("面积图样式"),kO=Object(y["createTextVNode"])("散点图样式"),CO={class:"row"},NO=Object(y["createTextVNode"])("使用平滑曲线"),wO={key:1,class:"row"},EO=Object(y["createTextVNode"])("条形图样式"),VO=Object(y["createTextVNode"])("堆叠样式"),IO={key:2,class:"row"},BO=Object(y["createTextVNode"])("环形图样式"),SO={class:"row"},LO=jO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"图例:",-1)})),_O=Object(y["createTextVNode"])("不显示"),TO=Object(y["createTextVNode"])("显示在上方"),MO=Object(y["createTextVNode"])("显示在下方"),DO={class:"row"},zO=jO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"背景填充:",-1)})),FO={class:"row"},AO=jO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"网格颜色:",-1)})),RO={style:{flex:"2"}},PO={class:"color-btn-wrap",style:{flex:"3"}},HO=["onClick"],qO={class:"preset-themes"},UO=["onClick","onMouseenter"],GO=Object(y["createTextVNode"])("推荐主题"),XO=Object(y["createTextVNode"])(" 添加主题色 "),YO=Object(y["defineComponent"])({__name:"index",setup:function(e){var t=[["#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"]],n=ie(),c=le(),o=Object(g["c"])(n),l=o.handleElement,a=o.handleElementId,r=Object(g["c"])(c),i=r.theme,u=l,d=Object(y["ref"])(!1),s=Object(y["ref"])(!1),f=Object(y["ref"])([-1,-1]),b=lt(),p=b.addHistorySnapshot,O=Object(y["ref"])("#000"),m=Object(y["ref"])([]),v=Object(y["ref"])(""),j=Object(y["ref"])(""),h=Object(y["ref"])(!0),x=Object(y["ref"])(!0),k=Object(y["ref"])(!1),C=Object(y["ref"])(!1),N=Object(y["ref"])(!1),w=Object(y["ref"])(!1);Object(y["watch"])(l,(function(){if(l.value&&"chart"===l.value.type){if(O.value=l.value.fill||"#fff",l.value.options){var e=l.value.options,t=e.lineSmooth,n=e.showLine,c=e.showArea,o=e.horizontalBars,a=e.donut,r=e.stackBars;void 0!==t&&(h.value=t),void 0!==n&&(x.value=n),void 0!==c&&(k.value=c),void 0!==o&&(C.value=o),void 0!==a&&(N.value=a),void 0!==r&&(w.value=r)}m.value=l.value.themeColor,v.value=l.value.gridColor||"#333",j.value=l.value.legend||""}}),{deep:!0,immediate:!0});var E=function(e){c.updateElement({id:a.value,props:e}),p()},V=function(e){d.value=!1,E({data:e})},I=function(e){E({fill:e})},B=function(e){var t=l.value,n=Object(S["a"])(Object(S["a"])({},t.options),e);E({options:n})},L=function(e,t){var n={themeColor:m.value.map((function(n,c){return c===t?e:n}))};E(n)},_=function(){var e={themeColor:[].concat(Object(K["a"])(m.value),[i.value.themeColor])};E(e)},T=function(e,t){var n=e.slice(0,t+1);E({themeColor:n}),s.value=!1},M=function(e){var t={themeColor:m.value.filter((function(t,n){return n!==e}))};E(t)},D=function(e){E({gridColor:e})},z=function(e){E({legend:e})},F=function(){return d.value=!0};return Ko.on(so.OPEN_CHART_DATA_EDITOR,F),Object(y["onUnmounted"])((function(){Ko.off(so.OPEN_CHART_DATA_EDITOR,F)})),function(e,n){var c=Object(y["resolveComponent"])("IconEdit"),o=Object(y["resolveComponent"])("Button"),l=Object(y["resolveComponent"])("Divider"),a=Object(y["resolveComponent"])("Checkbox"),r=Object(y["resolveComponent"])("SelectOption"),i=Object(y["resolveComponent"])("Select"),b=Object(y["resolveComponent"])("ColorPicker"),p=Object(y["resolveComponent"])("Popover"),g=Object(y["resolveComponent"])("IconCloseSmall"),E=Object(y["resolveComponent"])("Tooltip"),S=Object(y["resolveComponent"])("IconPlus"),F=Object(y["resolveComponent"])("ButtonGroup"),A=Object(y["resolveComponent"])("Modal");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",hO,[Object(y["createVNode"])(o,{class:"full-width-btn",onClick:n[0]||(n[0]=function(e){return d.value=!0})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(c,{class:"btn-icon"}),yO]})),_:1}),Object(y["createVNode"])(l),"line"===Object(y["unref"])(u).chartType?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[Object(y["createElementVNode"])("div",gO,[Object(y["createVNode"])(a,{onChange:n[1]||(n[1]=function(e){return B({showArea:e.target.checked})}),checked:k.value,style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[xO]})),_:1},8,["checked"]),Object(y["createVNode"])(a,{onChange:n[2]||(n[2]=function(e){return B({showLine:!e.target.checked})}),checked:!x.value,style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[kO]})),_:1},8,["checked"])]),Object(y["createElementVNode"])("div",CO,[Object(y["createVNode"])(a,{onChange:n[3]||(n[3]=function(e){return B({lineSmooth:e.target.checked})}),checked:h.value},{default:Object(y["withCtx"])((function(){return[NO]})),_:1},8,["checked"])])],64)):Object(y["createCommentVNode"])("",!0),"bar"===Object(y["unref"])(u).chartType?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",wO,[Object(y["createVNode"])(a,{onChange:n[4]||(n[4]=function(e){return B({horizontalBars:e.target.checked})}),checked:C.value},{default:Object(y["withCtx"])((function(){return[EO]})),_:1},8,["checked"]),Object(y["createVNode"])(a,{onChange:n[5]||(n[5]=function(e){return B({stackBars:e.target.checked})}),checked:w.value},{default:Object(y["withCtx"])((function(){return[VO]})),_:1},8,["checked"])])):Object(y["createCommentVNode"])("",!0),"pie"===Object(y["unref"])(u).chartType?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",IO,[Object(y["createVNode"])(a,{onChange:n[6]||(n[6]=function(e){return B({donut:e.target.checked})}),checked:N.value},{default:Object(y["withCtx"])((function(){return[BO]})),_:1},8,["checked"])])):Object(y["createCommentVNode"])("",!0),Object(y["createVNode"])(l),Object(y["createElementVNode"])("div",SO,[LO,Object(y["createVNode"])(i,{style:{flex:"3"},value:j.value,onChange:n[7]||(n[7]=function(e){return z(e)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{value:""},{default:Object(y["withCtx"])((function(){return[_O]})),_:1}),Object(y["createVNode"])(r,{value:"top"},{default:Object(y["withCtx"])((function(){return[TO]})),_:1}),Object(y["createVNode"])(r,{value:"bottom"},{default:Object(y["withCtx"])((function(){return[MO]})),_:1})]})),_:1},8,["value"])]),Object(y["createVNode"])(l),Object(y["createElementVNode"])("div",DO,[zO,Object(y["createVNode"])(p,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b,{modelValue:O.value,"onUpdate:modelValue":n[8]||(n[8]=function(e){return I(e)})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:O.value,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",FO,[AO,Object(y["createVNode"])(p,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b,{modelValue:v.value,"onUpdate:modelValue":n[9]||(n[9]=function(e){return D(e)})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:v.value,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createVNode"])(l),(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(m.value,(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"row",key:t},[Object(y["createElementVNode"])("div",RO,Object(y["toDisplayString"])(0===t?"主题配色:":""),1),Object(y["createVNode"])(p,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b,{modelValue:e,"onUpdate:modelValue":function(e){return L(e,t)}},null,8,["modelValue","onUpdate:modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",PO,[Object(y["createVNode"])(Af,{color:e,style:{width:"100%"}},null,8,["color"]),Object(y["createVNode"])(E,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除"},{default:Object(y["withCtx"])((function(){return[0!==t?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:"delete-color-btn",onClick:Object(y["withModifiers"])((function(e){return M(t)}),["stop"])},[Object(y["createVNode"])(g)],8,HO)):Object(y["createCommentVNode"])("",!0)]})),_:2},1032,["mouseEnterDelay"])])]})),_:2},1024)])})),128)),Object(y["createVNode"])(F,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(p,{trigger:"click",visible:s.value,"onUpdate:visible":n[11]||(n[11]=function(e){return s.value=e})},{content:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",qO,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(t,(function(e,t){return Object(y["createElementVNode"])("div",{class:"preset-theme",key:t},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e,(function(c,o){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["preset-theme-color",{select:f.value[0]===t&&o<=f.value[1]}]),key:c,style:Object(y["normalizeStyle"])({backgroundColor:c}),onClick:function(t){return T(e,o)},onMouseenter:function(e){return f.value=[t,o]},onMouseleave:n[10]||(n[10]=function(e){return f.value=[-1,-1]})},null,46,UO)})),128))])})),64))])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{class:"no-padding",style:{flex:"2"}},{default:Object(y["withCtx"])((function(){return[GO]})),_:1})]})),_:1},8,["visible"]),Object(y["createVNode"])(o,{class:"no-padding",disabled:m.value.length>=10,style:{flex:"3"},onClick:n[12]||(n[12]=function(e){return _()})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(S,{class:"btn-icon"}),XO]})),_:1},8,["disabled"])]})),_:1}),Object(y["createVNode"])(l),Object(y["createVNode"])(tb),Object(y["createVNode"])(A,{visible:d.value,"onUpdate:visible":n[15]||(n[15]=function(e){return d.value=e}),footer:null,centered:"",closable:!1,width:648,destroyOnClose:""},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(vO,{data:Object(y["unref"])(u).data,onClose:n[13]||(n[13]=function(e){return d.value=!1}),onSave:n[14]||(n[14]=function(e){return V(e)})},null,8,["data"])]})),_:1},8,["visible"])])}}});n("d074");const ZO=pn()(YO,[["__scopeId","data-v-769d6876"]]);var WO=ZO,JO=function(e){return Object(y["pushScopeId"])("data-v-7e28e1d8"),e=e(),Object(y["popScopeId"])(),e},QO={class:"table-style-panel"},KO={class:"row"},$O=JO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"行数:",-1)})),em={class:"set-count",style:{flex:"3"}},tm={class:"count-text"},nm={class:"row"},cm=JO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"列数:",-1)})),om={class:"set-count",style:{flex:"3"}},lm={class:"count-text"},am={class:"row theme-switch"},rm=JO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"启用主题表格:",-1)})),im={class:"switch-wrapper",style:{flex:"3"}},um={class:"row"},dm=Object(y["createTextVNode"])("标题行"),sm=Object(y["createTextVNode"])("汇总行"),fm={class:"row"},bm=Object(y["createTextVNode"])("第一列"),pm=Object(y["createTextVNode"])("最后一列"),Om={class:"row"},mm=JO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"主题颜色:",-1)})),vm=Object(y["defineComponent"])({__name:"TableStylePanel",setup:function(e){var t=le(),n=Object(g["c"])(ie()),c=n.handleElement,o=n.handleElementId,l=n.selectedTableCells,a=n.availableFonts,r=Object(y["computed"])((function(){return t.theme.themeColor})),i=["12px","14px","16px","18px","20px","22px","24px","28px","32px"],u=Object(y["ref"])({bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"#000",fontsize:"12px",fontname:"微软雅黑",align:"left"}),d=Object(y["ref"])(),s=Object(y["ref"])(!1),f=Object(y["ref"])(0),b=Object(y["ref"])(0),p=Object(y["ref"])(0),O=Object(y["ref"])(0);Object(y["watch"])(c,(function(){c.value&&"table"===c.value.type&&(d.value=c.value.theme,s.value=!!d.value,f.value=c.value.data.length,b.value=c.value.data[0].length,p.value=c.value.data.length,O.value=c.value.data[0].length)}),{deep:!0,immediate:!0});var m=lt(),v=m.addHistorySnapshot,j=function(){if(c.value&&"table"===c.value.type){var e=0,t=0;if(l.value.length){var n=l.value[0];e=+n.split("_")[0],t=+n.split("_")[1]}var o=c.value.data[e][t].style;u.value=o?{bold:!!o.bold,em:!!o.em,underline:!!o.underline,strikethrough:!!o.strikethrough,color:o.color||"#000",backcolor:o.backcolor||"#000",fontsize:o.fontsize||"12px",fontname:o.fontname||"微软雅黑",align:o.align||"left"}:{bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"#000",fontsize:"12px",fontname:"微软雅黑",align:"left"}}};Object(y["onMounted"])((function(){l.value.length&&j()})),Object(y["watch"])(l,j);var h=function(e){t.updateElement({id:o.value,props:e}),v()},k=function(e){for(var t=c.value,n=JSON.parse(JSON.stringify(t.data)),o=0;on){var o=new Array(b.value).fill({id:Object(x["b"])(10),colspan:1,rowspan:1,text:""}),l=new Array(e-n).fill(o),a=JSON.parse(JSON.stringify(t.data));a.push.apply(a,Object(K["a"])(l)),h({data:a})}else{var r=t.data.slice(0,e);h({data:r})}},E=function(e){var t=c.value,n=t.data[0].length,o=t.data,l=t.colWidths.map((function(e){return e*t.width}));if(e>n){var a;o=o.map((function(t){var c=new Array(e-n).fill({id:Object(x["b"])(10),colspan:1,rowspan:1,text:""});return t.push.apply(t,Object(K["a"])(c)),t}));var r=new Array(e-n).fill(100);(a=l).push.apply(a,Object(K["a"])(r))}else o=o.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:o,colWidths:u};h(d)};return function(e,t){var n=Object(y["resolveComponent"])("IconFontSize"),c=Object(y["resolveComponent"])("SelectOption"),o=Object(y["resolveComponent"])("SelectOptGroup"),l=Object(y["resolveComponent"])("Select"),r=Object(y["resolveComponent"])("IconAddText"),p=Object(y["resolveComponent"])("InputGroup"),O=Object(y["resolveComponent"])("ColorPicker"),m=Object(y["resolveComponent"])("IconText"),v=Object(y["resolveComponent"])("Button"),j=Object(y["resolveComponent"])("Tooltip"),h=Object(y["resolveComponent"])("Popover"),g=Object(y["resolveComponent"])("IconFill"),x=Object(y["resolveComponent"])("ButtonGroup"),V=Object(y["resolveComponent"])("IconTextBold"),I=Object(y["resolveComponent"])("CheckboxButton"),S=Object(y["resolveComponent"])("IconTextItalic"),L=Object(y["resolveComponent"])("IconTextUnderline"),_=Object(y["resolveComponent"])("IconStrikethrough"),T=Object(y["resolveComponent"])("CheckboxButtonGroup"),M=Object(y["resolveComponent"])("IconAlignTextLeft"),D=Object(y["resolveComponent"])("RadioButton"),z=Object(y["resolveComponent"])("IconAlignTextCenter"),F=Object(y["resolveComponent"])("IconAlignTextRight"),A=Object(y["resolveComponent"])("RadioGroup"),R=Object(y["resolveComponent"])("Divider"),P=Object(y["resolveComponent"])("IconMinus"),H=Object(y["resolveComponent"])("IconPlus"),q=Object(y["resolveComponent"])("Switch"),U=Object(y["resolveComponent"])("Checkbox");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",QO,[Object(y["createVNode"])(p,{compact:"",class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{style:{flex:"3"},value:u.value.fontname,onChange:t[0]||(t[0]=function(e){return k({fontname:e})})},{suffixIcon:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n)]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{label:"系统字体"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(a),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(c,{key:e.value,value:e.value},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",{style:Object(y["normalizeStyle"])({fontFamily:e.value})},Object(y["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(y["createVNode"])(o,{label:"在线字体"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(B),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(c,{key:e.value,value:e.value},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",null,Object(y["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"]),Object(y["createVNode"])(l,{style:{flex:"2"},value:u.value.fontsize,onChange:t[1]||(t[1]=function(e){return k({fontsize:e})})},{suffixIcon:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r)]})),default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(i,(function(e){return Object(y["createVNode"])(c,{key:e,value:e},{default:Object(y["withCtx"])((function(){return[Object(y["createTextVNode"])(Object(y["toDisplayString"])(e),1)]})),_:2},1032,["value"])})),64))]})),_:1},8,["value"])]})),_:1}),Object(y["createVNode"])(x,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(h,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(O,{modelValue:u.value.color,"onUpdate:modelValue":t[2]||(t[2]=function(e){return k({color:e})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(j,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(v,{class:"text-color-btn",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(m),Object(y["createElementVNode"])("div",{class:"text-color-block",style:Object(y["normalizeStyle"])({backgroundColor:u.value.color})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(h,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(O,{modelValue:u.value.backcolor,"onUpdate:modelValue":t[3]||(t[3]=function(e){return k({backcolor:e})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(j,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"单元格填充"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(v,{class:"text-color-btn",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g),Object(y["createElementVNode"])("div",{class:"text-color-block",style:Object(y["normalizeStyle"])({backgroundColor:u.value.backcolor})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1})]})),_:1}),Object(y["createVNode"])(T,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(j,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"加粗"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(I,{style:{flex:"1"},checked:u.value.bold,onClick:t[4]||(t[4]=function(e){return k({bold:!u.value.bold})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(V)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(j,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"斜体"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(I,{style:{flex:"1"},checked:u.value.em,onClick:t[5]||(t[5]=function(e){return k({em:!u.value.em})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(S)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(j,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下划线"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(I,{style:{flex:"1"},checked:u.value.underline,onClick:t[6]||(t[6]=function(e){return k({underline:!u.value.underline})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(L)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(j,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除线"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(I,{style:{flex:"1"},checked:u.value.strikethrough,onClick:t[7]||(t[7]=function(e){return k({strikethrough:!u.value.strikethrough})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(_)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(A,{class:"row","button-style":"solid",value:u.value.align,onChange:t[8]||(t[8]=function(e){return k({align:e.target.value})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(j,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(D,{value:"left",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(M)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(j,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(D,{value:"center",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(z)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(j,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(D,{value:"right",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(F)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"]),Object(y["createVNode"])(R),Object(y["createVNode"])(tb,{fixed:!0}),Object(y["createVNode"])(R),Object(y["createElementVNode"])("div",KO,[$O,Object(y["createElementVNode"])("div",em,[Object(y["createVNode"])(v,{class:"btn",disabled:f.value<=1,onClick:t[9]||(t[9]=function(e){return w(f.value-1)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(P)]})),_:1},8,["disabled"]),Object(y["createElementVNode"])("div",tm,Object(y["toDisplayString"])(f.value),1),Object(y["createVNode"])(v,{class:"btn",disabled:f.value>=30,onClick:t[10]||(t[10]=function(e){return w(f.value+1)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(H)]})),_:1},8,["disabled"])])]),Object(y["createElementVNode"])("div",nm,[cm,Object(y["createElementVNode"])("div",om,[Object(y["createVNode"])(v,{class:"btn",disabled:b.value<=1,onClick:t[11]||(t[11]=function(e){return E(b.value-1)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(P)]})),_:1},8,["disabled"]),Object(y["createElementVNode"])("div",lm,Object(y["toDisplayString"])(b.value),1),Object(y["createVNode"])(v,{class:"btn",disabled:b.value>=30,onClick:t[12]||(t[12]=function(e){return E(b.value+1)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(H)]})),_:1},8,["disabled"])])]),Object(y["createVNode"])(R),Object(y["createElementVNode"])("div",am,[rm,Object(y["createElementVNode"])("div",im,[Object(y["createVNode"])(q,{checked:s.value,onChange:t[13]||(t[13]=function(e){return N(e)})},null,8,["checked"])])]),d.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[Object(y["createElementVNode"])("div",um,[Object(y["createVNode"])(U,{onChange:t[14]||(t[14]=function(e){return C({rowHeader:e.target.checked})}),checked:d.value.rowHeader,style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[dm]})),_:1},8,["checked"]),Object(y["createVNode"])(U,{onChange:t[15]||(t[15]=function(e){return C({rowFooter:e.target.checked})}),checked:d.value.rowFooter,style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[sm]})),_:1},8,["checked"])]),Object(y["createElementVNode"])("div",fm,[Object(y["createVNode"])(U,{onChange:t[16]||(t[16]=function(e){return C({colHeader:e.target.checked})}),checked:d.value.colHeader,style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[bm]})),_:1},8,["checked"]),Object(y["createVNode"])(U,{onChange:t[17]||(t[17]=function(e){return C({colFooter:e.target.checked})}),checked:d.value.colFooter,style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[pm]})),_:1},8,["checked"])]),Object(y["createElementVNode"])("div",Om,[mm,Object(y["createVNode"])(h,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(O,{modelValue:d.value.color,"onUpdate:modelValue":t[18]||(t[18]=function(e){return C({color:e})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:d.value.color,style:{flex:"3"}},null,8,["color"])]})),_:1})])],64)):Object(y["createCommentVNode"])("",!0)])}}});n("dcd4");const jm=pn()(vm,[["__scopeId","data-v-7e28e1d8"]]);var hm=jm,ym=function(e){return Object(y["pushScopeId"])("data-v-546adf8c"),e=e(),Object(y["popScopeId"])(),e},gm={class:"latex-style-panel"},xm={class:"row"},km=Object(y["createTextVNode"])("编辑 LaTeX"),Cm={class:"row"},Nm=ym((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"颜色:",-1)})),wm={class:"row"},Em=ym((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"粗细:",-1)})),Vm=Object(y["defineComponent"])({__name:"LatexStylePanel",setup:function(e){var t=le(),n=Object(g["c"])(ie()),c=n.handleElement,o=c,l=Object(y["ref"])(!1),a=lt(),r=a.addHistorySnapshot,i=function(e){c.value&&(t.updateElement({id:c.value.id,props:e}),r())},u=function(e){i({path:e.path,latex:e.latex,width:e.w,height:e.h,viewBox:[e.w,e.h]})},d=function(){return l.value=!0};return Ko.on(so.OPEN_LATEX_EDITOR,d),Object(y["onUnmounted"])((function(){Ko.off(so.OPEN_LATEX_EDITOR,d)})),function(e,t){var n=Object(y["resolveComponent"])("Button"),c=Object(y["resolveComponent"])("Divider"),a=Object(y["resolveComponent"])("ColorPicker"),r=Object(y["resolveComponent"])("Popover"),d=Object(y["resolveComponent"])("InputNumber"),s=Object(y["resolveComponent"])("Modal");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",gm,[Object(y["createElementVNode"])("div",xm,[Object(y["createVNode"])(n,{style:{flex:"1"},onClick:t[0]||(t[0]=function(e){return l.value=!0})},{default:Object(y["withCtx"])((function(){return[km]})),_:1})]),Object(y["createVNode"])(c),Object(y["createElementVNode"])("div",Cm,[Nm,Object(y["createVNode"])(r,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{modelValue:Object(y["unref"])(o).color,"onUpdate:modelValue":t[1]||(t[1]=function(e){return i({color:e})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:Object(y["unref"])(o).color,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",wm,[Em,Object(y["createVNode"])(d,{min:1,max:3,value:Object(y["unref"])(o).strokeWidth,onChange:t[2]||(t[2]=function(e){return i({strokeWidth:e})}),style:{flex:"3"}},null,8,["value"])]),Object(y["createVNode"])(s,{visible:l.value,"onUpdate:visible":t[5]||(t[5]=function(e){return l.value=e}),footer:null,centered:"",width:880,destroyOnClose:""},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(nf,{value:Object(y["unref"])(o).latex,onClose:t[3]||(t[3]=function(e){return l.value=!1}),onUpdate:t[4]||(t[4]=function(e){u(e),l.value=!1})},null,8,["value"])]})),_:1},8,["visible"])])}}});n("c041");const Im=pn()(Vm,[["__scopeId","data-v-546adf8c"]]);var Bm=Im,Sm=function(e){return Object(y["pushScopeId"])("data-v-ff7125dc"),e=e(),Object(y["popScopeId"])(),e},Lm={class:"video-style-panel"},_m=Sm((function(){return Object(y["createElementVNode"])("div",{class:"title"},"视频预览封面",-1)})),Tm={class:"background-image-wrapper"},Mm={class:"background-image"},Dm={class:"row"},zm=Object(y["createTextVNode"])("重置封面"),Fm=Object(y["defineComponent"])({__name:"VideoStylePanel",setup:function(e){var t=le(),n=Object(g["c"])(ie()),c=n.handleElement,o=c,l=lt(),a=l.addHistorySnapshot,r=function(e){c.value&&(t.updateElement({id:c.value.id,props:e}),a())},i=function(e){var t=e[0];t&&et(t).then((function(e){return r({poster:e})}))};return function(e,t){var n=Object(y["resolveComponent"])("IconPlus"),c=Object(y["resolveComponent"])("FileInput"),l=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Lm,[_m,Object(y["createElementVNode"])("div",Tm,[Object(y["createVNode"])(c,{onChange:t[0]||(t[0]=function(e){return i(e)})},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",Mm,[Object(y["createElementVNode"])("div",{class:"content",style:Object(y["normalizeStyle"])({backgroundImage:"url(".concat(Object(y["unref"])(o).poster,")")})},[Object(y["createVNode"])(n)],4)])]})),_:1})]),Object(y["createElementVNode"])("div",Dm,[Object(y["createVNode"])(l,{style:{flex:"1"},onClick:t[1]||(t[1]=function(e){return r({poster:""})})},{default:Object(y["withCtx"])((function(){return[zm]})),_:1})])])}}});n("a81a");const Am=pn()(Fm,[["__scopeId","data-v-ff7125dc"]]);var Rm=Am,Pm=function(e){return Object(y["pushScopeId"])("data-v-5d723d50"),e=e(),Object(y["popScopeId"])(),e},Hm={class:"audio-style-panel"},qm={class:"row"},Um=Pm((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"图标颜色:",-1)})),Gm={class:"row switch-row"},Xm=Pm((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"自动播放:",-1)})),Ym={class:"switch-wrapper",style:{flex:"3"}},Zm={class:"row switch-row"},Wm=Pm((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"循环播放:",-1)})),Jm={class:"switch-wrapper",style:{flex:"3"}},Qm=Object(y["defineComponent"])({__name:"AudioStylePanel",setup:function(e){var t=le(),n=Object(g["c"])(ie()),c=n.handleElement,o=c,l=lt(),a=l.addHistorySnapshot,r=function(e){c.value&&(t.updateElement({id:c.value.id,props:e}),a())};return function(e,t){var n=Object(y["resolveComponent"])("ColorPicker"),c=Object(y["resolveComponent"])("Popover"),l=Object(y["resolveComponent"])("Switch");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Hm,[Object(y["createElementVNode"])("div",qm,[Um,Object(y["createVNode"])(c,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n,{modelValue:Object(y["unref"])(o).color,"onUpdate:modelValue":t[0]||(t[0]=function(e){return r({color:e})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:Object(y["unref"])(o).color,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",Gm,[Xm,Object(y["createElementVNode"])("div",Ym,[Object(y["createVNode"])(l,{checked:Object(y["unref"])(o).autoplay,onChange:t[1]||(t[1]=function(e){return r({autoplay:e})})},null,8,["checked"])])]),Object(y["createElementVNode"])("div",Zm,[Wm,Object(y["createElementVNode"])("div",Jm,[Object(y["createVNode"])(l,{checked:Object(y["unref"])(o).loop,onChange:t[2]||(t[2]=function(e){return r({loop:e})})},null,8,["checked"])])])])}}});n("795e");const Km=pn()(Qm,[["__scopeId","data-v-5d723d50"]]);var $m=Km,ev=function(e){return Object(y["pushScopeId"])("data-v-71469855"),e=e(),Object(y["popScopeId"])(),e},tv={class:"multi-style-panel"},nv={class:"row"},cv=ev((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"填充颜色:",-1)})),ov={class:"row"},lv=ev((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"边框样式:",-1)})),av=Object(y["createTextVNode"])("实线边框"),rv=Object(y["createTextVNode"])("虚线边框"),iv={class:"row"},uv=ev((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"边框颜色:",-1)})),dv={class:"row"},sv=ev((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"边框粗细:",-1)})),fv=Object(y["createTextVNode"])("+"),bv=Object(y["createTextVNode"])("-"),pv=Object(y["defineComponent"])({__name:"MultiStylePanel",setup:function(e){var t=le(),n=Object(g["c"])(ie()),c=n.richTextAttrs,o=n.availableFonts,l=n.activeElementList,a=lt(),r=a.addHistorySnapshot,i=function(e,n){t.updateElement({id:e,props:n}),r()},u=["12px","14px","16px","18px","20px","22px","24px","28px","32px","36px","40px","44px","48px","54px","60px","66px","72px","76px","80px","88px","96px","104px","112px","120px"],d=Object(y["ref"])("#fff"),s=Object(y["ref"])({width:0,color:"#fff",style:"solid"}),f=function(e){var t,n=Object(L["a"])(l.value);try{for(n.s();!(t=n.n()).done;){var c=t.value;if("text"!==c.type&&"shape"!==c.type&&"chart"!==c.type||i(c.id,{fill:e}),"table"===c.type){for(var o=JSON.parse(JSON.stringify(c.data)),a=0;a1){if(!r.value)return mv;var e=l.value.find((function(e){return e.id===r.value}));return e&&n[e.type]||null}return a.value&&n[a.value.type]||null}));return function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",vv,[(Object(y["openBlock"])(),Object(y["createBlock"])(Object(y["resolveDynamicComponent"])(Object(y["unref"])(i))))])}}});const hv=jv;var yv=hv,gv=function(e){return Object(y["pushScopeId"])("data-v-6bf6c951"),e=e(),Object(y["popScopeId"])(),e},xv={class:"element-positopn-panel"},kv=gv((function(){return Object(y["createElementVNode"])("div",{class:"title"},"层级:",-1)})),Cv=Object(y["createTextVNode"])(" 置于顶层"),Nv=Object(y["createTextVNode"])(" 置于底层"),wv=Object(y["createTextVNode"])(" 上移一层"),Ev=Object(y["createTextVNode"])(" 下移一层"),Vv=gv((function(){return Object(y["createElementVNode"])("div",{class:"title"},"对齐:",-1)})),Iv={class:"row"},Bv=gv((function(){return Object(y["createElementVNode"])("div",{style:{flex:"3"}},"位置:",-1)})),Sv=gv((function(){return Object(y["createElementVNode"])("div",{style:{flex:"1"}},null,-1)})),Lv=Object(y["createStaticVNode"])('
X
Y
',1),_v={class:"row"},Tv=gv((function(){return Object(y["createElementVNode"])("div",{style:{flex:"3"}},"大小:",-1)})),Mv={key:1,style:{flex:"1"}},Dv=Object(y["createStaticVNode"])('
',1),zv={class:"row"},Fv=gv((function(){return Object(y["createElementVNode"])("div",{style:{flex:"3"}},"旋转:",-1)})),Av=gv((function(){return Object(y["createElementVNode"])("div",{style:{flex:"1"}},null,-1)})),Rv=Object(y["defineComponent"])({__name:"ElementPositionPanel",setup:function(e){var t=le(),n=Object(g["c"])(ie()),c=n.handleElement,o=n.handleElementId,l=Object(y["ref"])(0),a=Object(y["ref"])(0),r=Object(y["ref"])(0),i=Object(y["ref"])(0),u=Object(y["ref"])(0),d=Object(y["ref"])(!1),s=Object(y["computed"])((function(){return c.value&&dc[c.value.type]||20}));Object(y["watch"])(c,(function(){c.value&&(l.value=Object(te["round"])(c.value.left,1),a.value=Object(te["round"])(c.value.top,1),d.value="fixedRatio"in c.value&&!!c.value.fixedRatio,"line"!==c.value.type&&(r.value=Object(te["round"])(c.value.width,1),i.value=Object(te["round"])(c.value.height,1),u.value="rotate"in c.value&&void 0!==c.value.rotate?Object(te["round"])(c.value.rotate,1):0))}),{deep:!0,immediate:!0});var f=mt(),b=f.orderElement,p=jc(),O=p.alignElementToCanvas,m=lt(),v=m.addHistorySnapshot,j=function(e){var n={left:e};t.updateElement({id:o.value,props:n}),v()},h=function(e){var n={top:e};t.updateElement({id:o.value,props:n}),v()},x=function(e){var n={width:e};t.updateElement({id:o.value,props:n}),v()},N=function(e){var n={height:e};t.updateElement({id:o.value,props:n}),v()},w=function(e){var n={rotate:e};t.updateElement({id:o.value,props:n}),v()},E=function(e){var n={fixedRatio:e};t.updateElement({id:o.value,props:n}),v()},V=function(e){var n=45*Math.floor(u.value/45);"+"===e?n+=45:"-"===e&&(n-=45),n<-180&&(n=-180),n>180&&(n=180);var c={rotate:n};t.updateElement({id:o.value,props:c}),v()};return function(e,t){var n=Object(y["resolveComponent"])("IconSendToBack"),o=Object(y["resolveComponent"])("Button"),f=Object(y["resolveComponent"])("IconBringToFrontOne"),p=Object(y["resolveComponent"])("ButtonGroup"),m=Object(y["resolveComponent"])("IconBringToFront"),v=Object(y["resolveComponent"])("IconSentToBack"),g=Object(y["resolveComponent"])("Divider"),I=Object(y["resolveComponent"])("IconAlignLeft"),B=Object(y["resolveComponent"])("Tooltip"),S=Object(y["resolveComponent"])("IconAlignVertically"),L=Object(y["resolveComponent"])("IconAlignRight"),_=Object(y["resolveComponent"])("IconAlignTop"),T=Object(y["resolveComponent"])("IconAlignHorizontally"),M=Object(y["resolveComponent"])("IconAlignBottom"),D=Object(y["resolveComponent"])("InputNumber"),z=Object(y["resolveComponent"])("IconLock"),F=Object(y["resolveComponent"])("IconUnlock"),A=Object(y["resolveComponent"])("IconRotate");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",xv,[kv,Object(y["createVNode"])(p,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{style:{flex:"1"},onClick:t[0]||(t[0]=function(e){return Object(y["unref"])(b)(Object(y["unref"])(c),Object(y["unref"])(k).TOP)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n,{class:"btn-icon"}),Cv]})),_:1}),Object(y["createVNode"])(o,{style:{flex:"1"},onClick:t[1]||(t[1]=function(e){return Object(y["unref"])(b)(Object(y["unref"])(c),Object(y["unref"])(k).BOTTOM)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{class:"btn-icon"}),Nv]})),_:1})]})),_:1}),Object(y["createVNode"])(p,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{style:{flex:"1"},onClick:t[2]||(t[2]=function(e){return Object(y["unref"])(b)(Object(y["unref"])(c),Object(y["unref"])(k).UP)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(m,{class:"btn-icon"}),wv]})),_:1}),Object(y["createVNode"])(o,{style:{flex:"1"},onClick:t[3]||(t[3]=function(e){return Object(y["unref"])(b)(Object(y["unref"])(c),Object(y["unref"])(k).DOWN)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(v,{class:"btn-icon"}),Ev]})),_:1})]})),_:1}),Object(y["createVNode"])(g),Vv,Object(y["createVNode"])(p,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(B,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{style:{flex:"1"},onClick:t[4]||(t[4]=function(e){return Object(y["unref"])(O)(Object(y["unref"])(C).LEFT)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(I)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(B,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"水平居中"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{style:{flex:"1"},onClick:t[5]||(t[5]=function(e){return Object(y["unref"])(O)(Object(y["unref"])(C).HORIZONTAL)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(S)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(B,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{style:{flex:"1"},onClick:t[6]||(t[6]=function(e){return Object(y["unref"])(O)(Object(y["unref"])(C).RIGHT)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(L)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(p,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(B,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{style:{flex:"1"},onClick:t[7]||(t[7]=function(e){return Object(y["unref"])(O)(Object(y["unref"])(C).TOP)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(_)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(B,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"垂直居中"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{style:{flex:"1"},onClick:t[8]||(t[8]=function(e){return Object(y["unref"])(O)(Object(y["unref"])(C).VERTICAL)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(T)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(B,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{style:{flex:"1"},onClick:t[9]||(t[9]=function(e){return Object(y["unref"])(O)(Object(y["unref"])(C).BOTTOM)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(M)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(g),Object(y["createElementVNode"])("div",Iv,[Bv,Object(y["createVNode"])(D,{step:5,value:l.value,onChange:t[10]||(t[10]=function(e){return j(e)}),style:{flex:"4"}},null,8,["value"]),Sv,Object(y["createVNode"])(D,{step:5,value:a.value,onChange:t[11]||(t[11]=function(e){return h(e)}),style:{flex:"4"}},null,8,["value"])]),Lv,"line"!==Object(y["unref"])(c).type?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[Object(y["createElementVNode"])("div",_v,[Tv,Object(y["createVNode"])(D,{min:Object(y["unref"])(s),max:1500,step:5,value:r.value,onChange:t[12]||(t[12]=function(e){return x(e)}),style:{flex:"4"}},null,8,["min","value"]),["image","shape","audio"].includes(Object(y["unref"])(c).type)?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[d.value?(Object(y["openBlock"])(),Object(y["createBlock"])(B,{key:0,mouseLeaveDelay:0,mouseEnterDelay:.5,title:"解除宽高比锁定"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(z,{style:{flex:"1"},class:"icon-btn",onClick:t[13]||(t[13]=function(e){return E(!1)})})]})),_:1},8,["mouseEnterDelay"])):(Object(y["openBlock"])(),Object(y["createBlock"])(B,{key:1,mouseLeaveDelay:0,mouseEnterDelay:.5,title:"宽高比锁定"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(F,{style:{flex:"1"},class:"icon-btn",onClick:t[14]||(t[14]=function(e){return E(!0)})})]})),_:1},8,["mouseEnterDelay"]))],64)):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Mv)),Object(y["createVNode"])(D,{min:Object(y["unref"])(s),max:800,step:5,disabled:"text"===Object(y["unref"])(c).type,value:i.value,onChange:t[15]||(t[15]=function(e){return N(e)}),style:{flex:"4"}},null,8,["min","disabled","value"])]),Dv],64)):Object(y["createCommentVNode"])("",!0),["line","video","audio"].includes(Object(y["unref"])(c).type)?Object(y["createCommentVNode"])("",!0):(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:1},[Object(y["createVNode"])(g),Object(y["createElementVNode"])("div",zv,[Fv,Object(y["createVNode"])(B,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"逆时针旋转"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(A,{class:"icon-btn",onClick:t[16]||(t[16]=function(e){return V("-")}),style:{flex:"2"}})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(B,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"顺时针旋转"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(A,{class:"icon-btn",onClick:t[17]||(t[17]=function(e){return V("+")}),style:Object(y["normalizeStyle"])({flex:2,transform:"rotateY(180deg)"})},null,8,["style"])]})),_:1},8,["mouseEnterDelay"]),Av,Object(y["createVNode"])(D,{min:-180,max:180,step:5,value:u.value,onChange:t[18]||(t[18]=function(e){return w(e)}),style:{flex:"4"}},null,8,["value"])])],64))])}}});n("1b4b");const Pv=pn()(Rv,[["__scopeId","data-v-6bf6c951"]]);var Hv=Pv,qv=1e3,Uv="click",Gv="animate__",Xv=[{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"}]}],Yv=[{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"}]}],Zv=[{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"}]}],Wv=function(e){return Object(y["pushScopeId"])("data-v-2f69234f"),e=e(),Object(y["popScopeId"])(),e},Jv={class:"element-animation-panel"},Qv={key:0,class:"element-animation"},Kv={class:"tabs"},$v=["onClick"],ej={class:"type-title"},tj={class:"pool-item-wrapper"},nj=["onMouseenter","onClick"],cj={key:0,class:"mask"},oj=Object(y["createTextVNode"])(" 添加动画 "),lj={key:1,class:"tip"},aj=Object(y["createTextVNode"])(" 选中画布中的元素添加动画"),rj={class:"sequence-content"},ij={class:"index"},uj={class:"text"},dj={class:"handler"},sj={key:0,class:"configs"},fj={class:"config-item"},bj=Wv((function(){return Object(y["createElementVNode"])("div",{style:{flex:"3"}},"持续时长:",-1)})),pj={class:"config-item"},Oj=Wv((function(){return Object(y["createElementVNode"])("div",{style:{flex:"3"}},"触发方式:",-1)})),mj=Object(y["createTextVNode"])("主动触发"),vj=Object(y["createTextVNode"])("与上一动画同时"),jj=Object(y["createTextVNode"])("上一动画之后"),hj={class:"config-item"},yj=Object(y["createTextVNode"])("更换动画"),gj=Object(y["defineComponent"])({__name:"ElementAnimationPanel",setup:function(e){var t,n={},c=Object(L["a"])(Xv);try{for(c.s();!(t=c.n()).done;){var o,l=t.value,a=Object(L["a"])(l.children);try{for(a.s();!(o=a.n()).done;){var r=o.value;n[r.value]=r.name}}catch(ee){a.e(ee)}finally{a.f()}}}catch(ee){c.e(ee)}finally{c.f()}var i,u=Object(L["a"])(Yv);try{for(u.s();!(i=u.n()).done;){var d,s=i.value,f=Object(L["a"])(s.children);try{for(f.s();!(d=f.n()).done;){var b=d.value;n[b.value]=b.name}}catch(ee){f.e(ee)}finally{f.f()}}}catch(ee){u.e(ee)}finally{u.f()}var p,O=Object(L["a"])(Zv);try{for(O.s();!(p=O.n()).done;){var m,v=p.value,j=Object(L["a"])(v.children);try{for(j.s();!(m=j.n()).done;){var h=m.value;n[h.value]=h.name}}catch(ee){j.e(ee)}finally{j.f()}}}catch(ee){O.e(ee)}finally{O.f()}var k=["in","out","attention"],C=le(),N=Object(g["c"])(ie()),w=N.handleElement,E=N.handleElementId,V=Object(g["c"])(C),I=V.currentSlide,B=V.formatedAnimations,_=V.currentSlideAnimations,T=[{key:"in",label:"入场"},{key:"out",label:"退场"},{key:"attention",label:"强调"}],M=Object(y["ref"])("in");Object(y["watch"])((function(){return E.value}),(function(){z.value=!1}));var D=Object(y["ref"])(""),z=Object(y["ref"])(!1),F=lt(),A=F.addHistorySnapshot,R=Object(y["computed"])((function(){for(var e=[],t=0;t5e3)){var n=_.value.map((function(n){return n.id===e?Object(S["a"])(Object(S["a"])({},n),{},{duration:t}):n}));C.updateSlide({animations:n}),A()}},X=function(e,t){var n=_.value.map((function(n){return n.id===e?Object(S["a"])(Object(S["a"])({},n),{},{trigger:t}):n}));C.updateSlide({animations:n}),A()},Y=function(e,t){var n=_.value.map((function(n){return n.id===Z.value?Object(S["a"])(Object(S["a"])({},n),{},{type:e,effect:t}):n}));C.updateSlide({animations:n}),z.value=!1,A();var c=_.value.find((function(e){return e.elId===E.value})),o=(null===c||void 0===c?void 0:c.duration)||qv;U(E.value,t,o)},Z=Object(y["ref"])(""),W=function(e,t){if(Z.value)Y(e,t);else{var n=JSON.parse(JSON.stringify(_.value));n.push({id:Object(x["b"])(10),elId:E.value,type:e,effect:t,duration:qv,trigger:Uv}),C.updateSlide({animations:n}),z.value=!1,A(),U(E.value,t,qv)}},J=Object(y["ref"])(!1),Q=function(e){e?setTimeout((function(){return J.value=!0}),600):J.value=!1},K=function(e){z.value=!0,Z.value=e,Q(!0)},$={in:Xv,out:Yv,attention:Zv};return function(e,t){var n=Object(y["resolveComponent"])("IconEffects"),c=Object(y["resolveComponent"])("Button"),o=Object(y["resolveComponent"])("Popover"),l=Object(y["resolveComponent"])("IconClick"),a=Object(y["resolveComponent"])("Divider"),r=Object(y["resolveComponent"])("IconPlayOne"),i=Object(y["resolveComponent"])("Tooltip"),u=Object(y["resolveComponent"])("IconCloseSmall"),d=Object(y["resolveComponent"])("InputNumber"),s=Object(y["resolveComponent"])("SelectOption"),f=Object(y["resolveComponent"])("Select");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Jv,[Object(y["unref"])(w)?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Qv,[Object(y["createVNode"])(o,{trigger:"click",visible:z.value,"onUpdate:visible":t[2]||(t[2]=function(e){return z.value=e}),onVisibleChange:t[3]||(t[3]=function(e){return Q(e)})},{content:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",Kv,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(T,(function(e){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["tab",e.key,{active:M.value===e.key}]),key:e.key,onClick:function(t){return M.value=e.key}},Object(y["toDisplayString"])(e.label),11,$v)})),64))]),(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(k,(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,[M.value===e?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["animation-pool",e]),key:e},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])($[e],(function(n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"pool-type",key:n.name},[Object(y["createElementVNode"])("div",ej,Object(y["toDisplayString"])(n.name)+":",1),Object(y["createElementVNode"])("div",tj,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(n.children,(function(n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"pool-item",key:n.name,onMouseenter:function(e){return D.value=n.value},onMouseleave:t[0]||(t[0]=function(e){return D.value=""}),onClick:function(t){return W(e,n.value)}},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["animation-box",["".concat(Object(y["unref"])(Gv),"animated"),"".concat(Object(y["unref"])(Gv),"fast"),D.value===n.value&&"".concat(Object(y["unref"])(Gv)).concat(n.value)]])},Object(y["toDisplayString"])(n.name),3)],40,nj)})),128))])])})),128)),J.value?Object(y["createCommentVNode"])("",!0):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",cj))],2)):Object(y["createCommentVNode"])("",!0)],64)})),64))]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(c,{class:"element-animation-btn",onClick:t[1]||(t[1]=function(e){return Z.value=""})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n,{style:{"margin-right":"5px"}}),oj]})),_:1})]})),_:1},8,["visible"])])):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",lj,[Object(y["createVNode"])(l,{style:{"margin-right":"5px"}}),aj])),Object(y["createVNode"])(a),Object(y["createVNode"])(Object(y["unref"])(mf.a),{class:"animation-sequence",modelValue:Object(y["unref"])(R),animation:300,scroll:!0,scrollSensitivity:50,handle:".sequence-content",onEnd:q,itemKey:"id"},{item:Object(y["withCtx"])((function(e){var t,n,o=e.element;return[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["sequence-item",[o.type,{active:(null===(t=Object(y["unref"])(w))||void 0===t?void 0:t.id)===o.elId}]])},[Object(y["createElementVNode"])("div",rj,[Object(y["createElementVNode"])("div",ij,Object(y["toDisplayString"])(o.index),1),Object(y["createElementVNode"])("div",uj,"【"+Object(y["toDisplayString"])(o.elType)+"】"+Object(y["toDisplayString"])(o.animationEffect),1),Object(y["createElementVNode"])("div",dj,[Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"预览"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{class:"handler-btn",onClick:function(e){return U(o.elId,o.effect,o.duration)}},null,8,["onClick"])]})),_:2},1032,["mouseEnterDelay"]),Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{class:"handler-btn",onClick:function(e){return H(o.id)}},null,8,["onClick"])]})),_:2},1032,["mouseEnterDelay"])])]),(null===(n=Object(y["unref"])(P)[0])||void 0===n?void 0:n.elId)===o.elId?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",sj,[Object(y["createVNode"])(a,{style:{margin:"16px 0"}}),Object(y["createElementVNode"])("div",fj,[bj,Object(y["createVNode"])(d,{min:500,max:3e3,step:500,value:o.duration,onChange:function(e){return G(o.id,e)},style:{flex:"5"}},null,8,["value","onChange"])]),Object(y["createElementVNode"])("div",pj,[Oj,Object(y["createVNode"])(f,{value:o.trigger,onChange:function(e){return X(o.id,e)},style:{flex:"5"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(s,{value:"click"},{default:Object(y["withCtx"])((function(){return[mj]})),_:1}),Object(y["createVNode"])(s,{value:"meantime"},{default:Object(y["withCtx"])((function(){return[vj]})),_:1}),Object(y["createVNode"])(s,{value:"auto"},{default:Object(y["withCtx"])((function(){return[jj]})),_:1})]})),_:2},1032,["value","onChange"])]),Object(y["createElementVNode"])("div",hj,[Object(y["createVNode"])(c,{style:{flex:"1"},onClick:function(e){return K(o.id)}},{default:Object(y["withCtx"])((function(){return[yj]})),_:2},1032,["onClick"])])])):Object(y["createCommentVNode"])("",!0)],2)]})),_:1},8,["modelValue"])])}}});n("cc39");const xj=pn()(gj,[["__scopeId","data-v-2f69234f"]]);var kj=xj,Cj=[{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"}],Nj=function(e){return Object(y["pushScopeId"])("data-v-e0bbbd9e"),e=e(),Object(y["popScopeId"])(),e},wj={class:"slide-design-panel"},Ej=Nj((function(){return Object(y["createElementVNode"])("div",{class:"title"},"背景填充",-1)})),Vj={class:"row"},Ij=Object(y["createTextVNode"])("纯色填充"),Bj=Object(y["createTextVNode"])("图片填充"),Sj=Object(y["createTextVNode"])("渐变填充"),Lj=Nj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"1"}},null,-1)})),_j=Object(y["createTextVNode"])("缩放"),Tj=Object(y["createTextVNode"])("拼贴"),Mj=Object(y["createTextVNode"])("缩放铺满"),Dj=Object(y["createTextVNode"])("线性渐变"),zj=Object(y["createTextVNode"])("径向渐变"),Fj={key:0,class:"background-image-wrapper"},Aj={class:"background-image"},Rj={key:1,class:"background-gradient-wrapper"},Pj={class:"row"},Hj=Nj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"起点颜色:",-1)})),qj={class:"row"},Uj=Nj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"终点颜色:",-1)})),Gj={key:0,class:"row"},Xj=Nj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"渐变角度:",-1)})),Yj={class:"row"},Zj=Object(y["createTextVNode"])("应用背景到全部"),Wj={class:"row"},Jj=Nj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"画布尺寸:",-1)})),Qj=Object(y["createTextVNode"])("宽屏 16 : 9"),Kj=Object(y["createTextVNode"])("宽屏 16 :10"),$j=Object(y["createTextVNode"])("标准 4 :3"),eh=Nj((function(){return Object(y["createElementVNode"])("div",{class:"title"},"全局主题",-1)})),th={class:"row"},nh=Nj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"字体:",-1)})),ch={class:"row"},oh=Nj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"字体颜色:",-1)})),lh={class:"row"},ah=Nj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"背景颜色:",-1)})),rh={class:"row"},ih=Nj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"主题色:",-1)})),uh=Object(y["createTextVNode"])(" 预置主题 "),dh={key:2,class:"theme-list"},sh=["onClick"],fh={class:"theme-item-content"},bh={class:"row"},ph=Object(y["createTextVNode"])("应用主题到全部"),Oh=Object(y["defineComponent"])({__name:"SlideDesignPanel",setup:function(e){var t=le(),n=Object(g["c"])(ie()),c=n.availableFonts,o=Object(g["c"])(t),l=o.slides,a=o.currentSlide,r=o.viewportRatio,i=o.theme,u=Object(y["computed"])((function(){return a.value.background?a.value.background:{type:"solid",value:"#fff"}})),d=lt(),s=d.addHistorySnapshot,f=function(e){if("solid"===e){var n=Object(S["a"])(Object(S["a"])({},u.value),{},{type:"solid",color:u.value.color||"#fff"});t.updateSlide({background:n})}else if("image"===e){var c=Object(S["a"])(Object(S["a"])({},u.value),{},{type:"image",image:u.value.image||"",imageSize:u.value.imageSize||"cover"});t.updateSlide({background:c})}else{var o=Object(S["a"])(Object(S["a"])({},u.value),{},{type:"gradient",gradientType:u.value.gradientType||"linear",gradientColor:u.value.gradientColor||["#fff","#fff"],gradientRotate:u.value.gradientRotate||0});t.updateSlide({background:o})}s()},b=function(e){t.updateSlide({background:Object(S["a"])(Object(S["a"])({},u.value),e)}),s()},p=function(e){var t=e[0];t&&et(t).then((function(e){return b({image:e})}))},O=function(){var e=l.value.map((function(e){return Object(S["a"])(Object(S["a"])({},e),{},{background:a.value.background})}));t.setSlides(e),s()},m=function(e){t.setTheme(e)},v=function(){var e,n=JSON.parse(JSON.stringify(l.value)),c=i.value,o=c.themeColor,a=c.backgroundColor,r=c.fontColor,u=c.fontName,d=Object(L["a"])(n);try{for(d.s();!(e=d.n()).done;){var f=e.value;f.background&&"image"===f.background.type||(f.background=Object(S["a"])(Object(S["a"])({},f.background),{},{type:"solid",color:a}));var b,p=f.elements,O=Object(L["a"])(p);try{for(O.s();!(b=O.n()).done;){var m=b.value;if("shape"===m.type)m.fill=o;else if("line"===m.type)m.color=o;else if("text"===m.type)m.defaultColor=r,m.defaultFontName=u,m.fill&&(m.fill=o);else if("table"===m.type){m.theme&&(m.theme.color=o);var v,j=Object(L["a"])(m.data);try{for(j.s();!(v=j.n()).done;){var h,y=v.value,g=Object(L["a"])(y);try{for(g.s();!(h=g.n()).done;){var x=h.value;x.style&&(x.style.color=r,x.style.fontname=u)}}catch(k){g.e(k)}finally{g.f()}}}catch(k){j.e(k)}finally{j.f()}}else"chart"===m.type?(m.themeColor=[o],m.gridColor=r):"latex"===m.type?m.color=r:"audio"===m.type&&(m.color=o)}}catch(k){O.e(k)}finally{O.f()}}}catch(k){d.e(k)}finally{d.f()}t.setSlides(n),s()},j=Object(y["ref"])(!0),h=function(){j.value=!j.value},x=function(e){t.setViewportRatio(e)};return function(e,t){var n=Object(y["resolveComponent"])("SelectOption"),o=Object(y["resolveComponent"])("Select"),l=Object(y["resolveComponent"])("ColorPicker"),a=Object(y["resolveComponent"])("Popover"),d=Object(y["resolveComponent"])("IconPlus"),s=Object(y["resolveComponent"])("FileInput"),g=Object(y["resolveComponent"])("Slider"),k=Object(y["resolveComponent"])("Button"),C=Object(y["resolveComponent"])("Divider"),N=Object(y["resolveComponent"])("SelectOptGroup"),w=Object(y["resolveComponent"])("IconDown");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",wj,[Ej,Object(y["createElementVNode"])("div",Vj,[Object(y["createVNode"])(o,{style:{flex:"10"},value:Object(y["unref"])(u).type,onChange:t[0]||(t[0]=function(e){return f(e)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n,{value:"solid"},{default:Object(y["withCtx"])((function(){return[Ij]})),_:1}),Object(y["createVNode"])(n,{value:"image"},{default:Object(y["withCtx"])((function(){return[Bj]})),_:1}),Object(y["createVNode"])(n,{value:"gradient"},{default:Object(y["withCtx"])((function(){return[Sj]})),_:1})]})),_:1},8,["value"]),Lj,"solid"===Object(y["unref"])(u).type?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:0,trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{modelValue:Object(y["unref"])(u).color,"onUpdate:modelValue":t[1]||(t[1]=function(e){return b({color:e})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:Object(y["unref"])(u).color||"#fff",style:{flex:"10"}},null,8,["color"])]})),_:1})):"image"===Object(y["unref"])(u).type?(Object(y["openBlock"])(),Object(y["createBlock"])(o,{key:1,style:{flex:"10"},value:Object(y["unref"])(u).imageSize||"cover",onChange:t[2]||(t[2]=function(e){return b({imageSize:e})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n,{value:"contain"},{default:Object(y["withCtx"])((function(){return[_j]})),_:1}),Object(y["createVNode"])(n,{value:"repeat"},{default:Object(y["withCtx"])((function(){return[Tj]})),_:1}),Object(y["createVNode"])(n,{value:"cover"},{default:Object(y["withCtx"])((function(){return[Mj]})),_:1})]})),_:1},8,["value"])):(Object(y["openBlock"])(),Object(y["createBlock"])(o,{key:2,style:{flex:"10"},value:Object(y["unref"])(u).gradientType,onChange:t[3]||(t[3]=function(e){return b({gradientType:e})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n,{value:"linear"},{default:Object(y["withCtx"])((function(){return[Dj]})),_:1}),Object(y["createVNode"])(n,{value:"radial"},{default:Object(y["withCtx"])((function(){return[zj]})),_:1})]})),_:1},8,["value"]))]),"image"===Object(y["unref"])(u).type?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Fj,[Object(y["createVNode"])(s,{onChange:t[4]||(t[4]=function(e){return p(e)})},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",Aj,[Object(y["createElementVNode"])("div",{class:"content",style:Object(y["normalizeStyle"])({backgroundImage:"url(".concat(Object(y["unref"])(u).image,")")})},[Object(y["createVNode"])(d)],4)])]})),_:1})])):Object(y["createCommentVNode"])("",!0),"gradient"===Object(y["unref"])(u).type?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Rj,[Object(y["createElementVNode"])("div",Pj,[Hj,Object(y["createVNode"])(a,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{modelValue:Object(y["unref"])(u).gradientColor[0],"onUpdate:modelValue":t[5]||(t[5]=function(e){return b({gradientColor:[e,Object(y["unref"])(u).gradientColor[1]]})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:Object(y["unref"])(u).gradientColor[0],style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",qj,[Uj,Object(y["createVNode"])(a,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{modelValue:Object(y["unref"])(u).gradientColor[1],"onUpdate:modelValue":t[6]||(t[6]=function(e){return b({gradientColor:[Object(y["unref"])(u).gradientColor[0],e]})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:Object(y["unref"])(u).gradientColor[1],style:{flex:"3"}},null,8,["color"])]})),_:1})]),"linear"===Object(y["unref"])(u).gradientType?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Gj,[Xj,Object(y["createVNode"])(g,{class:"slider",min:0,max:360,step:15,value:Object(y["unref"])(u).gradientRotate,onChange:t[7]||(t[7]=function(e){return b({gradientRotate:e})})},null,8,["value"])])):Object(y["createCommentVNode"])("",!0)])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("div",Yj,[Object(y["createVNode"])(k,{style:{flex:"1"},onClick:t[8]||(t[8]=function(e){return O()})},{default:Object(y["withCtx"])((function(){return[Zj]})),_:1})]),Object(y["createVNode"])(C),Object(y["createElementVNode"])("div",Wj,[Jj,Object(y["createVNode"])(o,{style:{flex:"3"},value:Object(y["unref"])(r),onChange:t[9]||(t[9]=function(e){return x(e)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n,{value:.5625},{default:Object(y["withCtx"])((function(){return[Qj]})),_:1},8,["value"]),Object(y["createVNode"])(n,{value:.625},{default:Object(y["withCtx"])((function(){return[Kj]})),_:1},8,["value"]),Object(y["createVNode"])(n,{value:.75},{default:Object(y["withCtx"])((function(){return[$j]})),_:1},8,["value"])]})),_:1},8,["value"])]),Object(y["createVNode"])(C),eh,Object(y["createElementVNode"])("div",th,[nh,Object(y["createVNode"])(o,{style:{flex:"3"},value:Object(y["unref"])(i).fontName,onChange:t[10]||(t[10]=function(e){return m({fontName:e})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(N,{label:"系统字体"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(c),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(n,{key:e.value,value:e.value},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",{style:Object(y["normalizeStyle"])({fontFamily:e.value})},Object(y["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(y["createVNode"])(N,{label:"在线字体"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(B),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(n,{key:e.value,value:e.value},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",null,Object(y["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"])]),Object(y["createElementVNode"])("div",ch,[oh,Object(y["createVNode"])(a,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{modelValue:Object(y["unref"])(i).fontColor,"onUpdate:modelValue":t[11]||(t[11]=function(e){return m({fontColor:e})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:Object(y["unref"])(i).fontColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",lh,[ah,Object(y["createVNode"])(a,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{modelValue:Object(y["unref"])(i).backgroundColor,"onUpdate:modelValue":t[12]||(t[12]=function(e){return m({backgroundColor:e})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:Object(y["unref"])(i).backgroundColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",rh,[ih,Object(y["createVNode"])(a,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{modelValue:Object(y["unref"])(i).themeColor,"onUpdate:modelValue":t[13]||(t[13]=function(e){return m({themeColor:e})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Af,{color:Object(y["unref"])(i).themeColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["title dropdown",{active:j.value}]),onClick:t[14]||(t[14]=function(e){return h()}),style:{"margin-top":"20px"}},[uh,Object(y["createVNode"])(w,{class:"icon"})],2),j.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",dh,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(Cj),(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"theme-item",key:t,style:Object(y["normalizeStyle"])({backgroundColor:e.background}),onClick:function(t){return m({fontColor:e.text,backgroundColor:e.background,themeColor:e.color})}},[Object(y["createElementVNode"])("div",fh,[Object(y["createElementVNode"])("div",{class:"text",style:Object(y["normalizeStyle"])({color:e.text})},"Aa",4),Object(y["createElementVNode"])("div",{class:"color-block",style:Object(y["normalizeStyle"])({backgroundColor:e.color})},null,4)])],12,sh)})),128))])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("div",bh,[Object(y["createVNode"])(k,{style:{flex:"1"},onClick:t[15]||(t[15]=function(e){return v()})},{default:Object(y["withCtx"])((function(){return[ph]})),_:1})])])}}});n("60fd");const mh=pn()(Oh,[["__scopeId","data-v-e0bbbd9e"]]);var vh=mh,jh={class:"slide-animation-panel"},hh={class:"animation-pool"},yh=["onClick"],gh={class:"animation-text"},xh=Object(y["createTextVNode"])("应用到全部"),kh=Object(y["defineComponent"])({__name:"SlideAnimationPanel",setup:function(e){var t=le(),n=Object(g["c"])(t),c=n.slides,o=n.currentSlide,l=Object(y["computed"])((function(){return o.value.turningMode||"slideY"})),a=[{label:"无",value:"no"},{label:"淡入淡出",value:"fade"},{label:"左右推移",value:"slideX"},{label:"上下推移",value:"slideY"}],r=lt(),i=r.addHistorySnapshot,u=function(e){e!==l.value&&(t.updateSlide({turningMode:e}),i())},d=function(){var e=c.value.map((function(e){return Object(S["a"])(Object(S["a"])({},e),{},{turningMode:o.value.turningMode})}));t.setSlides(e),i()};return function(e,t){var n=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",jh,[Object(y["createElementVNode"])("div",hh,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(a,(function(e){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["animation-item",{active:Object(y["unref"])(l)===e.value}]),key:e.label,onClick:function(t){return u(e.value)}},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["animation-block",e.value])},null,2),Object(y["createElementVNode"])("div",gh,Object(y["toDisplayString"])(e.label),1)],10,yh)})),64))]),Object(y["createVNode"])(n,{style:{width:"100%"},onClick:t[0]||(t[0]=function(e){return d()})},{default:Object(y["withCtx"])((function(){return[xh]})),_:1})])}}});n("cc76");const Ch=pn()(kh,[["__scopeId","data-v-577ae912"]]);var Nh=Ch,wh=function(){var e=le(),t=Object(g["c"])(ie()),n=t.activeElementIdList,c=t.activeElementList,o=Object(g["c"])(e),l=o.currentSlide,a=lt(),r=a.addHistorySnapshot,i=function(t){var o,a=Xe(c.value),i=a.minX,u=a.maxX,d=a.minY,s=a.maxY,f=JSON.parse(JSON.stringify(l.value.elements)),b={},p=Object(L["a"])(c.value);try{var O=function(){var e=o.value;if(e.groupId&&!b[e.groupId]){var t=c.value.filter((function(t){return t.groupId===e.groupId}));b[e.groupId]=Xe(t)}};for(p.s();!(o=p.n()).done;)O()}catch(j){p.e(j)}finally{p.f()}if(t===C.LEFT)f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=b[e.groupId],c=t.minX-i;e.left=e.left-c}else if("rotate"in e&&e.rotate){var o=Ue({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),l=o.offsetX;e.left=i-l}else e.left=i}));else if(t===C.RIGHT)f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=b[e.groupId],c=t.maxX-u;e.left=e.left-c}else{var o="line"===e.type?Math.max(e.start[0],e.end[0]):e.width;if("rotate"in e&&e.rotate){var l=Ue({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),a=l.offsetX;e.left=u-o+a}else e.left=u-o}}));else if(t===C.TOP)f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=b[e.groupId],c=t.minY-d;e.top=e.top-c}else if("rotate"in e&&e.rotate){var o=Ue({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),l=o.offsetY;e.top=d-l}else e.top=d}));else if(t===C.BOTTOM)f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=b[e.groupId],c=t.maxY-s;e.top=e.top-c}else{var o="line"===e.type?Math.max(e.start[1],e.end[1]):e.height;if("rotate"in e&&e.rotate){var l=Ue({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),a=l.offsetY;e.top=s-o+a}else e.top=s-o}}));else if(t===C.HORIZONTAL){var m=(i+u)/2;f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=b[e.groupId],c=(t.maxX+t.minX)/2,o=c-m;e.left=e.left-o}else{var l="line"===e.type?Math.max(e.start[0],e.end[0]):e.width;e.left=m-l/2}}))}else if(t===C.VERTICAL){var v=(d+s)/2;f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=b[e.groupId],c=(t.maxY+t.minY)/2,o=c-v;e.top=e.top-o}else{var l="line"===e.type?Math.max(e.start[1],e.end[1]):e.height;e.top=v-l/2}}))}e.updateSlide({elements:f}),r()};return{alignActiveElement:i}},Eh=(n("4e82"),function(){var e=le(),t=Object(g["c"])(ie()),n=t.activeElementIdList,c=t.activeElementList,o=Object(g["c"])(e),l=o.currentSlide,a=lt(),r=a.addHistorySnapshot,i=Object(y["computed"])((function(){var e,t=0,n=[],o=Object(L["a"])(c.value);try{for(o.s();!(e=o.n()).done;){var l=e.value;l.groupId?n.includes(l.groupId)||(n.push(l.groupId),t+=1):t+=1}}catch(a){o.e(a)}finally{o.f()}return t})),u=function(){var t,o=Xe(c.value),a=o.minX,i=o.maxX,u=JSON.parse(JSON.stringify(c.value)),d=JSON.parse(JSON.stringify(l.value.elements)),s=[],f=[],b=Object(L["a"])(u);try{var p=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(S["a"])(Object(S["a"])({},t),{},{els:[].concat(Object(K["a"])(t.els),[e])}):t})):f.push({groupId:e.groupId,els:[e]})}else{var c=Ge(e),o=c.minX,l=c.maxX;s.push({min:o,max:l,el:e})}};for(b.s();!(t=b.n()).done;)p()}catch(le){b.e(le)}finally{b.f()}var O,m=[],v=Object(L["a"])(f);try{for(v.s();!(O=v.n()).done;){var j=O.value,h=Xe(j.els),y=h.minX,g=h.maxX;m.push({min:y,max:g,els:j.els})}}catch(le){v.e(le)}finally{v.f()}var x=[].concat(s,m);x.sort((function(e,t){return e.min-t.min}));var k,C=0,N=Object(L["a"])(x);try{for(N.s();!(k=N.n()).done;){var w=k.value,E=w.max-w.min;C+=E}}catch(le){N.e(le)}finally{N.f()}var V=(i-a-C)/(x.length-1),I=[],B=x[0],_={min:B.min,max:B.max};if("el"in B)I.push({pos:B.min,el:B.el});else{var T,M=Object(L["a"])(B.els);try{for(M.s();!(T=M.n()).done;){var D=T.value,z=Ge(D),F=z.minX;I.push({pos:F,el:D})}}catch(le){M.e(le)}finally{M.f()}}for(var A=1;A2?(Object(y["openBlock"])(),Object(y["createBlock"])(p,{key:0,class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{style:{flex:"1"},onClick:t[6]||(t[6]=function(e){return Object(y["unref"])(s)()})},{default:Object(y["withCtx"])((function(){return[Ih]})),_:1}),Object(y["createVNode"])(a,{style:{flex:"1"},onClick:t[7]||(t[7]=function(e){return Object(y["unref"])(f)()})},{default:Object(y["withCtx"])((function(){return[Bh]})),_:1})]})),_:1})):Object(y["createCommentVNode"])("",!0),Object(y["createVNode"])(j),Object(y["createVNode"])(p,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{disabled:!Object(y["unref"])(n),onClick:t[8]||(t[8]=function(e){return Object(y["unref"])(c)()}),style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(h,{style:{"margin-right":"3px"}}),Sh]})),_:1},8,["disabled"]),Object(y["createVNode"])(a,{disabled:Object(y["unref"])(n),onClick:t[9]||(t[9]=function(e){return Object(y["unref"])(o)()}),style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g,{style:{"margin-right":"3px"}}),Lh]})),_:1},8,["disabled"])]})),_:1})])}}});n("1855");const Th=pn()(_h,[["__scopeId","data-v-0d3881c5"]]);var Mh=Th,Dh=[{key:"letter",label:"字母",children:["α","β","γ","δ","ϵ","ε","ζ","η","θ","ϑ","ι","κ","λ","μ","ν","ξ","π","ϖ","ρ","ϱ","σ","ς","τ","υ","ϕ","φ","χ","ψ","ω","Γ","Δ","Θ","Λ","Ξ","Π","Σ","Υ","Φ","Ψ","Ω","𝐀","𝐁","𝐂","𝐃","𝐄","𝐅","𝐆","𝐇","𝐈","𝐉","𝐊","𝐋","𝐌","𝐍","𝐎","𝐏","𝐐","𝐑","𝐒","𝐓","𝐔","𝐕","𝐖","𝐗","𝐘","𝐙","𝐚","𝐛","𝐜","𝐝","𝐞","𝐟","𝐠","𝐡","𝐢","𝐣","𝐤","𝐥","𝐦","𝐧","𝐨","𝐩","𝐪","𝐫","𝐬","𝐭","𝐮","𝐯","𝐰","𝐱","𝐲","𝐳","𝓐","𝓑","𝓒","𝓓","𝓔","𝓕","𝓖","𝓗","𝓘","𝓙","𝓚","𝓛","𝓜","𝓝","𝓞","𝓟","𝓠","𝓡","𝓢","𝓣","𝓤","𝓥","𝓦","𝓧","𝓨","𝓩","𝓪","𝓫","𝓬","𝓭","𝓮","𝓯","𝓰","𝓱","𝓲","𝓳","𝓴","𝓵","𝓶","𝓷","𝓸","𝓹","𝓺","𝓻","𝓼","𝓽","𝓾","𝓿","𝔀","𝔁","𝔂","𝔃"]},{key:"number",label:"序号",children:["①","②","③","④","⑤","⑥","⑦","⑧","⑨","⑩","⑪","⑫","⑬","⑭","⑮","⑯","⑰","⑱","⑲","⑳","⑴","⑵","⑶","⑷","⑸","⑹","⑺","⑻","⑼","⑽","⑾","⑿","⒀","⒁","⒂","⒃","⒄","⒅","⒆","⒇","º","¹","²","³","⁴","⁵","⁶","⁷","⁸","⁹","₀","₁","₂","₃","₄","₅","₆","₇","₈","₉","Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ","Ⅹ","Ⅺ","Ⅻ","Ⅼ","Ⅽ","Ⅾ","Ⅿ","ⅰ","ⅱ","ⅲ","ⅳ","ⅴ","ⅵ","ⅶ","ⅷ","ⅸ","ⅹ","ⅺ","ⅻ","ⅼ","ⅽ","ⅾ","ⅿ","ↀ","ↁ","ↂ","㊀","㊁","㊂","㊃","㊄","㊅","㊆","㊇","㊈","㊉","㈠","㈡","㈢","㈣","㈤","㈥","㈦","㈧","㈨","㈩","𝟘","𝟙","𝟚","𝟛","𝟜","𝟝","𝟞","𝟟","𝟠","𝟡"]},{key:"math",label:"数学",children:["+","-","×","÷","=","~","¬","±","%","°","ǃ","‰","‱","½","⅓","⅔","¼","¾","<",">","l","o","g","l","g","l","n","⨂","⨁","⨄","⨃","⨅","⨆","√","∛","∜","∝","∞","∟","∠","∡","∢","∧","∨","∩","∪","∫","∬","∭","∮","∯","∰","∱","∲","∳","∴","∵","∼","∽","∾","∿","≃","≄","≅","≆","≇","≈","≊","≋","≌","≍","≎","≏","≐","≑","≒","≓","≔","≕","≤","≥","≦","≧","≨","≩","≪","≫","≺","≻","≼","≽","≾","≿","⊀","⊁","⊂","⊃","⊄","⊅","⊆","⊇","⊈","⊉","⊊","⊋","⊏","⊐","⊑","⊒","⊓","⊔","⊢","⊣","⊤","⊥","⊦","⊧","⊨","⊩","⊪","⊫","⊬","⊭","⊮","⊯","⊲","⊳","⊴","⊵","⋀","⋁","⋂","⋃","⋉","⋊","⋋","⋌","⟨","⟩","⟪","⟫","⟮","⟯","⧼","⧽","⦰"]},{key:"arrow",label:"箭头",children:["←","↑","→","↓","↔","↕","↖","↗","↘","↙","↚","↛","↜","↝","↞","↟","↠","↡","↢","↣","↤","↥","↦","↧","↨","↫","↬","↭","↮","↯","↰","↱","↲","↳","↴","↵","↶","↷","↸","↹","↺","↻","↼","↽","↾","↿","⇀","⇁","⇂","⇃","⇄","⇅","⇆","⇇","⇈","⇉","⇊","⇋","⇌","⇍","⇎","⇏","⇐","⇑","⇒","⇓","⇔","⇕","⇖","⇗","⇘","⇙","⇚","⇛","⇜","⇝","⇞","⇟","⇠","⇡","⇢","⇣","⇤","⇥","⇦","⇧","⇨","⇩","⇪","⇫","⇬","⇭","⇮","⇯","⇰","⇱","⇲","⇳","⇴","⇵","⇶","⇷","⇸","⇹","⇺","⇻","⇼","⇽","⇾","⇿"]},{key:"graph",label:"图形",children:["▢","▣","▤","▥","▦","▧","▨","▩","▭","▮","▯","▰","▱","▲","▷","▼","◁","◈","◉","◍","◐","◑","◒","◓","◔","◕","◧","◨","◩","◪","◫","◬","◭","◮"]}],zh={class:"symbol-panel"},Fh={class:"tabs"},Ah=["onClick"],Rh={class:"pool"},Ph=["onClick"],Hh={class:"symbol"},qh=Object(y["defineComponent"])({__name:"SymbolPanel",setup:function(e){var t=Object(y["ref"])(Dh[0].key),n=Object(y["computed"])((function(){var e=Dh.find((function(e){return e.key===t.value}));return(null===e||void 0===e?void 0:e.children)||[]})),c=function(e){Ko.emit(so.RICH_TEXT_COMMAND,{action:{command:"insert",value:e}})};return function(e,o){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",zh,[Object(y["createElementVNode"])("div",Fh,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(Dh),(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["tab",{active:t.value===e.key}]),key:e.key,onClick:function(n){return t.value=e.key}},Object(y["toDisplayString"])(e.label),11,Ah)})),128))]),Object(y["createElementVNode"])("div",Rh,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(n),(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"symbol-item",key:t,onClick:function(t){return c(e)}},[Object(y["createElementVNode"])("div",Hh,Object(y["toDisplayString"])(e),1)],8,Ph)})),128))])])}}});n("1126");const Uh=pn()(qh,[["__scopeId","data-v-ba0c96fc"]]);var Gh=Uh,Xh={class:"toolbar"},Yh={class:"tabs"},Zh=["onClick"],Wh={class:"content"},Jh=Object(y["defineComponent"])({__name:"index",setup:function(e){var t=ie(),n=Object(g["c"])(t),o=n.activeElementIdList,l=n.handleElement,a=n.toolbarState,r=Object(y["computed"])((function(){var e;return"text"===(null===(e=l.value)||void 0===e?void 0:e.type)?[{label:"样式",value:c.EL_STYLE},{label:"符号",value:c.SYMBOL},{label:"位置",value:c.EL_POSITION},{label:"动画",value:c.EL_ANIMATION}]:[{label:"样式",value:c.EL_STYLE},{label:"位置",value:c.EL_POSITION},{label:"动画",value:c.EL_ANIMATION}]})),i=[{label:"设计",value:c.SLIDE_DESIGN},{label:"切换",value:c.SLIDE_ANIMATION},{label:"动画",value:c.EL_ANIMATION}],u=[{label:"样式",value:c.EL_STYLE},{label:"位置",value:c.MULTI_POSITION}],d=function(e){t.setToolbarState(e)},s=Object(y["computed"])((function(){return o.value.length?o.value.length>1?u:r.value:i}));Object(y["watch"])(s,(function(){var e=s.value.map((function(e){return e.value}));e.includes(a.value)||t.setToolbarState(e[0])}));var f=Object(y["computed"])((function(){var e,t=(e={},Object(pe["a"])(e,c.EL_STYLE,yv),Object(pe["a"])(e,c.EL_POSITION,Hv),Object(pe["a"])(e,c.EL_ANIMATION,kj),Object(pe["a"])(e,c.SLIDE_DESIGN,vh),Object(pe["a"])(e,c.SLIDE_ANIMATION,Nh),Object(pe["a"])(e,c.MULTI_POSITION,Mh),Object(pe["a"])(e,c.SYMBOL,Gh),e);return t[a.value]||null}));return function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Xh,[Object(y["createElementVNode"])("div",Yh,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(s),(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["tab",{active:e.value===Object(y["unref"])(a)}]),key:e.value,onClick:function(t){return d(e.value)}},Object(y["toDisplayString"])(e.label),11,Zh)})),128))]),Object(y["createElementVNode"])("div",Wh,[(Object(y["openBlock"])(),Object(y["createBlock"])(Object(y["resolveDynamicComponent"])(Object(y["unref"])(f))))])])}}});n("cd7e");const Qh=pn()(Jh,[["__scopeId","data-v-5303bd17"]]);var Kh=Qh,$h={class:"remark"},ey=["value"],ty=Object(y["defineComponent"])({__name:"index",props:{height:{type:Number,required:!0}},emits:["update:height"],setup:function(e,t){var n=t.emit,c=e,o=le(),l=Object(g["c"])(o),a=l.currentSlide,r=Object(y["computed"])((function(){var e;return(null===(e=a.value)||void 0===e?void 0:e.remark)||""})),i=function(e){var t=e.target.value;o.updateSlide({remark:t})},u=function(e){var t=!0,o=e.pageY,l=c.height;document.onmousemove=function(e){if(t){var c=e.pageY,a=c-o,r=-a+l;r<40&&(r=40),r>120&&(r=120),n("update:height",r)}},document.onmouseup=function(){t=!1,document.onmousemove=null,document.onmouseup=null}};return function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",$h,[Object(y["createElementVNode"])("div",{class:"resize-handler",onMousedown:t[0]||(t[0]=function(e){return u(e)})},null,32),Object(y["createElementVNode"])("textarea",{value:Object(y["unref"])(r),placeholder:"点击输入演讲者备注",onInput:t[1]||(t[1]=function(e){return i(e)})},null,40,ey)])}}});n("ec27");const ny=pn()(ty,[["__scopeId","data-v-82b674f6"]]);var cy=ny,oy=function(e){return Object(y["pushScopeId"])("data-v-60a953a0"),e=e(),Object(y["popScopeId"])(),e},ly={class:"export-img-dialog"},ay={class:"thumbnails-view"},ry={class:"configs"},iy={class:"row"},uy=oy((function(){return Object(y["createElementVNode"])("div",{class:"title"},"导出格式:",-1)})),dy=Object(y["createTextVNode"])("JPEG"),sy=Object(y["createTextVNode"])("PNG"),fy={class:"row"},by=oy((function(){return Object(y["createElementVNode"])("div",{class:"title"},"导出范围:",-1)})),py=Object(y["createTextVNode"])("全部"),Oy=Object(y["createTextVNode"])("当前页"),my=Object(y["createTextVNode"])("自定义"),vy={key:0,class:"row"},jy=["data-range"],hy={class:"row"},yy=oy((function(){return Object(y["createElementVNode"])("div",{class:"title"},"图片质量:",-1)})),gy={class:"row"},xy=oy((function(){return Object(y["createElementVNode"])("div",{class:"title"},"忽略在线字体:",-1)})),ky={class:"config-item"},Cy={class:"btns"},Ny=Object(y["createTextVNode"])("导出图片"),wy=Object(y["createTextVNode"])("关闭"),Ey=Object(y["defineComponent"])({__name:"ExportImage",emits:["close"],setup:function(e,t){var n=t.emit,c=Object(g["c"])(le()),o=c.slides,l=c.currentSlide,a=Object(y["ref"])(),r=Object(y["ref"])("all"),i=Object(y["ref"])([1,o.value.length]),u=Object(y["ref"])("jpeg"),d=Object(y["ref"])(1),s=Object(y["ref"])(!0),f=Object(y["computed"])((function(){return"all"===r.value?o.value:"current"===r.value?[l.value]:o.value.filter((function(e,t){var n=Object(Oe["a"])(i.value,2),c=n[0],o=n[1];return t>=c-1&&t<=o-1}))})),b=an(),p=b.exportImage,O=b.exporting,m=function(){a.value&&p(a.value,u.value,d.value,s.value)};return function(e,t){var c=Object(y["resolveComponent"])("RadioButton"),l=Object(y["resolveComponent"])("RadioGroup"),b=Object(y["resolveComponent"])("Slider"),p=Object(y["resolveComponent"])("Switch"),v=Object(y["resolveComponent"])("Tooltip"),j=Object(y["resolveComponent"])("Button"),h=Object(y["resolveComponent"])("FullscreenSpin");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",ly,[Object(y["createElementVNode"])("div",ay,[Object(y["createElementVNode"])("div",{class:"thumbnails",ref_key:"imageThumbnailsRef",ref:a},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(f),(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(nd,{class:"thumbnail",key:e.id,slide:e,size:1600},null,8,["slide"])})),128))],512)]),Object(y["createElementVNode"])("div",ry,[Object(y["createElementVNode"])("div",iy,[uy,Object(y["createVNode"])(l,{class:"config-item",value:u.value,"onUpdate:value":t[0]||(t[0]=function(e){return u.value=e})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(c,{style:{width:"50%"},value:"jpeg"},{default:Object(y["withCtx"])((function(){return[dy]})),_:1}),Object(y["createVNode"])(c,{style:{width:"50%"},value:"png"},{default:Object(y["withCtx"])((function(){return[sy]})),_:1})]})),_:1},8,["value"])]),Object(y["createElementVNode"])("div",fy,[by,Object(y["createVNode"])(l,{class:"config-item",value:r.value,"onUpdate:value":t[1]||(t[1]=function(e){return r.value=e})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(c,{style:{width:"33.33%"},value:"all"},{default:Object(y["withCtx"])((function(){return[py]})),_:1}),Object(y["createVNode"])(c,{style:{width:"33.33%"},value:"current"},{default:Object(y["withCtx"])((function(){return[Oy]})),_:1}),Object(y["createVNode"])(c,{style:{width:"33.33%"},value:"custom"},{default:Object(y["withCtx"])((function(){return[my]})),_:1})]})),_:1},8,["value"])]),"custom"===r.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",vy,[Object(y["createElementVNode"])("div",{class:"title","data-range":"(".concat(i.value[0]," ~ ").concat(i.value[1],")")},"自定义范围:",8,jy),Object(y["createVNode"])(b,{class:"config-item",range:"",min:1,max:Object(y["unref"])(o).length,step:1,value:i.value,"onUpdate:value":t[2]||(t[2]=function(e){return i.value=e})},null,8,["max","value"])])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("div",hy,[yy,Object(y["createVNode"])(b,{class:"config-item",min:0,max:1,step:.1,value:d.value,"onUpdate:value":t[3]||(t[3]=function(e){return d.value=e})},null,8,["step","value"])]),Object(y["createElementVNode"])("div",gy,[xy,Object(y["createElementVNode"])("div",ky,[Object(y["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"导出时默认忽略在线字体,若您在幻灯片中使用了在线字体,且希望导出后保留相关样式,可选择关闭【忽略在线字体】选项,但要注意这将会增加导出用时。"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(p,{checked:s.value,"onUpdate:checked":t[4]||(t[4]=function(e){return s.value=e})},null,8,["checked"])]})),_:1},8,["mouseEnterDelay"])])])]),Object(y["createElementVNode"])("div",Cy,[Object(y["createVNode"])(j,{class:"btn export",type:"primary",onClick:t[5]||(t[5]=function(e){return m()})},{default:Object(y["withCtx"])((function(){return[Ny]})),_:1}),Object(y["createVNode"])(j,{class:"btn close",onClick:t[6]||(t[6]=function(e){return n("close")})},{default:Object(y["withCtx"])((function(){return[wy]})),_:1})]),Object(y["createVNode"])(h,{loading:Object(y["unref"])(O),tip:"正在导出..."},null,8,["loading"])])}}});n("e303");const Vy=pn()(Ey,[["__scopeId","data-v-60a953a0"]]);var Iy=Vy,By={class:"export-json-dialog"},Sy={class:"preview"},Ly={class:"btns"},_y=Object(y["createTextVNode"])("导出 JSON"),Ty=Object(y["createTextVNode"])("关闭"),My=Object(y["defineComponent"])({__name:"ExportJSON",emits:["close"],setup:function(e,t){var n=t.emit,c=Object(g["c"])(le()),o=c.slides,l=an(),a=l.exportJSON;return function(e,t){var c=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",By,[Object(y["createElementVNode"])("div",Sy,[Object(y["createElementVNode"])("pre",null,Object(y["toDisplayString"])(Object(y["unref"])(o)),1)]),Object(y["createElementVNode"])("div",Ly,[Object(y["createVNode"])(c,{class:"btn export",type:"primary",onClick:t[0]||(t[0]=function(e){return Object(y["unref"])(a)()})},{default:Object(y["withCtx"])((function(){return[_y]})),_:1}),Object(y["createVNode"])(c,{class:"btn close",onClick:t[1]||(t[1]=function(e){return n("close")})},{default:Object(y["withCtx"])((function(){return[Ty]})),_:1})])])}}});n("eba1");const Dy=pn()(My,[["__scopeId","data-v-1bc24666"]]);var zy=Dy,Fy=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},Ay=function(e,t,n){var c="",o="",l=document.styleSheets;if(l){var a,r=Object(L["a"])(l);try{for(r.s();!(a=r.n()).done;){var i=a.value;if(i.cssRules){var u,d=Object(L["a"])(i.cssRules);try{for(d.s();!(u=d.n()).done;){var s=u.value;o+=s.cssText}}catch(v){d.e(v)}finally{d.f()}}}}catch(v){r.e(v)}finally{r.f()}}var f=n.width,b=n.height,p=n.margin,O='\n \n \n \n "),m=""+t.innerHTML+"";e.open(),e.write("\n ".concat(c,"\n \n ").concat(O,"\n ").concat(m,"\n \n ")),e.close()},Ry=function(e,t){var n=Fy(),c=n.contentWindow;if(n.contentDocument&&c){Ay(n.contentDocument,e,t);var o=function(){c.focus(),c.print(),document.body.removeChild(n)};n.addEventListener("load",o)}},Py=function(e){return Object(y["pushScopeId"])("data-v-15b57798"),e=e(),Object(y["popScopeId"])(),e},Hy={class:"export-pdf-dialog"},qy={class:"thumbnails-view"},Uy={class:"configs"},Gy={class:"row"},Xy=Py((function(){return Object(y["createElementVNode"])("div",{class:"title"},"导出范围:",-1)})),Yy=Object(y["createTextVNode"])("全部幻灯片"),Zy=Object(y["createTextVNode"])("当前幻灯片"),Wy={class:"row"},Jy=Py((function(){return Object(y["createElementVNode"])("div",{class:"title"},"每页数量:",-1)})),Qy=Object(y["createTextVNode"])("1"),Ky=Object(y["createTextVNode"])("2"),$y=Object(y["createTextVNode"])("3"),eg={class:"row"},tg=Py((function(){return Object(y["createElementVNode"])("div",{class:"title"},"边缘留白:",-1)})),ng={class:"config-item"},cg=Py((function(){return Object(y["createElementVNode"])("div",{class:"tip"}," 注意:若打印预览与实际样式不一致,请在弹出的打印窗口中勾选【背景图形】选项。 ",-1)})),og={class:"btns"},lg=Object(y["createTextVNode"])("打印 / 导出 PDF"),ag=Object(y["createTextVNode"])("关闭"),rg=Object(y["defineComponent"])({__name:"ExportPDF",emits:["close"],setup:function(e,t){var n=t.emit,c=Object(g["c"])(le()),o=c.slides,l=c.currentSlide,a=Object(y["ref"])(),r=Object(y["ref"])("all"),i=Object(y["ref"])(1),u=Object(y["ref"])(!0),d=function(){if(a.value){var e={width:1600,height:"all"===r.value?900*i.value:900,margin:u.value?50:0};Ry(a.value,e)}};return function(e,t){var c=Object(y["resolveComponent"])("RadioButton"),s=Object(y["resolveComponent"])("RadioGroup"),f=Object(y["resolveComponent"])("SelectOption"),b=Object(y["resolveComponent"])("Select"),p=Object(y["resolveComponent"])("Switch"),O=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Hy,[Object(y["createElementVNode"])("div",qy,[Object(y["createElementVNode"])("div",{class:"thumbnails",ref_key:"pdfThumbnailsRef",ref:a},["current"===r.value?(Object(y["openBlock"])(),Object(y["createBlock"])(nd,{key:0,class:"thumbnail",slide:Object(y["unref"])(l),size:1600},null,8,["slide"])):(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],{key:1},Object(y["renderList"])(Object(y["unref"])(o),(function(e,t){return Object(y["openBlock"])(),Object(y["createBlock"])(nd,{class:Object(y["normalizeClass"])(["thumbnail",{"break-page":(t+1)%i.value===0}]),key:e.id,slide:e,size:1600},null,8,["class","slide"])})),128))],512)]),Object(y["createElementVNode"])("div",Uy,[Object(y["createElementVNode"])("div",Gy,[Xy,Object(y["createVNode"])(s,{class:"config-item",value:r.value,"onUpdate:value":t[0]||(t[0]=function(e){return r.value=e})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(c,{style:{width:"50%"},value:"all"},{default:Object(y["withCtx"])((function(){return[Yy]})),_:1}),Object(y["createVNode"])(c,{style:{width:"50%"},value:"current"},{default:Object(y["withCtx"])((function(){return[Zy]})),_:1})]})),_:1},8,["value"])]),Object(y["createElementVNode"])("div",Wy,[Jy,Object(y["createVNode"])(b,{class:"config-item",value:i.value,"onUpdate:value":t[1]||(t[1]=function(e){return i.value=e})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{value:1},{default:Object(y["withCtx"])((function(){return[Qy]})),_:1}),Object(y["createVNode"])(f,{value:2},{default:Object(y["withCtx"])((function(){return[Ky]})),_:1}),Object(y["createVNode"])(f,{value:3},{default:Object(y["withCtx"])((function(){return[$y]})),_:1})]})),_:1},8,["value"])]),Object(y["createElementVNode"])("div",eg,[tg,Object(y["createElementVNode"])("div",ng,[Object(y["createVNode"])(p,{checked:u.value,"onUpdate:checked":t[2]||(t[2]=function(e){return u.value=e})},null,8,["checked"])])]),cg]),Object(y["createElementVNode"])("div",og,[Object(y["createVNode"])(O,{class:"btn export",type:"primary",onClick:t[3]||(t[3]=function(e){return d()})},{default:Object(y["withCtx"])((function(){return[lg]})),_:1}),Object(y["createVNode"])(O,{class:"btn close",onClick:t[4]||(t[4]=function(e){return n("close")})},{default:Object(y["withCtx"])((function(){return[ag]})),_:1})])])}}});n("7239");const ig=pn()(rg,[["__scopeId","data-v-15b57798"]]);var ug=ig,dg=function(e){return Object(y["pushScopeId"])("data-v-3fef9be0"),e=e(),Object(y["popScopeId"])(),e},sg={class:"export-pptx-dialog"},fg={class:"configs"},bg={class:"row"},pg=dg((function(){return Object(y["createElementVNode"])("div",{class:"title"},"导出范围:",-1)})),Og=Object(y["createTextVNode"])("全部"),mg=Object(y["createTextVNode"])("当前页"),vg=Object(y["createTextVNode"])("自定义"),jg={key:0,class:"row"},hg=["data-range"],yg={class:"row"},gg=dg((function(){return Object(y["createElementVNode"])("div",{class:"title"},"覆盖默认母版:",-1)})),xg={class:"config-item"},kg={class:"btns"},Cg=Object(y["createTextVNode"])("导出 PPTX"),Ng=Object(y["createTextVNode"])("关闭"),wg=Object(y["defineComponent"])({__name:"ExportPPTX",emits:["close"],setup:function(e,t){var n=t.emit,c=Object(g["c"])(le()),o=c.slides,l=c.currentSlide,a=an(),r=a.exportPPTX,i=a.exporting,u=Object(y["ref"])("all"),d=Object(y["ref"])([1,o.value.length]),s=Object(y["ref"])(!0),f=Object(y["computed"])((function(){return"all"===u.value?o.value:"current"===u.value?[l.value]:o.value.filter((function(e,t){var n=Object(Oe["a"])(d.value,2),c=n[0],o=n[1];return t>=c-1&&t<=o-1}))}));return function(e,t){var c=Object(y["resolveComponent"])("RadioButton"),l=Object(y["resolveComponent"])("RadioGroup"),a=Object(y["resolveComponent"])("Slider"),b=Object(y["resolveComponent"])("Switch"),p=Object(y["resolveComponent"])("Button"),O=Object(y["resolveComponent"])("FullscreenSpin");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",sg,[Object(y["createElementVNode"])("div",fg,[Object(y["createElementVNode"])("div",bg,[pg,Object(y["createVNode"])(l,{class:"config-item",value:u.value,"onUpdate:value":t[0]||(t[0]=function(e){return u.value=e})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(c,{style:{width:"33.33%"},value:"all"},{default:Object(y["withCtx"])((function(){return[Og]})),_:1}),Object(y["createVNode"])(c,{style:{width:"33.33%"},value:"current"},{default:Object(y["withCtx"])((function(){return[mg]})),_:1}),Object(y["createVNode"])(c,{style:{width:"33.33%"},value:"custom"},{default:Object(y["withCtx"])((function(){return[vg]})),_:1})]})),_:1},8,["value"])]),"custom"===u.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",jg,[Object(y["createElementVNode"])("div",{class:"title","data-range":"(".concat(d.value[0]," ~ ").concat(d.value[1],")")},"自定义范围:",8,hg),Object(y["createVNode"])(a,{class:"config-item",range:"",min:1,max:Object(y["unref"])(o).length,step:1,value:d.value,"onUpdate:value":t[1]||(t[1]=function(e){return d.value=e})},null,8,["max","value"])])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("div",yg,[gg,Object(y["createElementVNode"])("div",xg,[Object(y["createVNode"])(b,{checked:s.value,"onUpdate:checked":t[2]||(t[2]=function(e){return s.value=e})},null,8,["checked"])])])]),Object(y["createElementVNode"])("div",kg,[Object(y["createVNode"])(p,{class:"btn export",type:"primary",onClick:t[3]||(t[3]=function(e){return Object(y["unref"])(r)(Object(y["unref"])(f),s.value)})},{default:Object(y["withCtx"])((function(){return[Cg]})),_:1}),Object(y["createVNode"])(p,{class:"btn close",onClick:t[4]||(t[4]=function(e){return n("close")})},{default:Object(y["withCtx"])((function(){return[Ng]})),_:1})]),Object(y["createVNode"])(O,{loading:Object(y["unref"])(i),tip:"正在导出..."},null,8,["loading"])])}}});n("fef8");const Eg=pn()(wg,[["__scopeId","data-v-3fef9be0"]]);var Vg=Eg,Ig=function(e){return Object(y["pushScopeId"])("data-v-e2b465d2"),e=e(),Object(y["popScopeId"])(),e},Bg={class:"export-pptist-dialog"},Sg={class:"configs"},Lg={class:"row"},_g=Ig((function(){return Object(y["createElementVNode"])("div",{class:"title"},"导出范围:",-1)})),Tg=Object(y["createTextVNode"])("全部"),Mg=Object(y["createTextVNode"])("当前页"),Dg=Object(y["createTextVNode"])("自定义"),zg={key:0,class:"row"},Fg=["data-range"],Ag=Ig((function(){return Object(y["createElementVNode"])("div",{class:"tip"}," 提示:.pptist 是本应用的特有文件后缀,支持将该类型的文件导入回应用中。 ",-1)})),Rg={class:"btns"},Pg=Object(y["createTextVNode"])("导出 .pptist 文件"),Hg=Object(y["createTextVNode"])("关闭"),qg=Object(y["defineComponent"])({__name:"ExportSpecificFile",emits:["close"],setup:function(e,t){var n=t.emit,c=Object(g["c"])(le()),o=c.slides,l=c.currentSlide,a=an(),r=a.exportSpecificFile,i=Object(y["ref"])("all"),u=Object(y["ref"])([1,o.value.length]),d=Object(y["computed"])((function(){return"all"===i.value?o.value:"current"===i.value?[l.value]:o.value.filter((function(e,t){var n=Object(Oe["a"])(u.value,2),c=n[0],o=n[1];return t>=c-1&&t<=o-1}))}));return function(e,t){var c=Object(y["resolveComponent"])("RadioButton"),l=Object(y["resolveComponent"])("RadioGroup"),a=Object(y["resolveComponent"])("Slider"),s=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Bg,[Object(y["createElementVNode"])("div",Sg,[Object(y["createElementVNode"])("div",Lg,[_g,Object(y["createVNode"])(l,{class:"config-item",value:i.value,"onUpdate:value":t[0]||(t[0]=function(e){return i.value=e})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(c,{style:{width:"33.33%"},value:"all"},{default:Object(y["withCtx"])((function(){return[Tg]})),_:1}),Object(y["createVNode"])(c,{style:{width:"33.33%"},value:"current"},{default:Object(y["withCtx"])((function(){return[Mg]})),_:1}),Object(y["createVNode"])(c,{style:{width:"33.33%"},value:"custom"},{default:Object(y["withCtx"])((function(){return[Dg]})),_:1})]})),_:1},8,["value"])]),"custom"===i.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",zg,[Object(y["createElementVNode"])("div",{class:"title","data-range":"(".concat(u.value[0]," ~ ").concat(u.value[1],")")},"自定义范围:",8,Fg),Object(y["createVNode"])(a,{class:"config-item",range:"",min:1,max:Object(y["unref"])(o).length,step:1,value:u.value,"onUpdate:value":t[1]||(t[1]=function(e){return u.value=e})},null,8,["max","value"])])):Object(y["createCommentVNode"])("",!0),Ag]),Object(y["createElementVNode"])("div",Rg,[Object(y["createVNode"])(s,{class:"btn export",type:"primary",onClick:t[2]||(t[2]=function(e){return Object(y["unref"])(r)(Object(y["unref"])(d))})},{default:Object(y["withCtx"])((function(){return[Pg]})),_:1}),Object(y["createVNode"])(s,{class:"btn close",onClick:t[3]||(t[3]=function(e){return n("close")})},{default:Object(y["withCtx"])((function(){return[Hg]})),_:1})])])}}});n("bf43");const Ug=pn()(qg,[["__scopeId","data-v-e2b465d2"]]);var Gg=Ug,Xg={class:"export-dialog"},Yg={class:"tabs"},Zg=["onClick"],Wg={class:"content"},Jg=Object(y["defineComponent"])({__name:"index",setup:function(e){var t=ie(),n=Object(g["c"])(t),c=n.dialogForExport,o=t.setDialogForExport,l=[{key:"pptist",label:"导出 pptist 文件"},{key:"pptx",label:"导出 PPTX"},{key:"image",label:"导出图片"},{key:"json",label:"导出 JSON"},{key:"pdf",label:"打印 / 导出 PDF"}],a=Object(y["computed"])((function(){var e={image:Iy,json:zy,pdf:ug,pptx:Vg,pptist:Gg};return e[c.value]||null}));return function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Xg,[Object(y["createElementVNode"])("div",Yg,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(l,(function(e){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["tab",{active:e.key===Object(y["unref"])(c)}]),key:e.key,onClick:function(t){return Object(y["unref"])(o)(e.key)}},Object(y["toDisplayString"])(e.label),11,Zg)})),64))]),Object(y["createElementVNode"])("div",Wg,[(Object(y["openBlock"])(),Object(y["createBlock"])(Object(y["resolveDynamicComponent"])(Object(y["unref"])(a)),{onClose:t[0]||(t[0]=function(e){return Object(y["unref"])(o)("")})},null,32))])])}}});n("d970");const Qg=pn()(Jg,[["__scopeId","data-v-1f8f1a8b"]]);var Kg=Qg,$g={class:"pptist-editor"},ex={class:"layout-content"},tx={class:"layout-content-center"},nx=Object(y["defineComponent"])({__name:"index",setup:function(e){var t=ie(),n=Object(g["c"])(t),c=n.dialogForExport,o=function(){return t.setDialogForExport("")},l=Object(y["ref"])(40);return xt(),kt(),function(e,t){var n=Object(y["resolveComponent"])("Modal");return Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,[Object(y["createElementVNode"])("div",$g,[Object(y["createVNode"])(ec,{class:"layout-header"}),Object(y["createElementVNode"])("div",ex,[Object(y["createVNode"])(Vf,{class:"layout-content-left"}),Object(y["createElementVNode"])("div",tx,[Object(y["createVNode"])(bf,{class:"center-top"}),Object(y["createVNode"])(hd,{class:"center-body",style:Object(y["normalizeStyle"])({height:"calc(100% - ".concat(l.value+40,"px)")})},null,8,["style"]),Object(y["createVNode"])(cy,{class:"center-bottom",height:l.value,"onUpdate:height":t[0]||(t[0]=function(e){return l.value=e}),style:Object(y["normalizeStyle"])({height:"".concat(l.value,"px")})},null,8,["height","style"])]),Object(y["createVNode"])(Kh,{class:"layout-content-right"})])]),Object(y["createVNode"])(n,{visible:!!Object(y["unref"])(c),footer:null,centered:"",closable:!1,width:680,destroyOnClose:"",onCancel:t[1]||(t[1]=function(e){return o()})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(Kg)]})),_:1},8,["visible"])],64)}}});n("0be5");const cx=pn()(nx,[["__scopeId","data-v-328e1a4e"]]);var ox=cx,lx=function(){var e=le(),t=Object(g["c"])(e),n=t.slides,c=t.slideIndex,o=t.formatedAnimations,l=Object(y["ref"])(0),a=Object(y["ref"])(!1),r=Object(y["ref"])(c.value),i=function e(){if(!a.value){var t=o.value[l.value],n=t.animations,c=t.autoNext;l.value+=1,a.value=!0;var r,i=0,u=Object(L["a"])(n);try{var d=function(){var t=r.value,o=document.querySelector("#screen-element-".concat(t.elId," [class^=base-element-]"));if(!o)return i+=1,"continue";var l="".concat(Gv).concat(t.effect);o.style.removeProperty("--animate-duration");var u,d=Object(L["a"])(o.classList);try{for(d.s();!(u=d.n()).done;){var s=u.value;-1!==s.indexOf(Gv)&&o.classList.remove(s,"".concat(Gv,"animated"))}}catch(b){d.e(b)}finally{d.f()}o.style.setProperty("--animate-duration","".concat(t.duration,"ms")),o.classList.add(l,"".concat(Gv,"animated"));var f=function(){"out"!==t.type&&(o.style.removeProperty("--animate-duration"),o.classList.remove(l,"".concat(Gv,"animated"))),i+=1,i===n.length&&(a.value=!1,c&&e())};o.addEventListener("animationend",f,{once:!0})};for(u.s();!(r=u.n()).done;)d()}catch(s){u.e(s)}finally{u.f()}}},u=function(){l.value-=1;var e,t=o.value[l.value].animations,n=Object(L["a"])(t);try{for(n.s();!(e=n.n()).done;){var c=e.value,a=document.querySelector("#screen-element-".concat(c.elId," [class^=base-element-]"));if(a){a.style.removeProperty("--animate-duration");var r,i=Object(L["a"])(a.classList);try{for(i.s();!(r=i.n()).done;){var u=r.value;-1!==u.indexOf(Gv)&&a.classList.remove(u,"".concat(Gv,"animated"))}}catch(d){i.e(d)}finally{i.f()}}}}catch(d){n.e(d)}finally{n.f()}t.every((function(e){return"attention"===e.type}))&&b()},d=Object(y["ref"])(0),s=function(){d.value&&(clearInterval(d.value),d.value=0)};Object(y["onUnmounted"])(s);var f=Object(te["throttle"])((function(e){Se["a"].success(e)}),1e3,{leading:!0,trailing:!1}),b=function(){o.value.length&&l.value>0?u():c.value>0?(e.updateSlideIndex(c.value-1),c.value0&&p()}),500,{leading:!0,trailing:!1}),v=Object(y["ref"])(null),j=function(e){v.value={x:e.changedTouches[0].pageX,y:e.changedTouches[0].pageY}},h=function(e){if(v.value){var t=Math.abs(v.value.x-e.changedTouches[0].pageX),n=e.changedTouches[0].pageY-v.value.y;Math.abs(n)>t&&Math.abs(n)>50&&(v.value=null,n>0?b():p())}},x=function(e){var t=e.key.toUpperCase();t===V.UP||t===V.LEFT||t===V.PAGEUP?b():t!==V.DOWN&&t!==V.RIGHT&&t!==V.SPACE&&t!==V.ENTER&&t!==V.PAGEDOWN||p()};Object(y["onMounted"])((function(){return document.addEventListener("keydown",x)})),Object(y["onUnmounted"])((function(){return document.removeEventListener("keydown",x)}));var k=function(){e.updateSlideIndex(c.value-1),l.value=0},C=function(){e.updateSlideIndex(c.value+1),l.value=0},N=function(t){e.updateSlideIndex(t),l.value=0},w=function(t){var c=n.value.findIndex((function(e){return e.id===t}));-1!==c&&(e.updateSlideIndex(c),l.value=0)};return{autoPlayTimer:d,autoPlay:O,closeAutoPlay:s,mousewheelListener:m,touchStartListener:j,touchEndListener:h,turnPrevSlide:k,turnNextSlide:C,turnSlideToIndex:N,turnSlideToId:w,execPrev:b,execNext:p,animationIndex:l}},ax=function(e){var t=le(),n=Object(g["c"])(t),c=n.viewportRatio,o=Object(y["ref"])(0),l=Object(y["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===c.value?(t=r,n=i):i/r>c.value?(t=r,n=r*c.value):(t=i/c.value,n=i),o.value=t,l.value=n};return Object(y["onMounted"])((function(){a(),window.addEventListener("resize",a)})),Object(y["onUnmounted"])((function(){window.removeEventListener("resize",a)})),{slideWidth:o,slideHeight:l}},rx=function(){var e=Object(y["ref"])(!0),t=Object(y["ref"])(!0),n=yt(),c=n.exitScreening,o=function(){e.value=ht(),!e.value&&t.value&&c(),t.value=!0};Object(y["onMounted"])((function(){e.value=ht(),document.addEventListener("fullscreenchange",o),document.addEventListener("webkitfullscreenchange",o)})),Object(y["onUnmounted"])((function(){document.removeEventListener("fullscreenchange",o),document.removeEventListener("webkitfullscreenchange",o)}));var l=function(){e.value&&(t.value=!1,jt())};return{fullscreenState:e,manualExitFullscreen:l}},ix=Object(y["defineComponent"])({__name:"ScreenChartElement",props:{elementInfo:{type:Object,required:!0}},setup:function(e){return function(t,n){return Object(y["openBlock"])(),Object(y["createBlock"])(Nu,{class:"screen-element-chart",elementInfo:e.elementInfo},null,8,["elementInfo"])}}});const ux=ix;var dx=ux,sx={class:"element-content"},fx=Object(y["defineComponent"])({__name:"ScreenVideoElement",props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(g["c"])(le()),n=t.currentSlide,c=Object(y["inject"])(tc)||Object(y["ref"])(1),o=Object(y["inject"])(nc)||Object(y["ref"])(""),l=Object(y["computed"])((function(){return n.value.id===o.value}));return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"screen-element-video",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",sx,[Object(y["unref"])(l)?(Object(y["openBlock"])(),Object(y["createBlock"])(Wa,{key:0,width:e.elementInfo.width,height:e.elementInfo.height,src:e.elementInfo.src,poster:e.elementInfo.poster,scale:Object(y["unref"])(c)},null,8,["width","height","src","poster","scale"])):Object(y["createCommentVNode"])("",!0)])],4)],4)}}});n("7a78");const bx=pn()(fx,[["__scopeId","data-v-76457308"]]);var px=bx,Ox={class:"element-content"},mx=Object(y["defineComponent"])({__name:"ScreenAudioElement",props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=e,n=Object(g["c"])(le()),c=n.viewportRatio,o=n.currentSlide,l=Object(y["inject"])(tc)||Object(y["ref"])(1),a=Object(y["inject"])(nc)||Object(y["ref"])(""),r=Object(y["computed"])((function(){return o.value.id===a.value})),i=Object(y["computed"])((function(){return Math.min(t.elementInfo.width,t.elementInfo.height)+"px"})),u=Object(y["computed"])((function(){var e=tt,n=tt*c.value,o=280/l.value,a=50/l.value,r=t.elementInfo.width,i=t.elementInfo.height,u=t.elementInfo.left,d=t.elementInfo.top,s=0,f=i;return u+o>=e&&(s=r-o),d+i+a>=n&&(f=-a),{left:s+"px",top:f+"px"}})),d=Object(y["ref"])(),s=function(){d.value&&d.value.toggle()};return function(t,n){var c=Object(y["resolveComponent"])("IconVolumeNotice");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"screen-element-audio",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",Ox,[Object(y["createVNode"])(c,{class:"audio-icon",style:Object(y["normalizeStyle"])({fontSize:Object(y["unref"])(i),color:e.elementInfo.color}),onClick:n[0]||(n[0]=function(e){return s()})},null,8,["style"]),Object(y["unref"])(r)?(Object(y["openBlock"])(),Object(y["createBlock"])(vr,{key:0,class:"audio-player",ref_key:"audioPlayerRef",ref:d,style:Object(y["normalizeStyle"])(Object(S["a"])({},Object(y["unref"])(u))),src:e.elementInfo.src,loop:e.elementInfo.loop,autoplay:e.elementInfo.autoplay,scale:Object(y["unref"])(l)},null,8,["style","src","loop","autoplay","scale"])):Object(y["createCommentVNode"])("",!0)])],4)],4)}}});n("ac73");const vx=pn()(mx,[["__scopeId","data-v-f447b6a2"]]);var jx=vx,hx=["id","title"],yx=Object(y["defineComponent"])({__name:"ScreenElement",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=e,n=Object(y["computed"])((function(){var e,n=(e={},Object(pe["a"])(e,Ve.IMAGE,lu),Object(pe["a"])(e,Ve.TEXT,uu),Object(pe["a"])(e,Ve.SHAPE,vu),Object(pe["a"])(e,Ve.LINE,xu),Object(pe["a"])(e,Ve.CHART,dx),Object(pe["a"])(e,Ve.TABLE,Mu),Object(pe["a"])(e,Ve.LATEX,Hu),Object(pe["a"])(e,Ve.VIDEO,px),Object(pe["a"])(e,Ve.AUDIO,jx),e);return n[t.elementInfo.type]||null})),c=Object(g["c"])(le()),o=c.formatedAnimations,l=c.theme,a=Object(y["computed"])((function(){var e=o.value.findIndex((function(e){var n=e.animations.map((function(e){return e.elId}));return n.includes(t.elementInfo.id)}));if(-1===e)return!1;if(eObject(y["unref"])(o),hide:(n===Object(y["unref"])(o)-1||n===Object(y["unref"])(o)+1)&&t.turningMode!==Object(y["unref"])(l).turningMode}]),key:t.id},[Math.abs(Object(y["unref"])(o)-n)<2||null!==(c=t.animations)&&void 0!==c&&c.length?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:"slide-content",style:Object(y["normalizeStyle"])({width:e.slideWidth+"px",height:e.slideHeight+"px"})},[Object(y["createVNode"])(Nx,{slide:t,scale:Object(y["unref"])(a),animationIndex:e.animationIndex,turnSlideToId:e.turnSlideToId,manualExitFullscreen:e.manualExitFullscreen},null,8,["slide","scale","animationIndex","turnSlideToId","manualExitFullscreen"])],4)):Object(y["createCommentVNode"])("",!0)],2)})),128))])}}});n("9557");const Vx=pn()(Ex,[["__scopeId","data-v-77a3e620"]]);var Ix=Vx,Bx={class:"slide-thumbnails"},Sx={class:"return-button"},Lx={class:"slide-thumbnails-content"},_x=["onClick"],Tx=Object(y["defineComponent"])({__name:"SlideThumbnails",props:{turnSlideToIndex:{type:Function,required:!0}},emits:["close"],setup:function(e,t){var n=t.emit,c=e,o=Object(g["c"])(le()),l=o.slides,a=o.slideIndex,r=pf(),i=r.slidesLoadLimit,u=function(e){c.turnSlideToIndex(e),n("close")};return function(e,t){var c=Object(y["resolveComponent"])("IconArrowCircleLeft");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Bx,[Object(y["createElementVNode"])("div",Sx,[Object(y["createVNode"])(c,{class:"icon",onClick:t[0]||(t[0]=function(e){return n("close")})})]),Object(y["createElementVNode"])("div",Lx,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(l),(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["thumbnail",{active:t===Object(y["unref"])(a)}]),key:e.id,onClick:function(e){return u(t)}},[Object(y["createVNode"])(nd,{slide:e,size:150,visible:t=c?a:l-i/c*l,-1===b?n:1*n/3+2*b/3},I=function(e,t){var n=(new Date).getTime();if("pen"===c.model){var o=E(e,t),l=n-f,a=V(o,l);N(e,t,a),b=a}else"mark"===c.model?N(e,t,u.value):w(e,t);d={x:e,y:t},f=(new Date).getTime()},B=function(e){if(!a.value)return[0,0];var t=e instanceof MouseEvent?e:e.changedTouches[0],n=a.value.getBoundingClientRect(),c=t.pageX-n.x,o=t.pageY-n.y;return[c,o]},S=function(e){var t=B(e),n=Object(Oe["a"])(t,2),c=n[0],o=n[1],l=c/j.value,a=o/h.value;s=!0,d={x:l,y:a},f=(new Date).getTime(),e instanceof MouseEvent||(p.value={x:c,y:o},O.value=!0)},L=function(e){var t=B(e),n=Object(Oe["a"])(t,2),c=n[0],o=n[1],l=c/j.value,a=o/h.value;p.value={x:c,y:o},s&&I(l,a)},_=function(){s&&(s=!1)},T=function(){o&&a.value&&o.clearRect(0,0,a.value.width,a.value.height)},M=function(){var e;return null===(e=a.value)||void 0===e?void 0:e.toDataURL()},D=function(e){var t=new Image;t.src=e,t.onload=function(){o&&o.drawImage(t,0,0)}},z=Object(te["throttle"])((function(e){"eraser"===c.model&&(e.deltaY<0&&i.value<200?i.value+=20:e.deltaY>0&&i.value>20&&(i.value-=20)),"pen"===c.model&&(e.deltaY<0&&r.value<10?r.value+=2:e.deltaY>0&&r.value>4&&(r.value-=2)),"mark"===c.model&&(e.deltaY<0&&u.value<40?u.value+=4:e.deltaY>0&&u.value>16&&(u.value-=4))}),300,{leading:!0,trailing:!1});return n({clearCanvas:T,getImageDataURL:M,setImageDataURL:D}),function(t,n){var c=Object(y["resolveComponent"])("IconWrite"),o=Object(y["resolveComponent"])("IconHighLight");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"writing-board",ref_key:"writingBoardRef",ref:l},[e.blackboard?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",zx)):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("canvas",{class:"canvas",ref_key:"canvasRef",ref:a,style:Object(y["normalizeStyle"])({width:m.value+"px",height:v.value+"px"}),onMousedown:n[0]||(n[0]=function(e){return S(e)}),onMousemove:n[1]||(n[1]=function(e){return L(e)}),onMouseup:n[2]||(n[2]=function(e){return _()}),onTouchstart:n[3]||(n[3]=function(e){return S(e)}),onTouchmove:n[4]||(n[4]=function(e){return L(e)}),onTouchend:n[5]||(n[5]=function(e){_(),O.value=!1}),onMouseleave:n[6]||(n[6]=function(e){_(),O.value=!1}),onMouseenter:n[7]||(n[7]=function(e){return O.value=!0}),onWheel:n[8]||(n[8]=function(e){return Object(y["unref"])(z)(e)})},null,36),O.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:1},["eraser"===e.model?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:"eraser",style:Object(y["normalizeStyle"])({left:p.value.x-i.value/2+"px",top:p.value.y-i.value/2+"px",width:i.value+"px",height:i.value+"px"})},null,4)):Object(y["createCommentVNode"])("",!0),"pen"===e.model?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:1,class:"pen",style:Object(y["normalizeStyle"])({left:p.value.x-r.value/2+"px",top:p.value.y-6*r.value+r.value/2+"px",color:e.color})},["pen"===e.model?(Object(y["openBlock"])(),Object(y["createBlock"])(c,{key:0,class:"icon",size:6*r.value},null,8,["size"])):Object(y["createCommentVNode"])("",!0)],4)):Object(y["createCommentVNode"])("",!0),"mark"===e.model?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:2,class:"pen",style:Object(y["normalizeStyle"])({left:p.value.x-u.value/2+"px",top:p.value.y+"px",color:e.color})},["mark"===e.model?(Object(y["openBlock"])(),Object(y["createBlock"])(o,{key:0,class:"icon",size:1.5*u.value},null,8,["size"])):Object(y["createCommentVNode"])("",!0)],4)):Object(y["createCommentVNode"])("",!0)],64)):Object(y["createCommentVNode"])("",!0)],512)}}});n("5fa4");const Ax=pn()(Fx,[["__scopeId","data-v-1d4eb7f0"]]);var Rx=Ax,Px={class:"writing-board-tool"},Hx={class:"colors"},qx=["onClick"],Ux=Object(y["defineComponent"])({__name:"WritingBoardTool",props:{slideWidth:{type:Number,required:!0},slideHeight:{type:Number,required:!0},position:{type:Object,default:function(){return{right:"5px",bottom:"5px"}}}},emits:["close"],setup:function(e,t){var n=t.emit,c=["#000000","#ffffff","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c","#ffff3a"],o=Object(y["ref"])(),l=Object(y["ref"])("#e2534d"),a=Object(y["ref"])("pen"),r=Object(y["ref"])(!1),i=function(e){a.value=e},u=function(){o.value.clearCanvas()},d=function(e){"eraser"===a.value&&(a.value="pen"),l.value=e},s=function(){n("close")};return function(t,n){var f=Object(y["resolveComponent"])("IconWrite"),b=Object(y["resolveComponent"])("Tooltip"),p=Object(y["resolveComponent"])("IconHighLight"),O=Object(y["resolveComponent"])("IconErase"),m=Object(y["resolveComponent"])("IconClear"),v=Object(y["resolveComponent"])("IconFill"),j=Object(y["resolveComponent"])("IconClose");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Px,[Object(y["createElementVNode"])("div",{class:"writing-board-wrap",style:Object(y["normalizeStyle"])({width:e.slideWidth+"px",height:e.slideHeight+"px"})},[Object(y["createVNode"])(Rx,{ref_key:"writingBoardRef",ref:o,color:l.value,blackboard:r.value,model:a.value},null,8,["color","blackboard","model"])],4),Object(y["createElementVNode"])("div",{class:"tools",style:Object(y["normalizeStyle"])(e.position)},[Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"画笔"},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["btn",{active:"pen"===a.value}]),onClick:n[0]||(n[0]=function(e){return i("pen")})},[Object(y["createVNode"])(f,{class:"icon"})],2)]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"荧光笔"},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["btn",{active:"mark"===a.value}]),onClick:n[1]||(n[1]=function(e){return i("mark")})},[Object(y["createVNode"])(p,{class:"icon"})],2)]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"橡皮擦"},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["btn",{active:"eraser"===a.value}]),onClick:n[2]||(n[2]=function(e){return i("eraser")})},[Object(y["createVNode"])(O,{class:"icon"})],2)]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"清除墨迹"},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",{class:"btn",onClick:n[3]||(n[3]=function(e){return u()})},[Object(y["createVNode"])(m,{class:"icon"})])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"黑板"},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["btn",{active:r.value}]),onClick:n[4]||(n[4]=function(e){return r.value=!r.value})},[Object(y["createVNode"])(v,{class:"icon"})],2)]})),_:1},8,["mouseEnterDelay"]),Object(y["createElementVNode"])("div",Hx,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(c,(function(e){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["color",{active:e===l.value}]),key:e,style:Object(y["normalizeStyle"])({backgroundColor:e}),onClick:function(t){return d(e)}},null,14,qx)})),64))]),Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"关闭画笔"},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",{class:"btn",onClick:n[5]||(n[5]=function(e){return s()})},[Object(y["createVNode"])(j,{class:"icon"})])]})),_:1},8,["mouseEnterDelay"])],4)])}}});n("e4c5");const Gx=pn()(Ux,[["__scopeId","data-v-4e7c6a52"]]);var Xx=Gx,Yx={class:"tools-left"},Zx={class:"content"},Wx=Object(y["defineComponent"])({__name:"BaseView",props:{changeViewMode:{type:Function,required:!0}},setup:function(e){var t=e,n=Object(g["c"])(le()),c=n.slides,o=n.slideIndex,l=lx(),a=l.autoPlayTimer,r=l.autoPlay,i=l.closeAutoPlay,u=l.mousewheelListener,d=l.touchStartListener,s=l.touchEndListener,f=l.turnPrevSlide,b=l.turnNextSlide,p=l.turnSlideToIndex,O=l.turnSlideToId,m=l.execPrev,v=l.execNext,j=l.animationIndex,h=ax(),x=h.slideWidth,k=h.slideHeight,C=yt(),N=C.exitScreening,w=rx(),E=w.fullscreenState,V=w.manualExitFullscreen,I=Object(y["ref"])(!1),B=Object(y["ref"])(!1),S=Object(y["ref"])(!1),L=Object(y["ref"])(!1),_=function(){return[{text:"上一页",subText:"↑ ←",disable:o.value<=0,handler:function(){return f()}},{text:"下一页",subText:"↓ →",disable:o.value>=c.value.length-1,handler:function(){return b()}},{text:"第一页",disable:0===o.value,handler:function(){return p(0)}},{text:"最后一页",disable:o.value===c.value.length-1,handler:function(){return p(c.value.length-1)}},{divider:!0},{text:"显示工具栏",handler:function(){return I.value=!0}},{text:"查看所有幻灯片",handler:function(){return S.value=!0}},{text:"画笔工具",handler:function(){return B.value=!0}},{text:"演讲者视图",handler:function(){return t.changeViewMode("presenter")}},{divider:!0},{text:a.value?"取消自动放映":"自动放映",handler:a.value?i:r},{text:"结束放映",subText:"ESC",handler:N}]};return function(t,n){var l=Object(y["resolveComponent"])("IconLeftTwo"),a=Object(y["resolveComponent"])("IconRightTwo"),r=Object(y["resolveComponent"])("IconWrite"),i=Object(y["resolveComponent"])("Tooltip"),f=Object(y["resolveComponent"])("IconMagic"),b=Object(y["resolveComponent"])("IconListView"),h=Object(y["resolveComponent"])("IconOffScreenOne"),g=Object(y["resolveComponent"])("IconFullScreenOne"),C=Object(y["resolveComponent"])("IconPower"),w=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["base-view",{"laser-pen":L.value}])},[Object(y["withDirectives"])(Object(y["createVNode"])(Ix,{slideWidth:Object(y["unref"])(x),slideHeight:Object(y["unref"])(k),animationIndex:Object(y["unref"])(j),turnSlideToId:Object(y["unref"])(O),manualExitFullscreen:Object(y["unref"])(V),onWheel:n[0]||(n[0]=function(e){return Object(y["unref"])(u)(e)}),onTouchstart:n[1]||(n[1]=function(e){return Object(y["unref"])(d)(e)}),onTouchend:n[2]||(n[2]=function(e){return Object(y["unref"])(s)(e)})},null,8,["slideWidth","slideHeight","animationIndex","turnSlideToId","manualExitFullscreen"]),[[w,_]]),S.value?(Object(y["openBlock"])(),Object(y["createBlock"])(Dx,{key:0,turnSlideToIndex:Object(y["unref"])(p),onClose:n[3]||(n[3]=function(e){return S.value=!1})},null,8,["turnSlideToIndex"])):Object(y["createCommentVNode"])("",!0),B.value?(Object(y["openBlock"])(),Object(y["createBlock"])(Xx,{key:1,slideWidth:Object(y["unref"])(x),slideHeight:Object(y["unref"])(k),onClose:n[4]||(n[4]=function(e){return B.value=!1})},null,8,["slideWidth","slideHeight"])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("div",Yx,[Object(y["createVNode"])(l,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:n[5]||(n[5]=function(e){return Object(y["unref"])(m)()})}),Object(y["createVNode"])(a,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:n[6]||(n[6]=function(e){return Object(y["unref"])(v)()})})]),Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["tools-right",{visible:I.value}]),onMouseleave:n[14]||(n[14]=function(e){return I.value=!1}),onMouseenter:n[15]||(n[15]=function(e){return I.value=!0})},[Object(y["createElementVNode"])("div",Zx,[Object(y["createElementVNode"])("div",{class:"tool-btn page-number",onClick:n[7]||(n[7]=function(e){return S.value=!0})},"幻灯片 "+Object(y["toDisplayString"])(Object(y["unref"])(o)+1)+" / "+Object(y["toDisplayString"])(Object(y["unref"])(c).length),1),Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"画笔工具"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{class:"tool-btn",onClick:n[8]||(n[8]=function(e){return B.value=!0})})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"激光笔"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{class:Object(y["normalizeClass"])(["tool-btn",{active:L.value}]),onClick:n[9]||(n[9]=function(e){return L.value=!L.value})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"演讲者视图"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b,{class:"tool-btn",onClick:n[10]||(n[10]=function(t){return e.changeViewMode("presenter")})})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:Object(y["unref"])(E)?"退出全屏":"进入全屏"},{default:Object(y["withCtx"])((function(){return[Object(y["unref"])(E)?(Object(y["openBlock"])(),Object(y["createBlock"])(h,{key:0,class:"tool-btn",onClick:n[11]||(n[11]=function(e){return Object(y["unref"])(V)()})})):(Object(y["openBlock"])(),Object(y["createBlock"])(g,{key:1,class:"tool-btn",onClick:n[12]||(n[12]=function(e){return Object(y["unref"])(vt)()})}))]})),_:1},8,["mouseEnterDelay","title"]),Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"结束放映"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(C,{class:"tool-btn",onClick:n[13]||(n[13]=function(e){return Object(y["unref"])(N)()})})]})),_:1},8,["mouseEnterDelay"])])],34)],2)}}});n("4a2e");const Jx=pn()(Wx,[["__scopeId","data-v-d72d6626"]]);var Qx=Jx,Kx=function(e){return Object(y["pushScopeId"])("data-v-5fba3eec"),e=e(),Object(y["popScopeId"])(),e},$x={class:"presenter-view"},ek={class:"toolbar"},tk=Kx((function(){return Object(y["createElementVNode"])("span",null,"普通视图",-1)})),nk=Kx((function(){return Object(y["createElementVNode"])("span",null,"画笔",-1)})),ck=Kx((function(){return Object(y["createElementVNode"])("span",null,"激光笔",-1)})),ok=Kx((function(){return Object(y["createElementVNode"])("span",null,"结束放映",-1)})),lk={class:"content"},ak=["onClick"],rk={class:"remark"},ik={class:"header"},uk=Kx((function(){return Object(y["createElementVNode"])("span",null,"演讲者备注",-1)})),dk=["innerHTML"],sk={class:"remark-scale"},fk=Object(y["defineComponent"])({__name:"PresenterView",props:{changeViewMode:{type:Function,required:!0}},setup:function(e){var t=e,n=Object(g["c"])(le()),c=n.slides,o=n.slideIndex,l=n.viewportRatio,a=n.currentSlide,r=Object(y["ref"])(),i=Object(y["ref"])(),u=Object(y["ref"])(!1),d=Object(y["ref"])(!1),s=lx(),f=s.mousewheelListener,b=s.touchStartListener,p=s.touchEndListener,O=s.turnPrevSlide,m=s.turnNextSlide,v=s.turnSlideToIndex,j=s.turnSlideToId,h=s.animationIndex,x=ax(r),k=x.slideWidth,C=x.slideHeight,N=yt(),w=N.exitScreening,E=pf(),V=E.slidesLoadLimit,I=rx(),B=I.fullscreenState,S=I.manualExitFullscreen,L=Object(y["ref"])(16),_=Object(y["computed"])((function(){return Ke(a.value.remark||"无备注")})),T=function(e){i.value&&i.value.scrollBy(e.deltaY,0)},M=function(e){e<12||e>40||(L.value=e)};Object(y["watch"])(o,(function(){Object(y["nextTick"])((function(){if(i.value){var e=i.value.querySelector(".thumbnail.active");if(e){var t=i.value.offsetWidth,n=e.offsetLeft;i.value.scrollTo({left:n-t/2,behavior:"smooth"})}}}))}));var D=function(){return[{text:"上一页",subText:"↑ ←",disable:o.value<=0,handler:function(){return O()}},{text:"下一页",subText:"↓ →",disable:o.value>=c.value.length-1,handler:function(){return m()}},{text:"第一页",disable:0===o.value,handler:function(){return v(0)}},{text:"最后一页",disable:o.value===c.value.length-1,handler:function(){return v(c.value.length-1)}},{divider:!0},{text:"画笔工具",handler:function(){return u.value=!0}},{text:"普通视图",handler:function(){return t.changeViewMode("base")}},{divider:!0},{text:"结束放映",subText:"ESC",handler:w}]};return function(t,n){var a=Object(y["resolveComponent"])("IconListView"),s=Object(y["resolveComponent"])("IconWrite"),O=Object(y["resolveComponent"])("IconMagic"),m=Object(y["resolveComponent"])("IconOffScreenOne"),g=Object(y["resolveComponent"])("Divider"),x=Object(y["resolveComponent"])("IconPower"),N=Object(y["resolveComponent"])("IconMinus"),E=Object(y["resolveComponent"])("IconPlus"),I=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",$x,[Object(y["createElementVNode"])("div",ek,[Object(y["createElementVNode"])("div",{class:"tool-btn",onClick:n[0]||(n[0]=function(t){return e.changeViewMode("base")})},[Object(y["createVNode"])(a,{class:"tool-icon"}),tk]),Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["tool-btn",{active:u.value}]),onClick:n[1]||(n[1]=function(e){return u.value=!u.value})},[Object(y["createVNode"])(s,{class:"tool-icon"}),nk],2),Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["tool-btn",{active:d.value}]),onClick:n[2]||(n[2]=function(e){return d.value=!d.value})},[Object(y["createVNode"])(O,{class:"tool-icon"}),ck],2),Object(y["createElementVNode"])("div",{class:"tool-btn",onClick:n[3]||(n[3]=function(){return Object(y["unref"])(B)?Object(y["unref"])(S)():Object(y["unref"])(vt)()})},[Object(y["unref"])(B)?(Object(y["openBlock"])(),Object(y["createBlock"])(m,{key:0,class:"tool-icon"})):(Object(y["openBlock"])(),Object(y["createBlock"])(m,{key:1,class:"tool-icon"})),Object(y["createElementVNode"])("span",null,Object(y["toDisplayString"])(Object(y["unref"])(B)?"退出全屏":"全屏"),1)]),Object(y["createVNode"])(g,{class:"divider"}),Object(y["createElementVNode"])("div",{class:"tool-btn",onClick:n[4]||(n[4]=function(e){return Object(y["unref"])(w)()})},[Object(y["createVNode"])(x,{class:"tool-icon"}),ok])]),Object(y["createElementVNode"])("div",lk,[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["slide-list-wrap",{"laser-pen":d.value}]),ref_key:"slideListWrapRef",ref:r},[Object(y["withDirectives"])(Object(y["createVNode"])(Ix,{slideWidth:Object(y["unref"])(k),slideHeight:Object(y["unref"])(C),animationIndex:Object(y["unref"])(h),turnSlideToId:Object(y["unref"])(j),manualExitFullscreen:Object(y["unref"])(S),onWheel:n[5]||(n[5]=function(e){return Object(y["unref"])(f)(e)}),onTouchstart:n[6]||(n[6]=function(e){return Object(y["unref"])(b)(e)}),onTouchend:n[7]||(n[7]=function(e){return Object(y["unref"])(p)(e)})},null,8,["slideWidth","slideHeight","animationIndex","turnSlideToId","manualExitFullscreen"]),[[I,D]]),u.value?(Object(y["openBlock"])(),Object(y["createBlock"])(Xx,{key:0,slideWidth:Object(y["unref"])(k),slideHeight:Object(y["unref"])(C),position:{left:"75px",top:"5px"},onClose:n[8]||(n[8]=function(e){return u.value=!1})},null,8,["slideWidth","slideHeight"])):Object(y["createCommentVNode"])("",!0)],2),Object(y["createElementVNode"])("div",{class:"thumbnails",ref_key:"thumbnailsRef",ref:i,onWheel:n[9]||(n[9]=Object(y["withModifiers"])((function(e){return T(e)}),["prevent"]))},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(c),(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["thumbnail",{active:t===Object(y["unref"])(o)}]),key:e.id,onClick:function(e){return Object(y["unref"])(v)(t)}},[Object(y["createVNode"])(nd,{slide:e,size:120/Object(y["unref"])(l),visible:t新添加文本

')},p=function(e){e&&e[0]&&et(e[0]).then((function(e){return s(e)}))},O=function(e){var t={viewBox:[200,200],path:"M 0 0 L 200 0 L 200 200 L 0 200 Z"},n={viewBox:[200,200],path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z"},o={square:t,round:n},l=200;f({left:(tt-l)/2,top:(tt*c.value-l)/2,width:l,height:l},o[e])},m=Object(y["computed"])((function(){var e;return(null===(e=o.value)||void 0===e?void 0:e.remark)||""})),v=function(e){var n=e.target.value;t.updateSlide({remark:n})};return function(e,t){var n=Object(y["resolveComponent"])("IconPlus"),c=Object(y["resolveComponent"])("Button"),o=Object(y["resolveComponent"])("IconCopy"),l=Object(y["resolveComponent"])("IconDelete"),u=Object(y["resolveComponent"])("ButtonGroup"),d=Object(y["resolveComponent"])("IconFontSize"),s=Object(y["resolveComponent"])("IconPicture"),f=Object(y["resolveComponent"])("FileInput"),j=Object(y["resolveComponent"])("IconSquare"),h=Object(y["resolveComponent"])("IconRound");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Sk,[Object(y["createElementVNode"])("div",Lk,[Object(y["createElementVNode"])("textarea",{value:Object(y["unref"])(m),placeholder:"点击输入演讲者备注",onInput:t[0]||(t[0]=function(e){return v(e)})},null,40,_k)]),Object(y["createElementVNode"])("div",Tk,[Object(y["createVNode"])(u,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(c,{style:{flex:"1"},onClick:t[1]||(t[1]=function(e){return Object(y["unref"])(a)()})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(n,{class:"icon"}),Mk]})),_:1}),Object(y["createVNode"])(c,{style:{flex:"1"},onClick:t[2]||(t[2]=function(e){return Object(y["unref"])(r)()})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(o,{class:"icon"}),Dk]})),_:1}),Object(y["createVNode"])(c,{style:{flex:"1"},onClick:t[3]||(t[3]=function(e){return Object(y["unref"])(i)()})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(l,{class:"icon"}),zk]})),_:1})]})),_:1}),Object(y["createVNode"])(u,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(c,{style:{flex:"1"},onClick:t[4]||(t[4]=function(e){return b()})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(d,{class:"icon"}),Fk]})),_:1}),Object(y["createVNode"])(c,{style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{onChange:t[5]||(t[5]=function(e){return p(e)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(s,{class:"icon"}),Ak]})),_:1})]})),_:1}),Object(y["createVNode"])(c,{style:{flex:"1"},onClick:t[6]||(t[6]=function(e){return O("square")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(j,{class:"icon"}),Rk]})),_:1}),Object(y["createVNode"])(c,{style:{flex:"1"},onClick:t[7]||(t[7]=function(e){return O("round")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(h,{class:"icon"}),Pk]})),_:1})]})),_:1})]),Object(y["createVNode"])(Bk)])}}});n("66e8");const qk=pn()(Hk,[["__scopeId","data-v-29fba90e"]]);var Uk=qk,Gk=function(e){return Object(y["pushScopeId"])("data-v-446388c6"),e=e(),Object(y["popScopeId"])(),e},Xk={class:"element-toolbar"},Yk={class:"tabs"},Zk=["onClick"],Wk={class:"content"},Jk={key:0,class:"style"},Qk=Object(y["createTextVNode"])("+"),Kk=Object(y["createTextVNode"])("-"),$k={class:"row-block"},eC=Gk((function(){return Object(y["createElementVNode"])("div",{class:"label"},"文字颜色:",-1)})),tC={class:"colors"},nC=["onClick"],cC={class:"row-block"},oC=Gk((function(){return Object(y["createElementVNode"])("div",{class:"label"},"填充色:",-1)})),lC={class:"colors"},aC=["onClick"],rC={key:1,class:"common"},iC=Object(y["createTextVNode"])(" 复制"),uC=Object(y["createTextVNode"])(" 删除"),dC=Object(y["createTextVNode"])(" 置顶"),sC=Object(y["createTextVNode"])(" 置底"),fC=Object(y["createTextVNode"])(" 上移"),bC=Object(y["createTextVNode"])(" 下移"),pC=Object(y["createTextVNode"])(" 左对齐"),OC=Object(y["createTextVNode"])(" 水平居中"),mC=Object(y["createTextVNode"])(" 右对齐"),vC=Object(y["createTextVNode"])(" 上对齐"),jC=Object(y["createTextVNode"])(" 垂直居中"),hC=Object(y["createTextVNode"])(" 下对齐"),yC=Object(y["defineComponent"])({__name:"ElementToolbar",setup:function(e){var t=["#000000","#ffffff","#eeece1","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c","#c21401","#ff1e02","#ffc12a","#ffff3a","#90cf5b","#00af57"],n=ie(),c=le(),o=Object(g["c"])(n),l=o.handleElement,a=o.handleElementId,r=o.richTextAttrs,i=lt(),u=i.addHistorySnapshot,d=function(e,t){c.updateElement({id:e,props:t}),u()},s=[{key:"style",label:"样式"},{key:"common",label:"布局"}],f=Object(y["ref"])("common"),b=mt(),p=b.orderElement,O=jc(),m=O.alignElementToCanvas,v=rt(),j=v.addElementsFromData,h=st(),x=h.deleteElement,N=function(){var e=JSON.parse(JSON.stringify(l.value));j([e])},w=function(e,t){Ko.emit(so.RICH_TEXT_COMMAND,{action:{command:e,value:t}})},E=function(e){var t;if(l.value){if(("text"===l.value.type||"shape"===l.value.type&&null!==(t=l.value.text)&&void 0!==t&&t.content)&&Ko.emit(so.RICH_TEXT_COMMAND,{action:{command:"color",value:e}}),"table"===l.value.type){for(var n=JSON.parse(JSON.stringify(l.value.data)),c=0;c=a.value?(e-20)/tt:(t-20)/a.value/tt}));Object(y["onMounted"])((function(){i.value.length&&n.setActiveElementIdList([]),0!==o.value&&t.updateSlideIndex(0)}));var m=Object(y["computed"])((function(){return{width:tt*O.value+"px",height:tt*a.value*O.value+"px"}})),v=Object(y["ref"])([]),j=function(){v.value=l.value?JSON.parse(JSON.stringify(l.value.elements)):[]};Object(y["watchEffect"])(j);var h=Oc(v,s,O),x=h.dragElement,k=bc(v,s,O),C=k.scaleElement,N=function(e,t){var c=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];i.value.includes(t.id)||(n.setActiveElementIdList([t.id]),n.setHandleElementId(t.id)),c&&x(e,t)},w=function(){n.setActiveElementIdList([])};return function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",SC,[Object(y["createVNode"])(BC,{changeMode:e.changeMode},null,8,["changeMode"]),Object(y["createElementVNode"])("div",{class:"content",ref_key:"contentRef",ref:d,onTouchstart:n[0]||(n[0]=function(e){return w()})},[Object(y["createElementVNode"])("div",{class:"viewport-wrapper",style:Object(y["normalizeStyle"])(Object(y["unref"])(m))},[Object(y["createElementVNode"])("div",{class:"background",style:Object(y["normalizeStyle"])(Object(y["unref"])(p))},null,4),(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(s.value,(function(e,t){return Object(y["openBlock"])(),Object(y["createBlock"])(Ar,{key:t,type:e.type,axis:e.axis,length:e.length,canvasScale:Object(y["unref"])(O)},null,8,["type","axis","length","canvasScale"])})),128)),(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(v.value,(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:e.id},["line"!==e.type?(Object(y["openBlock"])(),Object(y["createBlock"])(Ck,{key:0,elementInfo:e,isSelected:Object(y["unref"])(i).includes(e.id),canvasScale:Object(y["unref"])(O),scaleElement:Object(y["unref"])(C)},null,8,["elementInfo","isSelected","canvasScale","scaleElement"])):Object(y["createCommentVNode"])("",!0)],64)})),128)),Object(y["createElementVNode"])("div",{class:"viewport",style:Object(y["normalizeStyle"])({transform:"scale(".concat(Object(y["unref"])(O),")")})},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(v.value,(function(e,t){return Object(y["openBlock"])(),Object(y["createBlock"])(gk,{key:e.id,elementInfo:e,elementIndex:t+1,selectElement:N},null,8,["elementInfo","elementIndex"])})),128))],4)],4)],544),Object(y["createVNode"])(Uk),Object(y["unref"])(u)?(Object(y["openBlock"])(),Object(y["createBlock"])(xC,{key:0})):Object(y["createCommentVNode"])("",!0)])}}});n("2d86");const _C=pn()(LC,[["__scopeId","data-v-8cdcde82"]]);var TC=_C,MC={class:"header"},DC=Object(y["createTextVNode"])(" 退出播放"),zC=Object(y["defineComponent"])({__name:"MobilePlayer",props:{changeMode:{type:Function,required:!0}},setup:function(e){var t=le(),n=Object(g["c"])(t),c=n.slides,o=n.slideIndex,l=n.currentSlide,a=n.viewportRatio,r=Object(y["ref"])(!1),i=Object(y["ref"])({width:0,height:0});Object(y["onMounted"])((function(){0!==o.value&&t.updateSlideIndex(0),i.value={width:document.body.clientHeight,height:document.body.clientWidth}}));var u=Object(y["computed"])((function(){var e=i.value.height/i.value.width,t=0,n=0;return e>=a.value?(t=i.value.width,n=t*a.value):(n=i.value.height,t=n/a.value),{width:t,height:n}})),d=Object(y["ref"])(null),s=function(e){d.value={x:e.changedTouches[0].pageX,y:e.changedTouches[0].pageY}},f=function(e){if(d.value){var n=Math.abs(d.value.y-e.changedTouches[0].pageY),l=e.changedTouches[0].pageX-d.value.x;Math.abs(l)>n&&Math.abs(l)>50&&(d.value=null,l<0&&o.value>0&&t.updateSlideIndex(o.value-1),l>0&&o.valueObject(y["unref"])(o),hide:(t===Object(y["unref"])(o)-1||t===Object(y["unref"])(o)+1)&&e.turningMode!==Object(y["unref"])(l).turningMode}]),key:e.id},[Math.abs(Object(y["unref"])(o)-t)<2?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:"slide-content",style:Object(y["normalizeStyle"])({width:Object(y["unref"])(u).width+"px",height:Object(y["unref"])(u).height+"px"})},[Object(y["createVNode"])(nd,{slide:e,size:Object(y["unref"])(u).width},null,8,["slide","size"])],4)):Object(y["createCommentVNode"])("",!0)],2)})),128))],32),r.value?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[Object(y["createElementVNode"])("div",MC,[Object(y["createElementVNode"])("div",{class:"back",onClick:n[3]||(n[3]=function(t){return e.changeMode("preview")})},[Object(y["createVNode"])(a),DC])]),Object(y["createVNode"])(Bk,{class:"thumbnails"})],64)):Object(y["createCommentVNode"])("",!0)],4)}}});n("4f8b");const FC=pn()(zC,[["__scopeId","data-v-5293de3b"]]);var AC=FC,RC={class:"thumbnail-list"},PC={class:"menu"},HC=Object(y["createTextVNode"])(" 编辑"),qC=Object(y["createTextVNode"])(" 播放"),UC=Object(y["defineComponent"])({__name:"MobilePreview",props:{changeMode:{type:Function,required:!0}},setup:function(e){var t=Object(g["c"])(le()),n=t.slides,c=pf(),o=c.slidesLoadLimit,l=Object(y["ref"])(),a=Object(y["ref"])(0);return Object(y["onMounted"])((function(){l.value&&(a.value=l.value.clientWidth)})),function(t,c){var r=Object(y["resolveComponent"])("IconEdit"),i=Object(y["resolveComponent"])("Divider"),u=Object(y["resolveComponent"])("IconFullScreenPlay");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"mobile-preview",ref_key:"mobileRef",ref:l},[Object(y["createElementVNode"])("div",RC,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(n),(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"thumbnail-item",key:e.id},[Object(y["createVNode"])(nd,{slide:e,size:a.value-10,visible:tc?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})}},i=function e(){window.removeEventListener("mousemove",r),window.removeEventListener("mouseup",e)},u=function(e){r(e),window.addEventListener("mousemove",r),window.addEventListener("mouseup",i)};return Object(y["onUnmounted"])(i),function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",mE,[Object(y["createElementVNode"])("div",vE,[Object(y["createVNode"])(pE)]),Object(y["createElementVNode"])("div",{class:"alpha-gradient",style:Object(y["normalizeStyle"])({background:Object(y["unref"])(l)})},null,4),Object(y["createElementVNode"])("div",{class:"alpha-container",ref_key:"alphaRef",ref:a,onMousedown:t[0]||(t[0]=function(e){return u(e)})},[Object(y["createElementVNode"])("div",{class:"alpha-pointer",style:Object(y["normalizeStyle"])({left:100*Object(y["unref"])(o).a+"%"})},hE,4)],544)])}}});n("e83e");const gE=pn()(yE,[["__scopeId","data-v-246b525c"]]);var xE=gE,kE=function(e){return Object(y["pushScopeId"])("data-v-60c3cca1"),e=e(),Object(y["popScopeId"])(),e},CE={class:"hue"},NE=kE((function(){return Object(y["createElementVNode"])("div",{class:"hue-picker"},null,-1)})),wE=[NE],EE=Object(y["defineComponent"])({__name:"Hue",props:{value:{type:Object,required:!0},hue:{type:Number,required:!0}},emits:["colorChange"],setup:function(e,t){var n=t.emit,c=e,o=Object(y["ref"])(0),l=Object(y["ref"])(""),a=Object(y["computed"])((function(){var e=ee()(c.value).toHsl();return-1!==c.hue&&(e.h=c.hue),e})),r=Object(y["computed"])((function(){return 0===a.value.h&&"right"===l.value?"100%":100*a.value.h/360+"%"}));Object(y["watch"])((function(){return c.value}),(function(){var e=ee()(c.value).toHsl(),t=0===e.s?c.hue:e.h;0!==t&&t-o.value>0&&(l.value="right"),0!==t&&t-o.value<0&&(l.value="left"),o.value=t}));var i=Object(y["ref"])(),u=function(e){if(e.preventDefault(),i.value){var t,o,l=i.value.clientWidth,r=i.value.getBoundingClientRect().left+window.pageXOffset,u=e.pageX-r;u<0?t=0:u>l?t=360:(o=100*u/l,t=360*o/100),-1!==c.hue&&a.value.h===t||n("colorChange",{h:t,l:a.value.l,s:a.value.s,a:a.value.a})}},d=function e(){window.removeEventListener("mousemove",u),window.removeEventListener("mouseup",e)},s=function(e){u(e),window.addEventListener("mousemove",u),window.addEventListener("mouseup",d)};return Object(y["onUnmounted"])(d),function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",CE,[Object(y["createElementVNode"])("div",{class:"hue-container",ref_key:"hueRef",ref:i,onMousedown:t[0]||(t[0]=function(e){return s(e)})},[Object(y["createElementVNode"])("div",{class:"hue-pointer",style:Object(y["normalizeStyle"])({left:Object(y["unref"])(r)})},wE,4)],544)])}}});n("179a");const VE=pn()(EE,[["__scopeId","data-v-60c3cca1"]]);var IE=VE,BE=function(e){return Object(y["pushScopeId"])("data-v-d230faf4"),e=e(),Object(y["popScopeId"])(),e},SE=BE((function(){return Object(y["createElementVNode"])("div",{class:"saturation-white"},null,-1)})),LE=BE((function(){return Object(y["createElementVNode"])("div",{class:"saturation-black"},null,-1)})),_E=BE((function(){return Object(y["createElementVNode"])("div",{class:"saturation-circle"},null,-1)})),TE=[_E],ME=Object(y["defineComponent"])({__name:"Saturation",props:{value:{type:Object,required:!0},hue:{type:Number,required:!0}},emits:["colorChange"],setup:function(e,t){var n=t.emit,c=e,o=Object(y["computed"])((function(){var e=ee()(c.value).toHsv();return-1!==c.hue&&(e.h=c.hue),e})),l=Object(y["computed"])((function(){return"hsl(".concat(o.value.h,", 100%, 50%)")})),a=Object(y["computed"])((function(){return-100*o.value.v+1+100+"%"})),r=Object(y["computed"])((function(){return 100*o.value.s+"%"})),i=Object(te["throttle"])((function(e){n("colorChange",e)}),20,{leading:!0,trailing:!1}),u=Object(y["ref"])(),d=function(e){if(e.preventDefault(),u.value){var t=u.value.clientWidth,n=u.value.clientHeight,c=u.value.getBoundingClientRect().left+window.pageXOffset,l=u.value.getBoundingClientRect().top+window.pageYOffset,a=Object(te["clamp"])(e.pageX-c,0,t),r=Object(te["clamp"])(e.pageY-l,0,n),d=a/t,s=Object(te["clamp"])(-r/n+1,0,1);i({h:o.value.h,s:d,v:s,a:o.value.a})}},s=function e(){window.removeEventListener("mousemove",d),window.removeEventListener("mouseup",e)},f=function(e){d(e),window.addEventListener("mousemove",d),window.addEventListener("mouseup",s)};return Object(y["onUnmounted"])(s),function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"saturation",ref_key:"saturationRef",ref:u,style:Object(y["normalizeStyle"])({background:Object(y["unref"])(l)}),onMousedown:t[0]||(t[0]=function(e){return f(e)})},[SE,LE,Object(y["createElementVNode"])("div",{class:"saturation-pointer",style:Object(y["normalizeStyle"])({top:Object(y["unref"])(a),left:Object(y["unref"])(r)})},TE,4)],36)}}});n("0516");const DE=pn()(ME,[["__scopeId","data-v-d230faf4"]]);var zE=DE,FE={class:"editable-input"},AE=["value"],RE=Object(y["defineComponent"])({__name:"EditableInput",props:{value:{type:Object,required:!0}},emits:["colorChange"],setup:function(e,t){var n=t.emit,c=e,o=Object(y["computed"])((function(){var e="";return e=c.value.a<1?ee()(c.value).toHex8String().toUpperCase():ee()(c.value).toHexString().toUpperCase(),e.replace("#","")})),l=function(e){var t=e.target.value;t.length>=6&&n("colorChange",ee()(t).toRgb())};return function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",FE,[Object(y["createElementVNode"])("input",{class:"input-content",value:Object(y["unref"])(o),onInput:t[0]||(t[0]=function(e){return l(e)})},null,40,AE)])}}});n("a9b0");const PE=pn()(RE,[["__scopeId","data-v-2f428dde"]]);var HE=PE,qE={class:"color-picker"},UE={class:"picker-saturation-wrap"},GE={class:"picker-controls"},XE={class:"picker-color-wrap"},YE={class:"picker-sliders"},ZE={class:"picker-hue-wrap"},WE={class:"picker-alpha-wrap"},JE={class:"picker-field"},QE={class:"picker-presets"},KE=["onClick"],$E={class:"picker-gradient-presets"},eV=["onClick"],tV={class:"picker-presets"},nV=["onClick"],cV={key:0,class:"recent-colors-title"},oV={class:"picker-presets"},lV=["onClick"],aV=Object(y["defineComponent"])({__name:"index",props:{modelValue:{type:String,default:"#e86b99"}},emits:["update:modelValue"],setup:function(e,t){var n=t.emit,c=e,o="RECENT_COLORS",l=[["#7f7f7f","#f2f2f2"],["#0d0d0d","#808080"],["#1c1a10","#ddd8c3"],["#0e243d","#c6d9f0"],["#233f5e","#dae5f0"],["#632623","#f2dbdb"],["#4d602c","#eaf1de"],["#3f3150","#e6e0ec"],["#1e5867","#d9eef3"],["#99490f","#fee9da"]],a=function(e,t,n){for(var c=ee()(e).toRgb(),o=ee()(t).toRgb(),l=(o.r-c.r)/n,a=(o.g-c.g)/n,r=(o.b-c.b)/n,i=[],u=0;ut&&(s.value=s.value.slice(0,t))}}),300,{trailing:!0});Object(y["onMounted"])((function(){var e=localStorage.getItem(o);e&&(s.value=JSON.parse(e))})),Object(y["watch"])(s,(function(){var e=JSON.stringify(s.value);localStorage.setItem(o,e)}));var v=function(e){"h"in e?(d.value=e.h,f.value=ee()(e).toRgb()):(d.value=ee()(e).toHsl().h,f.value=e),m()},j=function(){var e="EyeDropper"in window;e?h():g()},h=function(){Se["a"].success("按 ESC 键关闭取色吸管");var e=new window.EyeDropper;e.open().then((function(e){var t=ee()(e.sRGBHex);d.value=t.toHsl().h,f.value=t.toRgb(),m()})).catch((function(){Se["a"].success("关闭取色吸管")}))},g=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(),o=c.left,l=c.top,a=c.width,r=c.height,i=function(e){return(!e.tagName||"FOREIGNOBJECT"!==e.tagName.toUpperCase())&&(!e.classList||!e.classList.contains("operate"))};Object(wt["a"])(e,{filter:i,fontEmbedCSS:"",width:a,height:r,canvasWidth:a,canvasHeight:r,pixelRatio:1}).then((function(e){e.style.cssText="position: absolute; top: ".concat(l,"px; left: ").concat(o,"px; cursor: crosshair;"),t.style.cursor="default",t.appendChild(e);var c=e.getContext("2d");if(c){var a="",r=function(e){var t=e.x,r=e.y,i=t-o,u=r-l,d=Object(Oe["a"])(c.getImageData(i,u,1,1).data,4),s=d[0],f=d[1],b=d[2],p=d[3];a="rgba(".concat(s,", ").concat(f,", ").concat(b,", ").concat((p/255).toFixed(2),")"),n.style.left=t+10+"px",n.style.top=r+10+"px",n.style.backgroundColor=a},i=function(){a="",n.style.left="-100px",n.style.top="-100px",n.style.backgroundColor=""},u=function n(c){if(a&&0===c.button){var o=ee()(a);d.value=o.toHsl().h,f.value=o.toRgb(),m()}document.body.removeChild(t),e.removeEventListener("mousemove",r),e.removeEventListener("mouseleave",i),window.removeEventListener("mousedown",n)};e.addEventListener("mousemove",r),e.addEventListener("mouseleave",i),window.addEventListener("mousedown",u)}})).catch((function(){Se["a"].error("取色吸管初始化失败"),document.body.removeChild(t)}))}};return function(e,t){var n=Object(y["resolveComponent"])("IconNeedle");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",qE,[Object(y["createElementVNode"])("div",UE,[Object(y["createVNode"])(zE,{value:Object(y["unref"])(f),hue:d.value,onColorChange:t[0]||(t[0]=function(e){return v(e)})},null,8,["value","hue"])]),Object(y["createElementVNode"])("div",GE,[Object(y["createElementVNode"])("div",XE,[Object(y["createElementVNode"])("div",{class:"picker-current-color",style:Object(y["normalizeStyle"])({background:Object(y["unref"])(p)})},null,4),Object(y["createVNode"])(pE)]),Object(y["createElementVNode"])("div",YE,[Object(y["createElementVNode"])("div",ZE,[Object(y["createVNode"])(IE,{value:Object(y["unref"])(f),hue:d.value,onColorChange:t[1]||(t[1]=function(e){return v(e)})},null,8,["value","hue"])]),Object(y["createElementVNode"])("div",WE,[Object(y["createVNode"])(xE,{value:Object(y["unref"])(f),onColorChange:t[2]||(t[2]=function(e){return v(e)})},null,8,["value"])])])]),Object(y["createElementVNode"])("div",JE,[Object(y["createVNode"])(HE,{class:"input",value:Object(y["unref"])(f),onColorChange:t[3]||(t[3]=function(e){return v(e)})},null,8,["value"]),Object(y["createElementVNode"])("div",{class:"straw",onClick:t[4]||(t[4]=function(e){return j()})},[Object(y["createVNode"])(n)])]),Object(y["createElementVNode"])("div",QE,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(i,(function(e){return Object(y["createElementVNode"])("div",{class:"picker-presets-color",key:e,style:Object(y["normalizeStyle"])({background:e}),onClick:function(t){return O(e)}},null,12,KE)})),64))]),Object(y["createElementVNode"])("div",$E,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(Object(y["unref"])(b),(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"picker-gradient-col",key:t},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e,(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"picker-gradient-color",key:e,style:Object(y["normalizeStyle"])({background:e}),onClick:function(t){return O(e)}},null,12,eV)})),128))])})),128))]),Object(y["createElementVNode"])("div",tV,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(u,(function(e){return Object(y["createElementVNode"])("div",{key:e,class:"picker-presets-color",style:Object(y["normalizeStyle"])({background:e}),onClick:function(t){return O(e)}},null,12,nV)})),64))]),s.value.length?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",cV,"最近使用:")):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("div",oV,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(s.value,(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:e,class:"picker-presets-color alpha",onClick:function(t){return O(e)}},[Object(y["createElementVNode"])("div",{class:"picker-presets-color-content",style:Object(y["normalizeStyle"])({background:e})},null,4)],8,lV)})),128))])])}}});n("ecf8");const rV=pn()(aV,[["__scopeId","data-v-c46eb110"]]);var iV=rV,uV={key:0,class:"fullscreen-spin"},dV=Object(y["defineComponent"])({__name:"FullscreenSpin",props:{loading:{type:Boolean,default:!1},tip:{type:String,default:""}},setup:function(e){return function(t,n){var c=Object(y["resolveComponent"])("Spin");return e.loading?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",uV,[Object(y["createVNode"])(c,{tip:e.tip,size:"large"},null,8,["tip"])])):Object(y["createCommentVNode"])("",!0)}}});n("5d4b");const sV=pn()(dV,[["__scopeId","data-v-16ead44e"]]);var fV=sV,bV={install:function(e){e.component("FileInput",cE),e.component("CheckboxButton",aE),e.component("CheckboxButtonGroup",sE),e.component("ColorPicker",iV),e.component("FullscreenSpin",fV)}},pV={class:"menu-content"},OV=["onClick"],mV={class:"text"},vV={key:0,class:"sub-text"},jV=Object(y["defineComponent"])({__name:"MenuContent",props:{menus:{type:Array,required:!0},handleClickMenuItem:{type:Function,required:!0}},setup:function(e){return function(t,n){var c=Object(y["resolveComponent"])("menu-content",!0);return Object(y["openBlock"])(),Object(y["createElementBlock"])("ul",pV,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.menus,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:t.text||n},[t.hide?Object(y["createCommentVNode"])("",!0):(Object(y["openBlock"])(),Object(y["createElementBlock"])("li",{key:0,class:Object(y["normalizeClass"])(["menu-item",{divider:t.divider,disable:t.disable}]),onClick:Object(y["withModifiers"])((function(n){return e.handleClickMenuItem(t)}),["stop"])},[t.divider?Object(y["createCommentVNode"])("",!0):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:Object(y["normalizeClass"])(["menu-item-content",{"has-children":t.children,"has-handler":t.handler}])},[Object(y["createElementVNode"])("span",mV,Object(y["toDisplayString"])(t.text),1),t.subText&&!t.children?(Object(y["openBlock"])(),Object(y["createElementBlock"])("span",vV,Object(y["toDisplayString"])(t.subText),1)):Object(y["createCommentVNode"])("",!0),t.children&&t.children.length?(Object(y["openBlock"])(),Object(y["createBlock"])(c,{key:1,class:"sub-menu",menus:t.children,handleClickMenuItem:e.handleClickMenuItem},null,8,["menus","handleClickMenuItem"])):Object(y["createCommentVNode"])("",!0)],2))],10,OV))],64)})),128))])}}});n("ca3c");const hV=pn()(jV,[["__scopeId","data-v-e470e712"]]);var yV=hV,gV=Object(y["defineComponent"])({__name:"index",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=e,n=Object(y["computed"])((function(){var e=170,n=30,c=11,o=5,l=t.axis,a=l.x,r=l.y,i=t.menus.filter((function(e){return!(e.divider||e.hide)})).length,u=t.menus.filter((function(e){return e.divider})).length,d=e,s=i*n+u*c+2*o,f=document.body.clientWidth,b=document.body.clientHeight;return{left:f<=a+d?a-d:a,top:b<=r+s?r-s:r}})),c=function(e){e.disable||e.children&&!e.handler||(e.handler&&e.handler(t.el),t.removeContextmenu())};return function(t,o){return Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,[Object(y["createElementVNode"])("div",{class:"mask",onContextmenu:o[0]||(o[0]=Object(y["withModifiers"])((function(t){return e.removeContextmenu()}),["prevent"])),onMousedown:o[1]||(o[1]=function(t){return e.removeContextmenu()})},null,32),Object(y["createElementVNode"])("div",{class:"contextmenu",style:Object(y["normalizeStyle"])({left:Object(y["unref"])(n).left+"px",top:Object(y["unref"])(n).top+"px"}),onContextmenu:o[2]||(o[2]=Object(y["withModifiers"])((function(){}),["prevent"]))},[Object(y["createVNode"])(yV,{menus:e.menus,handleClickMenuItem:c},null,8,["menus"])],36)],64)}}});n("b096");const xV=gV;var kV=xV,CV="CTX_CONTEXTMENU_HANDLER",NV=function(e,t,n){t.stopPropagation(),t.preventDefault();var c=n.value(e);if(c){var o=null,l=function t(){o&&(document.body.removeChild(o),o=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:c,removeContextmenu:l};o=document.createElement("div");var r=Object(y["createVNode"])(kV,a,null);Object(y["render"])(r,o),document.body.appendChild(o),e.classList.add("contextmenu-active"),document.body.addEventListener("scroll",l),window.addEventListener("resize",l)}},wV={mounted:function(e,t){e[CV]=function(n){return NV(e,n,t)},e.addEventListener("contextmenu",e[CV])},unmounted:function(e){e&&e[CV]&&(e.removeEventListener("contextmenu",e[CV]),delete e[CV])}},EV=wV,VV="CTX_CLICK_OUTSIDE_HANDLER",IV=function(e,t,n){var c=n.value,o=t.composedPath(),l=o?o.indexOf(e)<0:!e.contains(t.target);l&&c(t)},BV={mounted:function(e,t){e[VV]=function(n){return IV(e,n,t)},setTimeout((function(){document.addEventListener("click",e[VV])}),0)},unmounted:function(e){e[VV]&&(document.removeEventListener("click",e[VV]),delete e[VV])}},SV=BV,LV={install:function(e){e.directive("contextmenu",EV),e.directive("click-outside",SV)}},_V=Object(y["createApp"])($C);_V.component("InputNumber",h["a"]),_V.component("Divider",j["a"]),_V.component("Button",v["a"]),_V.component("ButtonGroup",v["a"].Group),_V.component("Tooltip",m["a"]),_V.component("Popover",O["a"]),_V.component("Slider",p["a"]),_V.component("Select",b["a"]),_V.component("SelectOption",b["a"].Option),_V.component("SelectOptGroup",b["a"].OptGroup),_V.component("Switch",f["a"]),_V.component("Radio",s["a"]),_V.component("RadioGroup",s["a"].Group),_V.component("RadioButton",s["a"].Button),_V.component("Input",d["a"]),_V.component("InputGroup",d["a"].Group),_V.component("TextArea",d["a"].TextArea),_V.component("Modal",u["a"]),_V.component("Dropdown",i["a"]),_V.component("Menu",r["a"]),_V.component("MenuItem",r["a"].Item),_V.component("Checkbox",a["a"]),_V.component("Drawer",l["a"]),_V.component("Spin",o["a"]),_V.use($w),_V.use(bV),_V.use(LV),_V.use(Object(g["a"])()),_V.mount("#app")},cd4f:function(e,t,n){},cd7e:function(e,t,n){"use strict";n("fb92")},d074:function(e,t,n){"use strict";n("8cb8")},d1ee:function(e,t,n){},d2ee:function(e,t,n){"use strict";n("36ac")},d31d:function(e,t,n){},d422:function(e,t,n){},d594:function(e,t,n){},d73b:function(e,t,n){},d806:function(e,t,n){"use strict";n("1441")},d908:function(e,t,n){"use strict";n("29d1")},d970:function(e,t,n){"use strict";n("97ba")},da06:function(e,t,n){},dcba:function(e,t,n){},dcd4:function(e,t,n){"use strict";n("f567")},dd03:function(e,t,n){"use strict";n("d31d")},dd28:function(e,t,n){"use strict";n("ae7d")},de23:function(e,t,n){"use strict";n("1bd7")},de3c:function(e,t,n){},e16b:function(e,t,n){},e25c:function(e,t,n){"use strict";n("8bc3")},e303:function(e,t,n){"use strict";n("ab80")},e394:function(e,t,n){},e4c5:function(e,t,n){"use strict";n("012a")},e5b5:function(e,t,n){"use strict";n("de3c")},e611:function(e,t,n){},e739:function(e,t,n){},e83e:function(e,t,n){"use strict";n("6b65")},e9df:function(e,t,n){"use strict";n("5c9a")},ea69:function(e,t,n){},eb5e:function(e,t,n){},eba1:function(e,t,n){"use strict";n("889b")},eba5:function(e,t,n){},ec27:function(e,t,n){"use strict";n("e394")},ecf8:function(e,t,n){"use strict";n("f4fe")},ef77:function(e,t,n){},f40d:function(e,t,n){"use strict";n("0585")},f4fe:function(e,t,n){},f567:function(e,t,n){},f630:function(e,t,n){"use strict";n("0b53")},f6a3:function(e,t,n){},fa09:function(e,t,n){},fac9:function(e,t,n){"use strict";n("45c1")},fb92:function(e,t,n){},fbfe:function(e,t,n){"use strict";n("ef77")},fef7:function(e,t,n){"use strict";n("084d")},fef8:function(e,t,n){"use strict";n("3c3b")}}); -//# sourceMappingURL=app.d2c3d541.js.map \ No newline at end of file diff --git a/js/app.d2c3d541.js.map b/js/app.d2c3d541.js.map deleted file mode 100644 index f5934f0a..00000000 --- a/js/app.d2c3d541.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/views/Mobile/MobileEditor/Header.vue?a1a5","webpack:///./src/views/Editor/Toolbar/common/ElementFlip.vue?5f8c","webpack:///./src/views/components/element/AudioElement/BaseAudioElement.vue?d01d","webpack:///./src/components/ColorPicker/Saturation.vue?c2ef","webpack:///./src/views/components/element/TextElement/BaseTextElement.vue?2437","webpack:///./src/views/Editor/index.vue?55c1","webpack:///./src/views/components/element/LatexElement/index.vue?dedd","webpack:///./src/views/Editor/Toolbar/SymbolPanel.vue?fba6","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/MultiStylePanel.vue?b007","webpack:///./src/views/Editor/Canvas/GridLines.vue?425f","webpack:///./src/views/Editor/EditorHeader/index.vue?7b2b","webpack:///./src/components/ColorPicker/Hue.vue?51e2","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue?3407","webpack:///./src/views/Editor/Toolbar/MultiPositionPanel.vue?6c96","webpack:///./src/components/LaTeXEditor/index.vue?52f1","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue?4aed","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue?3de2","webpack:///./src/views/Mobile/MobileEditor/ElementToolbar.vue?c87b","webpack:///./src/views/Editor/Canvas/Operate/RotateHandler.vue?1148","webpack:///./src/views/Editor/Canvas/Operate/BorderLine.vue?dc09","webpack:///./src/views/Editor/CanvasTool/ChartPool.vue?e6bd","webpack:///./src/views/Editor/Canvas/ViewportBackground.vue?e204","webpack:///./src/views/Screen/SlideThumbnails.vue?76b9","webpack:///./src/views/Editor/EditorHeader/HotkeyDoc.vue?f5e5","webpack:///./src/views/Mobile/MobileEditor/index.vue?88cc","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue?f0ff","webpack:///./src/views/Editor/Thumbnails/LayoutPool.vue?6185","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue?96eb","webpack:///./src/views/Editor/Toolbar/common/ElementShadow.vue?ec3d","webpack:///./src/views/components/element/VideoElement/VideoPlayer/index.vue?1035","webpack:///./src/views/Editor/CanvasTool/LinePool.vue?b397","webpack:///./src/views/components/element/AudioElement/AudioPlayer.vue?194f","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue?7128","webpack:///./src/views/Editor/CanvasTool/MediaInput.vue?8211","webpack:///./src/views/Editor/Canvas/LinkDialog.vue?2579","webpack:///./src/views/components/element/ElementOutline.vue?1a7f","webpack:///./src/views/Screen/index.vue?f2f3","webpack:///./src/views/Screen/BaseView.vue?0e4f","webpack:///./src/views/Editor/Canvas/MouseSelection.vue?c748","webpack:///./src/views/Mobile/MobilePlayer.vue?4f23","webpack:///./src/components/CheckboxButtonGroup.vue?504a","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue?d210","webpack:///./src/components/CheckboxButton.vue?9231","webpack:///./src/views/Editor/Toolbar/common/ElementFilter.vue?cc25","webpack:///./src/views/components/element/LatexElement/BaseLatexElement.vue?dc6f","webpack:///./src/views/components/element/ImageElement/ImageClipHandler.vue?ee13","webpack:///./src/views/components/element/TextElement/index.vue?0cef","webpack:///./src/views/components/element/VideoElement/BaseVideoElement.vue?da7f","webpack:///./src/components/FullscreenSpin.vue?e67d","webpack:///./src/components/WritingBoard.vue?cb3b","webpack:///./src/views/Editor/Canvas/index.vue?4424","webpack:///./src/views/Editor/Toolbar/SlideDesignPanel.vue?5b06","webpack:///./src/views/components/element/ShapeElement/index.vue?c517","webpack:///./src/views/Mobile/MobileEditor/SlideToolbar.vue?578f","webpack:///./src/views/components/element/VideoElement/index.vue?1b93","webpack:///./src/views/Editor/ExportDialog/ExportPDF.vue?8de5","webpack:///./src/views/components/element/ImageElement/index.vue?a2c9","webpack:///./src/views/Editor/Canvas/Operate/index.vue?204f","webpack:///./src/views/components/element/AudioElement/index.vue?3fea","webpack:///./src/views/components/element/TableElement/index.vue?2bcc","webpack:///./src/views/Editor/Canvas/Operate/LinkHandler.vue?807a","webpack:///./src/App.vue?3f87","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/AudioStylePanel.vue?b2c4","webpack:///./src/views/Screen/PresenterView.vue?7d60","webpack:///./src/views/components/element/VideoElement/ScreenVideoElement.vue?edf3","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue?f9c5","webpack:///./src/views/components/element/TableElement/CustomTextarea.vue?8683","webpack:///./src/views/components/element/ChartElement/index.vue?03dc","webpack:///./src/views/components/element/ProsemirrorEditor.vue?7e32","webpack:///./src/views/components/element/TableElement/StaticTable.vue?57f9","webpack:///./src/views/components/element/ShapeElement/BaseShapeElement.vue?afd8","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue?57b4","webpack:///./src/views/components/element/ChartElement/Chart.vue?c9a6","webpack:///./src/views/Editor/Toolbar/common/ColorButton.vue?208a","webpack:///./src/views/Screen/ScreenSlideList.vue?56b9","webpack:///./src/views/Editor/Canvas/Ruler.vue?10b2","webpack:///./src/views/components/element/ChartElement/BaseChartElement.vue?84b4","webpack:///./src/views/Editor/CanvasTool/index.vue?d5ad","webpack:///./src/views/Screen/ScreenSlide.vue?4e32","webpack:///./src/views/components/element/TableElement/BaseTableElement.vue?dae1","webpack:///./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue?7843","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/VideoStylePanel.vue?7d7a","webpack:///./src/components/ColorPicker/Checkboard.vue?a884","webpack:///./src/components/ColorPicker/EditableInput.vue?ace0","webpack:///./src/views/components/element/AudioElement/ScreenAudioElement.vue?eb40","webpack:///./src/views/Mobile/MobilePreview.vue?cb16","webpack:///./src/views/Editor/Canvas/Operate/ImageElementOperate.vue?36e6","webpack:///./src/components/Contextmenu/index.vue?07b9","webpack:///./src/views/Editor/Canvas/Operate/ResizeHandler.vue?881c","webpack:///./src/views/components/ThumbnailSlide/index.vue?bdc7","webpack:///./src/views/components/element/TableElement/EditableTable.vue?024d","webpack:///./src/views/components/element/LineElement/index.vue?179c","webpack:///./src/views/Mobile/index.vue?3233","webpack:///./src/views/Editor/ExportDialog/ExportSpecificFile.vue?1a34","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LatexStylePanel.vue?1c85","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue?c5f0","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue?c89e","webpack:///./src/components/Contextmenu/MenuContent.vue?6675","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue?b7a2","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue?08e0","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/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/utils/htmlParser/tags.ts","webpack:///./src/utils/htmlParser/lexer.ts","webpack:///./src/utils/htmlParser/parser.ts","webpack:///./src/utils/htmlParser/format.ts","webpack:///./src/utils/htmlParser/index.ts","webpack:///./src/utils/svgPathParser.ts","webpack:///./src/utils/svg2Base64.ts","webpack:///./src/hooks/useExport.ts","webpack:///./src/views/Editor/EditorHeader/HotkeyDoc.vue","webpack:///./src/views/Editor/EditorHeader/HotkeyDoc.vue?b691","webpack:///./src/views/Editor/EditorHeader/index.vue","webpack:///./src/views/Editor/EditorHeader/index.vue?f944","webpack:///./src/configs/imageClip.ts","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/hooks/useAlignElementToCanvas.ts","webpack:///./src/views/components/element/hooks/useElementShadow.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/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","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue?f9e6","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","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/ElementOutline.vue","webpack:///./src/views/components/element/ElementOutline.vue?e7ed","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/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/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/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/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","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","webpack:///./src/views/components/element/LatexElement/index.vue?faec","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/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","webpack:///./src/views/Editor/Canvas/MouseSelection.vue?4329","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","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue?af47","webpack:///./src/views/Editor/Canvas/Ruler.vue","webpack:///./src/views/Editor/Canvas/Ruler.vue?8bb7","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue?e33f","webpack:///./src/views/Editor/Canvas/hooks/useCommonOperate.ts","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","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/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","webpack:///./src/views/Editor/Canvas/Operate/TextElementOperate.vue?3000","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","webpack:///./src/views/Editor/Canvas/Operate/LineElementOperate.vue?8922","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","webpack:///./src/views/Editor/Canvas/Operate/CommonElementOperate.vue?b957","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/components/element/ImageElement/BaseImageElement.vue","webpack:///./src/views/components/element/ImageElement/BaseImageElement.vue?dbd8","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","webpack:///./src/views/components/element/ShapeElement/BaseShapeElement.vue?5afd","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","webpack:///./src/views/components/element/ChartElement/BaseChartElement.vue?928d","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","webpack:///./src/views/components/element/LatexElement/BaseLatexElement.vue?45c1","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","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/ShapePool.vue","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue?258a","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","webpack:///./src/views/Editor/CanvasTool/ChartPool.vue?2e9d","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue?ddc5","webpack:///./src/views/Editor/CanvasTool/MediaInput.vue","webpack:///./src/views/Editor/CanvasTool/MediaInput.vue?23a0","webpack:///./src/components/LaTeXEditor/hfmath.ts","webpack:///./src/configs/latex.ts","webpack:///./src/components/LaTeXEditor/FormulaContent.vue","webpack:///./src/components/LaTeXEditor/FormulaContent.vue?ecb1","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/hooks/useLoadSlides.ts","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/common/ElementOpacity.vue","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue?8eaf","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","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/common/ElementFlip.vue","webpack:///./src/views/Editor/Toolbar/common/ElementFlip.vue?0828","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","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue?6e51","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue?ebc3","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","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue?1838","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","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/VideoStylePanel.vue?27ee","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","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","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue?9199","webpack:///./src/configs/animation.ts","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue?9f55","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","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue?09d8","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/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","webpack:///./src/views/Editor/Remark/index.vue?4c66","webpack:///./src/views/Editor/ExportDialog/ExportImage.vue","webpack:///./src/views/Editor/ExportDialog/ExportImage.vue?e2fb","webpack:///./src/views/Editor/ExportDialog/ExportJSON.vue","webpack:///./src/views/Editor/ExportDialog/ExportJSON.vue?89c4","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","webpack:///./src/views/Editor/ExportDialog/ExportPPTX.vue?edaf","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/hooks/useExecPlay.ts","webpack:///./src/views/Screen/hooks/useSlideSize.ts","webpack:///./src/views/Screen/hooks/useFullscreen.ts","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","webpack:///./src/views/components/element/VideoElement/ScreenVideoElement.vue?1989","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","webpack:///./src/views/Screen/SlideThumbnails.vue?2aa3","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","webpack:///./src/views/Screen/PresenterView.vue?6e6b","webpack:///./src/views/Screen/index.vue","webpack:///./src/views/Screen/index.vue?d18a","webpack:///./src/views/Mobile/MobileEditor/MobileEditableElement.vue","webpack:///./src/views/Mobile/MobileEditor/MobileEditableElement.vue?6c30","webpack:///./src/views/Mobile/MobileEditor/MobileOperate.vue","webpack:///./src/views/Mobile/MobileEditor/MobileOperate.vue?c9a6","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","webpack:///./src/views/Mobile/MobileEditor/ElementToolbar.vue?d8d2","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","webpack:///./src/views/Mobile/MobilePlayer.vue?362c","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","webpack:///./src/components/FileInput.vue?ae58","webpack:///./src/components/CheckboxButton.vue","webpack:///./src/components/CheckboxButton.vue?b241","webpack:///./src/components/CheckboxButtonGroup.vue","webpack:///./src/components/CheckboxButtonGroup.vue?da6b","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","webpack:///./src/components/ColorPicker/Hue.vue?01db","webpack:///./src/components/ColorPicker/Saturation.vue","webpack:///./src/components/ColorPicker/Saturation.vue?7588","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","webpack:///./src/components/FullscreenSpin.vue?40fd","webpack:///./src/plugins/component.ts","webpack:///./src/components/Contextmenu/MenuContent.vue","webpack:///./src/components/Contextmenu/MenuContent.vue?0215","webpack:///./src/components/Contextmenu/index.vue","webpack:///./src/components/Contextmenu/index.vue?0141","webpack:///./src/plugins/directive/contextmenu.ts","webpack:///./src/plugins/directive/clickOutside.ts","webpack:///./src/plugins/directive/index.ts","webpack:///./src/main.ts","webpack:///./src/views/Editor/Toolbar/index.vue?cacf","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue?b28e","webpack:///./src/views/Screen/ScreenElement.vue?9349","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue?74a2","webpack:///./src/views/Editor/Thumbnails/index.vue?e476","webpack:///./src/views/Editor/ExportDialog/index.vue?589d","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue?a0c8","webpack:///./src/views/Mobile/MobileEditor/MobileOperate.vue?5efe","webpack:///./src/views/Mobile/MobileThumbnails.vue?6c4a","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue?e1f3","webpack:///./src/components/FileInput.vue?2066","webpack:///./src/views/Editor/ExportDialog/ExportImage.vue?acc4","webpack:///./src/views/Screen/WritingBoardTool.vue?b09b","webpack:///./src/views/components/element/ImageElement/BaseImageElement.vue?ffad","webpack:///./src/components/ColorPicker/Alpha.vue?3aaa","webpack:///./src/components/LaTeXEditor/FormulaContent.vue?ad41","webpack:///./src/views/Editor/ExportDialog/ExportJSON.vue?1d04","webpack:///./src/views/Editor/Remark/index.vue?d576","webpack:///./src/components/ColorPicker/index.vue?9fcf","webpack:///./src/views/Editor/Toolbar/common/ElementOutline.vue?7394","webpack:///./src/views/components/element/ChartElement/Chart.vue?e5ce","webpack:///./src/views/Editor/Canvas/Operate/LineElementOperate.vue?b7eb","webpack:///./src/views/components/element/LineElement/BaseLineElement.vue?d2fd","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue?6dda","webpack:///./src/views/Editor/ExportDialog/ExportPPTX.vue?5f02"],"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","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","screening","setScreening","digit","len","isPC","navigator","userAgent","match","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","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","importSpecificFile","files","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","target","exportPPTX","masterOverwrite","pptx","layout","bgColor","bgAlpha","defineSlideMaster","title","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","_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","__name","setup","__props","_ctx","_cache","hotkey","__exports__","_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","_hoisted_32","useExport","toggleGridLines","toggleRuler","hotkeyDrawerVisible","goIssues","open","_component_IconFolderClose","_component_MenuItem","_component_FileInput","_component_Menu","_component_Dropdown","_component_IconEdit","_component_IconPpt","_component_IconHelpcenter","_component_IconShare","_component_Tooltip","_component_IconGithub","_component_Drawer","overlay","default","accept","onChange","_","onClick","$event","mouseLeaveDelay","placement","closable","visible","onClose","HotkeyDoc","ClipPathTypes","ClipPaths","injectKeySlideScale","injectKeySlideId","removeAllRanges","getSelection","canvasRef","viewportLeft","viewportTop","setViewportPosition","canvasWidth","canvasHeight","viewportActualWidth","viewportActualHeight","viewportStyles","resizeObserver","ResizeObserver","observe","unobserve","dragViewport","isMouseDown","startPageX","pageX","startPageY","pageY","originLeft","originTop","onmousemove","currentPageX","currentPageY","onmouseup","viewportRef","mouseSelectionVisible","mouseSelectionQuadrant","mouseSelection","updateMouseSelection","viewportRect","getBoundingClientRect","minSelectionRange","offsetWidth","offsetHeight","abs","quadrant","inRangeElementList","mouseSelectionLeft","mouseSelectionTop","mouseSelectionWidth","mouseSelectionHeight","isInclude","inRangeElement","groupElementList","groupElement","inRangeElementIdList","elementRef","handleDrop","dataTransfer","dataTransferItem","ondragleave","ondrop","ondragenter","ondragover","getAngleFromCoordinate","radian","atan2","rotateElement","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","alignmentLines","scaleElement","isTouchEvent","MouseEvent","changedTouches","elOriginLeft","elOriginTop","elOriginWidth","elOriginHeight","elRotate","rotateRadian","aspectRatio","minSize","getSizeWithinRange","baseLeft","baseTop","horizontalLines","verticalLines","oppositePoint","edgeWidth","edgeHeight","isActiveGroupElement","right","bottom","topLine","bottomLine","leftLine","rightLine","edgeTopLine","edgeBottomLine","edgeHorizontalCenterLine","edgeLeftLine","edgeRightLine","edgeVerticalCenterLine","alignedAdsorption","currentX","currentY","_alignmentLines","isVerticalAdsorbed","isHorizontalAdsorbed","correctionVal","axis","handleMousemove","revisedX","revisedY","currentPoints","currentOppositePoint","currentBaseLeft","currentBaseTop","moveX","moveY","handleMouseup","ontouchmove","ontouchend","scaleMultiElement","operateWidth","operateHeight","originElementList","currentMinX","currentMaxX","currentMinY","currentMaxY","currentOppositeWidth","currentOppositeHeight","widthScale","heightScale","originElement","originEl","selectElement","startMove","newActiveIdList","groupMembersId","dragElement","originActiveElementList","isMisoperation","horizontalCenterLine","verticalCenterLine","targetMinX","targetMaxX","targetMinY","targetMaxY","targetLeft","targetTop","targetCenterX","targetCenterY","dragLineElement","adsorptionPoints","midX","midY","c1X","c1Y","c2X","c2Y","START","adsorptionPoint","END","C1","C2","newEl","formatCreateSelection","selectionData","formatCreateSelectionForLine","_start","_end","insertElementFromCreateSelection","alignElementToCanvas","viewportWidth","viewportHeight","CENTER","VERTICAL","HORIZONTAL","shadowStyle","flipStyle","CLIPPATHS","rect","RECT","rect2","POLYGON","createPath","rect3","roundRect","ellipse","ELLIPSE","triangle","triangle2","triangle3","rhombus","hexagon","pentagon","parallelogram","parallelogram2","trapezoid","trapezoid2","clipShape","imgPosition","outlineWidth","outlineStyle","outlineColor","Number","required","useElementOutline","overflow","stroke","Function","elementInfo","useClipImage","ImageRectOutline","ImageEllipseOutline","ImagePolygonOutline","clipData","clipPath","emits","emit","clipWrapperPositionStyle","isSettingClipRange","currentRange","getClipDataTransformInfo","bottomImgPositionStyle","topImgWrapperPosition","topImgWrapperPositionStyle","topImgPositionStyle","bottomWidth","bottomHeight","initClipPosition","handleClip","clipedEmitData","keyboardListener","updateRange","retPosition","moveClipRange","bottomPosition","originPositopn","scaleClipRange","minWidth","minHeight","targetWidth","targetHeight","rotateClassName","cornerPoint","edgePoints","_directive_click_outside","draggable","alt","onMousedown","contextmenus","isCliping","useElementShadow","useElementFlip","useFilter","handleSelectElement","stopPropagation","originClip","centerOffsetX","centerOffsetY","rotatedCenterX","rotatedCenterY","_props","_directive_contextmenu","transform","ImageClipHandler","onClip","onTouchstart","ImageOutline","onDragstart","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","editable","Boolean","autoFocus","editorViewRef","handleInput","innerHTML","handleFocus","handleBlur","handleClick","handleKeydown","textContent","hasFocus","replaceRangeWith","setProps","handleDOMEvents","keydown","execCommand","removeMark","insertText","RICH_TEXT_COMMAND","off","ref_key","ref","canMove","realHeightCache","updateTextElementHeight","entries","contentRect","realHeight","updateContent","checkEmptyText","pureText","isHandleElement","textShadow","letterSpacing","fontFamily","ElementOutline","ProsemirrorEditor","textIndent","onUpdate","gradientTransform","defaultText","updateText","_text","onDblclick","gradient","GradientDefs","onBlur","baseSize","pathMap","dot","arrow","rotateMap","markerUnits","orient","markerWidth","markerHeight","refX","refY","svgWidth","svgHeight","lineDashArray","LinePointMarker","chartRef","slideScale","chartHeight","getDataAndOptions","propsOptopns","renderChart","updateChart","themeColors","colors","updateTheme","setProperty","updateGridColor","flexDirection","openDataEditor","OPEN_CHART_DATA_EDITOR","Chart","getTextStyle","textDecoration","fontWeight","fontStyle","formatText","hideCells","subThemeColor","immediate","contenteditable","textareaRef","onpaste","excelData","onFocus","onInput","isStartSelect","startCell","endCell","tableCells","set","newData","useSubThemeColor","colSizeList","totalWidth","reduce","a","b","removeSelectedCells","dragLinePosition","useHideCells","selectedCells","oldValue","activedCell","handleCellMousedown","rowIndex","colIndex","button","handleCellMouseenter","isHideCell","selectCol","maxRow","selectRow","maxCol","deleteRow","_tableCells","targetCells","hideCellsPos","deleteCol","insertRow","insertCol","fillTable","rowCount","defaultCell","newRows","mergeCells","splitCells","handleMousedownColHandler","originWidth","clearSelectedCellText","tabActiveCell","getNextCell","nextRow","nextCol","nextCell","textRef","insertExcelData","fillRowCount","fillColCount","getEffectiveTableCells","effectiveTableCells","_rowCells","checkCanDeleteRowOrCol","canDeleteRow","canDeleteCol","checkCanMergeOrSplit","isMultiSelected","targetCell","canMerge","canSplit","cellIndex","dataset","handler","divider","span","borderStyle","borderColor","borderWidth","onMouseenter","CustomTextarea","onUpdateValue","onInsertExcelData","startEdit","updateTableElementHeight","updateTableCells","updateColWidths","widths","updateSelectedCells","EditableTable","onChangeColWidths","onChangeSelectedCells","openLatexEditor","OPEN_LATEX_EDITOR","videoRef","exec","canPlayType","Hls","isSupported","hls","loadSource","attachMedia","flvjs","flvPlayer","createPlayer","attachMediaElement","load","poster","secondToTime","second","add0","num","hour","floor","sec","getBoundingClientRectViewLeft","playBarWrap","volumeBarRef","volume","paused","currentTime","duration","loaded","bezelTransition","playbackRate","playBarTimeVisible","playBarTime","playBarTimeLeft","ptime","dtime","playedBarWidth","loadedBarWidth","volumeBarWidth","speedMenuVisible","speedOptions","seek","play","pause","toggle","setVolume","muted","speed","rate","handleDurationchange","handleTimeupdate","handleEnded","handleProgress","buffered","handleError","thumbMove","clientX","thumbUp","handleMousedownPlayBar","volumeMove","volumeUp","handleMousedownVolumeBar","handleClickVolumeBar","handleMousemovePlayBar","tx","toggleVolume","toggleLoop","autoHideControllerTimer","hideController","autoHideController","clearTimeout","played","useMSE","_component_IconPause","_component_IconPlayOne","_component_IconVolumeMute","_component_IconVolumeNotice","_component_IconVolumeSmall","onMousemove","playsinline","onDurationchange","onTimeupdate","onEnded","onProgress","onPlay","onPause","onError","onAnimationend","onMouseleave","VideoPlayer","expose","audioRef","handlePlayed","audioIconSize","audioPlayerPosition","audioWidth","audioHeight","AudioPlayer","elementIndex","isMultiSelect","openLinkDialog","currentElementComponent","elementTypeMap","IMAGE","ImageElement","TEXT","TextElement","SHAPE","ShapeElement","LINE","LineElement","CHART","ChartElement","TABLE","TableElement","LATEX","LatexElement","VIDEO","VideoElement","AUDIO","AudioElement","useAlignElementToCanvas","subText","hide","zIndex","validator","colorList","mostReadable","includeFallbackColors","gridSize","getPath","backgroundStyle","imageSize","gradientRotate","gradientType","backgroundImage","backgroundRepeat","backgroundSize","useSlideBackgroundStyle","GridLines","sizeStyle","markerSize","marker","selectionRef","createSelection","absX","absY","isOpposite","endPageX","endPageY","defaultSize","lineData","_startX","_startY","_endX","_endY","onContextmenu","resizeHandlers","textElementResizeHandlers","borderLines","T","R","isWide","localActiveElementList","useCommonOperate","setRange","disableResize","BorderLine","ResizeHandler","script","render","__default__","inheritAttrs","handlerVisible","scaleWidth","scaleHeight","RotateHandler","handlers","ctrlHandler","ctrlHandler1","ctrlHandler2","cannotRotate","setLink","linkRegExp","removeLink","useLink","_component_Divider","isSelected","isActive","currentOperateComponent","ImageElementOperate","TextElementOperate","ShapeElementOperate","LineElementOperate","TableElementOperate","CommonElementOperate","elementIndexListInAnimation","indexList","transformOrigin","LinkHandler","cssVar","needScaleSize","zoom","StaticTable","BaseImageElement","BaseTextElement","BaseShapeElement","BaseLineElement","BaseChartElement","BaseTableElement","BaseLatexElement","BaseVideoElement","BaseAudioElement","ThumbnailElement","address","selectedSlide","tabs","save","success","_component_Input","_component_SelectOption","_component_Select","_component_Button","tab","placeholder","ThumbnailSlide","linkDialogVisible","setLocalElementList","useViewportSize","useDropImageOrText","useMouseSelection","useDragElement","useDragLineElement","useSelectElement","useScaleElement","useRotateElement","handleClickBlankArea","removeEditorAreaFocus","throttleScaleCanvas","throttleUpdateSlideIndex","handleMousewheelCanvas","deltaY","useInsertFromCreateSelection","_component_Modal","onWheel","ElementCreateSelection","onCreated","AlignmentLine","MultiSelectOperate","Operate","ViewportBackground","MouseSelection","EditableElement","Ruler","footer","centered","destroyOnClose","LinkDialog","selectShape","LINE_LIST","selectLine","chartList","selectChart","_component_IconChartLine","_component_IconChartHistogram","_component_IconChartPie","_component_IconChartHistogramOne","_component_IconChartLineArea","_component_IconChartRing","_component_IconChartScatter","customRow","customCol","isCustom","handleClickTable","insertCustomTable","_component_InputNumber","videoSrc","audioSrc","insertVideo","insertAudio","hfmath","SUB_SUP_SCALE","FORMULA_LIST","SYMBOL_LIST","box","pathd","eq","boxW","boxH","SCALE_X","SCALE_Y","formulaList","symbolList","textAreaRef","selectedSymbolKey","symbolPool","selectedSymbol","insertSymbol","_component_TextArea","FormulaContent","SymbolContent","canvasScalePresetList","canvasScaleVisible","applyCanvasPresetScale","insertImageElement","shapePoolVisible","linePoolVisible","chartPoolVisible","tableGeneratorVisible","mediaInputVisible","latexEditorVisible","drawText","drawShape","drawLine","_component_IconBack","_component_IconNext","_component_IconFontSize","_component_IconPicture","_component_IconGraphicDesign","_component_Popover","_component_IconConnection","_component_IconChartProportion","_component_IconInsertTable","_component_IconFormula","_component_IconVideoTwo","_component_IconMinus","_component_IconPlus","_component_IconFullScreen","mouseEnterDelay","ShapePool","onSelect","LinePool","ChartPool","TableGenerator","onInsert","MediaInput","onInsertVideo","onInsertAudio","LaTeXEditor","timer","slidesLoadLimit","loadSlide","selectSlideTemplate","useLoadSlides","presetLayoutPopoverVisible","changSlideIndex","handleClickSlideThumbnail","minIndex","handleDragEnd","eventData","oldIndex","_slide","contextmenusThumbnails","contextmenusThumbnailItem","_component_IconDown","LayoutPool","modelValue","scroll","scrollSensitivity","setData","onEnd","itemKey","deep","updateOpacity","_component_Slider","_component_IconPlatte","fixed","hasOutline","updateOutline","outlineProps","toggleOutline","checked","_outline","_component_Switch","_component_ColorPicker","ColorButton","hasShadow","updateShadow","shadowProps","_shadow","toggleShadow","presetStyles","fontSizeOptions","lineHeightOptions","wordSpaceOptions","textIndentOptions","paragraphSpaceOptions","updateLineHeight","updateParagraphSpace","updateWordSpace","updateTextIndent","updateFill","emitRichTextCommand","emitBatchRichTextCommand","linkPopoverVisible","openLinkPopover","updateLink","_component_SelectOptGroup","_component_IconAddText","_component_InputGroup","_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","compact","suffixIcon","disabled","ElementShadow","ElementOpacity","updateFlip","flipProps","_component_IconFlipVertically","_component_IconFlipHorizontally","defaultFilters","unit","filterOptions","hasFilters","updateFilter","_handleElement","originFilters","toggleFilters","shapeClipPathOptions","ratioClipOptions","ratio","handleImageElement","clipPanelVisible","clipImage","getImageElementDataBeforeClip","imgLeft","imgTop","originClipRange","originHeight","presetImageClip","imageRatio","distance","replaceImage","resetImage","setBackgroundImage","_component_IconTailoring","_component_IconTransform","_component_IconUndo","_component_IconTheme","ElementFlip","ElementFilter","handleShapeElement","fillType","updateFillType","updateGradient","gradientProps","_gradient","updateTextAlign","_component_IconAlignTextTopOne","_component_IconAlignTextMiddleOne","_component_IconAlignTextBottomOne","handleLineElement","updateLine","CELL_WIDTH","CELL_HEIGHT","selectedRange","tempRangeSize","focusCell","rangeLines","resizablePointStyle","initData","_data","inputRef","moveNextRow","getTableData","labelsItem","labelInputRef","legendsItem","seriesItem","valueInputRef","clear","handlePaste","closeEditor","changeSelectRange","autocomplete","onPaste","presetChartThemes","handleChartElement","chartDataEditorVisible","presetThemesVisible","presetThemeColorHoverIndex","stackBars","_lineSmooth","_showLine","_showArea","_horizontalBars","_donut","_stackBars","updateData","updateOptions","optionProps","newOptions","addThemeColor","applyPresetTheme","deleteThemeColor","updateLegend","_component_Checkbox","_component_IconCloseSmall","itemIndex","ChartDataEditor","onSave","textAttrs","hasTheme","minRowCount","minColCount","updateTextAttrState","selectedCell","updateTextAttrs","textAttrProp","themeProp","_theme","toggleTheme","setTableRow","newTableCells","setTableCol","newColSizeList","_component_IconFill","handleLatexElement","updateLatex","updateLatexData","handleVideoElement","updateVideo","setVideoPoster","handleAudioElement","updateAudio","updateFontStyle","panelMap","TextStylePanel","ImageStylePanel","ShapeStylePanel","LineStylePanel","ChartStylePanel","TableStylePanel","LatexStylePanel","VideoStylePanel","AudioStylePanel","currentPanelComponent","MultiStylePanel","activeGroupElement","updateLeft","updateTop","updateWidth","updateHeight","updateRotate","updateFixedRatio","updateRotate45","_rotate","_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","flex","ANIMATION_DEFAULT_DURATION","ANIMATION_DEFAULT_TRIGGER","ANIMATION_CLASS_PREFIX","ENTER_ANIMATIONS","EXIT_ANIMATIONS","ATTENTION_ANIMATIONS","animationEffects","effect","animationTypes","activeTab","animationPoolVisible","hoverPreviewAnimation","animationSequence","elType","animationEffect","handleElementAnimation","deleteAnimation","runAnimation","elRef","animationName","classList","handleAnimationEnd","removeProperty","once","updateElementAnimationDuration","updateElementAnimationTrigger","updateElementAnimation","handleAnimationId","animationItem","addAnimation","popoverMaskHide","handlePopoverVisibleChange","openAnimationPool","in","out","attention","_component_IconEffects","_component_IconClick","onVisibleChange","handle","PRESET_THEMES","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","updateBackgroundType","newBackground","updateBackground","uploadBackgroundImage","applyBackgroundAllSlide","applyThemeAllSlide","showPresetThemes","togglePresetThemesVisible","updateViewportRatio","currentTurningMode","turningMode","updateTurningMode","applyAllSlide","alignActiveElement","groupElementRangeMap","activeElement","groupElements","horizontalCenter","center","verticalCenter","displayItemCount","count","groupIdList","uniformHorizontalDisplay","copyOfActiveElementList","singleElemetList","groupList","groupEl","formatedGroupList","groupItem","list","sort","itemA","itemB","sortedElementData","firstItem","lastPos","lastWidth","currentPos","currentWidth","sortedItem","uniformVerticalDisplay","totalHeight","lastHeight","currentHeight","useAlignActiveElement","useUniformDisplayElement","alignElement","_component_IconGroup","_component_IconUngroup","selectSymbol","elementTabs","EL_STYLE","SYMBOL","EL_POSITION","EL_ANIMATION","slideTabs","SLIDE_ANIMATION","multiSelectTabs","MULTI_POSITION","currentTabs","currentTabsValue","ElementStylePanel","ElementPositionPanel","ElementAnimationPanel","SlideDesignPanel","SlideAnimationPanel","MultiPositionPanel","SymbolPanel","resize","newHeight","imageThumbnailsRef","rangeType","renderSlides","expImage","_component_FullscreenSpin","loading","tip","createIframe","iframe","printNode","docType","styleSheets","styleSheet","cssRules","rule","cssText","head","write","print","iframeContentWindow","contentWindow","contentDocument","handleLoadIframe","pdfThumbnailsRef","padding","expPDF","pageSize","currentDialogComponent","dialogMap","ExportImage","ExportJSON","ExportPDF","ExportPPTX","ExportSpecificFile","closeExportDialog","remarkHeight","useGlobalHotkey","usePasteEvent","EditorHeader","Thumbnails","CanvasTool","Canvas","Remark","Toolbar","onCancel","ExportDialog","animationIndex","inAnimation","playedSlidesMinIndex","endAnimationCount","classname","revokeAnimation","execPrev","autoPlayTimer","closeAutoPlay","clearInterval","throttleMassage","execNext","autoPlay","setInterval","mousewheelListener","touchInfo","touchStartListener","touchEndListener","turnPrevSlide","turnNextSlide","turnSlideToIndex","turnSlideToId","wrapRef","slideWidth","slideHeight","setSlideContentSize","slideWrapRef","winWidth","winHeight","fullscreenState","escExit","handleFullscreenChange","manualExitFullscreen","audioPlayerRef","ScreenChartElement","ScreenVideoElement","ScreenAudioElement","needWaitAnimation","elementIndexInAnimation","firstAnimation","openLink","visibility","ScreenElement","ScreenSlide","turnSlide","_component_IconArrowCircleLeft","model","blackboard","writingBoardRef","penSize","rubberSize","markSize","lastTime","lastLineWidth","mouse","mouseInCanvas","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","handleMousedown","clearCanvas","getImageDataURL","toDataURL","setImageDataURL","imageDataURL","Image","drawImage","_component_IconWrite","onMouseup","onTouchmove","onTouchend","writingBoardColors","writingBoardColor","writingBoardModel","changeModel","changeColor","closeWritingBoard","_component_IconErase","_component_IconClear","_component_IconClose","WritingBoard","changeViewMode","useExecPlay","useSlideSize","useFullscreen","rightToolsVisible","writingBoardToolVisible","slideThumbnailModelVisible","laserPen","_component_IconLeftTwo","_component_IconRightTwo","_component_IconMagic","_component_IconListView","_component_IconOffScreenOne","_component_IconFullScreenOne","_component_IconPower","ScreenSlideList","SlideThumbnails","WritingBoardTool","slideListWrapRef","thumbnailsRef","remarkFontSize","currentSlideRemark","handleMousewheelThumbnails","scrollBy","setRemarkFontSize","activeThumbnailRef","offsetLeft","scrollTo","behavior","viewMode","ESC","BaseView","PresenterView","_resizeHandlers","changeSlideIndex","insertTextElement","insertShapeElement","square","handleInputMark","_component_IconCopy","_component_IconDelete","_component_IconSquare","_component_IconRound","MobileThumbnails","updateFontColor","changeMode","_component_IconLogout","contentRef","contentWidth","contentheight","contentRatio","Header","MobileOperate","MobileEditableElement","SlideToolbar","ElementToolbar","toolVisible","playerSize","slideSize","playerRatio","mobileRef","screenWidth","_component_IconFullScreenPlay","_mode","currentComponent","componentMap","MobileEditor","MobilePlayer","MobilePreview","_isPC","onbeforeunload","discardedDB","discardedDBList","newDiscardedDB","setItem","Screen","Editor","Mobile","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","Needle","install","app","component","handleChange","$slots","white","grey","checkboardCache","renderCheckboard","fillRect","translate","getCheckboard","checkboard","bgStyle","rgbaStr","g","alphaRef","containerWidth","xOffset","pageXOffset","unbindEventListeners","handleMouseDown","Checkboard","hue","oldHue","pullDirection","hsla","toHsl","pointerLeft","hueRef","percent","hsva","toHsv","pointerTop","emitChangeEvent","param","saturationRef","containerHeight","yOffset","pageYOffset","saturation","bright","val","_hex","toHex8String","toRgb","RECENT_COLORS","presetColorConfig","startColor","endColor","_startColor","_endColor","rStep","gStep","bStep","gradientColorArr","getPresetColors","presetColors","standardColors","recentColors","rgbaString","currentColor","selectPresetColor","colorString","updateRecentColorsCache","maxLength","recentColorsCache","openEyeDropper","isSupportedEyeDropper","browserEyeDropper","customEyeDropper","eyeDropper","EyeDropper","tColor","sRGBHex","targetRef","maskRef","colorBlockRef","contains","pixelRatio","toFixed","handleMouseleave","_component_IconNeedle","Saturation","onColorChange","Hue","Alpha","EditableInput","_component_Spin","FileInput","CheckboxButton","CheckboxButtonGroup","ColorPicker","FullscreenSpin","menus","handleClickMenuItem","_component_menu_content","menu","removeContextmenu","MENU_WIDTH","MENU_HEIGHT","DIVIDER_HEIGHT","PADDING","menuCount","dividerCount","menuWidth","menuHeight","screenHeight","MenuContent","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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+ECAA,W,kCCAA,W,oCCAA,W,oCCAA,W,2GCAA,W,2DCAA,W,kCCAA,W,yLCAA,W,yDCAA,W,oCCAA,W,kCCAA,W,kCCAA,W,sFCAA,W,oCCAA,W,oCCAA,W,sICAA,W,kCCAA,W,oCCAA,W,oCCAA,W,oCCAA,W,yDCAA,W,oCCAA,W,oCCAA,W,sFCAA,W,oCCAA,W,kCCAA,W,6DCAA,W,kICAA,W,2DCAA,W,oCCAA,W,iNCAA,W,oFCAA,W,oFCAA,W,oCCAA,W,oCCAA,W,oFCAA,W,kCCAA,W,oCCAA,W,oCCAA,W,oCCAA,W,oCCAA,W,oCCAA,W,kCCAA,W,oCCAA,W,kCCAA,W,kCCAA,W,0LCAA,W,oCCAA,W,2DCAA,W,yDCAA,W,oFCAA,W,oCCAA,W,+GCAA,W,kCCAA,W,kCCAA,W,kCCAA,W,kCCAA,W,kCCAA,W,yDCAA,W,yDCAA,W,yDCAA,W,yDCAA,W,yDCAA,W,uGCAA,W,uGCAA,W,gFCAA,W,kCCAA,W,kCCAA,W,yDCAA,W,yDCAA,W,mCCAA,W,4KCAA,W,kCCAA,W,gFCAA,W,yDCAA,W,8ECAkByC,E,mgBAAlB,SAAkBA,GAChB,qBACA,gCACA,wBACA,8BACA,gCACA,sCACA,qCAPF,CAAkBA,MAAa,KCAxB,ICIKC,EAOAC,EAUMC,EAOAC,EAWAC,ECvCAC,EFALC,EAAY,CACvB,CAAEC,MAAO,QAASxB,MAAO,SACzB,CAAEwB,MAAO,OAAQxB,MAAO,mBACxB,CAAEwB,MAAO,KAAMxB,MAAO,UACtB,CAAEwB,MAAO,KAAMxB,MAAO,UACtB,CAAEwB,MAAO,KAAMxB,MAAO,SACtB,CAAEwB,MAAO,MAAOxB,MAAO,WACvB,CAAEwB,MAAO,KAAMxB,MAAO,YACtB,CAAEwB,MAAO,KAAMxB,MAAO,eACtB,CAAEwB,MAAO,OAAQxB,MAAO,WACxB,CAAEwB,MAAO,OAAQxB,MAAO,WACxB,CAAEwB,MAAO,OAAQxB,MAAO,UACxB,CAAEwB,MAAO,OAAQxB,MAAO,cACxB,CAAEwB,MAAO,OAAQxB,MAAO,eACxB,CAAEwB,MAAO,OAAQxB,MAAO,UACxB,CAAEwB,MAAO,OAAQxB,MAAO,YACxB,CAAE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M,uGACN6U,YAAapI,GAAsBoH,YAErC,CACE9T,QAAS,CAAC,IAAK,KACfC,KAAM,sDACN6U,YAAapI,GAAsBqH,mBAErC,CACE/T,QAAS,CAAC,IAAK,KACfC,KAAM,6CACN6U,YAAapI,GAAsBsH,iBAErC,CACEhU,QAAS,CAAC,IAAK,KACfC,KAAM,qDACN6U,YAAapI,GAAsBuH,mBAErC,CACEjU,QAAS,CAAC,IAAK,KACfC,KAAM,wEACN6U,YAAapI,GAAsBwH,qBAErC,CACElU,QAAS,CAAC,IAAK,KACfC,KAAM,yDACN6U,YAAapI,GAAsByH,mBAErC,CACEnU,QAAS,CAAC,IAAK,KACfC,KAAM,+DACN6U,YAAapI,GAAsB0H,uBAKzC,CACEza,KAAM,OACNkT,SAAU,CACR,CACE7M,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,4DACN6U,YAAapI,GAAsB+H,GAErC,CACEzU,QAAS,CAAC,IAAK,KACfC,KAAM,uEACN6U,YAAapI,GAAsBiI,WAErC,CACE3U,QAAS,CAAC,IAAK,KACfC,KAAM,iEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,mHACN6U,YAAapI,GAAsBkI,MAErC,CACE5U,QAAS,CAAC,IAAK,KACfC,KAAM,sHAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,gEACN6U,YAAapI,GAAsB2H,SAErC,CACErU,QAAS,CAAC,IAAK,KACfC,KAAM,mIACN6U,YAAapI,GAAsB8H,eAErC,CACExU,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,KACNkT,SAAU,CACR,CACE7M,QAAS,CAAC,IAAK,KACfC,KAAM,6EAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6EAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6EAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6EAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,qGAER,CACED,QAAS,CAAC,IAAK,KACf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","file":"js/app.d2c3d541.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!./Header.vue?vue&type=style&index=0&id=10cd6713&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=59a1646e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=5258e03b&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=d230faf4&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=659e869d&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=328e1a4e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=31390388&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=ba0c96fc&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=71469855&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=10cd6d44&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=6c34fc9c&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=60c3cca1&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/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=41071294&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=0d3881c5&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=2d73bf28&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=5830b9cf&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=6bf6c951&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=446388c6&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=b99d8dae&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=7170d1be&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=3870b42e&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=6f1e1261&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=b7c6c0cc&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=4b1afc5f&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=8cdcde82&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=144fbd05&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=cc6b7dca&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=22345a51&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=053ed706&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/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=2fc4c202&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!./LinePool.vue?vue&type=style&index=0&id=bca68faa&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=121f3d11&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!./ImageEllipseOutline.vue?vue&type=style&index=0&id=71b17928&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=b9437110&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=dfb654e8&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=61b7d06a&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=6bf3d190&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=d72d6626&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=0d6c0f73&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=5293de3b&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/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=b8aa6eac&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=37fa6068&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/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=699cf016&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=37fbdfde&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=9a47b5f4&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=3e0199ec&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=7135a611&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=56b7f716&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/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=16ead44e&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/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=1d4eb7f0&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=529c7227&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=e0bbbd9e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=4e9cdb03&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=29fba90e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=9d5469c6&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=15b57798&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=30dc7050&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=c3f7ca96&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=001bfbc4&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=6391c486&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=bb722fc0&lang=scss&scoped=true\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../node_modules/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=f5c43528&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!./AudioStylePanel.vue?vue&type=style&index=0&id=5d723d50&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=5fba3eec&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=76457308&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=5a941f07&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=cdb58a1e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=f3c03862&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=01b8c64e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=00712fa4&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=073084bf&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=7da35bec&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=1aa2357d&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=ed8f2044&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=77a3e620&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=60e06332&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=7d2e5c4e&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=5d4eff54&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=7cf7f9e7&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=53e0f1ba&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=defbd922&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=ff7125dc&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=7494636c&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=2f428dde&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=f447b6a2&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=4f906636&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=46b250c2&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=e70aeb5c&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!./ResizeHandler.vue?vue&type=style&index=0&id=881ee3f8&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=f69fb5b2&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=bae8c794&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=6550e504&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=1fb24d48&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=e2b465d2&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=546adf8c&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=5788e0d2&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/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=53b32689&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=e470e712&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=2f69234f&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=577ae912&lang=scss&scoped=true\"","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 { 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}","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: FileList, 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 { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-4b1afc5f\"),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\nimport { HOTKEY_DOC } from '@/configs/hotkey' \n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'HotkeyDoc',\n setup(__props) {\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(HOTKEY_DOC), (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}\n}\n\n})","import script from \"./HotkeyDoc.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./HotkeyDoc.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./HotkeyDoc.vue?vue&type=style&index=0&id=4b1afc5f&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4b1afc5f\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, unref as _unref, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6c34fc9c\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst mainStore = useMainStore()\nconst { showGridLines, showRuler } = storeToRefs(mainStore)\n\nconst { enterScreening, enterScreeningFromStart } = useScreening()\nconst { createSlide, deleteSlide, resetSlides } = useSlideHandler()\nconst { redo, undo } = useHistorySnapshot()\nconst { importSpecificFile } = useExport()\n\nconst setDialogForExport = mainStore.setDialogForExport\n\nconst toggleGridLines = () => {\n mainStore.setGridLinesState(!showGridLines.value)\n}\n\nconst toggleRuler = () => {\n mainStore.setRulerState(!showRuler.value)\n}\n\nconst hotkeyDrawerVisible = ref(false)\n\nconst goIssues = () => {\n window.open('https://github.com/pipipi-pikachu/PPTist/issues')\n}\n\nreturn (_ctx: any,_cache: 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_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 => _unref(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) => (_unref(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) => (_unref(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) => (_unref(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) => (_unref(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) => (_unref(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) => (_unref(undo)()))\n }, {\n default: _withCtx(() => [\n _hoisted_15\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_unref(redo)()))\n }, {\n default: _withCtx(() => [\n _hoisted_16\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_unref(createSlide)()))\n }, {\n default: _withCtx(() => [\n _hoisted_17\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_unref(deleteSlide)()))\n }, {\n default: _withCtx(() => [\n _hoisted_18\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[10] || (_cache[10] = ($event: any) => (toggleGridLines()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(showGridLines) ? '关闭网格线' : '打开网格线'), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[11] || (_cache[11] = ($event: any) => (toggleRuler()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(showRuler) ? '关闭标尺' : '打开标尺'), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[12] || (_cache[12] = ($event: any) => (_unref(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) => (_unref(enterScreeningFromStart)()))\n }, {\n default: _withCtx(() => [\n _hoisted_23\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[14] || (_cache[14] = ($event: any) => (_unref(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) => (goIssues()))\n }, {\n default: _withCtx(() => [\n _hoisted_28\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[16] || (_cache[16] = ($event: any) => (hotkeyDrawerVisible.value = 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) => (_unref(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) => (_unref(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: hotkeyDrawerVisible.value,\n onClose: _cache[19] || (_cache[19] = ($event: any) => (hotkeyDrawerVisible.value = false))\n }, {\n default: _withCtx(() => [\n _createVNode(HotkeyDoc)\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=6c34fc9c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6c34fc9c\"]])\n\nexport default __exports__","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 { 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 { 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 { 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}","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 { 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}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-b5bace06\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"rx\", \"ry\", \"width\", \"height\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nimport { PropType, toRef } from 'vue'\nimport { PPTElementOutline } from '@/types/slides'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ImageRectOutline',\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\nconst props = __props\n\n\n\nconst {\n outlineWidth,\n outlineStyle,\n outlineColor,\n} = useElementOutline(toRef(props, 'outline'))\n\nreturn (_ctx: any,_cache: any) => {\n return (__props.outline)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n class: \"image-rect-outline\",\n overflow: \"visible\",\n width: __props.width,\n height: __props.height\n }, [\n _createElementVNode(\"rect\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n fill: \"transparent\",\n rx: __props.radius,\n ry: __props.radius,\n width: __props.width,\n height: __props.height,\n stroke: _unref(outlineColor),\n \"stroke-width\": _unref(outlineWidth),\n \"stroke-dasharray\": _unref(outlineStyle) === 'dashed' ? '10 6' : '0 0'\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./ImageRectOutline.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ImageRectOutline.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ImageRectOutline.vue?vue&type=style&index=0&id=b5bace06&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b5bace06\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-71b17928\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"cx\", \"cy\", \"rx\", \"ry\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nimport { PropType, toRef } from 'vue'\nimport { PPTElementOutline } from '@/types/slides'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ImageEllipseOutline',\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\nconst props = __props\n\n\n\nconst {\n outlineWidth,\n outlineStyle,\n outlineColor,\n} = useElementOutline(toRef(props, 'outline'))\n\nreturn (_ctx: any,_cache: any) => {\n return (__props.outline)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n class: \"image-ellipse-outline\",\n overflow: \"visible\",\n width: __props.width,\n height: __props.height\n }, [\n _createElementVNode(\"ellipse\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n fill: \"transparent\",\n cx: __props.width / 2,\n cy: __props.height / 2,\n rx: __props.width / 2,\n ry: __props.height / 2,\n stroke: _unref(outlineColor),\n \"stroke-width\": _unref(outlineWidth),\n \"stroke-dasharray\": _unref(outlineStyle) === 'dashed' ? '10 6' : '0 0'\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./ImageEllipseOutline.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ImageEllipseOutline.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ImageEllipseOutline.vue?vue&type=style&index=0&id=71b17928&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-71b17928\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-41071294\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nimport { PropType, toRef } from 'vue'\nimport { PPTElementOutline } from '@/types/slides'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ImagePolygonOutline',\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\nconst props = __props\n\n\n\nconst {\n outlineWidth,\n outlineStyle,\n outlineColor,\n} = useElementOutline(toRef(props, 'outline'))\n\nreturn (_ctx: any,_cache: any) => {\n return (__props.outline)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n class: \"image-polygon-outline\",\n overflow: \"visible\",\n width: __props.width,\n height: __props.height\n }, [\n _createElementVNode(\"path\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n fill: \"transparent\",\n d: __props.createPath(__props.width, __props.height),\n stroke: _unref(outlineColor),\n \"stroke-width\": _unref(outlineWidth),\n \"stroke-dasharray\": _unref(outlineStyle) === 'dashed' ? '10 6' : '0 0'\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./ImagePolygonOutline.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ImagePolygonOutline.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ImagePolygonOutline.vue?vue&type=style&index=0&id=41071294&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-41071294\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"image-outline\" }\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst clip = computed(() => props.elementInfo.clip)\nconst { clipShape } = useClipImage(clip)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(clipShape).type === 'rect')\n ? (_openBlock(), _createBlock(ImageRectOutline, {\n key: 0,\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n radius: _unref(clipShape).radius,\n outline: __props.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"radius\", \"outline\"]))\n : (_unref(clipShape).type === 'ellipse')\n ? (_openBlock(), _createBlock(ImageEllipseOutline, {\n key: 1,\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n outline: __props.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]))\n : (_unref(clipShape).type === 'polygon')\n ? (_openBlock(), _createBlock(ImagePolygonOutline, {\n key: 2,\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n outline: __props.elementInfo.outline,\n createPath: _unref(clipShape).createPath\n }, null, 8, [\"width\", \"height\", \"outline\", \"createPath\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-3e0199ec\"),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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ImageClipHandler',\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 emits: [\"clip\"],\n setup(__props, { emit }: { emit: ({\n (event: 'clip', payload: ImageClipedEmitData | null): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst { canvasScale } = storeToRefs(useMainStore())\nconst { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n\nconst clipWrapperPositionStyle = ref({\n top: '0',\n left: '0',\n})\nconst isSettingClipRange = ref(false)\nconst currentRange = ref(null)\n\n// 获取裁剪区域信息(裁剪区域占原图的宽高比例,处在原图中的位置)\nconst 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// 底层图片位置大小(遮罩区域图片)\nconst 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// 底层图片位置大小样式(遮罩区域图片)\nconst 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// 顶层图片容器位置大小(裁剪高亮区域)\nconst topImgWrapperPosition = ref({\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n})\n\n// 顶层图片容器位置大小样式(裁剪高亮区域)\nconst 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// 顶层图片位置大小样式(裁剪区域图片)\nconst 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// 初始化裁剪位置信息\nconst 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// 执行裁剪:计算裁剪后的图片位置大小和裁剪信息,并将数据同步出去\nconst 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// 快捷键监听:回车确认裁剪\nconst keyboardListener = (e: KeyboardEvent) => {\n const key = e.key.toUpperCase()\n if (key === KEYS.ENTER) handleClip()\n}\n\nonMounted(() => {\n initClipPosition()\n document.addEventListener('keydown', keyboardListener)\n})\nonUnmounted(() => {\n document.removeEventListener('keydown', keyboardListener)\n})\n\n// 计算并更新裁剪区域范围数据\nconst 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// 移动裁剪区域\nconst 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// 缩放裁剪区域\nconst 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\nconst 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\nconst cornerPoint = [\n OperateResizeHandlers.LEFT_TOP,\n OperateResizeHandlers.RIGHT_TOP,\n OperateResizeHandlers.LEFT_BOTTOM,\n OperateResizeHandlers.RIGHT_BOTTOM,\n]\nconst edgePoints = [\n OperateResizeHandlers.TOP,\n OperateResizeHandlers.BOTTOM,\n OperateResizeHandlers.LEFT,\n OperateResizeHandlers.RIGHT,\n]\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_click_outside = _resolveDirective(\"click-outside\")!\n\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"image-clip-handler\",\n style: _normalizeStyle(clipWrapperPositionStyle.value)\n }, [\n _createElementVNode(\"img\", {\n class: \"bottom-img\",\n src: __props.src,\n draggable: false,\n alt: \"\",\n style: _normalizeStyle(_unref(bottomImgPositionStyle))\n }, null, 12, _hoisted_1),\n _createElementVNode(\"div\", {\n class: \"top-image-content\",\n style: _normalizeStyle({\n ..._unref(topImgWrapperPositionStyle),\n clipPath: __props.clipPath,\n })\n }, [\n _createElementVNode(\"img\", {\n class: \"top-img\",\n src: __props.src,\n draggable: false,\n alt: \"\",\n style: _normalizeStyle(_unref(topImgPositionStyle))\n }, null, 12, _hoisted_2)\n ], 4),\n _createElementVNode(\"div\", {\n class: \"operate\",\n style: _normalizeStyle(_unref(topImgWrapperPositionStyle)),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers($event => moveClipRange($event), [\"stop\"]))\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(cornerPoint, (point) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass(['clip-point', point, _unref(rotateClassName)]),\n key: point,\n onMousedown: _withModifiers($event => scaleClipRange($event, point), [\"stop\"])\n }, _hoisted_5, 42, _hoisted_3)\n }), 64)),\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(edgePoints, (point) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass(['clip-point', point, _unref(rotateClassName)]),\n key: point,\n onMousedown: _withModifiers($event => scaleClipRange($event, point), [\"stop\"])\n }, _hoisted_8, 42, _hoisted_6)\n }), 64))\n ], 36)\n ], 4)), [\n [_directive_click_outside, handleClip]\n ])\n}\n}\n\n})","import script from \"./ImageClipHandler.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ImageClipHandler.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ImageClipHandler.vue?vue&type=style&index=0&id=3e0199ec&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3e0199ec\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-30dc7050\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"src\"]\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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\nconst props = __props\n\n\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { clipingImageElementId } = storeToRefs(mainStore)\n\nconst isCliping = computed(() => clipingImageElementId.value === props.elementInfo.id)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst flipH = computed(() => props.elementInfo.flipH)\nconst flipV = computed(() => props.elementInfo.flipV)\nconst { flipStyle } = useElementFlip(flipH, flipV)\n\nconst clip = computed(() => props.elementInfo.clip)\nconst { clipShape, imgPosition } = useClipImage(clip)\n\nconst filters = computed(() => props.elementInfo.filters)\nconst { filter } = useFilter(filters)\n\nconst handleSelectElement = (e: MouseEvent | TouchEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n props.selectElement(e, props.elementInfo)\n}\n\nconst handleClip = (data: ImageClipedEmitData | null) => {\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\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-image\", { 'lock': __props.elementInfo.lock }]),\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n height: __props.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n (_unref(isCliping))\n ? (_openBlock(), _createBlock(ImageClipHandler, {\n key: 0,\n src: __props.elementInfo.src,\n clipData: __props.elementInfo.clip,\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n top: __props.elementInfo.top,\n left: __props.elementInfo.left,\n rotate: __props.elementInfo.rotate,\n clipPath: _unref(clipShape).style,\n onClip: _cache[0] || (_cache[0] = range => 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: _unref(shadowStyle) ? `drop-shadow(${_unref(shadowStyle)})` : '',\n transform: _unref(flipStyle),\n }),\n onMousedown: _cache[2] || (_cache[2] = $event => handleSelectElement($event)),\n onTouchstart: _cache[3] || (_cache[3] = $event => handleSelectElement($event))\n }, [\n _createVNode(ImageOutline, { elementInfo: __props.elementInfo }, null, 8, [\"elementInfo\"]),\n _createElementVNode(\"div\", {\n class: \"image-content\",\n style: _normalizeStyle({ clipPath: _unref(clipShape).style })\n }, [\n _createElementVNode(\"img\", {\n src: __props.elementInfo.src,\n draggable: false,\n style: _normalizeStyle({\n top: _unref(imgPosition).top,\n left: _unref(imgPosition).left,\n width: _unref(imgPosition).width,\n height: _unref(imgPosition).height,\n filter: _unref(filter),\n }),\n onDragstart: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"prevent\"])),\n alt: \"\"\n }, null, 44, _hoisted_1)\n ], 4)\n ], 36)), [\n [_directive_contextmenu, __props.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=30dc7050&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-30dc7050\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-61b7d06a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nimport { PropType, toRef } from 'vue'\nimport { PPTElementOutline } from '@/types/slides'\n\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementOutline',\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\nconst props = __props\n\n\n\nconst {\n outlineWidth,\n outlineStyle,\n outlineColor,\n} = useElementOutline(toRef(props, 'outline'))\n\nreturn (_ctx: any,_cache: any) => {\n return (__props.outline)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n class: \"element-outline\",\n overflow: \"visible\",\n width: __props.width,\n height: __props.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${__props.width},0 L${__props.width},${__props.height} L0,${__props.height} Z`,\n stroke: _unref(outlineColor),\n \"stroke-width\": _unref(outlineWidth),\n \"stroke-dasharray\": _unref(outlineStyle) === 'dashed' ? '10 6' : '0 0'\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./ElementOutline.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementOutline.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementOutline.vue?vue&type=style&index=0&id=61b7d06a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-61b7d06a\"]])\n\nexport default __exports__","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}","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ProsemirrorEditor',\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 emits: [\"update\", \"focus\", \"blur\"],\n setup(__props, { emit }: { emit: ({\n (event: 'update', payload: string): void\n (event: 'focus'): void\n (event: 'blur'): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst mainStore = useMainStore()\nconst { handleElementId } = storeToRefs(mainStore)\n\nconst editorViewRef = ref()\nlet editorView: EditorView\n\n// 富文本的各种交互事件监听:\n// 聚焦时取消全局快捷键事件\n// 输入文字时同步数据到vuex\n// 点击鼠标和键盘时同步富文本状态到工具栏\nconst handleInput = debounce(function() {\n emit('update', editorView.dom.innerHTML)\n}, 300, { trailing: true })\n\nconst handleFocus = () => {\n mainStore.setDisableHotkeysState(true)\n emit('focus')\n}\n\nconst handleBlur = () => {\n mainStore.setDisableHotkeysState(false)\n emit('blur')\n}\n\nconst 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\nconst handleKeydown = () => {\n handleInput()\n handleClick()\n}\n\n// 将富文本内容同步到DOM\nconst textContent = computed(() => props.value)\nwatch(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// 打开/关闭编辑器的编辑模式\nwatch(() => props.editable, () => {\n editorView.setProps({ editable: () => props.editable })\n})\n\n// Prosemirror编辑器的初始化和卸载\nonMounted(() => {\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})\nonUnmounted(() => {\n editorView && editorView.destroy()\n})\n\n// 执行富文本命令(可以是一个或多个)\n// 部分命令在执行前先判断当前选区是否为空,如果选区为空先进行全选操作\nconst 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\nemitter.on(EmitterEvents.RICH_TEXT_COMMAND, execCommand)\nonUnmounted(() => {\n emitter.off(EmitterEvents.RICH_TEXT_COMMAND, execCommand)\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"prosemirror-editor\",\n ref_key: \"editorViewRef\",\n ref: editorViewRef\n }, null, 512))\n}\n}\n\n})","import script from \"./ProsemirrorEditor.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ProsemirrorEditor.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ProsemirrorEditor.vue?vue&type=style&index=0&id=01b8c64e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-01b8c64e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-7135a611\"),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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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\nconst props = __props\n\n\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { handleElementId, isScaling } = storeToRefs(mainStore)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst elementRef = ref()\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst 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// 如果高度变化时正处在缩放操作中,则等待缩放操作结束后再更新\nconst realHeightCache = ref(-1)\n\nwatch(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\nconst 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}\nconst resizeObserver = new ResizeObserver(updateTextElementHeight)\n\nonMounted(() => {\n if (elementRef.value) resizeObserver.observe(elementRef.value)\n})\nonUnmounted(() => {\n if (elementRef.value) resizeObserver.unobserve(elementRef.value)\n})\n\nconst updateContent = (content: string) => {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { content },\n })\n \n addHistorySnapshot()\n}\n\nconst checkEmptyText = () => {\n const pureText = props.elementInfo.content.replaceAll(/<[^>]+>/g, '')\n if (!pureText) slidesStore.deleteElement(props.elementInfo.id)\n}\n\nconst isHandleElement = computed(() => handleElementId.value === props.elementInfo.id)\nwatch(isHandleElement, () => {\n if (!isHandleElement.value) checkEmptyText()\n})\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-text\", { 'lock': __props.elementInfo.lock }]),\n ref_key: \"elementRef\",\n ref: elementRef,\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n backgroundColor: __props.elementInfo.fill,\n opacity: __props.elementInfo.opacity,\n textShadow: _unref(shadowStyle),\n lineHeight: __props.elementInfo.lineHeight,\n letterSpacing: (__props.elementInfo.wordSpace || 0) + 'px',\n color: __props.elementInfo.defaultColor,\n fontFamily: __props.elementInfo.defaultFontName,\n }),\n onMousedown: _cache[3] || (_cache[3] = $event => handleSelectElement($event)),\n onTouchstart: _cache[4] || (_cache[4] = $event => handleSelectElement($event))\n }, [\n _createVNode(ElementOutline, {\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n outline: __props.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]),\n _createVNode(ProsemirrorEditor, {\n class: \"text\",\n elementId: __props.elementInfo.id,\n defaultColor: __props.elementInfo.defaultColor,\n defaultFontName: __props.elementInfo.defaultFontName,\n editable: !__props.elementInfo.lock,\n value: __props.elementInfo.content,\n style: _normalizeStyle({\n '--textIndent': `${__props.elementInfo.textIndent || 0}px`,\n '--paragraphSpace': `${__props.elementInfo.paragraphSpace === undefined ? 5 : __props.elementInfo.paragraphSpace}px`,\n }),\n onUpdate: _cache[0] || (_cache[0] = value => updateContent(value)),\n onMousedown: _cache[1] || (_cache[1] = $event => handleSelectElement($event, false)),\n onTouchstart: _cache[2] || (_cache[2] = $event => handleSelectElement($event))\n }, null, 8, [\"elementId\", \"defaultColor\", \"defaultFontName\", \"editable\", \"value\", \"style\"]),\n _hoisted_1,\n _hoisted_2\n ], 36)), [\n [_directive_contextmenu, __props.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=7135a611&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7135a611\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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\nimport { PropType } from 'vue'\r\n\r\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'GradientDefs',\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},\n setup(__props) {\n\r\n\r\n\nreturn (_ctx: any,_cache: any) => {\n return (__props.type === 'linear')\n ? (_openBlock(), _createElementBlock(\"linearGradient\", {\n key: 0,\n id: __props.id,\n x1: \"0%\",\n y1: \"0%\",\n x2: \"100%\",\n y2: \"0%\",\n gradientTransform: `rotate(${__props.rotate},0.5,0.5)`\n }, [\n _createElementVNode(\"stop\", {\n offset: \"0%\",\n \"stop-color\": __props.color1\n }, null, 8, _hoisted_2),\n _createElementVNode(\"stop\", {\n offset: \"100%\",\n \"stop-color\": __props.color2\n }, null, 8, _hoisted_3)\n ], 8, _hoisted_1))\n : (_openBlock(), _createElementBlock(\"radialGradient\", {\n key: 1,\n id: __props.id\n }, [\n _createElementVNode(\"stop\", {\n offset: \"0%\",\n \"stop-color\": __props.color1\n }, null, 8, _hoisted_5),\n _createElementVNode(\"stop\", {\n offset: \"100%\",\n \"stop-color\": __props.color2\n }, null, 8, _hoisted_6)\n ], 8, _hoisted_4))\n}\n}\n\n})","import script from \"./GradientDefs.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./GradientDefs.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-4e9cdb03\"),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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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\nconst props = __props\n\n\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { handleElementId } = storeToRefs(mainStore)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst 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\nconst outline = computed(() => props.elementInfo.outline)\nconst { outlineWidth, outlineStyle, outlineColor } = useElementOutline(outline)\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst flipH = computed(() => props.elementInfo.flipH)\nconst flipV = computed(() => props.elementInfo.flipV)\nconst { flipStyle } = useElementFlip(flipH, flipV)\n\nconst editable = ref(false)\n\nwatch(handleElementId, () => {\n if (handleElementId.value !== props.elementInfo.id) {\n if (editable.value) editable.value = false\n }\n})\n\nconst 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\nconst 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\nconst 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\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-shape\", { 'lock': __props.elementInfo.lock }]),\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n height: __props.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n opacity: __props.elementInfo.opacity,\n filter: _unref(shadowStyle) ? `drop-shadow(${_unref(shadowStyle)})` : '',\n transform: _unref(flipStyle),\n color: _unref(text).defaultColor,\n fontFamily: _unref(text).defaultFontName,\n }),\n onMousedown: _cache[4] || (_cache[4] = $event => handleSelectElement($event)),\n onTouchstart: _cache[5] || (_cache[5] = $event => handleSelectElement($event)),\n onDblclick: _cache[6] || (_cache[6] = ($event: any) => (editable.value = true))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: __props.elementInfo.width,\n height: __props.elementInfo.height\n }, [\n (__props.elementInfo.gradient)\n ? (_openBlock(), _createElementBlock(\"defs\", _hoisted_2, [\n _createVNode(GradientDefs, {\n id: `editabel-gradient-${__props.elementInfo.id}`,\n type: __props.elementInfo.gradient.type,\n color1: __props.elementInfo.gradient.color[0],\n color2: __props.elementInfo.gradient.color[1],\n rotate: __props.elementInfo.gradient.rotate\n }, null, 8, [\"id\", \"type\", \"color1\", \"color2\", \"rotate\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"g\", {\n transform: `scale(${__props.elementInfo.width / __props.elementInfo.viewBox[0]}, ${__props.elementInfo.height / __props.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: __props.elementInfo.path,\n fill: __props.elementInfo.gradient ? `url(#editabel-gradient-${__props.elementInfo.id})` : __props.elementInfo.fill,\n stroke: _unref(outlineColor),\n \"stroke-width\": _unref(outlineWidth),\n \"stroke-dasharray\": _unref(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\", [_unref(text).align, { 'editable': editable.value || _unref(text).content }]])\n }, [\n (editable.value || _unref(text).content)\n ? (_openBlock(), _createBlock(ProsemirrorEditor, {\n key: 0,\n elementId: __props.elementInfo.id,\n defaultColor: _unref(text).defaultColor,\n defaultFontName: _unref(text).defaultFontName,\n editable: !__props.elementInfo.lock,\n autoFocus: true,\n value: _unref(text).content,\n onUpdate: _cache[0] || (_cache[0] = value => updateText(value)),\n onBlur: _cache[1] || (_cache[1] = ($event: any) => (checkEmptyText())),\n onMousedown: _cache[2] || (_cache[2] = $event => handleSelectElement($event, false)),\n onTouchstart: _cache[3] || (_cache[3] = $event => handleSelectElement($event, false))\n }, null, 8, [\"elementId\", \"defaultColor\", \"defaultFontName\", \"editable\", \"value\"]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ], 36)), [\n [_directive_contextmenu, __props.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=4e9cdb03&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4e9cdb03\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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\nimport { computed, PropType } from 'vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LinePointMarker',\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\nconst props = __props\n\n\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\nconst path = computed(() => pathMap[props.type])\nconst rotate = computed(() => rotateMap[`${props.type}-${props.position}`] || 0)\nconst size = computed(() => props.baseSize < 2 ? 2 : props.baseSize)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"marker\", {\n id: `${__props.id}-${__props.type}-${__props.position}`,\n markerUnits: \"userSpaceOnUse\",\n orient: \"auto\",\n markerWidth: _unref(size) * 3,\n markerHeight: _unref(size) * 3,\n refX: _unref(size) * 1.5,\n refY: _unref(size) * 1.5\n }, [\n _createElementVNode(\"path\", {\n d: _unref(path),\n fill: __props.color,\n transform: `scale(${_unref(size) * 0.3}, ${_unref(size) * 0.3}) rotate(${_unref(rotate)}, 5, 5)`\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n}\n}\n\n})","import script from \"./LinePointMarker.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LinePointMarker.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-6550e504\"),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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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\nconst props = __props\n\n\n\nconst handleSelectElement = (e: MouseEvent | TouchEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n}\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst svgWidth = computed(() => {\n const width = Math.abs(props.elementInfo.start[0] - props.elementInfo.end[0])\n return width < 24 ? 24 : width\n})\nconst svgHeight = computed(() => {\n const height = Math.abs(props.elementInfo.start[1] - props.elementInfo.end[1])\n return height < 24 ? 24 : height\n})\n\nconst lineDashArray = computed(() => props.elementInfo.style === 'dashed' ? '10 6' : '0 0')\n\nconst path = computed(() => {\n return getLineElementPath(props.elementInfo)\n})\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-shape\", { 'lock': __props.elementInfo.lock }]),\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({ filter: _unref(shadowStyle) ? `drop-shadow(${_unref(shadowStyle)})` : '' }),\n onMousedown: _cache[0] || (_cache[0] = $event => handleSelectElement($event)),\n onTouchstart: _cache[1] || (_cache[1] = $event => handleSelectElement($event))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: _unref(svgWidth),\n height: _unref(svgHeight)\n }, [\n _createElementVNode(\"defs\", null, [\n (__props.elementInfo.points[0])\n ? (_openBlock(), _createBlock(LinePointMarker, {\n key: 0,\n id: __props.elementInfo.id,\n position: \"start\",\n type: __props.elementInfo.points[0],\n color: __props.elementInfo.color,\n baseSize: __props.elementInfo.width\n }, null, 8, [\"id\", \"type\", \"color\", \"baseSize\"]))\n : _createCommentVNode(\"\", true),\n (__props.elementInfo.points[1])\n ? (_openBlock(), _createBlock(LinePointMarker, {\n key: 1,\n id: __props.elementInfo.id,\n position: \"end\",\n type: __props.elementInfo.points[1],\n color: __props.elementInfo.color,\n baseSize: __props.elementInfo.width\n }, null, 8, [\"id\", \"type\", \"color\", \"baseSize\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"path\", {\n class: \"line-point\",\n d: _unref(path),\n stroke: __props.elementInfo.color,\n \"stroke-width\": __props.elementInfo.width,\n \"stroke-dasharray\": _unref(lineDashArray),\n fill: \"none\",\n \"marker-start\": __props.elementInfo.points[0] ? `url(#${__props.elementInfo.id}-${__props.elementInfo.points[0]}-start)` : '',\n \"marker-end\": __props.elementInfo.points[1] ? `url(#${__props.elementInfo.id}-${__props.elementInfo.points[1]}-end)` : ''\n }, null, 8, _hoisted_2),\n _withDirectives(_createElementVNode(\"path\", {\n class: \"line-path\",\n d: _unref(path),\n stroke: \"transparent\",\n \"stroke-width\": \"20\",\n fill: \"none\"\n }, null, 8, _hoisted_3), [\n [_directive_contextmenu, __props.contextmenus]\n ])\n ], 8, _hoisted_1))\n ], 36)\n ], 6))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=6550e504&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6550e504\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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\nimport { computed, 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\n\nexport default /*#__PURE__*/_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\nconst props = __props\n\n\n\nconst chartRef = ref()\nconst slideScale = inject(injectKeySlideScale) || ref(1)\n\nlet chart: IChartistLineChart | IChartistBarChart | IChartistPieChart | undefined\n\nconst chartHeight = computed(() => {\n if (props.legend) return props.height - 20\n return props.height\n})\n\nconst 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\nconst 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\nconst updateChart = () => {\n if (!chart) {\n renderChart()\n return\n }\n const { data, options } = getDataAndOptions()\n chart.update(data, options)\n}\n\nwatch([\n () => props.width,\n () => props.height,\n () => props.data,\n () => props.options,\n slideScale,\n], updateChart)\n\nonMounted(renderChart)\n\nconst 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,剩余部分获取最后一个主题色的相近颜色作为配色\nconst 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\nwatch(themeColors, updateTheme)\nonMounted(updateTheme)\n\n// 更新网格颜色,包括坐标的文字部分\nconst updateGridColor = () => {\n if (!chartRef.value) return\n if (props.gridColor) chartRef.value.style.setProperty(`--grid-color`, props.gridColor)\n}\n\nwatch(() => props.gridColor, updateGridColor)\nonMounted(updateGridColor)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"chart\",\n style: _normalizeStyle({ flexDirection: __props.legend === 'top' ? 'column-reverse' : 'column' })\n }, [\n _createElementVNode(\"div\", {\n class: \"chart-content\",\n ref_key: \"chartRef\",\n ref: chartRef,\n style: _normalizeStyle({\n width: __props.width + 'px',\n height: _unref(chartHeight) + 'px',\n transform: `scale(${1 / _unref(slideScale)})`,\n })\n }, null, 4),\n (__props.legend)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"legends\",\n style: _normalizeStyle({ transform: `scale(${1 / _unref(slideScale)})` })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(__props.legends, (legend, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"legend\",\n key: index,\n style: _normalizeStyle({ color: __props.gridColor })\n }, [\n _createElementVNode(\"div\", {\n class: \"block\",\n style: _normalizeStyle({ backgroundColor: _unref(themeColors)[index] })\n }, null, 4),\n _createTextVNode(\" \" + _toDisplayString(legend), 1)\n ], 4))\n }), 128))\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 4))\n}\n}\n\n})","import script from \"./Chart.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Chart.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Chart.vue?vue&type=style&index=0&id=1aa2357d&lang=scss&scoped=true\"\nimport \"./Chart.vue?vue&type=style&index=1&id=1aa2357d&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, [['__scopeId',\"data-v-1aa2357d\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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},\n setup(__props) {\n\nconst props = __props\n\r\n\r\n\r\nconst 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\nconst openDataEditor = () => {\r\n emitter.emit(EmitterEvents.OPEN_CHART_DATA_EDITOR)\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-chart\", { 'lock': __props.elementInfo.lock }]),\n style: _normalizeStyle({\r\n top: __props.elementInfo.top + 'px',\r\n left: __props.elementInfo.left + 'px',\r\n width: __props.elementInfo.width + 'px',\r\n height: __props.elementInfo.height + 'px',\r\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\r\n backgroundColor: __props.elementInfo.fill,\r\n }),\n onMousedown: _cache[0] || (_cache[0] = $event => handleSelectElement($event)),\n onTouchstart: _cache[1] || (_cache[1] = $event => handleSelectElement($event)),\n onDblclick: _cache[2] || (_cache[2] = ($event: any) => (openDataEditor()))\n }, [\n _createVNode(ElementOutline, {\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n outline: __props.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]),\n _createVNode(Chart, {\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n type: __props.elementInfo.chartType,\n data: __props.elementInfo.data,\n options: __props.elementInfo.options,\n themeColor: __props.elementInfo.themeColor,\n gridColor: __props.elementInfo.gridColor,\n legends: __props.elementInfo.data.legends,\n legend: __props.elementInfo.legend || ''\n }, null, 8, [\"width\", \"height\", \"type\", \"data\", \"options\", \"themeColor\", \"gridColor\", \"legends\", \"legend\"])\n ], 36)), [\n [_directive_contextmenu, __props.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=f3c03862&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f3c03862\"]])\n\nexport default __exports__","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 { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-cdb58a1e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"innerHTML\"]\n\nimport { onUnmounted, ref, watch } from 'vue'\nimport { pasteCustomClipboardString, pasteExcelClipboardString } from '@/utils/clipboard'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'CustomTextarea',\n props: {\n value: {\n type: String,\n default: '',\n },\n contenteditable: {\n type: [Boolean, String],\n default: false,\n },\n},\n emits: [\"updateValue\", \"insertExcelData\"],\n setup(__props, { emit }: { emit: ({\n (event: 'updateValue', payload: string): void\n (event: 'insertExcelData', payload: string[][]): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst textareaRef = ref()\nconst text = ref('')\nconst isFocus = ref(false)\n\n// 自定义v-modal,同步数据\n// 当文本框聚焦时,不执行数据同步\nwatch(() => 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\nconst handleInput = () => {\n if (!textareaRef.value) return\n const text = textareaRef.value.innerHTML\n emit('updateValue', text)\n}\n\n// 聚焦时更新焦点标记,并监听粘贴事件\nconst 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// 失焦时更新焦点标记,清除粘贴事件监听\nconst handleBlur = () => {\n isFocus.value = false\n if (textareaRef.value) textareaRef.value.onpaste = null\n}\n\n// 清除粘贴事件监听\nonUnmounted(() => {\n if (textareaRef.value) textareaRef.value.onpaste = null\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"custom-textarea\",\n ref_key: \"textareaRef\",\n ref: textareaRef,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onInput: _cache[0] || (_cache[0] = ($event: any) => (handleInput())),\n innerHTML: text.value\n }, null, 40, _hoisted_1))\n}\n}\n\n})","import script from \"./CustomTextarea.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./CustomTextarea.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./CustomTextarea.vue?vue&type=style&index=0&id=cdb58a1e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-cdb58a1e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, 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-bae8c794\"),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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'EditableTable',\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 emits: [\"change\", \"changeColWidths\", \"changeSelectedCells\"],\n setup(__props, { emit }: { emit: ({\n (event: 'change', payload: TableCell[][]): void\n (event: 'changeColWidths', payload: number[]): void\n (event: 'changeSelectedCells', payload: string[]): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst { canvasScale } = storeToRefs(useMainStore())\n \nconst isStartSelect = ref(false)\nconst startCell = ref([])\nconst endCell = ref([])\n\nconst tableCells = computed({\n get() {\n return props.data\n },\n set(newData) {\n emit('change', newData)\n },\n})\n\n// 主题辅助色\nconst theme = computed(() => props.theme)\nconst { subThemeColor } = useSubThemeColor(theme)\n\n// 计算表格每一列的列宽和总宽度\nconst colSizeList = ref([])\nconst totalWidth = computed(() => colSizeList.value.reduce((a, b) => a + b))\nwatch([\n () => props.colWidths,\n () => props.width,\n], () => {\n colSizeList.value = props.colWidths.map(item => item * props.width)\n}, { immediate: true })\n\n// 清除全部单元格的选中状态\n// 表格处于不可编辑状态时也需要清除\nconst removeSelectedCells = () => {\n startCell.value = []\n endCell.value = []\n}\n\nwatch(() => props.editable, () => {\n if (!props.editable) removeSelectedCells()\n})\n\n// 用于拖拽列宽的操作节点位置\nconst 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// 无效的单元格位置(被合并的单元格位置)集合\nconst cells = computed(() => props.data)\nconst { hideCells } = useHideCells(cells)\n\n// 当前选中的单元格集合\nconst 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\nwatch(selectedCells, (value, oldValue) => {\n if (isEqual(value, oldValue)) return\n emit('changeSelectedCells', selectedCells.value)\n})\n\n// 当前激活的单元格:当且仅当只有一个选中单元格时,该单元格为激活的单元格\nconst activedCell = computed(() => {\n if (selectedCells.value.length > 1) return null\n return selectedCells.value[0]\n})\n\n// 当前选中的单元格位置范围\nconst 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// 设置选中单元格状态(鼠标点击或拖选)\nconst handleMouseup = () => isStartSelect.value = false\n\nconst 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\nconst handleCellMouseenter = (rowIndex: number, colIndex: number) => {\n if (!isStartSelect.value) return\n endCell.value = [rowIndex, colIndex]\n}\n\nonMounted(() => {\n document.addEventListener('mouseup', handleMouseup)\n})\nonUnmounted(() => {\n document.removeEventListener('mouseup', handleMouseup)\n})\n\n// 判断某位置是否为无效单元格(被合并掉的位置)\nconst isHideCell = (rowIndex: number, colIndex: number) => hideCells.value.includes(`${rowIndex}_${colIndex}`)\n\n// 选中指定的列\nconst selectCol = (index: number) => {\n const maxRow = tableCells.value.length - 1\n startCell.value = [0, index]\n endCell.value = [maxRow, index]\n}\n\n// 选中指定的行\nconst selectRow = (index: number) => {\n const maxCol = tableCells.value[index].length - 1\n startCell.value = [index, 0]\n endCell.value = [index, maxCol]\n}\n\n// 选中全部单元格\nconst 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// 删除一行\nconst 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// 删除一列\nconst 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// 插入一行\nconst 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// 插入一列\nconst 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// 填充指定的行/列数\nconst 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// 合并单元格\nconst 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// 拆分单元格\nconst 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// 鼠标拖拽调整列宽\nconst 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// 清空选中单元格内的文字\nconst 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// 当前行右边无单元格(已处在行末),且不存在下一行(已处在最后一行)时,新建一行并将焦点移动至下一行行首\nconst 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// 表格快捷键监听\nconst 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\nonMounted(() => {\n document.addEventListener('keydown', keydownListener)\n})\nonUnmounted(() => {\n document.removeEventListener('keydown', keydownListener)\n})\n\n// 单元格文字输入时更新表格数据\nconst 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的数据,表格的行/列数不够时自动补足\nconst 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// 获取有效的单元格(排除掉被合并的单元格)\nconst 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\nconst 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// 必须单选且所选单元格为合并单元格才可以拆分\nconst 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\nconst 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\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"editable-table\",\n style: _normalizeStyle({ width: _unref(totalWidth) + 'px' })\n }, [\n (__props.editable)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(dragLinePosition), (pos, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"drag-line\",\n key: index,\n style: _normalizeStyle({ left: pos + 'px' }),\n onMousedown: $event => handleMousedownColHandler($event, index)\n }, null, 44, _hoisted_2))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"table\", {\n class: _normalizeClass({\n 'theme': _unref(theme),\n 'row-header': _unref(theme)?.rowHeader,\n 'row-footer': _unref(theme)?.rowFooter,\n 'col-header': _unref(theme)?.colHeader,\n 'col-footer': _unref(theme)?.colFooter,\n }),\n style: _normalizeStyle(`--themeColor: ${_unref(theme)?.color}; --subThemeColor1: ${_unref(subThemeColor)[0]}; --subThemeColor2: ${_unref(subThemeColor)[1]}`)\n }, [\n _createElementVNode(\"colgroup\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(colSizeList.value, (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(_unref(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': _unref(selectedCells).includes(`${rowIndex}_${colIndex}`) && _unref(selectedCells).length > 1,\n 'active': _unref(activedCell) === `${rowIndex}_${colIndex}`,\n }]),\n style: _normalizeStyle({\n borderStyle: __props.outline.style,\n borderColor: __props.outline.color,\n borderWidth: __props.outline.width + 'px',\n ..._unref(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 => handleCellMousedown($event, rowIndex, colIndex),\n onMouseenter: ($event: any) => (handleCellMouseenter(rowIndex, colIndex))\n }, [\n (_unref(activedCell) === `${rowIndex}_${colIndex}`)\n ? (_openBlock(), _createBlock(CustomTextarea, {\n key: 0,\n class: _normalizeClass([\"cell-text\", { 'active': _unref(activedCell) === `${rowIndex}_${colIndex}` }]),\n value: cell.text,\n onUpdateValue: value => _unref(handleInput)(value, rowIndex, colIndex),\n onInsertExcelData: value => insertExcelData(value, rowIndex, colIndex)\n }, null, 8, [\"class\", \"value\", \"onUpdateValue\", \"onInsertExcelData\"]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"cell-text\",\n innerHTML: _unref(formatText)(cell.text)\n }, null, 8, _hoisted_5))\n ], 46, _hoisted_4)), [\n [_vShow, !_unref(hideCells).includes(`${rowIndex}_${colIndex}`)],\n [_directive_contextmenu, (el) => contextmenus(el)]\n ])\n }), 128))\n ]))\n }), 128))\n ])\n ], 6)\n ], 4))\n}\n}\n\n})","import script from \"./EditableTable.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./EditableTable.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./EditableTable.vue?vue&type=style&index=0&id=bae8c794&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-bae8c794\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { withModifiers as _withModifiers, createVNode as _createVNode, unref as _unref, 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-6391c486\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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\nconst props = __props\n\n\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { canvasScale, handleElementId, isScaling } = storeToRefs(mainStore)\n\nconst elementRef = ref()\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst handleSelectElement = (e: MouseEvent | TouchEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n}\n\n// 更新表格的可编辑状态,表格处于编辑状态时需要禁用全局快捷键\nconst editable = ref(false)\n\nwatch(handleElementId, () => {\n if (handleElementId.value !== props.elementInfo.id) editable.value = false\n})\n\nwatch(editable, () => {\n mainStore.setDisableHotkeysState(editable.value)\n})\n\nconst startEdit = () => {\n if (!props.elementInfo.lock) editable.value = true\n}\n\n// 监听表格元素的尺寸变化,当高度变化时,更新高度到vuex\n// 如果高度变化时正处在缩放操作中,则等待缩放操作结束后再更新\nconst realHeightCache = ref(-1)\n\nwatch(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\nconst 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\nconst resizeObserver = new ResizeObserver(updateTableElementHeight)\n\nonMounted(() => {\n if (elementRef.value) resizeObserver.observe(elementRef.value)\n})\nonUnmounted(() => {\n if (elementRef.value) resizeObserver.unobserve(elementRef.value)\n})\n\n// 更新表格内容数据\nconst updateTableCells = (data: TableCell[][]) => {\n slidesStore.updateElement({\n id: props.elementInfo.id, \n props: { data },\n })\n addHistorySnapshot()\n}\n\n// 更新表格的列宽数据\nconst 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// 更新表格当前选中的单元格\nconst updateSelectedCells = (cells: string[]) => {\n nextTick(() => mainStore.setSelectedTableCells(cells))\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-table\", { 'lock': __props.elementInfo.lock }]),\n ref_key: \"elementRef\",\n ref: elementRef,\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(EditableTable, {\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"])),\n data: __props.elementInfo.data,\n width: __props.elementInfo.width,\n colWidths: __props.elementInfo.colWidths,\n outline: __props.elementInfo.outline,\n theme: __props.elementInfo.theme,\n editable: editable.value,\n onChange: _cache[1] || (_cache[1] = data => updateTableCells(data)),\n onChangeColWidths: _cache[2] || (_cache[2] = widths => updateColWidths(widths)),\n onChangeSelectedCells: _cache[3] || (_cache[3] = cells => updateSelectedCells(cells))\n }, null, 8, [\"data\", \"width\", \"colWidths\", \"outline\", \"theme\", \"editable\"]),\n (!editable.value || __props.elementInfo.lock)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"table-mask\", { 'lock': __props.elementInfo.lock }]),\n onDblclick: _cache[4] || (_cache[4] = ($event: any) => (startEdit())),\n onMousedown: _cache[5] || (_cache[5] = $event => handleSelectElement($event)),\n onTouchstart: _cache[6] || (_cache[6] = $event => handleSelectElement($event))\n }, [\n _createElementVNode(\"div\", {\n class: \"mask-tip\",\n style: _normalizeStyle({ transform: `scale(${ 1 / _unref(canvasScale) })` })\n }, \"双击编辑\", 4)\n ], 34))\n : _createCommentVNode(\"\", true)\n ])), [\n [_directive_contextmenu, __props.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=6391c486&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6391c486\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-31390388\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\", \"stroke\", \"stroke-width\"]\nconst _hoisted_2 = [\"transform\"]\nconst _hoisted_3 = [\"d\"]\n\nimport { PropType } from 'vue'\nimport { PPTLatexElement } from '@/types/slides'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport emitter, { EmitterEvents } from '@/utils/emitter'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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\nconst props = __props\n\n\n\nconst handleSelectElement = (e: MouseEvent | TouchEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n}\n\nconst openLatexEditor = () => {\n emitter.emit(EmitterEvents.OPEN_LATEX_EDITOR)\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-latex\", { 'lock': __props.elementInfo.lock }]),\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n height: __props.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n onMousedown: _cache[0] || (_cache[0] = $event => handleSelectElement($event)),\n onTouchstart: _cache[1] || (_cache[1] = $event => handleSelectElement($event)),\n onDblclick: _cache[2] || (_cache[2] = ($event: any) => (openLatexEditor()))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n stroke: __props.elementInfo.color,\n \"stroke-width\": __props.elementInfo.strokeWidth,\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n }, [\n _createElementVNode(\"g\", {\n transform: `scale(${__props.elementInfo.width / __props.elementInfo.viewBox[0]}, ${__props.elementInfo.height / __props.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n d: __props.elementInfo.path\n }, null, 8, _hoisted_3)\n ], 8, _hoisted_2)\n ], 8, _hoisted_1))\n ], 32)), [\n [_directive_contextmenu, __props.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=31390388&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-31390388\"]])\n\nexport default __exports__","/* 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}","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, unref as _unref, 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-2fc4c202\"),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 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_10 = [\n _hoisted_9\n]\nconst _hoisted_11 = { class: \"time\" }\nconst _hoisted_12 = { class: \"ptime\" }\nconst _hoisted_13 = /*#__PURE__*/_createTextVNode(\" / \")\nconst _hoisted_14 = { class: \"dtime\" }\nconst _hoisted_15 = { class: \"icons icons-right\" }\nconst _hoisted_16 = { class: \"speed\" }\nconst _hoisted_17 = { class: \"icon speed-icon\" }\nconst _hoisted_18 = [\"onClick\"]\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"icon-content\" }, \"循环\", -1))\nconst _hoisted_20 = [\n _hoisted_19\n]\nconst _hoisted_21 = { class: \"bar\" }\nconst _hoisted_22 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_23 = [\n _hoisted_22\n]\n\nimport { computed, ref } from 'vue'\nimport useMSE from './useMSE'\nimport { message } from 'ant-design-vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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\nconst props = __props\n\n\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\nconst videoRef = ref()\nconst playBarWrap = ref()\nconst volumeBarRef = ref()\n\nconst volume = ref(0.5)\nconst paused = ref(true)\nconst currentTime = ref(0)\nconst duration = ref(0)\nconst loaded = ref(0)\nconst loop = ref(false)\nconst bezelTransition = ref(false)\nconst playbackRate = ref(1)\n\nconst playBarTimeVisible = ref(false)\nconst playBarTime = ref('00:00')\nconst playBarTimeLeft = ref('0')\n\nconst ptime = computed(() => secondToTime(currentTime.value))\nconst dtime = computed(() => secondToTime(duration.value))\nconst playedBarWidth = computed(() => currentTime.value / duration.value * 100 + '%')\nconst loadedBarWidth = computed(() => loaded.value / duration.value * 100 + '%')\nconst volumeBarWidth = computed(() => volume.value * 100 + '%')\n\nconst speedMenuVisible = ref(false)\nconst 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\nconst 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\nconst play = () => {\n if (!videoRef.value) return\n\n paused.value = false\n videoRef.value.play()\n bezelTransition.value = true\n}\n\nconst pause = () => {\n if (!videoRef.value) return\n\n paused.value = true\n videoRef.value.pause()\n bezelTransition.value = true\n}\n\nconst toggle = () => {\n if (paused.value) play() \n else pause()\n}\n\nconst 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\nconst speed = (rate: number) => {\n if (videoRef.value) videoRef.value.playbackRate = rate\n playbackRate.value = rate\n}\n\nconst handleDurationchange = () => {\n duration.value = videoRef.value?.duration || 0\n}\n\nconst handleTimeupdate = () => {\n currentTime.value = videoRef.value?.currentTime || 0\n}\n\nconst handleEnded = () => {\n if (!loop.value) pause()\n else {\n seek(0)\n play()\n }\n}\n\nconst handleProgress = () => {\n loaded.value = videoRef.value?.buffered.length ? videoRef.value.buffered.end(videoRef.value.buffered.length - 1) : 0\n}\n\nconst handleError = () => message.error('视频加载失败')\n\nconst 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\nconst 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\nconst handleMousedownPlayBar = () => {\n document.addEventListener('mousemove', thumbMove)\n document.addEventListener('touchmove', thumbMove)\n document.addEventListener('mouseup', thumbUp)\n document.addEventListener('touchend', thumbUp)\n}\n\nconst 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)) / 45\n setVolume(percentage)\n}\n\nconst volumeUp = () => {\n document.removeEventListener('mousemove', volumeMove)\n document.removeEventListener('touchmove', volumeMove)\n document.removeEventListener('mouseup', volumeUp)\n document.removeEventListener('touchend', volumeUp)\n}\n\nconst handleMousedownVolumeBar = () => {\n document.addEventListener('mousemove', volumeMove)\n document.addEventListener('touchmove', volumeMove)\n document.addEventListener('mouseup', volumeUp)\n document.addEventListener('touchend', volumeUp)\n}\n\nconst handleClickVolumeBar = (e: MouseEvent) => {\n if (!volumeBarRef.value) return\n const percentage = (e.clientX - getBoundingClientRectViewLeft(volumeBarRef.value)) / 45\n setVolume(percentage)\n}\n\nconst 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\nconst 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\nconst toggleLoop = () => {\n loop.value = !loop.value\n}\n\nconst autoHideControllerTimer = ref(-1)\nconst hideController = ref(false)\nconst 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\nuseMSE(props.src, videoRef)\n\nreturn (_ctx: any,_cache: 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': hideController.value }]),\n style: _normalizeStyle({\n width: __props.width * __props.scale + 'px',\n height: __props.height * __props.scale + 'px',\n transform: `scale(${1 / __props.scale})`,\n }),\n onMousemove: _cache[22] || (_cache[22] = ($event: any) => (autoHideController())),\n onClick: _cache[23] || (_cache[23] = ($event: any) => (autoHideController()))\n }, [\n _createElementVNode(\"div\", {\n class: \"video-wrap\",\n onClick: _cache[8] || (_cache[8] = ($event: any) => (toggle()))\n }, [\n _createElementVNode(\"video\", {\n class: \"video\",\n ref_key: \"videoRef\",\n ref: videoRef,\n src: __props.src,\n poster: __props.poster,\n \"webkit-playsinline\": \"\",\n playsinline: \"\",\n onDurationchange: _cache[0] || (_cache[0] = ($event: any) => (handleDurationchange())),\n onTimeupdate: _cache[1] || (_cache[1] = ($event: any) => (handleTimeupdate())),\n onEnded: _cache[2] || (_cache[2] = ($event: any) => (handleEnded())),\n onProgress: _cache[3] || (_cache[3] = ($event: any) => (handleProgress())),\n onPlay: _cache[4] || (_cache[4] = ($event: any) => (autoHideController())),\n onPause: _cache[5] || (_cache[5] = ($event: any) => (autoHideController())),\n onError: _cache[6] || (_cache[6] = ($event: any) => (handleError()))\n }, null, 40, _hoisted_1),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", {\n class: _normalizeClass([\"bezel-icon\", { 'bezel-transition': bezelTransition.value }]),\n onAnimationend: _cache[7] || (_cache[7] = ($event: any) => (bezelTransition.value = false))\n }, [\n (paused.value)\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) => (toggle()))\n }, [\n _createElementVNode(\"span\", _hoisted_6, [\n (paused.value)\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) => (toggleVolume()))\n }, [\n _createElementVNode(\"span\", _hoisted_8, [\n (volume.value === 0)\n ? (_openBlock(), _createBlock(_component_IconVolumeMute, { key: 0 }))\n : (volume.value === 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) => (handleMousedownVolumeBar())),\n onTouchstart: _cache[12] || (_cache[12] = ($event: any) => (handleMousedownVolumeBar())),\n onClick: _cache[13] || (_cache[13] = $event => handleClickVolumeBar($event))\n }, [\n _createElementVNode(\"div\", {\n class: \"volume-bar\",\n ref_key: \"volumeBarRef\",\n ref: volumeBarRef\n }, [\n _createElementVNode(\"div\", {\n class: \"volume-bar-inner\",\n style: _normalizeStyle({ width: _unref(volumeBarWidth) })\n }, _hoisted_10, 4)\n ], 512)\n ], 32)\n ]),\n _createElementVNode(\"span\", _hoisted_11, [\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_unref(ptime)), 1),\n _hoisted_13,\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_unref(dtime)), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_15, [\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"div\", _hoisted_17, [\n _createElementVNode(\"span\", {\n class: \"icon-content\",\n onClick: _cache[14] || (_cache[14] = ($event: any) => (speedMenuVisible.value = !speedMenuVisible.value))\n }, \"倍速\"),\n (speedMenuVisible.value)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"speed-menu\",\n onMouseleave: _cache[15] || (_cache[15] = ($event: any) => (speedMenuVisible.value = false))\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(speedOptions, (item) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"speed-menu-item\", { 'active': item.value === playbackRate.value }]),\n key: item.label,\n onClick: ($event: any) => (speed(item.value))\n }, _toDisplayString(item.label), 11, _hoisted_18)\n }), 64))\n ], 32))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _createElementVNode(\"div\", {\n class: \"loop\",\n onClick: _cache[16] || (_cache[16] = ($event: any) => (toggleLoop()))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"icon loop-icon\", { 'active': loop.value }])\n }, _hoisted_20, 2)\n ])\n ]),\n _createElementVNode(\"div\", {\n class: \"bar-wrap\",\n ref_key: \"playBarWrap\",\n ref: playBarWrap,\n onMousedown: _cache[17] || (_cache[17] = ($event: any) => (handleMousedownPlayBar())),\n onTouchstart: _cache[18] || (_cache[18] = ($event: any) => (handleMousedownPlayBar())),\n onMousemove: _cache[19] || (_cache[19] = $event => handleMousemovePlayBar($event)),\n onMouseenter: _cache[20] || (_cache[20] = ($event: any) => (playBarTimeVisible.value = true)),\n onMouseleave: _cache[21] || (_cache[21] = ($event: any) => (playBarTimeVisible.value = false))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"bar-time\", { 'hidden': !playBarTimeVisible.value }]),\n style: _normalizeStyle({ left: playBarTimeLeft.value })\n }, _toDisplayString(playBarTime.value), 7),\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"div\", {\n class: \"loaded\",\n style: _normalizeStyle({ width: _unref(loadedBarWidth) })\n }, null, 4),\n _createElementVNode(\"div\", {\n class: \"played\",\n style: _normalizeStyle({ width: _unref(playedBarWidth) })\n }, _hoisted_23, 4)\n ])\n ], 544)\n ])\n ], 38))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=2fc4c202&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, [['__scopeId',\"data-v-2fc4c202\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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\nconst props = __props\n\n\n\nconst { canvasScale } = storeToRefs(useMainStore())\n\nconst 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\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-video\", { 'lock': __props.elementInfo.lock }]),\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n height: __props.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n onMousedown: _cache[2] || (_cache[2] = $event => handleSelectElement($event, false)),\n onTouchstart: _cache[3] || (_cache[3] = $event => handleSelectElement($event, false))\n }, [\n _createVNode(VideoPlayer, {\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n src: __props.elementInfo.src,\n poster: __props.elementInfo.poster,\n scale: _unref(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 => handleSelectElement($event)),\n onTouchstart: _cache[1] || (_cache[1] = $event => handleSelectElement($event))\n }, null, 34)\n }), 64))\n ], 32)), [\n [_directive_contextmenu, __props.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=9d5469c6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-9d5469c6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, unref as _unref, 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-121f3d11\"),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 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_8 = [\n _hoisted_7\n]\nconst _hoisted_9 = { class: \"time\" }\nconst _hoisted_10 = { class: \"ptime\" }\nconst _hoisted_11 = /*#__PURE__*/_createTextVNode(\" / \")\nconst _hoisted_12 = { class: \"dtime\" }\nconst _hoisted_13 = { class: \"bar\" }\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_15 = [\n _hoisted_14\n]\n\nimport { computed, ref } from 'vue'\nimport { message } from 'ant-design-vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AudioPlayer',\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, { expose }) {\n\nconst props = __props\n\n\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\nconst audioRef = ref()\nconst playBarWrap = ref()\nconst volumeBarRef = ref()\n\nconst volume = ref(0.5)\nconst paused = ref(true)\nconst currentTime = ref(0)\nconst duration = ref(0)\nconst loaded = ref(0)\n\nconst playBarTimeVisible = ref(false)\nconst playBarTime = ref('00:00')\nconst playBarTimeLeft = ref('0')\n\nconst ptime = computed(() => secondToTime(currentTime.value))\nconst dtime = computed(() => secondToTime(duration.value))\nconst playedBarWidth = computed(() => currentTime.value / duration.value * 100 + '%')\nconst loadedBarWidth = computed(() => loaded.value / duration.value * 100 + '%')\nconst volumeBarWidth = computed(() => volume.value * 100 + '%')\n\nconst 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\nconst play = () => {\n if (!audioRef.value) return\n\n paused.value = false\n audioRef.value.play()\n}\n\nconst pause = () => {\n if (!audioRef.value) return\n\n paused.value = true\n audioRef.value.pause()\n}\n\nconst toggle = () => {\n if (paused.value) play() \n else pause()\n}\n\nconst 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\nconst handleDurationchange = () => {\n duration.value = audioRef.value?.duration || 0\n}\n\nconst handleTimeupdate = () => {\n currentTime.value = audioRef.value?.currentTime || 0\n}\n\nconst handlePlayed = () => {\n paused.value = false\n}\n\nconst handleEnded = () => {\n if (!props.loop) pause()\n else {\n seek(0)\n play()\n }\n}\n\nconst handleProgress = () => {\n loaded.value = audioRef.value?.buffered.length ? audioRef.value.buffered.end(audioRef.value.buffered.length - 1) : 0\n}\n\nconst handleError = () => message.error('视频加载失败')\n\nconst 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\nconst 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\nconst handleMousedownPlayBar = () => {\n document.addEventListener('mousemove', thumbMove)\n document.addEventListener('touchmove', thumbMove)\n document.addEventListener('mouseup', thumbUp)\n document.addEventListener('touchend', thumbUp)\n}\n\nconst 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)) / 45\n setVolume(percentage)\n}\n\nconst volumeUp = () => {\n document.removeEventListener('mousemove', volumeMove)\n document.removeEventListener('touchmove', volumeMove)\n document.removeEventListener('mouseup', volumeUp)\n document.removeEventListener('touchend', volumeUp)\n}\n\nconst handleMousedownVolumeBar = () => {\n document.addEventListener('mousemove', volumeMove)\n document.addEventListener('touchmove', volumeMove)\n document.addEventListener('mouseup', volumeUp)\n document.addEventListener('touchend', volumeUp)\n}\n\nconst handleClickVolumeBar = (e: MouseEvent) => {\n if (!volumeBarRef.value) return\n const percentage = (e.clientX - getBoundingClientRectViewLeft(volumeBarRef.value)) / 45\n setVolume(percentage)\n}\n\nconst 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\nconst 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\nexpose({\n toggle,\n})\n\nreturn (_ctx: any,_cache: 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 / __props.scale})` })\n }, [\n _createElementVNode(\"audio\", {\n class: \"audio\",\n ref_key: \"audioRef\",\n ref: audioRef,\n src: __props.src,\n autoplay: __props.autoplay,\n onDurationchange: _cache[0] || (_cache[0] = ($event: any) => (handleDurationchange())),\n onTimeupdate: _cache[1] || (_cache[1] = ($event: any) => (handleTimeupdate())),\n onPlay: _cache[2] || (_cache[2] = ($event: any) => (handlePlayed())),\n onEnded: _cache[3] || (_cache[3] = ($event: any) => (handleEnded())),\n onProgress: _cache[4] || (_cache[4] = ($event: any) => (handleProgress())),\n onError: _cache[5] || (_cache[5] = ($event: any) => (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) => (toggle()))\n }, [\n _createElementVNode(\"span\", _hoisted_4, [\n (paused.value)\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) => (toggleVolume()))\n }, [\n _createElementVNode(\"span\", _hoisted_6, [\n (volume.value === 0)\n ? (_openBlock(), _createBlock(_component_IconVolumeMute, { key: 0 }))\n : (volume.value === 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) => (handleMousedownVolumeBar())),\n onTouchstart: _cache[9] || (_cache[9] = ($event: any) => (handleMousedownVolumeBar())),\n onClick: _cache[10] || (_cache[10] = $event => handleClickVolumeBar($event))\n }, [\n _createElementVNode(\"div\", {\n class: \"volume-bar\",\n ref_key: \"volumeBarRef\",\n ref: volumeBarRef\n }, [\n _createElementVNode(\"div\", {\n class: \"volume-bar-inner\",\n style: _normalizeStyle({ width: _unref(volumeBarWidth) })\n }, _hoisted_8, 4)\n ], 512)\n ], 32)\n ])\n ]),\n _createElementVNode(\"span\", _hoisted_9, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_unref(ptime)), 1),\n _hoisted_11,\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_unref(dtime)), 1)\n ]),\n _createElementVNode(\"div\", {\n class: \"bar-wrap\",\n ref_key: \"playBarWrap\",\n ref: playBarWrap,\n onMousedown: _cache[11] || (_cache[11] = ($event: any) => (handleMousedownPlayBar())),\n onTouchstart: _cache[12] || (_cache[12] = ($event: any) => (handleMousedownPlayBar())),\n onMousemove: _cache[13] || (_cache[13] = $event => handleMousemovePlayBar($event)),\n onMouseenter: _cache[14] || (_cache[14] = ($event: any) => (playBarTimeVisible.value = true)),\n onMouseleave: _cache[15] || (_cache[15] = ($event: any) => (playBarTimeVisible.value = false))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"bar-time\", { 'hidden': !playBarTimeVisible.value }]),\n style: _normalizeStyle({ left: playBarTimeLeft.value })\n }, _toDisplayString(playBarTime.value), 7),\n _createElementVNode(\"div\", _hoisted_13, [\n _createElementVNode(\"div\", {\n class: \"loaded\",\n style: _normalizeStyle({ width: _unref(loadedBarWidth) })\n }, null, 4),\n _createElementVNode(\"div\", {\n class: \"played\",\n style: _normalizeStyle({ width: _unref(playedBarWidth) })\n }, _hoisted_15, 4)\n ])\n ], 544)\n ])\n ], 4))\n}\n}\n\n})","import script from \"./AudioPlayer.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./AudioPlayer.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./AudioPlayer.vue?vue&type=style&index=0&id=121f3d11&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, [['__scopeId',\"data-v-121f3d11\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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\nconst props = __props\n\n\n\nconst { canvasScale, handleElementId } = storeToRefs(useMainStore())\nconst { viewportRatio } = storeToRefs(useSlidesStore())\n\nconst audioIconSize = computed(() => {\n return Math.min(props.elementInfo.width, props.elementInfo.height) + 'px'\n})\nconst 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\nconst handleSelectElement = (e: MouseEvent | TouchEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconVolumeNotice = _resolveComponent(\"IconVolumeNotice\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-audio\", { 'lock': __props.elementInfo.lock }]),\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n height: __props.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n onMousedown: _cache[1] || (_cache[1] = $event => handleSelectElement($event)),\n onTouchstart: _cache[2] || (_cache[2] = $event => handleSelectElement($event))\n }, [\n _createVNode(_component_IconVolumeNotice, {\n class: \"audio-icon\",\n style: _normalizeStyle({\n fontSize: _unref(audioIconSize),\n color: __props.elementInfo.color,\n })\n }, null, 8, [\"style\"]),\n (_unref(handleElementId) === __props.elementInfo.id)\n ? (_openBlock(), _createBlock(AudioPlayer, {\n key: 0,\n class: \"audio-player\",\n style: _normalizeStyle({ ..._unref(audioPlayerPosition) }),\n src: __props.elementInfo.src,\n loop: __props.elementInfo.loop,\n scale: _unref(canvasScale),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, null, 8, [\"style\", \"src\", \"loop\", \"scale\"]))\n : _createCommentVNode(\"\", true)\n ], 32)), [\n [_directive_contextmenu, __props.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=001bfbc4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-001bfbc4\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"id\"]\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'EditableElement',\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\nconst props = __props\n\n\n\nconst 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\nconst { orderElement } = useOrderElement()\nconst { alignElementToCanvas } = useAlignElementToCanvas()\nconst { combineElements, uncombineElements } = useCombineElement()\nconst { deleteElement } = useDeleteElement()\nconst { lockElement, unlockElement } = useLockElement()\nconst { copyElement, pasteElement, cutElement } = useCopyAndPasteElement()\nconst { selectAllElement } = useSelectAllElement()\n\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"editable-element\",\n ref: \"elementRef\",\n id: `editable-element-${__props.elementInfo.id}`,\n style: _normalizeStyle({\n zIndex: __props.elementIndex,\n })\n }, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_unref(currentElementComponent)), {\n elementInfo: __props.elementInfo,\n selectElement: __props.selectElement,\n contextmenus: contextmenus\n }, null, 8, [\"elementInfo\", \"selectElement\"]))\n ], 12, _hoisted_1))\n}\n}\n\n})","import script from \"./EditableElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./EditableElement.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MouseSelection',\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 setup(__props) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(`mouse-selection quadrant-${__props.quadrant}`),\n style: _normalizeStyle({\n top: __props.top + 'px',\n left: __props.left + 'px',\n width: __props.width + 'px',\n height: __props.height + 'px',\n })\n }, null, 6))\n}\n}\n\n})","import script from \"./MouseSelection.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MouseSelection.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MouseSelection.vue?vue&type=style&index=0&id=0d6c0f73&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0d6c0f73\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-10cd6d44\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"grid-lines\" }\nconst _hoisted_2 = [\"d\", \"stroke\"]\n\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'GridLines',\n setup(__props) {\n\nconst { canvasScale } = storeToRefs(useMainStore())\nconst { currentSlide, viewportRatio } = storeToRefs(useSlidesStore())\n\nconst background = computed(() => currentSlide.value?.background)\n\n// 计算网格线的颜色,避免与背景的颜色太接近\nconst 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\nconst gridSize = 50\n\n// 计算网格路径\nconst 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\nconst path = getPath()\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [\n _createElementVNode(\"path\", {\n style: _normalizeStyle({\n transform: `scale(${_unref(canvasScale)})`,\n }),\n d: _unref(path),\n fill: \"none\",\n stroke: _unref(gridColor),\n \"stroke-width\": \"0.3\",\n \"stroke-dasharray\": \"5\"\n }, null, 12, _hoisted_2)\n ]))\n}\n}\n\n})","import script from \"./GridLines.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./GridLines.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./GridLines.vue?vue&type=style&index=0&id=10cd6d44&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-10cd6d44\"]])\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}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed } 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ViewportBackground',\n setup(__props) {\n\nconst { showGridLines } = storeToRefs(useMainStore())\nconst { currentSlide } = storeToRefs(useSlidesStore())\nconst background = computed(() => currentSlide.value?.background)\n\nconst { backgroundStyle } = useSlideBackgroundStyle(background)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"viewport-background\",\n style: _normalizeStyle(_unref(backgroundStyle))\n }, [\n (_unref(showGridLines))\n ? (_openBlock(), _createBlock(GridLines, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ], 4))\n}\n}\n\n})","import script from \"./ViewportBackground.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ViewportBackground.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ViewportBackground.vue?vue&type=style&index=0&id=6f1e1261&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6f1e1261\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed, PropType } from 'vue'\nimport { AlignmentLineAxis } from '@/types/edit'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AlignmentLine',\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\nconst props = __props\n\n\n\n// 吸附对齐线的位置\nconst left = computed(() => props.axis.x * props.canvasScale + 'px')\nconst top = computed(() => props.axis.y * props.canvasScale + 'px')\n\n// 吸附对齐线的长度\nconst sizeStyle = computed(() => {\n if (props.type === 'vertical') return { height: props.length * props.canvasScale + 'px' }\n return { width: props.length * props.canvasScale + 'px' }\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"alignment-line\",\n style: _normalizeStyle({ left: _unref(left), top: _unref(top) })\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass(['line', __props.type]),\n style: _normalizeStyle(_unref(sizeStyle))\n }, null, 6)\n ], 4))\n}\n}\n\n})","import script from \"./AlignmentLine.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./AlignmentLine.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./AlignmentLine.vue?vue&type=style&index=0&id=37fa6068&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-37fa6068\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-60e06332\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"ruler\" }\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Ruler',\n props: {\n viewportStyles: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst { canvasScale } = storeToRefs(useMainStore())\n\nconst markerSize = computed(() => {\n return props.viewportStyles.width * canvasScale.value / 10\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"h\",\n style: _normalizeStyle({\n width: __props.viewportStyles.width * _unref(canvasScale) + 'px',\n left: __props.viewportStyles.left + 'px',\n })\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(10, (marker) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"ruler-marker-100\", { 'hide': _unref(markerSize) < 36, 'omit': _unref(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: __props.viewportStyles.height * _unref(canvasScale) + 'px',\n top: __props.viewportStyles.top + 'px',\n })\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(10, (marker) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"ruler-marker-100\", { 'hide': _unref(markerSize) < 36, 'omit': _unref(markerSize) < 72 }]),\n key: marker,\n style: _normalizeStyle({ height: _unref(markerSize) + 'px' })\n }, [\n _createElementVNode(\"span\", null, _toDisplayString(marker * 100), 1)\n ], 6)\n }), 64))\n ], 4)\n ]))\n}\n}\n\n})","import script from \"./Ruler.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Ruler.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Ruler.vue?vue&type=style&index=0&id=60e06332&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-60e06332\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-5a941f07\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\"]\n\nimport { computed, onMounted, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useKeyboardStore } from '@/store'\nimport { CreateElementSelectionData } from '@/types/edit'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementCreateSelection',\n emits: [\"created\"],\n setup(__props, { emit }: { emit: ({\n (event: 'created', payload: CreateElementSelectionData): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst mainStore = useMainStore()\nconst { creatingElement } = storeToRefs(mainStore)\nconst { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n\nconst start = ref<[number, number]>()\nconst end = ref<[number, number]>()\n\nconst selectionRef = ref()\nconst offset = ref({\n x: 0,\n y: 0,\n})\nonMounted(() => {\n if (!selectionRef.value) return\n const { x, y } = selectionRef.value.getBoundingClientRect()\n offset.value = { x, y }\n})\n\n// 鼠标拖动创建元素生成位置大小\n// 获取范围的起始位置和终点位置\nconst 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// 绘制线条的路径相关数据(仅当绘制元素类型为线条时使用)\nconst 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// 根据生成范围的起始位置和终点位置,计算元素创建时的位置和大小\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"element-create-selection\",\n ref_key: \"selectionRef\",\n ref: selectionRef,\n onMousedown: _cache[0] || (_cache[0] = _withModifiers($event => createSelection($event), [\"stop\"])),\n onContextmenu: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"stop\",\"prevent\"]))\n }, [\n (start.value && end.value)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass(['selection', _unref(creatingElement)?.type]),\n style: _normalizeStyle(_unref(position))\n }, [\n (_unref(creatingElement)?.type === 'line' && _unref(lineData))\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n overflow: \"visible\",\n width: _unref(lineData).svgWidth,\n height: _unref(lineData).svgHeight\n }, [\n _createElementVNode(\"path\", {\n d: _unref(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}\n}\n\n})","import script from \"./ElementCreateSelection.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementCreateSelection.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementCreateSelection.vue?vue&type=style&index=0&id=5a941f07&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5a941f07\"]])\n\nexport default __exports__","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 { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed, PropType } from 'vue'\nimport { OperateResizeHandlers } from '@/types/edit'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ResizeHandler',\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\nconst props = __props\n\n\n\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['resize-handler', _unref(rotateClassName), __props.type])\n }, null, 2))\n}\n}\n\n})","import script from \"./ResizeHandler.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ResizeHandler.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ResizeHandler.vue?vue&type=style&index=0&id=881ee3f8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-881ee3f8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { PropType } from 'vue'\nimport { OperateBorderLines } from '@/types/edit'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BorderLine',\n props: {\n type: {\n type: String as PropType,\n required: true,\n },\n isWide: {\n type: Boolean,\n default: false,\n },\n},\n setup(__props) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['border-line', __props.type, { 'wide': __props.isWide }])\n }, null, 2))\n}\n}\n\n})","import script from \"./BorderLine.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BorderLine.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BorderLine.vue?vue&type=style&index=0&id=7170d1be&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7170d1be\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MultiSelectOperate',\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\nconst props = __props\n\n\n\nconst { activeElementIdList, canvasScale } = storeToRefs(useMainStore())\n\nconst localActiveElementList = computed(() => props.elementList.filter(el => activeElementIdList.value.includes(el.id)))\n\nconst range = ref({\n minX: 0,\n maxX: 0,\n minY: 0,\n maxY: 0,\n})\n\n// 根据多选元素整体在画布中的范围,计算边框线和缩放点的位置信息\nconst width = computed(() => (range.value.maxX - range.value.minX) * canvasScale.value)\nconst height = computed(() => (range.value.maxY - range.value.minY) * canvasScale.value)\nconst { resizeHandlers, borderLines } = useCommonOperate(width, height)\n\n// 计算多选元素整体在画布中的范围\nconst setRange = () => {\n const { minX, maxX, minY, maxY } = getElementListRange(localActiveElementList.value)\n range.value = { minX, maxX, minY, maxY }\n}\nwatchEffect(setRange)\n\n// 禁用多选状态下缩放:仅未旋转的图片和形状可以在多选状态下缩放\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"multi-select-operate\",\n style: _normalizeStyle({\n left: range.value.minX * _unref(canvasScale) + 'px',\n top: range.value.minY * _unref(canvasScale) + 'px',\n })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(BorderLine, {\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (!_unref(disableResize))\n ? (_openBlock(true), _createElementBlock(_Fragment, { key: 0 }, _renderList(_unref(resizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n key: point.direction,\n type: point.direction,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers(($event: any) => (__props.scaleMultiElement($event, range.value, point.direction)), [\"stop\"])\n }, null, 8, [\"type\", \"style\", \"onMousedown\"]))\n }), 128))\n : _createCommentVNode(\"\", true)\n ], 4))\n}\n}\n\n})","import script from \"./MultiSelectOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MultiSelectOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MultiSelectOperate.vue?vue&type=style&index=0&id=defbd922&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-defbd922\"]])\n\nexport default __exports__","\n\n\n\n","import { render } from \"./RotateHandler.vue?vue&type=template&id=b99d8dae&scoped=true\"\nconst script = {}\n\nimport \"./RotateHandler.vue?vue&type=style&index=0&id=b99d8dae&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b99d8dae\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createVNode as _createVNode, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nimport { computed, 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\n\r\nconst __default__ = {\r\n inheritAttrs: false,\r\n}\r\n\nexport default /*#__PURE__*/_defineComponent({\n ...__default__,\n __name: 'ImageElementOperate',\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},\n setup(__props) {\n\nconst props = __props\n\r\n\r\n\r\nconst { canvasScale, clipingImageElementId } = storeToRefs(useMainStore())\r\n\r\nconst isCliping = computed(() => clipingImageElementId.value === props.elementInfo.id)\r\n\r\nconst scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\r\nconst scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\r\nconst { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"image-element-operate\", { 'cliping': _unref(isCliping) }])\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(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 (__props.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(resizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: __props.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => __props.scaleElement($event, __props.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n _createVNode(RotateHandler, {\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: _unref(scaleWidth) / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (__props.rotateElement(__props.elementInfo)), [\"stop\"]))\n }, null, 8, [\"style\"])\n ], 64))\n : _createCommentVNode(\"\", true)\n ], 2))\n}\n}\n\n})","import script from \"./ImageElementOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ImageElementOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ImageElementOperate.vue?vue&type=style&index=0&id=46b250c2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-46b250c2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, 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\nimport { computed, 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\n\r\nconst __default__ = {\r\n inheritAttrs: false,\r\n}\r\n\nexport default /*#__PURE__*/_defineComponent({\n ...__default__,\n __name: 'TextElementOperate',\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},\n setup(__props) {\n\nconst props = __props\n\r\n\r\n\r\nconst { canvasScale } = storeToRefs(useMainStore())\r\n\r\nconst scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\r\nconst scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\r\n\r\nconst { textElementResizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(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 (__props.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(textElementResizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: __props.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => __props.scaleElement($event, __props.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n _createVNode(RotateHandler, {\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: _unref(scaleWidth) / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (__props.rotateElement(__props.elementInfo)), [\"stop\"]))\n }, null, 8, [\"style\"])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./TextElementOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./TextElementOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, 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\nimport { computed, 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\n\nconst __default__ = {\n inheritAttrs: false,\n}\n\nexport default /*#__PURE__*/_defineComponent({\n ...__default__,\n __name: 'ShapeElementOperate',\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\nconst props = __props\n\n\n\nconst { canvasScale } = storeToRefs(useMainStore())\n\nconst scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\nconst scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\nconst { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(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 (__props.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(resizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: __props.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => __props.scaleElement($event, __props.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n _createVNode(RotateHandler, {\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: _unref(scaleWidth) / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (__props.rotateElement(__props.elementInfo)), [\"stop\"]))\n }, null, 8, [\"style\"])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./ShapeElementOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ShapeElementOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, 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-4659f395\"),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\nimport { computed, 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\n\nconst __default__ = {\n inheritAttrs: false,\n}\n\nexport default /*#__PURE__*/_defineComponent({\n ...__default__,\n __name: 'LineElementOperate',\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\nconst props = __props\n\n\n\nconst { canvasScale } = storeToRefs(useMainStore())\n\nconst svgWidth = computed(() => Math.max(props.elementInfo.start[0], props.elementInfo.end[0]))\nconst svgHeight = computed(() => Math.max(props.elementInfo.start[1], props.elementInfo.end[1]))\n\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (__props.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(resizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.handler,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => __props.dragLineElement($event, __props.elementInfo, point.handler), [\"stop\"])\n }, null, 8, [\"style\", \"onMousedown\"]))\n }), 128)),\n (_openBlock(), _createElementBlock(\"svg\", {\n width: _unref(svgWidth) || 1,\n height: _unref(svgHeight) || 1,\n stroke: __props.elementInfo.color,\n overflow: \"visible\",\n style: _normalizeStyle({ transform: `scale(${_unref(canvasScale)})` })\n }, [\n (__props.elementInfo.curve)\n ? (_openBlock(), _createElementBlock(\"g\", _hoisted_3, [\n _createElementVNode(\"line\", {\n class: \"anchor-line\",\n x1: __props.elementInfo.start[0],\n y1: __props.elementInfo.start[1],\n x2: __props.elementInfo.curve[0],\n y2: __props.elementInfo.curve[1]\n }, null, 8, _hoisted_4),\n _createElementVNode(\"line\", {\n class: \"anchor-line\",\n x1: __props.elementInfo.end[0],\n y1: __props.elementInfo.end[1],\n x2: __props.elementInfo.curve[0],\n y2: __props.elementInfo.curve[1]\n }, null, 8, _hoisted_5)\n ]))\n : _createCommentVNode(\"\", true),\n (__props.elementInfo.cubic)\n ? (_openBlock(true), _createElementBlock(_Fragment, { key: 1 }, _renderList(__props.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: __props.elementInfo.start[0],\n y1: __props.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: __props.elementInfo.end[0],\n y1: __props.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}\n}\n\n})","import script from \"./LineElementOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LineElementOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./LineElementOperate.vue?vue&type=style&index=0&id=4659f395&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4659f395\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, 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\nimport { computed, 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\n\nconst __default__ = {\n inheritAttrs: false,\n}\n\nexport default /*#__PURE__*/_defineComponent({\n ...__default__,\n __name: 'TableElementOperate',\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\nconst props = __props\n\n\n\nconst { canvasScale } = storeToRefs(useMainStore())\n\nconst outlineWidth = computed(() => props.elementInfo.outline.width || 1)\n\nconst scaleWidth = computed(() => (props.elementInfo.width + outlineWidth.value) * canvasScale.value)\nconst scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\n\nconst { textElementResizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(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 (__props.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(textElementResizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: __props.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => __props.scaleElement($event, __props.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n _createVNode(RotateHandler, {\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: _unref(scaleWidth) / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (__props.rotateElement(__props.elementInfo)), [\"stop\"]))\n }, null, 8, [\"style\"])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./TableElementOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./TableElementOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"common-element-operate\" }\n\nimport { computed, 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\n\nconst __default__ = {\n inheritAttrs: false,\n}\n\nexport default /*#__PURE__*/_defineComponent({\n ...__default__,\n __name: 'CommonElementOperate',\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\nconst props = __props\n\n\n\nconst { canvasScale } = storeToRefs(useMainStore())\n\nconst scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\nconst scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\nconst { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\n\nconst cannotRotate = computed(() => ['video', 'audio'].includes(props.elementInfo.type))\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(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 (__props.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(resizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: __props.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => __props.scaleElement($event, __props.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n (!_unref(cannotRotate))\n ? (_openBlock(), _createBlock(RotateHandler, {\n key: 0,\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: _unref(scaleWidth) / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (__props.rotateElement(__props.elementInfo)), [\"stop\"]))\n }, null, 8, [\"style\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./CommonElementOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./CommonElementOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","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}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-bb722fc0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"href\"]\nconst _hoisted_2 = {\n key: 1,\n class: \"link\"\n}\nconst _hoisted_3 = { class: \"btns\" }\n\nimport { computed, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { PPTElement, PPTElementLink } from '@/types/slides'\nimport useLink from '@/hooks/useLink'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LinkHandler',\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\nconst props = __props\n\n\n\nconst { canvasScale } = storeToRefs(useMainStore())\nconst { removeLink } = useLink()\nconst height = computed(() => props.elementInfo.type === 'line' ? 0 : props.elementInfo.height)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Divider = _resolveComponent(\"Divider\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"link-handler\",\n style: _normalizeStyle({ top: _unref(height) * _unref(canvasScale) + 10 + 'px' })\n }, [\n (__props.link.type === 'web')\n ? (_openBlock(), _createElementBlock(\"a\", {\n key: 0,\n class: \"link\",\n href: __props.link.target,\n target: \"_blank\"\n }, _toDisplayString(__props.link.target), 9, _hoisted_1))\n : (_openBlock(), _createElementBlock(\"a\", _hoisted_2, \"幻灯片页面 \" + _toDisplayString(__props.link.target), 1)),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (__props.openLinkDialog()))\n }, \"更换\"),\n _createVNode(_component_Divider, { type: \"vertical\" }),\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_unref(removeLink)(__props.elementInfo)))\n }, \"移除\")\n ])\n ], 4))\n}\n}\n\n})","import script from \"./LinkHandler.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LinkHandler.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./LinkHandler.vue?vue&type=style&index=0&id=bb722fc0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-bb722fc0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, 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-c3f7ca96\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 1,\n class: \"animation-index\"\n}\n\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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},\n setup(__props) {\n\nconst props = __props\n\r\n\r\n\r\nconst { canvasScale, toolbarState } = storeToRefs(useMainStore())\r\nconst { formatedAnimations } = storeToRefs(useSlidesStore())\r\n\r\nconst 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\nconst 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\nconst rotate = computed(() => 'rotate' in props.elementInfo ? props.elementInfo.rotate : 0)\r\nconst height = computed(() => 'height' in props.elementInfo ? props.elementInfo.height : 0)\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"operate\", { 'multi-select': __props.isMultiSelect && !__props.isActive }]),\n style: _normalizeStyle({\r\n top: __props.elementInfo.top * _unref(canvasScale) + 'px',\r\n left: __props.elementInfo.left * _unref(canvasScale) + 'px',\r\n transform: `rotate(${_unref(rotate)}deg)`,\r\n transformOrigin: `${__props.elementInfo.width * _unref(canvasScale) / 2}px ${_unref(height) * _unref(canvasScale) / 2}px`,\r\n })\n }, [\n (__props.isSelected)\n ? (_openBlock(), _createBlock(_resolveDynamicComponent(_unref(currentOperateComponent)), {\n key: 0,\n elementInfo: __props.elementInfo,\n handlerVisible: !__props.elementInfo.lock && (__props.isActiveGroupElement || !__props.isMultiSelect),\n rotateElement: __props.rotateElement,\n scaleElement: __props.scaleElement,\n dragLineElement: __props.dragLineElement\n }, null, 8, [\"elementInfo\", \"handlerVisible\", \"rotateElement\", \"scaleElement\", \"dragLineElement\"]))\n : _createCommentVNode(\"\", true),\n (_unref(toolbarState) === 'elAnimation' && _unref(elementIndexListInAnimation).length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(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 (__props.isActive && __props.elementInfo.link)\n ? (_openBlock(), _createBlock(LinkHandler, {\n key: 2,\n elementInfo: __props.elementInfo,\n link: __props.elementInfo.link,\n openLinkDialog: __props.openLinkDialog,\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, null, 8, [\"elementInfo\", \"link\", \"openLinkDialog\"]))\n : _createCommentVNode(\"\", true)\n ], 6))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=c3f7ca96&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-c3f7ca96\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-66f2009f\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"src\"]\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseImageElement',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst flipH = computed(() => props.elementInfo.flipH)\nconst flipV = computed(() => props.elementInfo.flipV)\nconst { flipStyle } = useElementFlip(flipH, flipV)\n\nconst clip = computed(() => props.elementInfo.clip)\nconst { clipShape, imgPosition } = useClipImage(clip)\n\nconst filters = computed(() => props.elementInfo.filters)\nconst { filter } = useFilter(filters)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-image\",\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n height: __props.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n filter: _unref(shadowStyle) ? `drop-shadow(${_unref(shadowStyle)})` : '',\n transform: _unref(flipStyle),\n })\n }, [\n _createVNode(ImageOutline, { elementInfo: __props.elementInfo }, null, 8, [\"elementInfo\"]),\n _createElementVNode(\"div\", {\n class: \"image-content\",\n style: _normalizeStyle({ clipPath: _unref(clipShape).style })\n }, [\n _createElementVNode(\"img\", {\n src: __props.elementInfo.src,\n draggable: false,\n style: _normalizeStyle({\n top: _unref(imgPosition).top,\n left: _unref(imgPosition).left,\n width: _unref(imgPosition).width,\n height: _unref(imgPosition).height,\n filter: _unref(filter),\n }),\n alt: \"\"\n }, null, 12, _hoisted_1)\n ], 4)\n ], 4)\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./BaseImageElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseImageElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseImageElement.vue?vue&type=style&index=0&id=66f2009f&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-66f2009f\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-659e869d\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"innerHTML\"]\n\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseTextElement',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst cssVar = computed(() => ({\n '--textIndent': `${props.elementInfo.textIndent || 0}px`,\n '--paragraphSpace': `${props.elementInfo.paragraphSpace === undefined ? 5 : props.elementInfo.paragraphSpace}px`,\n} as StyleValue))\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-text\",\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n backgroundColor: __props.elementInfo.fill,\n opacity: __props.elementInfo.opacity,\n textShadow: _unref(shadowStyle),\n lineHeight: __props.elementInfo.lineHeight,\n letterSpacing: (__props.elementInfo.wordSpace || 0) + 'px',\n color: __props.elementInfo.defaultColor,\n fontFamily: __props.elementInfo.defaultFontName,\n })\n }, [\n _createVNode(ElementOutline, {\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n outline: __props.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]),\n _createElementVNode(\"div\", {\n class: \"text ProseMirror-static\",\n style: _normalizeStyle(_unref(cssVar)),\n innerHTML: __props.elementInfo.content\n }, null, 12, _hoisted_1)\n ], 4)\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./BaseTextElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseTextElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseTextElement.vue?vue&type=style&index=0&id=659e869d&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-659e869d\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-073084bf\"),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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseShapeElement',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst outline = computed(() => props.elementInfo.outline)\nconst { outlineWidth, outlineStyle, outlineColor } = useElementOutline(outline)\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst flipH = computed(() => props.elementInfo.flipH)\nconst flipV = computed(() => props.elementInfo.flipV)\nconst { flipStyle } = useElementFlip(flipH, flipV)\n\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-shape\",\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n height: __props.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n opacity: __props.elementInfo.opacity,\n filter: _unref(shadowStyle) ? `drop-shadow(${_unref(shadowStyle)})` : '',\n transform: _unref(flipStyle),\n color: _unref(text).defaultColor,\n fontFamily: _unref(text).defaultFontName,\n })\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: __props.elementInfo.width,\n height: __props.elementInfo.height\n }, [\n (__props.elementInfo.gradient)\n ? (_openBlock(), _createElementBlock(\"defs\", _hoisted_2, [\n _createVNode(GradientDefs, {\n id: `base-gradient-${__props.elementInfo.id}`,\n type: __props.elementInfo.gradient.type,\n color1: __props.elementInfo.gradient.color[0],\n color2: __props.elementInfo.gradient.color[1],\n rotate: __props.elementInfo.gradient.rotate\n }, null, 8, [\"id\", \"type\", \"color1\", \"color2\", \"rotate\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"g\", {\n transform: `scale(${__props.elementInfo.width / __props.elementInfo.viewBox[0]}, ${__props.elementInfo.height / __props.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: __props.elementInfo.path,\n fill: __props.elementInfo.gradient ? `url(#base-gradient-${__props.elementInfo.id})` : __props.elementInfo.fill,\n stroke: _unref(outlineColor),\n \"stroke-width\": _unref(outlineWidth),\n \"stroke-dasharray\": _unref(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\", _unref(text).align])\n }, [\n _createElementVNode(\"div\", {\n class: \"ProseMirror-static\",\n innerHTML: _unref(text).content\n }, null, 8, _hoisted_5)\n ], 2)\n ], 4)\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./BaseShapeElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseShapeElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseShapeElement.vue?vue&type=style&index=0&id=073084bf&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-073084bf\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-340cdee8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\", \"stroke\", \"stroke-width\", \"stroke-dasharray\", \"marker-start\", \"marker-end\"]\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseLineElement',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst svgWidth = computed(() => {\n const width = Math.abs(props.elementInfo.start[0] - props.elementInfo.end[0])\n return width < 24 ? 24 : width\n})\nconst svgHeight = computed(() => {\n const height = Math.abs(props.elementInfo.start[1] - props.elementInfo.end[1])\n return height < 24 ? 24 : height\n})\n\nconst lineDashArray = computed(() => props.elementInfo.style === 'dashed' ? '10, 5' : '0, 0')\n\nconst path = computed(() => {\n return getLineElementPath(props.elementInfo)\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-line\",\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({ filter: _unref(shadowStyle) ? `drop-shadow(${_unref(shadowStyle)})` : '' })\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: _unref(svgWidth),\n height: _unref(svgHeight)\n }, [\n _createElementVNode(\"defs\", null, [\n (__props.elementInfo.points[0])\n ? (_openBlock(), _createBlock(LinePointMarker, {\n key: 0,\n id: __props.elementInfo.id,\n position: \"start\",\n type: __props.elementInfo.points[0],\n color: __props.elementInfo.color,\n baseSize: __props.elementInfo.width\n }, null, 8, [\"id\", \"type\", \"color\", \"baseSize\"]))\n : _createCommentVNode(\"\", true),\n (__props.elementInfo.points[1])\n ? (_openBlock(), _createBlock(LinePointMarker, {\n key: 1,\n id: __props.elementInfo.id,\n position: \"end\",\n type: __props.elementInfo.points[1],\n color: __props.elementInfo.color,\n baseSize: __props.elementInfo.width\n }, null, 8, [\"id\", \"type\", \"color\", \"baseSize\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"path\", {\n d: _unref(path),\n stroke: __props.elementInfo.color,\n \"stroke-width\": __props.elementInfo.width,\n \"stroke-dasharray\": _unref(lineDashArray),\n fill: \"none\",\n \"marker-start\": __props.elementInfo.points[0] ? `url(#${__props.elementInfo.id}-${__props.elementInfo.points[0]}-start)` : '',\n \"marker-end\": __props.elementInfo.points[1] ? `url(#${__props.elementInfo.id}-${__props.elementInfo.points[1]}-end)` : ''\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./BaseLineElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseLineElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseLineElement.vue?vue&type=style&index=0&id=340cdee8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-340cdee8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, unref as _unref, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseChartElement',\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n},\n setup(__props) {\n\r\n\r\n\r\nconst slideScale = inject(injectKeySlideScale) || ref(1)\r\n\r\nconst needScaleSize = computed(() => slideScale.value < 1)\r\nconst zoom = computed(() => needScaleSize.value ? 1 / slideScale.value : 1)\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-chart\",\n style: _normalizeStyle({\r\n top: __props.elementInfo.top + 'px',\r\n left: __props.elementInfo.left + 'px',\r\n width: __props.elementInfo.width + 'px',\r\n height: __props.elementInfo.height + 'px',\r\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\r\n backgroundColor: __props.elementInfo.fill,\r\n })\n }, [\n _createVNode(ElementOutline, {\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n outline: __props.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]),\n _createVNode(Chart, {\n width: __props.elementInfo.width * _unref(zoom),\n height: __props.elementInfo.height * _unref(zoom),\n type: __props.elementInfo.chartType,\n data: __props.elementInfo.data,\n options: __props.elementInfo.options,\n themeColor: __props.elementInfo.themeColor,\n gridColor: __props.elementInfo.gridColor,\n legends: __props.elementInfo.data.legends,\n legend: __props.elementInfo.legend || '',\n style: _normalizeStyle({ zoom: 1 / _unref(zoom) })\n }, null, 8, [\"width\", \"height\", \"type\", \"data\", \"options\", \"themeColor\", \"gridColor\", \"legends\", \"legend\", \"style\"])\n ], 4)\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./BaseChartElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseChartElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseChartElement.vue?vue&type=style&index=0&id=7d2e5c4e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7d2e5c4e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-00712fa4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\"]\nconst _hoisted_2 = [\"rowspan\", \"colspan\"]\nconst _hoisted_3 = [\"innerHTML\"]\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'StaticTable',\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\nconst props = __props\n\n\n\nconst colSizeList = ref([])\nconst totalWidth = computed(() => colSizeList.value.reduce((a, b) => a + b))\n\nwatch([\n () => props.colWidths,\n () => props.width,\n], () => {\n colSizeList.value = props.colWidths.map(item => item * props.width)\n}, { immediate: true })\n\nconst cells = computed(() => props.data)\nconst { hideCells } = useHideCells(cells)\n\nconst theme = computed(() => props.theme)\nconst { subThemeColor } = useSubThemeColor(theme)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"static-table\",\n style: _normalizeStyle({ width: _unref(totalWidth) + 'px' })\n }, [\n _createElementVNode(\"table\", {\n class: _normalizeClass({\n 'theme': _unref(theme),\n 'row-header': _unref(theme)?.rowHeader,\n 'row-footer': _unref(theme)?.rowFooter,\n 'col-header': _unref(theme)?.colHeader,\n 'col-footer': _unref(theme)?.colFooter,\n }),\n style: _normalizeStyle(`--themeColor: ${_unref(theme)?.color}; --subThemeColor1: ${_unref(subThemeColor)[0]}; --subThemeColor2: ${_unref(subThemeColor)[1]}`)\n }, [\n _createElementVNode(\"colgroup\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(colSizeList.value, (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(__props.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: __props.outline.style,\n borderColor: __props.outline.color,\n borderWidth: __props.outline.width + 'px',\n ..._unref(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: _unref(formatText)(cell.text)\n }, null, 8, _hoisted_3)\n ], 12, _hoisted_2)), [\n [_vShow, !_unref(hideCells).includes(`${rowIndex}_${colIndex}`)]\n ])\n }), 128))\n ]))\n }), 128))\n ])\n ], 6)\n ], 4))\n}\n}\n\n})","import script from \"./StaticTable.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./StaticTable.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./StaticTable.vue?vue&type=style&index=0&id=00712fa4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-00712fa4\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-53e0f1ba\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nimport { PropType } from 'vue'\nimport { PPTTableElement } from '@/types/slides'\n\nimport StaticTable from './StaticTable.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseTableElement',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-table\",\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(StaticTable, {\n data: __props.elementInfo.data,\n width: __props.elementInfo.width,\n colWidths: __props.elementInfo.colWidths,\n outline: __props.elementInfo.outline,\n theme: __props.elementInfo.theme\n }, null, 8, [\"data\", \"width\", \"colWidths\", \"outline\", \"theme\"])\n ])\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./BaseTableElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseTableElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseTableElement.vue?vue&type=style&index=0&id=53e0f1ba&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-53e0f1ba\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-9a47b5f4\"),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\nimport { PropType } from 'vue'\nimport { PPTLatexElement } from '@/types/slides'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseLatexElement',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-latex\",\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n height: __props.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n stroke: __props.elementInfo.color,\n \"stroke-width\": __props.elementInfo.strokeWidth,\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n }, [\n _createElementVNode(\"g\", {\n transform: `scale(${__props.elementInfo.width / __props.elementInfo.viewBox[0]}, ${__props.elementInfo.height / __props.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n d: __props.elementInfo.path\n }, null, 8, _hoisted_4)\n ], 8, _hoisted_3)\n ], 8, _hoisted_2))\n ])\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./BaseLatexElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseLatexElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseLatexElement.vue?vue&type=style&index=0&id=9a47b5f4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-9a47b5f4\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { PropType } from 'vue'\nimport { PPTVideoElement } from '@/types/slides'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseVideoElement',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconPlayOne = _resolveComponent(\"IconPlayOne\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-video\",\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n height: __props.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({ backgroundImage: `url(${__props.elementInfo.poster})` })\n }, [\n _createVNode(_component_IconPlayOne, { class: \"icon\" })\n ], 4)\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./BaseVideoElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseVideoElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseVideoElement.vue?vue&type=style&index=0&id=56b7f716&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-56b7f716\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-5258e03b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nimport { computed, PropType } from 'vue'\nimport { PPTAudioElement } from '@/types/slides'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseAudioElement',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst audioIconSize = computed(() => {\n return Math.min(props.elementInfo.width, props.elementInfo.height) + 'px'\n})\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconVolumeNotice = _resolveComponent(\"IconVolumeNotice\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-audio\",\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n height: __props.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_IconVolumeNotice, {\n class: \"audio-icon\",\n style: _normalizeStyle({\n fontSize: _unref(audioIconSize),\n color: __props.elementInfo.color,\n })\n }, null, 8, [\"style\"])\n ])\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./BaseAudioElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseAudioElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseAudioElement.vue?vue&type=style&index=0&id=5258e03b&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5258e03b\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ThumbnailElement',\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\nconst props = __props\n\n\n\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"base-element\", `base-element-${__props.elementInfo.id}`]),\n style: _normalizeStyle({\n zIndex: __props.elementIndex,\n })\n }, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_unref(currentElementComponent)), {\n elementInfo: __props.elementInfo,\n target: \"thumbnail\"\n }, null, 8, [\"elementInfo\"]))\n ], 6))\n}\n}\n\n})","import script from \"./ThumbnailElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ThumbnailElement.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-f69fb5b2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 1,\n class: \"placeholder\"\n}\n\nimport { computed, PropType, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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\nconst props = __props\n\n\n\nconst { viewportRatio } = storeToRefs(useSlidesStore())\n\nconst background = computed(() => props.slide.background)\nconst { backgroundStyle } = useSlideBackgroundStyle(background)\n\nconst scale = computed(() => props.size / VIEWPORT_SIZE)\nprovide(injectKeySlideScale, scale)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"thumbnail-slide\",\n style: _normalizeStyle({\n width: __props.size + 'px',\n height: __props.size * _unref(viewportRatio) + 'px',\n })\n }, [\n (__props.visible)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"elements\",\n style: _normalizeStyle({\n width: _unref(VIEWPORT_SIZE) + 'px',\n height: _unref(VIEWPORT_SIZE) * _unref(viewportRatio) + 'px',\n transform: `scale(${_unref(scale)})`,\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"background\",\n style: _normalizeStyle(_unref(backgroundStyle))\n }, null, 4),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(__props.slide.elements, (element, index) => {\n return (_openBlock(), _createBlock(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}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=f69fb5b2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f69fb5b2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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, unref as _unref, createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-dfb654e8\"),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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LinkDialog',\n emits: [\"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst { handleElement } = storeToRefs(useMainStore())\nconst { slides } = storeToRefs(useSlidesStore())\n\nconst type = ref('web')\nconst address = ref('')\nconst slideId = ref('')\n\nslideId.value = slides.value[0].id\n\nconst selectedSlide = computed(() => {\n if (!slideId.value) return null\n\n return slides.value.find(item => item.id === slideId.value) || null\n})\n\nconst tabs: TabItem[] = [\n { key: 'web', label: '网页链接' },\n { key: 'slide', label: '幻灯片页面' },\n]\n\nconst { setLink } = useLink()\n\nonMounted(() => {\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\nconst 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) emit('close')\n else address.value = ''\n }\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Input = _resolveComponent(\"Input\")!\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_Button = _resolveComponent(\"Button\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(tabs, (tab) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': type.value === tab.key }]),\n key: tab.key,\n onClick: ($event: any) => (type.value = tab.key)\n }, _toDisplayString(tab.label), 11, _hoisted_3)\n }), 64))\n ]),\n (type.value === 'web')\n ? (_openBlock(), _createBlock(_component_Input, {\n key: 0,\n class: \"input\",\n value: address.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((address).value = $event)),\n placeholder: \"请输入网页链接地址\"\n }, null, 8, [\"value\"]))\n : _createCommentVNode(\"\", true),\n (type.value === 'slide')\n ? (_openBlock(), _createBlock(_component_Select, {\n key: 1,\n class: \"input\",\n value: slideId.value,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((slideId).value = $event))\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(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 (type.value === 'slide' && _unref(selectedSlide))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(ThumbnailSlide, {\n class: \"thumbnail\",\n slide: _unref(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) => (emit('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) => (save()))\n }, {\n default: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","import script from \"./LinkDialog.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LinkDialog.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./LinkDialog.vue?vue&type=style&index=0&id=dfb654e8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-dfb654e8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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, resolveComponent as _resolveComponent, withCtx as _withCtx, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-529c7227\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"operates\" }\nconst _hoisted_2 = {\n key: 1,\n class: \"drag-mask\"\n}\n\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst mainStore = useMainStore()\nconst {\n activeElementIdList,\n activeGroupElementId,\n handleElementId,\n editorAreaFocus,\n showGridLines,\n showRuler,\n creatingElement,\n canvasScale,\n} = storeToRefs(mainStore)\nconst { currentSlide } = storeToRefs(useSlidesStore())\nconst { ctrlKeyState, spaceKeyState } = storeToRefs(useKeyboardStore())\n\nconst viewportRef = ref()\nconst alignmentLines = ref([])\n\nconst linkDialogVisible = ref(false)\nconst openLinkDialog = () => linkDialogVisible.value = true\n\nwatch(handleElementId, () => {\n mainStore.setActiveGroupElementId('')\n})\n\nconst elementList = ref([])\nconst setLocalElementList = () => {\n elementList.value = currentSlide.value ? JSON.parse(JSON.stringify(currentSlide.value.elements)) : []\n}\nwatchEffect(setLocalElementList)\n\nconst canvasRef = ref()\nconst { dragViewport, viewportStyles } = useViewportSize(canvasRef)\n\nuseDropImageOrText(canvasRef)\n\nconst { mouseSelection, mouseSelectionVisible, mouseSelectionQuadrant, updateMouseSelection } = useMouseSelection(elementList, viewportRef)\n\nconst { dragElement } = useDragElement(elementList, alignmentLines, canvasScale)\nconst { dragLineElement } = useDragLineElement(elementList)\nconst { selectElement } = useSelectElement(elementList, dragElement)\nconst { scaleElement, scaleMultiElement } = useScaleElement(elementList, alignmentLines, canvasScale)\nconst { rotateElement } = useRotateElement(elementList, viewportRef)\n\nconst { selectAllElement } = useSelectAllElement()\nconst { deleteAllElements } = useDeleteElement()\nconst { pasteElement } = useCopyAndPasteElement()\nconst { enterScreeningFromStart } = useScreening()\nconst { updateSlideIndex } = useSlideHandler()\n\n// 组件渲染时,如果存在元素焦点,需要清除\n// 这种情况存在于:有焦点元素的情况下进入了放映模式,再退出时,需要清除原先的焦点(因为可能已经切换了页面)\nonMounted(() => {\n if (activeElementIdList.value.length) mainStore.setActiveElementIdList([])\n})\n\n// 点击画布的空白区域:清空焦点元素、设置画布焦点、清除文字选区\nconst 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// 移除画布编辑区域焦点\nconst removeEditorAreaFocus = () => {\n if (editorAreaFocus.value) mainStore.setEditorareaFocus(false)\n}\n\n// 滚动鼠标\nconst { scaleCanvas } = useScaleCanvas()\nconst throttleScaleCanvas = throttle(scaleCanvas, 100, { leading: true, trailing: false })\nconst throttleUpdateSlideIndex = throttle(updateSlideIndex, 300, { leading: true, trailing: false })\n\nconst 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// 开关网格线\nconst toggleGridLines = () => {\n mainStore.setGridLinesState(!showGridLines.value)\n}\n\n// 开关标尺\nconst toggleRuler = () => {\n mainStore.setRulerState(!showRuler.value)\n}\n\n// 在鼠标绘制的范围插入元素\nconst { insertElementFromCreateSelection } = useInsertFromCreateSelection(viewportRef)\n\nconst 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\nprovide(injectKeySlideScale, canvasScale)\n\nreturn (_ctx: any,_cache: any) => {\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_key: \"canvasRef\",\n ref: canvasRef,\n onWheel: _cache[3] || (_cache[3] = $event => handleMousewheelCanvas($event)),\n onMousedown: _cache[4] || (_cache[4] = $event => handleClickBlankArea($event))\n }, [\n (_unref(creatingElement))\n ? (_openBlock(), _createBlock(ElementCreateSelection, {\n key: 0,\n onCreated: _cache[0] || (_cache[0] = data => _unref(insertElementFromCreateSelection)(data))\n }))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", {\n class: \"viewport-wrapper\",\n style: _normalizeStyle({\n width: _unref(viewportStyles).width * _unref(canvasScale) + 'px',\n height: _unref(viewportStyles).height * _unref(canvasScale) + 'px',\n left: _unref(viewportStyles).left + 'px',\n top: _unref(viewportStyles).top + 'px',\n })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(alignmentLines.value, (line, index) => {\n return (_openBlock(), _createBlock(AlignmentLine, {\n key: index,\n type: line.type,\n axis: line.axis,\n length: line.length,\n canvasScale: _unref(canvasScale)\n }, null, 8, [\"type\", \"axis\", \"length\", \"canvasScale\"]))\n }), 128)),\n (_unref(activeElementIdList).length > 1)\n ? (_openBlock(), _createBlock(MultiSelectOperate, {\n key: 0,\n elementList: elementList.value,\n scaleMultiElement: _unref(scaleMultiElement)\n }, null, 8, [\"elementList\", \"scaleMultiElement\"]))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(elementList.value, (element) => {\n return (_openBlock(), _createBlock(Operate, {\n key: element.id,\n elementInfo: element,\n isSelected: _unref(activeElementIdList).includes(element.id),\n isActive: _unref(handleElementId) === element.id,\n isActiveGroupElement: _unref(activeGroupElementId) === element.id,\n isMultiSelect: _unref(activeElementIdList).length > 1,\n rotateElement: _unref(rotateElement),\n scaleElement: _unref(scaleElement),\n openLinkDialog: openLinkDialog,\n dragLineElement: _unref(dragLineElement)\n }, null, 8, [\"elementInfo\", \"isSelected\", \"isActive\", \"isActiveGroupElement\", \"isMultiSelect\", \"rotateElement\", \"scaleElement\", \"dragLineElement\"]))\n }), 128)),\n _createVNode(ViewportBackground)\n ]),\n _createElementVNode(\"div\", {\n class: \"viewport\",\n ref_key: \"viewportRef\",\n ref: viewportRef,\n style: _normalizeStyle({ transform: `scale(${_unref(canvasScale)})` })\n }, [\n (_unref(mouseSelectionVisible))\n ? (_openBlock(), _createBlock(MouseSelection, {\n key: 0,\n top: _unref(mouseSelection).top,\n left: _unref(mouseSelection).left,\n width: _unref(mouseSelection).width,\n height: _unref(mouseSelection).height,\n quadrant: _unref(mouseSelectionQuadrant)\n }, null, 8, [\"top\", \"left\", \"width\", \"height\", \"quadrant\"]))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(elementList.value, (element, index) => {\n return (_openBlock(), _createBlock(EditableElement, {\n key: element.id,\n elementInfo: element,\n elementIndex: index + 1,\n isMultiSelect: _unref(activeElementIdList).length > 1,\n selectElement: _unref(selectElement),\n openLinkDialog: openLinkDialog\n }, null, 8, [\"elementInfo\", \"elementIndex\", \"isMultiSelect\", \"selectElement\"]))\n }), 128))\n ], 4)\n ], 4),\n (_unref(spaceKeyState))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2))\n : _createCommentVNode(\"\", true),\n (_unref(showRuler))\n ? (_openBlock(), _createBlock(Ruler, {\n key: 2,\n viewportStyles: _unref(viewportStyles)\n }, null, 8, [\"viewportStyles\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_Modal, {\n visible: linkDialogVisible.value,\n \"onUpdate:visible\": _cache[2] || (_cache[2] = ($event: any) => ((linkDialogVisible).value = $event)),\n footer: null,\n centered: \"\",\n width: 540,\n destroyOnClose: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(LinkDialog, {\n onClose: _cache[1] || (_cache[1] = ($event: any) => (linkDialogVisible.value = false))\n })\n ]),\n _: 1\n }, 8, [\"visible\"])\n ], 32)), [\n [_directive_contextmenu, contextmenus],\n [_directive_click_outside, removeEditorAreaFocus]\n ])\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=529c7227&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-529c7227\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-5788e0d2\"),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\nimport { SHAPE_LIST, ShapePoolItem } from '@/configs/shapes'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ShapePool',\n emits: [\"select\"],\n setup(__props, { emit }: { emit: ({\n (event: 'select', payload: ShapePoolItem): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst selectShape = (shape: ShapePoolItem) => {\n emit('select', shape)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(SHAPE_LIST), (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) => (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}\n}\n\n})","import script from \"./ShapePool.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ShapePool.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ShapePool.vue?vue&type=style&index=0&id=5788e0d2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5788e0d2\"]])\n\nexport default __exports__","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]","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-bca68faa\"),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\nimport { LINE_LIST, LinePoolItem } from '@/configs/lines'\n\nimport LinePointMarker from '@/views/components/element/LineElement/LinePointMarker.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LinePool',\n emits: [\"select\"],\n setup(__props, { emit }: { emit: ({\n (event: 'select', payload: LinePoolItem): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst selectLine = (line: LinePoolItem) => {\n emit('select', line)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(LINE_LIST), (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) => (selectLine(line))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", _hoisted_5, [\n _createElementVNode(\"defs\", null, [\n (line.points[0])\n ? (_openBlock(), _createBlock(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(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}\n}\n\n})","import script from \"./LinePool.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LinePool.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./LinePool.vue?vue&type=style&index=0&id=bca68faa&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-bca68faa\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-3870b42e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"chart-pool\" }\nconst _hoisted_2 = [\"onClick\"]\n\nimport { PresetChartType } from '@/types/slides'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ChartPool',\n emits: [\"select\"],\n setup(__props, { emit }: { emit: ({\n (event: 'select', payload: PresetChartType): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst chartList: PresetChartType[] = ['bar', 'horizontalBar', 'line', 'area', 'scatter', 'pie', 'ring']\n\nconst selectChart = (chart: PresetChartType) => {\n emit('select', chart)\n}\n\nreturn (_ctx: any,_cache: 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(), _createElementBlock(_Fragment, null, _renderList(chartList, (chart, index) => {\n return _createElementVNode(\"li\", {\n class: \"chart-item\",\n key: index\n }, [\n _createElementVNode(\"div\", {\n class: \"chart-content\",\n onClick: ($event: any) => (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 }), 64))\n ]))\n}\n}\n\n})","import script from \"./ChartPool.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ChartPool.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ChartPool.vue?vue&type=style&index=0&id=3870b42e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3870b42e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-144fbd05\"),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\nimport { ref } from 'vue'\nimport { message } from 'ant-design-vue'\n\ninterface InsertData {\n row: number\n col: number\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'TableGenerator',\n emits: [\"insert\", \"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'insert', payload: InsertData): void\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst endCell = ref([])\nconst customRow = ref(3)\nconst customCol = ref(3)\nconst isCustom = ref(false)\n\nconst handleClickTable = () => {\n if (!endCell.value.length) return\n const [row, col] = endCell.value\n emit('insert', { row, col })\n}\n\nconst 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\nconst close = () => {\n emit('close')\n isCustom.value = false\n}\n\nreturn (_ctx: any,_cache: 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(endCell.value.length ? `${endCell.value[0]} x ${endCell.value[1]}` : ''), 1),\n _createElementVNode(\"div\", {\n class: \"right\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (isCustom.value = !isCustom.value))\n }, _toDisplayString(isCustom.value ? '返回' : '自定义'), 1)\n ]),\n (!isCustom.value)\n ? (_openBlock(), _createElementBlock(\"table\", {\n key: 0,\n onMouseleave: _cache[1] || (_cache[1] = ($event: any) => (endCell.value = [])),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (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) => (endCell.value = [row, col]),\n key: col\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"cell\", { 'active': endCell.value.length && row <= endCell.value[0] && col <= endCell.value[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: customRow.value,\n \"onUpdate:value\": _cache[3] || (_cache[3] = ($event: any) => ((customRow).value = $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: customCol.value,\n \"onUpdate:value\": _cache[4] || (_cache[4] = ($event: any) => ((customCol).value = $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) => (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) => (insertCustomTable()))\n }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n })\n ])\n ]))\n ]))\n}\n}\n\n})","import script from \"./TableGenerator.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./TableGenerator.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./TableGenerator.vue?vue&type=style&index=0&id=144fbd05&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-144fbd05\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-b9437110\"),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\nimport { ref } from 'vue'\nimport { message } from 'ant-design-vue'\n\ntype TypeKey = 'video' | 'audio'\ninterface TabItem {\n key: TypeKey\n label: string\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MediaInput',\n emits: [\"insertVideo\", \"insertAudio\", \"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'insertVideo', payload: string): void\n (event: 'insertAudio', payload: string): void\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst type = ref('video')\n\nconst videoSrc = ref('https://mazwai.com/videvo_files/video/free/2019-01/small_watermarked/181004_04_Dolphins-Whale_06_preview.webm')\nconst audioSrc = ref('https://freesound.org/data/previews/614/614107_11861866-lq.mp3')\n\nconst tabs: TabItem[] = [\n { key: 'video', label: '视频' },\n { key: 'audio', label: '音频' },\n]\n\nconst insertVideo = () => {\n if (!videoSrc.value) return message.error('请先输入正确的视频地址')\n emit('insertVideo', videoSrc.value)\n}\n\nconst insertAudio = () => {\n if (!audioSrc.value) return message.error('请先输入正确的音频地址')\n emit('insertAudio', audioSrc.value)\n}\n\nreturn (_ctx: any,_cache: 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(), _createElementBlock(_Fragment, null, _renderList(tabs, (tab) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': type.value === tab.key }]),\n key: tab.key,\n onClick: ($event: any) => (type.value = tab.key)\n }, _toDisplayString(tab.label), 11, _hoisted_3)\n }), 64))\n ]),\n (type.value === 'video')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createVNode(_component_Input, {\n value: videoSrc.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((videoSrc).value = $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) => (emit('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) => (insertVideo()))\n }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n })\n ])\n ], 64))\n : _createCommentVNode(\"\", true),\n (type.value === 'audio')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createVNode(_component_Input, {\n value: audioSrc.value,\n \"onUpdate:value\": _cache[3] || (_cache[3] = ($event: any) => ((audioSrc).value = $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) => (emit('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) => (insertAudio()))\n }, {\n default: _withCtx(() => [\n _hoisted_9\n ]),\n _: 1\n })\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./MediaInput.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MediaInput.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MediaInput.vue?vue&type=style&index=0&id=b9437110&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b9437110\"]])\n\nexport default __exports__","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 { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1c41d9fe\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"transform\"]\nconst _hoisted_3 = [\"d\"]\n\nimport { computed, ref, watch } from 'vue'\nimport { hfmath } from './hfmath'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'FormulaContent',\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\nconst props = __props\n\n\n\nconst box = ref({ x: 0, y: 0, w: 0, h: 0 })\nconst pathd = ref('')\n\nwatch(() => props.latex, () => {\n const eq = new hfmath(props.latex)\n pathd.value = eq.pathd({})\n box.value = eq.box({})\n}, { immediate: true })\n\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"svg\", {\n class: \"formula-content\",\n overflow: \"visible\",\n width: box.value.w + 32,\n height: box.value.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(${_unref(scale)}, ${_unref(scale)}) translate(0,0) matrix(1,0,0,1,0,0)`,\n \"transform-origin\": \"0 50%\"\n }, [\n _createElementVNode(\"path\", { d: pathd.value }, null, 8, _hoisted_3)\n ], 8, _hoisted_2)\n ], 8, _hoisted_1))\n}\n}\n\n})","import script from \"./FormulaContent.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./FormulaContent.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./FormulaContent.vue?vue&type=style&index=0&id=1c41d9fe&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1c41d9fe\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"innerHTML\"]\n\nimport { computed } from 'vue'\nimport { hfmath } from './hfmath'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'SymbolContent',\n props: {\n latex: {\n type: String,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst svg = computed(() => {\n const eq = new hfmath(props.latex)\n return eq.svg({\n SCALE_X: 10,\n SCALE_Y: 10,\n })\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"symbol-content\",\n innerHTML: _unref(svg)\n }, null, 8, _hoisted_1))\n}\n}\n\n})","import script from \"./SymbolContent.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./SymbolContent.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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, unref as _unref, createTextVNode as _createTextVNode, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2d73bf28\"),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\nimport { computed, 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\nimport { message } from 'ant-design-vue'\n\ninterface Tab {\n label: string\n value: 'symbol' | 'formula'\n}\n\ninterface LatexResult {\n latex: string\n path: string\n w: number\n h: number\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n value: {\n type: String,\n default: '',\n },\n},\n emits: [\"update\", \"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'update', payload: LatexResult): void\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\nconst tabs: Tab[] = [\n { label: '常用符号', value: 'symbol' },\n { label: '预置公式', value: 'formula' },\n]\n\n\n\n\n\nconst formulaList = FORMULA_LIST\nconst symbolList = SYMBOL_LIST\n\nconst latex = ref('')\nconst toolbarState = ref<'symbol' | 'formula'>('symbol')\nconst textAreaRef = ref()\n\nconst selectedSymbolKey = ref(SYMBOL_LIST[0].type)\nconst symbolPool = computed(() => {\n const selectedSymbol = SYMBOL_LIST.find(item => item.type === selectedSymbolKey.value)\n return selectedSymbol?.children || []\n})\n\nonMounted(() => {\n if (props.value) latex.value = props.value\n})\n\nconst update = () => {\n if (!latex.value) return message.error('公式不能为空')\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\nconst insertSymbol = (latex: string) => {\n if (!textAreaRef.value) return\n textAreaRef.value.focus()\n document.execCommand('insertText', false, latex)\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_TextArea = _resolveComponent(\"TextArea\")!\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: latex.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((latex).value = $event)),\n placeholder: \"输入 LaTeX 公式\",\n ref_key: \"textAreaRef\",\n ref: textAreaRef\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n (!latex.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, \"公式预览\"))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createVNode(FormulaContent, {\n width: 518,\n height: 138,\n latex: latex.value\n }, null, 8, [\"latex\"])\n ]))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"div\", _hoisted_9, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(tabs, (tab) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': tab.value === toolbarState.value }]),\n key: tab.value,\n onClick: ($event: any) => (toolbarState.value = tab.value)\n }, _toDisplayString(tab.label), 11, _hoisted_10)\n }), 64))\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n (toolbarState.value === 'symbol')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createElementVNode(\"div\", _hoisted_13, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(symbolList), (group) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"symbol-tab\", { 'active': selectedSymbolKey.value === group.type }]),\n key: group.type,\n onClick: ($event: any) => (selectedSymbolKey.value = group.type)\n }, _toDisplayString(group.label), 11, _hoisted_14))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_15, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(symbolPool), (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"symbol-item\",\n key: item.latex,\n onClick: ($event: any) => (insertSymbol(item.latex))\n }, [\n _createVNode(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(_unref(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) => (latex.value =item.latex)\n }, [\n _createVNode(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) => (emit('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) => (update()))\n }, {\n default: _withCtx(() => [\n _hoisted_22\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=2d73bf28&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2d73bf28\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-5d4eff54\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst mainStore = useMainStore()\nconst { creatingElement } = storeToRefs(mainStore)\nconst { canUndo, canRedo } = storeToRefs(useSnapshotStore())\n\nconst { redo, undo } = useHistorySnapshot()\n\nconst {\n scaleCanvas,\n setCanvasScalePercentage,\n resetCanvas,\n canvasScalePercentage,\n} = useScaleCanvas()\n\nconst canvasScalePresetList = [200, 150, 100, 80, 50]\nconst canvasScaleVisible = ref(false)\n\nconst applyCanvasPresetScale = (value: number) => {\n setCanvasScalePercentage(value)\n canvasScaleVisible.value = false\n}\n\nconst {\n createImageElement,\n createChartElement,\n createTableElement,\n createLatexElement,\n createVideoElement,\n createAudioElement,\n} = useCreateElement()\n\nconst insertImageElement = (files: FileList) => {\n const imageFile = files[0]\n if (!imageFile) return\n getImageDataURL(imageFile).then(dataURL => createImageElement(dataURL))\n}\n\nconst shapePoolVisible = ref(false)\nconst linePoolVisible = ref(false)\nconst chartPoolVisible = ref(false)\nconst tableGeneratorVisible = ref(false)\nconst mediaInputVisible = ref(false)\nconst latexEditorVisible = ref(false)\n\n// 绘制文字范围\nconst drawText = () => {\n mainStore.setCreatingElement({\n type: 'text',\n })\n}\n\n// 绘制形状范围\nconst drawShape = (shape: ShapePoolItem) => {\n mainStore.setCreatingElement({\n type: 'shape',\n data: shape,\n })\n shapePoolVisible.value = false\n}\n\n// 绘制线条路径\nconst drawLine = (line: LinePoolItem) => {\n mainStore.setCreatingElement({\n type: 'line',\n data: line,\n })\n linePoolVisible.value = false\n}\n\nreturn (_ctx: any,_cache: 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_IconGraphicDesign = _resolveComponent(\"IconGraphicDesign\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_IconConnection = _resolveComponent(\"IconConnection\")!\n const _component_IconChartProportion = _resolveComponent(\"IconChartProportion\")!\n const _component_IconInsertTable = _resolveComponent(\"IconInsertTable\")!\n const _component_IconFormula = _resolveComponent(\"IconFormula\")!\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_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': !_unref(canUndo) }]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_unref(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': !_unref(canRedo) }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_unref(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': _unref(creatingElement)?.type === 'text' }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (drawText()))\n }, null, 8, [\"class\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_FileInput, {\n onChange: _cache[3] || (_cache[3] = files => 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: shapePoolVisible.value,\n \"onUpdate:visible\": _cache[5] || (_cache[5] = ($event: any) => ((shapePoolVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(ShapePool, {\n onSelect: _cache[4] || (_cache[4] = shape => 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': _unref(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: linePoolVisible.value,\n \"onUpdate:visible\": _cache[7] || (_cache[7] = ($event: any) => ((linePoolVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(LinePool, {\n onSelect: _cache[6] || (_cache[6] = line => 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': _unref(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: chartPoolVisible.value,\n \"onUpdate:visible\": _cache[9] || (_cache[9] = ($event: any) => ((chartPoolVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(ChartPool, {\n onSelect: _cache[8] || (_cache[8] = chart => { _unref(createChartElement)(chart); chartPoolVisible.value = 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: tableGeneratorVisible.value,\n \"onUpdate:visible\": _cache[12] || (_cache[12] = ($event: any) => ((tableGeneratorVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(TableGenerator, {\n onClose: _cache[10] || (_cache[10] = ($event: any) => (tableGeneratorVisible.value = false)),\n onInsert: _cache[11] || (_cache[11] = ({ row, col }) => { _unref(createTableElement)(row, col); tableGeneratorVisible.value = 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) => (latexEditorVisible.value = true))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Popover, {\n trigger: \"click\",\n visible: mediaInputVisible.value,\n \"onUpdate:visible\": _cache[17] || (_cache[17] = ($event: any) => ((mediaInputVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(MediaInput, {\n onClose: _cache[14] || (_cache[14] = ($event: any) => (mediaInputVisible.value = false)),\n onInsertVideo: _cache[15] || (_cache[15] = src => { _unref(createVideoElement)(src); mediaInputVisible.value = false }),\n onInsertAudio: _cache[16] || (_cache[16] = src => { _unref(createAudioElement)(src); mediaInputVisible.value = 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) => (_unref(scaleCanvas)('-')))\n }),\n _createVNode(_component_Popover, {\n trigger: \"click\",\n visible: canvasScaleVisible.value,\n \"onUpdate:visible\": _cache[19] || (_cache[19] = ($event: any) => ((canvasScaleVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_5, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(canvasScalePresetList, (item) => {\n return _createElementVNode(\"div\", {\n class: \"preset-item\",\n key: item,\n onClick: ($event: any) => (applyCanvasPresetScale(item))\n }, _toDisplayString(item) + \"%\", 9, _hoisted_6)\n }), 64))\n ])\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_unref(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) => (_unref(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) => (_unref(resetCanvas)()))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _createVNode(_component_Modal, {\n visible: latexEditorVisible.value,\n \"onUpdate:visible\": _cache[24] || (_cache[24] = ($event: any) => ((latexEditorVisible).value = $event)),\n footer: null,\n centered: \"\",\n width: 880,\n destroyOnClose: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(LaTeXEditor, {\n onClose: _cache[22] || (_cache[22] = ($event: any) => (latexEditorVisible.value = false)),\n onUpdate: _cache[23] || (_cache[23] = data => { _unref(createLatexElement)(data); latexEditorVisible.value = false })\n })\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=5d4eff54&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5d4eff54\"]])\n\nexport default __exports__","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 { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-cc6b7dca\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"layout-pool\" }\nconst _hoisted_2 = [\"onClick\"]\n\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { Slide } from '@/types/slides'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LayoutPool',\n emits: [\"select\"],\n setup(__props, { emit }: { emit: ({\n (event: 'select', payload: Slide): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst { layouts } = storeToRefs(useSlidesStore())\n\nconst selectSlideTemplate = (slide: Slide) => {\n emit('select', slide)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(layouts), (slide) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"layout-item\",\n key: slide.id,\n onClick: ($event: any) => (selectSlideTemplate(slide))\n }, [\n _createVNode(ThumbnailSlide, {\n class: \"thumbnail\",\n slide: slide,\n size: 180\n }, null, 8, [\"slide\"])\n ], 8, _hoisted_2))\n }), 128))\n ]))\n}\n}\n\n})","import script from \"./LayoutPool.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LayoutPool.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./LayoutPool.vue?vue&type=style&index=0&id=cc6b7dca&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-cc6b7dca\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, unref as _unref, 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-153c0b44\"),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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst keyboardStore = useKeyboardStore()\nconst { selectedSlidesIndex: _selectedSlidesIndex, thumbnailsFocus } = storeToRefs(mainStore)\nconst { slides, slideIndex } = storeToRefs(slidesStore)\nconst { ctrlKeyState, shiftKeyState } = storeToRefs(keyboardStore)\n\nconst { slidesLoadLimit } = useLoadSlides()\n\nconst selectedSlidesIndex = computed(() => [..._selectedSlidesIndex.value, slideIndex.value])\n\nconst presetLayoutPopoverVisible = ref(false)\n\nconst {\n copySlide,\n pasteSlide,\n createSlide,\n createSlideByTemplate,\n copyAndPasteSlide,\n deleteSlide,\n cutSlide,\n selectAllSlide,\n} = useSlideHandler()\n\n// 切换页面\nconst changSlideIndex = (index: number) => {\n mainStore.setActiveElementIdList([])\n\n if (slideIndex.value === index) return\n slidesStore.updateSlideIndex(index)\n}\n\n// 点击缩略图\nconst 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// 设置缩略图工具栏聚焦状态(只有聚焦状态下,该部分的快捷键才能生效)\nconst setThumbnailsFocus = (focus: boolean) => {\n if (thumbnailsFocus.value === focus) return\n mainStore.setThumbnailsFocus(focus)\n\n if (!focus) mainStore.updateSelectedSlidesIndex([])\n}\n\n// 拖拽调整顺序后进行数据的同步\nconst 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\nconst { enterScreening, enterScreeningFromStart } = useScreening()\n\nconst 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\nconst 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\nreturn (_ctx: any,_cache: any) => {\n const _component_IconPlus = _resolveComponent(\"IconPlus\")!\n const _component_IconDown = _resolveComponent(\"IconDown\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\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] = () => setThumbnailsFocus(true))\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_unref(createSlide)()))\n }, [\n _createVNode(_component_IconPlus, { class: \"icon\" }),\n _hoisted_2\n ]),\n _createVNode(_component_Popover, {\n trigger: \"click\",\n placement: \"bottomLeft\",\n visible: presetLayoutPopoverVisible.value,\n \"onUpdate:visible\": _cache[2] || (_cache[2] = ($event: any) => ((presetLayoutPopoverVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(LayoutPool, {\n onSelect: _cache[1] || (_cache[1] = slide => { _unref(createSlideByTemplate)(slide); presetLayoutPopoverVisible.value = 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(_unref(Draggable), {\n class: \"thumbnail-list\",\n modelValue: _unref(slides),\n animation: 300,\n scroll: true,\n scrollSensitivity: 50,\n setData: null,\n onEnd: handleDragEnd,\n itemKey: \"id\"\n }, {\n item: _withCtx(({ element, index }) => [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"thumbnail-item\", {\n 'active': _unref(slideIndex) === index,\n 'selected': _unref(selectedSlidesIndex).includes(index),\n }]),\n onMousedown: $event => handleClickSlideThumbnail($event, index)\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"label\", { 'offset-left': index >= 99 }])\n }, _toDisplayString(_unref(fillDigit)(index + 1, 2)), 3),\n _createVNode(ThumbnailSlide, {\n class: \"thumbnail\",\n slide: element,\n size: 120,\n visible: index < _unref(slidesLoadLimit)\n }, null, 8, [\"slide\", \"visible\"])\n ], 42, _hoisted_4)), [\n [_directive_contextmenu, contextmenusThumbnailItem]\n ])\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ], 32)), [\n [_directive_click_outside, () => setThumbnailsFocus(false)],\n [_directive_contextmenu, contextmenusThumbnails]\n ])\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=153c0b44&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-153c0b44\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-22345a51\"),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\nimport { ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementOpacity',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { handleElement } = storeToRefs(useMainStore())\n\nconst opacity = ref(1)\n\nwatch(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\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst 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\nreturn (_ctx: any,_cache: 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: opacity.value,\n onChange: _cache[0] || (_cache[0] = value => updateOpacity(value as number))\n }, null, 8, [\"step\", \"value\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./ElementOpacity.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementOpacity.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementOpacity.vue?vue&type=style&index=0&id=22345a51&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-22345a51\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-ed8f2044\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"color-block\" }\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ColorButton',\n props: {\n color: {\n type: String,\n required: true,\n },\n},\n setup(__props) {\n\n\n\nreturn (_ctx: any,_cache: 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: __props.color })\n }, null, 4)\n ]),\n _createVNode(_component_IconPlatte, { class: \"color-btn-icon\" })\n ]),\n _: 1\n }))\n}\n}\n\n})","import script from \"./ColorButton.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ColorButton.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ColorButton.vue?vue&type=style&index=0&id=ed8f2044&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-ed8f2044\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-e91e3764\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementOutline',\n props: {\n fixed: {\n type: Boolean,\n default: false,\n },\n},\n setup(__props) {\n\n\n\nconst slidesStore = useSlidesStore()\nconst { handleElement } = storeToRefs(useMainStore())\n\nconst outline = ref()\nconst hasOutline = ref(false)\n\nwatch(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\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst 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\nconst 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\nreturn (_ctx: any,_cache: 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_Popover = _resolveComponent(\"Popover\")!\n const _component_InputNumber = _resolveComponent(\"InputNumber\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (!__props.fixed)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_Switch, {\n checked: hasOutline.value,\n onChange: _cache[0] || (_cache[0] = checked => toggleOutline(checked as boolean))\n }, null, 8, [\"checked\"])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (hasOutline.value && outline.value)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createElementVNode(\"div\", _hoisted_5, [\n _hoisted_6,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: outline.value.style,\n onChange: _cache[1] || (_cache[1] = value => 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: outline.value.color,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = value => updateOutline({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: outline.value.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: outline.value.width,\n onChange: _cache[3] || (_cache[3] = value => updateOutline({ width: value as number })),\n style: {\"flex\":\"3\"}\n }, null, 8, [\"value\"])\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./ElementOutline.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementOutline.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementOutline.vue?vue&type=style&index=0&id=e91e3764&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-e91e3764\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-053ed706\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementShadow',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { handleElement } = storeToRefs(useMainStore())\n\nconst shadow = ref()\nconst hasShadow = ref(false)\n\nwatch(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\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst 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\nconst 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\nreturn (_ctx: any,_cache: any) => {\n const _component_Switch = _resolveComponent(\"Switch\")!\n const _component_Slider = _resolveComponent(\"Slider\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\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: hasShadow.value,\n onChange: _cache[0] || (_cache[0] = checked => toggleShadow(checked as boolean))\n }, null, 8, [\"checked\"])\n ])\n ]),\n (hasShadow.value && shadow.value)\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: shadow.value.h,\n onChange: _cache[1] || (_cache[1] = value => 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: shadow.value.v,\n onChange: _cache[2] || (_cache[2] = value => 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: shadow.value.blur,\n onChange: _cache[3] || (_cache[3] = value => 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: shadow.value.color,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = value => updateShadow({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: shadow.value.color,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./ElementShadow.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementShadow.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementShadow.vue?vue&type=style&index=0&id=053ed706&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-053ed706\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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, unref as _unref, withCtx as _withCtx, createBlock as _createBlock, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5830b9cf\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'TextStylePanel',\n setup(__props) {\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 slidesStore = useSlidesStore()\nconst { handleElement, handleElementId, richTextAttrs, availableFonts } = storeToRefs(useMainStore())\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst updateElement = (props: Partial) => {\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n}\n\nconst fill = ref('#000')\nconst lineHeight = ref()\nconst wordSpace = ref()\nconst textIndent = ref()\nconst paragraphSpace = ref()\n\nwatch(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\nconst 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]\nconst lineHeightOptions = [0.9, 1.0, 1.15, 1.2, 1.4, 1.5, 1.8, 2.0, 2.5, 3.0]\nconst wordSpaceOptions = [0, 1, 2, 3, 4, 5, 6, 8, 10]\nconst textIndentOptions = [0, 48, 96, 144, 192, 240, 288, 336]\nconst paragraphSpaceOptions = [0, 5, 10, 15, 20, 25, 30, 40, 50, 80]\n\n// 设置行高\nconst updateLineHeight = (value: number) => {\n updateElement({ lineHeight: value })\n}\n\n// 设置段间距\nconst updateParagraphSpace = (value: number) => {\n updateElement({ paragraphSpace: value })\n}\n\n// 设置字间距\nconst updateWordSpace = (value: number) => {\n updateElement({ wordSpace: value })\n}\n\n// 设置首行缩进\nconst updateTextIndent = (value: number) => {\n updateElement({ textIndent: value })\n}\n\n// 设置文本框填充\nconst updateFill = (value: string) => {\n updateElement({ fill: value })\n}\n\n// 发射富文本设置命令\nconst emitRichTextCommand = (command: string, value?: string) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { action: { command, value } })\n}\n\n// 发射富文本设置命令(批量)\nconst emitBatchRichTextCommand = (action: RichTextAction[]) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { action })\n}\n\n// 设置富文本超链接\nconst link = ref('')\nconst linkPopoverVisible = ref(false)\n\nwatch(richTextAttrs, () => linkPopoverVisible.value = false)\n\nconst openLinkPopover = () => {\n link.value = richTextAttrs.value.link\n linkPopoverVisible.value = true\n}\nconst 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\nreturn (_ctx: any,_cache: 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\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(presetStyles, (item) => {\n return _createElementVNode(\"div\", {\n class: \"preset-style-item\",\n key: item.label,\n style: _normalizeStyle(item.style),\n onClick: ($event: any) => (emitBatchRichTextCommand(item.cmd))\n }, _toDisplayString(item.label), 13, _hoisted_3)\n }), 64))\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: _unref(richTextAttrs).fontname,\n onChange: _cache[0] || (_cache[0] = value => 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(_unref(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(_unref(WEB_FONTS), (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: _unref(richTextAttrs).fontsize,\n onChange: _cache[1] || (_cache[1] = value => emitRichTextCommand('fontsize', value as string))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconAddText)\n ]),\n default: _withCtx(() => [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(fontSizeOptions, (fontsize) => {\n return _createVNode(_component_SelectOption, {\n key: fontsize,\n value: fontsize\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(fontsize), 1)\n ]),\n _: 2\n }, 1032, [\"value\"])\n }), 64))\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: _unref(richTextAttrs).color,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = value => 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: _unref(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: _unref(richTextAttrs).backcolor,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = value => 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: _unref(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) => (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) => (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: _unref(richTextAttrs).bold,\n onClick: _cache[6] || (_cache[6] = ($event: any) => (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: _unref(richTextAttrs).em,\n onClick: _cache[7] || (_cache[7] = ($event: any) => (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: _unref(richTextAttrs).underline,\n onClick: _cache[8] || (_cache[8] = ($event: any) => (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: _unref(richTextAttrs).strikethrough,\n onClick: _cache[9] || (_cache[9] = ($event: any) => (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) => (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: _unref(richTextAttrs).superscript,\n onClick: _cache[11] || (_cache[11] = ($event: any) => (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: _unref(richTextAttrs).subscript,\n onClick: _cache[12] || (_cache[12] = ($event: any) => (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: _unref(richTextAttrs).code,\n onClick: _cache[13] || (_cache[13] = ($event: any) => (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: _unref(richTextAttrs).blockquote,\n onClick: _cache[14] || (_cache[14] = ($event: any) => (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: linkPopoverVisible.value,\n \"onUpdate:visible\": _cache[19] || (_cache[19] = ($event: any) => ((linkPopoverVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_component_Input, {\n value: link.value,\n \"onUpdate:value\": _cache[15] || (_cache[15] = ($event: any) => ((link).value = $event)),\n placeholder: \"请输入超链接\"\n }, null, 8, [\"value\"]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(_component_Button, {\n size: \"small\",\n disabled: !_unref(richTextAttrs).link,\n onClick: _cache[16] || (_cache[16] = ($event: any) => (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) => (updateLink(link.value)))\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: !!_unref(richTextAttrs).link,\n onClick: _cache[18] || (_cache[18] = ($event: any) => (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: _unref(richTextAttrs).align,\n onChange: _cache[20] || (_cache[20] = e => 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: _unref(richTextAttrs).bulletList,\n onClick: _cache[21] || (_cache[21] = ($event: any) => (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: _unref(richTextAttrs).orderedList,\n onClick: _cache[22] || (_cache[22] = ($event: any) => (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) => (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) => (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: lineHeight.value,\n onChange: _cache[25] || (_cache[25] = value => updateLineHeight(value as number))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconRowHeight)\n ]),\n default: _withCtx(() => [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(lineHeightOptions, (item) => {\n return _createVNode(_component_SelectOption, {\n key: item,\n value: item\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(item) + \"倍\", 1)\n ]),\n _: 2\n }, 1032, [\"value\"])\n }), 64))\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: paragraphSpace.value,\n onChange: _cache[26] || (_cache[26] = value => updateParagraphSpace(value as number))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconVerticalSpacingBetweenItems)\n ]),\n default: _withCtx(() => [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(paragraphSpaceOptions, (item) => {\n return _createVNode(_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 }), 64))\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: wordSpace.value,\n onChange: _cache[27] || (_cache[27] = value => updateWordSpace(value as number))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconFullwidth)\n ]),\n default: _withCtx(() => [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(wordSpaceOptions, (item) => {\n return _createVNode(_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 }), 64))\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: textIndent.value,\n onChange: _cache[28] || (_cache[28] = value => updateTextIndent(value as number))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconIndentRight)\n ]),\n default: _withCtx(() => [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(textIndentOptions, (item) => {\n return _createVNode(_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 }), 64))\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: fill.value,\n \"onUpdate:modelValue\": _cache[29] || (_cache[29] = value => updateFill(value))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: fill.value,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createVNode(_component_Divider),\n _createVNode(ElementOutline),\n _createVNode(_component_Divider),\n _createVNode(ElementShadow),\n _createVNode(_component_Divider),\n _createVNode(ElementOpacity)\n ]))\n}\n}\n\n})","import script from \"./TextStylePanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./TextStylePanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./TextStylePanel.vue?vue&type=style&index=0&id=5830b9cf&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5830b9cf\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-59a1646e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-flip\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\" 垂直翻转\")\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\" 水平翻转\")\n\nimport { ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { ImageOrShapeFlip } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementFlip',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { handleElement } = storeToRefs(useMainStore())\n\nconst flipH = ref(false)\nconst flipV = ref(false)\n\nwatch(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\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst updateFlip = (flipProps: ImageOrShapeFlip) => {\n if (!handleElement.value) return\n slidesStore.updateElement({ id: handleElement.value.id, props: flipProps })\n addHistorySnapshot()\n}\n\nreturn (_ctx: any,_cache: 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: flipV.value,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (updateFlip({ flipV: !flipV.value })))\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: flipH.value,\n onClick: _cache[1] || (_cache[1] = ($event: any) => (updateFlip({ flipH: !flipH.value })))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFlipHorizontally),\n _hoisted_3\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./ElementFlip.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementFlip.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementFlip.vue?vue&type=style&index=0&id=59a1646e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-59a1646e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-37fbdfde\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementFilter',\n setup(__props) {\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\nconst slidesStore = useSlidesStore()\nconst { handleElement, handleElementId } = storeToRefs(useMainStore())\n\nconst filterOptions = ref(JSON.parse(JSON.stringify(defaultFilters)))\nconst hasFilters = ref(false)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nwatch(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// 设置滤镜\nconst 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\nconst 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\nreturn (_ctx: any,_cache: 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: hasFilters.value,\n onChange: _cache[0] || (_cache[0] = checked => toggleFilters(checked as boolean))\n }, null, 8, [\"checked\"])\n ])\n ]),\n (hasFilters.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(filterOptions.value, (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 => updateFilter(filter, value as number)\n }, null, 8, [\"max\", \"step\", \"value\", \"onChange\"])\n ]))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./ElementFilter.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementFilter.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementFilter.vue?vue&type=style&index=0&id=37fbdfde&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-37fbdfde\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, createVNode as _createVNode, resolveComponent as _resolveComponent, 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-7da35bec\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ImageStylePanel',\n setup(__props) {\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\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { handleElement, handleElementId } = storeToRefs(mainStore)\nconst { currentSlide } = storeToRefs(slidesStore)\n\nconst handleImageElement = handleElement as Ref\n\nconst clipPanelVisible = ref(false)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\n// 打开自由裁剪\nconst clipImage = () => {\n mainStore.setClipingImageElementId(handleElementId.value)\n clipPanelVisible.value = false\n}\n\n// 获取原始图片的位置大小\nconst 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// 预设裁剪\nconst 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// 替换图片(保持当前的样式)\nconst replaceImage = (files: FileList) => {\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// 重置图片:清除全部样式\nconst 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// 将图片设置为背景\nconst 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\nreturn (_ctx: any,_cache: any) => {\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_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(${_unref(handleImageElement).src})` })\n }, null, 4),\n _createVNode(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) => (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: clipPanelVisible.value,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = ($event: any) => ((clipPanelVisible).value = $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(_unref(shapeClipPathOptions), (item, key) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"shape-clip-item\",\n key: key,\n onClick: ($event: any) => (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(), _createElementBlock(_Fragment, null, _renderList(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) => (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 }), 64))\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(ElementFilter),\n _createVNode(_component_Divider),\n _createVNode(ElementOutline),\n _createVNode(_component_Divider),\n _createVNode(ElementShadow),\n _createVNode(_component_Divider),\n _createVNode(_component_FileInput, {\n onChange: _cache[2] || (_cache[2] = files => 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) => (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) => (setBackgroundImage()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTheme, { class: \"btn-icon\" }),\n _hoisted_10\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./ImageStylePanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ImageStylePanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ImageStylePanel.vue?vue&type=style&index=0&id=7da35bec&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7da35bec\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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, unref as _unref, renderList as _renderList, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-02998580\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ShapeStylePanel',\n setup(__props) {\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { handleElement, handleElementId, richTextAttrs, availableFonts } = storeToRefs(mainStore)\n\nconst handleShapeElement = handleElement as Ref\n\nconst fill = ref('#000')\nconst gradient = ref({\n type: 'linear', \n rotate: 0,\n color: ['#fff', '#fff'],\n})\nconst fillType = ref('fill')\nconst textAlign = ref('middle')\n\nwatch(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\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst updateElement = (props: Partial) => {\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n}\n\n// 设置填充类型:渐变、纯色\nconst 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// 设置渐变填充\nconst updateGradient = (gradientProps: Partial) => {\n if (!gradient.value) return\n const _gradient: ShapeGradient = { ...gradient.value, ...gradientProps }\n updateElement({ gradient: _gradient })\n}\n\n// 设置填充色\nconst updateFill = (value: string) => {\n updateElement({ fill: value })\n}\n\nconst 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\nconst 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\nconst emitRichTextCommand = (command: string, value?: string) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { action: { command, value } })\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_Slider = _resolveComponent(\"Slider\")!\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\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Select, {\n style: {\"flex\":\"10\"},\n value: fillType.value,\n onChange: _cache[0] || (_cache[0] = value => 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 (fillType.value === 'fill')\n ? (_openBlock(), _createBlock(_component_Popover, {\n key: 0,\n trigger: \"click\"\n }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: fill.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = value => updateFill(value))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: fill.value,\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: gradient.value.type,\n onChange: _cache[2] || (_cache[2] = value => 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 (fillType.value === '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: gradient.value.color[0],\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = value => updateGradient({ color: [value, gradient.value.color[1]] }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: gradient.value.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: gradient.value.color[1],\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = value => updateGradient({ color: [gradient.value.color[0], value] }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: gradient.value.color[1],\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n (gradient.value.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: gradient.value.rotate,\n onChange: _cache[5] || (_cache[5] = value => updateGradient({ rotate: value as number }))\n }, null, 8, [\"value\"])\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n : _createCommentVNode(\"\", true),\n _createVNode(ElementFlip),\n _createVNode(_component_Divider),\n (_unref(handleShapeElement).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: _unref(richTextAttrs).fontname,\n onChange: _cache[6] || (_cache[6] = value => 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(_unref(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(_unref(WEB_FONTS), (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: _unref(richTextAttrs).fontsize,\n onChange: _cache[7] || (_cache[7] = value => emitRichTextCommand('fontsize', value as string))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconAddText)\n ]),\n default: _withCtx(() => [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(fontSizeOptions, (fontsize) => {\n return _createVNode(_component_SelectOption, {\n key: fontsize,\n value: fontsize\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(fontsize), 1)\n ]),\n _: 2\n }, 1032, [\"value\"])\n }), 64))\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: _unref(richTextAttrs).color,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = value => 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: _unref(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: _unref(richTextAttrs).backcolor,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = value => 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: _unref(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) => (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) => (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: _unref(richTextAttrs).bold,\n onClick: _cache[12] || (_cache[12] = ($event: any) => (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: _unref(richTextAttrs).em,\n onClick: _cache[13] || (_cache[13] = ($event: any) => (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: _unref(richTextAttrs).underline,\n onClick: _cache[14] || (_cache[14] = ($event: any) => (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) => (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: _unref(richTextAttrs).align,\n onChange: _cache[16] || (_cache[16] = e => 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: textAlign.value,\n onChange: _cache[17] || (_cache[17] = e => 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(ElementOutline),\n _createVNode(_component_Divider),\n _createVNode(ElementShadow),\n _createVNode(_component_Divider),\n _createVNode(ElementOpacity)\n ]))\n}\n}\n\n})","import script from \"./ShapeStylePanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ShapeStylePanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ShapeStylePanel.vue?vue&type=style&index=0&id=02998580&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-02998580\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, 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-938968a2\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LineStylePanel',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { handleElement } = storeToRefs(useMainStore())\n\nconst handleLineElement = handleElement as Ref\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst updateLine = (props: Partial) => {\n if (!handleElement.value) return\n slidesStore.updateElement({ id: handleElement.value.id, props })\n addHistorySnapshot()\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_InputNumber = _resolveComponent(\"InputNumber\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\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: _unref(handleLineElement).style,\n onChange: _cache[0] || (_cache[0] = value => 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: _unref(handleLineElement).color,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = value => updateLine({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: _unref(handleLineElement).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: _unref(handleLineElement).width,\n onChange: _cache[2] || (_cache[2] = value => 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: _unref(handleLineElement).points[0],\n onChange: _cache[3] || (_cache[3] = value => updateLine({ points: [value as 'arrow' | 'dot', _unref(handleLineElement).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: _unref(handleLineElement).points[1],\n onChange: _cache[4] || (_cache[4] = value => updateLine({ points: [_unref(handleLineElement).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(ElementShadow)\n ]))\n}\n}\n\n})","import script from \"./LineStylePanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LineStylePanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./LineStylePanel.vue?vue&type=style&index=0&id=938968a2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-938968a2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, unref as _unref, 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-53b32689\"),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\nimport { computed, onMounted, onUnmounted, PropType, ref } from 'vue'\nimport { ChartData } from '@/types/slides'\nimport { KEYS } from '@/configs/hotkey'\nimport { pasteCustomClipboardString, pasteExcelClipboardString } from '@/utils/clipboard'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ChartDataEditor',\n props: {\n data: {\n type: Object as PropType,\n required: true,\n }\n},\n emits: [\"save\", \"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'save', payload: ChartData): void\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst CELL_WIDTH = 100\nconst CELL_HEIGHT = 32\n\nconst selectedRange = ref([0, 0])\nconst tempRangeSize = ref({ width: 0, height: 0 })\nconst focusCell = ref<[number, number] | null>(null)\n\n// 当前选区的边框线条位置\nconst 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// 当前选区的缩放点位置\nconst 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\nconst 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\nonMounted(initData)\n\n// 快捷键监听:回车移动焦点到下一行\nconst 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\nconst keyboardListener = (e: KeyboardEvent) => {\n const key = e.key.toUpperCase()\n if (key === KEYS.ENTER) moveNextRow()\n}\n\nonMounted(() => {\n document.addEventListener('keydown', keyboardListener)\n})\nonUnmounted(() => {\n document.removeEventListener('keydown', keyboardListener)\n})\n\n// 获取当前图表DOM中的数据,整理格式化后传递出去\nconst 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// 清空表格数据\nconst 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// 自定义粘贴事件(尝试读取剪贴板中的表格数据)\nconst 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// 关闭图表数据编辑器\nconst closeEditor = () => emit('close')\n\n// 鼠标拖拽修改选中的数据范围\nconst 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\nreturn (_ctx: any,_cache: 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: tempRangeSize.value.width + 'px',\n height: tempRangeSize.value.height + 'px',\n })\n }, null, 4),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(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(_unref(resizablePointStyle)),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (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 <= selectedRange.value[1]) || (rowIndex === 1 && colIndex <= selectedRange.value[0]) })\n }, [\n _createElementVNode(\"input\", {\n class: _normalizeClass(['item', { 'selected': rowIndex <= selectedRange.value[1] && colIndex <= selectedRange.value[0] }]),\n id: `cell-${rowIndex - 1}-${colIndex - 1}`,\n autocomplete: \"off\",\n onFocus: ($event: any) => (focusCell.value = [rowIndex - 1, colIndex - 1]),\n onPaste: $event => 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) => (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) => (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) => (getTableData())),\n style: {\"margin-left\":\"10px\"}\n }, {\n default: _withCtx(() => [\n _hoisted_10\n ]),\n _: 1\n })\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./ChartDataEditor.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ChartDataEditor.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ChartDataEditor.vue?vue&type=style&index=0&id=53b32689&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-53b32689\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, unref as _unref, 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-769d6876\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\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\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { handleElement, handleElementId } = storeToRefs(mainStore)\nconst { theme } = storeToRefs(slidesStore)\n\nconst handleChartElement = handleElement as Ref\n\nconst chartDataEditorVisible = ref(false)\nconst presetThemesVisible = ref(false)\nconst presetThemeColorHoverIndex = ref<[number, number]>([-1, -1])\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst fill = ref('#000')\n\nconst themeColor = ref([])\nconst gridColor = ref('')\nconst legend = ref('')\n\nconst lineSmooth = ref(true)\nconst showLine = ref(true)\nconst showArea = ref(false)\nconst horizontalBars = ref(false)\nconst donut = ref(false)\nconst stackBars = ref(false)\n\nwatch(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\nconst updateElement = (props: Partial) => {\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n}\n\n// 设置图表数据\nconst updateData = (data: ChartData) => {\n chartDataEditorVisible.value = false\n updateElement({ data })\n}\n\n// 设置填充色\nconst updateFill = (value: string) => {\n updateElement({ fill: value })\n}\n\n// 设置其他选项:柱状图转条形图、折线图转面积图、折线图转散点图、饼图转环形图、折线图开关平滑曲线\nconst updateOptions = (optionProps: ChartOptions) => {\n const _handleElement = handleElement.value as PPTChartElement\n\n const newOptions = { ..._handleElement.options, ...optionProps }\n updateElement({ options: newOptions })\n}\n\n// 设置主题色\nconst 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// 添加主题色\nconst addThemeColor = () => {\n const props = {\n themeColor: [...themeColor.value, theme.value.themeColor],\n }\n updateElement(props)\n}\n\n// 使用预置主题配色\nconst applyPresetTheme = (colors: string[], index: number) => {\n const themeColor = colors.slice(0, index + 1)\n updateElement({ themeColor })\n presetThemesVisible.value = false\n}\n\n// 删除主题色\nconst deleteThemeColor = (index: number) => {\n const props = {\n themeColor: themeColor.value.filter((c, i) => i !== index),\n }\n updateElement(props)\n}\n\n// 设置网格颜色\nconst updateGridColor = (gridColor: string) => {\n updateElement({ gridColor })\n}\n\n// 设置图例位置/不显示\nconst updateLegend = (legend: '' | 'top' | 'bottom') => {\n updateElement({ legend })\n}\n\nconst openDataEditor = () => chartDataEditorVisible.value = true\n\nemitter.on(EmitterEvents.OPEN_CHART_DATA_EDITOR, openDataEditor)\nonUnmounted(() => {\n emitter.off(EmitterEvents.OPEN_CHART_DATA_EDITOR, openDataEditor)\n})\n\n// handleElement: handleElement as Ref,\n\nreturn (_ctx: any,_cache: 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_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_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) => (chartDataEditorVisible.value = true))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconEdit, { class: \"btn-icon\" }),\n _hoisted_2\n ]),\n _: 1\n }),\n _createVNode(_component_Divider),\n (_unref(handleChartElement).chartType === 'line')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_Checkbox, {\n onChange: _cache[1] || (_cache[1] = e => updateOptions({ showArea: e.target.checked })),\n checked: showArea.value,\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 => updateOptions({ showLine: !e.target.checked })),\n checked: !showLine.value,\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 => updateOptions({ lineSmooth: e.target.checked })),\n checked: lineSmooth.value\n }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n }, 8, [\"checked\"])\n ])\n ], 64))\n : _createCommentVNode(\"\", true),\n (_unref(handleChartElement).chartType === 'bar')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createVNode(_component_Checkbox, {\n onChange: _cache[4] || (_cache[4] = e => updateOptions({ horizontalBars: e.target.checked })),\n checked: horizontalBars.value\n }, {\n default: _withCtx(() => [\n _hoisted_9\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(_component_Checkbox, {\n onChange: _cache[5] || (_cache[5] = e => updateOptions({ stackBars: e.target.checked })),\n checked: stackBars.value\n }, {\n default: _withCtx(() => [\n _hoisted_10\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(handleChartElement).chartType === 'pie')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n _createVNode(_component_Checkbox, {\n onChange: _cache[6] || (_cache[6] = e => updateOptions({ donut: e.target.checked })),\n checked: donut.value\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: legend.value,\n onChange: _cache[7] || (_cache[7] = value => 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: fill.value,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = value => updateFill(value))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: fill.value,\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: gridColor.value,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = value => updateGridColor(value))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: gridColor.value,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createVNode(_component_Divider),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(themeColor.value, (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 => updateTheme(value, index)\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\"])\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_23, [\n _createVNode(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) => (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: presetThemesVisible.value,\n \"onUpdate:visible\": _cache[11] || (_cache[11] = ($event: any) => ((presetThemesVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_25, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(presetChartThemes, (item, index) => {\n return _createElementVNode(\"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': presetThemeColorHoverIndex.value[0] === index && itemIndex <= presetThemeColorHoverIndex.value[1] }]),\n key: color,\n style: _normalizeStyle({ backgroundColor: color }),\n onClick: ($event: any) => (applyPresetTheme(item, itemIndex)),\n onMouseenter: ($event: any) => (presetThemeColorHoverIndex.value = [index, itemIndex]),\n onMouseleave: _cache[10] || (_cache[10] = ($event: any) => (presetThemeColorHoverIndex.value = [-1, -1]))\n }, null, 46, _hoisted_26))\n }), 128))\n ])\n }), 64))\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: themeColor.value.length >= 10,\n style: {\"flex\":\"3\"},\n onClick: _cache[12] || (_cache[12] = ($event: any) => (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(ElementOutline),\n _createVNode(_component_Modal, {\n visible: chartDataEditorVisible.value,\n \"onUpdate:visible\": _cache[15] || (_cache[15] = ($event: any) => ((chartDataEditorVisible).value = $event)),\n footer: null,\n centered: \"\",\n closable: false,\n width: 648,\n destroyOnClose: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(ChartDataEditor, {\n data: _unref(handleChartElement).data,\n onClose: _cache[13] || (_cache[13] = ($event: any) => (chartDataEditorVisible.value = false)),\n onSave: _cache[14] || (_cache[14] = value => updateData(value))\n }, null, 8, [\"data\"])\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=769d6876&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-769d6876\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, unref as _unref, 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-7e28e1d8\"),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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'TableStylePanel',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { handleElement, handleElementId, selectedTableCells: selectedCells, availableFonts } = storeToRefs(useMainStore())\nconst themeColor = computed(() => slidesStore.theme.themeColor)\n\nconst fontSizeOptions = [\n '12px', '14px', '16px', '18px', '20px', '22px', '24px', '28px', '32px',\n]\n\nconst 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\nconst theme = ref()\nconst hasTheme = ref(false)\nconst rowCount = ref(0)\nconst colCount = ref(0)\nconst minRowCount = ref(0)\nconst minColCount = ref(0)\n\nwatch(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\nconst { addHistorySnapshot } = useHistorySnapshot()\n\n// 更新当前选中单元格的文本样式状态\nconst 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\nonMounted(() => {\n if (selectedCells.value.length) updateTextAttrState()\n})\n\nwatch(selectedCells, updateTextAttrState)\n\nconst updateElement = (props: Partial) => {\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n}\n\n// 设置单元格内容文本样式\nconst 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// 更新表格主题:主题色、标题行、汇总行、第一列、最后一列\nconst updateTheme = (themeProp: Partial) => {\n if (!theme.value) return\n const _theme = { ...theme.value, ...themeProp }\n updateElement({ theme: _theme })\n}\n\n// 开启/关闭表格主题\nconst 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// 设置表格行数\nconst 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// 设置表格列数\nconst 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\nreturn (_ctx: any,_cache: 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_IconMinus = _resolveComponent(\"IconMinus\")!\n const _component_IconPlus = _resolveComponent(\"IconPlus\")!\n const _component_Switch = _resolveComponent(\"Switch\")!\n const _component_Checkbox = _resolveComponent(\"Checkbox\")!\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: textAttrs.value.fontname,\n onChange: _cache[0] || (_cache[0] = value => 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(_unref(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(_unref(WEB_FONTS), (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: textAttrs.value.fontsize,\n onChange: _cache[1] || (_cache[1] = value => updateTextAttrs({ fontsize: value as string }))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconAddText)\n ]),\n default: _withCtx(() => [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(fontSizeOptions, (fontsize) => {\n return _createVNode(_component_SelectOption, {\n key: fontsize,\n value: fontsize\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(fontsize), 1)\n ]),\n _: 2\n }, 1032, [\"value\"])\n }), 64))\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: textAttrs.value.color,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = value => 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: textAttrs.value.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: textAttrs.value.backcolor,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = value => 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: textAttrs.value.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: textAttrs.value.bold,\n onClick: _cache[4] || (_cache[4] = ($event: any) => (updateTextAttrs({ bold: !textAttrs.value.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: textAttrs.value.em,\n onClick: _cache[5] || (_cache[5] = ($event: any) => (updateTextAttrs({ em: !textAttrs.value.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: textAttrs.value.underline,\n onClick: _cache[6] || (_cache[6] = ($event: any) => (updateTextAttrs({ underline: !textAttrs.value.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: textAttrs.value.strikethrough,\n onClick: _cache[7] || (_cache[7] = ($event: any) => (updateTextAttrs({ strikethrough: !textAttrs.value.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: textAttrs.value.align,\n onChange: _cache[8] || (_cache[8] = e => 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(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: rowCount.value <= 1,\n onClick: _cache[9] || (_cache[9] = ($event: any) => (setTableRow(rowCount.value - 1)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconMinus)\n ]),\n _: 1\n }, 8, [\"disabled\"]),\n _createElementVNode(\"div\", _hoisted_5, _toDisplayString(rowCount.value), 1),\n _createVNode(_component_Button, {\n class: \"btn\",\n disabled: rowCount.value >= 30,\n onClick: _cache[10] || (_cache[10] = ($event: any) => (setTableRow(rowCount.value + 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: colCount.value <= 1,\n onClick: _cache[11] || (_cache[11] = ($event: any) => (setTableCol(colCount.value - 1)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconMinus)\n ]),\n _: 1\n }, 8, [\"disabled\"]),\n _createElementVNode(\"div\", _hoisted_9, _toDisplayString(colCount.value), 1),\n _createVNode(_component_Button, {\n class: \"btn\",\n disabled: colCount.value >= 30,\n onClick: _cache[12] || (_cache[12] = ($event: any) => (setTableCol(colCount.value + 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: hasTheme.value,\n onChange: _cache[13] || (_cache[13] = checked => toggleTheme(checked as boolean))\n }, null, 8, [\"checked\"])\n ])\n ]),\n (theme.value)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_13, [\n _createVNode(_component_Checkbox, {\n onChange: _cache[14] || (_cache[14] = e => updateTheme({ rowHeader: e.target.checked })),\n checked: theme.value.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 => updateTheme({ rowFooter: e.target.checked })),\n checked: theme.value.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 => updateTheme({ colHeader: e.target.checked })),\n checked: theme.value.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 => updateTheme({ colFooter: e.target.checked })),\n checked: theme.value.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: theme.value.color,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = value => updateTheme({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: theme.value.color,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./TableStylePanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./TableStylePanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./TableStylePanel.vue?vue&type=style&index=0&id=7e28e1d8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7e28e1d8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-546adf8c\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LatexStylePanel',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { handleElement } = storeToRefs(useMainStore())\n\nconst handleLatexElement = handleElement as Ref\n\nconst latexEditorVisible = ref(false)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst updateLatex = (props: Partial) => {\n if (!handleElement.value) return\n slidesStore.updateElement({ id: handleElement.value.id, props })\n addHistorySnapshot()\n}\n\nconst 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\nconst openLatexEditor = () => latexEditorVisible.value = true\n\nemitter.on(EmitterEvents.OPEN_LATEX_EDITOR, openLatexEditor)\nonUnmounted(() => {\n emitter.off(EmitterEvents.OPEN_LATEX_EDITOR, openLatexEditor)\n})\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_InputNumber = _resolveComponent(\"InputNumber\")!\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) => (latexEditorVisible.value = 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: _unref(handleLatexElement).color,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = value => updateLatex({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: _unref(handleLatexElement).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: _unref(handleLatexElement).strokeWidth,\n onChange: _cache[2] || (_cache[2] = value => updateLatex({ strokeWidth: value as number })),\n style: {\"flex\":\"3\"}\n }, null, 8, [\"value\"])\n ]),\n _createVNode(_component_Modal, {\n visible: latexEditorVisible.value,\n \"onUpdate:visible\": _cache[5] || (_cache[5] = ($event: any) => ((latexEditorVisible).value = $event)),\n footer: null,\n centered: \"\",\n width: 880,\n destroyOnClose: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(LaTeXEditor, {\n value: _unref(handleLatexElement).latex,\n onClose: _cache[3] || (_cache[3] = ($event: any) => (latexEditorVisible.value = false)),\n onUpdate: _cache[4] || (_cache[4] = data => { updateLatexData(data); latexEditorVisible.value = false })\n }, null, 8, [\"value\"])\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]))\n}\n}\n\n})","import script from \"./LatexStylePanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LatexStylePanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./LatexStylePanel.vue?vue&type=style&index=0&id=546adf8c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-546adf8c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, 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-ff7125dc\"),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\nimport { Ref } 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'VideoStylePanel',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { handleElement } = storeToRefs(useMainStore())\n\nconst handleVideoElement = handleElement as Ref\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst updateVideo = (props: Partial) => {\n if (!handleElement.value) return\n slidesStore.updateElement({ id: handleElement.value.id, props })\n addHistorySnapshot()\n}\n\n// 设置视频预览封面\nconst setVideoPoster = (files: FileList) => {\n const imageFile = files[0]\n if (!imageFile) return\n getImageDataURL(imageFile).then(dataURL => updateVideo({ poster: dataURL }))\n}\n\nreturn (_ctx: any,_cache: 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 => setVideoPoster(files))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", {\n class: \"content\",\n style: _normalizeStyle({ backgroundImage: `url(${_unref(handleVideoElement).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) => (updateVideo({ poster: '' })))\n }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","import script from \"./VideoStylePanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./VideoStylePanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./VideoStylePanel.vue?vue&type=style&index=0&id=ff7125dc&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-ff7125dc\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, 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-5d723d50\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AudioStylePanel',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { handleElement } = storeToRefs(useMainStore())\n\nconst handleAudioElement = handleElement as Ref\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst updateAudio = (props: Partial) => {\n if (!handleElement.value) return\n slidesStore.updateElement({ id: handleElement.value.id, props })\n addHistorySnapshot()\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\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: _unref(handleAudioElement).color,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = value => updateAudio({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: _unref(handleAudioElement).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: _unref(handleAudioElement).autoplay,\n onChange: _cache[1] || (_cache[1] = checked => 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: _unref(handleAudioElement).loop,\n onChange: _cache[2] || (_cache[2] = checked => updateAudio({ loop: checked as boolean }))\n }, null, 8, [\"checked\"])\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./AudioStylePanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./AudioStylePanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./AudioStylePanel.vue?vue&type=style&index=0&id=5d723d50&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5d723d50\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, unref as _unref, 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-71469855\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MultiStylePanel',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { richTextAttrs, availableFonts, activeElementList } = storeToRefs(useMainStore())\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst updateElement = (id: string, props: Partial) => {\n slidesStore.updateElement({ id, props })\n addHistorySnapshot()\n}\n\nconst 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\nconst fill = ref('#fff')\nconst outline = ref({\n width: 0,\n color: '#fff',\n style: 'solid',\n})\n\n// 批量修改填充色(表格元素为单元格填充、音频元素为图标颜色)\nconst 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// 修改边框/线条样式\nconst 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// 修改文字样式\nconst 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\nreturn (_ctx: any,_cache: any) => {\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\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: fill.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = value => updateFill(value))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: fill.value,\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: outline.value.style,\n onChange: _cache[1] || (_cache[1] = value => 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: outline.value.color,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = value => updateOutline({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: outline.value.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: outline.value.width,\n onChange: _cache[3] || (_cache[3] = value => 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: _unref(richTextAttrs).fontname,\n onChange: _cache[4] || (_cache[4] = value => 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(_unref(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(_unref(WEB_FONTS), (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: _unref(richTextAttrs).fontsize,\n onChange: _cache[5] || (_cache[5] = value => updateFontStyle('fontsize', value as string))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconAddText)\n ]),\n default: _withCtx(() => [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(fontSizeOptions, (fontsize) => {\n return _createVNode(_component_SelectOption, {\n key: fontsize,\n value: fontsize\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(fontsize), 1)\n ]),\n _: 2\n }, 1032, [\"value\"])\n }), 64))\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: _unref(richTextAttrs).color,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = value => 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: _unref(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: _unref(richTextAttrs).backcolor,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = value => 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: _unref(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) => (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) => (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: _unref(richTextAttrs).align,\n onChange: _cache[10] || (_cache[10] = e => 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}\n}\n\n})","import script from \"./MultiStylePanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MultiStylePanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MultiStylePanel.vue?vue&type=style&index=0&id=71469855&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-71469855\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"element-style-panel\" }\n\nimport { computed } 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\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\nconst { activeElementIdList, activeElementList, handleElement, activeGroupElementId } = storeToRefs(useMainStore())\n\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_unref(currentPanelComponent))))\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, unref as _unref, 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-6bf6c951\"),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\nimport { computed, ref, watch } from 'vue'\nimport { round } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementPositionPanel',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { handleElement, handleElementId } = storeToRefs(useMainStore())\n\nconst left = ref(0)\nconst top = ref(0)\nconst width = ref(0)\nconst height = ref(0)\nconst rotate = ref(0)\nconst fixedRatio = ref(false)\n\nconst minSize = computed(() => {\n if (!handleElement.value) return 20\n return MIN_SIZE[handleElement.value.type] || 20\n})\n\nwatch(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\nconst { orderElement } = useOrderElement()\nconst { alignElementToCanvas } = useAlignElementToCanvas()\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\n// 设置元素位置\nconst updateLeft = (value: number) => {\n const props = { left: value }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n}\nconst updateTop = (value: number) => {\n const props = { top: value }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n}\n\n// 设置元素宽度、高度、旋转角度\nconst updateWidth = (value: number) => {\n const props = { width: value }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n}\nconst updateHeight = (value: number) => {\n const props = { height: value }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n}\nconst updateRotate = (value: number) => {\n const props = { rotate: value }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n}\n\n// 固定元素的宽高比\nconst updateFixedRatio = (value: boolean) => {\n const props = { fixedRatio: value }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n}\n\n// 将元素旋转45度(顺时针或逆时针)\nconst 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\nreturn (_ctx: any,_cache: 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) => (_unref(orderElement)(_unref(handleElement)!, _unref(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) => (_unref(orderElement)(_unref(handleElement)!, _unref(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) => (_unref(orderElement)(_unref(handleElement)!, _unref(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) => (_unref(orderElement)(_unref(handleElement)!, _unref(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) => (_unref(alignElementToCanvas)(_unref(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) => (_unref(alignElementToCanvas)(_unref(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) => (_unref(alignElementToCanvas)(_unref(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) => (_unref(alignElementToCanvas)(_unref(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) => (_unref(alignElementToCanvas)(_unref(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) => (_unref(alignElementToCanvas)(_unref(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: left.value,\n onChange: _cache[10] || (_cache[10] = value => updateLeft(value as number)),\n style: {\"flex\":\"4\"}\n }, null, 8, [\"value\"]),\n _hoisted_10,\n _createVNode(_component_InputNumber, {\n step: 5,\n value: top.value,\n onChange: _cache[11] || (_cache[11] = value => updateTop(value as number)),\n style: {\"flex\":\"4\"}\n }, null, 8, [\"value\"])\n ]),\n _hoisted_11,\n (_unref(handleElement)!.type !== 'line')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_12, [\n _hoisted_13,\n _createVNode(_component_InputNumber, {\n min: _unref(minSize),\n max: 1500,\n step: 5,\n value: width.value,\n onChange: _cache[12] || (_cache[12] = value => updateWidth(value as number)),\n style: {\"flex\":\"4\"}\n }, null, 8, [\"min\", \"value\"]),\n (['image', 'shape', 'audio'].includes(_unref(handleElement)!.type))\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (fixedRatio.value)\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) => (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) => (updateFixedRatio(true)))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]))\n ], 64))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_14)),\n _createVNode(_component_InputNumber, {\n min: _unref(minSize),\n max: 800,\n step: 5,\n disabled: _unref(handleElement)!.type === 'text',\n value: height.value,\n onChange: _cache[15] || (_cache[15] = value => 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(_unref(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) => (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) => (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: rotate.value,\n onChange: _cache[18] || (_cache[18] = value => updateRotate(value as number)),\n style: {\"flex\":\"4\"}\n }, null, 8, [\"value\"])\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./ElementPositionPanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementPositionPanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementPositionPanel.vue?vue&type=style&index=0&id=6bf6c951&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6bf6c951\"]])\n\nexport default __exports__","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]","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-2f69234f\"),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\nimport { computed, 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\ntype AnimationType = 'in' | 'out' | 'attention'\ninterface TabItem {\n key: AnimationType\n label: string\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementAnimationPanel',\n setup(__props) {\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\nconst animationTypes: AnimationType[] = ['in', 'out', 'attention']\n\nconst slidesStore = useSlidesStore()\nconst { handleElement, handleElementId } = storeToRefs(useMainStore())\nconst { currentSlide, formatedAnimations, currentSlideAnimations } = storeToRefs(slidesStore)\n\nconst tabs: TabItem[] = [\n { key: 'in', label: '入场' },\n { key: 'out', label: '退场' },\n { key: 'attention', label: '强调' },\n]\nconst activeTab = ref('in')\n\nwatch(() => handleElementId.value, () => {\n animationPoolVisible.value = false\n})\n\nconst hoverPreviewAnimation = ref('')\nconst animationPoolVisible = ref(false)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\n// 当前页面的动画列表\nconst 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// 当前选中元素的入场动画信息\nconst handleElementAnimation = computed(() => {\n const animations = currentSlideAnimations.value\n const animation = animations.filter(item => item.elId === handleElementId.value)\n return animation || []\n})\n\n// 删除元素动画\nconst deleteAnimation = (id: string) => {\n const animations = currentSlideAnimations.value.filter(item => item.id !== id)\n slidesStore.updateSlide({ animations })\n addHistorySnapshot()\n}\n\n// 拖拽修改动画顺序后同步数据\nconst 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// 执行动画预览\nconst 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// 修改元素动画持续时间\nconst 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// 修改触发方式\nconst 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// 修改元素动画,并执行一次预览\nconst 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\nconst handleAnimationId = ref('')\n// 添加元素动画,并执行一次预览\nconst 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后再移除遮罩层,否则打开面板后迅速滑入鼠标预览会导致抖动\nconst popoverMaskHide = ref(false)\nconst handlePopoverVisibleChange = (visible: boolean) => {\n if (visible) {\n setTimeout(() => popoverMaskHide.value = true, 600)\n }\n else popoverMaskHide.value = false\n}\n\nconst openAnimationPool = (elementId: string) => {\n animationPoolVisible.value = true\n handleAnimationId.value = elementId\n handlePopoverVisibleChange(true)\n}\n\nconst animations = {\n in: ENTER_ANIMATIONS,\n out: EXIT_ANIMATIONS,\n attention: ATTENTION_ANIMATIONS,\n}\n\nreturn (_ctx: any,_cache: 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\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(handleElement))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createVNode(_component_Popover, {\n trigger: \"click\",\n visible: animationPoolVisible.value,\n \"onUpdate:visible\": _cache[2] || (_cache[2] = ($event: any) => ((animationPoolVisible).value = $event)),\n onVisibleChange: _cache[3] || (_cache[3] = visible => handlePopoverVisibleChange(visible))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(tabs, (tab) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass(['tab', tab.key, { 'active': activeTab.value === tab.key }]),\n key: tab.key,\n onClick: ($event: any) => (activeTab.value = tab.key)\n }, _toDisplayString(tab.label), 11, _hoisted_4)\n }), 64))\n ]),\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(animationTypes, (key) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (activeTab.value === key)\n ? (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['animation-pool', key]),\n key: key\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(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) => (hoverPreviewAnimation.value = item.value),\n onMouseleave: _cache[0] || (_cache[0] = ($event: any) => (hoverPreviewAnimation.value = '')),\n onClick: ($event: any) => (addAnimation(key, item.value))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"animation-box\", [\n `${_unref(ANIMATION_CLASS_PREFIX)}animated`,\n `${_unref(ANIMATION_CLASS_PREFIX)}fast`,\n hoverPreviewAnimation.value === item.value && `${_unref(ANIMATION_CLASS_PREFIX)}${item.value}`,\n ]])\n }, _toDisplayString(item.name), 3)\n ], 40, _hoisted_7))\n }), 128))\n ])\n ]))\n }), 128)),\n (!popoverMaskHide.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8))\n : _createCommentVNode(\"\", true)\n ], 2))\n : _createCommentVNode(\"\", true)\n ], 64))\n }), 64))\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"element-animation-btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (handleAnimationId.value = ''))\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(_unref(Draggable), {\n class: \"animation-sequence\",\n modelValue: _unref(animationSequence),\n animation: 300,\n scroll: true,\n scrollSensitivity: 50,\n handle: \".sequence-content\",\n onEnd: handleDragEnd,\n itemKey: \"id\"\n }, {\n item: _withCtx(({ element }) => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"sequence-item\", [element.type, { 'active': _unref(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) => (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) => (deleteAnimation(element.id))\n }, null, 8, [\"onClick\"])\n ]),\n _: 2\n }, 1032, [\"mouseEnterDelay\"])\n ])\n ]),\n (_unref(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 => 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 => 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) => (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\"])\n ]))\n}\n}\n\n})","import script from \"./ElementAnimationPanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementAnimationPanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementAnimationPanel.vue?vue&type=style&index=0&id=2f69234f&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2f69234f\"]])\n\nexport default __exports__","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]","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, 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-e0bbbd9e\"),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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'SlideDesignPanel',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { availableFonts } = storeToRefs(useMainStore())\nconst { slides, currentSlide, viewportRatio, theme } = storeToRefs(slidesStore)\n\nconst 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\nconst { addHistorySnapshot } = useHistorySnapshot()\n\n// 设置背景模式:纯色、图片、渐变色\nconst 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// 设置背景图片\nconst updateBackground = (props: Partial) => {\n slidesStore.updateSlide({ background: { ...background.value, ...props } })\n addHistorySnapshot()\n}\n\n// 上传背景图片\nconst uploadBackgroundImage = (files: FileList) => {\n const imageFile = files[0]\n if (!imageFile) return\n getImageDataURL(imageFile).then(dataURL => updateBackground({ image: dataURL }))\n}\n\n// 应用当前页背景到全部页面\nconst 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// 设置主题\nconst updateTheme = (themeProps: Partial) => {\n slidesStore.setTheme(themeProps)\n}\n\n// 将当前主题应用到全部页面\nconst 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// 是否显示预设主题\nconst showPresetThemes = ref(true)\nconst togglePresetThemesVisible = () => {\n showPresetThemes.value = !showPresetThemes.value\n}\n\n// 设置画布尺寸(宽高比例)\nconst updateViewportRatio = (value: number) => {\n slidesStore.setViewportRatio(value)\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\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: _unref(background).type,\n onChange: _cache[0] || (_cache[0] = value => 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 (_unref(background).type === 'solid')\n ? (_openBlock(), _createBlock(_component_Popover, {\n key: 0,\n trigger: \"click\"\n }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _unref(background).color,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = color => updateBackground({ color }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: _unref(background).color || '#fff',\n style: {\"flex\":\"10\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n }))\n : (_unref(background).type === 'image')\n ? (_openBlock(), _createBlock(_component_Select, {\n key: 1,\n style: {\"flex\":\"10\"},\n value: _unref(background).imageSize || 'cover',\n onChange: _cache[2] || (_cache[2] = value => 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: _unref(background).gradientType,\n onChange: _cache[3] || (_cache[3] = value => 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 (_unref(background).type === 'image')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createVNode(_component_FileInput, {\n onChange: _cache[4] || (_cache[4] = files => uploadBackgroundImage(files))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", {\n class: \"content\",\n style: _normalizeStyle({ backgroundImage: `url(${_unref(background).image})` })\n }, [\n _createVNode(_component_IconPlus)\n ], 4)\n ])\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(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: _unref(background).gradientColor![0],\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = value => updateBackground({ gradientColor: [value, _unref(background).gradientColor![1]] }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: _unref(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: _unref(background).gradientColor![1],\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = value => updateBackground({ gradientColor: [_unref(background).gradientColor![0], value] }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: _unref(background).gradientColor![1],\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n (_unref(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: _unref(background).gradientRotate,\n onChange: _cache[7] || (_cache[7] = value => 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) => (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: _unref(viewportRatio),\n onChange: _cache[9] || (_cache[9] = value => 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: _unref(theme).fontName,\n onChange: _cache[10] || (_cache[10] = value => updateTheme({ fontName: value as string }))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOptGroup, { label: \"系统字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(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(_unref(WEB_FONTS), (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: _unref(theme).fontColor,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = value => updateTheme({ fontColor: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: _unref(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: _unref(theme).backgroundColor,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = value => updateTheme({ backgroundColor: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: _unref(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: _unref(theme).themeColor,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = value => updateTheme({ themeColor: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: _unref(theme).themeColor,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"title dropdown\", { 'active': showPresetThemes.value }]),\n onClick: _cache[14] || (_cache[14] = ($event: any) => (togglePresetThemesVisible())),\n style: {\"margin-top\":\"20px\"}\n }, [\n _hoisted_38,\n _createVNode(_component_IconDown, { class: \"icon\" })\n ], 2),\n (showPresetThemes.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_39, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(PRESET_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) => (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) => (applyThemeAllSlide()))\n }, {\n default: _withCtx(() => [\n _hoisted_43\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","import script from \"./SlideDesignPanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./SlideDesignPanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./SlideDesignPanel.vue?vue&type=style&index=0&id=e0bbbd9e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-e0bbbd9e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, 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-577ae912\"),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\nimport { computed } 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'SlideAnimationPanel',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { slides, currentSlide } = storeToRefs(slidesStore)\n\nconst currentTurningMode = computed(() => currentSlide.value.turningMode || 'slideY')\n\nconst animations: Animations[] = [\n { label: '无', value: 'no' },\n { label: '淡入淡出', value: 'fade' },\n { label: '左右推移', value: 'slideX' },\n { label: '上下推移', value: 'slideY' },\n]\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\n// 修改播放时的切换页面方式\nconst updateTurningMode = (mode: TurningMode) => {\n if (mode === currentTurningMode.value) return\n slidesStore.updateSlide({ turningMode: mode })\n addHistorySnapshot()\n}\n\n// 将当前页的切换页面方式应用到全部页面\nconst 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\nreturn (_ctx: any,_cache: any) => {\n const _component_Button = _resolveComponent(\"Button\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(animations, (item) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"animation-item\", { 'active': _unref(currentTurningMode) === item.value }]),\n key: item.label,\n onClick: ($event: any) => (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 }), 64))\n ]),\n _createVNode(_component_Button, {\n style: {\"width\":\"100%\"},\n onClick: _cache[0] || (_cache[0] = ($event: any) => (applyAllSlide()))\n }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./SlideAnimationPanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./SlideAnimationPanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./SlideAnimationPanel.vue?vue&type=style&index=0&id=577ae912&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-577ae912\"]])\n\nexport default __exports__","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}","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, unref as _unref, 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-0d3881c5\"),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\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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MultiPositionPanel',\n setup(__props) {\n\nconst { canCombine, combineElements, uncombineElements } = useCombineElement()\nconst { alignActiveElement } = useAlignActiveElement()\nconst { alignElementToCanvas } = useAlignElementToCanvas()\nconst { displayItemCount, uniformHorizontalDisplay, uniformVerticalDisplay } = useUniformDisplayElement()\n\n// 多选元素对齐,需要先判断当前所选中的元素状态:\n// 如果所选元素为一组组合元素,则将它对齐到画布;\n// 如果所选元素不是组合元素或不止一组元素(即当前为可组合状态),则将这多个(多组)元素相互对齐。\nconst alignElement = (command: ElementAlignCommands) => {\n if (canCombine.value) alignActiveElement(command)\n else alignElementToCanvas(command)\n}\n\nreturn (_ctx: any,_cache: 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) => (alignElement(_unref(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) => (alignElement(_unref(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) => (alignElement(_unref(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) => (alignElement(_unref(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) => (alignElement(_unref(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) => (alignElement(_unref(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 (_unref(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) => (_unref(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) => (_unref(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: !_unref(canCombine),\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_unref(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: _unref(canCombine),\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_unref(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}\n}\n\n})","import script from \"./MultiPositionPanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MultiPositionPanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MultiPositionPanel.vue?vue&type=style&index=0&id=0d3881c5&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0d3881c5\"]])\n\nexport default __exports__","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]","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-ba0c96fc\"),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\nimport { computed, ref } from 'vue'\nimport { SYMBOL_LIST } from '@/configs/symbol'\nimport emitter, { EmitterEvents } from '@/utils/emitter'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'SymbolPanel',\n setup(__props) {\n\nconst selectedSymbolKey = ref(SYMBOL_LIST[0].key)\nconst symbolPool = computed(() => {\n const selectedSymbol = SYMBOL_LIST.find(item => item.key === selectedSymbolKey.value)\n return selectedSymbol?.children || []\n})\n\nconst selectSymbol = (value: string) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { action: { command: 'insert', value } })\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(SYMBOL_LIST), (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': selectedSymbolKey.value === item.key }]),\n key: item.key,\n onClick: ($event: any) => (selectedSymbolKey.value = item.key)\n }, _toDisplayString(item.label), 11, _hoisted_3))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(symbolPool), (item, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"symbol-item\",\n key: index,\n onClick: ($event: any) => (selectSymbol(item))\n }, [\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(item), 1)\n ], 8, _hoisted_5))\n }), 128))\n ])\n ]))\n}\n}\n\n})","import script from \"./SymbolPanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./SymbolPanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./SymbolPanel.vue?vue&type=style&index=0&id=ba0c96fc&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-ba0c96fc\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-5303bd17\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"toolbar\" }\nconst _hoisted_2 = { class: \"tabs\" }\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = { class: \"content\" }\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst mainStore = useMainStore()\nconst { activeElementIdList, handleElement, toolbarState } = storeToRefs(mainStore)\n\nconst 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})\nconst slideTabs = [\n { label: '设计', value: ToolbarStates.SLIDE_DESIGN },\n { label: '切换', value: ToolbarStates.SLIDE_ANIMATION },\n { label: '动画', value: ToolbarStates.EL_ANIMATION },\n]\nconst multiSelectTabs = [\n { label: '样式', value: ToolbarStates.EL_STYLE },\n { label: '位置', value: ToolbarStates.MULTI_POSITION },\n]\n\nconst setToolbarState = (value: ToolbarStates) => {\n mainStore.setToolbarState(value)\n}\n\nconst currentTabs = computed(() => {\n if (!activeElementIdList.value.length) return slideTabs\n else if (activeElementIdList.value.length > 1) return multiSelectTabs\n return elementTabs.value\n})\n\nwatch(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\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(currentTabs), (tab) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': tab.value === _unref(toolbarState) }]),\n key: tab.value,\n onClick: ($event: any) => (setToolbarState(tab.value))\n }, _toDisplayString(tab.label), 11, _hoisted_3))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_unref(currentPanelComponent))))\n ])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=5303bd17&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5303bd17\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-82b674f6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"remark\" }\nconst _hoisted_2 = [\"value\"]\n\nimport { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n height: {\n type: Number,\n required: true,\n },\n},\n emits: [\"update:height\"],\n setup(__props, { emit }: { emit: ({\n (event: 'update:height', payload: number): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst slidesStore = useSlidesStore()\nconst { currentSlide } = storeToRefs(slidesStore)\n\nconst remark = computed(() => currentSlide.value?.remark || '')\n\nconst handleInput = (e: Event) => {\n const value = (e.target as HTMLTextAreaElement).value\n slidesStore.updateSlide({ remark: value })\n}\n\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"resize-handler\",\n onMousedown: _cache[0] || (_cache[0] = $event => resize($event))\n }, null, 32),\n _createElementVNode(\"textarea\", {\n value: _unref(remark),\n placeholder: \"点击输入演讲者备注\",\n onInput: _cache[1] || (_cache[1] = $event => handleInput($event))\n }, null, 40, _hoisted_2)\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=82b674f6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-82b674f6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-60a953a0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"export-img-dialog\" }\nconst _hoisted_2 = { class: \"thumbnails-view\" }\nconst _hoisted_3 = { class: \"configs\" }\nconst _hoisted_4 = { class: \"row\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"导出格式:\", -1))\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\"JPEG\")\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"PNG\")\nconst _hoisted_8 = { class: \"row\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"导出范围:\", -1))\nconst _hoisted_10 = /*#__PURE__*/_createTextVNode(\"全部\")\nconst _hoisted_11 = /*#__PURE__*/_createTextVNode(\"当前页\")\nconst _hoisted_12 = /*#__PURE__*/_createTextVNode(\"自定义\")\nconst _hoisted_13 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_14 = [\"data-range\"]\nconst _hoisted_15 = { class: \"row\" }\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"图片质量:\", -1))\nconst _hoisted_17 = { class: \"row\" }\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"忽略在线字体:\", -1))\nconst _hoisted_19 = { class: \"config-item\" }\nconst _hoisted_20 = { class: \"btns\" }\nconst _hoisted_21 = /*#__PURE__*/_createTextVNode(\"导出图片\")\nconst _hoisted_22 = /*#__PURE__*/_createTextVNode(\"关闭\")\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ExportImage',\n emits: [\"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst { slides, currentSlide } = storeToRefs(useSlidesStore())\n\nconst imageThumbnailsRef = ref()\nconst rangeType = ref<'all' | 'current' | 'custom'>('all')\nconst range = ref<[number, number]>([1, slides.value.length])\nconst format = ref<'jpeg' | 'png'>('jpeg')\nconst quality = ref(1)\nconst ignoreWebfont = ref(true)\n\nconst 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\nconst { exportImage, exporting } = useExport()\n\nconst expImage = () => {\n if (!imageThumbnailsRef.value) return\n exportImage(imageThumbnailsRef.value, format.value, quality.value, ignoreWebfont.value)\n}\n\nreturn (_ctx: any,_cache: 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_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\", {\n class: \"thumbnails\",\n ref_key: \"imageThumbnailsRef\",\n ref: imageThumbnailsRef\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(renderSlides), (slide) => {\n return (_openBlock(), _createBlock(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_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(_component_RadioGroup, {\n class: \"config-item\",\n value: format.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((format).value = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"50%\"},\n value: \"jpeg\"\n }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n }),\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"50%\"},\n value: \"png\"\n }, {\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_RadioGroup, {\n class: \"config-item\",\n value: rangeType.value,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((rangeType).value = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"33.33%\"},\n value: \"all\"\n }, {\n default: _withCtx(() => [\n _hoisted_10\n ]),\n _: 1\n }),\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"33.33%\"},\n value: \"current\"\n }, {\n default: _withCtx(() => [\n _hoisted_11\n ]),\n _: 1\n }),\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"33.33%\"},\n value: \"custom\"\n }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n (rangeType.value === 'custom')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createElementVNode(\"div\", {\n class: \"title\",\n \"data-range\": `(${range.value[0]} ~ ${range.value[1]})`\n }, \"自定义范围:\", 8, _hoisted_14),\n _createVNode(_component_Slider, {\n class: \"config-item\",\n range: \"\",\n min: 1,\n max: _unref(slides).length,\n step: 1,\n value: range.value,\n \"onUpdate:value\": _cache[2] || (_cache[2] = ($event: any) => ((range).value = $event))\n }, null, 8, [\"max\", \"value\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_15, [\n _hoisted_16,\n _createVNode(_component_Slider, {\n class: \"config-item\",\n min: 0,\n max: 1,\n step: 0.1,\n value: quality.value,\n \"onUpdate:value\": _cache[3] || (_cache[3] = ($event: any) => ((quality).value = $event))\n }, null, 8, [\"step\", \"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_17, [\n _hoisted_18,\n _createElementVNode(\"div\", _hoisted_19, [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"导出时默认忽略在线字体,若您在幻灯片中使用了在线字体,且希望导出后保留相关样式,可选择关闭【忽略在线字体】选项,但要注意这将会增加导出用时。\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Switch, {\n checked: ignoreWebfont.value,\n \"onUpdate:checked\": _cache[4] || (_cache[4] = ($event: any) => ((ignoreWebfont).value = $event))\n }, null, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_20, [\n _createVNode(_component_Button, {\n class: \"btn export\",\n type: \"primary\",\n onClick: _cache[5] || (_cache[5] = ($event: any) => (expImage()))\n }, {\n default: _withCtx(() => [\n _hoisted_21\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n class: \"btn close\",\n onClick: _cache[6] || (_cache[6] = ($event: any) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _hoisted_22\n ]),\n _: 1\n })\n ]),\n _createVNode(_component_FullscreenSpin, {\n loading: _unref(exporting),\n tip: \"正在导出...\"\n }, null, 8, [\"loading\"])\n ]))\n}\n}\n\n})","import script from \"./ExportImage.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ExportImage.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ExportImage.vue?vue&type=style&index=0&id=60a953a0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-60a953a0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-1bc24666\"),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\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useExport from '@/hooks/useExport'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ExportJSON',\n emits: [\"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst { slides } = storeToRefs(useSlidesStore())\nconst { exportJSON } = useExport()\n\nreturn (_ctx: any,_cache: 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(_unref(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) => (_unref(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) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","import script from \"./ExportJSON.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ExportJSON.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ExportJSON.vue?vue&type=style&index=0&id=1bc24666&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1bc24666\"]])\n\nexport default __exports__","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}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-15b57798\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"export-pdf-dialog\" }\nconst _hoisted_2 = { class: \"thumbnails-view\" }\nconst _hoisted_3 = { class: \"configs\" }\nconst _hoisted_4 = { class: \"row\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"导出范围:\", -1))\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\"全部幻灯片\")\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"当前幻灯片\")\nconst _hoisted_8 = { class: \"row\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"每页数量:\", -1))\nconst _hoisted_10 = /*#__PURE__*/_createTextVNode(\"1\")\nconst _hoisted_11 = /*#__PURE__*/_createTextVNode(\"2\")\nconst _hoisted_12 = /*#__PURE__*/_createTextVNode(\"3\")\nconst _hoisted_13 = { class: \"row\" }\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"边缘留白:\", -1))\nconst _hoisted_15 = { class: \"config-item\" }\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"tip\" }, \" 注意:若打印预览与实际样式不一致,请在弹出的打印窗口中勾选【背景图形】选项。 \", -1))\nconst _hoisted_17 = { class: \"btns\" }\nconst _hoisted_18 = /*#__PURE__*/_createTextVNode(\"打印 / 导出 PDF\")\nconst _hoisted_19 = /*#__PURE__*/_createTextVNode(\"关闭\")\n\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ExportPDF',\n emits: [\"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst { slides, currentSlide } = storeToRefs(useSlidesStore())\n\nconst pdfThumbnailsRef = ref()\nconst rangeType = ref<'all' | 'current'>('all')\nconst count = ref(1)\nconst padding = ref(true)\n\nconst 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\nreturn (_ctx: any,_cache: any) => {\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\", {\n class: \"thumbnails\",\n ref_key: \"pdfThumbnailsRef\",\n ref: pdfThumbnailsRef\n }, [\n (rangeType.value === 'current')\n ? (_openBlock(), _createBlock(ThumbnailSlide, {\n key: 0,\n class: \"thumbnail\",\n slide: _unref(currentSlide),\n size: 1600\n }, null, 8, [\"slide\"]))\n : (_openBlock(true), _createElementBlock(_Fragment, { key: 1 }, _renderList(_unref(slides), (slide, index) => {\n return (_openBlock(), _createBlock(ThumbnailSlide, {\n class: _normalizeClass([\"thumbnail\", { 'break-page': (index + 1) % count.value === 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_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(_component_RadioGroup, {\n class: \"config-item\",\n value: rangeType.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((rangeType).value = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"50%\"},\n value: \"all\"\n }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n }),\n _createVNode(_component_RadioButton, {\n style: {\"width\":\"50%\"},\n value: \"current\"\n }, {\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_Select, {\n class: \"config-item\",\n value: count.value,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((count).value = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: 1 }, {\n default: _withCtx(() => [\n _hoisted_10\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: 2 }, {\n default: _withCtx(() => [\n _hoisted_11\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: 3 }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_13, [\n _hoisted_14,\n _createElementVNode(\"div\", _hoisted_15, [\n _createVNode(_component_Switch, {\n checked: padding.value,\n \"onUpdate:checked\": _cache[2] || (_cache[2] = ($event: any) => ((padding).value = $event))\n }, null, 8, [\"checked\"])\n ])\n ]),\n _hoisted_16\n ]),\n _createElementVNode(\"div\", _hoisted_17, [\n _createVNode(_component_Button, {\n class: \"btn export\",\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (expPDF()))\n }, {\n default: _withCtx(() => [\n _hoisted_18\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n class: \"btn close\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _hoisted_19\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","import script from \"./ExportPDF.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ExportPDF.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ExportPDF.vue?vue&type=style&index=0&id=15b57798&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-15b57798\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3fef9be0\"),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\nimport { computed, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useExport from '@/hooks/useExport'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ExportPPTX',\n emits: [\"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst { slides, currentSlide } = storeToRefs(useSlidesStore())\n\nconst { exportPPTX, exporting } = useExport()\n\nconst rangeType = ref<'all' | 'current' | 'custom'>('all')\nconst range = ref<[number, number]>([1, slides.value.length])\nconst masterOverwrite = ref(true)\n\nconst 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\nreturn (_ctx: any,_cache: 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: rangeType.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((rangeType).value = $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 (rangeType.value === 'custom')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createElementVNode(\"div\", {\n class: \"title\",\n \"data-range\": `(${range.value[0]} ~ ${range.value[1]})`\n }, \"自定义范围:\", 8, _hoisted_9),\n _createVNode(_component_Slider, {\n class: \"config-item\",\n range: \"\",\n min: 1,\n max: _unref(slides).length,\n step: 1,\n value: range.value,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((range).value = $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: masterOverwrite.value,\n \"onUpdate:checked\": _cache[2] || (_cache[2] = ($event: any) => ((masterOverwrite).value = $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) => (_unref(exportPPTX)(_unref(selectedSlides), masterOverwrite.value)))\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) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _hoisted_15\n ]),\n _: 1\n })\n ]),\n _createVNode(_component_FullscreenSpin, {\n loading: _unref(exporting),\n tip: \"正在导出...\"\n }, null, 8, [\"loading\"])\n ]))\n}\n}\n\n})","import script from \"./ExportPPTX.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ExportPPTX.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ExportPPTX.vue?vue&type=style&index=0&id=3fef9be0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3fef9be0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-e2b465d2\"),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\nimport { computed, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useExport from '@/hooks/useExport'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ExportSpecificFile',\n emits: [\"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\nconst { slides, currentSlide } = storeToRefs(useSlidesStore())\n\nconst { exportSpecificFile } = useExport()\n\nconst rangeType = ref<'all' | 'current' | 'custom'>('all')\nconst range = ref<[number, number]>([1, slides.value.length])\n\nconst 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\nreturn (_ctx: any,_cache: 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: rangeType.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((rangeType).value = $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 (rangeType.value === 'custom')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createElementVNode(\"div\", {\n class: \"title\",\n \"data-range\": `(${range.value[0]} ~ ${range.value[1]})`\n }, \"自定义范围:\", 8, _hoisted_9),\n _createVNode(_component_Slider, {\n class: \"config-item\",\n range: \"\",\n min: 1,\n max: _unref(slides).length,\n step: 1,\n value: range.value,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((range).value = $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) => (_unref(exportSpecificFile)(_unref(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) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _hoisted_13\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","import script from \"./ExportSpecificFile.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ExportSpecificFile.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ExportSpecificFile.vue?vue&type=style&index=0&id=e2b465d2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-e2b465d2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, 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-1f8f1a8b\"),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\nimport { computed } 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst mainStore = useMainStore()\nconst { dialogForExport } = storeToRefs(mainStore)\n\nconst setDialogForExport = mainStore.setDialogForExport\n\nconst 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\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(tabs, (tab) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': tab.key === _unref(dialogForExport) }]),\n key: tab.key,\n onClick: ($event: any) => (_unref(setDialogForExport)(tab.key))\n }, _toDisplayString(tab.label), 11, _hoisted_3)\n }), 64))\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_unref(currentDialogComponent)), {\n onClose: _cache[0] || (_cache[0] = ($event: any) => (_unref(setDialogForExport)('')))\n }, null, 32))\n ])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=1f8f1a8b&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1f8f1a8b\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, unref as _unref, resolveComponent as _resolveComponent, 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-328e1a4e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"pptist-editor\" }\nconst _hoisted_2 = { class: \"layout-content\" }\nconst _hoisted_3 = { class: \"layout-content-center\" }\n\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst mainStore = useMainStore()\nconst { dialogForExport } = storeToRefs(mainStore)\nconst closeExportDialog = () => mainStore.setDialogForExport('')\n\nconst remarkHeight = ref(40)\n\nuseGlobalHotkey()\nusePasteEvent()\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(EditorHeader, { class: \"layout-header\" }),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(Thumbnails, { class: \"layout-content-left\" }),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(CanvasTool, { class: \"center-top\" }),\n _createVNode(Canvas, {\n class: \"center-body\",\n style: _normalizeStyle({ height: `calc(100% - ${remarkHeight.value + 40}px)` })\n }, null, 8, [\"style\"]),\n _createVNode(Remark, {\n class: \"center-bottom\",\n height: remarkHeight.value,\n \"onUpdate:height\": _cache[0] || (_cache[0] = ($event: any) => ((remarkHeight).value = $event)),\n style: _normalizeStyle({ height: `${remarkHeight.value}px` })\n }, null, 8, [\"height\", \"style\"])\n ]),\n _createVNode(Toolbar, { class: \"layout-content-right\" })\n ])\n ]),\n _createVNode(_component_Modal, {\n visible: !!_unref(dialogForExport),\n footer: null,\n centered: \"\",\n closable: false,\n width: 680,\n destroyOnClose: \"\",\n onCancel: _cache[1] || (_cache[1] = ($event: any) => (closeExportDialog()))\n }, {\n default: _withCtx(() => [\n _createVNode(ExportDialog)\n ]),\n _: 1\n }, 8, [\"visible\"])\n ], 64))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=328e1a4e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-328e1a4e\"]])\n\nexport default __exports__","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 { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { PropType } from 'vue'\nimport { PPTChartElement } from '@/types/slides'\n\nimport BaseChartElement from './BaseChartElement.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ScreenChartElement',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(BaseChartElement, {\n class: \"screen-element-chart\",\n elementInfo: __props.elementInfo\n }, null, 8, [\"elementInfo\"]))\n}\n}\n\n})","import script from \"./ScreenChartElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ScreenChartElement.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-76457308\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ScreenVideoElement',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst { currentSlide } = storeToRefs(useSlidesStore())\n\nconst scale = inject(injectKeySlideScale) || ref(1)\nconst slideId = inject(injectKeySlideId) || ref('')\n\nconst inCurrentSlide = computed(() => currentSlide.value.id === slideId.value)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"screen-element-video\",\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n height: __props.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_unref(inCurrentSlide))\n ? (_openBlock(), _createBlock(VideoPlayer, {\n key: 0,\n width: __props.elementInfo.width,\n height: __props.elementInfo.height,\n src: __props.elementInfo.src,\n poster: __props.elementInfo.poster,\n scale: _unref(scale)\n }, null, 8, [\"width\", \"height\", \"src\", \"poster\", \"scale\"]))\n : _createCommentVNode(\"\", true)\n ])\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./ScreenVideoElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ScreenVideoElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ScreenVideoElement.vue?vue&type=style&index=0&id=76457308&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-76457308\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-f447b6a2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ScreenAudioElement',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst { viewportRatio, currentSlide } = storeToRefs(useSlidesStore())\n\nconst scale = inject(injectKeySlideScale) || ref(1)\nconst slideId = inject(injectKeySlideId) || ref('')\n\nconst inCurrentSlide = computed(() => currentSlide.value.id === slideId.value)\n\nconst audioIconSize = computed(() => {\n return Math.min(props.elementInfo.width, props.elementInfo.height) + 'px'\n})\nconst 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\nconst audioPlayerRef = ref()\nconst toggle = () => {\n if (!audioPlayerRef.value) return\n audioPlayerRef.value.toggle()\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconVolumeNotice = _resolveComponent(\"IconVolumeNotice\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"screen-element-audio\",\n style: _normalizeStyle({\n top: __props.elementInfo.top + 'px',\n left: __props.elementInfo.left + 'px',\n width: __props.elementInfo.width + 'px',\n height: __props.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${__props.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_IconVolumeNotice, {\n class: \"audio-icon\",\n style: _normalizeStyle({\n fontSize: _unref(audioIconSize),\n color: __props.elementInfo.color,\n }),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (toggle()))\n }, null, 8, [\"style\"]),\n (_unref(inCurrentSlide))\n ? (_openBlock(), _createBlock(AudioPlayer, {\n key: 0,\n class: \"audio-player\",\n ref_key: \"audioPlayerRef\",\n ref: audioPlayerRef,\n style: _normalizeStyle({ ..._unref(audioPlayerPosition) }),\n src: __props.elementInfo.src,\n loop: __props.elementInfo.loop,\n autoplay: __props.elementInfo.autoplay,\n scale: _unref(scale)\n }, null, 8, [\"style\", \"src\", \"loop\", \"autoplay\", \"scale\"]))\n : _createCommentVNode(\"\", true)\n ])\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./ScreenAudioElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ScreenAudioElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ScreenAudioElement.vue?vue&type=style&index=0&id=f447b6a2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f447b6a2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-a15cc1d8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"id\", \"title\"]\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ScreenElement',\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\nconst props = __props\n\n\n\nconst 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\nconst { formatedAnimations, theme } = storeToRefs(useSlidesStore())\n\n// 判断元素是否需要等待执行入场动画:等待执行入场的元素需要先隐藏\nconst 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// 打开元素绑定的超链接\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"screen-element\", { 'link': __props.elementInfo.link }]),\n id: `screen-element-${__props.elementInfo.id}`,\n style: _normalizeStyle({\n zIndex: __props.elementIndex,\n color: _unref(theme).fontColor,\n fontFamily: _unref(theme).fontName,\n visibility: _unref(needWaitAnimation) ? 'hidden' : 'visible',\n }),\n title: __props.elementInfo.link?.target || '',\n onClick: _cache[0] || (_cache[0] = ($event: any) => (openLink()))\n }, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_unref(currentElementComponent)), { elementInfo: __props.elementInfo }, null, 8, [\"elementInfo\"]))\n ], 14, _hoisted_1))\n}\n}\n\n})","import script from \"./ScreenElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ScreenElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ScreenElement.vue?vue&type=style&index=0&id=a15cc1d8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-a15cc1d8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock } from \"vue\"\n\nimport { computed, PropType, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ScreenSlide',\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\nconst props = __props\n\n\n\nconst { viewportRatio } = storeToRefs(useSlidesStore())\n\nconst background = computed(() => props.slide.background)\nconst { backgroundStyle } = useSlideBackgroundStyle(background)\n\nconst slideId = computed(() => props.slide.id)\nprovide(injectKeySlideId, slideId)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"screen-slide\",\n style: _normalizeStyle({\n width: _unref(VIEWPORT_SIZE) + 'px',\n height: _unref(VIEWPORT_SIZE) * _unref(viewportRatio) + 'px',\n transform: `scale(${__props.scale})`,\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"background\",\n style: _normalizeStyle({ ..._unref(backgroundStyle) })\n }, null, 4),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(__props.slide.elements, (element, index) => {\n return (_openBlock(), _createBlock(ScreenElement, {\n key: element.id,\n elementInfo: element,\n elementIndex: index + 1,\n animationIndex: __props.animationIndex,\n turnSlideToId: __props.turnSlideToId,\n manualExitFullscreen: __props.manualExitFullscreen\n }, null, 8, [\"elementInfo\", \"elementIndex\", \"animationIndex\", \"turnSlideToId\", \"manualExitFullscreen\"]))\n }), 128))\n ], 4))\n}\n}\n\n})","import script from \"./ScreenSlide.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ScreenSlide.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ScreenSlide.vue?vue&type=style&index=0&id=7cf7f9e7&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7cf7f9e7\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, 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-77a3e620\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"screen-slide-list\" }\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ScreenSlideList',\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\nconst props = __props\n\n\n\nconst { slides, slideIndex, currentSlide } = storeToRefs(useSlidesStore())\n\nconst scale = computed(() => props.slideWidth / VIEWPORT_SIZE)\nprovide(injectKeySlideScale, scale)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(slides), (slide, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\n 'slide-item', \n `turning-mode-${slide.turningMode || 'slideY'}`,\n {\n 'current': index === _unref(slideIndex),\n 'before': index < _unref(slideIndex),\n 'after': index > _unref(slideIndex),\n 'hide': (index === _unref(slideIndex) - 1 || index === _unref(slideIndex) + 1) && slide.turningMode !== _unref(currentSlide).turningMode,\n }\n ]),\n key: slide.id\n }, [\n (Math.abs(_unref(slideIndex) - index) < 2 || slide.animations?.length)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"slide-content\",\n style: _normalizeStyle({\n width: __props.slideWidth + 'px',\n height: __props.slideHeight + 'px',\n })\n }, [\n _createVNode(ScreenSlide, {\n slide: slide,\n scale: _unref(scale),\n animationIndex: __props.animationIndex,\n turnSlideToId: __props.turnSlideToId,\n manualExitFullscreen: __props.manualExitFullscreen\n }, null, 8, [\"slide\", \"scale\", \"animationIndex\", \"turnSlideToId\", \"manualExitFullscreen\"])\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 2))\n }), 128))\n ]))\n}\n}\n\n})","import script from \"./ScreenSlideList.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ScreenSlideList.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ScreenSlideList.vue?vue&type=style&index=0&id=77a3e620&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-77a3e620\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, unref as _unref, 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-b7c6c0cc\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'SlideThumbnails',\n props: {\n turnSlideToIndex: {\n type: Function as PropType<(index: number) => void>,\n required: true,\n },\n},\n emits: [\"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst { slides, slideIndex } = storeToRefs(useSlidesStore())\n\nconst { slidesLoadLimit } = useLoadSlides()\n\nconst turnSlide = (index: number) => {\n props.turnSlideToIndex(index)\n emit('close')\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconArrowCircleLeft = _resolveComponent(\"IconArrowCircleLeft\")!\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) => (emit('close')))\n })\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(slides), (slide, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"thumbnail\", { 'active': index === _unref(slideIndex) }]),\n key: slide.id,\n onClick: ($event: any) => (turnSlide(index))\n }, [\n _createVNode(ThumbnailSlide, {\n slide: slide,\n size: 150,\n visible: index < _unref(slidesLoadLimit)\n }, null, 8, [\"slide\", \"visible\"])\n ], 10, _hoisted_4))\n }), 128))\n ])\n ]))\n}\n}\n\n})","import script from \"./SlideThumbnails.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./SlideThumbnails.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./SlideThumbnails.vue?vue&type=style&index=0&id=b7c6c0cc&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b7c6c0cc\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, 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-1d4eb7f0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"blackboard\"\n}\n\nimport { computed, onMounted, onUnmounted, PropType, ref, watch } from 'vue'\nimport { throttle } from 'lodash'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'WritingBoard',\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, { expose }) {\n\nconst props = __props\n\n\n\nlet ctx: CanvasRenderingContext2D | null = null\nconst writingBoardRef = ref()\nconst canvasRef = ref()\n\nconst penSize = ref(6)\nconst rubberSize = ref(80)\nconst markSize = ref(24)\n\nlet lastPos = {\n x: 0,\n y: 0,\n}\nlet isMouseDown = false\nlet lastTime = 0\nlet lastLineWidth = -1\n\n// 鼠标位置坐标:用于画笔或橡皮位置跟随\nconst mouse = ref({\n x: 0,\n y: 0,\n})\n\n// 鼠标是否处在画布范围内:处在范围内才会显示画笔或橡皮\nconst mouseInCanvas = ref(false)\n\n// 监听更新canvas尺寸\nconst canvasWidth = ref(0)\nconst canvasHeight = ref(0)\n\nconst widthScale = computed(() => canvasRef.value ? canvasWidth.value / canvasRef.value.width : 1)\nconst heightScale = computed(() => canvasRef.value ? canvasHeight.value / canvasRef.value.height : 1)\n\nconst updateCanvasSize = () => {\n if (!writingBoardRef.value) return\n canvasWidth.value = writingBoardRef.value.clientWidth\n canvasHeight.value = writingBoardRef.value.clientHeight\n}\nconst resizeObserver = new ResizeObserver(updateCanvasSize)\nonMounted(() => {\n if (writingBoardRef.value) resizeObserver.observe(writingBoardRef.value)\n})\nonUnmounted(() => {\n if (writingBoardRef.value) resizeObserver.unobserve(writingBoardRef.value)\n})\n\n// 初始化画布\nconst 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}\nonMounted(initCanvas)\n\n// 切换画笔模式时,更新 canvas ctx 配置\nconst 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}\nwatch(() => props.model, updateCtx)\n\n// 绘制画笔墨迹方法\nconst 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// 擦除墨迹方法\nconst 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// 计算鼠标两次移动之间的距离\nconst 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计算绘制速度,速度越快,墨迹越细\nconst 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// 路径操作\nconst 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中的相对位置\nconst 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// 准备开始绘制/擦除墨迹(落笔)\nconst 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// 开始绘制/擦除墨迹(移动)\nconst 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// 结束绘制/擦除墨迹(停笔)\nconst handleMouseup = () => {\n if (!isMouseDown) return\n isMouseDown = false\n}\n\n// 清空画布\nconst clearCanvas = () => {\n if (!ctx || !canvasRef.value) return\n ctx.clearRect(0, 0, canvasRef.value.width, canvasRef.value.height)\n}\n\n// 获取 DataURL\nconst getImageDataURL = () => {\n return canvasRef.value?.toDataURL()\n}\n\n// 设置 DataURL(绘制图片到 canvas)\nconst 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// 滚动鼠标滚轮,调整笔触大小\nconst 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\nexpose({\n clearCanvas,\n getImageDataURL,\n setImageDataURL,\n})\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconWrite = _resolveComponent(\"IconWrite\")!\n const _component_IconHighLight = _resolveComponent(\"IconHighLight\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"writing-board\",\n ref_key: \"writingBoardRef\",\n ref: writingBoardRef\n }, [\n (__props.blackboard)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"canvas\", {\n class: \"canvas\",\n ref_key: \"canvasRef\",\n ref: canvasRef,\n style: _normalizeStyle({\n width: canvasWidth.value + 'px',\n height: canvasHeight.value + 'px',\n }),\n onMousedown: _cache[0] || (_cache[0] = $event => handleMousedown($event)),\n onMousemove: _cache[1] || (_cache[1] = $event => handleMousemove($event)),\n onMouseup: _cache[2] || (_cache[2] = ($event: any) => (handleMouseup())),\n onTouchstart: _cache[3] || (_cache[3] = $event => handleMousedown($event)),\n onTouchmove: _cache[4] || (_cache[4] = $event => handleMousemove($event)),\n onTouchend: _cache[5] || (_cache[5] = ($event: any) => {handleMouseup(); mouseInCanvas.value = false}),\n onMouseleave: _cache[6] || (_cache[6] = ($event: any) => {handleMouseup(); mouseInCanvas.value = false}),\n onMouseenter: _cache[7] || (_cache[7] = ($event: any) => (mouseInCanvas.value = true)),\n onWheel: _cache[8] || (_cache[8] = $event => _unref(mousewheelListener)($event))\n }, null, 36),\n (mouseInCanvas.value)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n (__props.model === 'eraser')\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"eraser\",\n style: _normalizeStyle({\n left: mouse.value.x - rubberSize.value / 2 + 'px',\n top: mouse.value.y - rubberSize.value / 2 + 'px',\n width: rubberSize.value + 'px',\n height: rubberSize.value + 'px',\n })\n }, null, 4))\n : _createCommentVNode(\"\", true),\n (__props.model === 'pen')\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"pen\",\n style: _normalizeStyle({\n left: mouse.value.x - penSize.value / 2 + 'px',\n top: mouse.value.y - penSize.value * 6 + penSize.value / 2 + 'px',\n color: __props.color,\n })\n }, [\n (__props.model === 'pen')\n ? (_openBlock(), _createBlock(_component_IconWrite, {\n key: 0,\n class: \"icon\",\n size: penSize.value * 6\n }, null, 8, [\"size\"]))\n : _createCommentVNode(\"\", true)\n ], 4))\n : _createCommentVNode(\"\", true),\n (__props.model === 'mark')\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 2,\n class: \"pen\",\n style: _normalizeStyle({\n left: mouse.value.x - markSize.value / 2 + 'px',\n top: mouse.value.y + 'px',\n color: __props.color,\n })\n }, [\n (__props.model === 'mark')\n ? (_openBlock(), _createBlock(_component_IconHighLight, {\n key: 0,\n class: \"icon\",\n size: markSize.value * 1.5\n }, null, 8, [\"size\"]))\n : _createCommentVNode(\"\", true)\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 64))\n : _createCommentVNode(\"\", true)\n ], 512))\n}\n}\n\n})","import script from \"./WritingBoard.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./WritingBoard.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./WritingBoard.vue?vue&type=style&index=0&id=1d4eb7f0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1d4eb7f0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, 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-4e7c6a52\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"writing-board-tool\" }\nconst _hoisted_2 = { class: \"colors\" }\nconst _hoisted_3 = [\"onClick\"]\n\nimport { PropType, ref, StyleValue } from 'vue'\nimport WritingBoard from '@/components/WritingBoard.vue'\n\ntype WritingBoardModel = 'pen' | 'mark' | 'eraser'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'WritingBoardTool',\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 emits: [\"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst writingBoardColors = ['#000000', '#ffffff', '#1e497b', '#4e81bb', '#e2534d', '#9aba60', '#8165a0', '#47acc5', '#f9974c', '#ffff3a']\n\n\n\n\n\nconst writingBoardRef = ref()\nconst writingBoardColor = ref('#e2534d')\nconst writingBoardModel = ref('pen')\nconst blackboard = ref(false)\n\nconst changeModel = (model: WritingBoardModel) => {\n writingBoardModel.value = model\n}\n\n// 清除画布上的墨迹\nconst clearCanvas = () => {\n writingBoardRef.value.clearCanvas()\n}\n\n// 修改画笔颜色,如果当前处于橡皮状态则先切换到画笔状态\nconst changeColor = (color: string) => {\n if (writingBoardModel.value === 'eraser') writingBoardModel.value = 'pen'\n writingBoardColor.value = color\n}\n\n// 关闭写字板\nconst closeWritingBoard = () => {\n emit('close')\n}\n\nreturn (_ctx: any,_cache: any) => {\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: __props.slideWidth + 'px',\n height: __props.slideHeight + 'px',\n })\n }, [\n _createVNode(WritingBoard, {\n ref_key: \"writingBoardRef\",\n ref: writingBoardRef,\n color: writingBoardColor.value,\n blackboard: blackboard.value,\n model: writingBoardModel.value\n }, null, 8, [\"color\", \"blackboard\", \"model\"])\n ], 4),\n _createElementVNode(\"div\", {\n class: \"tools\",\n style: _normalizeStyle(__props.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': writingBoardModel.value === 'pen' }]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (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': writingBoardModel.value === 'mark' }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (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': writingBoardModel.value === 'eraser' }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (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) => (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': blackboard.value }]),\n onClick: _cache[4] || (_cache[4] = ($event: any) => (blackboard.value = !blackboard.value))\n }, [\n _createVNode(_component_IconFill, { class: \"icon\" })\n ], 2)\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(writingBoardColors, (color) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"color\", { 'active': color === writingBoardColor.value }]),\n key: color,\n style: _normalizeStyle({ backgroundColor: color }),\n onClick: ($event: any) => (changeColor(color))\n }, null, 14, _hoisted_3)\n }), 64))\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) => (closeWritingBoard()))\n }, [\n _createVNode(_component_IconClose, { class: \"icon\" })\n ])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ], 4)\n ]))\n}\n}\n\n})","import script from \"./WritingBoardTool.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./WritingBoardTool.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./WritingBoardTool.vue?vue&type=style&index=0&id=4e7c6a52&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4e7c6a52\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveDirective as _resolveDirective, createVNode as _createVNode, withDirectives as _withDirectives, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, 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-d72d6626\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"tools-left\" }\nconst _hoisted_2 = { class: \"content\" }\n\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseView',\n props: {\n changeViewMode: {\n type: Function as PropType<(mode: 'base' | 'presenter') => void>,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst { slides, slideIndex } = storeToRefs(useSlidesStore())\n\nconst {\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\nconst { slideWidth, slideHeight } = useSlideSize()\nconst { exitScreening } = useScreening()\nconst { fullscreenState, manualExitFullscreen } = useFullscreen()\n\nconst rightToolsVisible = ref(false)\nconst writingBoardToolVisible = ref(false)\nconst slideThumbnailModelVisible = ref(false)\nconst laserPen = ref(false)\n\nconst 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\nreturn (_ctx: any,_cache: any) => {\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': laserPen.value }])\n }, [\n _withDirectives(_createVNode(ScreenSlideList, {\n slideWidth: _unref(slideWidth),\n slideHeight: _unref(slideHeight),\n animationIndex: _unref(animationIndex),\n turnSlideToId: _unref(turnSlideToId),\n manualExitFullscreen: _unref(manualExitFullscreen),\n onWheel: _cache[0] || (_cache[0] = $event => _unref(mousewheelListener)($event)),\n onTouchstart: _cache[1] || (_cache[1] = $event => _unref(touchStartListener)($event)),\n onTouchend: _cache[2] || (_cache[2] = $event => _unref(touchEndListener)($event))\n }, null, 8, [\"slideWidth\", \"slideHeight\", \"animationIndex\", \"turnSlideToId\", \"manualExitFullscreen\"]), [\n [_directive_contextmenu, contextmenus]\n ]),\n (slideThumbnailModelVisible.value)\n ? (_openBlock(), _createBlock(SlideThumbnails, {\n key: 0,\n turnSlideToIndex: _unref(turnSlideToIndex),\n onClose: _cache[3] || (_cache[3] = ($event: any) => (slideThumbnailModelVisible.value = false))\n }, null, 8, [\"turnSlideToIndex\"]))\n : _createCommentVNode(\"\", true),\n (writingBoardToolVisible.value)\n ? (_openBlock(), _createBlock(WritingBoardTool, {\n key: 1,\n slideWidth: _unref(slideWidth),\n slideHeight: _unref(slideHeight),\n onClose: _cache[4] || (_cache[4] = ($event: any) => (writingBoardToolVisible.value = 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) => (_unref(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) => (_unref(execNext)()))\n })\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"tools-right\", { 'visible': rightToolsVisible.value }]),\n onMouseleave: _cache[14] || (_cache[14] = ($event: any) => (rightToolsVisible.value = false)),\n onMouseenter: _cache[15] || (_cache[15] = ($event: any) => (rightToolsVisible.value = true))\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: \"tool-btn page-number\",\n onClick: _cache[7] || (_cache[7] = ($event: any) => (slideThumbnailModelVisible.value = true))\n }, \"幻灯片 \" + _toDisplayString(_unref(slideIndex) + 1) + \" / \" + _toDisplayString(_unref(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) => (writingBoardToolVisible.value = 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': laserPen.value }]),\n onClick: _cache[9] || (_cache[9] = ($event: any) => (laserPen.value = !laserPen.value))\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) => (__props.changeViewMode('presenter')))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: _unref(fullscreenState) ? '退出全屏' : '进入全屏'\n }, {\n default: _withCtx(() => [\n (_unref(fullscreenState))\n ? (_openBlock(), _createBlock(_component_IconOffScreenOne, {\n key: 0,\n class: \"tool-btn\",\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_unref(manualExitFullscreen)()))\n }))\n : (_openBlock(), _createBlock(_component_IconFullScreenOne, {\n key: 1,\n class: \"tool-btn\",\n onClick: _cache[12] || (_cache[12] = ($event: any) => (_unref(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) => (_unref(exitScreening)()))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ])\n ], 34)\n ], 2))\n}\n}\n\n})","import script from \"./BaseView.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseView.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseView.vue?vue&type=style&index=0&id=d72d6626&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-d72d6626\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, unref as _unref, 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-5fba3eec\"),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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PresenterView',\n props: {\n changeViewMode: {\n type: Function as PropType<(mode: 'base' | 'presenter') => void>,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst { slides, slideIndex, viewportRatio, currentSlide } = storeToRefs(useSlidesStore())\n\nconst slideListWrapRef = ref()\nconst thumbnailsRef = ref()\nconst writingBoardToolVisible = ref(false)\nconst laserPen = ref(false)\n\nconst {\n mousewheelListener,\n touchStartListener,\n touchEndListener,\n turnPrevSlide,\n turnNextSlide,\n turnSlideToIndex,\n turnSlideToId,\n animationIndex,\n} = useExecPlay()\n\nconst { slideWidth, slideHeight } = useSlideSize(slideListWrapRef)\nconst { exitScreening } = useScreening()\nconst { slidesLoadLimit } = useLoadSlides()\nconst { fullscreenState, manualExitFullscreen } = useFullscreen()\n\nconst remarkFontSize = ref(16)\nconst currentSlideRemark = computed(() => {\n return parseText2Paragraphs(currentSlide.value.remark || '无备注')\n})\n\nconst handleMousewheelThumbnails = (e: WheelEvent) => {\n if (!thumbnailsRef.value) return\n thumbnailsRef.value.scrollBy(e.deltaY, 0)\n}\n\nconst setRemarkFontSize = (fontSize: number) => {\n if (fontSize < 12 || fontSize > 40) return\n remarkFontSize.value = fontSize\n}\n\nwatch(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\nconst 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\nreturn (_ctx: any,_cache: 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_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) => (__props.changeViewMode('base')))\n }, [\n _createVNode(_component_IconListView, { class: \"tool-icon\" }),\n _hoisted_3\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"tool-btn\", { 'active': writingBoardToolVisible.value }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (writingBoardToolVisible.value = !writingBoardToolVisible.value))\n }, [\n _createVNode(_component_IconWrite, { class: \"tool-icon\" }),\n _hoisted_4\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"tool-btn\", { 'active': laserPen.value }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (laserPen.value = !laserPen.value))\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] = () => _unref(fullscreenState) ? _unref(manualExitFullscreen)() : _unref(enterFullscreen)())\n }, [\n (_unref(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(_unref(fullscreenState) ? '退出全屏' : '全屏'), 1)\n ]),\n _createVNode(_component_Divider, { class: \"divider\" }),\n _createElementVNode(\"div\", {\n class: \"tool-btn\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_unref(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': laserPen.value }]),\n ref_key: \"slideListWrapRef\",\n ref: slideListWrapRef\n }, [\n _withDirectives(_createVNode(ScreenSlideList, {\n slideWidth: _unref(slideWidth),\n slideHeight: _unref(slideHeight),\n animationIndex: _unref(animationIndex),\n turnSlideToId: _unref(turnSlideToId),\n manualExitFullscreen: _unref(manualExitFullscreen),\n onWheel: _cache[5] || (_cache[5] = $event => _unref(mousewheelListener)($event)),\n onTouchstart: _cache[6] || (_cache[6] = $event => _unref(touchStartListener)($event)),\n onTouchend: _cache[7] || (_cache[7] = $event => _unref(touchEndListener)($event))\n }, null, 8, [\"slideWidth\", \"slideHeight\", \"animationIndex\", \"turnSlideToId\", \"manualExitFullscreen\"]), [\n [_directive_contextmenu, contextmenus]\n ]),\n (writingBoardToolVisible.value)\n ? (_openBlock(), _createBlock(WritingBoardTool, {\n key: 0,\n slideWidth: _unref(slideWidth),\n slideHeight: _unref(slideHeight),\n position: {\n left: '75px',\n top: '5px',\n },\n onClose: _cache[8] || (_cache[8] = ($event: any) => (writingBoardToolVisible.value = false))\n }, null, 8, [\"slideWidth\", \"slideHeight\"]))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"div\", {\n class: \"thumbnails\",\n ref_key: \"thumbnailsRef\",\n ref: thumbnailsRef,\n onWheel: _cache[9] || (_cache[9] = _withModifiers($event => handleMousewheelThumbnails($event), [\"prevent\"]))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(slides), (slide, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"thumbnail\", { 'active': index === _unref(slideIndex) }]),\n key: slide.id,\n onClick: ($event: any) => (_unref(turnSlideToIndex)(index))\n }, [\n _createVNode(ThumbnailSlide, {\n slide: slide,\n size: 120 / _unref(viewportRatio),\n visible: index < _unref(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(_unref(slideIndex) + 1) + \" / \" + _toDisplayString(_unref(slides).length), 1)\n ]),\n _createElementVNode(\"div\", {\n class: \"remark-content\",\n style: _normalizeStyle({ fontSize: remarkFontSize.value + 'px' }),\n innerHTML: _unref(currentSlideRemark)\n }, null, 12, _hoisted_12),\n _createElementVNode(\"div\", _hoisted_13, [\n _createElementVNode(\"div\", {\n class: _normalizeClass(['scale-btn', { 'disable': remarkFontSize.value === 12 }]),\n onClick: _cache[10] || (_cache[10] = ($event: any) => (setRemarkFontSize(remarkFontSize.value - 2)))\n }, [\n _createVNode(_component_IconMinus)\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass(['scale-btn', { 'disable': remarkFontSize.value === 40 }]),\n onClick: _cache[11] || (_cache[11] = ($event: any) => (setRemarkFontSize(remarkFontSize.value + 2)))\n }, [\n _createVNode(_component_IconPlus)\n ], 2)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./PresenterView.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./PresenterView.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./PresenterView.vue?vue&type=style&index=0&id=5fba3eec&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5fba3eec\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-6bf3d190\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"pptist-screen\" }\n\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst viewMode = ref<'base' | 'presenter'>('base')\n\nconst changeViewMode = (mode: 'base' | 'presenter') => {\n viewMode.value = mode\n}\n\nconst { exitScreening } = useScreening()\n\n// 快捷键退出放映\nconst keydownListener = (e: KeyboardEvent) => {\n const key = e.key.toUpperCase()\n if (key === KEYS.ESC) exitScreening()\n}\n\nonMounted(() => document.addEventListener('keydown', keydownListener))\nonUnmounted(() => document.removeEventListener('keydown', keydownListener))\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (viewMode.value === 'base')\n ? (_openBlock(), _createBlock(BaseView, {\n key: 0,\n changeViewMode: changeViewMode\n }))\n : (viewMode.value === 'presenter')\n ? (_openBlock(), _createBlock(PresenterView, {\n key: 1,\n changeViewMode: changeViewMode\n }))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=6bf3d190&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6bf3d190\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MobileEditableElement',\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\nconst props = __props\n\n\n\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"mobile-editable-element\",\n style: _normalizeStyle({\n zIndex: __props.elementIndex,\n })\n }, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_unref(currentElementComponent)), {\n elementInfo: __props.elementInfo,\n selectElement: __props.selectElement,\n contextmenus: () => null\n }, null, 8, [\"elementInfo\", \"selectElement\", \"contextmenus\"]))\n ], 4))\n}\n}\n\n})","import script from \"./MobileEditableElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MobileEditableElement.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MobileOperate',\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\nconst props = __props\n\n\n\nconst rotate = computed(() => 'rotate' in props.elementInfo ? props.elementInfo.rotate : 0)\n\nconst scaleWidth = computed(() => props.elementInfo.width * props.canvasScale)\nconst scaleHeight = computed(() => props.elementInfo.height * props.canvasScale)\nconst {\n borderLines,\n resizeHandlers: _resizeHandlers,\n textElementResizeHandlers,\n} = useCommonOperate(scaleWidth, scaleHeight)\n\nconst resizeHandlers = props.elementInfo.type === 'text' || props.elementInfo.type === 'table' ? textElementResizeHandlers : _resizeHandlers\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"mobile-operate\",\n style: _normalizeStyle({\n top: __props.elementInfo.top * __props.canvasScale + 'px',\n left: __props.elementInfo.left * __props.canvasScale + 'px',\n transform: `rotate(${_unref(rotate)}deg)`,\n transformOrigin: `${__props.elementInfo.width * __props.canvasScale / 2}px ${__props.elementInfo.height * __props.canvasScale / 2}px`,\n })\n }, [\n (__props.isSelected)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(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(_unref(resizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: __props.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onTouchstart: _withModifiers($event => __props.scaleElement($event, __props.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onTouchstart\"]))\n }), 128))\n ], 64))\n : _createCommentVNode(\"\", true)\n ], 4))\n}\n}\n\n})","import script from \"./MobileOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MobileOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MobileOperate.vue?vue&type=style&index=0&id=7fdc6c04&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7fdc6c04\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createVNode as _createVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4a0c7aa7\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mobile-thumbnails\" }\nconst _hoisted_2 = [\"onClick\"]\nconst _hoisted_3 = { class: \"label\" }\n\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useLoadSlides from '@/hooks/useLoadSlides'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MobileThumbnails',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { slides, slideIndex } = storeToRefs(slidesStore)\n\nconst { slidesLoadLimit } = useLoadSlides()\nconst changeSlideIndex = (index: number) => {\n slidesStore.updateSlideIndex(index)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(slides), (slide, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"thumbnail-item\", { 'active': _unref(slideIndex) === index }]),\n key: slide.id,\n onClick: ($event: any) => (changeSlideIndex(index))\n }, [\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(index + 1), 1),\n _createVNode(ThumbnailSlide, {\n class: \"thumbnail\",\n slide: slide,\n size: 120,\n visible: index < _unref(slidesLoadLimit)\n }, null, 8, [\"slide\", \"visible\"])\n ], 10, _hoisted_2))\n }), 128))\n ]))\n}\n}\n\n})","import script from \"./MobileThumbnails.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MobileThumbnails.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MobileThumbnails.vue?vue&type=style&index=0&id=4a0c7aa7&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4a0c7aa7\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-29fba90e\"),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\nimport { computed } 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'SlideToolbar',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst { viewportRatio, currentSlide } = storeToRefs(slidesStore)\n\nconst { createSlide, copyAndPasteSlide, deleteSlide, } = useSlideHandler()\nconst { createTextElement, createImageElement, createShapeElement } = useCreateElement()\n\nconst 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\nconst insertImageElement = (files: FileList) => {\n if (!files || !files[0]) return\n getImageDataURL(files[0]).then(dataURL => createImageElement(dataURL))\n}\n\nconst 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\nconst remark = computed(() => currentSlide.value?.remark || '')\n\nconst handleInputMark = (e: Event) => {\n const value = (e.target as HTMLTextAreaElement).value\n slidesStore.updateSlide({ remark: value })\n}\n\nreturn (_ctx: any,_cache: 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\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"textarea\", {\n value: _unref(remark),\n placeholder: \"点击输入演讲者备注\",\n onInput: _cache[0] || (_cache[0] = $event => 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) => (_unref(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) => (_unref(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) => (_unref(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) => (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 => 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) => (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) => (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(MobileThumbnails)\n ]))\n}\n}\n\n})","import script from \"./SlideToolbar.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./SlideToolbar.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./SlideToolbar.vue?vue&type=style&index=0&id=29fba90e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-29fba90e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, unref as _unref, 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-446388c6\"),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\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementToolbar',\n setup(__props) {\n\nconst colors = ['#000000', '#ffffff', '#eeece1', '#1e497b', '#4e81bb', '#e2534d', '#9aba60', '#8165a0', '#47acc5', '#f9974c', '#c21401', '#ff1e02', '#ffc12a', '#ffff3a', '#90cf5b', '#00af57']\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { handleElement, handleElementId, richTextAttrs } = storeToRefs(mainStore)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst updateElement = (id: string, props: Partial) => {\n slidesStore.updateElement({ id, props })\n addHistorySnapshot()\n}\n\nconst tabs: TabItem[] = [\n { key: 'style', label: '样式' },\n { key: 'common', label: '布局' },\n]\nconst activeTab = ref('common')\n\nconst { orderElement } = useOrderElement()\nconst { alignElementToCanvas } = useAlignElementToCanvas()\nconst { addElementsFromData } = useAddSlidesOrElements()\nconst { deleteElement } = useDeleteElement()\n\nconst copyElement = () => {\n const element: PPTElement = JSON.parse(JSON.stringify(handleElement.value))\n addElementsFromData([element])\n}\n\nconst emitRichTextCommand = (command: string, value?: string) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { action: { command, value } })\n}\n\nconst 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\nconst 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\nreturn (_ctx: any,_cache: 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(), _createElementBlock(_Fragment, null, _renderList(tabs, (item) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': activeTab.value === item.key }]),\n key: item.key,\n onClick: ($event: any) => (activeTab.value = item.key)\n }, _toDisplayString(item.label), 11, _hoisted_3)\n }), 64))\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (activeTab.value === '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: _unref(richTextAttrs).bold,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (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: _unref(richTextAttrs).em,\n onClick: _cache[1] || (_cache[1] = ($event: any) => (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: _unref(richTextAttrs).underline,\n onClick: _cache[2] || (_cache[2] = ($event: any) => (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: _unref(richTextAttrs).strikethrough,\n onClick: _cache[3] || (_cache[3] = ($event: any) => (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) => (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) => (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: _unref(richTextAttrs).align,\n onChange: _cache[6] || (_cache[6] = e => 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(), _createElementBlock(_Fragment, null, _renderList(colors, (color) => {\n return _createElementVNode(\"div\", {\n class: \"color\",\n key: color,\n onClick: ($event: any) => (updateFontColor(color))\n }, [\n _createElementVNode(\"div\", {\n class: \"color-block\",\n style: _normalizeStyle({ backgroundColor: color })\n }, null, 4)\n ], 8, _hoisted_11)\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _hoisted_13,\n _createElementVNode(\"div\", _hoisted_14, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(colors, (color) => {\n return _createElementVNode(\"div\", {\n class: \"color\",\n key: color,\n onClick: ($event: any) => (updateFill(color))\n }, [\n _createElementVNode(\"div\", {\n class: \"color-block\",\n style: _normalizeStyle({ backgroundColor: color })\n }, null, 4)\n ], 8, _hoisted_15)\n }), 64))\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (activeTab.value === '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) => (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) => (_unref(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) => (_unref(orderElement)(_unref(handleElement)!, _unref(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) => (_unref(orderElement)(_unref(handleElement)!, _unref(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) => (_unref(orderElement)(_unref(handleElement)!, _unref(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) => (_unref(orderElement)(_unref(handleElement)!, _unref(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) => (_unref(alignElementToCanvas)(_unref(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) => (_unref(alignElementToCanvas)(_unref(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) => (_unref(alignElementToCanvas)(_unref(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) => (_unref(alignElementToCanvas)(_unref(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) => (_unref(alignElementToCanvas)(_unref(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) => (_unref(alignElementToCanvas)(_unref(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}\n}\n\n})","import script from \"./ElementToolbar.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementToolbar.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementToolbar.vue?vue&type=style&index=0&id=446388c6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-446388c6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-10cd6713\"),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\nimport { PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSnapshotStore } from '@/store'\nimport { Mode } from '@/types/mobile'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Header',\n props: {\n changeMode: {\n type: Function as PropType<(mode: Mode) => void>,\n required: true,\n },\n},\n setup(__props) {\n\n\n\nconst { canUndo, canRedo } = storeToRefs(useSnapshotStore())\nconst { redo, undo } = useHistorySnapshot()\n\nreturn (_ctx: any,_cache: 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': !_unref(canUndo) }]),\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_unref(undo)()), [\"stop\"]))\n }, [\n _createVNode(_component_IconBack),\n _hoisted_3\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"history-item\", { 'disable': !_unref(canRedo) }]),\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_unref(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) => (__props.changeMode('preview')))\n }, [\n _createVNode(_component_IconLogout),\n _hoisted_5\n ])\n ]))\n}\n}\n\n})","import script from \"./Header.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Header.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Header.vue?vue&type=style&index=0&id=10cd6713&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-10cd6713\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, unref as _unref, 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-8cdcde82\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mobile-editor\" }\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n changeMode: {\n type: Function as PropType<(mode: Mode) => void>,\n required: true,\n },\n},\n setup(__props) {\n\n\n\nconst slidesStore = useSlidesStore()\nconst mainStore = useMainStore()\nconst { slideIndex, currentSlide, viewportRatio } = storeToRefs(slidesStore)\nconst { activeElementIdList, handleElement } = storeToRefs(mainStore)\n\nconst contentRef = ref()\n\nconst alignmentLines = ref([])\n\nconst background = computed(() => currentSlide.value.background)\nconst { backgroundStyle } = useSlideBackgroundStyle(background)\n\nconst 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\nonMounted(() => {\n if (activeElementIdList.value.length) mainStore.setActiveElementIdList([])\n if (slideIndex.value !== 0) slidesStore.updateSlideIndex(0)\n})\n\nconst viewportStyles = computed(() => ({\n width: VIEWPORT_SIZE * canvasScale.value + 'px',\n height: VIEWPORT_SIZE * viewportRatio.value * canvasScale.value + 'px',\n}))\n\nconst elementList = ref([])\nconst setLocalElementList = () => {\n elementList.value = currentSlide.value ? JSON.parse(JSON.stringify(currentSlide.value.elements)) : []\n}\nwatchEffect(setLocalElementList)\n\nconst { dragElement } = useDragElement(elementList, alignmentLines, canvasScale)\nconst { scaleElement } = useScaleElement(elementList, alignmentLines, canvasScale)\n\nconst 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\nconst handleClickBlankArea = () => {\n mainStore.setActiveElementIdList([])\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(Header, { changeMode: __props.changeMode }, null, 8, [\"changeMode\"]),\n _createElementVNode(\"div\", {\n class: \"content\",\n ref_key: \"contentRef\",\n ref: contentRef,\n onTouchstart: _cache[0] || (_cache[0] = ($event: any) => (handleClickBlankArea()))\n }, [\n _createElementVNode(\"div\", {\n class: \"viewport-wrapper\",\n style: _normalizeStyle(_unref(viewportStyles))\n }, [\n _createElementVNode(\"div\", {\n class: \"background\",\n style: _normalizeStyle(_unref(backgroundStyle))\n }, null, 4),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(alignmentLines.value, (line, index) => {\n return (_openBlock(), _createBlock(AlignmentLine, {\n key: index,\n type: line.type,\n axis: line.axis,\n length: line.length,\n canvasScale: _unref(canvasScale)\n }, null, 8, [\"type\", \"axis\", \"length\", \"canvasScale\"]))\n }), 128)),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(elementList.value, (element) => {\n return (_openBlock(), _createElementBlock(_Fragment, {\n key: element.id\n }, [\n (element.type !== 'line')\n ? (_openBlock(), _createBlock(MobileOperate, {\n key: 0,\n elementInfo: element,\n isSelected: _unref(activeElementIdList).includes(element.id),\n canvasScale: _unref(canvasScale),\n scaleElement: _unref(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(${_unref(canvasScale)})` })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(elementList.value, (element, index) => {\n return (_openBlock(), _createBlock(MobileEditableElement, {\n key: element.id,\n elementInfo: element,\n elementIndex: index + 1,\n selectElement: selectElement\n }, null, 8, [\"elementInfo\", \"elementIndex\"]))\n }), 128))\n ], 4)\n ], 4)\n ], 544),\n _createVNode(SlideToolbar),\n (_unref(handleElement))\n ? (_openBlock(), _createBlock(ElementToolbar, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=8cdcde82&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-8cdcde82\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5293de3b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"header\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\" 退出播放\")\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MobilePlayer',\n props: {\n changeMode: {\n type: Function as PropType<(mode: Mode) => void>,\n required: true,\n },\n},\n setup(__props) {\n\n\n\nconst slidesStore = useSlidesStore()\nconst { slides, slideIndex, currentSlide, viewportRatio } = storeToRefs(slidesStore)\n\nconst toolVisible = ref(false)\n\nconst playerSize = ref({ width: 0, height: 0 })\n\nonMounted(() => {\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\nconst 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\nconst touchInfo = ref<{ x: number; y: number; } | null>(null)\nconst touchStartListener = (e: TouchEvent) => {\n touchInfo.value = {\n x: e.changedTouches[0].pageX,\n y: e.changedTouches[0].pageY,\n }\n}\nconst 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\nreturn (_ctx: any,_cache: any) => {\n const _component_IconLogout = _resolveComponent(\"IconLogout\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"mobile-player\",\n style: _normalizeStyle({\n width: playerSize.value.width + 'px',\n height: playerSize.value.height + 'px',\n transform: `rotate(90deg) translateY(-${playerSize.value.height}px)`,\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"screen-slide-list\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (toolVisible.value = !toolVisible.value)),\n onTouchstart: _cache[1] || (_cache[1] = $event => touchStartListener($event)),\n onTouchend: _cache[2] || (_cache[2] = $event => touchEndListener($event))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(slides), (slide, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\n 'slide-item', \n `turning-mode-${slide.turningMode || 'slideY'}`,\n {\n 'current': index === _unref(slideIndex),\n 'before': index < _unref(slideIndex),\n 'after': index > _unref(slideIndex),\n 'hide': (index === _unref(slideIndex) - 1 || index === _unref(slideIndex) + 1) && slide.turningMode !== _unref(currentSlide).turningMode,\n }\n ]),\n key: slide.id\n }, [\n (Math.abs(_unref(slideIndex) - index) < 2)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"slide-content\",\n style: _normalizeStyle({\n width: _unref(slideSize).width + 'px',\n height: _unref(slideSize).height + 'px',\n })\n }, [\n _createVNode(ThumbnailSlide, {\n slide: slide,\n size: _unref(slideSize).width\n }, null, 8, [\"slide\", \"size\"])\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 2))\n }), 128))\n ], 32),\n (toolVisible.value)\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) => (__props.changeMode('preview')))\n }, [\n _createVNode(_component_IconLogout),\n _hoisted_2\n ])\n ]),\n _createVNode(MobileThumbnails, { class: \"thumbnails\" })\n ], 64))\n : _createCommentVNode(\"\", true)\n ], 4))\n}\n}\n\n})","import script from \"./MobilePlayer.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MobilePlayer.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MobilePlayer.vue?vue&type=style&index=0&id=5293de3b&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5293de3b\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createVNode as _createVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4f906636\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"thumbnail-list\" }\nconst _hoisted_2 = { class: \"menu\" }\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\" 编辑\")\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\" 播放\")\n\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MobilePreview',\n props: {\n changeMode: {\n type: Function as PropType<(mode: Mode) => void>,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nconst { slides } = storeToRefs(useSlidesStore())\nconst { slidesLoadLimit } = useLoadSlides()\n\nconst mobileRef = ref()\nconst screenWidth = ref(0)\n\nonMounted(() => {\n if (!mobileRef.value) return\n screenWidth.value = mobileRef.value.clientWidth\n})\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconEdit = _resolveComponent(\"IconEdit\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_IconFullScreenPlay = _resolveComponent(\"IconFullScreenPlay\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"mobile-preview\",\n ref_key: \"mobileRef\",\n ref: mobileRef\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(slides), (slide, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"thumbnail-item\",\n key: slide.id\n }, [\n _createVNode(ThumbnailSlide, {\n slide: slide,\n size: screenWidth.value - 10,\n visible: index < _unref(slidesLoadLimit)\n }, null, 8, [\"slide\", \"size\", \"visible\"])\n ]))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: \"menu-item\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (__props.changeMode('editor')))\n }, [\n _createVNode(_component_IconEdit, { class: \"icon\" }),\n _hoisted_3\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) => (__props.changeMode('player')))\n }, [\n _createVNode(_component_IconFullScreenPlay, { class: \"icon\" }),\n _hoisted_4\n ])\n ])\n ], 512))\n}\n}\n\n})","import script from \"./MobilePreview.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MobilePreview.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MobilePreview.vue?vue&type=style&index=0&id=4f906636&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4f906636\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-1fb24d48\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mobile\" }\n\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst mode = ref('preview')\n \nconst changeMode = (_mode: Mode) => mode.value = _mode\n\nconst currentComponent = computed(() => {\n const componentMap = {\n 'editor': MobileEditor,\n 'player': MobilePlayer,\n 'preview': MobilePreview,\n }\n return componentMap[mode.value] || null\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_unref(currentComponent)), { changeMode: changeMode }))\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=1fb24d48&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1fb24d48\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'App',\n setup(__props) {\n\nconst _isPC = isPC()\n\nconst mainStore = useMainStore()\nconst snapshotStore = useSnapshotStore()\nconst { databaseId } = storeToRefs(mainStore)\nconst { screening } = storeToRefs(useScreenStore())\n\nif (process.env.NODE_ENV === 'production') {\n window.onbeforeunload = () => false\n}\n\nonMounted(() => {\n snapshotStore.initSnapshotDatabase()\n mainStore.setAvailableFonts()\n})\n\n// 应用注销时向 localStorage 中记录下本次 indexedDB 的数据库ID,用于之后清除数据库\nwindow.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\nreturn (_ctx: any,_cache: any) => {\n return (_unref(screening))\n ? (_openBlock(), _createBlock(Screen, { key: 0 }))\n : (_unref(_isPC))\n ? (_openBlock(), _createBlock(Editor, { key: 1 }))\n : (_openBlock(), _createBlock(Mobile, { key: 2 }))\n}\n}\n\n})","import script from \"./App.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./App.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./App.vue?vue&type=style&index=0&id=f5c43528&lang=scss\"\n\nconst __exports__ = script;\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 Needle,\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 Needle,\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 { defineComponent as _defineComponent } from 'vue'\nimport { 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-4727b7ff\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"accept\"]\n\nimport { ref } from 'vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'FileInput',\n props: {\n accept: {\n type: String,\n default: 'image/*',\n },\n},\n emits: [\"change\"],\n setup(__props, { emit }: { emit: ({\n (event: 'change', payload: FileList): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst inputRef = ref()\n\nconst handleClick = () => {\n if (!inputRef.value) return\n inputRef.value.value = ''\n inputRef.value.click()\n}\nconst handleChange = (e: Event) => {\n const files = (e.target as HTMLInputElement).files\n if (files) emit('change', files)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"file-input\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (handleClick()))\n }, [\n _renderSlot(_ctx.$slots, \"default\"),\n _createElementVNode(\"input\", {\n class: \"input\",\n type: \"file\",\n name: \"upload\",\n ref_key: \"inputRef\",\n ref: inputRef,\n accept: __props.accept,\n onChange: _cache[0] || (_cache[0] = $event => handleChange($event))\n }, null, 40, _hoisted_1)\n ]))\n}\n}\n\n})","import script from \"./FileInput.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./FileInput.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./FileInput.vue?vue&type=style&index=0&id=4727b7ff&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4727b7ff\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'CheckboxButton',\n props: {\r\n checked: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n},\n setup(__props) {\n\r\n\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"button\", {\n class: _normalizeClass([\"checkbox-button\", { 'checked': __props.checked }])\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ], 2))\n}\n}\n\n})","import script from \"./CheckboxButton.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./CheckboxButton.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./CheckboxButton.vue?vue&type=style&index=0&id=699cf016&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-699cf016\"]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n","import { render } from \"./CheckboxButtonGroup.vue?vue&type=template&id=b8aa6eac&scoped=true\"\nconst script = {}\n\nimport \"./CheckboxButtonGroup.vue?vue&type=style&index=0&id=b8aa6eac&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b8aa6eac\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed } from 'vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Checkboard',\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\nconst props = __props\n\n\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\nconst bgStyle = computed(() => {\n const checkboard = getCheckboard(props.white, props.grey, props.size)\n return { backgroundImage: `url(${checkboard})` }\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"checkerboard\",\n style: _normalizeStyle(_unref(bgStyle))\n }, null, 4))\n}\n}\n\n})","import script from \"./Checkboard.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Checkboard.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Checkboard.vue?vue&type=style&index=0&id=7494636c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7494636c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, unref as _unref, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-246b525c\"),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\nimport { computed, onUnmounted, PropType, ref } from 'vue'\n\nimport Checkboard from './Checkboard.vue'\nimport { ColorFormats } from 'tinycolor2'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Alpha',\n props: {\n value: {\n type: Object as PropType,\n required: true,\n },\n},\n emits: [\"colorChange\"],\n setup(__props, { emit }: { emit: ({\n (event: 'colorChange', payload: ColorFormats.RGBA): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst color = computed(() => props.value)\n \nconst 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\nconst alphaRef = ref()\nconst 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\nconst unbindEventListeners = () => {\n window.removeEventListener('mousemove', handleChange)\n window.removeEventListener('mouseup', unbindEventListeners)\n}\nconst handleMouseDown = (e: MouseEvent) => {\n handleChange(e)\n window.addEventListener('mousemove', handleChange)\n window.addEventListener('mouseup', unbindEventListeners)\n}\nonUnmounted(unbindEventListeners)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(Checkboard)\n ]),\n _createElementVNode(\"div\", {\n class: \"alpha-gradient\",\n style: _normalizeStyle({ background: _unref(gradientColor) })\n }, null, 4),\n _createElementVNode(\"div\", {\n class: \"alpha-container\",\n ref_key: \"alphaRef\",\n ref: alphaRef,\n onMousedown: _cache[0] || (_cache[0] = $event => handleMouseDown($event))\n }, [\n _createElementVNode(\"div\", {\n class: \"alpha-pointer\",\n style: _normalizeStyle({ left: _unref(color).a * 100 + '%' })\n }, _hoisted_4, 4)\n ], 544)\n ]))\n}\n}\n\n})","import script from \"./Alpha.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Alpha.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Alpha.vue?vue&type=style&index=0&id=246b525c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-246b525c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-60c3cca1\"),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\nimport { computed, onUnmounted, PropType, ref, watch } from 'vue'\nimport tinycolor, { ColorFormats } from 'tinycolor2'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Hue',\n props: {\n value: {\n type: Object as PropType,\n required: true,\n },\n hue: {\n type: Number,\n required: true,\n },\n},\n emits: [\"colorChange\"],\n setup(__props, { emit }: { emit: ({\n (event: 'colorChange', payload: ColorFormats.HSLA): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst oldHue = ref(0)\nconst pullDirection = ref('')\n\nconst color = computed(() => {\n const hsla = tinycolor(props.value).toHsl()\n if (props.hue !== -1) hsla.h = props.hue\n return hsla\n})\n\nconst pointerLeft = computed(() => {\n if (color.value.h === 0 && pullDirection.value === 'right') return '100%'\n return color.value.h * 100 / 360 + '%'\n})\n\nwatch(() => 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\nconst hueRef = ref()\nconst 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\nconst unbindEventListeners = () => {\n window.removeEventListener('mousemove', handleChange)\n window.removeEventListener('mouseup', unbindEventListeners)\n}\nconst handleMouseDown = (e: MouseEvent) => {\n handleChange(e)\n window.addEventListener('mousemove', handleChange)\n window.addEventListener('mouseup', unbindEventListeners)\n}\nonUnmounted(unbindEventListeners)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"hue-container\",\n ref_key: \"hueRef\",\n ref: hueRef,\n onMousedown: _cache[0] || (_cache[0] = $event => handleMouseDown($event))\n }, [\n _createElementVNode(\"div\", {\n class: \"hue-pointer\",\n style: _normalizeStyle({ left: _unref(pointerLeft) })\n }, _hoisted_3, 4)\n ], 544)\n ]))\n}\n}\n\n})","import script from \"./Hue.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Hue.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Hue.vue?vue&type=style&index=0&id=60c3cca1&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-60c3cca1\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-d230faf4\"),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\nimport { computed, onUnmounted, PropType, ref } from 'vue'\nimport tinycolor, { ColorFormats } from 'tinycolor2'\nimport { throttle, clamp } from 'lodash'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Saturation',\n props: {\n value: {\n type: Object as PropType,\n required: true,\n },\n hue: {\n type: Number,\n required: true,\n },\n},\n emits: [\"colorChange\"],\n setup(__props, { emit }: { emit: ({\n (event: 'colorChange', payload: ColorFormats.HSVA): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst color = computed(() => {\n const hsva = tinycolor(props.value).toHsv()\n if (props.hue !== -1) hsva.h = props.hue\n return hsva\n})\n\nconst bgColor = computed(() => `hsl(${color.value.h}, 100%, 50%)`)\nconst pointerTop = computed(() => (-(color.value.v * 100) + 1) + 100 + '%')\nconst pointerLeft = computed(() => color.value.s * 100 + '%')\n\nconst emitChangeEvent = throttle(function(param: ColorFormats.HSVA) {\n emit('colorChange', param)\n}, 20, { leading: true, trailing: false })\n\nconst saturationRef = ref()\nconst 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\nconst unbindEventListeners = () => {\n window.removeEventListener('mousemove', handleChange)\n window.removeEventListener('mouseup', unbindEventListeners)\n}\nconst handleMouseDown = (e: MouseEvent) => {\n handleChange(e)\n window.addEventListener('mousemove', handleChange)\n window.addEventListener('mouseup', unbindEventListeners)\n}\nonUnmounted(unbindEventListeners)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"saturation\",\n ref_key: \"saturationRef\",\n ref: saturationRef,\n style: _normalizeStyle({ background: _unref(bgColor) }),\n onMousedown: _cache[0] || (_cache[0] = $event => handleMouseDown($event))\n }, [\n _hoisted_1,\n _hoisted_2,\n _createElementVNode(\"div\", {\n class: \"saturation-pointer\",\n style: _normalizeStyle({\n top: _unref(pointerTop),\n left: _unref(pointerLeft),\n })\n }, _hoisted_4, 4)\n ], 36))\n}\n}\n\n})","import script from \"./Saturation.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Saturation.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Saturation.vue?vue&type=style&index=0&id=d230faf4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-d230faf4\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2f428dde\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"editable-input\" }\nconst _hoisted_2 = [\"value\"]\n\nimport { computed, PropType } from 'vue'\nimport tinycolor, { ColorFormats } from 'tinycolor2'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'EditableInput',\n props: {\n value: {\n type: Object as PropType,\n required: true,\n },\n},\n emits: [\"colorChange\"],\n setup(__props, { emit }: { emit: ({\n (event: 'colorChange', payload: ColorFormats.RGBA): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst 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\nconst handleInput = (e: Event) => {\n const value = (e.target as HTMLInputElement).value\n if (value.length >= 6) emit('colorChange', tinycolor(value).toRgb())\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"input\", {\n class: \"input-content\",\n value: _unref(val),\n onInput: _cache[0] || (_cache[0] = $event => handleInput($event))\n }, null, 40, _hoisted_2)\n ]))\n}\n}\n\n})","import script from \"./EditableInput.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./EditableInput.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./EditableInput.vue?vue&type=style&index=0&id=2f428dde&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2f428dde\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, resolveComponent as _resolveComponent, 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-c46eb110\"),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\nimport { computed, 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\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n modelValue: {\n type: String,\n default: '#e86b99',\n },\n},\n emits: [\"update:modelValue\"],\n setup(__props, { emit }: { emit: ({\n (event: 'update:modelValue', payload: string): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\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\nconst hue = ref(-1)\nconst recentColors = ref([])\n\nconst 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\nconst presetColors = getPresetColors()\n\nconst currentColor = computed(() => {\n return `rgba(${[color.value.r, color.value.g, color.value.b, color.value.a].join(',')})`\n})\n\nconst selectPresetColor = (colorString: string) => {\n hue.value = tinycolor(colorString).toHsl().h\n emit('update:modelValue', colorString)\n}\n\n// 每次选择非预设颜色时,需要将该颜色加入到最近使用列表中\nconst 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\nonMounted(() => {\n const recentColorsCache = localStorage.getItem(RECENT_COLORS)\n if (recentColorsCache) recentColors.value = JSON.parse(recentColorsCache)\n})\n\nwatch(recentColors, () => {\n const recentColorsCache = JSON.stringify(recentColors.value)\n localStorage.setItem(RECENT_COLORS, recentColorsCache)\n})\n\nconst 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// 打开取色吸管\n// 检查环境是否支持原生取色吸管,支持则使用原生吸管,否则使用自定义吸管\nconst openEyeDropper = () => {\n const isSupportedEyeDropper = 'EyeDropper' in window\n\n if (isSupportedEyeDropper) browserEyeDropper()\n else customEyeDropper()\n}\n\n// 原生取色吸管\nconst browserEyeDropper = () => {\n message.success('按 ESC 键关闭取色吸管')\n\n // eslint-disable-next-line\n const eyeDropper = new (window as any).EyeDropper()\n eyeDropper.open().then((result: { sRGBHex: string }) => {\n const tColor = tinycolor(result.sRGBHex)\n hue.value = tColor.toHsl().h\n color.value = tColor.toRgb()\n\n updateRecentColorsCache()\n }).catch(() => {\n message.success('关闭取色吸管')\n })\n}\n\n// 基于 Canvas 的自定义取色吸管\nconst customEyeDropper = () => {\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\nreturn (_ctx: any,_cache: any) => {\n const _component_IconNeedle = _resolveComponent(\"IconNeedle\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(Saturation, {\n value: _unref(color),\n hue: hue.value,\n onColorChange: _cache[0] || (_cache[0] = value => 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: _unref(currentColor) })\n }, null, 4),\n _createVNode(Checkboard)\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(Hue, {\n value: _unref(color),\n hue: hue.value,\n onColorChange: _cache[1] || (_cache[1] = value => changeColor(value))\n }, null, 8, [\"value\", \"hue\"])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(Alpha, {\n value: _unref(color),\n onColorChange: _cache[2] || (_cache[2] = value => changeColor(value))\n }, null, 8, [\"value\"])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(EditableInput, {\n class: \"input\",\n value: _unref(color),\n onColorChange: _cache[3] || (_cache[3] = value => changeColor(value))\n }, null, 8, [\"value\"]),\n _createElementVNode(\"div\", {\n class: \"straw\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (openEyeDropper()))\n }, [\n _createVNode(_component_IconNeedle)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(themeColors, (c) => {\n return _createElementVNode(\"div\", {\n class: \"picker-presets-color\",\n key: c,\n style: _normalizeStyle({ background: c }),\n onClick: ($event: any) => (selectPresetColor(c))\n }, null, 12, _hoisted_10)\n }), 64))\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(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) => (selectPresetColor(c))\n }, null, 12, _hoisted_12))\n }), 128))\n ]))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_13, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(standardColors, (c) => {\n return _createElementVNode(\"div\", {\n key: c,\n class: \"picker-presets-color\",\n style: _normalizeStyle({ background: c }),\n onClick: ($event: any) => (selectPresetColor(c))\n }, null, 12, _hoisted_14)\n }), 64))\n ]),\n (recentColors.value.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, \"最近使用:\"))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_16, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(recentColors.value, (c) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: c,\n class: \"picker-presets-color alpha\",\n onClick: ($event: any) => (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}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=c46eb110&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-c46eb110\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-16ead44e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"fullscreen-spin\"\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'FullscreenSpin',\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n tip: {\n type: String,\n default: '',\n },\n},\n setup(__props) {\n\nconst props = __props\n\n\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Spin = _resolveComponent(\"Spin\")!\n\n return (__props.loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Spin, {\n tip: __props.tip,\n size: \"large\"\n }, null, 8, [\"tip\"])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./FullscreenSpin.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./FullscreenSpin.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./FullscreenSpin.vue?vue&type=style&index=0&id=16ead44e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-16ead44e\"]])\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 { defineComponent as _defineComponent } from 'vue'\nimport { 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-e470e712\"),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\nimport { PropType } from 'vue'\nimport { ContextmenuItem } from './types'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MenuContent',\n props: {\n menus: {\n type: Array as PropType,\n required: true,\n },\n handleClickMenuItem: {\n type: Function,\n required: true,\n },\n},\n setup(__props) {\n\n\n\nreturn (_ctx: any,_cache: 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(__props.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) => (__props.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: __props.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}\n}\n\n})","import script from \"./MenuContent.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MenuContent.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MenuContent.vue?vue&type=style&index=0&id=e470e712&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-e470e712\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { withModifiers as _withModifiers, createElementVNode as _createElementVNode, unref as _unref, createVNode as _createVNode, normalizeStyle as _normalizeStyle, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed, PropType } from 'vue'\nimport { ContextmenuItem, Axis } from './types'\n\nimport MenuContent from './MenuContent.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\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\nconst props = __props\n\n\n\nconst 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\nconst 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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", {\n class: \"mask\",\n onContextmenu: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (__props.removeContextmenu()), [\"prevent\"])),\n onMousedown: _cache[1] || (_cache[1] = ($event: any) => (__props.removeContextmenu()))\n }, null, 32),\n _createElementVNode(\"div\", {\n class: \"contextmenu\",\n style: _normalizeStyle({\n left: _unref(style).left + 'px',\n top: _unref(style).top + 'px',\n }),\n onContextmenu: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"prevent\"]))\n }, [\n _createVNode(MenuContent, {\n menus: __props.menus,\n handleClickMenuItem: handleClickMenuItem\n }, null, 8, [\"menus\"])\n ], 36)\n ], 64))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=e70aeb5c&lang=scss\"\n\nconst __exports__ = script;\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!./index.vue?vue&type=style&index=0&id=5303bd17&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/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=769d6876&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=a15cc1d8&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=938968a2&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=153c0b44&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=1f8f1a8b&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=7e28e1d8&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=7fdc6c04&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=4a0c7aa7&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=02998580&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/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=4727b7ff&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=60a953a0&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=4e7c6a52&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=66f2009f&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=246b525c&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=1c41d9fe&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=1bc24666&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=82b674f6&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=c46eb110&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=e91e3764&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=1aa2357d&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!./LineElementOperate.vue?vue&type=style&index=0&id=4659f395&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=340cdee8&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/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=b5bace06&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=3fef9be0&lang=scss&scoped=true\""],"sourceRoot":""} \ No newline at end of file