diff --git a/css/app.7f30b112.css b/css/app.8369b27d.css similarity index 85% rename from css/app.7f30b112.css rename to css/app.8369b27d.css index 6df68173..60127a2d 100644 --- a/css/app.7f30b112.css +++ b/css/app.8369b27d.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}.input[data-v-cdb026e2]{display:none}.editor-header[data-v-76222f8e]{background-color:#fff;-webkit-user-select:none;-moz-user-select:none;user-select:none;border-bottom:1px solid #eee;display:flex;justify-content:space-between;padding:0 10px}.left[data-v-76222f8e],.menu-item[data-v-76222f8e],.right[data-v-76222f8e]{display:flex;justify-content:center;align-items:center}.menu-item[data-v-76222f8e]{height:100%;font-size:14px;padding:0 10px;cursor:pointer}.menu-item .text[data-v-76222f8e]{margin-left:4px}.left .menu-item[data-v-76222f8e]: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-963e3dfc]{position:absolute}.editable-element-image.lock .element-content[data-v-963e3dfc]{cursor:default}.rotate-wrapper[data-v-963e3dfc]{width:100%;height:100%}.element-content[data-v-963e3dfc]{width:100%;height:100%;position:relative;cursor:move}.element-content .image-content[data-v-963e3dfc]{width:100%;height:100%;overflow:hidden;position:relative}.element-content img[data-v-963e3dfc]{position:absolute}.color-mask[data-v-963e3dfc]{position:absolute;top:0;bottom:0;left:0;right:0}svg[data-v-61b7d06a]{overflow:visible;position:absolute;top:0;left:0}.prosemirror-editor[data-v-76d3203e]{cursor:text}.prosemirror-editor.format-painter[data-v-76d3203e]{cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAVCAYAAACzK0UYAAAABHNCSVQICAgIfAhkiAAAAVRJREFUSInt1DFuwjAYBeCXUrFavgBN9yB6AKR6Bi7AVLrlBpFYgAUpp2i37AysVDIXcCIuwJRMEEYk9LrQDlVQ7EiVOvSt/v1/tmUbeZ7TGMPL5WLgEJLzNE2ptabWmsfjkTeLjTGUUvJ8Pjsjo9GIUkpKKam1voncuTRumn/EKfd1BSQnAF4qhvyK2k1VD88YQ6UUiqJI2+12r2LiPI7j2Xa7rV9yRZbLpRWiAKhGwjW1x3XN828jD9PpVK3X60bAarWy20lZltjv940QwO4KPzbu7oCgLMu/g3Q6ncZI73Q6WSFhGDZGnrIss0LG4zGEEG4ISZUkiW8DDAYDCCEQBIEbAmAWx7GNgSiKAOB1OBzaIyQnSZIom/cRRRG63e7C87z3MAw/fu7Gy/OcRVEgCIK01Wp9/10k37Ism9TdLCHEFzC/zvMPh8Nmt9v5ANDv9/EJD8ykxYswZDkAAAAASUVORK5CYII=) 1 10,default!important}.editable-element-text[data-v-9be58c0a]{position:absolute}.editable-element-text.lock .element-content[data-v-9be58c0a]{cursor:default}.rotate-wrapper[data-v-9be58c0a]{width:100%;height:100%}.element-content[data-v-9be58c0a]{position:relative;padding:10px;line-height:1.5;word-break:break-word;cursor:move}.element-content .text[data-v-9be58c0a]{position:relative}.element-content[data-v-9be58c0a] a{cursor:text}.drag-handler[data-v-9be58c0a]{height:10px;position:absolute;left:0;right:0}.drag-handler.top[data-v-9be58c0a]{top:0}.drag-handler.bottom[data-v-9be58c0a]{bottom:0}.editable-element-shape[data-v-486128e0]{position:absolute;pointer-events:none}.editable-element-shape.lock .element-content[data-v-486128e0]{cursor:default}.rotate-wrapper[data-v-486128e0]{width:100%;height:100%}.element-content[data-v-486128e0]{width:100%;height:100%;position:relative;cursor:move}.element-content svg[data-v-486128e0]{transform-origin:0 0;overflow:visible}.element-content .shape-path[data-v-486128e0]{pointer-events:all}.shape-text[data-v-486128e0]{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-486128e0]{pointer-events:all}.shape-text.top[data-v-486128e0]{justify-content:flex-start}.shape-text.middle[data-v-486128e0]{justify-content:center}.shape-text.bottom[data-v-486128e0]{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-1f8d633e]{display:flex}.chart-content[data-v-1f8d633e]{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-a2ef535c],table[data-v-a2ef535c]{position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}table[data-v-a2ef535c]{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-a2ef535c]{background-color:#fff}table.theme tr:nth-child(2n) .cell[data-v-a2ef535c]{background-color:var(--subThemeColor1)}table.theme tr:nth-child(odd) .cell[data-v-a2ef535c]{background-color:var(--subThemeColor2)}table.theme.col-footer tr .cell[data-v-a2ef535c]:last-child,table.theme.col-header tr .cell[data-v-a2ef535c]:first-child,table.theme.row-footer tr:last-child .cell[data-v-a2ef535c],table.theme.row-header tr:first-child .cell[data-v-a2ef535c]{background-color:var(--themeColor)}table .cell[data-v-a2ef535c]{position:relative;white-space:normal;word-wrap:break-word;vertical-align:middle;font-size:14px;cursor:default}table .cell.selected[data-v-a2ef535c]:after{content:"";width:100%;height:100%;position:absolute;top:0;left:0;background-color:hsla(0,0%,40%,.4)}table .cell-text[data-v-a2ef535c]{padding:5px;line-height:1.5;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:text}table .cell-text.active[data-v-a2ef535c]{-webkit-user-select:text;-moz-user-select:text;user-select:text}.drag-line[data-v-a2ef535c]{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-0b2b16da]{position:absolute}.editable-element-table.lock .element-content[data-v-0b2b16da]{cursor:default}.rotate-wrapper[data-v-0b2b16da]{width:100%;height:100%}.element-content[data-v-0b2b16da]{width:100%;height:100%;position:relative;cursor:move}.table-mask[data-v-0b2b16da]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .2s}.table-mask .mask-tip[data-v-0b2b16da]{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-0b2b16da]: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-adfce55e]{position:relative;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none;line-height:1;transform-origin:0 0}@media(min-width:900px){.video-player.playing .controller-mask[data-v-adfce55e],.video-player.playing .controller[data-v-adfce55e]{opacity:0}.video-player.playing:hover .controller-mask[data-v-adfce55e],.video-player.playing:hover .controller[data-v-adfce55e]{opacity:1}}.video-player.loading .bezel .diplayer-loading-icon[data-v-adfce55e]{display:block}.video-player.hide-controller[data-v-adfce55e]{cursor:none}.video-player.hide-controller .controller-mask[data-v-adfce55e],.video-player.hide-controller .controller[data-v-adfce55e]{opacity:0;transform:translateY(100%)}.video-wrap[data-v-adfce55e]{position:relative;background:#000;font-size:0;width:100%;height:100%}.video-wrap .video[data-v-adfce55e]{width:100%;height:100%}.controller-mask[data-v-adfce55e]{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-adfce55e]{position:absolute;bottom:0;left:0;right:0;height:41px;padding:0 20px;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.controller .bar-wrap[data-v-adfce55e]{padding:5px 0;cursor:pointer;position:absolute;bottom:33px;width:calc(100% - 40px);height:3px}.controller .bar-wrap:hover .bar .played .thumb[data-v-adfce55e]{transform:scale(1)}.controller .bar-wrap .bar-time[data-v-adfce55e]{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-adfce55e]{opacity:0}.controller .bar-wrap .bar[data-v-adfce55e]{position:relative;height:3px;width:100%;background:hsla(0,0%,100%,.2);cursor:pointer}.controller .bar-wrap .bar .loaded[data-v-adfce55e]{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-adfce55e]{position:absolute;left:0;top:0;bottom:0;height:3px;will-change:width;background-color:#fff}.controller .bar-wrap .bar .played .thumb[data-v-adfce55e]{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-adfce55e]{height:38px;position:absolute;bottom:0;display:flex;align-items:center}.controller .icons.icons-right[data-v-adfce55e]{right:15px}.controller .icons .time[data-v-adfce55e]{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-adfce55e]{width:40px;height:100%;position:relative;cursor:pointer;display:flex;align-items:center;font-size:20px}.controller .icons .icon.play-icon[data-v-adfce55e]{font-size:26px}.controller .icons .icon .icon-content[data-v-adfce55e]{transition:all .2s ease-in-out;opacity:.8;color:#fff}.controller .icons .icon.loop-icon[data-v-adfce55e]{font-size:12px}.controller .icons .icon.loop-icon .icon-content[data-v-adfce55e]{opacity:.5}.controller .icons .icon.speed-icon[data-v-adfce55e]{font-size:12px;position:relative}.controller .icons .icon .speed-menu[data-v-adfce55e]{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-adfce55e]{padding:8px 0;text-align:center}.controller .icons .icon .speed-menu .speed-menu-item[data-v-adfce55e]:hover{background-color:#393833;color:#fff}.controller .icons .icon .speed-menu .speed-menu-item.active[data-v-adfce55e]{font-weight:700;color:#fff}.controller .icons .icon.active .icon-content[data-v-adfce55e],.controller .icons .icon:hover .icon-content[data-v-adfce55e]{opacity:1}.controller .icons .volume[data-v-adfce55e]{height:100%;position:relative;cursor:pointer;display:flex;align-items:center}.controller .icons .volume:hover .volume-bar-wrap .volume-bar[data-v-adfce55e]{width:45px}.controller .icons .volume:hover .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-adfce55e]{transform:scale(1)}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar[data-v-adfce55e]{width:45px}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-adfce55e]{transform:scale(1)}.controller .icons .volume-bar-wrap[data-v-adfce55e]{display:inline-block;margin:0 15px 0 -5px;vertical-align:middle;height:100%}.controller .icons .volume-bar[data-v-adfce55e]{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-adfce55e]{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-adfce55e]{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-adfce55e]{display:inline-block;height:100%}.bezel[data-v-adfce55e]{position:absolute;left:0;right:0;top:0;bottom:0;font-size:22px;color:#fff;pointer-events:none}.bezel .bezel-icon[data-v-adfce55e]{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-adfce55e]{-webkit-animation:bezel-hide-adfce55e .5s linear;animation:bezel-hide-adfce55e .5s linear}@-webkit-keyframes bezel-hide-adfce55e{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(2)}}@keyframes bezel-hide-adfce55e{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(2)}}.bezel .loading-icon[data-v-adfce55e]{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-adfce55e]{display:none}.bezel .loading-icon .loading-dot[data-v-adfce55e]{-webkit-animation:loading-dot-fade-adfce55e .8s ease infinite;animation:loading-dot-fade-adfce55e .8s ease infinite;opacity:0;transform-origin:4px 4px}.bezel .loading-icon .loading-dot.loading-dot-7[data-v-adfce55e]{-webkit-animation-delay:.7s;animation-delay:.7s}.bezel .loading-icon .loading-dot.loading-dot-6[data-v-adfce55e]{-webkit-animation-delay:.6s;animation-delay:.6s}.bezel .loading-icon .loading-dot.loading-dot-5[data-v-adfce55e]{-webkit-animation-delay:.5s;animation-delay:.5s}.bezel .loading-icon .loading-dot.loading-dot-4[data-v-adfce55e]{-webkit-animation-delay:.4s;animation-delay:.4s}.bezel .loading-icon .loading-dot.loading-dot-3[data-v-adfce55e]{-webkit-animation-delay:.3s;animation-delay:.3s}.bezel .loading-icon .loading-dot.loading-dot-2[data-v-adfce55e]{-webkit-animation-delay:.2s;animation-delay:.2s}.bezel .loading-icon .loading-dot.loading-dot-1[data-v-adfce55e]{-webkit-animation-delay:.1s;animation-delay:.1s}@-webkit-keyframes loading-dot-fade-adfce55e{0%{opacity:.7;transform:scale(1.2)}50%{opacity:.25;transform:scale(.9)}to{opacity:.25;transform:scale(.85)}}@keyframes loading-dot-fade-adfce55e{0%{opacity:.7;transform:scale(1.2)}50%{opacity:.25;transform:scale(.9)}to{opacity:.25;transform:scale(.85)}}.load-error[data-v-adfce55e]{position:absolute;left:0;right:0;top:0;bottom:0;font-size:15px;color:#fff;pointer-events:none;display:flex;justify-content:center;align-items:center}.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;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-aebac580]{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-61c4db4a]{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-0f6bb088]{font-size:12px}.h[data-v-0f6bb088]{position:absolute;background-color:#fff;border:1px solid #eee;height:20px;top:5px;display:flex;justify-content:space-between;align-items:center;overflow:hidden}.h .ruler-marker-100[data-v-0f6bb088]{height:100%;width:10%;line-height:20px;text-align:right;flex-shrink:0;padding-right:5px;position:relative}.h .ruler-marker-100.hide span[data-v-0f6bb088],.h .ruler-marker-100.omit[data-v-0f6bb088]:before{display:none}.h .ruler-marker-100[data-v-0f6bb088]:not(:last-child):after{content:"";width:.1px;height:12px;position:absolute;right:0;bottom:0;background-color:#999}.h .ruler-marker-100[data-v-0f6bb088]:before{content:"";width:.1px;height:8px;position:absolute;right:50%;bottom:0;background-color:#999}.v[data-v-0f6bb088]{position:absolute;background-color:#fff;border:1px solid #eee;width:20px;left:5px;overflow:hidden}.v .ruler-marker-100[data-v-0f6bb088]{width:100%;line-height:20px;text-align:right;padding-bottom:5px;position:relative;writing-mode:vertical-rl}.v .ruler-marker-100.hide span[data-v-0f6bb088],.v .ruler-marker-100.omit[data-v-0f6bb088]:before{display:none}.v .ruler-marker-100[data-v-0f6bb088]:not(:last-child):after{content:"";height:.1px;width:12px;position:absolute;bottom:0;right:0;background-color:#999}.v .ruler-marker-100[data-v-0f6bb088]: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}.operate-keypoint-handler[data-v-fd38df18]{position:absolute;width:10px;height:10px;left:0;top:0;margin:-5px 0 0 -5px;border:1px solid #d14424;background-color:#ffe873;border-radius:1px}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-12300fd5]{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-12300fd5]{max-width:300px;margin-right:20px;word-break:keep-all;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.btns[data-v-12300fd5]{display:flex;align-items:center}.btns .btn[data-v-12300fd5]{word-break:keep-all;cursor:pointer}.operate[data-v-26f9c48a]{position:absolute;z-index:100;-webkit-user-select:none;-moz-user-select:none;user-select:none}.operate.multi-select[data-v-26f9c48a]{opacity:.2}.animation-index[data-v-26f9c48a]{position:absolute;top:0;left:-24px;font-size:12px}.animation-index .index-item[data-v-26f9c48a]{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-26f9c48a]{margin-top:5px}.base-element-image[data-v-c874e65e]{position:absolute}.rotate-wrapper[data-v-c874e65e]{width:100%;height:100%}.element-content[data-v-c874e65e]{width:100%;height:100%;position:relative}.element-content .image-content[data-v-c874e65e]{width:100%;height:100%;overflow:hidden;position:relative}.element-content img[data-v-c874e65e]{position:absolute}.color-mask[data-v-c874e65e]{position:absolute;top:0;bottom:0;left:0;right:0}.base-element-text[data-v-18d84242]{position:absolute}.rotate-wrapper[data-v-18d84242]{width:100%;height:100%}.element-content[data-v-18d84242]{position:relative;padding:10px;line-height:1.5;word-break:break-word}.element-content .text[data-v-18d84242]{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-40e73d4e],table[data-v-40e73d4e]{position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}table[data-v-40e73d4e]{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-40e73d4e]{background-color:#fff}table.theme tr:nth-child(2n) .cell[data-v-40e73d4e]{background-color:var(--subThemeColor1)}table.theme tr:nth-child(odd) .cell[data-v-40e73d4e]{background-color:var(--subThemeColor2)}table.theme.col-footer tr .cell[data-v-40e73d4e]:last-child,table.theme.col-header tr .cell[data-v-40e73d4e]:first-child,table.theme.row-footer tr:last-child .cell[data-v-40e73d4e],table.theme.row-header tr:first-child .cell[data-v-40e73d4e]{background-color:var(--themeColor)}table .cell[data-v-40e73d4e]{position:relative;white-space:normal;word-wrap:break-word;vertical-align:middle}table .cell-text[data-v-40e73d4e]{padding:5px;line-height:1.5}.base-element-table[data-v-6b8ce0be]{position:absolute}.rotate-wrapper[data-v-6b8ce0be]{width:100%;height:100%}.element-content[data-v-6b8ce0be]{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-3f5170e8]{background-color:#fff;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elements[data-v-3f5170e8]{transform-origin:0 0}.background[data-v-3f5170e8]{width:100%;height:100%;background-position:50%;position:absolute}.placeholder[data-v-3f5170e8]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.tabs[data-v-469f9b66]{display:flex;justify-content:flex-start;align-items:center;border-bottom:1px solid #eee;margin-bottom:20px}.tab[data-v-469f9b66]{padding:0 10px 8px;border-bottom:2px solid transparent;cursor:pointer}.tab.active[data-v-469f9b66]{border-bottom:2px solid #d14424}.input[data-v-469f9b66]{width:100%;height:32px}.preview[data-v-469f9b66]{margin-top:12px}.thumbnail[data-v-469f9b66]{outline:1px solid rgba(209,68,36,.15);margin-top:5px}.btns[data-v-469f9b66]{margin-top:20px;text-align:right}.canvas[data-v-17dcff2c]{height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;background-color:#f9f9f9;position:relative}.drag-mask[data-v-17dcff2c]{cursor:-webkit-grab;cursor:grab;position:absolute;top:0;right:0;bottom:0;left:0}.viewport-wrapper[data-v-17dcff2c]{position:absolute;box-shadow:0 0 15px 0 rgba(0,0,0,.1)}.viewport[data-v-17dcff2c]{position:absolute;top:0;left:0;transform-origin:0 0}.shape-item-thumbnail[data-v-09653543]{position:relative;cursor:pointer}.shape-content[data-v-09653543]{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-09653543]:not(.outlined){stroke:#d14424}.shape-content:hover .shape-path.outlined[data-v-09653543]{fill:#d14424}.shape-content svg[data-v-09653543]:not(:root){overflow:visible}.shape-pool[data-v-711a4fb1]{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-711a4fb1]{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-711a4fb1]{display:flex;flex-wrap:wrap;align-content:flex-start;margin-bottom:10px}.shape-item[data-v-711a4fb1]{width:8%;margin-bottom:2.22222%;height:0;padding-bottom:8%;flex-shrink:0}.shape-item[data-v-711a4fb1]:not(:nth-child(10n)){margin-right:2.22222%}.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-8fd9f34c]{width:100%;margin-top:-12px}.title[data-v-8fd9f34c]{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;user-select:none}.title .right[data-v-8fd9f34c]{cursor:pointer}.title .right[data-v-8fd9f34c]:hover{color:#d14424}table[data-v-8fd9f34c]{border-collapse:separate}td[data-v-8fd9f34c]{width:23px;height:23px;line-height:23px;border:2px solid #fff;background-color:#f7f7f7}.cell[data-v-8fd9f34c]{width:100%;height:100%;border:1px solid #dcdcdc}.cell.active[data-v-8fd9f34c]{background-color:rgba(209,68,36,.1);border-color:#d14424}.custom[data-v-8fd9f34c]{width:230px}.custom .row[data-v-8fd9f34c]{display:flex;align-items:center}.custom .row+.row[data-v-8fd9f34c]{margin-top:10px}.btns[data-v-8fd9f34c]{margin-top:10px;text-align:right}.btns .btn[data-v-8fd9f34c]{margin-left:10px}.media-input[data-v-4e5f883a]{width:480px}.tabs[data-v-4e5f883a]{display:flex;justify-content:flex-start;align-items:center;border-bottom:1px solid #eee;margin-bottom:20px}.tab[data-v-4e5f883a]{padding:0 10px 8px;border-bottom:2px solid transparent;cursor:pointer}.tab.active[data-v-4e5f883a]{border-bottom:2px solid #d14424}.btns[data-v-4e5f883a]{margin-top:10px;text-align:right}svg[data-v-1c41d9fe]{overflow:hidden}.latex-editor[data-v-097b396c]{height:560px}.container[data-v-097b396c]{height:calc(100% - 50px);display:flex;padding-top:25px}.left[data-v-097b396c]{width:540px;height:100%;display:flex;flex-direction:column}.input-area[data-v-097b396c]{flex:1}.input-area textarea[data-v-097b396c]{height:100%!important;border-color:#eee!important;padding:10px!important}.input-area textarea[data-v-097b396c]:focus{box-shadow:none!important}.preview[data-v-097b396c]{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;user-select:none}.placeholder[data-v-097b396c]{color:#888}.preview-content[data-v-097b396c]{width:100%;height:100%;padding:10px;display:flex;justify-content:center;align-items:center}.right[data-v-097b396c]{height:100%;margin-left:20px;flex:1;border:1px solid #eee;background-color:#fff;flex-direction:column}.right[data-v-097b396c],.tabs[data-v-097b396c]{display:flex;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tabs[data-v-097b396c]{height:40px;font-size:12px;flex-shrink:0}.tab[data-v-097b396c]{flex:1;display:flex;justify-content:center;align-items:center;background-color:#f9f9f9;border-bottom:1px solid #eee;cursor:pointer}.tab.active[data-v-097b396c]{background-color:#fff;border-bottom-color:#fff}.tab+.tab[data-v-097b396c]{border-left:1px solid #eee}.content[data-v-097b396c]{height:calc(100% - 40px);font-size:13px}.formula[data-v-097b396c]{height:100%;padding:12px;overflow:auto;overflow:overlay}.formula-item+.formula-item[data-v-097b396c]{margin-top:10px}.formula-item .formula-title[data-v-097b396c]{margin-bottom:5px}.formula-item .formula-item-content[data-v-097b396c]{width:246px;height:60px;padding:5px;display:flex;align-items:center;background-color:#f9f9f9;cursor:pointer}.symbol-tabs[data-v-097b396c]{display:flex;justify-content:space-around;align-items:center;border-bottom:1px solid #eee;margin:12px 12px 5px}.symbol-tab[data-v-097b396c]{padding:6px 10px;border-bottom:2px solid transparent;cursor:pointer}.symbol-tab.active[data-v-097b396c]{border-bottom:2px solid #d14424}.symbol[data-v-097b396c]{height:100%;display:flex;flex-direction:column}.symbol-pool[data-v-097b396c]{display:flex;flex-wrap:wrap;flex:1;padding:12px;overflow:auto;overflow:overlay}.symbol-item[data-v-097b396c]{display:flex;justify-content:center;align-items:center}.symbol-item[data-v-097b396c]:hover{background-color:#f9f9f9;cursor:pointer}.footer[data-v-097b396c]{height:50px;display:flex;justify-content:flex-end;align-items:flex-end}.footer .btn[data-v-097b396c]{margin-left:10px}.canvas-tool[data-v-7ba4b56c]{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;user-select:none}.left-handler[data-v-7ba4b56c]{display:flex;align-items:center}.add-element-handler[data-v-7ba4b56c]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex}.add-element-handler .handler-item[data-v-7ba4b56c]{width:32px;height:24px;display:flex;justify-content:center;align-items:center;margin:0 2px;border-radius:2px}.add-element-handler .handler-item[data-v-7ba4b56c]:not(.group-btn):hover{background-color:#f1f1f1}.add-element-handler .handler-item.active[data-v-7ba4b56c]{color:#d14424}.add-element-handler .handler-item.group-btn[data-v-7ba4b56c]{width:auto;margin-right:4px}.add-element-handler .handler-item.group-btn[data-v-7ba4b56c]:hover{background-color:#f3f3f3}.add-element-handler .handler-item.group-btn .arrow[data-v-7ba4b56c],.add-element-handler .handler-item.group-btn .icon[data-v-7ba4b56c]{height:100%;display:flex;justify-content:center;align-items:center}.add-element-handler .handler-item.group-btn .icon[data-v-7ba4b56c]{width:26px;padding:0 2px}.add-element-handler .handler-item.group-btn .icon[data-v-7ba4b56c]:hover{background-color:#e9e9e9}.add-element-handler .handler-item.group-btn .icon.active[data-v-7ba4b56c]{color:#d14424}.add-element-handler .handler-item.group-btn .arrow[data-v-7ba4b56c]{font-size:12px}.add-element-handler .handler-item.group-btn .arrow[data-v-7ba4b56c]:hover{background-color:#e9e9e9}.handler-item[data-v-7ba4b56c]{margin:0 10px;font-size:14px;overflow:hidden;cursor:pointer}.handler-item.disable[data-v-7ba4b56c]{opacity:.5}.right-handler[data-v-7ba4b56c]{display:flex;align-items:center}.right-handler .text[data-v-7ba4b56c]{width:40px;text-align:center;cursor:pointer}.right-handler .viewport-size[data-v-7ba4b56c]{font-size:13px}.preset-item[data-v-7ba4b56c]{padding:8px 20px;text-align:center;cursor:pointer}.preset-item[data-v-7ba4b56c]:hover{color:#d14424}.text-type-item[data-v-7ba4b56c]{padding:5px 10px;cursor:pointer}.text-type-item[data-v-7ba4b56c]:hover{background-color:#f1f1f1}.text-type-item+.text-type-item[data-v-7ba4b56c]{margin-top:3px}.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-61d61c80]{border-right:1px solid #eee;background-color:#fff;display:flex;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;user-select:none}.add-slide[data-v-61d61c80]{height:40px;font-size:12px;display:flex;flex-shrink:0;border-bottom:1px solid #eee;cursor:pointer}.add-slide .btn[data-v-61d61c80]{flex:1;display:flex;justify-content:center;align-items:center}.add-slide .btn[data-v-61d61c80]:hover{background-color:#f9f9f9}.add-slide .select-btn[data-v-61d61c80]{width:30px;display:flex;justify-content:center;align-items:center;border-left:1px solid #eee}.add-slide .select-btn[data-v-61d61c80]:hover{background-color:#f9f9f9}.add-slide .icon[data-v-61d61c80]{margin-right:3px;font-size:14px}.thumbnail-list[data-v-61d61c80]{padding:5px 0;flex:1;overflow:auto}.thumbnail-item[data-v-61d61c80]{display:flex;justify-content:center;align-items:center;padding:5px 0}.thumbnail-item .thumbnail[data-v-61d61c80]{outline:1px solid rgba(209,68,36,.15)}.thumbnail-item.active .label[data-v-61d61c80]{color:#d14424}.thumbnail-item.active .thumbnail[data-v-61d61c80],.thumbnail-item.selected .thumbnail[data-v-61d61c80]{outline-color:#d14424}.label[data-v-61d61c80]{font-size:12px;color:#999;width:20px;cursor:-webkit-grab;cursor:grab}.label.offset-left[data-v-61d61c80]{position:relative;left:-4px}.label[data-v-61d61c80]:active{cursor:-webkit-grabbing;cursor:grabbing}.page-number[data-v-61d61c80]{height:40px;font-size:12px;border-top:1px solid #eee;line-height:40px;text-align:center;color:#666}.row[data-v-54aad0f0]{width:100%;display:flex;align-items:center;margin-bottom:10px}.slider[data-v-54aad0f0]{flex:3}.color-btn[data-v-3b4a02d8]{display:flex;align-items:center;justify-content:center;padding:0!important}.color-block[data-v-3b4a02d8]{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-3b4a02d8]{width:100%;height:100%}.color-btn-icon[data-v-3b4a02d8]{width:30px;font-size:12px;margin-top:2px;color:#bfbfbf}.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-3d280c42]{position:relative;width:240px;background:#fff;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin-bottom:-10px}.picker-saturation-wrap[data-v-3d280c42]{width:100%;padding-bottom:50%;position:relative;overflow:hidden}.picker-controls[data-v-3d280c42]{display:flex}.picker-sliders[data-v-3d280c42]{padding:4px 0;flex:1}.picker-hue-wrap[data-v-3d280c42]{position:relative;height:10px}.picker-alpha-wrap[data-v-3d280c42]{position:relative;height:10px;margin-top:4px;overflow:hidden}.picker-color-wrap[data-v-3d280c42]{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-3d280c42]{background-size:auto}.picker-current-color[data-v-3d280c42]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2}.picker-field[data-v-3d280c42]{display:flex;margin-bottom:8px}.picker-field .transparent[data-v-3d280c42]{width:24px;height:24px;margin-top:4px;margin-left:8px;position:relative;cursor:pointer}.picker-field .transparent[data-v-3d280c42]:after{content:"";width:26px;height:2px;position:absolute;top:11px;left:-1px;transform:rotate(-45deg);background-color:red}.picker-field .transparent .checkerboard[data-v-3d280c42]{background-size:auto}.picker-field .straw[data-v-3d280c42]{width:24px;height:24px;margin-top:4px;margin-left:8px;display:flex;justify-content:center;align-items:center;font-size:20px;background-color:#f5f5f5;outline:1px solid #f1f1f1;cursor:pointer}.picker-field .input[data-v-3d280c42]{flex:1}.picker-presets[data-v-3d280c42]{display:flex;flex-wrap:wrap;align-content:flex-start}.picker-presets-color[data-v-3d280c42]{width:7%;margin-bottom:3.33333%;height:0;padding-bottom:7%;flex-shrink:0;position:relative;cursor:pointer}.picker-presets-color[data-v-3d280c42]:not(:nth-child(10n)){margin-right:3.33333%}.picker-presets-color.alpha[data-v-3d280c42]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAADBJREFUOE9jfPbs2X8GPEBSUhKfNAPjqAHDIgz+//+PNx08f/4cfzoYNYCBceiHAQC5flV5JzgrxQAAAABJRU5ErkJggg==)}.picker-presets-color-content[data-v-3d280c42]{position:absolute;top:0;right:0;bottom:0;left:0}.picker-gradient-presets[data-v-3d280c42]{display:flex;flex-wrap:wrap;align-content:flex-start}.picker-gradient-col[data-v-3d280c42]{width:7%;margin-bottom:3.33333%;display:flex;flex-direction:column}.picker-gradient-col[data-v-3d280c42]:not(:nth-child(10n)){margin-right:3.33333%}.picker-gradient-color[data-v-3d280c42]{width:100%;height:16px;position:relative;cursor:pointer}.recent-colors-title[data-v-3d280c42]{font-size:12px;margin-bottom:4px}.row[data-v-49642f50]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-49642f50]{text-align:right}.row[data-v-19c233fc]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-19c233fc]{text-align:right}.slider[data-v-19c233fc]{flex:3}.text-color-btn[data-v-c90c8a28]{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:0}.text-color-block[data-v-c90c8a28]{width:17px;height:4px;margin-top:1px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAACdJREFUGFdjfPbs2X8GBgYGSUlJEMXAiCHw//9/sIrnz59DVKALAADNxxVfaiODNQAAAABJRU5ErkJggg==)}.text-color-block .text-color-block-content[data-v-c90c8a28]{width:100%;height:100%}.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}.text-style-panel[data-v-9b75a3bc]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.row[data-v-9b75a3bc]{width:100%;display:flex;align-items:center;margin-bottom:10px}.preset-style[data-v-9b75a3bc]{display:flex;flex-wrap:wrap;margin-bottom:10px}.preset-style-item[data-v-9b75a3bc]{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-9b75a3bc]:hover{border-color:#d14424;color:#d14424;z-index:1}.preset-style-item[data-v-9b75a3bc]:nth-child(2n){margin-left:-1px}.preset-style-item[data-v-9b75a3bc]:nth-child(n+3){margin-top:-1px}.font-size-btn[data-v-9b75a3bc]{padding:0}.link-popover[data-v-9b75a3bc]{width:240px}.link-popover .btns[data-v-9b75a3bc]{margin-top:10px;text-align:right}.list-wrap[data-v-9b75a3bc]{width:176px;color:#666;padding:8px;margin:-12px;display:flex;flex-wrap:wrap;align-content:flex-start}.list[data-v-9b75a3bc]{background-color:#f9f9f9;padding:4px 4px 4px 20px;cursor:pointer}.list[data-v-9b75a3bc]:not(:nth-child(3n)){margin-right:8px}.list[data-v-9b75a3bc]:nth-child(4),.list[data-v-9b75a3bc]:nth-child(5),.list[data-v-9b75a3bc]:nth-child(6){margin-top:8px}.list[data-v-9b75a3bc]:hover{color:#d14424}.list:hover span[data-v-9b75a3bc]{background-color:#d14424}.list-item[data-v-9b75a3bc]{width:24px;height:12px;position:relative;top:-5px}.list-item span[data-v-9b75a3bc]{width:100%;height:2px;display:inline-block;position:absolute;top:10px;background-color:#666}.popover-btn[data-v-9b75a3bc]{padding:0 3px}.row[data-v-1b5a047e],.row[data-v-a99ef6ee]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-a99ef6ee]{text-align:right}.filter[data-v-a99ef6ee]{font-size:12px}.filter-item[data-v-a99ef6ee]{padding:8px 0;display:flex;justify-content:center;align-items:center}.filter-item .name[data-v-a99ef6ee]{width:60px}.filter-item .filter-slider[data-v-a99ef6ee]{flex:1;margin:0 6px}.row[data-v-7e9086fc]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-7e9086fc]{text-align:right}.opacity-slider[data-v-7e9086fc]{flex:3}.row[data-v-105f4640]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-105f4640]{text-align:right}.origin-image[data-v-105f4640]{height:100px;background-size:contain;background-repeat:no-repeat;background-position:50%;background-color:#f9f9f9;margin-bottom:10px}.full-width-btn[data-v-105f4640]{width:100%;margin-bottom:10px}.btn-icon[data-v-105f4640]{margin-right:3px}.clip[data-v-105f4640]{width:260px;font-size:12px}.clip .title[data-v-105f4640]{margin-bottom:5px}.shape-clip[data-v-105f4640]{margin-bottom:10px;display:flex;flex-wrap:wrap;align-content:flex-start}.shape-clip-item[data-v-105f4640]{display:flex;justify-content:center;align-items:center;cursor:pointer;width:16%;margin-bottom:5%}.shape-clip-item[data-v-105f4640]:not(:nth-child(5n)){margin-right:5%}.shape-clip-item:hover .shape[data-v-105f4640]{background-color:#ccc}.shape-clip-item .shape[data-v-105f4640]{width:40px;height:40px;background-color:#e1e1e1}.shape-style-panel[data-v-1d6d026a]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.row[data-v-1d6d026a]{width:100%;display:flex;align-items:center;margin-bottom:10px}.font-size-btn[data-v-1d6d026a]{padding:0}.slider[data-v-1d6d026a]{flex:3}.title[data-v-1d6d026a]{display:flex;justify-content:space-between;margin-bottom:10px}.shape-pool[data-v-1d6d026a]{width:235px;height:190px;overflow:auto;padding:5px;padding-right:10px;border:1px solid #eee;margin-bottom:20px}.shape-list[data-v-1d6d026a]{display:flex;flex-wrap:wrap;align-content:flex-start}.shape-item[data-v-1d6d026a]{width:14%;margin-bottom:3.2%;height:0;padding-bottom:14%;flex-shrink:0}.shape-item[data-v-1d6d026a]:not(:nth-child(6n)){margin-right:3.2%}.row[data-v-0ca152b4]{width:100%;display:flex;align-items:center;margin-bottom:10px}.line-btn[data-v-0ca152b4]{display:flex;align-items:center;justify-content:space-between;padding:0!important}.line-btn .line-wrapper[data-v-0ca152b4]{margin-left:8px}.line-wrapper[data-v-0ca152b4]{overflow:visible}.line-btn-icon[data-v-0ca152b4]{width:30px;font-size:12px;margin-top:2px;color:#bfbfbf}.preset-point-style[data-v-0ca152b4]{padding:0 10px}.preset-point-style+.preset-point-style[data-v-0ca152b4]{margin-top:10px}.chart-data-editor[data-v-1eab5a3a]{width:600px;position:relative}.editor-content[data-v-1eab5a3a]{width:100%;height:360px;position:relative;border-right:1px solid #ccc;border-bottom:1px solid #ccc;overflow:auto;overflow:overlay}.range-box[data-v-1eab5a3a]{position:absolute;top:0;left:0;z-index:100;-webkit-user-select:none;-moz-user-select:none;user-select:none}.temp-range[data-v-1eab5a3a]{width:0;height:0;position:absolute;top:0;left:0;background-color:hsla(0,0%,53.3%,.3)}.range-line[data-v-1eab5a3a]{width:0;height:0;position:absolute;left:0;top:0;border:0 solid #d14424}.range-line.t[data-v-1eab5a3a]{border-top-width:1px}.range-line.b[data-v-1eab5a3a]{border-bottom-width:1px}.range-line.l[data-v-1eab5a3a]{border-left-width:1px}.range-line.r[data-v-1eab5a3a]{border-right-width:1px}.resizable[data-v-1eab5a3a]{position:absolute;width:12px;height:12px;left:0;top:0;margin:-9px 0 0 -9px;cursor:nwse-resize}.resizable[data-v-1eab5a3a]:after{content:"";position:absolute;width:4px;height:12px;right:0;top:0;background-color:#d14424}.resizable[data-v-1eab5a3a]:before{content:"";position:absolute;width:12px;height:4px;right:0;bottom:0;background-color:#d14424}table[data-v-1eab5a3a]{width:100%;height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;table-layout:fixed}table td[data-v-1eab5a3a]{text-align:center;border:1px solid #ccc;vertical-align:middle;width:100px;height:32px}table td.head[data-v-1eab5a3a]{background-color:rgba(209,68,36,.1)}table .item[data-v-1eab5a3a]{width:100%;height:100%;border:0;outline:0;font-size:13px;text-align:center;background-color:transparent}table .item.selected[data-v-1eab5a3a]{background-color:rgba(209,68,36,.02)}.btns[data-v-1eab5a3a]{margin-top:10px;display:flex;justify-content:space-between}.chart-style-panel[data-v-73760920]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.row[data-v-73760920]{width:100%;display:flex;align-items:center;margin-bottom:10px}.full-width-btn[data-v-73760920]{width:100%}.btn-icon[data-v-73760920]{margin-right:3px}.color-btn-wrap[data-v-73760920]{position:relative}.delete-color-btn[data-v-73760920]{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-73760920]{width:250px;margin-bottom:-10px;display:flex;flex-wrap:wrap;align-content:flex-start}.preset-theme[data-v-73760920]{display:flex;cursor:pointer;width:48%;margin-bottom:4%}.preset-theme[data-v-73760920]:not(:nth-child(2n)){margin-right:4%}.preset-theme-color[data-v-73760920]{width:20px;height:20px}.preset-theme-color.select[data-v-73760920]{transform:scale(1.2);transition:transform .1s}.row[data-v-79a422e5]{width:100%;display:flex;align-items:center;margin-bottom:10px}.theme-switch[data-v-79a422e5]{margin-bottom:18px}.switch-wrapper[data-v-79a422e5]{text-align:right}.set-count[data-v-79a422e5]{display:flex;justify-content:center;align-items:center}.set-count .btn[data-v-79a422e5]{padding:4px 8px}.set-count .count-text[data-v-79a422e5]{flex:1;text-align:center;margin:0 8px}.row[data-v-79d8ab96],.row[data-v-802e1e06]{width:100%;display:flex;align-items:center;margin-bottom:10px}.background-image-wrapper[data-v-802e1e06],.title[data-v-802e1e06]{margin-bottom:10px}.background-image[data-v-802e1e06]{height:0;padding-bottom:56.25%;border:1px dashed #eee;border-radius:2px;position:relative;transition:all .2s}.background-image[data-v-802e1e06]:hover{border-color:#d14424;color:#d14424}.background-image .content[data-v-802e1e06]{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-1da06c97]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-row[data-v-1da06c97]{height:32px}.switch-wrapper[data-v-1da06c97]{text-align:right}.row[data-v-de815ffa]{width:100%;display:flex;align-items:center;margin-bottom:10px}.font-size-btn[data-v-de815ffa]{padding:0}.row[data-v-08d61819]{width:100%;display:flex;align-items:center;margin-bottom:10px}.title[data-v-08d61819]{margin-bottom:10px}.label[data-v-08d61819]{text-align:center}.btn-icon[data-v-08d61819]{margin-right:3px}.icon-btn[data-v-08d61819]{cursor:pointer}.text-btn[data-v-08d61819]{height:30px;line-height:30px;text-align:center;cursor:pointer}.text-btn[data-v-08d61819]:hover{background-color:#efefef;border-radius:2px}.element-animation-panel[data-v-7a134147]{height:100%;display:flex;flex-direction:column}.tabs[data-v-7a134147]{display:flex;justify-content:flex-start;align-items:center;border-bottom:1px solid #eee;margin-bottom:20px}.tab[data-v-7a134147]{width:33.33%;padding-bottom:8px;border-bottom:2px solid transparent;text-align:center;cursor:pointer}.tab.active[data-v-7a134147]{border-bottom:2px solid #d14424}.tab.in.active[data-v-7a134147]{border-bottom-color:#68a490}.tab.out.active[data-v-7a134147]{border-bottom-color:#d86344}.tab.attention.active[data-v-7a134147]{border-bottom-color:#e8b76a}.element-animation[data-v-7a134147]{height:32px;display:flex;align-items:center}.element-animation-btn[data-v-7a134147]{width:100%}.config-item[data-v-7a134147]{display:flex;align-items:center}.config-item+.config-item[data-v-7a134147]{margin-top:5px}.tip[data-v-7a134147]{height:32px;display:flex;justify-content:center;align-items:center;font-style:italic}.animation-pool[data-v-7a134147]{width:400px;height:500px;overflow-y:auto;overflow-x:hidden;font-size:12px;margin-right:-12px;position:relative}.animation-pool .mask[data-v-7a134147]{position:absolute;top:0;right:0;bottom:0;left:0}.animation-pool.in .type-title[data-v-7a134147]{border-left-color:#68a490;background-color:rgba(104,164,144,.15)}.animation-pool.out .type-title[data-v-7a134147]{border-left-color:#d86344;background-color:rgba(216,99,68,.15)}.animation-pool.attention .type-title[data-v-7a134147]{border-left-color:#e8b76a;background-color:rgba(232,183,106,.15)}.type-title[data-v-7a134147]{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-7a134147]{display:flex;flex-wrap:wrap;align-content:flex-start}.pool-item[data-v-7a134147]{width:24%;margin-bottom:1.33333%;margin-bottom:10px;height:40px;line-height:40px;text-align:center;cursor:pointer}.pool-item[data-v-7a134147]:not(:nth-child(4n)){margin-right:1.33333%}.animation-box[data-v-7a134147]{background-color:#f9f9f9}.animation-sequence[data-v-7a134147]{flex:1;padding-right:12px;margin-right:-12px;overflow:auto;overflow:overlay}.sequence-item[data-v-7a134147]{border:1px solid #eee;padding:10px 6px;border-radius:2px;margin-bottom:8px;transition:all .5s}.sequence-item.in.active[data-v-7a134147]{border-color:#68a490}.sequence-item.out.active[data-v-7a134147]{border-color:#d86344}.sequence-item.attention.active[data-v-7a134147]{border-color:#e8b76a}.sequence-item.active[data-v-7a134147]{height:auto}.sequence-item .sequence-content[data-v-7a134147]{display:flex;align-items:center;cursor:-webkit-grab;cursor:grab}.sequence-item .sequence-content[data-v-7a134147]:active{cursor:-webkit-grabbing;cursor:grabbing}.sequence-item .sequence-content .index[data-v-7a134147]{flex:1}.sequence-item .sequence-content .text[data-v-7a134147]{flex:6}.sequence-item .sequence-content .handler[data-v-7a134147]{flex:2;font-size:15px;text-align:right}.sequence-item .sequence-content .handler-btn[data-v-7a134147]{margin-left:8px;cursor:pointer}.slide-design-panel[data-v-41419138]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.row[data-v-41419138]{width:100%;display:flex;align-items:center;margin-bottom:10px}.background-image-wrapper[data-v-41419138],.title[data-v-41419138]{margin-bottom:10px}.background-image[data-v-41419138]{height:0;padding-bottom:56.25%;border:1px dashed #eee;border-radius:2px;position:relative;transition:all .2s}.background-image[data-v-41419138]:hover{border-color:#d14424;color:#d14424}.background-image .content[data-v-41419138]{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-41419138]{display:flex;flex-wrap:wrap;align-content:flex-start}.theme-item[data-v-41419138]{width:48%;margin-bottom:4%;padding-bottom:30%;border-radius:2px;position:relative;cursor:pointer}.theme-item[data-v-41419138]:not(:nth-child(2n)){margin-right:4%}.theme-item .theme-item-content[data-v-41419138]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:center;padding:8px;border:1px solid #eee}.theme-item .text[data-v-41419138]{font-size:16px}.theme-item .colors[data-v-41419138]{display:flex}.theme-item .color-block[data-v-41419138]{margin-top:8px;width:12px;height:12px;margin-right:2px}.theme-item:hover .btns[data-v-41419138]{display:flex}.theme-item .btns[data-v-41419138]{position:absolute;top:0;right:0;bottom:0;left:0;flex-direction:column;justify-content:center;align-items:center;display:none;background-color:rgba(0,0,0,.25)}.theme-item .btn[data-v-41419138]{width:72px;padding:5px 0;text-align:center;background-color:#d14424;color:#fff;font-size:12px;border-radius:2px}.theme-item .btn[data-v-41419138]:hover{background-color:#c42f19}.theme-item .btn+.btn[data-v-41419138]{margin-top:5px}.slider[data-v-41419138]{flex:3}.animation-pool[data-v-c4273212]{display:flex;flex-wrap:wrap;margin-bottom:10px}.animation-item[data-v-c4273212]{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-c4273212]{border-color:#d14424;z-index:1}.animation-item[data-v-c4273212]:nth-child(2n){margin-left:-1px}.animation-item[data-v-c4273212]:nth-child(n+3){margin-top:-1px}.animation-block[data-v-c4273212]{width:64px;height:36px;background:#666;position:relative;overflow:hidden}.animation-block.fade[data-v-c4273212]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:fade-c4273212 .3s linear;animation:fade-c4273212 .3s linear}.animation-block.slideX[data-v-c4273212]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:slideX-c4273212 .3s linear;animation:slideX-c4273212 .3s linear}.animation-block.slideY[data-v-c4273212]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:slideY-c4273212 .3s linear;animation:slideY-c4273212 .3s linear}.animation-text[data-v-c4273212]{font-size:12px;color:#333;text-align:center}@-webkit-keyframes fade-c4273212{0%{opacity:0}to{opacity:1}}@keyframes fade-c4273212{0%{opacity:0}to{opacity:1}}@-webkit-keyframes slideX-c4273212{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slideX-c4273212{0%{transform:translateX(100%)}to{transform:translateX(0)}}@-webkit-keyframes slideY-c4273212{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideY-c4273212{0%{transform:translateY(100%)}to{transform:translateY(0)}}.row[data-v-c88d31ba]{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;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}.fullscreen-spin[data-v-5a56d59c]{top:0;bottom:0;left:0;right:0;z-index:100;background-color:hsla(0,0%,94.5%,.7)}.fullscreen-spin[data-v-5a56d59c],.spin[data-v-5a56d59c]{position:fixed;display:flex;justify-content:center;align-items:center}.spin[data-v-5a56d59c]{width:200px;height:200px;top:50%;left:50%;margin-top:-100px;margin-left:-100px;flex-direction:column}.spinner[data-v-5a56d59c]{width:36px;height:36px;border:3px solid #d14424;border-top-color:transparent;border-radius:50%;-webkit-animation:spinner-5a56d59c .8s linear infinite;animation:spinner-5a56d59c .8s linear infinite}.text[data-v-5a56d59c]{margin-top:20px;color:#d14424}@-webkit-keyframes spinner-5a56d59c{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spinner-5a56d59c{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.export-img-dialog[data-v-92a8f63e]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.thumbnails-view[data-v-92a8f63e],.thumbnails-view[data-v-92a8f63e]:after{position:absolute;top:0;right:0;bottom:0;left:0}.thumbnails-view[data-v-92a8f63e]:after{content:"";background-color:#fff}.configs[data-v-92a8f63e]{width:350px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center;z-index:1}.configs .row[data-v-92a8f63e]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-92a8f63e]{width:100px;position:relative}.configs .title[data-v-92a8f63e]:after{content:attr(data-range);position:absolute;top:20px;left:0}.configs .config-item[data-v-92a8f63e]{flex:1}.btns[data-v-92a8f63e]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-92a8f63e]{flex:1}.btns .close[data-v-92a8f63e]{width:100px;margin-left:10px}.export-json-dialog[data-v-0cc0995e]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.preview[data-v-0cc0995e]{width:100%;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center;background-color:#f9f9f9;color:#0451a5}.btns[data-v-0cc0995e]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-0cc0995e]{flex:1}.btns .close[data-v-0cc0995e]{width:100px;margin-left:10px}[data-v-0cc0995e]::-webkit-scrollbar{width:10px;height:10px;background-color:#f9f9f9}[data-v-0cc0995e]::-webkit-scrollbar-thumb{background-color:#c1c1c1}.export-pdf-dialog[data-v-527855fb]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.thumbnails-view[data-v-527855fb],.thumbnails-view[data-v-527855fb]:after{position:absolute;top:0;right:0;bottom:0;left:0}.thumbnails-view[data-v-527855fb]:after{content:"";background-color:#fff}.thumbnail.break-page[data-v-527855fb]{-moz-column-break-after:page;break-after:page}.configs[data-v-527855fb]{width:300px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center;z-index:1}.configs .row[data-v-527855fb]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-527855fb]{width:100px}.configs .config-item[data-v-527855fb]{flex:1}.configs .tip[data-v-527855fb]{font-size:12px;color:#aaa;line-height:1.8;margin-top:25px}.btns[data-v-527855fb]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-527855fb]{flex:1}.btns .close[data-v-527855fb]{width:100px;margin-left:10px}.export-pptx-dialog[data-v-018847a8]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.configs[data-v-018847a8]{width:350px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center}.configs .row[data-v-018847a8]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-018847a8]{width:100px;position:relative}.configs .title[data-v-018847a8]:after{content:attr(data-range);position:absolute;top:20px;left:0}.configs .config-item[data-v-018847a8]{flex:1}.btns[data-v-018847a8]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-018847a8]{flex:1}.btns .close[data-v-018847a8]{width:100px;margin-left:10px}.export-pptist-dialog[data-v-40c1ae3a]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.configs[data-v-40c1ae3a]{width:350px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center}.configs .row[data-v-40c1ae3a]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-40c1ae3a]{width:100px;position:relative}.configs .title[data-v-40c1ae3a]:after{content:attr(data-range);position:absolute;top:20px;left:0}.configs .config-item[data-v-40c1ae3a]{flex:1}.configs .tip[data-v-40c1ae3a]{font-size:12px;color:#aaa;line-height:1.8;margin-top:25px}.btns[data-v-40c1ae3a]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-40c1ae3a]{flex:1}.btns .close[data-v-40c1ae3a]{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;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}.moveable-panel[data-v-68252e2c]{position:fixed;background-color:#fff;box-shadow:0 2px 12px 0 rgba(56,56,56,.15);border:1px solid #eee;border-radius:2px;display:flex;flex-direction:column;z-index:999}.header[data-v-68252e2c]{height:40px;display:flex;align-items:center;border-bottom:1px solid #f0f0f0;cursor:move}.title[data-v-68252e2c]{flex:1;font-size:13px;padding-left:10px}.close-btn[data-v-68252e2c]{width:40px;height:40px;display:flex;justify-content:center;align-items:center;color:#666;font-size:12px;cursor:pointer}.content[data-v-68252e2c]{flex:1;padding:10px;overflow:auto}.select-panel[data-v-64f9ccca]{height:100%;font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.handler[data-v-64f9ccca]{height:24px;margin-bottom:8px;display:flex;align-items:center;justify-content:space-between}.handler .icon-btns[data-v-64f9ccca]{height:100%;flex:1;display:flex;align-items:center;justify-content:flex-end}.handler .icon-btn[data-v-64f9ccca]{width:16px;height:100%;display:flex;align-items:center;justify-content:center;cursor:pointer}.handler .icon-btn[data-v-64f9ccca]:hover{color:#d14424}.element-list[data-v-64f9ccca]{height:calc(100% - 32px);padding-right:10px;margin-right:-10px;overflow:auto}.item[data-v-64f9ccca]{padding:5px;font-size:12px;border-radius:2px;display:flex;align-items:center;cursor:pointer}.item.active[data-v-64f9ccca]{background-color:rgba(209,68,36,.1)}.item.group-active[data-v-64f9ccca]{background-color:rgba(209,68,36,.2)}.item[data-v-64f9ccca]:hover{background-color:rgba(209,68,36,.25)}.item .name[data-v-64f9ccca]{height:18px;line-height:18px;flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.item .icons[data-v-64f9ccca]{width:20px;display:flex;align-items:center;justify-content:center;margin-left:5px}.group-els[data-v-64f9ccca]{padding:5px 0}.group-els .group-title[data-v-64f9ccca]{margin-bottom:5px;padding:0 5px}.group-els .item[data-v-64f9ccca]{margin-left:15px}.input[data-v-64f9ccca]{width:100%;height:18px;line-height:18px;border:0;outline:0;padding-left:0;padding-right:0;flex:1}.pptist-editor[data-v-ed562e98]{height:100%}.layout-header[data-v-ed562e98]{height:40px}.layout-content[data-v-ed562e98]{height:calc(100% - 40px);display:flex}.layout-content-left[data-v-ed562e98]{width:160px;height:100%;flex-shrink:0}.layout-content-center[data-v-ed562e98]{width:calc(100% - 420px)}.layout-content-center .center-top[data-v-ed562e98]{height:40px}.layout-content-right[data-v-ed562e98]{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-3e9669a9]{z-index:8;cursor:none;position:absolute;top:0;right:0;bottom:0;left:0}.blackboard[data-v-3e9669a9]{width:100%;height:100%;background-color:#0f392b}.canvas[data-v-3e9669a9]{position:absolute;top:0;left:0}.eraser[data-v-3e9669a9],.pen[data-v-3e9669a9]{pointer-events:none;position:absolute;z-index:9}.eraser .icon[data-v-3e9669a9],.pen .icon[data-v-3e9669a9]{filter:drop-shadow(2px 2px 2px #555)}.eraser[data-v-3e9669a9]{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-52a2a3a6]{font-size:12px;z-index:10;position:absolute;top:0;right:0;bottom:0;left:0}.writing-board-tool .writing-board-wrap[data-v-52a2a3a6]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.writing-board-tool .tools[data-v-52a2a3a6]{width:100%;height:100%;display:flex;align-items:center;justify-content:space-between}.writing-board-tool .tool-content[data-v-52a2a3a6]{display:flex;align-items:center}.writing-board-tool .btn[data-v-52a2a3a6]{padding:5px 10px;cursor:pointer}.writing-board-tool .btn[data-v-52a2a3a6]:hover{color:#d14424}.writing-board-tool .btn.active[data-v-52a2a3a6]{background-color:rgba(209,68,36,.5);color:#fff}.writing-board-tool .icon[data-v-52a2a3a6]{font-size:20px}.writing-board-tool .colors[data-v-52a2a3a6]{display:flex;padding:0 10px}.writing-board-tool .color[data-v-52a2a3a6]{width:16px;height:16px;border-radius:2px;cursor:pointer}.writing-board-tool .color[data-v-52a2a3a6]:hover{transform:scale(1.15)}.writing-board-tool .color.active[data-v-52a2a3a6]{transform:scale(1.3)}.writing-board-tool .color+.color[data-v-52a2a3a6]{margin-left:8px}.size[data-v-52a2a3a6]{width:200px;display:flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.size .label[data-v-52a2a3a6]{width:70px}.size .size-slider[data-v-52a2a3a6]{flex:1}.countdown-timer[data-v-5a82de11]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.header[data-v-5a82de11]{height:16px;font-size:13px;margin-bottom:16px;display:flex;align-items:center}.header .text-btn[data-v-5a82de11]{margin-right:8px;cursor:pointer}.header .text-btn.active[data-v-5a82de11],.header .text-btn[data-v-5a82de11]:hover{color:#d14424}.content[data-v-5a82de11]{display:flex;justify-content:space-between;padding:0 5px}.timer[data-v-5a82de11]{width:54px;height:54px;border-radius:50%;background-color:rgba(209,68,36,.05);font-size:22px;overflow:hidden}.timer input[data-v-5a82de11]{width:100%;height:100%;border:0;outline:0;background-color:transparent;text-align:center}.colon[data-v-5a82de11]{height:54px;line-height:54px;font-size:22px}.icon-btn[data-v-5a82de11]{width:20px;height:20px;display:flex;justify-content:center;align-items:center;cursor:pointer}.pause[data-v-5a82de11],.play[data-v-5a82de11]{font-size:17px}.reset[data-v-5a82de11]{font-size:12px}.close-btn[data-v-5a82de11]{position:absolute;top:0;right:0;padding:10px;cursor:pointer}.base-view[data-v-90ac59d8]{width:100%;height:100%}.base-view.laser-pen[data-v-90ac59d8]{cursor:url(data:image/png;base64,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) 20 20,default!important}.tools-left[data-v-90ac59d8]{position:fixed;bottom:8px;left:8px;font-size:25px;color:#666;z-index:10}.tools-left .tool-btn[data-v-90ac59d8]{opacity:.35;cursor:pointer}.tools-left .tool-btn[data-v-90ac59d8]:hover{opacity:.9}.tools-left .tool-btn+.tool-btn[data-v-90ac59d8]{margin-left:8px}.tools-right[data-v-90ac59d8]{height:66px;position:fixed;bottom:-66px;right:0;z-index:5;padding:8px;transition:bottom .2s}.tools-right.visible[data-v-90ac59d8]{bottom:0}.tools-right[data-v-90ac59d8]:after{content:"";width:100%;height:66px;position:absolute;left:0;top:-66px}.tools-right .content[data-v-90ac59d8]{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-90ac59d8]{cursor:pointer}.tools-right .tool-btn.active[data-v-90ac59d8],.tools-right .tool-btn[data-v-90ac59d8]:hover{color:#d14424}.tools-right .tool-btn+.tool-btn[data-v-90ac59d8]{margin-left:15px}.tools-right .page-number[data-v-90ac59d8]{font-size:13px;padding:8px 12px;cursor:pointer}.presenter-view[data-v-f770d810]{width:100%;height:100%;display:flex}.toolbar[data-v-f770d810]{width:70px;height:100%;background-color:#fff;border-right:1px solid #eee;font-size:12px;margin:20px 0}.toolbar .tool-btn[data-v-f770d810]{display:flex;flex-direction:column;justify-content:center;align-items:center;cursor:pointer}.toolbar .tool-btn+.tool-btn[data-v-f770d810]{margin-top:22px}.toolbar .tool-btn.active[data-v-f770d810],.toolbar .tool-btn[data-v-f770d810]:hover{color:#d14424}.toolbar .divider[data-v-f770d810]{width:70%;min-width:70%;margin:24px 15%}.toolbar .tool-icon[data-v-f770d810]{margin-bottom:8px;font-size:22px}.content[data-v-f770d810]{width:calc(100% - 430px);height:100%;background-color:#1d1d1d}.slide-list-wrap[data-v-f770d810]{height:calc(100% - 190px);margin:20px;overflow:hidden;position:relative}.slide-list-wrap.laser-pen[data-v-f770d810]{cursor:url(data:image/png;base64,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) 20 20,default!important}.thumbnails[data-v-f770d810]{height:150px;padding:15px;white-space:nowrap;overflow-x:auto;overflow-y:hidden;border-top:1px solid #3a3a3a}.thumbnail[data-v-f770d810]{display:inline-block;outline:2px solid #aaa}.thumbnail+.thumbnail[data-v-f770d810]{margin-left:10px}.thumbnail[data-v-f770d810]:hover{outline-color:#d14424}.thumbnail.active[data-v-f770d810]{outline-width:3px;outline-color:#d14424}.remark[data-v-f770d810]{width:360px;height:100%;position:relative;background-color:#2a2a2a;border-left:1px solid #3a3a3a;color:#fff}.remark .header[data-v-f770d810]{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-f770d810]{height:calc(100% - 60px);padding:20px;line-height:1.5;overflow:auto;overflow:overlay}.remark .remark-scale[data-v-f770d810]{position:absolute;right:5px;bottom:5px;font-size:22px;display:flex}.remark .scale-btn[data-v-f770d810]{width:40px;height:40px;display:flex;justify-content:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer}.remark .scale-btn.disable[data-v-f770d810]{color:#666;cursor:no-drop}.remark .scale-btn[data-v-f770d810]:not(.disable):hover{background-color:#333}[data-v-f770d810]::-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;user-select:none}.mobile-thumbnails[data-v-e594aa30]{padding:10px;white-space:nowrap;overflow-x:auto;overflow-y:hidden}.thumbnail-item[data-v-e594aa30]{position:relative;display:inline-block;outline:2px solid #aaa}.thumbnail-item+.thumbnail-item[data-v-e594aa30]{margin-left:10px}.thumbnail-item.active[data-v-e594aa30]{outline-color:#d14424}.thumbnail-item.active .label[data-v-e594aa30]{background-color:#d14424}.thumbnail-item .label[data-v-e594aa30]{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}.sortable-chosen[data-v-e594aa30]{top:-5px}[data-v-e594aa30]::-webkit-scrollbar{width:0;height:0}.slide-toolbar[data-v-1e17bcc7]{height:230px;background-color:#fff;box-shadow:0 0 15px 0 rgba(0,0,0,.1);display:flex;flex-direction:column;position:relative;z-index:2}.remark[data-v-1e17bcc7]{position:relative;flex:1;border-bottom:1px solid #eee;line-height:1.5}.remark textarea[data-v-1e17bcc7]{width:100%;height:100%;overflow-y:auto;resize:none;border:0;outline:0;padding:8px 10px;font-size:12px;position:absolute;top:0;right:0;bottom:0;left:0}.toolbar[data-v-1e17bcc7]{height:90px;border-bottom:1px solid #eee;padding:10px}.row[data-v-1e17bcc7]{width:100%;display:flex;align-items:center;margin-bottom:5px}.row .icon[data-v-1e17bcc7]{margin-right:3px}.element-toolbar[data-v-2633262b]{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-2633262b .15s;animation:slideInUp-2633262b .15s}.tabs[data-v-2633262b]{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-2633262b]{width:30%;padding:10px 10px 12px;margin:0 10%;border-bottom:2px solid transparent;text-align:center;cursor:pointer}.tab.active[data-v-2633262b]{border-bottom:2px solid #d14424}@-webkit-keyframes slideInUp-2633262b{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideInUp-2633262b{0%{transform:translateY(100%)}to{transform:translateY(0)}}.content[data-v-2633262b]{padding:10px;flex:1;overflow:auto}.row[data-v-2633262b]{width:100%;display:flex;align-items:center;margin-bottom:10px}.row .icon[data-v-2633262b]{margin-right:3px}.row-block[data-v-2633262b]{margin-bottom:10px;background-color:#f9f9f9;border-radius:2px;padding:10px}.label[data-v-2633262b]{font-size:13px;margin-bottom:20px;margin-left:6px}.colors[data-v-2633262b]{display:flex;flex-wrap:wrap;align-content:flex-start}.color[data-v-2633262b]{width:12%;margin-bottom:.57143%;padding-bottom:5px;display:flex;justify-content:center;align-items:center}.color[data-v-2633262b]:not(:nth-child(8n)){margin-right:.57143%}.color .color-block[data-v-2633262b]{width:30px;height:30px;border-radius:50%}.mobile-editor-header[data-v-8639f30e]{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);position:relative;z-index:2}.history[data-v-8639f30e]{display:flex;justify-content:center;align-items:center}.history-item[data-v-8639f30e]{margin-right:20px}.history-item.disable[data-v-8639f30e]{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-1c8bce03]{height:100%;background-color:#f9f9f9}.thumbnail-list[data-v-1c8bce03]{height:calc(100% - 50px);padding:10px;overflow:auto}.thumbnail-item[data-v-1c8bce03]{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-1c8bce03]{margin-top:10px}.menu[data-v-1c8bce03]{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-1c8bce03]{width:50%;height:100%;display:flex;justify-content:center;align-items:center;font-size:13px}.menu .menu-item .icon[data-v-1c8bce03]{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;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:inherit}.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:inherit}.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{width:100%!important;height:100%;overflow:hidden;background-color:#fff;color:#41464b}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-menu{min-width:150px;box-shadow:3px 3px 3px rgba(0,0,0,.15);border:1px solid #eee;margin-top:-4px}.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;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}.ant-input-number-input{line-height:30px}@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)}.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;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}.input[data-v-cdb026e2]{display:none}.editor-header[data-v-76222f8e]{background-color:#fff;-webkit-user-select:none;-moz-user-select:none;user-select:none;border-bottom:1px solid #eee;display:flex;justify-content:space-between;padding:0 10px}.left[data-v-76222f8e],.menu-item[data-v-76222f8e],.right[data-v-76222f8e]{display:flex;justify-content:center;align-items:center}.menu-item[data-v-76222f8e]{height:100%;font-size:14px;padding:0 10px;cursor:pointer}.menu-item .text[data-v-76222f8e]{margin-left:4px}.left .menu-item[data-v-76222f8e]: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-963e3dfc]{position:absolute}.editable-element-image.lock .element-content[data-v-963e3dfc]{cursor:default}.rotate-wrapper[data-v-963e3dfc]{width:100%;height:100%}.element-content[data-v-963e3dfc]{width:100%;height:100%;position:relative;cursor:move}.element-content .image-content[data-v-963e3dfc]{width:100%;height:100%;overflow:hidden;position:relative}.element-content img[data-v-963e3dfc]{position:absolute}.color-mask[data-v-963e3dfc]{position:absolute;top:0;bottom:0;left:0;right:0}svg[data-v-61b7d06a]{overflow:visible;position:absolute;top:0;left:0}.prosemirror-editor[data-v-76d3203e]{cursor:text}.prosemirror-editor.format-painter[data-v-76d3203e]{cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAVCAYAAACzK0UYAAAABHNCSVQICAgIfAhkiAAAAVRJREFUSInt1DFuwjAYBeCXUrFavgBN9yB6AKR6Bi7AVLrlBpFYgAUpp2i37AysVDIXcCIuwJRMEEYk9LrQDlVQ7EiVOvSt/v1/tmUbeZ7TGMPL5WLgEJLzNE2ptabWmsfjkTeLjTGUUvJ8Pjsjo9GIUkpKKam1voncuTRumn/EKfd1BSQnAF4qhvyK2k1VD88YQ6UUiqJI2+12r2LiPI7j2Xa7rV9yRZbLpRWiAKhGwjW1x3XN828jD9PpVK3X60bAarWy20lZltjv940QwO4KPzbu7oCgLMu/g3Q6ncZI73Q6WSFhGDZGnrIss0LG4zGEEG4ISZUkiW8DDAYDCCEQBIEbAmAWx7GNgSiKAOB1OBzaIyQnSZIom/cRRRG63e7C87z3MAw/fu7Gy/OcRVEgCIK01Wp9/10k37Ism9TdLCHEFzC/zvMPh8Nmt9v5ANDv9/EJD8ykxYswZDkAAAAASUVORK5CYII=) 1 10,default!important}.editable-element-text[data-v-9be58c0a]{position:absolute}.editable-element-text.lock .element-content[data-v-9be58c0a]{cursor:default}.rotate-wrapper[data-v-9be58c0a]{width:100%;height:100%}.element-content[data-v-9be58c0a]{position:relative;padding:10px;line-height:1.5;word-break:break-word;cursor:move}.element-content .text[data-v-9be58c0a]{position:relative}.element-content[data-v-9be58c0a] a{cursor:text}.drag-handler[data-v-9be58c0a]{height:10px;position:absolute;left:0;right:0}.drag-handler.top[data-v-9be58c0a]{top:0}.drag-handler.bottom[data-v-9be58c0a]{bottom:0}.editable-element-shape[data-v-486128e0]{position:absolute;pointer-events:none}.editable-element-shape.lock .element-content[data-v-486128e0]{cursor:default}.rotate-wrapper[data-v-486128e0]{width:100%;height:100%}.element-content[data-v-486128e0]{width:100%;height:100%;position:relative;cursor:move}.element-content svg[data-v-486128e0]{transform-origin:0 0;overflow:visible}.element-content .shape-path[data-v-486128e0]{pointer-events:all}.shape-text[data-v-486128e0]{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-486128e0]{pointer-events:all}.shape-text.top[data-v-486128e0]{justify-content:flex-start}.shape-text.middle[data-v-486128e0]{justify-content:center}.shape-text.bottom[data-v-486128e0]{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-1f8d633e]{display:flex}.chart-content[data-v-1f8d633e]{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-a2ef535c],table[data-v-a2ef535c]{position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}table[data-v-a2ef535c]{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-a2ef535c]{background-color:#fff}table.theme tr:nth-child(2n) .cell[data-v-a2ef535c]{background-color:var(--subThemeColor1)}table.theme tr:nth-child(odd) .cell[data-v-a2ef535c]{background-color:var(--subThemeColor2)}table.theme.col-footer tr .cell[data-v-a2ef535c]:last-child,table.theme.col-header tr .cell[data-v-a2ef535c]:first-child,table.theme.row-footer tr:last-child .cell[data-v-a2ef535c],table.theme.row-header tr:first-child .cell[data-v-a2ef535c]{background-color:var(--themeColor)}table .cell[data-v-a2ef535c]{position:relative;white-space:normal;word-wrap:break-word;vertical-align:middle;font-size:14px;cursor:default}table .cell.selected[data-v-a2ef535c]:after{content:"";width:100%;height:100%;position:absolute;top:0;left:0;background-color:hsla(0,0%,40%,.4)}table .cell-text[data-v-a2ef535c]{padding:5px;line-height:1.5;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:text}table .cell-text.active[data-v-a2ef535c]{-webkit-user-select:text;-moz-user-select:text;user-select:text}.drag-line[data-v-a2ef535c]{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-0b2b16da]{position:absolute}.editable-element-table.lock .element-content[data-v-0b2b16da]{cursor:default}.rotate-wrapper[data-v-0b2b16da]{width:100%;height:100%}.element-content[data-v-0b2b16da]{width:100%;height:100%;position:relative;cursor:move}.table-mask[data-v-0b2b16da]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .2s}.table-mask .mask-tip[data-v-0b2b16da]{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-0b2b16da]: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-adfce55e]{position:relative;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none;line-height:1;transform-origin:0 0}@media(min-width:900px){.video-player.playing .controller-mask[data-v-adfce55e],.video-player.playing .controller[data-v-adfce55e]{opacity:0}.video-player.playing:hover .controller-mask[data-v-adfce55e],.video-player.playing:hover .controller[data-v-adfce55e]{opacity:1}}.video-player.loading .bezel .diplayer-loading-icon[data-v-adfce55e]{display:block}.video-player.hide-controller[data-v-adfce55e]{cursor:none}.video-player.hide-controller .controller-mask[data-v-adfce55e],.video-player.hide-controller .controller[data-v-adfce55e]{opacity:0;transform:translateY(100%)}.video-wrap[data-v-adfce55e]{position:relative;background:#000;font-size:0;width:100%;height:100%}.video-wrap .video[data-v-adfce55e]{width:100%;height:100%}.controller-mask[data-v-adfce55e]{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-adfce55e]{position:absolute;bottom:0;left:0;right:0;height:41px;padding:0 20px;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.controller .bar-wrap[data-v-adfce55e]{padding:5px 0;cursor:pointer;position:absolute;bottom:33px;width:calc(100% - 40px);height:3px}.controller .bar-wrap:hover .bar .played .thumb[data-v-adfce55e]{transform:scale(1)}.controller .bar-wrap .bar-time[data-v-adfce55e]{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-adfce55e]{opacity:0}.controller .bar-wrap .bar[data-v-adfce55e]{position:relative;height:3px;width:100%;background:hsla(0,0%,100%,.2);cursor:pointer}.controller .bar-wrap .bar .loaded[data-v-adfce55e]{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-adfce55e]{position:absolute;left:0;top:0;bottom:0;height:3px;will-change:width;background-color:#fff}.controller .bar-wrap .bar .played .thumb[data-v-adfce55e]{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-adfce55e]{height:38px;position:absolute;bottom:0;display:flex;align-items:center}.controller .icons.icons-right[data-v-adfce55e]{right:15px}.controller .icons .time[data-v-adfce55e]{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-adfce55e]{width:40px;height:100%;position:relative;cursor:pointer;display:flex;align-items:center;font-size:20px}.controller .icons .icon.play-icon[data-v-adfce55e]{font-size:26px}.controller .icons .icon .icon-content[data-v-adfce55e]{transition:all .2s ease-in-out;opacity:.8;color:#fff}.controller .icons .icon.loop-icon[data-v-adfce55e]{font-size:12px}.controller .icons .icon.loop-icon .icon-content[data-v-adfce55e]{opacity:.5}.controller .icons .icon.speed-icon[data-v-adfce55e]{font-size:12px;position:relative}.controller .icons .icon .speed-menu[data-v-adfce55e]{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-adfce55e]{padding:8px 0;text-align:center}.controller .icons .icon .speed-menu .speed-menu-item[data-v-adfce55e]:hover{background-color:#393833;color:#fff}.controller .icons .icon .speed-menu .speed-menu-item.active[data-v-adfce55e]{font-weight:700;color:#fff}.controller .icons .icon.active .icon-content[data-v-adfce55e],.controller .icons .icon:hover .icon-content[data-v-adfce55e]{opacity:1}.controller .icons .volume[data-v-adfce55e]{height:100%;position:relative;cursor:pointer;display:flex;align-items:center}.controller .icons .volume:hover .volume-bar-wrap .volume-bar[data-v-adfce55e]{width:45px}.controller .icons .volume:hover .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-adfce55e]{transform:scale(1)}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar[data-v-adfce55e]{width:45px}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-adfce55e]{transform:scale(1)}.controller .icons .volume-bar-wrap[data-v-adfce55e]{display:inline-block;margin:0 15px 0 -5px;vertical-align:middle;height:100%}.controller .icons .volume-bar[data-v-adfce55e]{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-adfce55e]{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-adfce55e]{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-adfce55e]{display:inline-block;height:100%}.bezel[data-v-adfce55e]{position:absolute;left:0;right:0;top:0;bottom:0;font-size:22px;color:#fff;pointer-events:none}.bezel .bezel-icon[data-v-adfce55e]{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-adfce55e]{-webkit-animation:bezel-hide-adfce55e .5s linear;animation:bezel-hide-adfce55e .5s linear}@-webkit-keyframes bezel-hide-adfce55e{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(2)}}@keyframes bezel-hide-adfce55e{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(2)}}.bezel .loading-icon[data-v-adfce55e]{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-adfce55e]{display:none}.bezel .loading-icon .loading-dot[data-v-adfce55e]{-webkit-animation:loading-dot-fade-adfce55e .8s ease infinite;animation:loading-dot-fade-adfce55e .8s ease infinite;opacity:0;transform-origin:4px 4px}.bezel .loading-icon .loading-dot.loading-dot-7[data-v-adfce55e]{-webkit-animation-delay:.7s;animation-delay:.7s}.bezel .loading-icon .loading-dot.loading-dot-6[data-v-adfce55e]{-webkit-animation-delay:.6s;animation-delay:.6s}.bezel .loading-icon .loading-dot.loading-dot-5[data-v-adfce55e]{-webkit-animation-delay:.5s;animation-delay:.5s}.bezel .loading-icon .loading-dot.loading-dot-4[data-v-adfce55e]{-webkit-animation-delay:.4s;animation-delay:.4s}.bezel .loading-icon .loading-dot.loading-dot-3[data-v-adfce55e]{-webkit-animation-delay:.3s;animation-delay:.3s}.bezel .loading-icon .loading-dot.loading-dot-2[data-v-adfce55e]{-webkit-animation-delay:.2s;animation-delay:.2s}.bezel .loading-icon .loading-dot.loading-dot-1[data-v-adfce55e]{-webkit-animation-delay:.1s;animation-delay:.1s}@-webkit-keyframes loading-dot-fade-adfce55e{0%{opacity:.7;transform:scale(1.2)}50%{opacity:.25;transform:scale(.9)}to{opacity:.25;transform:scale(.85)}}@keyframes loading-dot-fade-adfce55e{0%{opacity:.7;transform:scale(1.2)}50%{opacity:.25;transform:scale(.9)}to{opacity:.25;transform:scale(.85)}}.load-error[data-v-adfce55e]{position:absolute;left:0;right:0;top:0;bottom:0;font-size:15px;color:#fff;pointer-events:none;display:flex;justify-content:center;align-items:center}.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;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-aebac580]{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-61c4db4a]{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-0f6bb088]{font-size:12px}.h[data-v-0f6bb088]{position:absolute;background-color:#fff;border:1px solid #eee;height:20px;top:5px;display:flex;justify-content:space-between;align-items:center;overflow:hidden}.h .ruler-marker-100[data-v-0f6bb088]{height:100%;width:10%;line-height:20px;text-align:right;flex-shrink:0;padding-right:5px;position:relative}.h .ruler-marker-100.hide span[data-v-0f6bb088],.h .ruler-marker-100.omit[data-v-0f6bb088]:before{display:none}.h .ruler-marker-100[data-v-0f6bb088]:not(:last-child):after{content:"";width:.1px;height:12px;position:absolute;right:0;bottom:0;background-color:#999}.h .ruler-marker-100[data-v-0f6bb088]:before{content:"";width:.1px;height:8px;position:absolute;right:50%;bottom:0;background-color:#999}.v[data-v-0f6bb088]{position:absolute;background-color:#fff;border:1px solid #eee;width:20px;left:5px;overflow:hidden}.v .ruler-marker-100[data-v-0f6bb088]{width:100%;line-height:20px;text-align:right;padding-bottom:5px;position:relative;writing-mode:vertical-rl}.v .ruler-marker-100.hide span[data-v-0f6bb088],.v .ruler-marker-100.omit[data-v-0f6bb088]:before{display:none}.v .ruler-marker-100[data-v-0f6bb088]:not(:last-child):after{content:"";height:.1px;width:12px;position:absolute;bottom:0;right:0;background-color:#999}.v .ruler-marker-100[data-v-0f6bb088]: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}.operate-keypoint-handler[data-v-fd38df18]{position:absolute;width:10px;height:10px;left:0;top:0;margin:-5px 0 0 -5px;border:1px solid #d14424;background-color:#ffe873;border-radius:1px}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-12300fd5]{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-12300fd5]{max-width:300px;margin-right:20px;word-break:keep-all;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.btns[data-v-12300fd5]{display:flex;align-items:center}.btns .btn[data-v-12300fd5]{word-break:keep-all;cursor:pointer}.operate[data-v-26f9c48a]{position:absolute;z-index:100;-webkit-user-select:none;-moz-user-select:none;user-select:none}.operate.multi-select[data-v-26f9c48a]{opacity:.2}.animation-index[data-v-26f9c48a]{position:absolute;top:0;left:-24px;font-size:12px}.animation-index .index-item[data-v-26f9c48a]{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-26f9c48a]{margin-top:5px}.base-element-image[data-v-c874e65e]{position:absolute}.rotate-wrapper[data-v-c874e65e]{width:100%;height:100%}.element-content[data-v-c874e65e]{width:100%;height:100%;position:relative}.element-content .image-content[data-v-c874e65e]{width:100%;height:100%;overflow:hidden;position:relative}.element-content img[data-v-c874e65e]{position:absolute}.color-mask[data-v-c874e65e]{position:absolute;top:0;bottom:0;left:0;right:0}.base-element-text[data-v-18d84242]{position:absolute}.rotate-wrapper[data-v-18d84242]{width:100%;height:100%}.element-content[data-v-18d84242]{position:relative;padding:10px;line-height:1.5;word-break:break-word}.element-content .text[data-v-18d84242]{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-40e73d4e],table[data-v-40e73d4e]{position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}table[data-v-40e73d4e]{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-40e73d4e]{background-color:#fff}table.theme tr:nth-child(2n) .cell[data-v-40e73d4e]{background-color:var(--subThemeColor1)}table.theme tr:nth-child(odd) .cell[data-v-40e73d4e]{background-color:var(--subThemeColor2)}table.theme.col-footer tr .cell[data-v-40e73d4e]:last-child,table.theme.col-header tr .cell[data-v-40e73d4e]:first-child,table.theme.row-footer tr:last-child .cell[data-v-40e73d4e],table.theme.row-header tr:first-child .cell[data-v-40e73d4e]{background-color:var(--themeColor)}table .cell[data-v-40e73d4e]{position:relative;white-space:normal;word-wrap:break-word;vertical-align:middle}table .cell-text[data-v-40e73d4e]{padding:5px;line-height:1.5}.base-element-table[data-v-6b8ce0be]{position:absolute}.rotate-wrapper[data-v-6b8ce0be]{width:100%;height:100%}.element-content[data-v-6b8ce0be]{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-3f5170e8]{background-color:#fff;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elements[data-v-3f5170e8]{transform-origin:0 0}.background[data-v-3f5170e8]{width:100%;height:100%;background-position:50%;position:absolute}.placeholder[data-v-3f5170e8]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.tabs[data-v-469f9b66]{display:flex;justify-content:flex-start;align-items:center;border-bottom:1px solid #eee;margin-bottom:20px}.tab[data-v-469f9b66]{padding:0 10px 8px;border-bottom:2px solid transparent;cursor:pointer}.tab.active[data-v-469f9b66]{border-bottom:2px solid #d14424}.input[data-v-469f9b66]{width:100%;height:32px}.preview[data-v-469f9b66]{margin-top:12px}.thumbnail[data-v-469f9b66]{outline:1px solid rgba(209,68,36,.15);margin-top:5px}.btns[data-v-469f9b66]{margin-top:20px;text-align:right}.canvas[data-v-17dcff2c]{height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;background-color:#f9f9f9;position:relative}.drag-mask[data-v-17dcff2c]{cursor:-webkit-grab;cursor:grab;position:absolute;top:0;right:0;bottom:0;left:0}.viewport-wrapper[data-v-17dcff2c]{position:absolute;box-shadow:0 0 15px 0 rgba(0,0,0,.1)}.viewport[data-v-17dcff2c]{position:absolute;top:0;left:0;transform-origin:0 0}.shape-item-thumbnail[data-v-09653543]{position:relative;cursor:pointer}.shape-content[data-v-09653543]{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-09653543]:not(.outlined){stroke:#d14424}.shape-content:hover .shape-path.outlined[data-v-09653543]{fill:#d14424}.shape-content svg[data-v-09653543]:not(:root){overflow:visible}.shape-pool[data-v-711a4fb1]{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-711a4fb1]{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-711a4fb1]{display:flex;flex-wrap:wrap;align-content:flex-start;margin-bottom:10px}.shape-item[data-v-711a4fb1]{width:8%;margin-bottom:2.22222%;height:0;padding-bottom:8%;flex-shrink:0}.shape-item[data-v-711a4fb1]:not(:nth-child(10n)){margin-right:2.22222%}.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-8fd9f34c]{width:100%;margin-top:-12px}.title[data-v-8fd9f34c]{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;user-select:none}.title .right[data-v-8fd9f34c]{cursor:pointer}.title .right[data-v-8fd9f34c]:hover{color:#d14424}table[data-v-8fd9f34c]{border-collapse:separate}td[data-v-8fd9f34c]{width:23px;height:23px;line-height:23px;border:2px solid #fff;background-color:#f7f7f7}.cell[data-v-8fd9f34c]{width:100%;height:100%;border:1px solid #dcdcdc}.cell.active[data-v-8fd9f34c]{background-color:rgba(209,68,36,.1);border-color:#d14424}.custom[data-v-8fd9f34c]{width:230px}.custom .row[data-v-8fd9f34c]{display:flex;align-items:center}.custom .row+.row[data-v-8fd9f34c]{margin-top:10px}.btns[data-v-8fd9f34c]{margin-top:10px;text-align:right}.btns .btn[data-v-8fd9f34c]{margin-left:10px}.media-input[data-v-4e5f883a]{width:480px}.tabs[data-v-4e5f883a]{display:flex;justify-content:flex-start;align-items:center;border-bottom:1px solid #eee;margin-bottom:20px}.tab[data-v-4e5f883a]{padding:0 10px 8px;border-bottom:2px solid transparent;cursor:pointer}.tab.active[data-v-4e5f883a]{border-bottom:2px solid #d14424}.btns[data-v-4e5f883a]{margin-top:10px;text-align:right}svg[data-v-1c41d9fe]{overflow:hidden}.latex-editor[data-v-097b396c]{height:560px}.container[data-v-097b396c]{height:calc(100% - 50px);display:flex;padding-top:25px}.left[data-v-097b396c]{width:540px;height:100%;display:flex;flex-direction:column}.input-area[data-v-097b396c]{flex:1}.input-area textarea[data-v-097b396c]{height:100%!important;border-color:#eee!important;padding:10px!important}.input-area textarea[data-v-097b396c]:focus{box-shadow:none!important}.preview[data-v-097b396c]{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;user-select:none}.placeholder[data-v-097b396c]{color:#888}.preview-content[data-v-097b396c]{width:100%;height:100%;padding:10px;display:flex;justify-content:center;align-items:center}.right[data-v-097b396c]{height:100%;margin-left:20px;flex:1;border:1px solid #eee;background-color:#fff;flex-direction:column}.right[data-v-097b396c],.tabs[data-v-097b396c]{display:flex;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tabs[data-v-097b396c]{height:40px;font-size:12px;flex-shrink:0}.tab[data-v-097b396c]{flex:1;display:flex;justify-content:center;align-items:center;background-color:#f9f9f9;border-bottom:1px solid #eee;cursor:pointer}.tab.active[data-v-097b396c]{background-color:#fff;border-bottom-color:#fff}.tab+.tab[data-v-097b396c]{border-left:1px solid #eee}.content[data-v-097b396c]{height:calc(100% - 40px);font-size:13px}.formula[data-v-097b396c]{height:100%;padding:12px;overflow:auto;overflow:overlay}.formula-item+.formula-item[data-v-097b396c]{margin-top:10px}.formula-item .formula-title[data-v-097b396c]{margin-bottom:5px}.formula-item .formula-item-content[data-v-097b396c]{width:246px;height:60px;padding:5px;display:flex;align-items:center;background-color:#f9f9f9;cursor:pointer}.symbol-tabs[data-v-097b396c]{display:flex;justify-content:space-around;align-items:center;border-bottom:1px solid #eee;margin:12px 12px 5px}.symbol-tab[data-v-097b396c]{padding:6px 10px;border-bottom:2px solid transparent;cursor:pointer}.symbol-tab.active[data-v-097b396c]{border-bottom:2px solid #d14424}.symbol[data-v-097b396c]{height:100%;display:flex;flex-direction:column}.symbol-pool[data-v-097b396c]{display:flex;flex-wrap:wrap;flex:1;padding:12px;overflow:auto;overflow:overlay}.symbol-item[data-v-097b396c]{display:flex;justify-content:center;align-items:center}.symbol-item[data-v-097b396c]:hover{background-color:#f9f9f9;cursor:pointer}.footer[data-v-097b396c]{height:50px;display:flex;justify-content:flex-end;align-items:flex-end}.footer .btn[data-v-097b396c]{margin-left:10px}.canvas-tool[data-v-8a7bb5f0]{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;user-select:none}.left-handler[data-v-8a7bb5f0]{display:flex;align-items:center}.add-element-handler[data-v-8a7bb5f0]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex}.add-element-handler .handler-item[data-v-8a7bb5f0]{width:32px;height:24px;display:flex;justify-content:center;align-items:center;margin:0 2px;border-radius:2px}.add-element-handler .handler-item[data-v-8a7bb5f0]:not(.group-btn):hover{background-color:#f1f1f1}.add-element-handler .handler-item.active[data-v-8a7bb5f0]{color:#d14424}.add-element-handler .handler-item.group-btn[data-v-8a7bb5f0]{width:auto;margin-right:4px}.add-element-handler .handler-item.group-btn[data-v-8a7bb5f0]:hover{background-color:#f3f3f3}.add-element-handler .handler-item.group-btn .arrow[data-v-8a7bb5f0],.add-element-handler .handler-item.group-btn .icon[data-v-8a7bb5f0]{height:100%;display:flex;justify-content:center;align-items:center}.add-element-handler .handler-item.group-btn .icon[data-v-8a7bb5f0]{width:26px;padding:0 2px}.add-element-handler .handler-item.group-btn .icon[data-v-8a7bb5f0]:hover{background-color:#e9e9e9}.add-element-handler .handler-item.group-btn .icon.active[data-v-8a7bb5f0]{color:#d14424}.add-element-handler .handler-item.group-btn .arrow[data-v-8a7bb5f0]{font-size:12px}.add-element-handler .handler-item.group-btn .arrow[data-v-8a7bb5f0]:hover{background-color:#e9e9e9}.handler-item[data-v-8a7bb5f0]{margin:0 10px;font-size:14px;overflow:hidden;cursor:pointer}.handler-item.disable[data-v-8a7bb5f0]{opacity:.5}.right-handler[data-v-8a7bb5f0]{display:flex;align-items:center}.right-handler .text[data-v-8a7bb5f0]{width:40px;text-align:center;cursor:pointer}.right-handler .viewport-size[data-v-8a7bb5f0]{font-size:13px}.preset-item[data-v-8a7bb5f0]{padding:8px 20px;text-align:center;cursor:pointer}.preset-item[data-v-8a7bb5f0]:hover{color:#d14424}.text-type-item[data-v-8a7bb5f0]{padding:5px 10px;cursor:pointer}.text-type-item[data-v-8a7bb5f0]:hover{background-color:#f1f1f1}.text-type-item+.text-type-item[data-v-8a7bb5f0]{margin-top:3px}@media screen and (max-width:1024px){.text[data-v-8a7bb5f0]{display:none}.handler-item[data-v-8a7bb5f0]{margin:0 5px}}@media screen and (max-width:1000px){.left-handler[data-v-8a7bb5f0],.right-handler[data-v-8a7bb5f0]{display:none}}.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-61d61c80]{border-right:1px solid #eee;background-color:#fff;display:flex;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;user-select:none}.add-slide[data-v-61d61c80]{height:40px;font-size:12px;display:flex;flex-shrink:0;border-bottom:1px solid #eee;cursor:pointer}.add-slide .btn[data-v-61d61c80]{flex:1;display:flex;justify-content:center;align-items:center}.add-slide .btn[data-v-61d61c80]:hover{background-color:#f9f9f9}.add-slide .select-btn[data-v-61d61c80]{width:30px;display:flex;justify-content:center;align-items:center;border-left:1px solid #eee}.add-slide .select-btn[data-v-61d61c80]:hover{background-color:#f9f9f9}.add-slide .icon[data-v-61d61c80]{margin-right:3px;font-size:14px}.thumbnail-list[data-v-61d61c80]{padding:5px 0;flex:1;overflow:auto}.thumbnail-item[data-v-61d61c80]{display:flex;justify-content:center;align-items:center;padding:5px 0}.thumbnail-item .thumbnail[data-v-61d61c80]{outline:1px solid rgba(209,68,36,.15)}.thumbnail-item.active .label[data-v-61d61c80]{color:#d14424}.thumbnail-item.active .thumbnail[data-v-61d61c80],.thumbnail-item.selected .thumbnail[data-v-61d61c80]{outline-color:#d14424}.label[data-v-61d61c80]{font-size:12px;color:#999;width:20px;cursor:-webkit-grab;cursor:grab}.label.offset-left[data-v-61d61c80]{position:relative;left:-4px}.label[data-v-61d61c80]:active{cursor:-webkit-grabbing;cursor:grabbing}.page-number[data-v-61d61c80]{height:40px;font-size:12px;border-top:1px solid #eee;line-height:40px;text-align:center;color:#666}.row[data-v-54aad0f0]{width:100%;display:flex;align-items:center;margin-bottom:10px}.slider[data-v-54aad0f0]{flex:3}.color-btn[data-v-3b4a02d8]{display:flex;align-items:center;justify-content:center;padding:0!important}.color-block[data-v-3b4a02d8]{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-3b4a02d8]{width:100%;height:100%}.color-btn-icon[data-v-3b4a02d8]{width:30px;font-size:12px;margin-top:2px;color:#bfbfbf}.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-3d280c42]{position:relative;width:240px;background:#fff;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin-bottom:-10px}.picker-saturation-wrap[data-v-3d280c42]{width:100%;padding-bottom:50%;position:relative;overflow:hidden}.picker-controls[data-v-3d280c42]{display:flex}.picker-sliders[data-v-3d280c42]{padding:4px 0;flex:1}.picker-hue-wrap[data-v-3d280c42]{position:relative;height:10px}.picker-alpha-wrap[data-v-3d280c42]{position:relative;height:10px;margin-top:4px;overflow:hidden}.picker-color-wrap[data-v-3d280c42]{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-3d280c42]{background-size:auto}.picker-current-color[data-v-3d280c42]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2}.picker-field[data-v-3d280c42]{display:flex;margin-bottom:8px}.picker-field .transparent[data-v-3d280c42]{width:24px;height:24px;margin-top:4px;margin-left:8px;position:relative;cursor:pointer}.picker-field .transparent[data-v-3d280c42]:after{content:"";width:26px;height:2px;position:absolute;top:11px;left:-1px;transform:rotate(-45deg);background-color:red}.picker-field .transparent .checkerboard[data-v-3d280c42]{background-size:auto}.picker-field .straw[data-v-3d280c42]{width:24px;height:24px;margin-top:4px;margin-left:8px;display:flex;justify-content:center;align-items:center;font-size:20px;background-color:#f5f5f5;outline:1px solid #f1f1f1;cursor:pointer}.picker-field .input[data-v-3d280c42]{flex:1}.picker-presets[data-v-3d280c42]{display:flex;flex-wrap:wrap;align-content:flex-start}.picker-presets-color[data-v-3d280c42]{width:7%;margin-bottom:3.33333%;height:0;padding-bottom:7%;flex-shrink:0;position:relative;cursor:pointer}.picker-presets-color[data-v-3d280c42]:not(:nth-child(10n)){margin-right:3.33333%}.picker-presets-color.alpha[data-v-3d280c42]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAADBJREFUOE9jfPbs2X8GPEBSUhKfNAPjqAHDIgz+//+PNx08f/4cfzoYNYCBceiHAQC5flV5JzgrxQAAAABJRU5ErkJggg==)}.picker-presets-color-content[data-v-3d280c42]{position:absolute;top:0;right:0;bottom:0;left:0}.picker-gradient-presets[data-v-3d280c42]{display:flex;flex-wrap:wrap;align-content:flex-start}.picker-gradient-col[data-v-3d280c42]{width:7%;margin-bottom:3.33333%;display:flex;flex-direction:column}.picker-gradient-col[data-v-3d280c42]:not(:nth-child(10n)){margin-right:3.33333%}.picker-gradient-color[data-v-3d280c42]{width:100%;height:16px;position:relative;cursor:pointer}.recent-colors-title[data-v-3d280c42]{font-size:12px;margin-bottom:4px}.row[data-v-49642f50]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-49642f50]{text-align:right}.row[data-v-19c233fc]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-19c233fc]{text-align:right}.slider[data-v-19c233fc]{flex:3}.text-color-btn[data-v-c90c8a28]{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:0}.text-color-block[data-v-c90c8a28]{width:17px;height:4px;margin-top:1px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAACdJREFUGFdjfPbs2X8GBgYGSUlJEMXAiCHw//9/sIrnz59DVKALAADNxxVfaiODNQAAAABJRU5ErkJggg==)}.text-color-block .text-color-block-content[data-v-c90c8a28]{width:100%;height:100%}.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}.text-style-panel[data-v-74237311]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.row[data-v-74237311]{width:100%;display:flex;align-items:center;margin-bottom:10px}.preset-style[data-v-74237311]{display:flex;flex-wrap:wrap;margin-bottom:10px}.preset-style-item[data-v-74237311]{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-74237311]:hover{border-color:#d14424;color:#d14424;z-index:1}.preset-style-item[data-v-74237311]:nth-child(2n){margin-left:-1px}.preset-style-item[data-v-74237311]:nth-child(n+3){margin-top:-1px}.font-select[data-v-74237311]{max-width:50%}.font-size-btn[data-v-74237311]{padding:0}.link-popover[data-v-74237311]{width:240px}.link-popover .btns[data-v-74237311]{margin-top:10px;text-align:right}.list-wrap[data-v-74237311]{width:176px;color:#666;padding:8px;margin:-12px;display:flex;flex-wrap:wrap;align-content:flex-start}.list[data-v-74237311]{background-color:#f9f9f9;padding:4px 4px 4px 20px;cursor:pointer}.list[data-v-74237311]:not(:nth-child(3n)){margin-right:8px}.list[data-v-74237311]:nth-child(4),.list[data-v-74237311]:nth-child(5),.list[data-v-74237311]:nth-child(6){margin-top:8px}.list[data-v-74237311]:hover{color:#d14424}.list:hover span[data-v-74237311]{background-color:#d14424}.list-item[data-v-74237311]{width:24px;height:12px;position:relative;top:-5px}.list-item span[data-v-74237311]{width:100%;height:2px;display:inline-block;position:absolute;top:10px;background-color:#666}.popover-btn[data-v-74237311]{padding:0 3px}.row[data-v-1b5a047e],.row[data-v-a99ef6ee]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-a99ef6ee]{text-align:right}.filter[data-v-a99ef6ee]{font-size:12px}.filter-item[data-v-a99ef6ee]{padding:8px 0;display:flex;justify-content:center;align-items:center}.filter-item .name[data-v-a99ef6ee]{width:60px}.filter-item .filter-slider[data-v-a99ef6ee]{flex:1;margin:0 6px}.row[data-v-7e9086fc]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-7e9086fc]{text-align:right}.opacity-slider[data-v-7e9086fc]{flex:3}.row[data-v-105f4640]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-105f4640]{text-align:right}.origin-image[data-v-105f4640]{height:100px;background-size:contain;background-repeat:no-repeat;background-position:50%;background-color:#f9f9f9;margin-bottom:10px}.full-width-btn[data-v-105f4640]{width:100%;margin-bottom:10px}.btn-icon[data-v-105f4640]{margin-right:3px}.clip[data-v-105f4640]{width:260px;font-size:12px}.clip .title[data-v-105f4640]{margin-bottom:5px}.shape-clip[data-v-105f4640]{margin-bottom:10px;display:flex;flex-wrap:wrap;align-content:flex-start}.shape-clip-item[data-v-105f4640]{display:flex;justify-content:center;align-items:center;cursor:pointer;width:16%;margin-bottom:5%}.shape-clip-item[data-v-105f4640]:not(:nth-child(5n)){margin-right:5%}.shape-clip-item:hover .shape[data-v-105f4640]{background-color:#ccc}.shape-clip-item .shape[data-v-105f4640]{width:40px;height:40px;background-color:#e1e1e1}.shape-style-panel[data-v-43498c62]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.row[data-v-43498c62]{width:100%;display:flex;align-items:center;margin-bottom:10px}.font-select[data-v-43498c62]{max-width:50%}.font-size-btn[data-v-43498c62]{padding:0}.slider[data-v-43498c62]{flex:3}.title[data-v-43498c62]{display:flex;justify-content:space-between;margin-bottom:10px}.shape-pool[data-v-43498c62]{width:235px;height:190px;overflow:auto;padding:5px;padding-right:10px;border:1px solid #eee;margin-bottom:20px}.shape-list[data-v-43498c62]{display:flex;flex-wrap:wrap;align-content:flex-start}.shape-item[data-v-43498c62]{width:14%;margin-bottom:3.2%;height:0;padding-bottom:14%;flex-shrink:0}.shape-item[data-v-43498c62]:not(:nth-child(6n)){margin-right:3.2%}.row[data-v-0ca152b4]{width:100%;display:flex;align-items:center;margin-bottom:10px}.line-btn[data-v-0ca152b4]{display:flex;align-items:center;justify-content:space-between;padding:0!important}.line-btn .line-wrapper[data-v-0ca152b4]{margin-left:8px}.line-wrapper[data-v-0ca152b4]{overflow:visible}.line-btn-icon[data-v-0ca152b4]{width:30px;font-size:12px;margin-top:2px;color:#bfbfbf}.preset-point-style[data-v-0ca152b4]{padding:0 10px}.preset-point-style+.preset-point-style[data-v-0ca152b4]{margin-top:10px}.chart-data-editor[data-v-1eab5a3a]{width:600px;position:relative}.editor-content[data-v-1eab5a3a]{width:100%;height:360px;position:relative;border-right:1px solid #ccc;border-bottom:1px solid #ccc;overflow:auto;overflow:overlay}.range-box[data-v-1eab5a3a]{position:absolute;top:0;left:0;z-index:100;-webkit-user-select:none;-moz-user-select:none;user-select:none}.temp-range[data-v-1eab5a3a]{width:0;height:0;position:absolute;top:0;left:0;background-color:hsla(0,0%,53.3%,.3)}.range-line[data-v-1eab5a3a]{width:0;height:0;position:absolute;left:0;top:0;border:0 solid #d14424}.range-line.t[data-v-1eab5a3a]{border-top-width:1px}.range-line.b[data-v-1eab5a3a]{border-bottom-width:1px}.range-line.l[data-v-1eab5a3a]{border-left-width:1px}.range-line.r[data-v-1eab5a3a]{border-right-width:1px}.resizable[data-v-1eab5a3a]{position:absolute;width:12px;height:12px;left:0;top:0;margin:-9px 0 0 -9px;cursor:nwse-resize}.resizable[data-v-1eab5a3a]:after{content:"";position:absolute;width:4px;height:12px;right:0;top:0;background-color:#d14424}.resizable[data-v-1eab5a3a]:before{content:"";position:absolute;width:12px;height:4px;right:0;bottom:0;background-color:#d14424}table[data-v-1eab5a3a]{width:100%;height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;table-layout:fixed}table td[data-v-1eab5a3a]{text-align:center;border:1px solid #ccc;vertical-align:middle;width:100px;height:32px}table td.head[data-v-1eab5a3a]{background-color:rgba(209,68,36,.1)}table .item[data-v-1eab5a3a]{width:100%;height:100%;border:0;outline:0;font-size:13px;text-align:center;background-color:transparent}table .item.selected[data-v-1eab5a3a]{background-color:rgba(209,68,36,.02)}.btns[data-v-1eab5a3a]{margin-top:10px;display:flex;justify-content:space-between}.chart-style-panel[data-v-73760920]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.row[data-v-73760920]{width:100%;display:flex;align-items:center;margin-bottom:10px}.full-width-btn[data-v-73760920]{width:100%}.btn-icon[data-v-73760920]{margin-right:3px}.color-btn-wrap[data-v-73760920]{position:relative}.delete-color-btn[data-v-73760920]{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-73760920]{width:250px;margin-bottom:-10px;display:flex;flex-wrap:wrap;align-content:flex-start}.preset-theme[data-v-73760920]{display:flex;cursor:pointer;width:48%;margin-bottom:4%}.preset-theme[data-v-73760920]:not(:nth-child(2n)){margin-right:4%}.preset-theme-color[data-v-73760920]{width:20px;height:20px}.preset-theme-color.select[data-v-73760920]{transform:scale(1.2);transition:transform .1s}.row[data-v-79a422e5]{width:100%;display:flex;align-items:center;margin-bottom:10px}.theme-switch[data-v-79a422e5]{margin-bottom:18px}.switch-wrapper[data-v-79a422e5]{text-align:right}.set-count[data-v-79a422e5]{display:flex;justify-content:center;align-items:center}.set-count .btn[data-v-79a422e5]{padding:4px 8px}.set-count .count-text[data-v-79a422e5]{flex:1;text-align:center;margin:0 8px}.row[data-v-79d8ab96],.row[data-v-802e1e06]{width:100%;display:flex;align-items:center;margin-bottom:10px}.background-image-wrapper[data-v-802e1e06],.title[data-v-802e1e06]{margin-bottom:10px}.background-image[data-v-802e1e06]{height:0;padding-bottom:56.25%;border:1px dashed #eee;border-radius:2px;position:relative;transition:all .2s}.background-image[data-v-802e1e06]:hover{border-color:#d14424;color:#d14424}.background-image .content[data-v-802e1e06]{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-1da06c97]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-row[data-v-1da06c97]{height:32px}.switch-wrapper[data-v-1da06c97]{text-align:right}.row[data-v-de815ffa]{width:100%;display:flex;align-items:center;margin-bottom:10px}.font-size-btn[data-v-de815ffa]{padding:0}.row[data-v-08d61819]{width:100%;display:flex;align-items:center;margin-bottom:10px}.title[data-v-08d61819]{margin-bottom:10px}.label[data-v-08d61819]{text-align:center}.btn-icon[data-v-08d61819]{margin-right:3px}.icon-btn[data-v-08d61819]{cursor:pointer}.text-btn[data-v-08d61819]{height:30px;line-height:30px;text-align:center;cursor:pointer}.text-btn[data-v-08d61819]:hover{background-color:#efefef;border-radius:2px}.element-animation-panel[data-v-7a134147]{height:100%;display:flex;flex-direction:column}.tabs[data-v-7a134147]{display:flex;justify-content:flex-start;align-items:center;border-bottom:1px solid #eee;margin-bottom:20px}.tab[data-v-7a134147]{width:33.33%;padding-bottom:8px;border-bottom:2px solid transparent;text-align:center;cursor:pointer}.tab.active[data-v-7a134147]{border-bottom:2px solid #d14424}.tab.in.active[data-v-7a134147]{border-bottom-color:#68a490}.tab.out.active[data-v-7a134147]{border-bottom-color:#d86344}.tab.attention.active[data-v-7a134147]{border-bottom-color:#e8b76a}.element-animation[data-v-7a134147]{height:32px;display:flex;align-items:center}.element-animation-btn[data-v-7a134147]{width:100%}.config-item[data-v-7a134147]{display:flex;align-items:center}.config-item+.config-item[data-v-7a134147]{margin-top:5px}.tip[data-v-7a134147]{height:32px;display:flex;justify-content:center;align-items:center;font-style:italic}.animation-pool[data-v-7a134147]{width:400px;height:500px;overflow-y:auto;overflow-x:hidden;font-size:12px;margin-right:-12px;position:relative}.animation-pool .mask[data-v-7a134147]{position:absolute;top:0;right:0;bottom:0;left:0}.animation-pool.in .type-title[data-v-7a134147]{border-left-color:#68a490;background-color:rgba(104,164,144,.15)}.animation-pool.out .type-title[data-v-7a134147]{border-left-color:#d86344;background-color:rgba(216,99,68,.15)}.animation-pool.attention .type-title[data-v-7a134147]{border-left-color:#e8b76a;background-color:rgba(232,183,106,.15)}.type-title[data-v-7a134147]{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-7a134147]{display:flex;flex-wrap:wrap;align-content:flex-start}.pool-item[data-v-7a134147]{width:24%;margin-bottom:1.33333%;margin-bottom:10px;height:40px;line-height:40px;text-align:center;cursor:pointer}.pool-item[data-v-7a134147]:not(:nth-child(4n)){margin-right:1.33333%}.animation-box[data-v-7a134147]{background-color:#f9f9f9}.animation-sequence[data-v-7a134147]{flex:1;padding-right:12px;margin-right:-12px;overflow:auto;overflow:overlay}.sequence-item[data-v-7a134147]{border:1px solid #eee;padding:10px 6px;border-radius:2px;margin-bottom:8px;transition:all .5s}.sequence-item.in.active[data-v-7a134147]{border-color:#68a490}.sequence-item.out.active[data-v-7a134147]{border-color:#d86344}.sequence-item.attention.active[data-v-7a134147]{border-color:#e8b76a}.sequence-item.active[data-v-7a134147]{height:auto}.sequence-item .sequence-content[data-v-7a134147]{display:flex;align-items:center;cursor:-webkit-grab;cursor:grab}.sequence-item .sequence-content[data-v-7a134147]:active{cursor:-webkit-grabbing;cursor:grabbing}.sequence-item .sequence-content .index[data-v-7a134147]{flex:1}.sequence-item .sequence-content .text[data-v-7a134147]{flex:6}.sequence-item .sequence-content .handler[data-v-7a134147]{flex:2;font-size:15px;text-align:right}.sequence-item .sequence-content .handler-btn[data-v-7a134147]{margin-left:8px;cursor:pointer}.slide-design-panel[data-v-93e8361c]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.row[data-v-93e8361c]{width:100%;display:flex;align-items:center;margin-bottom:10px}.background-image-wrapper[data-v-93e8361c],.title[data-v-93e8361c]{margin-bottom:10px}.background-image[data-v-93e8361c]{height:0;padding-bottom:56.25%;border:1px dashed #eee;border-radius:2px;position:relative;transition:all .2s}.background-image[data-v-93e8361c]:hover{border-color:#d14424;color:#d14424}.background-image .content[data-v-93e8361c]{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-93e8361c]{display:flex;flex-wrap:wrap;align-content:flex-start}.theme-item[data-v-93e8361c]{width:48%;margin-bottom:4%;padding-bottom:30%;border-radius:2px;position:relative;cursor:pointer}.theme-item[data-v-93e8361c]:not(:nth-child(2n)){margin-right:4%}.theme-item .theme-item-content[data-v-93e8361c]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:center;padding:8px;border:1px solid #eee}.theme-item .text[data-v-93e8361c]{font-size:16px}.theme-item .colors[data-v-93e8361c]{display:flex}.theme-item .color-block[data-v-93e8361c]{margin-top:8px;width:12px;height:12px;margin-right:2px}.theme-item:hover .btns[data-v-93e8361c]{display:flex}.theme-item .btns[data-v-93e8361c]{position:absolute;top:0;right:0;bottom:0;left:0;flex-direction:column;justify-content:center;align-items:center;display:none;background-color:rgba(0,0,0,.25)}.theme-item .btn[data-v-93e8361c]{width:72px;padding:5px 0;text-align:center;background-color:#d14424;color:#fff;font-size:12px;border-radius:2px}.theme-item .btn[data-v-93e8361c]:hover{background-color:#de6949}.theme-item .btn+.btn[data-v-93e8361c]{margin-top:5px}.slider[data-v-93e8361c]{flex:3}.animation-pool[data-v-c4273212]{display:flex;flex-wrap:wrap;margin-bottom:10px}.animation-item[data-v-c4273212]{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-c4273212]{border-color:#d14424;z-index:1}.animation-item[data-v-c4273212]:nth-child(2n){margin-left:-1px}.animation-item[data-v-c4273212]:nth-child(n+3){margin-top:-1px}.animation-block[data-v-c4273212]{width:64px;height:36px;background:#666;position:relative;overflow:hidden}.animation-block.fade[data-v-c4273212]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:fade-c4273212 .3s linear;animation:fade-c4273212 .3s linear}.animation-block.slideX[data-v-c4273212]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:slideX-c4273212 .3s linear;animation:slideX-c4273212 .3s linear}.animation-block.slideY[data-v-c4273212]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:slideY-c4273212 .3s linear;animation:slideY-c4273212 .3s linear}.animation-text[data-v-c4273212]{font-size:12px;color:#333;text-align:center}@-webkit-keyframes fade-c4273212{0%{opacity:0}to{opacity:1}}@keyframes fade-c4273212{0%{opacity:0}to{opacity:1}}@-webkit-keyframes slideX-c4273212{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slideX-c4273212{0%{transform:translateX(100%)}to{transform:translateX(0)}}@-webkit-keyframes slideY-c4273212{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideY-c4273212{0%{transform:translateY(100%)}to{transform:translateY(0)}}.row[data-v-c88d31ba]{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;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}.fullscreen-spin[data-v-5a56d59c]{top:0;bottom:0;left:0;right:0;z-index:100;background-color:hsla(0,0%,94.5%,.7)}.fullscreen-spin[data-v-5a56d59c],.spin[data-v-5a56d59c]{position:fixed;display:flex;justify-content:center;align-items:center}.spin[data-v-5a56d59c]{width:200px;height:200px;top:50%;left:50%;margin-top:-100px;margin-left:-100px;flex-direction:column}.spinner[data-v-5a56d59c]{width:36px;height:36px;border:3px solid #d14424;border-top-color:transparent;border-radius:50%;-webkit-animation:spinner-5a56d59c .8s linear infinite;animation:spinner-5a56d59c .8s linear infinite}.text[data-v-5a56d59c]{margin-top:20px;color:#d14424}@-webkit-keyframes spinner-5a56d59c{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spinner-5a56d59c{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.export-img-dialog[data-v-92a8f63e]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.thumbnails-view[data-v-92a8f63e],.thumbnails-view[data-v-92a8f63e]:after{position:absolute;top:0;right:0;bottom:0;left:0}.thumbnails-view[data-v-92a8f63e]:after{content:"";background-color:#fff}.configs[data-v-92a8f63e]{width:350px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center;z-index:1}.configs .row[data-v-92a8f63e]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-92a8f63e]{width:100px;position:relative}.configs .title[data-v-92a8f63e]:after{content:attr(data-range);position:absolute;top:20px;left:0}.configs .config-item[data-v-92a8f63e]{flex:1}.btns[data-v-92a8f63e]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-92a8f63e]{flex:1}.btns .close[data-v-92a8f63e]{width:100px;margin-left:10px}.export-json-dialog[data-v-0cc0995e]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.preview[data-v-0cc0995e]{width:100%;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center;background-color:#f9f9f9;color:#0451a5}.btns[data-v-0cc0995e]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-0cc0995e]{flex:1}.btns .close[data-v-0cc0995e]{width:100px;margin-left:10px}[data-v-0cc0995e]::-webkit-scrollbar{width:10px;height:10px;background-color:#f9f9f9}[data-v-0cc0995e]::-webkit-scrollbar-thumb{background-color:#c1c1c1}.export-pdf-dialog[data-v-527855fb]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.thumbnails-view[data-v-527855fb],.thumbnails-view[data-v-527855fb]:after{position:absolute;top:0;right:0;bottom:0;left:0}.thumbnails-view[data-v-527855fb]:after{content:"";background-color:#fff}.thumbnail.break-page[data-v-527855fb]{-moz-column-break-after:page;break-after:page}.configs[data-v-527855fb]{width:300px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center;z-index:1}.configs .row[data-v-527855fb]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-527855fb]{width:100px}.configs .config-item[data-v-527855fb]{flex:1}.configs .tip[data-v-527855fb]{font-size:12px;color:#aaa;line-height:1.8;margin-top:25px}.btns[data-v-527855fb]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-527855fb]{flex:1}.btns .close[data-v-527855fb]{width:100px;margin-left:10px}.export-pptx-dialog[data-v-018847a8]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.configs[data-v-018847a8]{width:350px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center}.configs .row[data-v-018847a8]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-018847a8]{width:100px;position:relative}.configs .title[data-v-018847a8]:after{content:attr(data-range);position:absolute;top:20px;left:0}.configs .config-item[data-v-018847a8]{flex:1}.btns[data-v-018847a8]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-018847a8]{flex:1}.btns .close[data-v-018847a8]{width:100px;margin-left:10px}.export-pptist-dialog[data-v-40c1ae3a]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.configs[data-v-40c1ae3a]{width:350px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center}.configs .row[data-v-40c1ae3a]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-40c1ae3a]{width:100px;position:relative}.configs .title[data-v-40c1ae3a]:after{content:attr(data-range);position:absolute;top:20px;left:0}.configs .config-item[data-v-40c1ae3a]{flex:1}.configs .tip[data-v-40c1ae3a]{font-size:12px;color:#aaa;line-height:1.8;margin-top:25px}.btns[data-v-40c1ae3a]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-40c1ae3a]{flex:1}.btns .close[data-v-40c1ae3a]{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;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}.moveable-panel[data-v-68252e2c]{position:fixed;background-color:#fff;box-shadow:0 2px 12px 0 rgba(56,56,56,.15);border:1px solid #eee;border-radius:2px;display:flex;flex-direction:column;z-index:999}.header[data-v-68252e2c]{height:40px;display:flex;align-items:center;border-bottom:1px solid #f0f0f0;cursor:move}.title[data-v-68252e2c]{flex:1;font-size:13px;padding-left:10px}.close-btn[data-v-68252e2c]{width:40px;height:40px;display:flex;justify-content:center;align-items:center;color:#666;font-size:12px;cursor:pointer}.content[data-v-68252e2c]{flex:1;padding:10px;overflow:auto}.select-panel[data-v-64f9ccca]{height:100%;font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.handler[data-v-64f9ccca]{height:24px;margin-bottom:8px;display:flex;align-items:center;justify-content:space-between}.handler .icon-btns[data-v-64f9ccca]{height:100%;flex:1;display:flex;align-items:center;justify-content:flex-end}.handler .icon-btn[data-v-64f9ccca]{width:16px;height:100%;display:flex;align-items:center;justify-content:center;cursor:pointer}.handler .icon-btn[data-v-64f9ccca]:hover{color:#d14424}.element-list[data-v-64f9ccca]{height:calc(100% - 32px);padding-right:10px;margin-right:-10px;overflow:auto}.item[data-v-64f9ccca]{padding:5px;font-size:12px;border-radius:2px;display:flex;align-items:center;cursor:pointer}.item.active[data-v-64f9ccca]{background-color:rgba(209,68,36,.1)}.item.group-active[data-v-64f9ccca]{background-color:rgba(209,68,36,.2)}.item[data-v-64f9ccca]:hover{background-color:rgba(209,68,36,.25)}.item .name[data-v-64f9ccca]{height:18px;line-height:18px;flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.item .icons[data-v-64f9ccca]{width:20px;display:flex;align-items:center;justify-content:center;margin-left:5px}.group-els[data-v-64f9ccca]{padding:5px 0}.group-els .group-title[data-v-64f9ccca]{margin-bottom:5px;padding:0 5px}.group-els .item[data-v-64f9ccca]{margin-left:15px}.input[data-v-64f9ccca]{width:100%;height:18px;line-height:18px;border:0;outline:0;padding-left:0;padding-right:0;flex:1}.pptist-editor[data-v-ed562e98]{height:100%}.layout-header[data-v-ed562e98]{height:40px}.layout-content[data-v-ed562e98]{height:calc(100% - 40px);display:flex}.layout-content-left[data-v-ed562e98]{width:160px;height:100%;flex-shrink:0}.layout-content-center[data-v-ed562e98]{width:calc(100% - 420px)}.layout-content-center .center-top[data-v-ed562e98]{height:40px}.layout-content-right[data-v-ed562e98]{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-3e9669a9]{z-index:8;cursor:none;position:absolute;top:0;right:0;bottom:0;left:0}.blackboard[data-v-3e9669a9]{width:100%;height:100%;background-color:#0f392b}.canvas[data-v-3e9669a9]{position:absolute;top:0;left:0}.eraser[data-v-3e9669a9],.pen[data-v-3e9669a9]{pointer-events:none;position:absolute;z-index:9}.eraser .icon[data-v-3e9669a9],.pen .icon[data-v-3e9669a9]{filter:drop-shadow(2px 2px 2px #555)}.eraser[data-v-3e9669a9]{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-52a2a3a6]{font-size:12px;z-index:10;position:absolute;top:0;right:0;bottom:0;left:0}.writing-board-tool .writing-board-wrap[data-v-52a2a3a6]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.writing-board-tool .tools[data-v-52a2a3a6]{width:100%;height:100%;display:flex;align-items:center;justify-content:space-between}.writing-board-tool .tool-content[data-v-52a2a3a6]{display:flex;align-items:center}.writing-board-tool .btn[data-v-52a2a3a6]{padding:5px 10px;cursor:pointer}.writing-board-tool .btn[data-v-52a2a3a6]:hover{color:#d14424}.writing-board-tool .btn.active[data-v-52a2a3a6]{background-color:rgba(209,68,36,.5);color:#fff}.writing-board-tool .icon[data-v-52a2a3a6]{font-size:20px}.writing-board-tool .colors[data-v-52a2a3a6]{display:flex;padding:0 10px}.writing-board-tool .color[data-v-52a2a3a6]{width:16px;height:16px;border-radius:2px;cursor:pointer}.writing-board-tool .color[data-v-52a2a3a6]:hover{transform:scale(1.15)}.writing-board-tool .color.active[data-v-52a2a3a6]{transform:scale(1.3)}.writing-board-tool .color+.color[data-v-52a2a3a6]{margin-left:8px}.size[data-v-52a2a3a6]{width:200px;display:flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.size .label[data-v-52a2a3a6]{width:70px}.size .size-slider[data-v-52a2a3a6]{flex:1}.countdown-timer[data-v-5a82de11]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.header[data-v-5a82de11]{height:16px;font-size:13px;margin-bottom:16px;display:flex;align-items:center}.header .text-btn[data-v-5a82de11]{margin-right:8px;cursor:pointer}.header .text-btn.active[data-v-5a82de11],.header .text-btn[data-v-5a82de11]:hover{color:#d14424}.content[data-v-5a82de11]{display:flex;justify-content:space-between;padding:0 5px}.timer[data-v-5a82de11]{width:54px;height:54px;border-radius:50%;background-color:rgba(209,68,36,.05);font-size:22px;overflow:hidden}.timer input[data-v-5a82de11]{width:100%;height:100%;border:0;outline:0;background-color:transparent;text-align:center}.colon[data-v-5a82de11]{height:54px;line-height:54px;font-size:22px}.icon-btn[data-v-5a82de11]{width:20px;height:20px;display:flex;justify-content:center;align-items:center;cursor:pointer}.pause[data-v-5a82de11],.play[data-v-5a82de11]{font-size:17px}.reset[data-v-5a82de11]{font-size:12px}.close-btn[data-v-5a82de11]{position:absolute;top:0;right:0;padding:10px;cursor:pointer}.base-view[data-v-90ac59d8]{width:100%;height:100%}.base-view.laser-pen[data-v-90ac59d8]{cursor:url(data:image/png;base64,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) 20 20,default!important}.tools-left[data-v-90ac59d8]{position:fixed;bottom:8px;left:8px;font-size:25px;color:#666;z-index:10}.tools-left .tool-btn[data-v-90ac59d8]{opacity:.35;cursor:pointer}.tools-left .tool-btn[data-v-90ac59d8]:hover{opacity:.9}.tools-left .tool-btn+.tool-btn[data-v-90ac59d8]{margin-left:8px}.tools-right[data-v-90ac59d8]{height:66px;position:fixed;bottom:-66px;right:0;z-index:5;padding:8px;transition:bottom .2s}.tools-right.visible[data-v-90ac59d8]{bottom:0}.tools-right[data-v-90ac59d8]:after{content:"";width:100%;height:66px;position:absolute;left:0;top:-66px}.tools-right .content[data-v-90ac59d8]{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-90ac59d8]{cursor:pointer}.tools-right .tool-btn.active[data-v-90ac59d8],.tools-right .tool-btn[data-v-90ac59d8]:hover{color:#d14424}.tools-right .tool-btn+.tool-btn[data-v-90ac59d8]{margin-left:15px}.tools-right .page-number[data-v-90ac59d8]{font-size:13px;padding:8px 12px;cursor:pointer}.presenter-view[data-v-f770d810]{width:100%;height:100%;display:flex}.toolbar[data-v-f770d810]{width:70px;height:100%;background-color:#fff;border-right:1px solid #eee;font-size:12px;margin:20px 0}.toolbar .tool-btn[data-v-f770d810]{display:flex;flex-direction:column;justify-content:center;align-items:center;cursor:pointer}.toolbar .tool-btn+.tool-btn[data-v-f770d810]{margin-top:22px}.toolbar .tool-btn.active[data-v-f770d810],.toolbar .tool-btn[data-v-f770d810]:hover{color:#d14424}.toolbar .divider[data-v-f770d810]{width:70%;min-width:70%;margin:24px 15%}.toolbar .tool-icon[data-v-f770d810]{margin-bottom:8px;font-size:22px}.content[data-v-f770d810]{width:calc(100% - 430px);height:100%;background-color:#1d1d1d}.slide-list-wrap[data-v-f770d810]{height:calc(100% - 190px);margin:20px;overflow:hidden;position:relative}.slide-list-wrap.laser-pen[data-v-f770d810]{cursor:url(data:image/png;base64,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) 20 20,default!important}.thumbnails[data-v-f770d810]{height:150px;padding:15px;white-space:nowrap;overflow-x:auto;overflow-y:hidden;border-top:1px solid #3a3a3a}.thumbnail[data-v-f770d810]{display:inline-block;outline:2px solid #aaa}.thumbnail+.thumbnail[data-v-f770d810]{margin-left:10px}.thumbnail[data-v-f770d810]:hover{outline-color:#d14424}.thumbnail.active[data-v-f770d810]{outline-width:3px;outline-color:#d14424}.remark[data-v-f770d810]{width:360px;height:100%;position:relative;background-color:#2a2a2a;border-left:1px solid #3a3a3a;color:#fff}.remark .header[data-v-f770d810]{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-f770d810]{height:calc(100% - 60px);padding:20px;line-height:1.5;overflow:auto;overflow:overlay}.remark .remark-scale[data-v-f770d810]{position:absolute;right:5px;bottom:5px;font-size:22px;display:flex}.remark .scale-btn[data-v-f770d810]{width:40px;height:40px;display:flex;justify-content:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer}.remark .scale-btn.disable[data-v-f770d810]{color:#666;cursor:no-drop}.remark .scale-btn[data-v-f770d810]:not(.disable):hover{background-color:#333}[data-v-f770d810]::-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;user-select:none}.mobile-thumbnails[data-v-e594aa30]{padding:10px;white-space:nowrap;overflow-x:auto;overflow-y:hidden}.thumbnail-item[data-v-e594aa30]{position:relative;display:inline-block;outline:2px solid #aaa}.thumbnail-item+.thumbnail-item[data-v-e594aa30]{margin-left:10px}.thumbnail-item.active[data-v-e594aa30]{outline-color:#d14424}.thumbnail-item.active .label[data-v-e594aa30]{background-color:#d14424}.thumbnail-item .label[data-v-e594aa30]{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}.sortable-chosen[data-v-e594aa30]{top:-5px}[data-v-e594aa30]::-webkit-scrollbar{width:0;height:0}.slide-toolbar[data-v-1e17bcc7]{height:230px;background-color:#fff;box-shadow:0 0 15px 0 rgba(0,0,0,.1);display:flex;flex-direction:column;position:relative;z-index:2}.remark[data-v-1e17bcc7]{position:relative;flex:1;border-bottom:1px solid #eee;line-height:1.5}.remark textarea[data-v-1e17bcc7]{width:100%;height:100%;overflow-y:auto;resize:none;border:0;outline:0;padding:8px 10px;font-size:12px;position:absolute;top:0;right:0;bottom:0;left:0}.toolbar[data-v-1e17bcc7]{height:90px;border-bottom:1px solid #eee;padding:10px}.row[data-v-1e17bcc7]{width:100%;display:flex;align-items:center;margin-bottom:5px}.row .icon[data-v-1e17bcc7]{margin-right:3px}.element-toolbar[data-v-2633262b]{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-2633262b .15s;animation:slideInUp-2633262b .15s}.tabs[data-v-2633262b]{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-2633262b]{width:30%;padding:10px 10px 12px;margin:0 10%;border-bottom:2px solid transparent;text-align:center;cursor:pointer}.tab.active[data-v-2633262b]{border-bottom:2px solid #d14424}@-webkit-keyframes slideInUp-2633262b{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideInUp-2633262b{0%{transform:translateY(100%)}to{transform:translateY(0)}}.content[data-v-2633262b]{padding:10px;flex:1;overflow:auto}.row[data-v-2633262b]{width:100%;display:flex;align-items:center;margin-bottom:10px}.row .icon[data-v-2633262b]{margin-right:3px}.row-block[data-v-2633262b]{margin-bottom:10px;background-color:#f9f9f9;border-radius:2px;padding:10px}.label[data-v-2633262b]{font-size:13px;margin-bottom:20px;margin-left:6px}.colors[data-v-2633262b]{display:flex;flex-wrap:wrap;align-content:flex-start}.color[data-v-2633262b]{width:12%;margin-bottom:.57143%;padding-bottom:5px;display:flex;justify-content:center;align-items:center}.color[data-v-2633262b]:not(:nth-child(8n)){margin-right:.57143%}.color .color-block[data-v-2633262b]{width:30px;height:30px;border-radius:50%}.mobile-editor-header[data-v-8639f30e]{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);position:relative;z-index:2}.history[data-v-8639f30e]{display:flex;justify-content:center;align-items:center}.history-item[data-v-8639f30e]{margin-right:20px}.history-item.disable[data-v-8639f30e]{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-1c8bce03]{height:100%;background-color:#f9f9f9}.thumbnail-list[data-v-1c8bce03]{height:calc(100% - 50px);padding:10px;overflow:auto}.thumbnail-item[data-v-1c8bce03]{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-1c8bce03]{margin-top:10px}.menu[data-v-1c8bce03]{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-1c8bce03]{width:50%;height:100%;display:flex;justify-content:center;align-items:center;font-size:13px}.menu .menu-item .icon[data-v-1c8bce03]{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;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:inherit}.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:inherit}.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{width:100%!important;height:100%;overflow:hidden;background-color:#fff;color:#41464b}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-menu{min-width:150px;box-shadow:3px 3px 3px rgba(0,0,0,.15);border:1px solid #eee;margin-top:-4px}.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;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}.ant-input-number-input{line-height:30px}@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)}.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;user-select:none} \ No newline at end of file diff --git a/index.html b/index.html index 158a9d4d..56dad227 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.000ee1e5.js b/js/app.000ee1e5.js new file mode 100644 index 00000000..166e1107 --- /dev/null +++ b/js/app.000ee1e5.js @@ -0,0 +1,2 @@ +(function(e){function t(t){for(var c,a,r=t[0],i=t[1],s=t[2],u=0,b=[];u{const{empty:t}=e.state.selection;t&&Object(s["d"])(e.state,e.dispatch)},u=(e,t,l)=>{if(l)e.dispatch(e.state.tr.addMark(l.from,l.to,t));else{const{$from:l,$to:c}=e.state.selection;e.dispatch(e.state.tr.addMark(l.pos,c.pos,t))}},b=(e,t,l,c)=>{let n=t;const o=e=>e.type===c;let a=null,r=null,i=null;while(n<=l){const t=e.nodeAt(n);if(!t||!t.marks)return null;const l=t.marks.find(o);if(!l)return null;if(a&&l!==a)return null;r=r||t,a=a||l,i=t,n++}let s=t,d=l,u=0;n=t-1;while(n>u){const t=e.nodeAt(n),l=t&&t.marks.find(o);if(!l||l!==a)break;s=n,r=t,n--}n=l+1,u=e.nodeSize-2;while(nArray.isArray(e)&&e.indexOf(t.type)>-1||t.type===e,m=(e,t)=>{for(let l=e.depth;l>0;l--){const c=e.node(l);if(t(c))return{pos:l>0?e.before(l):0,start:e.start(l),depth:l,node:c}}},p=e=>t=>m(t.$from,e),f=e=>t=>p(t=>O(e,t))(t),j=(e,t)=>{const l=t.schema.nodes[e];return!!f(l)(t.selection)},v=e=>{var t,l;const{selection:c,doc:n}=e.state,{from:o}=c;let a=n.nodeAt(o)||n.nodeAt(o-1);return null!==(t=a)&&void 0!==t&&t.lastChild&&(a=a.lastChild),(null===(l=a)||void 0===l?void 0:l.marks)||[]},h=(e,t,l)=>{for(const c of e)if(c.type.name===t&&c.attrs[l])return c.attrs[l];return null},y=(e,t)=>{for(const l of e)if(l.type.name===t)return!0;return!1},g=(e,t)=>{const{from:l,$from:c,to:n,empty:o}=e.selection;return o?t.isInSet(e.storedMarks||c.marks()):e.doc.rangeHasMark(l,n,t)},x=(e,t)=>{const{selection:l,doc:c}=e.state,{from:n,to:o}=l;let a=!0,r="";return c.nodesBetween(n,o,e=>(a&&e.attrs[t]&&(a=!1,r=e.attrs[t]),a)),r},k={color:"#000",backcolor:"",fontsize:"20px",fontname:"微软雅黑",align:"left"},C=(e,t={})=>{const l={...k,...t},c=v(e),n=y(c,"strong"),o=y(c,"em"),a=y(c,"underline"),r=y(c,"strikethrough"),i=y(c,"superscript"),s=y(c,"subscript"),d=y(c,"code"),u=h(c,"forecolor","color")||l.color,b=h(c,"backcolor","backcolor")||l.backcolor,O=h(c,"fontsize","fontsize")||l.fontsize,m=h(c,"fontname","fontname")||l.fontname,p=h(c,"link","href")||"",f=x(e,"align")||l.align,g=j("bullet_list",e.state),C=j("ordered_list",e.state),N=j("blockquote",e.state);return{bold:n,em:o,underline:a,strikethrough:r,superscript:i,subscript:s,code:d,color:u,backcolor:b,fontsize:O,fontname:m,link:p,align:f,bulletList:g,orderedList:C,blockquote:N}},N=e=>{const t=v(e),l=h(t,"fontsize","fontsize")||k.fontsize;return parseInt(l)},E={bold:!1,em:!1,underline:!1,strikethrough:!1,superscript:!1,subscript:!1,code:!1,color:"#000",backcolor:"",fontsize:"20px",fontname:"微软雅黑",link:"",align:"left",bulletList:!1,orderedList:!1,blockquote:!1},w=e=>{if("string"!==typeof e)return!1;const t="Arial";if(e.toLowerCase()===t.toLowerCase())return!0;const l=100,c=100,n=100,o="a",a=document.createElement("canvas"),r=a.getContext("2d");if(!r)return!1;a.width=c,a.height=n,r.textAlign="center",r.fillStyle="black",r.textBaseline="middle";const i=e=>{r.clearRect(0,0,c,n),r.font=`${l}px ${e}, ${t}`,r.fillText(o,c/2,n/2);const a=r.getImageData(0,0,c,n).data;return[].slice.call(a).filter(e=>0!==e)};return i(t).join("")!==i(e).join("")};l("5b81");var V=l("66cb"),I=l.n(V),S=l("2ef0");const L=[{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"}}],B={themeColor:"#5b9bd5",fontColor:"#333",fontName:"Microsoft Yahei",backgroundColor:"#fff"},_=[{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}}"}}],T=Object(o["b"])("slides",{state:()=>({theme:B,slides:L,slideIndex:0,viewportRatio:.5625}),getters:{currentSlide(e){return e.slides[e.slideIndex]},currentSlideAnimations(e){const t=e.slides[e.slideIndex];if(null===t||void 0===t||!t.animations)return[];const l=t.elements,c=l.map(e=>e.id);return t.animations.filter(e=>c.includes(e.elId))},formatedAnimations(e){const t=e.slides[e.slideIndex];if(null===t||void 0===t||!t.animations)return[];const l=t.elements,c=l.map(e=>e.id),n=t.animations.filter(e=>c.includes(e.elId)),o=[];for(const a of n)if("click"!==a.trigger&&o.length){if("meantime"===a.trigger){const e=o[o.length-1];e.animations=e.animations.filter(e=>e.elId!==a.elId),e.animations.push(a),o[o.length-1]=e}else if("auto"===a.trigger){const e=o[o.length-1];e.autoNext=!0,o[o.length-1]=e,o.push({animations:[a],autoNext:!1})}}else o.push({animations:[a],autoNext:!1});return o},layouts(e){const{themeColor:t,fontColor:l,fontName:c,backgroundColor:n}=e.theme,o=I()(l).isDark()?"rgba(230, 230, 230, 0.5)":"rgba(180, 180, 180, 0.5)",a=JSON.stringify(_).replaceAll("{{themeColor}}",t).replaceAll("{{fontColor}}",l).replaceAll("{{fontName}}",c).replaceAll("{{backgroundColor}}",n).replaceAll("{{subColor}}",o);return JSON.parse(a)}},actions:{setTheme(e){this.theme={...this.theme,...e}},setViewportRatio(e){this.viewportRatio=e},setSlides(e){this.slides=e},addSlide(e){const t=Array.isArray(e)?e:[e],l=this.slideIndex+1;this.slides.splice(l,0,...t),this.slideIndex=l},updateSlide(e){const t=this.slideIndex;this.slides[t]={...this.slides[t],...e}},deleteSlide(e){const t=Array.isArray(e)?e:[e],l=[];for(let o=0;oe.id===t[o]);l.push(e)}let c=Math.min(...l);const n=this.slides.length-t.length-1;c>n&&(c=n),this.slideIndex=c,this.slides=this.slides.filter(e=>!t.includes(e.id))},updateSlideIndex(e){this.slideIndex=e},addElement(e){const t=Array.isArray(e)?e:[e],l=this.slides[this.slideIndex].elements,c=[...l,...t];this.slides[this.slideIndex].elements=c},deleteElement(e){const t=Array.isArray(e)?e:[e],l=this.slides[this.slideIndex].elements,c=l.filter(e=>!t.includes(e.id));this.slides[this.slideIndex].elements=c},updateElement(e){const{id:t,props:l}=e,c="string"===typeof t?[t]:t,n=this.slideIndex,o=this.slides[n],a=o.elements.map(e=>c.includes(e.id)?{...e,...l}:e);this.slides[n].elements=a},removeElementProps(e){const{id:t,propName:l}=e,c="string"===typeof l?[l]:l,n=this.slideIndex,o=this.slides[n],a=o.elements.map(e=>e.id===t?Object(S["omit"])(e,c):e);this.slides[n].elements=a}}}),M=Object(a["a"])("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"),D=M(10),z=Object(o["b"])("main",{state:()=>({activeElementIdList:[],handleElementId:"",activeGroupElementId:"",hiddenElementIdList:[],canvasPercentage:90,canvasScale:1,canvasDragged:!1,thumbnailsFocus:!1,editorAreaFocus:!1,disableHotkeys:!1,gridLineSize:0,showRuler:!1,creatingElement:null,availableFonts:r,toolbarState:c.SLIDE_DESIGN,clipingImageElementId:"",richTextAttrs:E,selectedTableCells:[],isScaling:!1,selectedSlidesIndex:[],dialogForExport:"",databaseId:D,textFormatPainter:null,showSelectPanel:!1}),getters:{activeElementList(e){const t=T(),l=t.currentSlide;return l&&l.elements?l.elements.filter(t=>e.activeElementIdList.includes(t.id)):[]},handleElement(e){const t=T(),l=t.currentSlide;return l&&l.elements&&l.elements.find(t=>e.handleElementId===t.id)||null}},actions:{setActiveElementIdList(e){1===e.length?this.handleElementId=e[0]:this.handleElementId="",this.activeElementIdList=e},setHandleElementId(e){this.handleElementId=e},setActiveGroupElementId(e){this.activeGroupElementId=e},setHiddenElementIdList(e){this.hiddenElementIdList=e},setCanvasPercentage(e){this.canvasPercentage=e},setCanvasScale(e){this.canvasScale=e},setCanvasDragged(e){this.canvasDragged=e},setThumbnailsFocus(e){this.thumbnailsFocus=e},setEditorareaFocus(e){this.editorAreaFocus=e},setDisableHotkeysState(e){this.disableHotkeys=e},setGridLineSize(e){this.gridLineSize=e},setRulerState(e){this.showRuler=e},setCreatingElement(e){this.creatingElement=e},setAvailableFonts(){this.availableFonts=r.filter(e=>w(e.value))},setToolbarState(e){this.toolbarState=e},setClipingImageElementId(e){this.clipingImageElementId=e},setRichtextAttrs(e){this.richTextAttrs=e},setSelectedTableCells(e){this.selectedTableCells=e},setScalingState(e){this.isScaling=e},updateSelectedSlidesIndex(e){this.selectedSlidesIndex=e},setDialogForExport(e){this.dialogForExport=e},setTextFormatPainter(e){this.textFormatPainter=e},setSelectPanelState(e){this.showSelectPanel=e}}});var F=l("fc11"),A=l("4dec");const $="PPTIST_DISCARDED_DB",R="PPTist",P=async()=>{const e=(new Date).getTime(),t=localStorage.getItem($),l=t?JSON.parse(t):[],c=await A["a"].getDatabaseNames(),n=c.filter(t=>{if(-1===t.indexOf(R))return!1;const[c,n,o]=t.split("_");return c!==R||!n||!o||(!!l.includes(n)||e-+o>=432e5)});for(const o of n)A["a"].delete(o);localStorage.removeItem($)};class H extends A["a"]{constructor(){super(`${R}_${D}_${(new Date).getTime()}`),Object(F["a"])(this,"snapshots",void 0),Object(F["a"])(this,"writingBoardImgs",void 0),this.version(1).stores({snapshots:"++id",writingBoardImgs:"++id"}),this.snapshots=this.table("snapshots"),this.writingBoardImgs=this.table("writingBoardImgs")}}const q=new H,U=Object(o["b"])("snapshot",{state:()=>({snapshotCursor:-1,snapshotLength:0}),getters:{canUndo(e){return e.snapshotCursor>0},canRedo(e){return e.snapshotCursor=0&&this.snapshotCursoro&&(l.push(t[0]),n--),n>=2&&q.snapshots.update(t[n-2],{index:e.slideIndex}),await q.snapshots.bulkDelete(l),this.setSnapshotCursor(n-1),this.setSnapshotLength(n)},async unDo(){if(this.snapshotCursor<=0)return;const e=T(),t=z(),l=this.snapshotCursor-1,c=await q.snapshots.orderBy("id").toArray(),n=c[l],{index:o,slides:a}=n,r=o>a.length-1?a.length-1:o;e.setSlides(a),e.updateSlideIndex(r),this.setSnapshotCursor(l),t.setActiveElementIdList([])},async reDo(){if(this.snapshotCursor>=this.snapshotLength-1)return;const e=T(),t=z(),l=this.snapshotCursor+1,c=await q.snapshots.orderBy("id").toArray(),n=c[l],{index:o,slides:a}=n,r=o>a.length-1?a.length-1:o;e.setSlides(a),e.updateSlideIndex(r),this.setSnapshotCursor(l),t.setActiveElementIdList([])}}}),G=Object(o["b"])("keyboard",{state:()=>({ctrlKeyState:!1,shiftKeyState:!1,spaceKeyState:!1}),getters:{ctrlOrShiftKeyActive(e){return e.ctrlKeyState||e.shiftKeyState}},actions:{setCtrlKeyState(e){this.ctrlKeyState=e},setShiftKeyState(e){this.shiftKeyState=e},setSpaceKeyState(e){this.spaceKeyState=e}}}),X=Object(o["b"])("screen",{state:()=>({screening:!1}),actions:{setScreening(e){this.screening=e}}}),Y=(e,t)=>Object(S["padStart"])(""+e,t,"0"),Z=()=>!navigator.userAgent.match(/(iPhone|iPod|iPad|Android|Mobile|BlackBerry|Symbian|Windows Phone)/i);l("cd17");var W,J,K,Q,ee,te,le=l("ed3b");(function(e){e["UP"]="up",e["DOWN"]="down",e["TOP"]="top",e["BOTTOM"]="bottom"})(W||(W={})),function(e){e["TOP"]="top",e["BOTTOM"]="bottom",e["LEFT"]="left",e["RIGHT"]="right",e["VERTICAL"]="vertical",e["HORIZONTAL"]="horizontal",e["CENTER"]="center"}(J||(J={})),function(e){e["T"]="top",e["B"]="bottom",e["L"]="left",e["R"]="right"}(K||(K={})),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"}(Q||(Q={})),function(e){e["START"]="start",e["END"]="end",e["C"]="ctrl",e["C1"]="ctrl1",e["C2"]="ctrl2"}(ee||(ee={})),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"}(te||(te={}));const ce=[{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"}]},{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"}]}];l("3b18");var ne=l("f64c"),oe=l("b311"),ae=l.n(oe),re=l("3452"),ie=l.n(re);const se="pptist",de=e=>ie.a.AES.encrypt(e,se).toString(),ue=e=>{const t=ie.a.AES.decrypt(e,se);return t.toString(ie.a.enc.Utf8)},be=e=>new Promise((t,l)=>{const c=document.createElement("button"),n=new ae.a(c,{text:()=>e,action:()=>"copy",container:document.body});n.on("success",e=>{n.destroy(),t(e)}),n.on("error",e=>{n.destroy(),l(e)}),document.body.appendChild(c),c.click(),document.body.removeChild(c)}),Oe=()=>new Promise((e,t)=>{var l;null!==(l=navigator.clipboard)&&void 0!==l&&l.readText?navigator.clipboard.readText().then(l=>(l||t("剪贴板为空或者不包含文本"),e(l))):t("浏览器不支持或禁止访问剪贴板,请使用快捷键 Ctrl + V")}),me=e=>{let t;try{t=JSON.parse(ue(e))}catch{t=e}return t},pe=e=>{const t=e.split("\r\n");""===t[t.length-1]&&t.pop();let l=-1;const c=[];for(const n in t){if(c[n]=t[n].split("\t"),1===c[n].length)return null;if(-1===l)l=c[n].length;else if(l!==c[n].length)return null}return c},fe=e=>{const{left:t,top:l,width:c,height:n,rotate:o=0}=e,a=Math.sqrt(Math.pow(c,2)+Math.pow(n,2))/2,r=180*Math.atan(n/c)/Math.PI,i=(180-o-r)*Math.PI/180,s=(r-o)*Math.PI/180,d=t+c/2,u=l+n/2,b=[d+a*Math.cos(i),d+a*Math.cos(s),d-a*Math.cos(i),d-a*Math.cos(s)],O=[u-a*Math.sin(i),u-a*Math.sin(s),u+a*Math.sin(i),u+a*Math.sin(s)];return{xRange:[Math.min(...b),Math.max(...b)],yRange:[Math.min(...O),Math.max(...O)]}},je=e=>{const{xRange:t,yRange:l}=fe({left:e.left,top:e.top,width:e.width,height:e.height,rotate:0}),{xRange:c,yRange:n}=fe({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate});return{offsetX:c[0]-t[0],offsetY:n[0]-l[0]}},ve=e=>{let t,l,c,n;if("line"===e.type)t=e.left,l=e.left+Math.max(e.start[0],e.end[0]),c=e.top,n=e.top+Math.max(e.start[1],e.end[1]);else if("rotate"in e&&e.rotate){const{left:o,top:a,width:r,height:i,rotate:s}=e,{xRange:d,yRange:u}=fe({left:o,top:a,width:r,height:i,rotate:s});t=d[0],l=d[1],c=u[0],n=u[1]}else t=e.left,l=e.left+e.width,c=e.top,n=e.top+e.height;return{minX:t,maxX:l,minY:c,maxY:n}},he=e=>{const t=[],l=[],c=[],n=[];e.forEach(e=>{const{minX:o,maxX:a,minY:r,maxY:i}=ve(e);t.push(o),l.push(r),c.push(a),n.push(i)});const o=Math.min(...t),a=Math.max(...c),r=Math.min(...l),i=Math.max(...n);return{minX:o,maxX:a,minY:r,maxY:i}},ye=e=>{const t=[];return e.forEach(e=>{const l=t.findIndex(t=>t.value===e.value);if(-1===l)t.push(e);else{const c=t[l],n=Math.min(c.range[0],e.range[0]),o=Math.max(c.range[1],e.range[1]),a=[n,o],r={value:e.value,range:a};t[l]=r}}),t},ge=e=>{const t={};for(const l of e)t[l.id]=Object(a["b"])(10);return t},xe=e=>{const t={},l={};for(const c of e){const e=c.groupId;e&&!t[e]&&(t[e]=Object(a["b"])(10)),l[c.id]=Object(a["b"])(10)}return{groupIdMap:t,elIdMap:l}},ke=e=>{const t=I()(e);return[t.setAlpha(.3).toRgbString(),t.setAlpha(.1).toRgbString()]},Ce=e=>{const t=e.start.join(","),l=e.end.join(",");if(e.broken){const c=e.broken.join(",");return`M${t} L${c} L${l}`}if(e.curve){const c=e.curve.join(",");return`M${t} Q${c} ${l}`}if(e.cubic){const[c,n]=e.cubic,o=c.join(","),a=n.join(",");return`M${t} C${o} ${a} ${l}`}return`M${t} L${l}`},Ne=e=>{const t=e.replace(/[\n\r]+/g,"
"),l=t.split("
");let c="";for(const n of l)n&&(c+=`
${n}
`);return c},Ee=e=>new Promise(t=>{const l=document.createElement("img");l.src=e,l.style.opacity="0",document.body.appendChild(l),l.onload=()=>{const e=l.clientWidth,c=l.clientHeight;l.onload=null,l.onerror=null,document.body.removeChild(l),t({width:e,height:c})},l.onerror=()=>{l.onload=null,l.onerror=null}}),we=e=>new Promise(t=>{const l=new FileReader;l.addEventListener("load",()=>{t(l.result)}),l.readAsDataURL(e)}),Ve=1e3;var Ie,Se;(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["CUT_ROUND_RECT"]="cutRoundRect",e["MESSAGE"]="message",e["ROUND_MESSAGE"]="roundMessage",e["L"]="L",e["RING_RECT"]="ringRect",e["PLUS"]="plus",e["TRIANGLE"]="triangle",e["PARALLELOGRAM_LEFT"]="parallelogramLeft",e["PARALLELOGRAM_RIGHT"]="parallelogramRight",e["TRAPEZOID"]="trapezoid",e["BULLET"]="bullet",e["INDICATOR"]="indicator"})(Ie||(Ie={})),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"}(Se||(Se={}));const Le={[Ie.ROUND_RECT]:{editable:!0,defaultValue:.125,range:[0,.5],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const c=Math.min(e,t)*l;return`M ${c} 0 L ${e-c} 0 Q ${e} 0 ${e} ${c} L ${e} ${t-c} Q ${e} ${t} ${e-c} ${t} L ${c} ${t} Q 0 ${t} 0 ${t-c} L 0 ${c} Q 0 0 ${c} 0 Z`}},[Ie.CUT_RECT_DIAGONAL]:{editable:!0,defaultValue:.2,range:[0,.9],relative:"right",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const c=Math.min(e,t)*l;return`M 0 ${t-c} L 0 0 L ${e-c} 0 L ${e} ${c} L ${e} ${t} L ${c} ${t} Z`}},[Ie.CUT_RECT_SINGLE]:{editable:!0,defaultValue:.2,range:[0,.9],relative:"right",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const c=Math.min(e,t)*l;return`M 0 ${t} L 0 0 L ${e-c} 0 L ${e} ${c} L ${e} ${t} Z`}},[Ie.CUT_RECT_SAMESIDE]:{editable:!0,defaultValue:.2,range:[0,.5],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const c=Math.min(e,t)*l;return`M 0 ${c} L ${c} 0 L ${e-c} 0 L ${e} ${c} L ${e} ${t} L 0 ${t} Z`}},[Ie.ROUND_RECT_DIAGONAL]:{editable:!0,defaultValue:.125,range:[0,1],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const c=Math.min(e,t)*l;return`M ${c} 0 L ${e} 0 L ${e} ${t-c} Q ${e} ${t} ${e-c} ${t} L 0 ${t} L 0 ${c} Q 0 0 ${c} 0 Z`}},[Ie.ROUND_RECT_SINGLE]:{editable:!0,defaultValue:.125,range:[0,1],relative:"right",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const c=Math.min(e,t)*l;return`M 0 0 L ${e-c} 0 Q ${e} 0 ${e} ${c} L ${e} ${t} L 0 ${t} L 0 0 Z`}},[Ie.ROUND_RECT_SAMESIDE]:{editable:!0,defaultValue:.125,range:[0,.5],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const c=Math.min(e,t)*l;return`M 0 ${c} Q 0 0 ${c} 0 L ${e-c} 0 Q ${e} 0 ${e} ${c} L ${e} ${t} L 0 ${t} Z`}},[Ie.CUT_ROUND_RECT]:{editable:!0,defaultValue:.125,range:[0,.5],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const c=Math.min(e,t)*l;return`M ${c} 0 L ${e-c} 0 L ${e} ${c} L ${e} ${t} L 0 ${t} L 0 ${c} Q 0 0 ${c} 0 Z`}},[Ie.MESSAGE]:{formula:(e,t)=>{const l=.2*e,c=.2*t;return`M 0 0 L ${e} 0 L ${e} ${t-c} L ${e/2} ${t-c} L ${e/2-l} ${t} L ${e/2-l} ${t-c} L 0 ${t-c} Z`}},[Ie.ROUND_MESSAGE]:{formula:(e,t)=>{const l=.125*Math.min(e,t),c=.2*e,n=.2*t;return`M 0 ${l} Q 0 0 ${l} 0 L ${e-l} 0 Q ${e} 0 ${e} ${l} L ${e} ${t-l-n} Q ${e} ${t-n} ${e-l} ${t-n} L ${e/2} ${t-n} L ${e/2-c} ${t} L ${e/2-c} ${t-n} L ${l} ${t-n} Q 0 ${t-n} 0 ${t-l-n} L 0 ${l} Z`}},[Ie.L]:{editable:!0,defaultValue:.25,range:[.1,.9],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const c=Math.min(e,t)*l;return`M 0 0 L 0 ${t} L ${e} ${t} L ${e} ${t-c} L ${c} ${t-c} L ${c} 0 Z`}},[Ie.RING_RECT]:{editable:!0,defaultValue:.25,range:[.1,.45],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const c=Math.min(e,t)*l;return`M 0 0 ${e} 0 ${e} ${t} L 0 ${t} L 0 0 Z M ${c} ${c} L ${c} ${t-c} L ${e-c} ${t-c} L ${e-c} ${c} Z`}},[Ie.PLUS]:{editable:!0,defaultValue:.25,range:[.1,.9],relative:"center",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const c=Math.min(e,t)*l;return`M ${e/2-c/2} 0 L ${e/2-c/2} ${t/2-c/2} L 0 ${t/2-c/2} L 0 ${t/2+c/2} L ${e/2-c/2} ${t/2+c/2} L ${e/2-c/2} ${t} L ${e/2+c/2} ${t} L ${e/2+c/2} ${t/2+c/2} L ${e} ${t/2+c/2} L ${e} ${t/2-c/2} L ${e/2+c/2} ${t/2-c/2} L ${e/2+c/2} 0 Z`}},[Ie.TRIANGLE]:{editable:!0,defaultValue:.5,range:[0,1],relative:"left",getBaseSize:(e,t)=>e,formula:(e,t,l)=>{const c=e*l;return`M ${c} 0 L 0 ${t} L ${e} ${t} Z`}},[Ie.PARALLELOGRAM_LEFT]:{editable:!0,defaultValue:.25,range:[0,.9],relative:"left",getBaseSize:(e,t)=>e,formula:(e,t,l)=>{const c=e*l;return`M ${c} 0 L ${e} 0 L ${e-c} ${t} L 0 ${t} Z`}},[Ie.PARALLELOGRAM_RIGHT]:{editable:!0,defaultValue:.25,range:[0,.9],relative:"right",getBaseSize:(e,t)=>e,formula:(e,t,l)=>{const c=e*l;return`M 0 0 L ${e-c} 0 L ${e} ${t} L ${c} ${t} Z`}},[Ie.TRAPEZOID]:{editable:!0,defaultValue:.25,range:[0,.5],relative:"left",getBaseSize:(e,t)=>e,formula:(e,t,l)=>{const c=e*l;return`M ${c} 0 L ${e-c} 0 L ${e} ${t} L 0 ${t} Z`}},[Ie.BULLET]:{editable:!0,defaultValue:.2,range:[0,1],relative:"top",getBaseSize:(e,t)=>t,formula:(e,t,l)=>{const c=t*l;return`M ${e/2} 0 L 0 ${c} L 0 ${t} L ${e} ${t} L ${e} ${c} Z`}},[Ie.INDICATOR]:{editable:!0,defaultValue:.2,range:[0,.9],relative:"right",getBaseSize:(e,t)=>e,formula:(e,t,l)=>{const c=e*l;return`M ${e} ${t/2} L ${e-c} 0 L 0 0 L ${c} ${t/2} L 0 ${t} L ${e-c} ${t} Z`}}},Be=[{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:Ie.ROUND_RECT},{viewBox:[200,200],path:"M 0 200 L 0 0 L 150 0 L 200 50 L 200 200 Z",pathFormula:Ie.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:Ie.CUT_RECT_SAMESIDE},{viewBox:[200,200],path:"M 0 150 L 0 0 L 150 0 L 200 50 L 200 200 L 50 200 Z",pathFormula:Ie.CUT_RECT_DIAGONAL},{viewBox:[200,200],path:"M 50 0 L 150 0 L 200 50 L 200 200 L 0 200 L 0 50 Q 0 0 50 0 Z",pathFormula:Ie.CUT_ROUND_RECT},{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:Ie.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:Ie.ROUND_RECT_SAMESIDE},{viewBox:[200,200],path:"M 50 0 L 200 0 L 200 150 Q 200 200 150 200 L 0 200 L 0 50 Q 0 0 50 0 Z",pathFormula:Ie.ROUND_RECT_DIAGONAL}]},{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 100 0 L 0 200 L 200 200 L 100 0 Z",pathFormula:Ie.TRIANGLE},{viewBox:[200,200],path:"M 0 0 L 0 200 L 200 200 Z"},{viewBox:[200,200],path:"M 70 20 L 0 160 Q 0 200 40 200 L 160 200 Q 200 200 200 160 L 130 20 Q 100 -20 70 20 Z"},{viewBox:[200,200],path:"M 50 0 L 200 0 L 150 200 L 0 200 L 50 0 Z",pathFormula:Ie.PARALLELOGRAM_LEFT},{viewBox:[200,200],path:"M 0 0 L 150 0 L 200 200 L 50 200 L 0 0 Z",pathFormula:Ie.PARALLELOGRAM_RIGHT},{viewBox:[200,200],path:"M 50 0 L 150 0 L 200 200 L 0 200 L 50 0 Z",pathFormula:Ie.TRAPEZOID},{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 50 L 0 200 L 200 200 L 200 50 L 100 0 Z",pathFormula:Ie.BULLET},{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",pathFormula:Ie.INDICATOR},{viewBox:[200,200],path:"M 0 0 C 80 20 120 20 200 0 C 180 80 180 120 200 200 C 80 180 120 180 0 200 C 20 120 20 80 0 0 Z"},{viewBox:[200,200],path:"M 10 10 C 60 0 140 0 190 10 C 200 60 200 140 190 190 C 140 200 60 200 10 190 C 0 140 0 60 10 10 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 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 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 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:Ie.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:Ie.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:Ie.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:Ie.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:Ie.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 120 80 L 200 100 L 120 120 L 100 200 L 80 120 L 0 100 L 80 80 L 100 0 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 140 60 L 200 60 L 160 100 L 200 140 L 140 140 L 100 200 L 60 140 L 0 140 L 40 100 L 0 60 L 60 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"},{viewBox:[200,200],path:"M 200 0 C 80 40 80 160 200 200 C -60 200 -60 0 200 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}]}],_e={bar:"bar",horizontalBar:"bar",line:"line",area:"line",scatter:"line",pie:"pie",ring:"pie"};var Te=()=>{const e=U(),t=Object(S["debounce"])((function(){e.addSnapshot()}),300,{trailing:!0}),l=Object(S["throttle"])((function(){e.reDo()}),100,{leading:!0,trailing:!1}),c=Object(S["throttle"])((function(){e.unDo()}),100,{leading:!0,trailing:!1});return{addHistorySnapshot:t,redo:l,undo:c}},Me=()=>{const e=z(),t=T(),{creatingElement:l}=Object(o["c"])(e),{theme:c,viewportRatio:n}=Object(o["c"])(t),{addHistorySnapshot:r}=Te(),i=(c,n)=>{t.addElement(c),e.setActiveElementIdList([c.id]),l.value&&e.setCreatingElement(null),setTimeout(()=>{e.setEditorareaFocus(!0)},0),n&&n(),r()},s=e=>{Ee(e).then(({width:t,height:l})=>{const c=l/t;cVe?(t=Ve,l=t*c):l>Ve*n.value&&(l=Ve*n.value,t=l/c),i({type:"image",id:Object(a["b"])(10),src:e,width:t,height:l,left:(Ve-t)/2,top:(Ve*n.value-l)/2,fixedRatio:!0,rotate:0})})},d=e=>{const t={type:"chart",id:Object(a["b"])(10),chartType:_e[e],left:300,top:81.25,width:400,height:400,rotate:0,themeColor:[c.value.themeColor],gridColor:c.value.fontColor,data:{labels:["类别1","类别2","类别3","类别4","类别5"],legends:["系列1"],series:[[12,19,5,2,18]]}};let l={};"horizontalBar"===e?l={horizontalBars:!0}:"area"===e?l={showArea:!0}:"scatter"===e?l={showLine:!1}:"ring"===e&&(l={donut:!0}),i({...t,options:l})},u=(e,t)=>{const l={fontname:c.value.fontName,color:c.value.fontColor},o=[];for(let c=0;c{const{left:l,top:n,width:o,height:r}=e,s=(null===t||void 0===t?void 0:t.content)||"",d=(null===t||void 0===t?void 0:t.vertical)||!1,u=Object(a["b"])(10);i({type:"text",id:u,left:l,top:n,width:o,height:r,content:s,rotate:0,defaultFontName:c.value.fontName,defaultColor:c.value.fontColor,vertical:d},()=>{setTimeout(()=>{const e=document.querySelector(`#editable-element-${u} .ProseMirror`);e&&e.focus()},0)})},O=(e,t)=>{const{left:l,top:n,width:o,height:r}=e,s={type:"shape",id:Object(a["b"])(10),left:l,top:n,width:o,height:r,viewBox:t.viewBox,path:t.path,fill:c.value.themeColor,fixedRatio:!1,rotate:0};if(t.special&&(s.special=!0),t.pathFormula){s.pathFormula=t.pathFormula,s.viewBox=[o,r];const e=Le[t.pathFormula];"editable"in e?(s.path=e.formula(o,r,e.defaultValue),s.keypoint=e.defaultValue):s.path=e.formula(o,r)}i(s)},m=(e,t)=>{const{left:l,top:n,start:o,end:r}=e,s={type:"line",id:Object(a["b"])(10),left:l,top:n,start:o,end:r,points:t.points,color:c.value.themeColor,style:t.style,width:2};t.isBroken&&(s.broken=[(o[0]+r[0])/2,(o[1]+r[1])/2]),t.isCurve&&(s.curve=[(o[0]+r[0])/2,(o[1]+r[1])/2]),t.isCubic&&(s.cubic=[[(o[0]+r[0])/2,(o[1]+r[1])/2],[(o[0]+r[0])/2,(o[1]+r[1])/2]]),i(s)},p=e=>{i({type:"latex",id:Object(a["b"])(10),width:e.w,height:e.h,rotate:0,left:(Ve-e.w)/2,top:(Ve*n.value-e.h)/2,path:e.path,latex:e.latex,color:c.value.fontColor,strokeWidth:2,viewBox:[e.w,e.h],fixedRatio:!0})},f=e=>{i({type:"video",id:Object(a["b"])(10),width:500,height:300,rotate:0,left:(Ve-500)/2,top:(Ve*n.value-300)/2,src:e})},j=e=>{i({type:"audio",id:Object(a["b"])(10),width:50,height:50,rotate:0,left:(Ve-50)/2,top:(Ve*n.value-50)/2,loop:!1,autoplay:!1,fixedRatio:!0,color:c.value.themeColor,src:e})};return{createImageElement:s,createChartElement:d,createTableElement:u,createTextElement:b,createShapeElement:O,createLineElement:m,createLatexElement:p,createVideoElement:f,createAudioElement:j}},De=()=>{const e=z(),t=T(),{currentSlide:l}=Object(o["c"])(t),{addHistorySnapshot:c}=Te(),n=n=>{const{groupIdMap:o,elIdMap:a}=xe(n),r=l.value.elements.map(e=>e.id);for(const e of n){const t=r.includes(e.id);e.id=a[e.id],t&&(e.left=e.left+10,e.top=e.top+10),e.groupId&&(e.groupId=o[e.groupId])}t.addElement(n),e.setActiveElementIdList(Object.values(a)),c()},r=e=>{const l=ge(e),n=e.map(e=>{const{groupIdMap:t,elIdMap:c}=xe(e.elements);for(const n of e.elements)n.id=c[n.id],n.groupId&&(n.groupId=t[n.groupId]),n.link&&"slide"===n.link.type&&(l[n.link.target]?n.link.target=l[n.link.target]:delete n.link);if(e.animations)for(const l of e.animations)l.id=Object(a["b"])(10),l.elId=c[l.elId];return{...e,id:l[e.id]}});t.addSlide(n),c()};return{addElementsFromData:n,addSlidesFromData:r}},ze=()=>{const{createTextElement:e}=Me(),{addElementsFromData:t,addSlidesFromData:l}=De(),c=t=>{e({left:0,top:0,width:600,height:50},{content:t})},n=(e,n)=>{const o=(null===n||void 0===n?void 0:n.onlySlide)||!1,a=(null===n||void 0===n?void 0:n.onlyElements)||!1,r=me(e);if("object"===typeof r){const{type:e,data:c}=r;"elements"!==e||o?"slides"!==e||a||l(c):t(c)}else if(!a&&!o){const e=Ne(r);c(e)}};return{pasteTextClipboardData:n}},Fe=()=>{const e=z(),t=T(),{selectedSlidesIndex:l,activeElementIdList:c}=Object(o["c"])(e),{currentSlide:r,slides:i,theme:s,slideIndex:d}=Object(o["c"])(t),u=Object(n["computed"])(()=>[...l.value,d.value]),b=Object(n["computed"])(()=>i.value.filter((e,t)=>u.value.includes(t))),O=Object(n["computed"])(()=>b.value.map(e=>e.id)),{pasteTextClipboardData:m}=ze(),{addSlidesFromData:p}=De(),{addHistorySnapshot:f}=Te(),j=()=>{const l={id:Object(a["b"])(10),elements:[],background:{type:"solid",color:s.value.backgroundColor}};t.updateSlideIndex(0),e.setActiveElementIdList([]),t.setSlides([l])},v=l=>{l===te.UP&&d.value>0?(c.value.length&&e.setActiveElementIdList([]),t.updateSlideIndex(d.value-1)):l===te.DOWN&&d.value{const t=de(JSON.stringify({type:"slides",data:b.value}));be(t).then(()=>{e.setThumbnailsFocus(!0)})},y=()=>{Oe().then(e=>{m(e,{onlySlide:!0})}).catch(e=>ne["a"].warning(e))},g=()=>{const l={id:Object(a["b"])(10),elements:[],background:{type:"solid",color:s.value.backgroundColor}};e.setActiveElementIdList([]),t.addSlide(l),f()},x=l=>{const{groupIdMap:c,elIdMap:n}=xe(l.elements);for(const e of l.elements)e.id=n[e.id],e.groupId&&(e.groupId=c[e.groupId]);const o={...l,id:Object(a["b"])(10)};e.setActiveElementIdList([]),t.addSlide(o),f()},k=()=>{const e=JSON.parse(JSON.stringify(r.value));p([e])},C=(l=O.value)=>{i.value.length===l.length?j():t.deleteSlide(l),e.updateSelectedSlidesIndex([]),f()},N=()=>{const e=[...O.value];h(),C(e)},E=()=>{const t=Array.from(Array(i.value.length),(e,t)=>t);e.setActiveElementIdList([]),e.updateSelectedSlidesIndex(t)},w=(e,l)=>{if(l===e)return;const c=JSON.parse(JSON.stringify(i.value)),n=c[l];c.splice(l,1),c.splice(e,0,n),t.setSlides(c),t.updateSlideIndex(e)};return{resetSlides:j,updateSlideIndex:v,copySlide:h,pasteSlide:y,createSlide:g,createSlideByTemplate:x,copyAndPasteSlide:k,deleteSlide:C,cutSlide:N,selectAllSlide:E,sortSlides:w}},Ae=()=>{const e=z(),t=T(),{activeElementIdList:l}=Object(o["c"])(e),{currentSlide:c}=Object(o["c"])(t),{addHistorySnapshot:n}=Te(),a=()=>{const o=JSON.parse(JSON.stringify(c.value.elements));for(const e of o)l.value.includes(e.id)&&(e.lock=!0);t.updateSlide({elements:o}),e.setActiveElementIdList([]),n()},r=l=>{const o=JSON.parse(JSON.stringify(c.value.elements));if(l.groupId){const c=[];for(const e of o)e.groupId===l.groupId&&(e.lock=!1,c.push(e.id));t.updateSlide({elements:o}),e.setActiveElementIdList(c)}else{for(const e of o)if(e.id===l.id){e.lock=!1;break}t.updateSlide({elements:o}),e.setActiveElementIdList([l.id])}n()};return{lockElement:a,unlockElement:r}},$e=()=>{const e=z(),t=T(),{activeElementIdList:l,activeGroupElementId:c}=Object(o["c"])(e),{currentSlide:n}=Object(o["c"])(t),{addHistorySnapshot:a}=Te(),r=()=>{if(!l.value.length)return;let o=[];o=c.value?n.value.elements.filter(e=>e.id!==c.value):n.value.elements.filter(e=>!l.value.includes(e.id)),e.setActiveElementIdList([]),t.updateSlide({elements:o}),a()},i=()=>{n.value.elements.length&&(e.setActiveElementIdList([]),t.updateSlide({elements:[]}),a())};return{deleteElement:r,deleteAllElements:i}},Re=()=>{const e=z(),t=T(),{activeElementIdList:l,activeElementList:c,handleElementId:r}=Object(o["c"])(e),{currentSlide:i}=Object(o["c"])(t),{addHistorySnapshot:s}=Te(),d=Object(n["computed"])(()=>{if(c.value.length<2)return!1;const e=c.value[0].groupId;if(!e)return!0;const t=c.value.every(t=>(t.groupId&&t.groupId)===e);return!t}),u=()=>{if(!c.value.length)return;let e=JSON.parse(JSON.stringify(i.value.elements));const n=Object(a["b"])(10),o=[];for(const t of e)l.value.includes(t.id)&&(t.groupId=n,o.push(t));const r=e.findIndex(e=>e.id===o[o.length-1].id),d=o.map(e=>e.id);e=e.filter(e=>!d.includes(e.id));const u=r-o.length+1;e.splice(u,0,...o),t.updateSlide({elements:e}),s()},b=()=>{if(!c.value.length)return;const n=c.value.some(e=>e.groupId);if(!n)return;const o=JSON.parse(JSON.stringify(i.value.elements));for(const e of o)l.value.includes(e.id)&&e.groupId&&delete e.groupId;t.updateSlide({elements:o});const a=r.value?[r.value]:[];e.setActiveElementIdList(a),s()};return{canCombine:d,combineElements:u,uncombineElements:b}},Pe=()=>{const e=z(),{activeElementIdList:t,activeElementList:l}=Object(o["c"])(e),{pasteTextClipboardData:c}=ze(),{deleteElement:n}=$e(),a=()=>{if(!t.value.length)return;const c=de(JSON.stringify({type:"elements",data:l.value}));be(c).then(()=>{e.setEditorareaFocus(!0)})},r=()=>{a(),n()},i=()=>{Oe().then(e=>{c(e)}).catch(e=>ne["a"].warning(e))},s=()=>{a(),i()};return{copyElement:a,cutElement:r,pasteElement:i,quickCopyElement:s}},He=()=>{const e=z(),{currentSlide:t}=Object(o["c"])(T()),{hiddenElementIdList:l}=Object(o["c"])(e),c=()=>{const c=t.value.elements.filter(e=>!e.lock&&!l.value.includes(e.id)),n=c.map(e=>e.id);e.setActiveElementIdList(n)};return{selectAllElement:c}},qe=()=>{const e=T(),{activeElementIdList:t,activeGroupElementId:l}=Object(o["c"])(z()),{currentSlide:c}=Object(o["c"])(e),{addHistorySnapshot:n}=Te(),a=(o,a=1)=>{let r=[];const i=e=>{let{left:t,top:l}=e;switch(o){case te.LEFT:t-=a;break;case te.RIGHT:t+=a;break;case te.UP:l-=a;break;case te.DOWN:l+=a;break;default:break}return{...e,left:t,top:l}};r=l.value?c.value.elements.map(e=>l.value===e.id?i(e):e):c.value.elements.map(e=>t.value.includes(e.id)?i(e):e),e.updateSlide({elements:r}),n()};return{moveElement:a}},Ue=()=>{const e=T(),{currentSlide:t}=Object(o["c"])(e),{addHistorySnapshot:l}=Te(),c=(e,t)=>({minLevel:e.findIndex(e=>e.id===t[0].id),maxLevel:e.findIndex(e=>e.id===t[t.length-1].id)}),n=(e,t)=>{const l=JSON.parse(JSON.stringify(e));if(t.groupId){const n=l.filter(e=>e.groupId===t.groupId),{minLevel:o,maxLevel:a}=c(e,n);if(a===e.length-1)return;const r=l[a+1],i=l.splice(o,n.length);if(r.groupId){const e=l.filter(e=>e.groupId===r.groupId);l.splice(o+e.length,0,...i)}else l.splice(o+1,0,...i)}else{const c=e.findIndex(e=>e.id===t.id);if(c===e.length-1)return;const n=l[c+1],o=l.splice(c,1)[0];if(n.groupId){const e=l.filter(e=>e.groupId===n.groupId);l.splice(c+e.length,0,o)}else l.splice(c+1,0,o)}return l},a=(e,t)=>{const l=JSON.parse(JSON.stringify(e));if(t.groupId){const n=l.filter(e=>e.groupId===t.groupId),{minLevel:o}=c(e,n);if(0===o)return;const a=l[o-1],r=l.splice(o,n.length);if(a.groupId){const e=l.filter(e=>e.groupId===a.groupId);l.splice(o-e.length,0,...r)}else l.splice(o-1,0,...r)}else{const c=e.findIndex(e=>e.id===t.id);if(0===c)return;const n=l[c-1],o=l.splice(c,1)[0];if(n.groupId){const e=l.filter(e=>e.groupId===n.groupId);l.splice(c-e.length,0,o)}else l.splice(c-1,0,o)}return l},r=(e,t)=>{const l=JSON.parse(JSON.stringify(e));if(t.groupId){const n=l.filter(e=>e.groupId===t.groupId),{minLevel:o,maxLevel:a}=c(e,n);if(a===e.length-1)return null;const r=l.splice(o,n.length);l.push(...r)}else{const c=e.findIndex(e=>e.id===t.id);if(c===e.length-1)return null;l.splice(c,1),l.push(t)}return l},i=(e,t)=>{const l=JSON.parse(JSON.stringify(e));if(t.groupId){const n=l.filter(e=>e.groupId===t.groupId),{minLevel:o}=c(e,n);if(0===o)return;const a=l.splice(o,n.length);l.unshift(...a)}else{const c=e.findIndex(e=>e.id===t.id);if(0===c)return;l.splice(c,1),l.unshift(t)}return l},s=(c,o)=>{let s;o===W.UP?s=n(t.value.elements,c):o===W.DOWN?s=a(t.value.elements,c):o===W.TOP?s=r(t.value.elements,c):o===W.BOTTOM&&(s=i(t.value.elements,c)),s&&(e.updateSlide({elements:s}),l())};return{orderElement:s}};const Ge=()=>{const e=document.documentElement;e.requestFullscreen?e.requestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullScreen?e.webkitRequestFullScreen():e.msRequestFullscreen&&e.msRequestFullscreen()},Xe=()=>{document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.msExitFullscreen&&document.msExitFullscreen()},Ye=()=>{const e=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement||document.webkitCurrentFullScreenElement;return!!e};var Ze=()=>{const e=X(),t=T(),l=()=>{Ge(),e.setScreening(!0)},c=()=>{t.updateSlideIndex(0),l()},n=()=>{e.setScreening(!1),Ye()&&Xe()};return{enterScreening:l,enterScreeningFromStart:c,exitScreening:n}},We=()=>{const e=z(),{canvasPercentage:t,canvasScale:l,canvasDragged:c}=Object(o["c"])(e),a=Object(n["computed"])(()=>Math.round(100*l.value)+"%"),r=l=>{let c=t.value;const n=5,o=200,a=30;"+"===l&&c<=o&&(c+=n),"-"===l&&c>=a&&(c-=n),e.setCanvasPercentage(c)},i=c=>{const n=Math.round(c/l.value*t.value)/100;e.setCanvasPercentage(n)},s=()=>{e.setCanvasPercentage(90),c&&e.setCanvasDragged(!1)};return{canvasScalePercentage:a,setCanvasScalePercentage:i,scaleCanvas:r,resetCanvas:s}},Je=()=>{const e=z(),t=G(),{activeElementIdList:l,disableHotkeys:c,handleElement:a,handleElementId:r,editorAreaFocus:i,thumbnailsFocus:s}=Object(o["c"])(e),{currentSlide:d}=Object(o["c"])(T()),{ctrlKeyState:u,shiftKeyState:b,spaceKeyState:O}=Object(o["c"])(t),{updateSlideIndex:m,copySlide:p,createSlide:f,deleteSlide:j,cutSlide:v,copyAndPasteSlide:h,selectAllSlide:y}=Fe(),{combineElements:g,uncombineElements:x}=Re(),{deleteElement:k}=$e(),{lockElement:C}=Ae(),{copyElement:N,cutElement:E,quickCopyElement:w}=Pe(),{selectAllElement:V}=He(),{moveElement:I}=qe(),{orderElement:S}=Ue(),{redo:L,undo:B}=Te(),{enterScreening:_,enterScreeningFromStart:M}=Ze(),{scaleCanvas:D,resetCanvas:F}=We(),A=()=>{l.value.length?N():s.value&&p()},$=()=>{l.value.length?E():s.value&&v()},R=()=>{l.value.length?w():s.value&&h()},P=()=>{i.value&&V(),s.value&&y()},H=()=>{i.value&&C()},q=()=>{i.value&&g()},U=()=>{i.value&&x()},X=()=>{l.value.length?k():s.value&&j()},Y=e=>{l.value.length?I(e):e!==te.UP&&e!==te.DOWN||m(e)},Z=e=>{e===te.PAGEUP?m(te.UP):e===te.PAGEDOWN&&m(te.DOWN)},J=e=>{a.value&&S(a.value,e)},K=()=>{s.value&&f()},Q=()=>{if(!d.value.elements.length)return;if(!r.value){const t=d.value.elements[0];return void e.setActiveElementIdList([t.id])}const t=d.value.elements.findIndex(e=>e.id===r.value),l=t>=d.value.elements.length-1?0:t+1,c=d.value.elements[l].id;e.setActiveElementIdList([c])},ee=l=>{const{ctrlKey:n,shiftKey:o,altKey:a,metaKey:r}=l,d=n||r,O=l.key.toUpperCase();if(d&&!u.value&&t.setCtrlKeyState(!0),o&&!b.value&&t.setShiftKeyState(!0),c.value||O!==te.SPACE||t.setSpaceKeyState(!0),d&&O===te.P)return l.preventDefault(),void e.setDialogForExport("pdf");if(o&&O===te.F5)return l.preventDefault(),_(),void t.setShiftKeyState(!1);if(O===te.F5)return l.preventDefault(),void M();if(i.value||s.value){if(d&&O===te.C){if(c.value)return;l.preventDefault(),A()}if(d&&O===te.X){if(c.value)return;l.preventDefault(),$()}if(d&&O===te.D){if(c.value)return;l.preventDefault(),R()}if(d&&O===te.Z){if(c.value)return;l.preventDefault(),B()}if(d&&O===te.Y){if(c.value)return;l.preventDefault(),L()}if(d&&O===te.A){if(c.value)return;l.preventDefault(),P()}if(d&&O===te.L){if(c.value)return;l.preventDefault(),H()}if(!o&&d&&O===te.G){if(c.value)return;l.preventDefault(),q()}if(o&&d&&O===te.G){if(c.value)return;l.preventDefault(),U()}if(a&&O===te.F){if(c.value)return;l.preventDefault(),J(W.TOP)}if(a&&O===te.B){if(c.value)return;l.preventDefault(),J(W.BOTTOM)}if(O===te.DELETE||O===te.BACKSPACE){if(c.value)return;l.preventDefault(),X()}if(O===te.UP){if(c.value)return;l.preventDefault(),Y(te.UP)}if(O===te.DOWN){if(c.value)return;l.preventDefault(),Y(te.DOWN)}if(O===te.LEFT){if(c.value)return;l.preventDefault(),Y(te.LEFT)}if(O===te.RIGHT){if(c.value)return;l.preventDefault(),Y(te.RIGHT)}if(O===te.PAGEUP){if(c.value)return;l.preventDefault(),Z(te.PAGEUP)}if(O===te.PAGEDOWN){if(c.value)return;l.preventDefault(),Z(te.PAGEDOWN)}if(O===te.ENTER){if(c.value)return;l.preventDefault(),K()}if(O===te.MINUS){if(c.value)return;l.preventDefault(),D("-")}if(O===te.EQUAL){if(c.value)return;l.preventDefault(),D("+")}if(O===te.DIGIT_0){if(c.value)return;l.preventDefault(),F()}if(O===te.TAB){if(c.value)return;l.preventDefault(),Q()}}},le=()=>{u.value&&t.setCtrlKeyState(!1),b.value&&t.setShiftKeyState(!1),O.value&&t.setSpaceKeyState(!1)};Object(n["onMounted"])(()=>{document.addEventListener("keydown",ee),document.addEventListener("keyup",le),window.addEventListener("blur",le)}),Object(n["onUnmounted"])(()=>{document.removeEventListener("keydown",ee),document.removeEventListener("keyup",le),window.removeEventListener("blur",le)})},Ke=()=>{const{editorAreaFocus:e,thumbnailsFocus:t,disableHotkeys:l}=Object(o["c"])(z()),{pasteTextClipboardData:c}=ze(),{createImageElement:a}=Me(),r=e=>{we(e).then(e=>a(e))},i=n=>{if(!e.value&&!t.value)return;if(l.value)return;if(!n.clipboardData)return;const o=n.clipboardData.items,a=o[0];if(a){for(const e of o)if("file"===e.kind&&-1!==e.type.indexOf("image")){const t=e.getAsFile();return void(t&&r(t))}"string"===a.kind&&"text/plain"===a.type&&a.getAsString(e=>c(e))}};Object(n["onMounted"])(()=>{document.addEventListener("paste",i)}),Object(n["onUnmounted"])(()=>{document.removeEventListener("paste",i)})},Qe=(l("6d2a"),l("9571")),et=(l("9a33"),l("f933")),tt=(l("9d5c"),l("a600")),lt=(l("fbd8"),l("55f1")),ct=l("21a6"),nt=l("8f74"),ot=l("e774");const at=["style","script","template"],rt=["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"]},st=["!doctype","area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],dt=(e,t)=>{const l=t-e.position;ut(e,l)},ut=(e,t)=>{e.position=e.position+t},bt=(e,t)=>{const l=!1;while(!l){const l=e.indexOf("<",t);if(-1===l)return l;const c=e.charAt(l+1);if("/"===c||"!"===c||/[A-Za-z0-9]/.test(c))return l;t=l+1}return-1},Ot=e=>{const{str:t}=e;let l=bt(t,e.position);if(l===e.position)return;-1===l&&(l=t.length);const c=t.slice(e.position,l);dt(e,l),e.tokens.push({type:"text",content:c})},mt=e=>{const{str:t}=e;ut(e,4);let l=t.indexOf("--\x3e",e.position),c=l+3;-1===l&&(l=c=t.length);const n=t.slice(e.position,l);dt(e,c),e.tokens.push({type:"comment",content:n})},pt=e=>{const{str:t}=e,l=t.length;let c=e.position;while(c"===e);if(l)break;c++}let n=c+1;while(n"===e);if(!l)break;n++}dt(e,n);const o=t.slice(c,n);return e.tokens.push({type:"tag",content:o}),o},ft=e=>{const{str:t,tokens:l}=e;let c=e.position,n=null,o=c;const a=[],r=t.length;while(c"===e;if(l){c!==o&&a.push(t.slice(o,c));break}const r=/\s/.test(e);if(r){c!==o&&a.push(t.slice(o,c)),o=c+1,c++;continue}const i="'"===e||'"'===e;i?(n=e,c++):c++}dt(e,c);const i="attribute";for(let s=0;s1){const c=e+t;l.push({type:i,content:c}),s+=1;continue}const c=a[s+2];if(s+=1,c){const t=e+"="+c;l.push({type:i,content:t}),s+=1;continue}}}if(Object(S["endsWith"])(e,"=")){const t=a[s+1];if(t&&-1===t.indexOf("=")){const c=e+t;l.push({type:i,content:c}),s+=1;continue}const c=e.slice(0,-1);l.push({type:i,content:c})}else l.push({type:i,content:e})}},jt=(e,t)=>{const{str:l,tokens:c}=t,n=e.toLowerCase(),o=l.length;let a=t.position;while(a{const{str:t}=e,l=t.charAt(e.position+1),c="/"===l;ut(e,c?2:1),e.tokens.push({type:"tag-start",close:c});const n=pt(e);ft(e);const o=t.charAt(e.position),a="/"===o;return ut(e,a?2:1),e.tokens.push({type:"tag-end",close:a}),n},ht=e=>{const t=e.str,l=t.length;while(e.position{const t={str:e,position:0,tokens:[]};return ht(t),t.tokens},gt=e=>{const t={tagName:null,children:[]},l={tokens:e,cursor:0,stack:[t]};return Ct(l),t.children},xt=(e,t)=>{const l=it[e];if(l){let c=t.length-1;while(c>=0){const n=t[c].tagName;if(n===e)break;if(l.includes(n))return!0;c--}}return!1},kt=(e,t)=>{e.splice(t)},Ct=e=>{const{stack:t,tokens:l}=e;let{cursor:c}=e,n=t[t.length-1].children;const o=l.length;while(c-1)if(t[e].tagName===r){n=!0;break}while(c0){if(r===t[e].tagName){kt(t,e);const l=e-1;n=t[l].children;break}e-=1}}const d=[];let u;while(c{const l=e.indexOf(t);return-1===l?[e]:[e.slice(0,l),e.slice(l+t.length)]},Et=e=>{const t=e.charAt(0),l=e.length-1,c='"'===t||"'"===t;return c&&t===e.charAt(l)?e.slice(1,l):e},wt=e=>e.map(e=>{const t=Nt(e.trim(),"="),l=t[0],c="string"===typeof t[1]?Et(t[1]):null;return{key:l,value:c}}),Vt=e=>e.map(e=>{if("element"===e.type){const t=Vt(e.children),l={type:"element",tagName:e.tagName.toLowerCase(),attributes:wt(e.attributes),children:t};return l}const t={type:e.type,content:e.content};return t});l("13d5");const It=e=>{const t=yt(e),l=gt(t);return Vt(l)};var St=l("d01f"),Lt=l("0b89");const Bt={1:"Z",2:"M",4:"H",8:"V",16:"L",32:"C",64:"S",128:"Q",256:"T",512:"A"},_t=e=>{const t=new St["a"](e),l=[];for(const c of t.commands){const e=Bt[c.type];if(2!==c.type&&16!==c.type||l.push({x:c.x,y:c.y,relative:c.relative,type:e}),32===c.type)l.push({x:c.x,y:c.y,curve:{type:"cubic",x1:c.x1,y1:c.y1,x2:c.x2,y2:c.y2},relative:c.relative,type:e});else if(128===c.type)l.push({x:c.x,y:c.y,curve:{type:"quadratic",x1:c.x1,y1:c.y1},relative:c.relative,type:e});else if(512===c.type){const e=l[l.length-1];if(!["M","L","Q","C"].includes(e.type))continue;const t=Object(Lt["a"])({px:e.x,py:e.y,cx:c.x,cy:c.y,rx:c.rX,ry:c.rY,xAxisRotation:c.xRot,largeArcFlag:c.lArcFlag,sweepFlag:c.sweepFlag});for(const c of t)l.push({x:c.x,y:c.y,curve:{type:"cubic",x1:c.x1,y1:c.y1,x2:c.x2,y2:c.y2},relative:!1,type:"C"})}else{if(1!==c.type)continue;l.push({close:!0,type:e})}}return l},Tt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",Mt="data:image/svg+xml;base64,",Dt=e=>{e=e.replace(/\r\n/g,"\n");let t="";for(let l=0;l127&&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},zt=e=>{let t,l,c,n,o,a,r,i="",s=0;e=Dt(e);while(s>2,o=(3&t)<<4|l>>4,a=(15&l)<<2|c>>6,r=63&c,isNaN(l)?a=r=64:isNaN(c)&&(r=64),i=i+Tt.charAt(n)+Tt.charAt(o)+Tt.charAt(a)+Tt.charAt(r);return i},Ft=e=>{const t=new XMLSerializer,l=t.serializeToString(e);return Mt+zt(l)},At=100,$t=.75;var Rt=()=>{const e=T(),{slides:t,theme:l,viewportRatio:c}=Object(o["c"])(e),{addSlidesFromData:a}=De(),r=Object(n["ref"])(!1),i=(e,t,l,c=!0)=>{r.value=!0;const n="png"===t?ot["c"]:ot["b"],o=e.querySelectorAll("foreignObject [xmlns]");o.forEach(e=>e.removeAttribute("xmlns")),setTimeout(()=>{const o={quality:l,width:1600};c&&(o.fontEmbedCSS=""),n(e,o).then(e=>{r.value=!1,Object(ct["saveAs"])(e,"pptist_slides."+t)}).catch(()=>{r.value=!1,ne["a"].error("导出图片失败")})},200)},s=e=>{const t=new Blob([de(JSON.stringify(e))],{type:""});Object(ct["saveAs"])(t,"pptist_slides.pptist")},d=(t,l=!1)=>{const c=t[0],n=new FileReader;n.addEventListener("load",()=>{try{const t=JSON.parse(ue(n.result));l?e.setSlides(t):a(t)}catch{ne["a"].error("无法正确读取 / 解析该文件")}}),n.readAsText(c)},u=()=>{const e=new Blob([JSON.stringify(t.value)],{type:""});Object(ct["saveAs"])(e,"pptist_slides.json")},b=e=>{const t=I()(e),l=t.getAlpha(),c=0===l?"#ffffff":t.setAlpha(1).toHexString();return{alpha:l,color:c}},O=e=>{const t=It(e);let l=!1,c=0;const n=[],o=(e,t={})=>{for(const a of e){const e="tagName"in a&&["div","li","p"].includes(a.tagName);if(e&&n.length){const e=n[n.length-1];e.options||(e.options={}),e.options.breakLine=!0}const r={...t},i="attributes"in a?a.attributes.find(e=>"style"===e.key):null;if(i&&i.value){const e=i.value.split(";");for(const t of e){const[e,l]=t.split(": "),[c,n]=[Object(S["trim"])(e),Object(S["trim"])(l)];c&&n&&(r[c]=n)}}if("tagName"in a){if("em"===a.tagName&&(r["font-style"]="italic"),"strong"===a.tagName&&(r["font-weight"]="bold"),"sup"===a.tagName&&(r["vertical-align"]="super"),"sub"===a.tagName&&(r["vertical-align"]="sub"),"a"===a.tagName){const e=a.attributes.find(e=>"href"===e.key);r["href"]=(null===e||void 0===e?void 0:e.value)||""}if("ul"===a.tagName&&(r["list-type"]="ul"),"ol"===a.tagName&&(r["list-type"]="ol"),"li"===a.tagName&&(l=!0),"p"===a.tagName&&"attributes"in a){const e=a.attributes.find(e=>"data-indent"===e.key);e&&e.value&&(c=+e.value)}}if("tagName"in a&&"br"===a.tagName)n.push({text:"",options:{breakLine:!0}});else if("content"in a){const e=a.content.replace(/ /g," ").replace(/>/g,">").replace(/</g,"<").replace(/&/g,"&").replace(/\n/g,""),t={};r["font-size"]&&(t.fontSize=parseInt(r["font-size"])*$t),r["color"]&&(t.color=b(r["color"]).color),r["background-color"]&&(t.highlight=b(r["background-color"]).color),r["text-decoration-line"]&&(-1!==r["text-decoration-line"].indexOf("underline")&&(t.underline={color:t.color||"#000000",style:"sng"}),-1!==r["text-decoration-line"].indexOf("line-through")&&(t.strike="sngStrike")),r["text-decoration"]&&(-1!==r["text-decoration"].indexOf("underline")&&(t.underline={color:t.color||"#000000",style:"sng"}),-1!==r["text-decoration"].indexOf("line-through")&&(t.strike="sngStrike")),r["vertical-align"]&&("super"===r["vertical-align"]&&(t.superscript=!0),"sub"===r["vertical-align"]&&(t.subscript=!0)),r["text-align"]&&(t.align=r["text-align"]),r["font-weight"]&&(t.bold="bold"===r["font-weight"]),r["font-style"]&&(t.italic="italic"===r["font-style"]),r["font-family"]&&(t.fontFace=r["font-family"]),r["href"]&&(t.hyperlink={url:r["href"]}),l&&"ol"===r["list-type"]&&(t.bullet={type:"number",indent:20*$t},t.paraSpaceBefore=.1,l=!1),l&&"ul"===r["list-type"]&&(t.bullet={indent:20*$t},t.paraSpaceBefore=.1,l=!1),c&&(t.indentLevel=c,c=0),n.push({text:e,options:t})}else"children"in a&&o(a.children,r)}};return o(t),n},m=(e,t={x:1,y:1})=>e.map(e=>{if(void 0!==e.close)return{close:!0};if("M"===e.type)return{x:e.x/At*t.x,y:e.y/At*t.y,moveTo:!0};if(e.curve){if("cubic"===e.curve.type)return{x:e.x/At*t.x,y:e.y/At*t.y,curve:{type:"cubic",x1:e.curve.x1/At*t.x,y1:e.curve.y1/At*t.y,x2:e.curve.x2/At*t.x,y2:e.curve.y2/At*t.y}};if("quadratic"===e.curve.type)return{x:e.x/At*t.x,y:e.y/At*t.y,curve:{type:"quadratic",x1:e.curve.x1/At*t.x,y1:e.curve.y1/At*t.y}}}return{x:e.x/At*t.x,y:e.y/At*t.y}}),p=e=>{const t=b(e.color),{h:l,v:c}=e;let n=4,o=45;return 0===l&&0===c?(n=4,o=45):0===l?c>0?(n=c,o=90):(n=-c,o=270):0===c?l>0?(n=l,o=1):(n=-l,o=180):l>0&&c>0?(n=Math.max(l,c),o=45):l>0&&c<0?(n=Math.max(l,-c),o=315):l<0&&c>0?(n=Math.max(-l,c),o=135):l<0&&c<0&&(n=Math.max(-l,-c),o=225),{type:"outer",color:t.color.replace("#",""),opacity:t.alpha,blur:e.blur*$t,offset:n,angle:o}},f=e=>{const t=b((null===e||void 0===e?void 0:e.color)||"#000000");return{color:t.color,transparency:100*(1-t.alpha),width:(e.width||1)*$t,dashType:"solid"===e.style?"solid":"dash"}},j=e=>{const{type:l,target:c}=e;if("web"===l)return{url:c};if("slide"===l){const e=t.value.findIndex(e=>e.id===c);if(-1!==e)return{slide:e+1}}return null},v=(e,t)=>{r.value=!0;const n=new nt["a"];if(.625===c.value?n.layout="LAYOUT_16x10":.75===c.value?n.layout="LAYOUT_4x3":.70710678===c.value?(n.defineLayout({name:"A3",width:10,height:7.0710678}),n.layout="A3"):n.layout="LAYOUT_16x9",t){const{color:e,alpha:t}=b(l.value.backgroundColor);n.defineSlideMaster({title:"PPTIST_MASTER",background:{color:e,transparency:100*(1-t)}})}for(const l of e){const e=n.addSlide();if(l.background){const t=l.background;if("image"===t.type&&t.image)e.background={data:t.image};else if("solid"===t.type&&t.color){const l=b(t.color);e.background={color:l.color,transparency:100*(1-l.alpha)}}else if("gradient"===t.type&&t.gradientColor){const[l,c]=t.gradientColor,n=I.a.mix(l,c).toHexString(),o=b(n);e.background={color:o.color,transparency:100*(1-o.alpha)}}}if(l.remark&&e.addNotes(l.remark),l.elements)for(const t of l.elements)if("text"===t.type){var o;const l=O(t.content),c={x:t.left/At,y:t.top/At,w:t.width/At,h:t.height/At,fontSize:20*$t,fontFace:"微软雅黑",color:"#000000",valign:"top",margin:10*$t,paraSpaceBefore:5*$t,lineSpacingMultiple:1.2,autoFit:!0};if(t.rotate&&(c.rotate=t.rotate),t.wordSpace&&(c.charSpacing=t.wordSpace*$t),t.lineHeight&&(c.lineSpacingMultiple=t.lineHeight/1.25),t.fill){const e=b(t.fill),l=void 0===t.opacity?1:t.opacity;c.fill={color:e.color,transparency:100*(1-e.alpha*l)}}t.defaultColor&&(c.color=b(t.defaultColor).color),t.defaultFontName&&(c.fontFace=t.defaultFontName),t.shadow&&(c.shadow=p(t.shadow)),null!==(o=t.outline)&&void 0!==o&&o.width&&(c.line=f(t.outline)),void 0!==t.opacity&&(c.transparency=100*(1-t.opacity)),void 0!==t.paragraphSpace&&(c.paraSpaceBefore=t.paragraphSpace*$t),t.vertical&&(c.vert="eaVert"),e.addText(l,c)}else if("image"===t.type){var a,i;const l={path:t.src,x:t.left/At,y:t.top/At,w:t.width/At,h:t.height/At};if(t.flipH&&(l.flipH=t.flipH),t.flipV&&(l.flipV=t.flipV),t.rotate&&(l.rotate=t.rotate),t.link){const e=j(t.link);e&&(l.hyperlink=e)}if(null!==(a=t.filters)&&void 0!==a&&a.opacity&&(l.transparency=100-parseInt(null===(i=t.filters)||void 0===i?void 0:i.opacity)),t.clip){"ellipse"===t.clip.shape&&(l.rounding=!0);const[e,c]=t.clip.range,[n,o]=e,[a,r]=c,i=t.width/((a-n)/At),s=t.height/((r-o)/At);l.w=i/At,l.h=s/At,l.sizing={type:"crop",x:n/At*i/At,y:o/At*s/At,w:(a-n)/At*i/At,h:(r-o)/At*s/At}}e.addImage(l)}else if("shape"===t.type){if(t.special){const l=document.querySelector(`.thumbnail-list .base-element-${t.id} svg`),c=Ft(l),n={data:c,x:t.left/At,y:t.top/At,w:t.width/At,h:t.height/At};if(t.rotate&&(n.rotate=t.rotate),t.link){const e=j(t.link);e&&(n.hyperlink=e)}e.addImage(n)}else{var s;const l={x:t.width/t.viewBox[0],y:t.height/t.viewBox[1]},c=m(_t(t.path),l),n=b(t.fill),o=void 0===t.opacity?1:t.opacity,a={x:t.left/At,y:t.top/At,w:t.width/At,h:t.height/At,fill:{color:n.color,transparency:100*(1-n.alpha*o)},points:c};if(t.flipH&&(a.flipH=t.flipH),t.flipV&&(a.flipV=t.flipV),t.shadow&&(a.shadow=p(t.shadow)),null!==(s=t.outline)&&void 0!==s&&s.width&&(a.line=f(t.outline)),t.link){const e=j(t.link);e&&(a.hyperlink=e)}e.addShape("custGeom",a)}if(t.text){const l=O(t.text.content),c={x:t.left/At,y:t.top/At,w:t.width/At,h:t.height/At,fontSize:20*$t,fontFace:"微软雅黑",color:"#000000",paraSpaceBefore:5*$t,valign:t.text.align};t.rotate&&(c.rotate=t.rotate),t.text.defaultColor&&(c.color=b(t.text.defaultColor).color),t.text.defaultFontName&&(c.fontFace=t.text.defaultFontName),e.addText(l,c)}}else if("line"===t.type){const l=Ce(t),c=m(_t(l)),{minX:n,maxX:o,minY:a,maxY:r}=ve(t),i=b(t.color),s={x:t.left/At,y:t.top/At,w:(o-n)/At,h:(r-a)/At,line:{color:i.color,transparency:100*(1-i.alpha),width:t.width*$t,dashType:"solid"===t.style?"solid":"dash",beginArrowType:t.points[0]?"arrow":"none",endArrowType:t.points[1]?"arrow":"none"},points:c};t.shadow&&(s.shadow=p(t.shadow)),e.addShape("custGeom",s)}else if("chart"===t.type){const l=[];for(let e=0;eb(e).color);else if(1===t.themeColor.length)c=I()(t.themeColor[0]).analogous(10).map(e=>b(e.toHexString()).color);else{const e=t.themeColor.length,l=I()(t.themeColor[e-1]).analogous(11-e).map(e=>e.toHexString());c=[...t.themeColor.slice(0,e-1),...l].map(e=>b(e).color)}const o={x:t.left/At,y:t.top/At,w:t.width/At,h:t.height/At,chartColors:"pie"===t.chartType?c:c.slice(0,t.data.series.length)};t.fill&&(o.plotArea={fill:{color:b(t.fill).color}}),t.legend&&(o.showLegend=!0,o.legendPos="top"===t.legend?"t":"b",o.legendColor=b(t.gridColor||"#000000").color,o.legendFontSize=14*$t);let a=n.ChartType.bar;var d;if("bar"===t.chartType)a=n.ChartType.bar,o.barDir=null!==(d=t.options)&&void 0!==d&&d.horizontalBars?"bar":"col";else if("line"===t.chartType){var u,v,h;null!==(u=t.options)&&void 0!==u&&u.showArea?a=n.ChartType.area:!1===(null===(v=t.options)||void 0===v?void 0:v.showLine)?(a=n.ChartType.scatter,l.unshift({name:"X-Axis",values:Array(t.data.series[0].length).fill(0).map((e,t)=>t)}),o.lineSize=0):a=n.ChartType.line,null!==(h=t.options)&&void 0!==h&&h.lineSmooth&&(o.lineSmooth=!0)}else if("pie"===t.chartType){var y;null!==(y=t.options)&&void 0!==y&&y.donut?(a=n.ChartType.doughnut,o.holeSize=75):a=n.ChartType.pie}e.addChart(a,l,o)}else if("table"===t.type){const l=[];for(let e=0;e1||n.rowspan>1)for(let c=e;cb(e)));for(let e=0;et.width*e/At)};t.theme&&(r.fill={color:"#ffffff"}),t.outline.width&&t.outline.color&&(r.border={type:"solid"===t.outline.style?"solid":"dash",pt:t.outline.width*$t,color:b(t.outline.color).color}),e.addTable(c,r)}else if("latex"===t.type){const l=document.querySelector(`.thumbnail-list .base-element-${t.id} svg`),c=Ft(l),n={data:c,x:t.left/At,y:t.top/At,w:t.width/At,h:t.height/At};if(t.link){const e=j(t.link);e&&(n.hyperlink=e)}e.addImage(n)}}setTimeout(()=>{n.writeFile({fileName:"pptist.pptx"}).then(()=>r.value=!1).catch(()=>{r.value=!1,ne["a"].error("导出失败")})},200)};return{exporting:r,exportImage:i,exportJSON:u,importSpecificFile:d,exportSpecificFile:s,exportPPTX:v}};const Pt={class:"hotkey-doc"},Ht={class:"title"},qt={class:"label"},Ut={class:"value"};var Gt=Object(n["defineComponent"])({__name:"HotkeyDoc",setup(e){return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Pt,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(ce),e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:e.type},[Object(n["createElementVNode"])("div",Ht,Object(n["toDisplayString"])(e.type),1),(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.children,e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"hotkey-item",key:e.label},[Object(n["createElementVNode"])("div",qt,Object(n["toDisplayString"])(e.label),1),Object(n["createElementVNode"])("div",Ut,Object(n["toDisplayString"])(e.value),1)]))),128))],64))),128))]))}}),Xt=(l("28eb"),l("d959")),Yt=l.n(Xt);const Zt=Yt()(Gt,[["__scopeId","data-v-4b1afc5f"]]);var Wt=Zt;const Jt=["accept"];var Kt=Object(n["defineComponent"])({__name:"FileInput",props:{accept:{type:String,default:"image/*"}},emits:["change"],setup(e,{emit:t}){const l=Object(n["ref"])(),c=()=>{l.value&&(l.value.value="",l.value.click())},o=e=>{const l=e.target.files;l&&t("change",l)};return(t,a)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"file-input",onClick:a[1]||(a[1]=e=>c())},[Object(n["renderSlot"])(t.$slots,"default"),Object(n["createElementVNode"])("input",{class:"input",type:"file",name:"upload",ref_key:"inputRef",ref:l,accept:e.accept,onChange:a[0]||(a[0]=e=>o(e))},null,40,Jt)]))}});l("6237");const Qt=Yt()(Kt,[["__scopeId","data-v-cdb026e2"]]);var el=Qt;const tl=e=>(Object(n["pushScopeId"])("data-v-76222f8e"),e=e(),Object(n["popScopeId"])(),e),ll={class:"editor-header"},cl={class:"left"},nl={class:"menu-item"},ol=tl(()=>Object(n["createElementVNode"])("span",{class:"text"},"文件",-1)),al={class:"menu-item"},rl=tl(()=>Object(n["createElementVNode"])("span",{class:"text"},"编辑",-1)),il={class:"menu-item"},sl=tl(()=>Object(n["createElementVNode"])("span",{class:"text"},"演示",-1)),dl={class:"menu-item"},ul=tl(()=>Object(n["createElementVNode"])("span",{class:"text"},"帮助",-1)),bl={class:"right"},Ol={href:"https://github.com/pipipi-pikachu/PPTist",target:"_blank"},ml={class:"menu-item"};var pl=Object(n["defineComponent"])({__name:"index",setup(e){const t=lt["a"].Item,l=z(),{gridLineSize:c,showRuler:a,showSelectPanel:r}=Object(o["c"])(l),{enterScreening:i,enterScreeningFromStart:s}=Ze(),{createSlide:d,deleteSlide:u,resetSlides:b}=Fe(),{redo:O,undo:m}=Te(),{importSpecificFile:p}=Rt(),f=l.setDialogForExport,j=()=>{l.setGridLineSize(c.value?0:50)},v=()=>{l.setRulerState(!a.value)},h=()=>{r.value?l.setSelectPanelState(!1):l.setSelectPanelState(!0)},y=Object(n["ref"])(!1),g=e=>window.open(e);return(e,l)=>{const o=Object(n["resolveComponent"])("IconFolderClose"),x=Object(n["resolveComponent"])("IconEdit"),k=Object(n["resolveComponent"])("IconPpt"),C=Object(n["resolveComponent"])("IconHelpcenter"),N=Object(n["resolveComponent"])("IconShare"),E=Object(n["resolveComponent"])("IconGithub");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ll,[Object(n["createElementVNode"])("div",cl,[Object(n["createVNode"])(Object(n["unref"])(tt["a"]),{trigger:["click"]},{overlay:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(lt["a"]),null,{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(el,{accept:".pptist",onChange:l[0]||(l[0]=e=>Object(n["unref"])(p)(e))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),null,{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("导入 pptist 文件")]),_:1})]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[1]||(l[1]=e=>Object(n["unref"])(f)("pptx"))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("导出文件")]),_:1})]),_:1})]),default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",nl,[Object(n["createVNode"])(o),Object(n["createTextVNode"])(),ol])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(tt["a"]),{trigger:["click"]},{overlay:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(lt["a"]),null,{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[2]||(l[2]=e=>Object(n["unref"])(m)())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("撤销")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[3]||(l[3]=e=>Object(n["unref"])(O)())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("重做")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[4]||(l[4]=e=>Object(n["unref"])(d)())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("添加页面")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[5]||(l[5]=e=>Object(n["unref"])(u)())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("删除页面")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[6]||(l[6]=e=>j())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])(Object(n["toDisplayString"])(Object(n["unref"])(c)?"关闭网格线":"打开网格线"),1)]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[7]||(l[7]=e=>v())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])(Object(n["toDisplayString"])(Object(n["unref"])(a)?"关闭标尺":"打开标尺"),1)]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[8]||(l[8]=e=>Object(n["unref"])(b)())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("重置幻灯片")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[9]||(l[9]=e=>h())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])(Object(n["toDisplayString"])(Object(n["unref"])(r)?"关闭选择面板":"打开选择面板"),1)]),_:1})]),_:1})]),default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",al,[Object(n["createVNode"])(x),Object(n["createTextVNode"])(),rl])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(tt["a"]),{trigger:["click"]},{overlay:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(lt["a"]),null,{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[10]||(l[10]=e=>Object(n["unref"])(s)())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("从头开始")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[11]||(l[11]=e=>Object(n["unref"])(i)())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("从当前页开始")]),_:1})]),_:1})]),default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",il,[Object(n["createVNode"])(k),Object(n["createTextVNode"])(),sl])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(tt["a"]),{trigger:["click"]},{overlay:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(lt["a"]),null,{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[12]||(l[12]=e=>g("https://github.com/pipipi-pikachu/PPTist/issues"))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("意见反馈")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[13]||(l[13]=e=>g("https://github.com/pipipi-pikachu/PPTist/blob/master/doc/Q&A.md"))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("常见问题")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[14]||(l[14]=e=>y.value=!0)},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("快捷键")]),_:1})]),_:1})]),default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",dl,[Object(n["createVNode"])(C),Object(n["createTextVNode"])(),ul])]),_:1})]),Object(n["createElementVNode"])("div",bl,[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,title:"导出"},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",{class:"menu-item",onClick:l[15]||(l[15]=e=>Object(n["unref"])(f)("pptx"))},[Object(n["createVNode"])(N,{size:"18",fill:"#666"})])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,title:"幻灯片放映"},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",{class:"menu-item",onClick:l[16]||(l[16]=e=>Object(n["unref"])(i)())},[Object(n["createVNode"])(k,{size:"19",fill:"#666",style:{"margin-top":"1px"}})])]),_:1}),Object(n["createElementVNode"])("a",Ol,[Object(n["createElementVNode"])("div",ml,[Object(n["createVNode"])(E,{size:"18",fill:"#666"})])])]),Object(n["createVNode"])(Object(n["unref"])(Qe["a"]),{width:"320",placement:"right",closable:!1,visible:y.value,onClose:l[17]||(l[17]=e=>y.value=!1)},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Wt)]),_:1},8,["visible"])])}}});l("b7d2");const fl=Yt()(pl,[["__scopeId","data-v-76222f8e"]]);var jl=fl;const vl=Symbol(),hl=Symbol(),yl=()=>{const e=window.getSelection();e&&e.removeAllRanges()};var gl=e=>{const t=Object(n["ref"])(0),l=Object(n["ref"])(0),c=z(),{canvasPercentage:a,canvasDragged:r}=Object(o["c"])(c),{viewportRatio:i}=Object(o["c"])(T()),s=()=>{if(!e.value)return;const n=e.value.clientWidth,o=e.value.clientHeight;if(o/n>i.value){const e=n*(a.value/100);c.setCanvasScale(e/Ve),t.value=(n-e)/2,l.value=(o-e*i.value)/2}else{const e=o*(a.value/100);c.setCanvasScale(e/(Ve*i.value)),t.value=(n-e/i.value)/2,l.value=(o-e)/2}},d=(n,o)=>{if(!e.value)return;const a=e.value.clientWidth,r=e.value.clientHeight,s=a*(n/100),d=a*(o/100),u=r*(n/100),b=r*(o/100);r/a>i.value?c.setCanvasScale(s/Ve):c.setCanvasScale(u/(Ve*i.value)),t.value=t.value-(s-d)/2,l.value=l.value-(u-b)/2};Object(n["watch"])(a,d),Object(n["watch"])(i,s),Object(n["watch"])(r,()=>{r.value||s()});const u=Object(n["computed"])(()=>({width:Ve,height:Ve*i.value,left:t.value,top:l.value})),b=new ResizeObserver(s);Object(n["onMounted"])(()=>{e.value&&b.observe(e.value)}),Object(n["onUnmounted"])(()=>{e.value&&b.unobserve(e.value)});const O=e=>{let n=!0;const o=e.pageX,a=e.pageY,r=t.value,i=l.value;document.onmousemove=e=>{if(!n)return;const c=e.pageX,s=e.pageY;t.value=r+(c-o),l.value=i+(s-a)},document.onmouseup=()=>{n=!1,document.onmousemove=null,document.onmouseup=null,c.setCanvasDragged(!0)}};return{viewportStyles:u,dragViewport:O}},xl=(e,t)=>{const l=z(),{canvasScale:c,hiddenElementIdList:a}=Object(o["c"])(l),r=Object(n["ref"])(!1),i=Object(n["ref"])(1),s=Object(n["ref"])({top:0,left:0,width:0,height:0}),d=n=>{if(!t.value)return;let o=!0;const d=t.value.getBoundingClientRect(),u=5,b=n.pageX,O=n.pageY,m=(b-d.x)/c.value,p=(O-d.y)/c.value;s.value={top:p,left:m,width:0,height:0},r.value=!1,i.value=4,document.onmousemove=e=>{if(!o)return;const t=e.pageX,l=e.pageY,n=(t-b)/c.value,a=(l-O)/c.value,d=Math.abs(n),m=Math.abs(a);if(d0&&a>0?p=4:n<0&&a<0?p=1:n>0&&a<0?p=2:n<0&&a>0&&(p=3),s.value={...s.value,width:d,height:m},r.value=!0,i.value=p},document.onmouseup=()=>{document.onmousemove=null,document.onmouseup=null,o=!1;let t=[];for(let l=0;ln&&bo&&mn-r&&bo-d&&mn&&bo-d&&mn-r&&bo&&m{if(l.groupId){const c=t.map(e=>e.id),n=e.value.filter(e=>e.groupId===l.groupId);return n.every(e=>c.includes(e.id))}return!0});const c=t.map(e=>e.id);l.setActiveElementIdList(c),r.value=!1}};return{mouseSelection:s,mouseSelectionVisible:r,mouseSelectionQuadrant:i,updateMouseSelection:d}},kl=e=>{const{disableHotkeys:t}=Object(o["c"])(z()),{createImageElement:l,createTextElement:c}=Me(),a=e=>{if(!e.dataTransfer||0===e.dataTransfer.items.length)return;const n=e.dataTransfer.items[0];if("file"===n.kind&&-1!==n.type.indexOf("image")){const e=n.getAsFile();e&&we(e).then(e=>l(e))}else"string"===n.kind&&"text/plain"===n.type&&n.getAsString(e=>{if(t.value)return;const l=Ne(e);c({left:0,top:0,width:600,height:50},{content:l})})};Object(n["onMounted"])(()=>{e.value&&e.value.addEventListener("drop",a),document.ondragleave=e=>e.preventDefault(),document.ondrop=e=>e.preventDefault(),document.ondragenter=e=>e.preventDefault(),document.ondragover=e=>e.preventDefault()}),Object(n["onUnmounted"])(()=>{e.value&&e.value.removeEventListener("drop",a),document.ondragleave=null,document.ondrop=null,document.ondragenter=null,document.ondragover=null})};const Cl=(e,t)=>{const l=Math.atan2(e,t),c=180/Math.PI*l;return c};var Nl=(e,t)=>{const l=T(),{canvasScale:c}=Object(o["c"])(z()),{addHistorySnapshot:n}=Te(),a=o=>{let a=!0,r=0;const i=o.rotate||0,s=o.left,d=o.top,u=o.width,b=o.height,O=s+u/2,m=d+b/2;if(!t.value)return;const p=t.value.getBoundingClientRect();document.onmousemove=t=>{if(!a)return;const l=(t.pageX-p.left)/c.value,n=(t.pageY-p.top)/c.value,i=l-O,s=m-n;r=Cl(i,s);const d=5;Math.abs(r)<=d?r=0:r>0&&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(e=>o.id===e.id?{...e,rotate:r}:e)},document.onmouseup=()=>{a=!1,document.onmousemove=null,document.onmouseup=null,i!==r&&(l.updateSlide({elements:e.value}),n())}};return{rotateElement:a}};const El={text:"文本",image:"图片",shape:"形状",line:"线条",chart:"图表",table:"表格",video:"视频",audio:"音频",latex:"公式"},wl={text:20,image:20,shape:15,chart:200,table:20,video:250,audio:20,latex:20},Vl=(e,t)=>{const{left:l,top:c,width:n,height:o}=e,a=Math.sqrt(Math.pow(n,2)+Math.pow(o,2))/2,r=180*Math.atan(o/n)/Math.PI,i=(180-t-r)*Math.PI/180,s=(r-t)*Math.PI/180,d=(90-t)*Math.PI/180,u=t*Math.PI/180,b=n/2,O=o/2,m=l+b,p=c+O,f={left:m+a*Math.cos(i),top:p-a*Math.sin(i)},j={left:m+O*Math.cos(d),top:p-O*Math.sin(d)},v={left:m+a*Math.cos(s),top:p-a*Math.sin(s)},h={left:m+b*Math.cos(u),top:p+b*Math.sin(u)},y={left:m-a*Math.cos(i),top:p+a*Math.sin(i)},g={left:m-O*Math.sin(u),top:p+O*Math.cos(u)},x={left:m-a*Math.cos(s),top:p+a*Math.sin(s)},k={left:m-b*Math.cos(u),top:p-b*Math.sin(u)};return{leftTopPoint:f,topPoint:j,rightTopPoint:v,rightPoint:h,rightBottomPoint:y,bottomPoint:g,leftBottomPoint:x,leftPoint:k}},Il=(e,t)=>{const l={[Q.RIGHT_BOTTOM]:t.leftTopPoint,[Q.LEFT_BOTTOM]:t.rightTopPoint,[Q.LEFT_TOP]:t.rightBottomPoint,[Q.RIGHT_TOP]:t.leftBottomPoint,[Q.TOP]:t.bottomPoint,[Q.BOTTOM]:t.topPoint,[Q.LEFT]:t.rightPoint,[Q.RIGHT]:t.leftPoint};return l[e]};var Sl,Ll,Bl=(e,t,l)=>{const c=z(),n=T(),{activeElementIdList:a,activeGroupElementId:r}=Object(o["c"])(c),{viewportRatio:i}=Object(o["c"])(n),{ctrlOrShiftKeyActive:s}=Object(o["c"])(G()),{addHistorySnapshot:d}=Te(),u=(o,u,b)=>{const O=!(o instanceof MouseEvent);if(O&&(!o.changedTouches||!o.changedTouches[0]))return;let m=!0;c.setScalingState(!0);const p=u.left,f=u.top,j=u.width,v=u.height,h="table"===u.type?u.cellMinHeight:0,y="rotate"in u&&u.rotate?u.rotate:0,g=Math.PI*y/180,x=s.value||"fixedRatio"in u&&u.fixedRatio,k=j/v,C=O?o.changedTouches[0].pageX:o.pageX,N=O?o.changedTouches[0].pageY:o.pageY,E=wl[u.type]||20,w=e=>e{const c=5,n=[];let o=!1,a=!1;const r={offsetX:0,offsetY:0};if(l||0===l)for(let t=0;t{if(!m)return;const c=t instanceof MouseEvent?t.pageX:t.changedTouches[0].pageX,n=t instanceof MouseEvent?t.pageY:t.changedTouches[0].pageY,o=c-C,a=n-N;let r=j,i=v,s=p,d=f;if(y){const e=(Math.cos(g)*o+Math.sin(g)*a)/l.value;let t=(Math.cos(g)*a-Math.sin(g)*o)/l.value;x&&(b!==Q.RIGHT_BOTTOM&&b!==Q.LEFT_TOP||(t=e/k),b!==Q.LEFT_BOTTOM&&b!==Q.RIGHT_TOP||(t=-e/k)),b===Q.RIGHT_BOTTOM?(r=w(j+e),i=w(v+t)):b===Q.LEFT_BOTTOM?(r=w(j-e),i=w(v+t),s=p-(r-j)):b===Q.LEFT_TOP?(r=w(j-e),i=w(v-t),s=p-(r-j),d=f-(i-v)):b===Q.RIGHT_TOP?(r=w(j+e),i=w(v-t),d=f-(i-v)):b===Q.TOP?(i=w(v-t),d=f-(i-v)):b===Q.BOTTOM?i=w(v+t):b===Q.LEFT?(r=w(j-e),s=p-(r-j)):b===Q.RIGHT&&(r=w(j+e));const c=Vl({width:r,height:i,left:s,top:d},y),n=Il(b,c),u=n.left,O=n.top,m=u-I,h=O-S;s-=m,d-=h}else{let e=o/l.value,t=a/l.value;if(x&&(b!==Q.RIGHT_BOTTOM&&b!==Q.LEFT_TOP||(t=e/k),b!==Q.LEFT_BOTTOM&&b!==Q.RIGHT_TOP||(t=-e/k)),b===Q.RIGHT_BOTTOM){const{offsetX:l,offsetY:c}=_(p+j+e,f+v+t);e-=l,t-=c,x&&(c?e=t*k:t=e/k),r=w(j+e),i=w(v+t)}else if(b===Q.LEFT_BOTTOM){const{offsetX:l,offsetY:c}=_(p+e,f+v+t);e-=l,t-=c,x&&(c?e=-t*k:t=-e/k),r=w(j-e),i=w(v+t),s=p-(r-j)}else if(b===Q.LEFT_TOP){const{offsetX:l,offsetY:c}=_(p+e,f+t);e-=l,t-=c,x&&(c?e=t*k:t=e/k),r=w(j-e),i=w(v-t),s=p-(r-j),d=f-(i-v)}else if(b===Q.RIGHT_TOP){const{offsetX:l,offsetY:c}=_(p+j+e,f+t);e-=l,t-=c,x&&(c?e=-t*k:t=-e/k),r=w(j+e),i=w(v-t),d=f-(i-v)}else if(b===Q.LEFT){const{offsetX:t}=_(p+e,null);e-=t,r=w(j-e),s=p-(r-j)}else if(b===Q.RIGHT){const{offsetX:t}=_(p+j+e,null);e-=t,r=w(j+e)}else if(b===Q.TOP){const{offsetY:e}=_(null,f+t);t-=e,i=w(v-t),d=f-(i-v)}else if(b===Q.BOTTOM){const{offsetY:e}=_(null,f+v+t);t-=e,i=w(v+t)}}e.value=e.value.map(e=>{if(u.id!==e.id)return e;if("shape"===e.type&&"pathFormula"in e&&e.pathFormula){const t=Le[e.pathFormula];let l="";return l="editable"in t?t.formula(r,i,e.keypoint):t.formula(r,i),{...e,left:s,top:d,width:r,height:i,viewBox:[r,i],path:l}}if("table"===e.type){let t=h+(i-v)/e.data.length;return t=t<36?36:t,t===h?{...e,left:s,width:r}:{...e,left:s,top:d,width:r,height:i,cellMinHeight:t<36?36:t}}return{...e,left:s,top:d,width:r,height:i}})},M=l=>{m=!1,document.ontouchmove=null,document.ontouchend=null,document.onmousemove=null,document.onmouseup=null,t.value=[];const o=l instanceof MouseEvent?l.pageX:l.changedTouches[0].pageX,a=l instanceof MouseEvent?l.pageY:l.changedTouches[0].pageY;C===o&&N===a||(n.updateSlide({elements:e.value}),c.setScalingState(!1),d())};O?(document.ontouchmove=T,document.ontouchend=M):(document.onmousemove=T,document.onmouseup=M)},b=(t,c,o)=>{let r=!0;const{minX:i,maxX:u,minY:b,maxY:O}=c,m=u-i,p=O-b,f=m/p,j=t.pageX,v=t.pageY,h=JSON.parse(JSON.stringify(e.value));document.onmousemove=t=>{if(!r)return;const c=t.pageX,n=t.pageY,d=(c-j)/l.value;let y=(n-v)/l.value;s.value&&(o!==Q.RIGHT_BOTTOM&&o!==Q.LEFT_TOP||(y=d/f),o!==Q.LEFT_BOTTOM&&o!==Q.RIGHT_TOP||(y=-d/f));let g=i,x=u,k=b,C=O;o===Q.RIGHT_BOTTOM?(x=u+d,C=O+y):o===Q.LEFT_BOTTOM?(g=i+d,C=O+y):o===Q.LEFT_TOP?(g=i+d,k=b+y):o===Q.RIGHT_TOP?(x=u+d,k=b+y):o===Q.TOP?k=b+y:o===Q.BOTTOM?C=O+y:o===Q.LEFT?g=i+d:o===Q.RIGHT&&(x=u+d);const N=x-g,E=C-k;let w=N/m,V=E/p;w<=0&&(w=0),V<=0&&(V=0),e.value=e.value.map(e=>{if(("image"===e.type||"shape"===e.type)&&a.value.includes(e.id)){const t=h.find(t=>t.id===e.id);return{...e,width:t.width*w,height:t.height*V,left:g+(t.left-i)*w,top:k+(t.top-b)*V}}return e})},document.onmouseup=t=>{r=!1,document.onmousemove=null,document.onmouseup=null,j===t.pageX&&v===t.pageY||(n.updateSlide({elements:e.value}),d())}};return{scaleElement:u,scaleMultiElement:b}},_l=(e,t)=>{const l=z(),{activeElementIdList:c,activeGroupElementId:n,handleElementId:a,editorAreaFocus:r}=Object(o["c"])(l),{ctrlOrShiftKeyActive:i}=Object(o["c"])(G()),s=(o,s,d=!0)=>{if(r.value||l.setEditorareaFocus(!0),c.value.includes(s.id)){if(i.value){let t=[];if(s.groupId){const l=[];e.value.forEach(e=>{e.groupId===s.groupId&&l.push(e.id)}),t=c.value.filter(e=>!l.includes(e))}else t=c.value.filter(e=>e!==s.id);t.length>0&&l.setActiveElementIdList(t)}else if(a.value!==s.id)l.setHandleElementId(s.id);else if(n.value!==s.id){const e=o instanceof MouseEvent?o.pageX:o.changedTouches[0].pageX,t=o instanceof MouseEvent?o.pageY:o.changedTouches[0].pageY;o.target.onmouseup=c=>{const n=c.pageX,o=c.pageY;e===n&&t===o&&(l.setActiveGroupElementId(s.id),c.target.onmouseup=null)}}}else{let t=[];if(t=i.value?[...c.value,s.id]:[s.id],s.groupId){const l=[];e.value.forEach(e=>{e.groupId===s.groupId&&l.push(e.id)}),t=[...t,...l]}l.setActiveElementIdList(Object(S["uniq"])(t)),l.setHandleElementId(s.id)}d&&t(o,s)};return{selectElement:s}},Tl=(e,t,l)=>{const c=T(),{activeElementIdList:n,activeGroupElementId:a}=Object(o["c"])(z()),{shiftKeyState:r}=Object(o["c"])(G()),{viewportRatio:i}=Object(o["c"])(c),{addHistorySnapshot:s}=Te(),d=(o,d)=>{const u=!(o instanceof MouseEvent);if(u&&(!o.changedTouches||!o.changedTouches[0]))return;if(!n.value.includes(d.id))return;let b=!0;const O=Ve,m=Ve*i.value,p=5,f=JSON.parse(JSON.stringify(e.value)),j=f.filter(e=>n.value.includes(e.id)),v=d.left,h=d.top,y=d.width,g="height"in d&&d.height?d.height:0,x="rotate"in d&&d.rotate?d.rotate:0,k=u?o.changedTouches[0].pageX:o.pageX,C=u?o.changedTouches[0].pageY:o.pageY;let N=null;const E=d.id===a.value;let w=[],V=[];for(const t of e.value){if("line"===t.type)continue;if(E&&t.id===d.id)continue;if(!E&&n.value.includes(t.id))continue;let e,l,c,o;if("rotate"in t&&t.rotate){const{xRange:n,yRange:a}=fe({left:t.left,top:t.top,width:t.width,height:t.height,rotate:t.rotate});e=n[0],l=a[0],c=n[1]-n[0],o=a[1]-a[0]}else e=t.left,l=t.top,c=t.width,o=t.height;const a=e+c,r=l+o,i=l+o/2,s=e+c/2,u={value:l,range:[e,a]},b={value:r,range:[e,a]},O={value:i,range:[e,a]},m={value:e,range:[l,r]},p={value:a,range:[l,r]},f={value:s,range:[l,r]};w.push(u,b,O),V.push(m,p,f)}const I={value:0,range:[0,O]},S={value:m,range:[0,O]},L={value:m/2,range:[0,O]},B={value:0,range:[0,m]},_={value:O,range:[0,m]},T={value:O/2,range:[0,m]};w.push(I,S,L),V.push(B,_,T),w=ye(w),V=ye(V);const M=c=>{const 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)Math.abs(s)&&(s=0),Math.abs(i)e.id===d.id?{...e,left:I,top:S}:e);else{const t=e.value.find(e=>e.id===d.id);if(!t)return;e.value=e.value.map(e=>n.value.includes(e.id)?e.id===d.id?{...e,left:I,top:S}:{...e,left:e.left+(I-t.left),top:e.top+(S-t.top)}:e)}},D=l=>{b=!1,document.ontouchmove=null,document.ontouchend=null,document.onmousemove=null,document.onmouseup=null,t.value=[];const n=l instanceof MouseEvent?l.pageX:l.changedTouches[0].pageX,o=l instanceof MouseEvent?l.pageY:l.changedTouches[0].pageY;k===n&&C===o||(c.updateSlide({elements:e.value}),s())};u?(document.ontouchmove=M,document.ontouchend=D):(document.onmousemove=M,document.onmouseup=D)};return{dragElement:d}},Ml=e=>{const t=T(),{canvasScale:l}=Object(o["c"])(z()),{addHistorySnapshot:c}=Te(),n=(n,o,a)=>{let r=!0;const i=8,s=n.pageX,d=n.pageY,u=[];for(let t=0;t{if(!r)return;const c=t.pageX,n=t.pageY,b=(c-s)/l.value,O=(n-d)/l.value;let m=o.left+o.start[0],p=o.top+o.start[1],f=o.left+o.end[0],j=o.top+o.end[1];const v=o.broken||o.curve||[0,0];let h=o.left+v[0],y=o.top+v[1];const[g,x]=o.cubic||[[0,0],[0,0]];let k=o.left+g[0],C=o.top+g[1],N=o.left+x[0],E=o.top+x[1];if(a===ee.START){m+=b,p+=O,Math.abs(m-f)f&&(L[0]=I-w,B[0]=0),p>j&&(L[1]=S-V,B[1]=0),e.value=e.value.map(e=>{if(e.id===o.id){const t={...e,left:w,top:V,start:L,end:B};return a===ee.START||a===ee.END?(o.broken&&(t.broken=[(L[0]+B[0])/2,(L[1]+B[1])/2]),o.curve&&(t.curve=[(L[0]+B[0])/2,(L[1]+B[1])/2]),o.cubic&&(t.cubic=[[(L[0]+B[0])/2,(L[1]+B[1])/2],[(L[0]+B[0])/2,(L[1]+B[1])/2]])):a===ee.C?(o.broken&&(t.broken=[h-w,y-V]),o.curve&&(t.curve=[h-w,y-V])):o.cubic&&(t.cubic=[[k-w,C-V],[N-w,E-V]]),t}return e})},document.onmouseup=l=>{r=!1,document.onmousemove=null,document.onmouseup=null;const n=l.pageX,o=l.pageY;s===n&&d===o||(t.updateSlide({elements:e.value}),c())}};return{dragLineElement:n}},Dl=(e,t)=>{const l=T(),{addHistorySnapshot:c}=Te(),n=(n,o)=>{const a=!(n instanceof MouseEvent);if(a&&(!n.changedTouches||!n.changedTouches[0]))return;let r=!0;const i=a?n.changedTouches[0].pageX:n.pageX,s=a?n.changedTouches[0].pageY:n.pageY,d=Le[o.pathFormula];let u=null;if("editable"in d){const e=d.getBaseSize(o.width,o.height),t=e*o.keypoint,[l,c]=d.range,n=d.relative;u={baseSize:e,originPos:t,min:l,max:c,relative:n}}const b=l=>{if(!r)return;const c=l instanceof MouseEvent?l.pageX:l.changedTouches[0].pageX,n=l instanceof MouseEvent?l.pageY:l.changedTouches[0].pageY,a=(c-i)/t.value,b=(n-s)/t.value;e.value=e.value.map(e=>{if(e.id===o.id&&u){const{baseSize:t,originPos:l,min:c,max:n,relative:o}=u,r=e;let i=0;return"left"===o&&(i=(l+a)/t),"right"===o&&(i=(l-a)/t),"center"===o&&(i=(l-2*a)/t),"top"===o&&(i=(l+b)/t),"bottom"===o&&(i=(l-b)/t),in&&(i=n),{...e,keypoint:i,path:d.formula(r.width,r.height,i)}}return e})},O=t=>{r=!1,document.ontouchmove=null,document.ontouchend=null,document.onmousemove=null,document.onmouseup=null;const n=t instanceof MouseEvent?t.pageX:t.changedTouches[0].pageX,o=t instanceof MouseEvent?t.pageY:t.changedTouches[0].pageY;i===n&&s===o||(l.updateSlide({elements:e.value}),c())};a?(document.ontouchmove=b,document.ontouchend=O):(document.onmousemove=b,document.onmouseup=O)};return{moveShapeKeypoint:n}},zl=e=>{const t=z(),{canvasScale:l,creatingElement:c}=Object(o["c"])(t),n=t=>{const{start:c,end:n}=t;if(!e.value)return;const o=e.value.getBoundingClientRect(),[a,r]=c,[i,s]=n,d=Math.min(a,i),u=Math.max(a,i),b=Math.min(r,s),O=Math.max(r,s),m=(d-o.x)/l.value,p=(b-o.y)/l.value,f=(u-d)/l.value,j=(O-b)/l.value;return{left:m,top:p,width:f,height:j}},a=t=>{const{start:c,end:n}=t;if(!e.value)return;const o=e.value.getBoundingClientRect(),[a,r]=c,[i,s]=n,d=Math.min(a,i),u=Math.max(a,i),b=Math.min(r,s),O=Math.max(r,s),m=(d-o.x)/l.value,p=(b-o.y)/l.value,f=(u-d)/l.value,j=(O-b)/l.value,v=[a===d?0:f,r===b?0:j],h=[i===d?0:f,s===b?0:j];return{left:m,top:p,start:v,end:h}},{createTextElement:r,createShapeElement:i,createLineElement:s}=Me(),d=e=>{if(!c.value)return;const l=c.value.type;if("text"===l){const t=n(e);t&&r(t,{vertical:c.value.vertical})}else if("shape"===l){const t=n(e);t&&i(t,c.value.data)}else if("line"===l){const t=a(e);t&&s(t,c.value.data)}t.setCreatingElement(null)};return{insertElementFromCreateSelection:d}},Fl=()=>{const e=T(),{activeElementIdList:t,activeElementList:l}=Object(o["c"])(z()),{currentSlide:c,viewportRatio:n}=Object(o["c"])(e),{addHistorySnapshot:a}=Te(),r=o=>{const r=Ve,i=Ve*n.value,{minX:s,maxX:d,minY:u,maxY:b}=he(l.value),O=JSON.parse(JSON.stringify(c.value.elements));for(const e of O)if(t.value.includes(e.id)){if(o===J.CENTER){const t=u+(b-u)/2-i/2,l=s+(d-s)/2-r/2;e.top=e.top-t,e.left=e.left-l}if(o===J.TOP){const t=u-0;e.top=e.top-t}else if(o===J.VERTICAL){const t=u+(b-u)/2-i/2;e.top=e.top-t}else if(o===J.BOTTOM){const t=b-i;e.top=e.top-t}else if(o===J.LEFT){const t=s-0;e.left=e.left-t}else if(o===J.HORIZONTAL){const t=s+(d-s)/2-r/2;e.left=e.left-t}else if(o===J.RIGHT){const t=d-r;e.left=e.left-t}}e.updateSlide({elements:O}),a()};return{alignElementToCanvas:r}},Al=e=>{const t=Object(n["computed"])(()=>{if(e.value){const{h:t,v:l,blur:c,color:n}=e.value;return`${t}px ${l}px ${c}px ${n}`}return""});return{shadowStyle:t}},$l=(e,t)=>{const l=Object(n["computed"])(()=>{let l="";return e.value&&t.value?l="rotateX(180deg) rotateY(180deg)":t.value?l="rotateX(180deg)":e.value&&(l="rotateY(180deg)"),l});return{flipStyle:l}};(function(e){e["RECT"]="rect",e["ELLIPSE"]="ellipse",e["POLYGON"]="polygon"})(Sl||(Sl={})),function(e){e["RECT"]="rect",e["ROUNDRECT"]="roundRect",e["ELLIPSE"]="ellipse",e["TRIANGLE"]="triangle",e["PENTAGON"]="pentagon",e["RHOMBUS"]="rhombus",e["STAR"]="star"}(Ll||(Ll={}));const Rl={rect:{name:"矩形",type:Sl.RECT,radius:"0",style:""},rect2:{name:"矩形2",type:Sl.POLYGON,style:"polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 0 100%)",createPath:(e,t)=>`M 0 0 L ${.8*e} 0 L ${e} ${.2*t} L ${e} ${t} L 0 ${t} Z`},rect3:{name:"矩形3",type:Sl.POLYGON,style:"polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 20% 100%, 0% 80%)",createPath:(e,t)=>`M 0 0 L ${.8*e} 0 L ${e} ${.2*t} L ${e} ${t} L ${.2*e} ${t} L 0 ${.8*t} Z`},roundRect:{name:"圆角矩形",type:Sl.RECT,radius:"10px",style:"inset(0 0 0 0 round 10px 10px 10px 10px)"},ellipse:{name:"圆形",type:Sl.ELLIPSE,style:"ellipse(50% 50% at 50% 50%)"},triangle:{name:"三角形",type:Sl.POLYGON,style:"polygon(50% 0%, 0% 100%, 100% 100%)",createPath:(e,t)=>`M ${.5*e} 0 L 0 ${t} L ${e} ${t} Z`},triangle2:{name:"三角形2",type:Sl.POLYGON,style:"polygon(50% 100%, 0% 0%, 100% 0%)",createPath:(e,t)=>`M ${.5*e} ${t} L 0 0 L ${e} 0 Z`},triangle3:{name:"三角形3",type:Sl.POLYGON,style:"polygon(0% 0%, 0% 100%, 100% 100%)",createPath:(e,t)=>`M 0 0 L 0 ${t} L ${e} ${t} Z`},rhombus:{name:"菱形",type:Sl.POLYGON,style:"polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)",createPath:(e,t)=>`M ${.5*e} 0 L ${e} ${.5*t} L ${.5*e} ${t} L 0 ${.5*t} Z`},pentagon:{name:"五边形",type:Sl.POLYGON,style:"polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%)",createPath:(e,t)=>`M ${.5*e} 0 L ${e} ${.38*t} L ${.82*e} ${t} L ${.18*e} ${t} L 0 ${.38*t} Z`},hexagon:{name:"六边形",type:Sl.POLYGON,style:"polygon(20% 0%, 80% 0%, 100% 50%, 80% 100%, 20% 100%, 0% 50%)",createPath:(e,t)=>`M ${.2*e} 0 L ${.8*e} 0 L ${e} ${.5*t} L ${.8*e} ${t} L ${.2*e} ${t} L 0 ${.5*t} Z`},heptagon:{name:"七边形",type:Sl.POLYGON,style:"polygon(50% 0%, 90% 20%, 100% 60%, 75% 100%, 25% 100%, 0% 60%, 10% 20%)",createPath:(e,t)=>`M ${.5*e} 0 L ${.9*e} ${.2*t} L ${e} ${.6*t} L ${.75*e} ${t} L ${.25*e} ${t} L 0 ${.6*t} L ${.1*e} ${.2*t} Z`},octagon:{name:"八边形",type:Sl.POLYGON,style:"polygon(30% 0%, 70% 0%, 100% 30%, 100% 70%, 70% 100%, 30% 100%, 0% 70%, 0% 30%)",createPath:(e,t)=>`M ${.3*e} 0 L ${.7*e} 0 L ${e} ${.3*t} L ${e} ${.7*t} L ${.7*e} ${t} L ${.3*e} ${t} L 0 ${.7*t} L 0 ${.3*t} Z`},chevron:{name:"V形",type:Sl.POLYGON,style:"polygon(75% 0%, 100% 50%, 75% 100%, 0% 100%, 25% 50%, 0% 0%)",createPath:(e,t)=>`M ${.75*e} 0 L ${e} ${.5*t} L ${.75*e} ${t} L 0 ${t} L ${.25*e} ${.5*t} L 0 0 Z`},point:{name:"点",type:Sl.POLYGON,style:"polygon(0% 0%, 75% 0%, 100% 50%, 75% 100%, 0% 100%)",createPath:(e,t)=>`M 0 0 L ${.75*e} 0 L ${e} ${.5*t} L ${.75*e} ${t} L 0 ${t} Z`},arrow:{name:"箭头",type:Sl.POLYGON,style:"polygon(0% 20%, 60% 20%, 60% 0%, 100% 50%, 60% 100%, 60% 80%, 0% 80%)",createPath:(e,t)=>`M 0 ${.2*t} L ${.6*e} ${.2*t} L ${.6*e} 0 L ${e} ${.5*t} L ${.6*e} ${t} L ${.6*e} ${.8*t} L 0 ${.8*t} Z`},parallelogram:{name:"平行四边形",type:Sl.POLYGON,style:"polygon(30% 0%, 100% 0%, 70% 100%, 0% 100%)",createPath:(e,t)=>`M ${.3*e} 0 L ${e} 0 L ${.7*e} ${t} L 0 ${t} Z`},parallelogram2:{name:"平行四边形2",type:Sl.POLYGON,style:"polygon(30% 100%, 100% 100%, 70% 0%, 0% 0%)",createPath:(e,t)=>`M ${.3*e} ${t} L ${e} ${t} L ${.7*e} 0 L 0 0 Z`},trapezoid:{name:"梯形",type:Sl.POLYGON,style:"polygon(25% 0%, 75% 0%, 100% 100%, 0% 100%)",createPath:(e,t)=>`M ${.25*e} 0 L ${.75*e} 0 L ${e} ${t} L 0 ${t} Z`},trapezoid2:{name:"梯形2",type:Sl.POLYGON,style:"polygon(0% 0%, 100% 0%, 75% 100%, 25% 100%)",createPath:(e,t)=>`M 0 0 L ${e} 0 L ${.75*e} ${t} L ${.25*e} ${t} Z`}};var Pl=e=>{const t=Object(n["computed"])(()=>{if(!e.value)return Rl.rect;const t=e.value.shape||Sl.RECT;return Rl[t]}),l=Object(n["computed"])(()=>{if(!e.value)return{top:"0",left:"0",width:"100%",height:"100%"};const[t,l]=e.value.range,c=(l[0]-t[0])/100,n=(l[1]-t[1])/100,o=t[0]/c,a=t[1]/n;return{left:-o+"%",top:-a+"%",width:100/c+"%",height:100/n+"%"}});return{clipShape:t,imgPosition:l}},Hl=e=>{const t=Object(n["computed"])(()=>{if(!e.value)return"";let t="";for(const l of Object.keys(e.value))t+=`${l}(${e.value[l]}) `;return t});return{filter:t}},ql=e=>{const t=Object(n["computed"])(()=>{var t,l;return null!==(t=null===(l=e.value)||void 0===l?void 0:l.width)&&void 0!==t?t:0}),l=Object(n["computed"])(()=>{var t;return(null===(t=e.value)||void 0===t?void 0:t.style)||"solid"}),c=Object(n["computed"])(()=>{var t;return(null===(t=e.value)||void 0===t?void 0:t.color)||"#d14424"});return{outlineWidth:t,outlineStyle:l,outlineColor:c}};const Ul=["width","height"],Gl=["rx","ry","width","height","stroke","stroke-width","stroke-dasharray"];var Xl=Object(n["defineComponent"])({__name:"ImageRectOutline",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},outline:{type:Object},radius:{type:String,default:"0"}},setup(e){const t=e,{outlineWidth:l,outlineStyle:c,outlineColor:o}=ql(Object(n["toRef"])(t,"outline"));return(t,a)=>e.outline?(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",{key:0,class:"image-rect-outline",overflow:"visible",width:e.width,height:e.height},[Object(n["createElementVNode"])("rect",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:"transparent",rx:e.radius,ry:e.radius,width:e.width,height:e.height,stroke:Object(n["unref"])(o),"stroke-width":Object(n["unref"])(l),"stroke-dasharray":"dashed"===Object(n["unref"])(c)?"10 6":"0 0"},null,8,Gl)],8,Ul)):Object(n["createCommentVNode"])("",!0)}});l("fef7");const Yl=Yt()(Xl,[["__scopeId","data-v-b5bace06"]]);var Zl=Yl;const Wl=["width","height"],Jl=["cx","cy","rx","ry","stroke","stroke-width","stroke-dasharray"];var Kl=Object(n["defineComponent"])({__name:"ImageEllipseOutline",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},outline:{type:Object}},setup(e){const t=e,{outlineWidth:l,outlineStyle:c,outlineColor:o}=ql(Object(n["toRef"])(t,"outline"));return(t,a)=>e.outline?(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",{key:0,class:"image-ellipse-outline",overflow:"visible",width:e.width,height:e.height},[Object(n["createElementVNode"])("ellipse",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:"transparent",cx:e.width/2,cy:e.height/2,rx:e.width/2,ry:e.height/2,stroke:Object(n["unref"])(o),"stroke-width":Object(n["unref"])(l),"stroke-dasharray":"dashed"===Object(n["unref"])(c)?"10 6":"0 0"},null,8,Jl)],8,Wl)):Object(n["createCommentVNode"])("",!0)}});l("45c15");const Ql=Yt()(Kl,[["__scopeId","data-v-71b17928"]]);var ec=Ql;const tc=["width","height"],lc=["d","stroke","stroke-width","stroke-dasharray"];var cc=Object(n["defineComponent"])({__name:"ImagePolygonOutline",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},outline:{type:Object},createPath:{type:Function,required:!0}},setup(e){const t=e,{outlineWidth:l,outlineStyle:c,outlineColor:o}=ql(Object(n["toRef"])(t,"outline"));return(t,a)=>e.outline?(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",{key:0,class:"image-polygon-outline",overflow:"visible",width:e.width,height:e.height},[Object(n["createElementVNode"])("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:"transparent",d:e.createPath(e.width,e.height),stroke:Object(n["unref"])(o),"stroke-width":Object(n["unref"])(l),"stroke-dasharray":"dashed"===Object(n["unref"])(c)?"10 6":"0 0"},null,8,lc)],8,tc)):Object(n["createCommentVNode"])("",!0)}});l("180d");const nc=Yt()(cc,[["__scopeId","data-v-41071294"]]);var oc=nc;const ac={class:"image-outline"};var rc=Object(n["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0}},setup(e){const t=e,l=Object(n["computed"])(()=>t.elementInfo.clip),{clipShape:c}=Pl(l);return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ac,["rect"===Object(n["unref"])(c).type?(Object(n["openBlock"])(),Object(n["createBlock"])(Zl,{key:0,width:e.elementInfo.width,height:e.elementInfo.height,radius:Object(n["unref"])(c).radius,outline:e.elementInfo.outline},null,8,["width","height","radius","outline"])):"ellipse"===Object(n["unref"])(c).type?(Object(n["openBlock"])(),Object(n["createBlock"])(ec,{key:1,width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"])):"polygon"===Object(n["unref"])(c).type?(Object(n["openBlock"])(),Object(n["createBlock"])(oc,{key:2,width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline,createPath:Object(n["unref"])(c).createPath},null,8,["width","height","outline","createPath"])):Object(n["createCommentVNode"])("",!0)]))}});const ic=rc;var sc=ic;const dc=e=>(Object(n["pushScopeId"])("data-v-3e0199ec"),e=e(),Object(n["popScopeId"])(),e),uc=["src"],bc=["src"],Oc=["onMousedown"],mc=dc(()=>Object(n["createElementVNode"])("svg",{width:"16",height:"16",fill:"#fff",stroke:"#333"},[Object(n["createElementVNode"])("path",{"stroke-width":"0.3","shape-rendering":"crispEdges",d:"M 16 0 L 0 0 L 0 16 L 4 16 L 4 4 L 16 4 L 16 0 Z"})],-1)),pc=[mc],fc=["onMousedown"],jc=dc(()=>Object(n["createElementVNode"])("svg",{width:"16",height:"16",fill:"#fff",stroke:"#333"},[Object(n["createElementVNode"])("path",{"stroke-width":"0.3","shape-rendering":"crispEdges",d:"M 16 0 L 0 0 L 0 4 L 16 4 Z"})],-1)),vc=[jc];var hc=Object(n["defineComponent"])({__name:"ImageClipHandler",props:{src:{type:String,required:!0},clipData:{type:Object},clipPath:{type:String,required:!0},width:{type:Number,required:!0},height:{type:Number,required:!0},top:{type:Number,required:!0},left:{type:Number,required:!0},rotate:{type:Number,required:!0}},emits:["clip"],setup(e,{emit:t}){const l=e,{canvasScale:c}=Object(o["c"])(z()),{ctrlOrShiftKeyActive:a}=Object(o["c"])(G()),r=Object(n["ref"])({top:"0",left:"0"}),i=Object(n["ref"])(!1),s=Object(n["ref"])(null),d=()=>{const[e,t]=l.clipData?l.clipData.range:[[0,0],[100,100]],c=(t[0]-e[0])/100,n=(t[1]-e[1])/100,o=e[0]/c,a=e[1]/n;return{widthScale:c,heightScale:n,left:o,top:a}},u=Object(n["computed"])(()=>{const{widthScale:e,heightScale:t,left:l,top:c}=d();return{left:-l,top:-c,width:100/e,height:100/t}}),b=Object(n["computed"])(()=>({top:u.value.top+"%",left:u.value.left+"%",width:u.value.width+"%",height:u.value.height+"%"})),O=Object(n["ref"])({top:0,left:0,width:0,height:0}),m=Object(n["computed"])(()=>{const{top:e,left:t,width:l,height:c}=O.value;return{top:e+"%",left:t+"%",width:l+"%",height:c+"%"}}),p=Object(n["computed"])(()=>{const e=u.value.width,t=u.value.height,{top:l,left:c,width:n,height:o}=O.value;return{left:100/n*-c+"%",top:100/o*-l+"%",width:e/n*100+"%",height:t/o*100+"%"}}),f=()=>{const{left:e,top:t}=d();O.value={left:e,top:t,width:100,height:100},r.value={top:-t+"%",left:-e+"%"}},j=()=>{if(i.value)return;if(!s.value)return void t("clip",null);const{left:e,top:c}=d(),n={left:(O.value.left-e)/100*l.width,top:(O.value.top-c)/100*l.height,width:(O.value.width-100)/100*l.width,height:(O.value.height-100)/100*l.height},o={range:s.value,position:n};t("clip",o)},v=e=>{const t=e.key.toUpperCase();t===te.ENTER&&j()};Object(n["onMounted"])(()=>{f(),document.addEventListener("keydown",v)}),Object(n["onUnmounted"])(()=>{document.removeEventListener("keydown",v)});const h=()=>{const e={left:parseInt(p.value.left),top:parseInt(p.value.top),width:parseInt(p.value.width),height:parseInt(p.value.height)},t=100/e.width,l=100/e.height,c=[-e.left*t,-e.top*l],n=[100*t+c[0],100*l+c[1]];s.value=[c,n]},y=e=>{i.value=!0;let t=!0;const n=e.pageX,o=e.pageY,a=u.value,r={...O.value};document.onmousemove=e=>{if(!t)return;const i=e.pageX,s=e.pageY;let d=(i-n)/c.value/l.width*100,u=(s-o)/c.value/l.height*100;l.rotate>45&&l.rotate<135&&(d=(s-o)/c.value/l.width*100,u=-(i-n)/c.value/l.height*100),(l.rotate>=135&&l.rotate<=180||l.rotate>=-180&&l.rotate<=-135)&&(d=-d,u=-u),l.rotate>-135&&l.rotate<-45&&(d=-(s-o)/c.value/l.width*100,u=(i-n)/c.value/l.height*100);let b=r.left+d,m=r.top+u;b<0?b=0:b+r.width>a.width&&(b=a.width-r.width),m<0?m=0:m+r.height>a.height&&(m=a.height-r.height),O.value={...O.value,left:b,top:m}},document.onmouseup=()=>{t=!1,document.onmousemove=null,document.onmouseup=null,h(),setTimeout(()=>{i.value=!1},0)}},g=(e,t)=>{i.value=!0;let n=!0;const o=50/l.width*100,r=50/l.height*100,s=e.pageX,d=e.pageY,b=u.value,m={...O.value},p=O.value.width/O.value.height;document.onmousemove=e=>{if(!n)return;const i=e.pageX,u=e.pageY;let f,j,v,h,y=(i-s)/c.value/l.width*100,g=(u-d)/c.value/l.height*100;l.rotate>45&&l.rotate<135&&(y=(u-d)/c.value/l.width*100,g=-(i-s)/c.value/l.height*100),(l.rotate>=135&&l.rotate<=180||l.rotate>=-180&&l.rotate<=-135)&&(y=-y,g=-g),l.rotate>-135&&l.rotate<-45&&(y=-(u-d)/c.value/l.width*100,g=(i-s)/c.value/l.height*100),a.value&&(t!==Q.RIGHT_BOTTOM&&t!==Q.LEFT_TOP||(g=y/p),t!==Q.LEFT_BOTTOM&&t!==Q.RIGHT_TOP||(g=-y/p)),t===Q.LEFT_TOP?(m.left+y<0&&(y=-m.left),m.top+g<0&&(g=-m.top),m.width-yb.width&&(y=b.width-(m.left+m.width)),m.top+g<0&&(g=-m.top),m.width+yb.height&&(g=b.height-(m.top+m.height)),m.width-yb.width&&(y=b.width-(m.left+m.width)),m.top+m.height+g>b.height&&(g=b.height-(m.top+m.height)),m.width+yb.height&&(g=b.height-(m.top+m.height)),m.height+gb.width&&(y=b.width-(m.left+m.width)),m.width+y{n=!1,document.onmousemove=null,document.onmouseup=null,h(),setTimeout(()=>i.value=!1,0)}},x=Object(n["computed"])(()=>{const e="rotate-",t=l.rotate;return t>-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}),k=[Q.LEFT_TOP,Q.RIGHT_TOP,Q.LEFT_BOTTOM,Q.RIGHT_BOTTOM],C=[Q.TOP,Q.BOTTOM,Q.LEFT,Q.RIGHT];return(t,l)=>{const c=Object(n["resolveDirective"])("click-outside");return Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"image-clip-handler",style:Object(n["normalizeStyle"])(r.value)},[Object(n["createElementVNode"])("img",{class:"bottom-img",src:e.src,draggable:!1,alt:"",style:Object(n["normalizeStyle"])(Object(n["unref"])(b))},null,12,uc),Object(n["createElementVNode"])("div",{class:"top-image-content",style:Object(n["normalizeStyle"])({...Object(n["unref"])(m),clipPath:e.clipPath})},[Object(n["createElementVNode"])("img",{class:"top-img",src:e.src,draggable:!1,alt:"",style:Object(n["normalizeStyle"])(Object(n["unref"])(p))},null,12,bc)],4),Object(n["createElementVNode"])("div",{class:"operate",style:Object(n["normalizeStyle"])(Object(n["unref"])(m)),onMousedown:l[0]||(l[0]=Object(n["withModifiers"])(e=>y(e),["stop"]))},[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(k,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["clip-point",e,Object(n["unref"])(x)]),key:e,onMousedown:Object(n["withModifiers"])(t=>g(t,e),["stop"])},pc,42,Oc)),64)),(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(C,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["clip-point",e,Object(n["unref"])(x)]),key:e,onMousedown:Object(n["withModifiers"])(t=>g(t,e),["stop"])},vc,42,fc)),64))],36)],4)),[[c,j]])}}});l("5970");const yc=Yt()(hc,[["__scopeId","data-v-3e0199ec"]]);var gc=yc;const xc=["src"];var kc=Object(n["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup(e){const t=e,l=z(),c=T(),{clipingImageElementId:a}=Object(o["c"])(l),r=Object(n["computed"])(()=>a.value===t.elementInfo.id),{addHistorySnapshot:i}=Te(),s=Object(n["computed"])(()=>t.elementInfo.shadow),{shadowStyle:d}=Al(s),u=Object(n["computed"])(()=>t.elementInfo.flipH),b=Object(n["computed"])(()=>t.elementInfo.flipV),{flipStyle:O}=$l(u,b),m=Object(n["computed"])(()=>t.elementInfo.clip),{clipShape:p,imgPosition:f}=Pl(m),j=Object(n["computed"])(()=>t.elementInfo.filters),{filter:v}=Hl(j),h=e=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},y=e=>{if(l.setClipingImageElementId(""),!e)return;const{range:n,position:o}=e,a=t.elementInfo.clip||{shape:"rect",range:[[0,0],[100,100]]},r=t.elementInfo.left+o.left,s=t.elementInfo.top+o.top,d=t.elementInfo.width+o.width,u=t.elementInfo.height+o.height;let b=0,O=0;if(t.elementInfo.rotate){const e=r+d/2-(t.elementInfo.left+t.elementInfo.width/2),l=-(s+u/2-(t.elementInfo.top+t.elementInfo.height/2)),c=-t.elementInfo.rotate*Math.PI/180,n=e*Math.cos(c)-l*Math.sin(c),o=e*Math.sin(c)+l*Math.cos(c);b=n-e,O=-(o-l)}const m={clip:{...a,range:n},left:r+b,top:s+O,width:d,height:u};c.updateElement({id:t.elementInfo.id,props:m}),i()};return(t,l)=>{const c=Object(n["resolveDirective"])("contextmenu");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["editable-element-image",{lock:e.elementInfo.lock}]),style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["unref"])(r)?(Object(n["openBlock"])(),Object(n["createBlock"])(gc,{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(n["unref"])(p).style,onClip:l[0]||(l[0]=e=>y(e))},null,8,["src","clipData","width","height","top","left","rotate","clipPath"])):Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:1,class:"element-content",style:Object(n["normalizeStyle"])({filter:Object(n["unref"])(d)?`drop-shadow(${Object(n["unref"])(d)})`:"",transform:Object(n["unref"])(O)}),onMousedown:l[2]||(l[2]=e=>h(e)),onTouchstart:l[3]||(l[3]=e=>h(e))},[Object(n["createVNode"])(sc,{elementInfo:e.elementInfo},null,8,["elementInfo"]),Object(n["createElementVNode"])("div",{class:"image-content",style:Object(n["normalizeStyle"])({clipPath:Object(n["unref"])(p).style})},[Object(n["createElementVNode"])("img",{src:e.elementInfo.src,draggable:!1,style:Object(n["normalizeStyle"])({top:Object(n["unref"])(f).top,left:Object(n["unref"])(f).left,width:Object(n["unref"])(f).width,height:Object(n["unref"])(f).height,filter:Object(n["unref"])(v)}),onDragstart:l[1]||(l[1]=Object(n["withModifiers"])(()=>{},["prevent"])),alt:""},null,44,xc),e.elementInfo.colorMask?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:"color-mask",style:Object(n["normalizeStyle"])({backgroundColor:e.elementInfo.colorMask.color,opacity:e.elementInfo.colorMask.opacity})},null,4)):Object(n["createCommentVNode"])("",!0)],4)],36)),[[c,e.contextmenus]])],4)],6)}}});l("bcf0");const Cc=Yt()(kc,[["__scopeId","data-v-963e3dfc"]]);var Nc=Cc;const Ec=["width","height"],wc=["d","stroke","stroke-width","stroke-dasharray"];var Vc=Object(n["defineComponent"])({__name:"ElementOutline",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},outline:{type:Object}},setup(e){const t=e,{outlineWidth:l,outlineStyle:c,outlineColor:o}=ql(Object(n["toRef"])(t,"outline"));return(t,a)=>e.outline?(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",{key:0,class:"element-outline",overflow:"visible",width:e.width,height:e.height},[Object(n["createElementVNode"])("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:"transparent",d:`M0,0 L${e.width},0 L${e.width},${e.height} L0,${e.height} Z`,stroke:Object(n["unref"])(o),"stroke-width":Object(n["unref"])(l),"stroke-dasharray":"dashed"===Object(n["unref"])(c)?"10 6":"0 0"},null,8,wc)],8,Ec)):Object(n["createCommentVNode"])("",!0)}});l("4731");const Ic=Yt()(Vc,[["__scopeId","data-v-61b7d06a"]]);var Sc=Ic,Lc=l("6ffb"),Bc=l("703f"),_c=l("6f27"),Tc=l("e3da"),Mc=l("f201"),Dc=l("a59f"),zc=l("224d"),Fc=l("838c"),Ac=l("72a8");const $c=e=>{const t={},l=(e,l)=>t[e]=l;return l("Alt-ArrowUp",s["c"]),l("Alt-ArrowDown",s["b"]),l("Ctrl-z",Mc["c"]),l("Ctrl-y",Mc["b"]),l("Backspace",Ac["f"]),l("Escape",s["e"]),l("Ctrl-b",Object(s["f"])(e.marks.strong)),l("Ctrl-i",Object(s["f"])(e.marks.em)),l("Ctrl-u",Object(s["f"])(e.marks.underline)),l("Ctrl-d",Object(s["f"])(e.marks.strikethrough)),l("Enter",Object(Fc["d"])(e.nodes.list_item)),l("Mod-[",Object(Fc["a"])(e.nodes.list_item)),l("Mod-]",Object(Fc["c"])(e.nodes.list_item)),t},Rc=e=>Object(Ac["g"])(/^\s*>\s$/,e),Pc=e=>Object(Ac["g"])(/^(\d+)\.\s$/,e,e=>({order:+e[1]}),(e,t)=>t.childCount+t.attrs.order===+e[1]),Hc=e=>Object(Ac["g"])(/^\s*([-+*])\s$/,e),qc=e=>Object(Ac["e"])(/^```$/,e),Uc=e=>{const t=[...Ac["d"],Ac["a"],Ac["b"]];return t.push(Rc(e.nodes.blockquote)),t.push(Pc(e.nodes.ordered_list)),t.push(Hc(e.nodes.bullet_list)),t.push(qc(e.nodes.code_block)),Object(Ac["c"])({rules:t})},Gc=e=>[Uc(e),Object(Tc["b"])($c(e)),Object(Tc["b"])(s["a"]),Object(Dc["a"])(),Object(zc["a"])(),Object(Mc["a"])()];var Xc=l("f899");const Yc={attrs:{order:{default:1},listStyleType:{default:""}},content:"list_item+",group:"block",parseDOM:[{tag:"ol",getAttrs:e=>{const t=(e.hasAttribute("start")?e.getAttribute("start"):1)||1,l={order:+t},{listStyleType:c}=e.style;return c&&(l["listStyleType"]=c),l}}],toDOM:e=>{const{order:t,listStyleType:l}=e.attrs;let c="";l&&(c+=`list-style-type: ${l};`);const n={style:c};return 1!==t&&(n["start"]=t),["ol",n,0]}},Zc={attrs:{listStyleType:{default:""}},content:"list_item+",group:"block",parseDOM:[{tag:"ul",getAttrs:e=>{const{listStyleType:t}=e.style;return t?{listStyleType:t}:{}}}],toDOM:e=>{const{listStyleType:t}=e.attrs;let l="";return t&&(l+=`list-style-type: ${t};`),["ul",{style:l},0]}},Wc={...Fc["b"],content:"paragraph block*",group:"block"},Jc={attrs:{align:{default:""},indent:{default:0}},content:"inline*",group:"block",parseDOM:[{tag:"p",getAttrs:e=>{const{textAlign:t}=e.style;let l=e.getAttribute("align")||t||"";l=/(left|right|center|justify)/.test(l)?l:"";const c=+(e.getAttribute("data-indent")||0);return{align:l,indent:c}}},{tag:"img",ignore:!0},{tag:"pre",skip:!0}],toDOM:e=>{const{align:t,indent:l}=e.attrs;let c="";t&&"left"!==t&&(c+=`text-align: ${t};`);const n={style:c};return l&&(n["data-indent"]=l),["p",n,0]}},{hard_break:Kc,...Qc}=Xc["b"];var en={...Qc,ordered_list:Yc,bullet_list:Zc,list_item:Wc,paragraph:Jc};const tn={excludes:"subscript",parseDOM:[{tag:"sub"},{style:"vertical-align",getAttrs:e=>"sub"===e&&null}],toDOM:()=>["sub",0]},ln={excludes:"superscript",parseDOM:[{tag:"sup"},{style:"vertical-align",getAttrs:e=>"super"===e&&null}],toDOM:()=>["sup",0]},cn={parseDOM:[{tag:"strike"},{style:"text-decoration",getAttrs:e=>"line-through"===e&&null},{style:"text-decoration-line",getAttrs:e=>"line-through"===e&&null}],toDOM:()=>["span",{style:"text-decoration-line: line-through"},0]},nn={parseDOM:[{tag:"u"},{style:"text-decoration",getAttrs:e=>"underline"===e&&null},{style:"text-decoration-line",getAttrs:e=>"underline"===e&&null}],toDOM:()=>["span",{style:"text-decoration: underline"},0]},on={attrs:{color:{}},inline:!0,group:"inline",parseDOM:[{style:"color",getAttrs:e=>e?{color:e}:{}}],toDOM:e=>{const{color:t}=e.attrs;let l="";return t&&(l+=`color: ${t};`),["span",{style:l},0]}},an={attrs:{backcolor:{}},inline:!0,group:"inline",parseDOM:[{style:"background-color",getAttrs:e=>e?{backcolor:e}:{}}],toDOM:e=>{const{backcolor:t}=e.attrs;let l="";return t&&(l+=`background-color: ${t};`),["span",{style:l},0]}},rn={attrs:{fontsize:{}},inline:!0,group:"inline",parseDOM:[{style:"font-size",getAttrs:e=>e?{fontsize:e}:{}}],toDOM:e=>{const{fontsize:t}=e.attrs;let l="";return t&&(l+="font-size: "+t),["span",{style:l},0]}},sn={attrs:{fontname:{}},inline:!0,group:"inline",parseDOM:[{style:"font-family",getAttrs:e=>({fontname:e&&"string"===typeof e?e.replace(/[\"\']/g,""):""})}],toDOM:e=>{const{fontname:t}=e.attrs;let l="";return t&&(l+="font-family: "+t),["span",{style:l},0]}},dn={attrs:{href:{},title:{default:null},target:{default:"_blank"}},inclusive:!1,parseDOM:[{tag:"a[href]",getAttrs:e=>{const t=e.getAttribute("href"),l=e.getAttribute("title");return{href:t,title:l}}}],toDOM:e=>["a",e.attrs,0]};var un={...Xc["a"],fontsize:rn,fontname:sn,forecolor:on,backcolor:an,subscript:tn,superscript:ln,strikethrough:cn,underline:nn,link:dn};const bn=en,On=un,mn=new _c["i"]({nodes:bn,marks:On}),pn=e=>{const t=`
${e}
`,l=new window.DOMParser,c=l.parseFromString(t,"text/html").body.firstElementChild;return _c["a"].fromSchema(mn).parse(c)},fn=(e,t,l={})=>new Bc["c"](e,{state:Lc["b"].create({doc:pn(t),plugins:Gc(mn)}),...l});var jn,vn=l("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"})(jn||(jn={}));const hn=Object(vn["a"])();var yn=hn;const gn=(e,t,l)=>{const{selection:c,doc:n}=e;if(!c||!n)return e;const{from:o,to:a}=c,{nodes:r}=t,i=r.blockquote,s=r.list_item,d=r.paragraph,u=[];l=l||"";const b=new Set([i,s,d]);return n.nodesBetween(o,a,(e,t)=>{const c=e.type,n=e.attrs.align||"";return n!==l&&b.has(c)&&u.push({node:e,pos:t,nodeType:c}),!0}),u.length?(u.forEach(t=>{const{node:c,pos:n,nodeType:o}=t;let{attrs:a}=c;a=l?{...a,align:l}:{...a,align:null},e=e.setNodeMarkup(n,o,a,c.marks)}),e):e},xn=(e,t)=>{const{state:l}=e,{schema:c,selection:n}=l,o=gn(l.tr.setSelection(n),c,t);e.dispatch(o)},kn=(e,t)=>e.type===t.nodes.bullet_list||e.type===t.nodes.ordered_list,Cn=(e,t,l)=>(c,n)=>{const{schema:o,selection:a}=c,{$from:r,$to:i}=a,s=r.blockRange(i);if(!s)return!1;const d=p(e=>kn(e,o))(a);if(s.depth>=1&&d&&s.depth-d.depth<=1){if(d.node.type===e&&!l)return Object(Fc["a"])(t)(c,n);if(kn(d.node,o)&&e.validContent(d.node.content)){const{tr:t}=c;if(l){const c={...d.node.attrs,listStyleType:l};t.setNodeMarkup(d.pos,e,c)}else t.setNodeMarkup(d.pos,e);return n&&n(t),!1}}return l?Object(Fc["e"])(e,{listStyleType:l})(c,n):Object(Fc["e"])(e)(c,n)};function Nn(e,t,l){if(!e.doc)return e;const c=e.doc.nodeAt(t);if(!c)return e;const n=0,o=7;let a=(c.attrs.indent||0)+l;if(ao&&(a=o),a===c.attrs.indent)return e;const r={...c.attrs,indent:a};return e.setNodeMarkup(t,c.type,r,c.marks)}const En=(e,t,l)=>{const{selection:c,doc:n}=e;if(!c||!n)return e;if(!(c instanceof Lc["g"]||c instanceof Lc["a"]))return e;const{from:o,to:a}=c;return n.nodesBetween(o,a,(c,n)=>{const o=c.type;return"paragraph"===o.name||"blockquote"===o.name?(e=Nn(e,n,l),!1):!kn(c,t)}),e},wn=(e,t)=>{const{state:l}=e,{schema:c,selection:n}=l,o=En(l.tr.setSelection(n),c,t);return!!o.docChanged&&(e.dispatch(o),!0)};var Vn=Object(n["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","mousedown"],setup(e,{expose:t,emit:l}){const c=e,a=z(),{handleElementId:r,textFormatPainter:i}=Object(o["c"])(a),O=Object(n["ref"])();let m;const p=Object(S["debounce"])((function(){l("update",m.dom.innerHTML)}),300,{trailing:!0}),f=()=>{a.setDisableHotkeysState(!0),l("focus")},j=()=>{a.setDisableHotkeysState(!1),l("blur")},v=Object(S["debounce"])((function(){const e=C(m,{color:c.defaultColor,fontname:c.defaultFontName});a.setRichtextAttrs(e)}),30,{trailing:!0}),h=()=>{p(),v()},y=Object(n["computed"])(()=>c.value);Object(n["watch"])(y,()=>{if(!m)return;if(m.hasFocus())return;const{doc:e,tr:t}=m.state;m.dispatch(t.replaceRangeWith(0,e.content.size,pn(y.value)))}),Object(n["watch"])(()=>c.editable,()=>{m.setProps({editable:()=>c.editable})});const x=()=>m.focus();t({focus:x});const k=({target:e,action:t})=>{if(!e&&r.value!==c.elementId)return;if(e&&e!==c.elementId)return;const l="command"in t?[t]:t;for(const c of l)if("fontname"===c.command&&c.value){const e=m.state.schema.marks.fontname.create({fontname:c.value});d(m),u(m,e)}else if("fontsize"===c.command&&c.value){const e=m.state.schema.marks.fontsize.create({fontsize:c.value});d(m),u(m,e)}else if("fontsize-add"===c.command){const e=c.value?+c.value:2;d(m);const t=N(m)+e+"px",l=m.state.schema.marks.fontsize.create({fontsize:t});u(m,l)}else if("fontsize-reduce"===c.command){const e=c.value?+c.value:2;d(m);let t=N(m)-e;t<12&&(t=12);const l=m.state.schema.marks.fontsize.create({fontsize:t+"px"});u(m,l)}else if("color"===c.command&&c.value){const e=m.state.schema.marks.forecolor.create({color:c.value});d(m),u(m,e)}else if("backcolor"===c.command&&c.value){const e=m.state.schema.marks.backcolor.create({backcolor:c.value});d(m),u(m,e)}else if("bold"===c.command)d(m),Object(s["f"])(m.state.schema.marks.strong)(m.state,m.dispatch);else if("em"===c.command)d(m),Object(s["f"])(m.state.schema.marks.em)(m.state,m.dispatch);else if("underline"===c.command)d(m),Object(s["f"])(m.state.schema.marks.underline)(m.state,m.dispatch);else if("strikethrough"===c.command)d(m),Object(s["f"])(m.state.schema.marks.strikethrough)(m.state,m.dispatch);else if("subscript"===c.command)Object(s["f"])(m.state.schema.marks.subscript)(m.state,m.dispatch);else if("superscript"===c.command)Object(s["f"])(m.state.schema.marks.superscript)(m.state,m.dispatch);else if("blockquote"===c.command)Object(s["g"])(m.state.schema.nodes.blockquote)(m.state,m.dispatch);else if("code"===c.command)Object(s["f"])(m.state.schema.marks.code)(m.state,m.dispatch);else if("align"===c.command&&c.value)xn(m,c.value);else if("indent"===c.command&&c.value)wn(m,+c.value);else if("bulletList"===c.command){const e=c.value||"",{bullet_list:t,list_item:l}=m.state.schema.nodes;Cn(t,l,e)(m.state,m.dispatch)}else if("orderedList"===c.command){const e=c.value||"",{ordered_list:t,list_item:l}=m.state.schema.nodes;Cn(t,l,e)(m.state,m.dispatch)}else if("clear"===c.command){d(m);const{$from:e,$to:t}=m.state.selection;m.dispatch(m.state.tr.removeMark(e.pos,t.pos))}else if("link"===c.command){const e=m.state.schema.marks.link,{from:t,to:l}=m.state.selection,n=b(m.state.doc,t,l,e);if(n)if(c.value){const e=m.state.schema.marks.link.create({href:c.value,title:c.value});u(m,e,{from:n.from.pos,to:n.to.pos+1})}else m.dispatch(m.state.tr.removeMark(n.from.pos,n.to.pos+1,e));else if(g(m.state,e))if(c.value){const e=m.state.schema.marks.link.create({href:c.value,title:c.value});u(m,e)}else Object(s["f"])(e)(m.state,m.dispatch);else c.value&&(d(m),Object(s["f"])(e,{href:c.value,title:c.value})(m.state,m.dispatch))}else"insert"===c.command&&c.value&&m.dispatch(m.state.tr.insertText(c.value));m.focus(),p(),v()},E=()=>{if(!i.value)return;const e=[{command:"clear"}];for(const t of Object.keys(i.value)){const l=t,c=i.value[t];c&&e.push({command:l,value:c})}k({action:e}),a.setTextFormatPainter(null)};return Object(n["onMounted"])(()=>{m=fn(O.value,y.value,{handleDOMEvents:{focus:f,blur:j,keydown:h,click:v,mouseup:E},editable:()=>c.editable}),c.autoFocus&&m.focus()}),Object(n["onUnmounted"])(()=>{m&&m.destroy()}),yn.on(jn.RICH_TEXT_COMMAND,k),Object(n["onUnmounted"])(()=>{yn.off(jn.RICH_TEXT_COMMAND,k)}),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["prosemirror-editor",{"format-painter":Object(n["unref"])(i)}]),ref_key:"editorViewRef",ref:O,onMousedown:t[0]||(t[0]=e=>l("mousedown",e))},null,34))}});l("36e5");const In=Yt()(Vn,[["__scopeId","data-v-76d3203e"]]);var Sn=In;const Ln=e=>(Object(n["pushScopeId"])("data-v-9be58c0a"),e=e(),Object(n["popScopeId"])(),e),Bn=Ln(()=>Object(n["createElementVNode"])("div",{class:"drag-handler top"},null,-1)),_n=Ln(()=>Object(n["createElementVNode"])("div",{class:"drag-handler bottom"},null,-1));var Tn=Object(n["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup(e){const t=e,l=z(),c=T(),{handleElementId:a,isScaling:r}=Object(o["c"])(l),{addHistorySnapshot:i}=Te(),s=Object(n["ref"])(),d=Object(n["computed"])(()=>t.elementInfo.shadow),{shadowStyle:u}=Al(d),b=(e,l=!0)=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo,l))},O=Object(n["ref"])(-1),m=Object(n["ref"])(-1);Object(n["watch"])(r,()=>{a.value===t.elementInfo.id&&(r.value||(t.elementInfo.vertical||-1===O.value||(c.updateElement({id:t.elementInfo.id,props:{height:O.value}}),O.value=-1),t.elementInfo.vertical&&-1!==m.value&&(c.updateElement({id:t.elementInfo.id,props:{width:m.value}}),m.value=-1)))});const p=e=>{const l=e[0].contentRect;if(!s.value)return;const n=l.height+20,o=l.width+20;t.elementInfo.vertical||t.elementInfo.height===n||(r.value?O.value=n:c.updateElement({id:t.elementInfo.id,props:{height:n}})),t.elementInfo.vertical&&t.elementInfo.width!==o&&(r.value?m.value=o:c.updateElement({id:t.elementInfo.id,props:{width:o}}))},f=new ResizeObserver(p);Object(n["onMounted"])(()=>{s.value&&f.observe(s.value)}),Object(n["onUnmounted"])(()=>{s.value&&f.unobserve(s.value)});const j=e=>{c.updateElement({id:t.elementInfo.id,props:{content:e}}),i()},v=()=>{const e=t.elementInfo.content.replaceAll(/<[^>]+>/g,"");e||c.deleteElement(t.elementInfo.id)},h=Object(n["computed"])(()=>a.value===t.elementInfo.id);return Object(n["watch"])(h,()=>{h.value||v()}),(t,l)=>{const c=Object(n["resolveDirective"])("contextmenu");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["editable-element-text",{lock:e.elementInfo.lock}]),style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"element-content",ref_key:"elementRef",ref:s,style:Object(n["normalizeStyle"])({width:e.elementInfo.vertical?"auto":e.elementInfo.width+"px",height:e.elementInfo.vertical?e.elementInfo.height+"px":"auto",backgroundColor:e.elementInfo.fill,opacity:e.elementInfo.opacity,textShadow:Object(n["unref"])(u),lineHeight:e.elementInfo.lineHeight,letterSpacing:(e.elementInfo.wordSpace||0)+"px",color:e.elementInfo.defaultColor,fontFamily:e.elementInfo.defaultFontName,writingMode:e.elementInfo.vertical?"vertical-rl":"horizontal-tb"}),onMousedown:l[2]||(l[2]=e=>b(e)),onTouchstart:l[3]||(l[3]=e=>b(e))},[Object(n["createVNode"])(Sc,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(n["createVNode"])(Sn,{class:"text",elementId:e.elementInfo.id,defaultColor:e.elementInfo.defaultColor,defaultFontName:e.elementInfo.defaultFontName,editable:!e.elementInfo.lock,value:e.elementInfo.content,style:Object(n["normalizeStyle"])({"--textIndent":(e.elementInfo.textIndent||0)+"px","--paragraphSpace":(void 0===e.elementInfo.paragraphSpace?5:e.elementInfo.paragraphSpace)+"px"}),onUpdate:l[0]||(l[0]=e=>j(e)),onMousedown:l[1]||(l[1]=e=>b(e,!1))},null,8,["elementId","defaultColor","defaultFontName","editable","value","style"]),Bn,_n],36)),[[c,e.contextmenus]])],4)],6)}}});l("bad1");const Mn=Yt()(Tn,[["__scopeId","data-v-9be58c0a"]]);var Dn=Mn;const zn=["id","gradientTransform"],Fn=["stop-color"],An=["stop-color"],$n=["id"],Rn=["stop-color"],Pn=["stop-color"];var Hn=Object(n["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(e){return(t,l)=>"linear"===e.type?(Object(n["openBlock"])(),Object(n["createElementBlock"])("linearGradient",{key:0,id:e.id,x1:"0%",y1:"0%",x2:"100%",y2:"0%",gradientTransform:`rotate(${e.rotate},0.5,0.5)`},[Object(n["createElementVNode"])("stop",{offset:"0%","stop-color":e.color1},null,8,Fn),Object(n["createElementVNode"])("stop",{offset:"100%","stop-color":e.color2},null,8,An)],8,zn)):(Object(n["openBlock"])(),Object(n["createElementBlock"])("radialGradient",{key:1,id:e.id},[Object(n["createElementVNode"])("stop",{offset:"0%","stop-color":e.color1},null,8,Rn),Object(n["createElementVNode"])("stop",{offset:"100%","stop-color":e.color2},null,8,Pn)],8,$n))}});const qn=Hn;var Un=qn;const Gn=["width","height"],Xn={key:0},Yn=["transform"],Zn=["d","fill","stroke","stroke-width","stroke-dasharray"];var Wn=Object(n["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup(e){const t=e,l=z(),c=T(),{handleElementId:a}=Object(o["c"])(l),{addHistorySnapshot:r}=Te(),i=(e,l=!0)=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo,l))},s=Object(n["computed"])(()=>t.elementInfo.outline),{outlineWidth:d,outlineStyle:u,outlineColor:b}=ql(s),O=Object(n["computed"])(()=>t.elementInfo.shadow),{shadowStyle:m}=Al(O),p=Object(n["computed"])(()=>t.elementInfo.flipH),f=Object(n["computed"])(()=>t.elementInfo.flipV),{flipStyle:j}=$l(p,f),v=Object(n["ref"])(!1);Object(n["watch"])(a,()=>{a.value!==t.elementInfo.id&&v.value&&(v.value=!1)});const h=Object(n["computed"])(()=>{const e={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"};return t.elementInfo.text?t.elementInfo.text:e}),y=e=>{const l={...h.value,content:e};c.updateElement({id:t.elementInfo.id,props:{text:l}}),r()},g=()=>{if(!t.elementInfo.text)return;const e=t.elementInfo.text.content.replaceAll(/<[^>]+>/g,"");e||(c.removeElementProps({id:t.elementInfo.id,propName:"text"}),r())},x=Object(n["ref"])(),k=()=>{v.value=!0,Object(n["nextTick"])(()=>x.value&&x.value.focus())};return(t,l)=>{const c=Object(n["resolveDirective"])("contextmenu");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["editable-element-shape",{lock:e.elementInfo.lock}]),style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"element-content",style:Object(n["normalizeStyle"])({opacity:e.elementInfo.opacity,filter:Object(n["unref"])(m)?`drop-shadow(${Object(n["unref"])(m)})`:"",transform:Object(n["unref"])(j),color:Object(n["unref"])(h).defaultColor,fontFamily:Object(n["unref"])(h).defaultFontName}),onMousedown:l[3]||(l[3]=e=>i(e)),onTouchstart:l[4]||(l[4]=e=>i(e)),onDblclick:l[5]||(l[5]=e=>k())},[(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height},[e.elementInfo.gradient?(Object(n["openBlock"])(),Object(n["createElementBlock"])("defs",Xn,[Object(n["createVNode"])(Un,{id:"editabel-gradient-"+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(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("g",{transform:`scale(${e.elementInfo.width/e.elementInfo.viewBox[0]}, ${e.elementInfo.height/e.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`},[Object(n["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-${e.elementInfo.id})`:e.elementInfo.fill,stroke:Object(n["unref"])(b),"stroke-width":Object(n["unref"])(d),"stroke-dasharray":"dashed"===Object(n["unref"])(u)?"10 6":"0 0"},null,8,Zn)],8,Yn)],8,Gn)),Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["shape-text",[Object(n["unref"])(h).align,{editable:v.value||Object(n["unref"])(h).content}]])},[v.value||Object(n["unref"])(h).content?(Object(n["openBlock"])(),Object(n["createBlock"])(Sn,{key:0,ref_key:"prosemirrorEditorRef",ref:x,elementId:e.elementInfo.id,defaultColor:Object(n["unref"])(h).defaultColor,defaultFontName:Object(n["unref"])(h).defaultFontName,editable:!e.elementInfo.lock,value:Object(n["unref"])(h).content,onUpdate:l[0]||(l[0]=e=>y(e)),onBlur:l[1]||(l[1]=e=>g()),onMousedown:l[2]||(l[2]=e=>i(e,!1))},null,8,["elementId","defaultColor","defaultFontName","editable","value"])):Object(n["createCommentVNode"])("",!0)],2)],36)),[[c,e.contextmenus]])],4)],6)}}});l("afc8");const Jn=Yt()(Wn,[["__scopeId","data-v-486128e0"]]);var Kn=Jn;const Qn=["id","markerWidth","markerHeight","refX","refY"],eo=["d","fill","transform"];var to=Object(n["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(e){const t=e,l={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(n["computed"])(()=>l[t.type]),a=Object(n["computed"])(()=>c[`${t.type}-${t.position}`]||0),r=Object(n["computed"])(()=>t.baseSize<2?2:t.baseSize);return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("marker",{id:`${e.id}-${e.type}-${e.position}`,markerUnits:"userSpaceOnUse",orient:"auto",markerWidth:3*Object(n["unref"])(r),markerHeight:3*Object(n["unref"])(r),refX:1.5*Object(n["unref"])(r),refY:1.5*Object(n["unref"])(r)},[Object(n["createElementVNode"])("path",{d:Object(n["unref"])(o),fill:e.color,transform:`scale(${.3*Object(n["unref"])(r)}, ${.3*Object(n["unref"])(r)}) rotate(${Object(n["unref"])(a)}, 5, 5)`},null,8,eo)],8,Qn))}});const lo=to;var co=lo;const no=["width","height"],oo=["d","stroke","stroke-width","stroke-dasharray","marker-start","marker-end"],ao=["d"];var ro=Object(n["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup(e){const t=e,l=e=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},c=Object(n["computed"])(()=>t.elementInfo.shadow),{shadowStyle:o}=Al(c),a=Object(n["computed"])(()=>{const e=Math.abs(t.elementInfo.start[0]-t.elementInfo.end[0]);return e<24?24:e}),r=Object(n["computed"])(()=>{const e=Math.abs(t.elementInfo.start[1]-t.elementInfo.end[1]);return e<24?24:e}),i=Object(n["computed"])(()=>"dashed"===t.elementInfo.style?"10 6":"0 0"),s=Object(n["computed"])(()=>Ce(t.elementInfo));return(t,c)=>{const d=Object(n["resolveDirective"])("contextmenu");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["editable-element-shape",{lock:e.elementInfo.lock}]),style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px"})},[Object(n["createElementVNode"])("div",{class:"element-content",style:Object(n["normalizeStyle"])({filter:Object(n["unref"])(o)?`drop-shadow(${Object(n["unref"])(o)})`:""}),onMousedown:c[0]||(c[0]=e=>l(e)),onTouchstart:c[1]||(c[1]=e=>l(e))},[(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",{overflow:"visible",width:Object(n["unref"])(a),height:Object(n["unref"])(r)},[Object(n["createElementVNode"])("defs",null,[e.elementInfo.points[0]?(Object(n["openBlock"])(),Object(n["createBlock"])(co,{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(n["createCommentVNode"])("",!0),e.elementInfo.points[1]?(Object(n["openBlock"])(),Object(n["createBlock"])(co,{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(n["createCommentVNode"])("",!0)]),Object(n["createElementVNode"])("path",{class:"line-point",d:Object(n["unref"])(s),stroke:e.elementInfo.color,"stroke-width":e.elementInfo.width,"stroke-dasharray":Object(n["unref"])(i),fill:"none","marker-start":e.elementInfo.points[0]?`url(#${e.elementInfo.id}-${e.elementInfo.points[0]}-start)`:"","marker-end":e.elementInfo.points[1]?`url(#${e.elementInfo.id}-${e.elementInfo.points[1]}-end)`:""},null,8,oo),Object(n["withDirectives"])(Object(n["createElementVNode"])("path",{class:"line-path",d:Object(n["unref"])(s),stroke:"transparent","stroke-width":"20",fill:"none"},null,8,ao),[[d,e.contextmenus]])],8,no))],36)],6)}}});l("bde5");const io=Yt()(ro,[["__scopeId","data-v-6550e504"]]);var so=io,uo=l("b239"),bo=(l("21d9"),Object(n["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(e){const t=e,l=Object(n["ref"])(),c=Object(n["inject"])(vl)||Object(n["ref"])(1);let o;const a=Object(n["computed"])(()=>t.legend?t.height-20:t.height),r=()=>({...t.data,series:t.data.series[0]}),i=()=>{const e=t.options||{};return{...e,width:t.width*c.value,height:a.value*c.value}},s=()=>{if(!l.value)return;const e=i();"bar"===t.type&&(o=new uo["a"](l.value,t.data,e)),"line"===t.type&&(o=new uo["b"](l.value,t.data,e)),"pie"===t.type&&(o=new uo["c"](l.value,r(),e))},d=()=>{if(!o)return void s();const e=i(),l="pie"===t.type?r():t.data;o.update(l,e)};Object(n["watch"])([()=>t.width,()=>t.height,()=>t.data,()=>t.options,c],d),Object(n["onMounted"])(s);const u=Object(n["computed"])(()=>{let e=[];if(t.themeColor.length>=10)e=t.themeColor;else if(1===t.themeColor.length)e=I()(t.themeColor[0]).analogous(10).map(e=>e.toHexString());else{const l=t.themeColor.length,c=I()(t.themeColor[l-1]).analogous(11-l).map(e=>e.toHexString());e=[...t.themeColor.slice(0,l-1),...c]}return e}),b=()=>{if(l.value)for(let e=0;e<10;e++)l.value.style.setProperty("--theme-color-"+(e+1),u.value[e])};Object(n["watch"])(u,b),Object(n["onMounted"])(b);const O=()=>{l.value&&t.gridColor&&l.value.style.setProperty("--grid-color",t.gridColor)};return Object(n["watch"])(()=>t.gridColor,O),Object(n["onMounted"])(O),(t,o)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"chart",style:Object(n["normalizeStyle"])({flexDirection:"top"===e.legend?"column-reverse":"column"})},[Object(n["createElementVNode"])("div",{class:"chart-content",ref_key:"chartRef",ref:l,style:Object(n["normalizeStyle"])({width:e.width+"px",height:Object(n["unref"])(a)+"px",transform:`scale(${1/Object(n["unref"])(c)})`})},null,4),e.legend?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:"legends",style:Object(n["normalizeStyle"])({transform:`scale(${1/Object(n["unref"])(c)})`})},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.legends,(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"legend",key:l,style:Object(n["normalizeStyle"])({color:e.gridColor})},[Object(n["createElementVNode"])("div",{class:"block",style:Object(n["normalizeStyle"])({backgroundColor:Object(n["unref"])(u)[l]})},null,4),Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(t),1)],4))),128))],4)):Object(n["createCommentVNode"])("",!0)],4))}}));l("6116"),l("68b8");const Oo=Yt()(bo,[["__scopeId","data-v-1f8d633e"]]);var mo=Oo,po=Object(n["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup(e){const t=e,l=e=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},c=()=>{yn.emit(jn.OPEN_CHART_DATA_EDITOR)};return(t,o)=>{const a=Object(n["resolveDirective"])("contextmenu");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["editable-element-chart",{lock:e.elementInfo.lock}]),style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"element-content",style:Object(n["normalizeStyle"])({backgroundColor:e.elementInfo.fill}),onMousedown:o[0]||(o[0]=e=>l(e)),onTouchstart:o[1]||(o[1]=e=>l(e)),onDblclick:o[2]||(o[2]=e=>c())},[Object(n["createVNode"])(Sc,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(n["createVNode"])(mo,{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)),[[a,e.contextmenus]])],4)],6)}}});l("8216");const fo=Yt()(po,[["__scopeId","data-v-f3c03862"]]);var jo=fo;const vo=e=>{if(!e)return{};const{bold:t,em:l,underline:c,strikethrough:n,color:o,backcolor:a,fontsize:r,fontname:i,align:s}=e;let d=`${c?"underline":""} ${n?"line-through":""}`;return" "===d&&(d="none"),{fontWeight:t?"bold":"normal",fontStyle:l?"italic":"normal",textDecoration:d,color:o||"#000",backgroundColor:a||"",fontSize:r||"14px",fontFamily:i||"微软雅黑",textAlign:s||"left"}},ho=e=>e.replace(/\n/g,"
").replace(/ /g," ");var yo=e=>{const t=Object(n["computed"])(()=>{const t=[];for(let l=0;l1||n.rowspan>1)for(let c=l;c{const t=Object(n["ref"])(["",""]);return Object(n["watch"])(()=>e.value,()=>{e.value&&(t.value=ke(e.value.color))},{immediate:!0}),{subThemeColor:t}};const xo=["innerHTML"];var ko=Object(n["defineComponent"])({__name:"CustomTextarea",props:{value:{type:String,default:""},contenteditable:{type:[Boolean,String],default:!1}},emits:["updateValue","insertExcelData"],setup(e,{emit:t}){const l=e,c=Object(n["ref"])(),o=Object(n["ref"])(""),a=Object(n["ref"])(!1);Object(n["watch"])(()=>l.value,()=>{a.value||(o.value=l.value,c.value&&(c.value.innerHTML=l.value))},{immediate:!0});const r=()=>{if(!c.value)return;const e=c.value.innerHTML;t("updateValue",e)},i=()=>{a.value=!0,c.value&&(c.value.onpaste=e=>{if(e.preventDefault(),!e.clipboardData)return;const l=e.clipboardData.items[0];l&&"string"===l.kind&&"text/plain"===l.type&&l.getAsString(e=>{const l=me(e);if("object"===typeof l)return;const n=pe(e);if(n)return t("insertExcelData",n),void(c.value&&(c.value.innerHTML=n[0][0]));t("updateValue",e),document.execCommand("insertText",!1,e)})})},s=()=>{a.value=!1,c.value&&(c.value.onpaste=null)};return Object(n["onUnmounted"])(()=>{c.value&&(c.value.onpaste=null)}),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"custom-textarea",ref_key:"textareaRef",ref:c,onFocus:i,onBlur:s,onInput:t[0]||(t[0]=e=>r()),innerHTML:o.value},null,40,xo))}});l("80dc");const Co=Yt()(ko,[["__scopeId","data-v-cdb58a1e"]]);var No=Co;const Eo={key:0,class:"handler"},wo=["onMousedown"],Vo=["width"],Io=["rowspan","colspan","data-cell-index","onMousedown","onMouseenter"],So=["innerHTML"];var Lo=Object(n["defineComponent"])({__name:"EditableTable",props:{data:{type:Array,required:!0},width:{type:Number,required:!0},cellMinHeight:{type:Number,required:!0},colWidths:{type:Array,required:!0},outline:{type:Object,required:!0},theme:{type:Object},editable:{type:Boolean,default:!0}},emits:["change","changeColWidths","changeSelectedCells"],setup(e,{emit:t}){const l=e,{canvasScale:c}=Object(o["c"])(z()),r=Object(n["ref"])(!1),i=Object(n["ref"])([]),s=Object(n["ref"])([]),d=Object(n["computed"])({get(){return l.data},set(e){t("change",e)}}),u=Object(n["computed"])(()=>l.theme),{subThemeColor:b}=go(u),O=Object(n["ref"])([]),m=Object(n["computed"])(()=>O.value.reduce((e,t)=>e+t));Object(n["watch"])([()=>l.colWidths,()=>l.width],()=>{O.value=l.colWidths.map(e=>e*l.width)},{immediate:!0});const p=()=>{i.value=[],s.value=[]};Object(n["watch"])(()=>l.editable,()=>{l.editable||p()});const f=Object(n["computed"])(()=>{const e=[];for(let t=1;te+t);e.push(l)}return e}),j=Object(n["computed"])(()=>l.data),{hideCells:v}=yo(j),h=Object(n["computed"])(()=>{if(!i.value.length)return[];const[e,t]=i.value;if(!s.value.length)return[`${e}_${t}`];const[l,c]=s.value;if(e===l&&t===c)return[`${e}_${t}`];const n=[],o=Math.min(e,l),a=Math.min(t,c),r=Math.max(e,l),u=Math.max(t,c);for(let i=0;i=o&&i<=r&&t>=a&&t<=u&&n.push(`${i}_${t}`)}return n});Object(n["watch"])(h,(e,l)=>{Object(S["isEqual"])(e,l)||t("changeSelectedCells",h.value)});const y=Object(n["computed"])(()=>h.value.length>1?null:h.value[0]),g=()=>r.value=!1,x=(e,t,l)=>{0===e.button&&(s.value=[],r.value=!0,i.value=[t,l])},k=(e,t)=>{r.value&&(s.value=[e,t])};Object(n["onMounted"])(()=>{document.addEventListener("mouseup",g)}),Object(n["onUnmounted"])(()=>{document.removeEventListener("mouseup",g)});const C=(e,t)=>v.value.includes(`${e}_${t}`),N=e=>{const t=d.value.length-1;i.value=[0,e],s.value=[t,e]},E=e=>{const t=d.value[e].length-1;i.value=[e,0],s.value=[e,t]},w=()=>{const e=d.value.length-1,t=d.value[e].length-1;i.value=[0,0],s.value=[e,t]},V=e=>{const t=JSON.parse(JSON.stringify(d.value)),l=d.value[e],c=[];for(let n=0;n=0;l--)if(!C(l,n)){t[l][n].rowspan=t[l][n].rowspan-1;break}t.splice(e,1),d.value=t},I=e=>{const l=JSON.parse(JSON.stringify(d.value)),c=[];for(let t=0;t=0;c--)if(!C(t,c)){l[t][c].colspan=l[t][c].colspan-1;break}d.value=l.map(t=>(t.splice(e,1),t)),O.value.splice(e,1),t("changeColWidths",O.value)},L=e=>{const t=JSON.parse(JSON.stringify(d.value)),l=[];for(let c=0;c{d.value=d.value.map(t=>{const l={colspan:1,rowspan:1,text:"",id:Object(a["b"])(10)};return t.splice(e,0,l),t}),O.value.splice(e,0,100),t("changeColWidths",O.value)},_=(e,l)=>{let c=JSON.parse(JSON.stringify(d.value));const n={colspan:1,rowspan:1,text:""};if(e){const t=[];for(let l=0;l{const t=[];for(let c=0;c{const[e,t]=i.value,[l,c]=s.value,n=Math.min(e,l),o=Math.min(t,c),a=Math.max(e,l),r=Math.max(t,c),u=JSON.parse(JSON.stringify(d.value));u[n][o].rowspan=a-n+1,u[n][o].colspan=r-o+1,d.value=u,p()},M=(e,t)=>{const l=JSON.parse(JSON.stringify(d.value));l[e][t].rowspan=1,l[e][t].colspan=1,d.value=l,p()},D=(e,l)=>{p();let n=!0;const o=O.value[l],a=e.pageX,r=50;document.onmousemove=e=>{if(!n)return;const t=(e.pageX-a)/c.value,i=o+t{n=!1,document.onmousemove=null,document.onmouseup=null,t("changeColWidths",O.value)}},F=()=>{const e=JSON.parse(JSON.stringify(d.value));for(let t=0;t{const e=(t,l)=>d.value[t]?d.value[t][l]?C(t,l)?e(t,l+1):[t,l]:e(t+1,0):null;s.value=[];const t=i.value[0],l=i.value[1]+1,c=e(t,l);c?i.value=c:(L(t+1),i.value=[t+1,0]),Object(n["nextTick"])(()=>{const e=document.querySelector(".cell-text.active");e&&e.focus()})},$=e=>{if(!l.editable||!h.value.length)return;const t=e.key.toUpperCase();if(h.value.length<2){if(t===te.TAB&&(e.preventDefault(),A()),e.ctrlKey&&t===te.UP){e.preventDefault();const t=+h.value[0].split("_")[0];L(t)}if(e.ctrlKey&&t===te.DOWN){e.preventDefault();const t=+h.value[0].split("_")[0];L(t+1)}if(e.ctrlKey&&t===te.LEFT){e.preventDefault();const t=+h.value[0].split("_")[1];B(t)}if(e.ctrlKey&&t===te.RIGHT){e.preventDefault();const t=+h.value[0].split("_")[1];B(t+1)}}else t===te.DELETE&&F()};Object(n["onMounted"])(()=>{document.addEventListener("keydown",$)}),Object(n["onUnmounted"])(()=>{document.removeEventListener("keydown",$)});const R=Object(S["debounce"])((function(e,l,c){d.value[l][c].text=e,t("change",d.value)}),300,{trailing:!0}),P=(e,l,c)=>{const o=e.length,a=e[0].length;let r=0,i=0;l+o>d.value.length&&(r=l+o-d.value.length),c+a>d.value[0].length&&(i=c+a-d.value[0].length),(r||i)&&_(r,i),Object(n["nextTick"])(()=>{for(let t=0;t{const e=[];for(let t=0;t{const e=H(),t=e.length>1,l=e[0].length>1;return{canDeleteRow:t,canDeleteCol:l}},U=(e,t)=>{const l=h.value.length>1,c=d.value[e][t],n=l,o=!l&&(c.rowspan>1||c.colspan>1);return{canMerge:n,canSplit:o}},G=e=>{const t=e.dataset.cellIndex,l=+t.split("_")[0],c=+t.split("_")[1];h.value.includes(`${l}_${c}`)||(i.value=[l,c],s.value=[]);const{canMerge:n,canSplit:o}=U(l,c),{canDeleteRow:a,canDeleteCol:r}=q();return[{text:"插入列",children:[{text:"到左侧",handler:()=>B(c)},{text:"到右侧",handler:()=>B(c+1)}]},{text:"插入行",children:[{text:"到上方",handler:()=>L(l)},{text:"到下方",handler:()=>L(l+1)}]},{text:"删除列",disable:!r,handler:()=>I(c)},{text:"删除行",disable:!a,handler:()=>V(l)},{divider:!0},{text:"合并单元格",disable:!n,handler:T},{text:"取消合并单元格",disable:!o,handler:()=>M(l,c)},{divider:!0},{text:"选中当前列",handler:()=>N(c)},{text:"选中当前行",handler:()=>E(l)},{text:"选中全部单元格",handler:w}]};return(t,l)=>{var c,o,a,r,i;const s=Object(n["resolveDirective"])("contextmenu");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"editable-table",style:Object(n["normalizeStyle"])({width:Object(n["unref"])(m)+"px"})},[e.editable?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Eo,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(f),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"drag-line",key:t,style:Object(n["normalizeStyle"])({left:e+"px"}),onMousedown:e=>D(e,t)},null,44,wo))),128))])):Object(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("table",{class:Object(n["normalizeClass"])({theme:Object(n["unref"])(u),"row-header":null===(c=Object(n["unref"])(u))||void 0===c?void 0:c.rowHeader,"row-footer":null===(o=Object(n["unref"])(u))||void 0===o?void 0:o.rowFooter,"col-header":null===(a=Object(n["unref"])(u))||void 0===a?void 0:a.colHeader,"col-footer":null===(r=Object(n["unref"])(u))||void 0===r?void 0:r.colFooter}),style:Object(n["normalizeStyle"])(`--themeColor: ${null===(i=Object(n["unref"])(u))||void 0===i?void 0:i.color}; --subThemeColor1: ${Object(n["unref"])(b)[0]}; --subThemeColor2: ${Object(n["unref"])(b)[1]}`)},[Object(n["createElementVNode"])("colgroup",null,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(O.value,(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("col",{span:"1",key:t,width:e},null,8,Vo))),128))]),Object(n["createElementVNode"])("tbody",null,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(d),(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("tr",{key:l,style:Object(n["normalizeStyle"])({height:e.cellMinHeight+"px"})},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(t,(t,c)=>Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("td",{class:Object(n["normalizeClass"])(["cell",{selected:Object(n["unref"])(h).includes(`${l}_${c}`)&&Object(n["unref"])(h).length>1,active:Object(n["unref"])(y)===`${l}_${c}`}]),style:Object(n["normalizeStyle"])({borderStyle:e.outline.style,borderColor:e.outline.color,borderWidth:e.outline.width+"px",...Object(n["unref"])(vo)(t.style)}),key:t.id,rowspan:t.rowspan,colspan:t.colspan,"data-cell-index":`${l}_${c}`,onMousedown:e=>x(e,l,c),onMouseenter:e=>k(l,c)},[Object(n["unref"])(y)===`${l}_${c}`?(Object(n["openBlock"])(),Object(n["createBlock"])(No,{key:0,class:Object(n["normalizeClass"])(["cell-text",{active:Object(n["unref"])(y)===`${l}_${c}`}]),style:Object(n["normalizeStyle"])({minHeight:e.cellMinHeight-4+"px"}),value:t.text,onUpdateValue:e=>Object(n["unref"])(R)(e,l,c),onInsertExcelData:e=>P(e,l,c)},null,8,["class","style","value","onUpdateValue","onInsertExcelData"])):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:1,class:"cell-text",style:Object(n["normalizeStyle"])({minHeight:e.cellMinHeight-4+"px"}),innerHTML:Object(n["unref"])(ho)(t.text)},null,12,So))],46,Io)),[[n["vShow"],!Object(n["unref"])(v).includes(`${l}_${c}`)],[s,e=>G(e)]])),128))],4))),128))])],6)],4)}}});l("652e");const Bo=Yt()(Lo,[["__scopeId","data-v-a2ef535c"]]);var _o=Bo;const To={class:"element-content"};var Mo=Object(n["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup(e){const t=e,l=z(),c=T(),{canvasScale:a,handleElementId:r,isScaling:i}=Object(o["c"])(l),s=Object(n["ref"])(),{addHistorySnapshot:d}=Te(),u=e=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},b=Object(n["ref"])(!1);Object(n["watch"])(r,()=>{r.value!==t.elementInfo.id&&(b.value=!1)}),Object(n["watch"])(b,()=>{l.setDisableHotkeysState(b.value)});const O=()=>{t.elementInfo.lock||(b.value=!0)},m=Object(n["ref"])(-1);Object(n["watch"])(i,()=>{r.value===t.elementInfo.id&&(i.value&&(b.value=!1),i.value||-1===m.value||(c.updateElement({id:t.elementInfo.id,props:{height:m.value}}),m.value=-1))});const p=e=>{const l=e[0].contentRect;if(!s.value)return;const n=l.height;t.elementInfo.height!==n&&(i.value?m.value=n:c.updateElement({id:t.elementInfo.id,props:{height:n}}))},f=new ResizeObserver(p);Object(n["onMounted"])(()=>{s.value&&f.observe(s.value)}),Object(n["onUnmounted"])(()=>{s.value&&f.unobserve(s.value)});const j=e=>{c.updateElement({id:t.elementInfo.id,props:{data:e}}),d()},v=e=>{const l=e.reduce((e,t)=>e+t),n=e.map(e=>e/l);c.updateElement({id:t.elementInfo.id,props:{width:l,colWidths:n}}),d()},h=e=>{Object(n["nextTick"])(()=>l.setSelectedTableCells(e))};return(t,l)=>{const c=Object(n["resolveDirective"])("contextmenu");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["editable-element-table",{lock:e.elementInfo.lock}]),ref_key:"elementRef",ref:s,style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("div",To,[Object(n["createVNode"])(_o,{onMousedown:l[0]||(l[0]=Object(n["withModifiers"])(()=>{},["stop"])),data:e.elementInfo.data,width:e.elementInfo.width,cellMinHeight:e.elementInfo.cellMinHeight,colWidths:e.elementInfo.colWidths,outline:e.elementInfo.outline,theme:e.elementInfo.theme,editable:b.value,onChange:l[1]||(l[1]=e=>j(e)),onChangeColWidths:l[2]||(l[2]=e=>v(e)),onChangeSelectedCells:l[3]||(l[3]=e=>h(e))},null,8,["data","width","cellMinHeight","colWidths","outline","theme","editable"]),!b.value||e.elementInfo.lock?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:Object(n["normalizeClass"])(["table-mask",{lock:e.elementInfo.lock}]),onDblclick:l[4]||(l[4]=e=>O()),onMousedown:l[5]||(l[5]=e=>u(e)),onTouchstart:l[6]||(l[6]=e=>u(e))},[Object(n["createElementVNode"])("div",{class:"mask-tip",style:Object(n["normalizeStyle"])({transform:`scale(${1/Object(n["unref"])(a)})`})},"双击编辑",4)],34)):Object(n["createCommentVNode"])("",!0)])),[[c,e.contextmenus]])],4)],6)}}});l("db8d");const Do=Yt()(Mo,[["__scopeId","data-v-0b2b16da"]]);var zo=Do;const Fo=["width","height","stroke","stroke-width"],Ao=["transform"],$o=["d"];var Ro=Object(n["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup(e){const t=e,l=e=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},c=()=>{yn.emit(jn.OPEN_LATEX_EDITOR)};return(t,o)=>{const a=Object(n["resolveDirective"])("contextmenu");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["editable-element-latex",{lock:e.elementInfo.lock}]),style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"element-content",onMousedown:o[0]||(o[0]=e=>l(e)),onTouchstart:o[1]||(o[1]=e=>l(e)),onDblclick:o[2]||(o[2]=e=>c())},[(Object(n["openBlock"])(),Object(n["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(n["createElementVNode"])("g",{transform:`scale(${e.elementInfo.width/e.elementInfo.viewBox[0]}, ${e.elementInfo.height/e.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`},[Object(n["createElementVNode"])("path",{d:e.elementInfo.path},null,8,$o)],8,Ao)],8,Fo))],32)),[[a,e.contextmenus]])],4)],6)}}});l("0f64");const Po=Yt()(Ro,[["__scopeId","data-v-31390388"]]);var Ho=Po,qo=(e,t)=>{Object(n["onMounted"])(()=>{if(!t.value)return;let l="normal";if(/m3u8(#|\?|$)/i.exec(e)?l="hls":/.flv(#|\?|$)/i.exec(e)&&(l="flv"),t.value&&"hls"===l&&(t.value.canPlayType("application/x-mpegURL")||t.value.canPlayType("application/vnd.apple.mpegURL"))&&(l="normal"),"hls"===l){const l=window.Hls;if(l&&l.isSupported()){const c=new l;c.loadSource(e),c.attachMedia(t.value)}}else if("flv"===l){const l=window.flvjs;if(l&&l.isSupported()){const c=l.createPlayer({type:"flv",url:e});c.attachMediaElement(t.value),c.load()}}})};const Uo=e=>(Object(n["pushScopeId"])("data-v-adfce55e"),e=e(),Object(n["popScopeId"])(),e),Go={key:0,class:"load-error"},Xo=["src","poster"],Yo={class:"bezel"},Zo=Uo(()=>Object(n["createElementVNode"])("div",{class:"controller-mask"},null,-1)),Wo={class:"controller"},Jo={class:"icons icons-left"},Ko={class:"icon-content"},Qo={class:"volume"},ea={class:"icon-content"},ta=Uo(()=>Object(n["createElementVNode"])("span",{class:"thumb"},null,-1)),la=[ta],ca={class:"time"},na={class:"ptime"},oa={class:"dtime"},aa={class:"icons icons-right"},ra={class:"speed"},ia={class:"icon speed-icon"},sa=["onClick"],da={class:"icon-content"},ua={class:"bar"},ba=Uo(()=>Object(n["createElementVNode"])("span",{class:"thumb"},null,-1)),Oa=[ba];var ma=Object(n["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(e){const t=e,l=(e=0)=>{if(0===e||isNaN(e))return"00:00";const t=e=>e<10?"0"+e:""+e,l=Math.floor(e/3600),c=Math.floor((e-3600*l)/60),n=Math.floor(e-3600*l-60*c);return(l>0?[l,c,n]:[c,n]).map(t).join(":")},c=e=>e.getBoundingClientRect().left,o=Object(n["ref"])(),a=Object(n["ref"])(),r=Object(n["ref"])(),i=Object(n["ref"])(.5),s=Object(n["ref"])(!0),d=Object(n["ref"])(0),u=Object(n["ref"])(0),b=Object(n["ref"])(0),O=Object(n["ref"])(!1),m=Object(n["ref"])(!1),p=Object(n["ref"])(1),f=Object(n["ref"])(!1),j=Object(n["ref"])("00:00"),v=Object(n["ref"])("0"),h=Object(n["computed"])(()=>l(d.value)),y=Object(n["computed"])(()=>l(u.value)),g=Object(n["computed"])(()=>d.value/u.value*100+"%"),x=Object(n["computed"])(()=>b.value/u.value*100+"%"),k=Object(n["computed"])(()=>100*i.value+"%"),C=Object(n["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}],E=e=>{o.value&&(e=Math.max(e,0),e=Math.min(e,u.value),o.value.currentTime=e,d.value=e)},w=()=>{o.value&&(s.value=!1,o.value.play(),m.value=!0)},V=()=>{o.value&&(s.value=!0,o.value.pause(),m.value=!0)},I=()=>{s.value?w():V()},S=e=>{o.value&&(e=Math.max(e,0),e=Math.min(e,1),o.value.volume=e,i.value=e,o.value.muted&&0!==e&&(o.value.muted=!1))},L=e=>{o.value&&(o.value.playbackRate=e),p.value=e},B=()=>{var e;u.value=(null===(e=o.value)||void 0===e?void 0:e.duration)||0},_=()=>{var e;d.value=(null===(e=o.value)||void 0===e?void 0:e.currentTime)||0},T=()=>{O.value?(E(0),w()):V()},M=()=>{var e;b.value=null!==(e=o.value)&&void 0!==e&&e.buffered.length?o.value.buffered.end(o.value.buffered.length-1):0},D=Object(n["ref"])(!1),z=()=>D.value=!0,F=e=>{if(!o.value||!a.value)return;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX;let l=(t-c(a.value))/a.value.clientWidth;l=Math.max(l,0),l=Math.min(l,1);const n=l*u.value;o.value.currentTime=n,d.value=n},A=e=>{if(!o.value||!a.value)return;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX;let l=(t-c(a.value))/a.value.clientWidth;l=Math.max(l,0),l=Math.min(l,1);const n=l*u.value;o.value.currentTime=n,d.value=n,document.removeEventListener("mousemove",F),document.removeEventListener("touchmove",F),document.removeEventListener("mouseup",A),document.removeEventListener("touchend",A)},$=()=>{document.addEventListener("mousemove",F),document.addEventListener("touchmove",F),document.addEventListener("mouseup",A),document.addEventListener("touchend",A)},R=e=>{if(!r.value)return;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX,l=(t-c(r.value))/45;S(l)},P=()=>{document.removeEventListener("mousemove",R),document.removeEventListener("touchmove",R),document.removeEventListener("mouseup",P),document.removeEventListener("touchend",P)},H=()=>{document.addEventListener("mousemove",R),document.addEventListener("touchmove",R),document.addEventListener("mouseup",P),document.addEventListener("touchend",P)},q=e=>{if(!r.value)return;const t=(e.clientX-c(r.value))/45;S(t)},U=e=>{if(u.value&&a.value){const t=a.value.getBoundingClientRect().left,c=e.clientX-t;if(c<0||c>a.value.offsetWidth)return;const n=u.value*(c/a.value.offsetWidth);v.value=c-(n>=3600?25:20)+"px",j.value=l(n),f.value=!0}},G=()=>{o.value&&(o.value.muted?(o.value.muted=!1,S(.5)):(o.value.muted=!0,S(0)))},X=()=>{O.value=!O.value},Y=Object(n["ref"])(-1),Z=Object(n["ref"])(!1),W=()=>{Z.value=!1,clearTimeout(Y.value),Y.value=setTimeout(()=>{var e;null!==(e=o.value)&&void 0!==e&&e.played.length&&(Z.value=!0)},3e3)};return qo(t.src,o),(t,l)=>{const c=Object(n["resolveComponent"])("IconPause"),d=Object(n["resolveComponent"])("IconPlayOne"),u=Object(n["resolveComponent"])("IconVolumeMute"),b=Object(n["resolveComponent"])("IconVolumeNotice"),E=Object(n["resolveComponent"])("IconVolumeSmall");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["video-player",{"hide-controller":Z.value}]),style:Object(n["normalizeStyle"])({width:e.width*e.scale+"px",height:e.height*e.scale+"px",transform:`scale(${1/e.scale})`}),onMousemove:l[22]||(l[22]=e=>W()),onClick:l[23]||(l[23]=e=>W())},[Object(n["createElementVNode"])("div",{class:"video-wrap",onClick:l[8]||(l[8]=e=>I())},[D.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Go,"视频加载失败")):Object(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("video",{class:"video",ref_key:"videoRef",ref:o,src:e.src,poster:e.poster,"webkit-playsinline":"",playsinline:"",onDurationchange:l[0]||(l[0]=e=>B()),onTimeupdate:l[1]||(l[1]=e=>_()),onEnded:l[2]||(l[2]=e=>T()),onProgress:l[3]||(l[3]=e=>M()),onPlay:l[4]||(l[4]=e=>W()),onPause:l[5]||(l[5]=e=>W()),onError:l[6]||(l[6]=e=>z())},null,40,Xo),Object(n["createElementVNode"])("div",Yo,[Object(n["createElementVNode"])("span",{class:Object(n["normalizeClass"])(["bezel-icon",{"bezel-transition":m.value}]),onAnimationend:l[7]||(l[7]=e=>m.value=!1)},[s.value?(Object(n["openBlock"])(),Object(n["createBlock"])(c,{key:0})):(Object(n["openBlock"])(),Object(n["createBlock"])(d,{key:1}))],34)])]),Zo,Object(n["createElementVNode"])("div",Wo,[Object(n["createElementVNode"])("div",Jo,[Object(n["createElementVNode"])("div",{class:"icon play-icon",onClick:l[9]||(l[9]=e=>I())},[Object(n["createElementVNode"])("span",Ko,[s.value?(Object(n["openBlock"])(),Object(n["createBlock"])(d,{key:0})):(Object(n["openBlock"])(),Object(n["createBlock"])(c,{key:1}))])]),Object(n["createElementVNode"])("div",Qo,[Object(n["createElementVNode"])("div",{class:"icon volume-icon",onClick:l[10]||(l[10]=e=>G())},[Object(n["createElementVNode"])("span",ea,[0===i.value?(Object(n["openBlock"])(),Object(n["createBlock"])(u,{key:0})):1===i.value?(Object(n["openBlock"])(),Object(n["createBlock"])(b,{key:1})):(Object(n["openBlock"])(),Object(n["createBlock"])(E,{key:2}))])]),Object(n["createElementVNode"])("div",{class:"volume-bar-wrap",onMousedown:l[11]||(l[11]=e=>H()),onTouchstart:l[12]||(l[12]=e=>H()),onClick:l[13]||(l[13]=e=>q(e))},[Object(n["createElementVNode"])("div",{class:"volume-bar",ref_key:"volumeBarRef",ref:r},[Object(n["createElementVNode"])("div",{class:"volume-bar-inner",style:Object(n["normalizeStyle"])({width:Object(n["unref"])(k)})},la,4)],512)],32)]),Object(n["createElementVNode"])("span",ca,[Object(n["createElementVNode"])("span",na,Object(n["toDisplayString"])(Object(n["unref"])(h)),1),Object(n["createTextVNode"])(" / "),Object(n["createElementVNode"])("span",oa,Object(n["toDisplayString"])(Object(n["unref"])(y)),1)])]),Object(n["createElementVNode"])("div",aa,[Object(n["createElementVNode"])("div",ra,[Object(n["createElementVNode"])("div",ia,[Object(n["createElementVNode"])("span",{class:"icon-content",onClick:l[14]||(l[14]=e=>C.value=!C.value)},Object(n["toDisplayString"])(1===p.value?"倍速":p.value+"x"),1),C.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:"speed-menu",onMouseleave:l[15]||(l[15]=e=>C.value=!1)},[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(N,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["speed-menu-item",{active:e.value===p.value}]),key:e.label,onClick:t=>L(e.value)},Object(n["toDisplayString"])(e.label),11,sa)),64))],32)):Object(n["createCommentVNode"])("",!0)])]),Object(n["createElementVNode"])("div",{class:"loop",onClick:l[16]||(l[16]=e=>X())},[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["icon loop-icon",{active:O.value}])},[Object(n["createElementVNode"])("span",da,"循环"+Object(n["toDisplayString"])(O.value?"开":"关"),1)],2)])]),Object(n["createElementVNode"])("div",{class:"bar-wrap",ref_key:"playBarWrap",ref:a,onMousedown:l[17]||(l[17]=e=>$()),onTouchstart:l[18]||(l[18]=e=>$()),onMousemove:l[19]||(l[19]=e=>U(e)),onMouseenter:l[20]||(l[20]=e=>f.value=!0),onMouseleave:l[21]||(l[21]=e=>f.value=!1)},[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["bar-time",{hidden:!f.value}]),style:Object(n["normalizeStyle"])({left:v.value})},Object(n["toDisplayString"])(j.value),7),Object(n["createElementVNode"])("div",ua,[Object(n["createElementVNode"])("div",{class:"loaded",style:Object(n["normalizeStyle"])({width:Object(n["unref"])(x)})},null,4),Object(n["createElementVNode"])("div",{class:"played",style:Object(n["normalizeStyle"])({width:Object(n["unref"])(g)})},Oa,4)])],544)])],38)}}});l("4036");const pa=Yt()(ma,[["__scopeId","data-v-adfce55e"]]);var fa=pa,ja=Object(n["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup(e){const t=e,{canvasScale:l}=Object(o["c"])(z()),c=(e,l=!0)=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo,l))};return(t,o)=>{const a=Object(n["resolveDirective"])("contextmenu");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["editable-element-video",{lock:e.elementInfo.lock}]),style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"element-content",onMousedown:o[2]||(o[2]=e=>c(e,!1)),onTouchstart:o[3]||(o[3]=e=>c(e,!1))},[Object(n["createVNode"])(fa,{width:e.elementInfo.width,height:e.elementInfo.height,src:e.elementInfo.src,poster:e.elementInfo.poster,scale:Object(n["unref"])(l)},null,8,["width","height","src","poster","scale"]),(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(["t","b","l","r"],e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["handler-border",e]),key:e,onMousedown:o[0]||(o[0]=e=>c(e)),onTouchstart:o[1]||(o[1]=e=>c(e))},null,34)),64))],32)),[[a,e.contextmenus]])],4)],6)}}});l("679c");const va=Yt()(ja,[["__scopeId","data-v-9d5469c6"]]);var ha=va;const ya=e=>(Object(n["pushScopeId"])("data-v-121f3d11"),e=e(),Object(n["popScopeId"])(),e),ga=["src","autoplay"],xa={class:"controller"},ka={class:"icons"},Ca={class:"icon-content"},Na={class:"volume"},Ea={class:"icon-content"},wa=ya(()=>Object(n["createElementVNode"])("span",{class:"thumb"},null,-1)),Va=[wa],Ia={class:"time"},Sa={class:"ptime"},La={class:"dtime"},Ba={class:"bar"},_a=ya(()=>Object(n["createElementVNode"])("span",{class:"thumb"},null,-1)),Ta=[_a];var Ma=Object(n["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(e,{expose:t}){const l=e,c=(e=0)=>{if(0===e||isNaN(e))return"00:00";const t=e=>e<10?"0"+e:""+e,l=Math.floor(e/3600),c=Math.floor((e-3600*l)/60),n=Math.floor(e-3600*l-60*c);return(l>0?[l,c,n]:[c,n]).map(t).join(":")},o=e=>e.getBoundingClientRect().left,a=Object(n["ref"])(),r=Object(n["ref"])(),i=Object(n["ref"])(),s=Object(n["ref"])(.5),d=Object(n["ref"])(!0),u=Object(n["ref"])(0),b=Object(n["ref"])(0),O=Object(n["ref"])(0),m=Object(n["ref"])(!1),p=Object(n["ref"])("00:00"),f=Object(n["ref"])("0"),j=Object(n["computed"])(()=>c(u.value)),v=Object(n["computed"])(()=>c(b.value)),h=Object(n["computed"])(()=>u.value/b.value*100+"%"),y=Object(n["computed"])(()=>O.value/b.value*100+"%"),g=Object(n["computed"])(()=>100*s.value+"%"),x=e=>{a.value&&(e=Math.max(e,0),e=Math.min(e,b.value),a.value.currentTime=e,u.value=e)},k=()=>{a.value&&(d.value=!1,a.value.play())},C=()=>{a.value&&(d.value=!0,a.value.pause())},N=()=>{d.value?k():C()},E=e=>{a.value&&(e=Math.max(e,0),e=Math.min(e,1),a.value.volume=e,s.value=e,a.value.muted&&0!==e&&(a.value.muted=!1))},w=()=>{var e;b.value=(null===(e=a.value)||void 0===e?void 0:e.duration)||0},V=()=>{var e;u.value=(null===(e=a.value)||void 0===e?void 0:e.currentTime)||0},I=()=>{d.value=!1},S=()=>{l.loop?(x(0),k()):C()},L=()=>{var e;O.value=null!==(e=a.value)&&void 0!==e&&e.buffered.length?a.value.buffered.end(a.value.buffered.length-1):0},B=()=>ne["a"].error("视频加载失败"),_=e=>{if(!a.value||!r.value)return;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX;let l=(t-o(r.value))/r.value.clientWidth;l=Math.max(l,0),l=Math.min(l,1);const c=l*b.value;a.value.currentTime=c,u.value=c},T=e=>{if(!a.value||!r.value)return;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX;let l=(t-o(r.value))/r.value.clientWidth;l=Math.max(l,0),l=Math.min(l,1);const c=l*b.value;a.value.currentTime=c,u.value=c,document.removeEventListener("mousemove",_),document.removeEventListener("touchmove",_),document.removeEventListener("mouseup",T),document.removeEventListener("touchend",T)},M=()=>{document.addEventListener("mousemove",_),document.addEventListener("touchmove",_),document.addEventListener("mouseup",T),document.addEventListener("touchend",T)},D=e=>{if(!i.value)return;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX,l=(t-o(i.value))/45;E(l)},z=()=>{document.removeEventListener("mousemove",D),document.removeEventListener("touchmove",D),document.removeEventListener("mouseup",z),document.removeEventListener("touchend",z)},F=()=>{document.addEventListener("mousemove",D),document.addEventListener("touchmove",D),document.addEventListener("mouseup",z),document.addEventListener("touchend",z)},A=e=>{if(!i.value)return;const t=(e.clientX-o(i.value))/45;E(t)},$=e=>{if(b.value&&r.value){const t=r.value.getBoundingClientRect().left,l=e.clientX-t;if(l<0||l>r.value.offsetWidth)return;const n=b.value*(l/r.value.offsetWidth);f.value=l-(n>=3600?25:20)+"px",p.value=c(n),m.value=!0}},R=()=>{a.value&&(a.value.muted?(a.value.muted=!1,E(.5)):(a.value.muted=!0,E(0)))};return t({toggle:N}),(t,l)=>{const c=Object(n["resolveComponent"])("IconPlayOne"),o=Object(n["resolveComponent"])("IconPause"),u=Object(n["resolveComponent"])("IconVolumeMute"),b=Object(n["resolveComponent"])("IconVolumeNotice"),O=Object(n["resolveComponent"])("IconVolumeSmall");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"audio-player",style:Object(n["normalizeStyle"])({transform:`scale(${1/e.scale})`})},[Object(n["createElementVNode"])("audio",{class:"audio",ref_key:"audioRef",ref:a,src:e.src,autoplay:e.autoplay,onDurationchange:l[0]||(l[0]=e=>w()),onTimeupdate:l[1]||(l[1]=e=>V()),onPlay:l[2]||(l[2]=e=>I()),onEnded:l[3]||(l[3]=e=>S()),onProgress:l[4]||(l[4]=e=>L()),onError:l[5]||(l[5]=e=>B())},null,40,ga),Object(n["createElementVNode"])("div",xa,[Object(n["createElementVNode"])("div",ka,[Object(n["createElementVNode"])("div",{class:"icon play-icon",onClick:l[6]||(l[6]=e=>N())},[Object(n["createElementVNode"])("span",Ca,[d.value?(Object(n["openBlock"])(),Object(n["createBlock"])(c,{key:0})):(Object(n["openBlock"])(),Object(n["createBlock"])(o,{key:1}))])]),Object(n["createElementVNode"])("div",Na,[Object(n["createElementVNode"])("div",{class:"icon volume-icon",onClick:l[7]||(l[7]=e=>R())},[Object(n["createElementVNode"])("span",Ea,[0===s.value?(Object(n["openBlock"])(),Object(n["createBlock"])(u,{key:0})):1===s.value?(Object(n["openBlock"])(),Object(n["createBlock"])(b,{key:1})):(Object(n["openBlock"])(),Object(n["createBlock"])(O,{key:2}))])]),Object(n["createElementVNode"])("div",{class:"volume-bar-wrap",onMousedown:l[8]||(l[8]=e=>F()),onTouchstart:l[9]||(l[9]=e=>F()),onClick:l[10]||(l[10]=e=>A(e))},[Object(n["createElementVNode"])("div",{class:"volume-bar",ref_key:"volumeBarRef",ref:i},[Object(n["createElementVNode"])("div",{class:"volume-bar-inner",style:Object(n["normalizeStyle"])({width:Object(n["unref"])(g)})},Va,4)],512)],32)])]),Object(n["createElementVNode"])("span",Ia,[Object(n["createElementVNode"])("span",Sa,Object(n["toDisplayString"])(Object(n["unref"])(j)),1),Object(n["createTextVNode"])(" / "),Object(n["createElementVNode"])("span",La,Object(n["toDisplayString"])(Object(n["unref"])(v)),1)]),Object(n["createElementVNode"])("div",{class:"bar-wrap",ref_key:"playBarWrap",ref:r,onMousedown:l[11]||(l[11]=e=>M()),onTouchstart:l[12]||(l[12]=e=>M()),onMousemove:l[13]||(l[13]=e=>$(e)),onMouseenter:l[14]||(l[14]=e=>m.value=!0),onMouseleave:l[15]||(l[15]=e=>m.value=!1)},[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["bar-time",{hidden:!m.value}]),style:Object(n["normalizeStyle"])({left:f.value})},Object(n["toDisplayString"])(p.value),7),Object(n["createElementVNode"])("div",Ba,[Object(n["createElementVNode"])("div",{class:"loaded",style:Object(n["normalizeStyle"])({width:Object(n["unref"])(y)})},null,4),Object(n["createElementVNode"])("div",{class:"played",style:Object(n["normalizeStyle"])({width:Object(n["unref"])(h)})},Ta,4)])],544)])],4)}}});l("3929");const Da=Yt()(Ma,[["__scopeId","data-v-121f3d11"]]);var za=Da,Fa=Object(n["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup(e){const t=e,{canvasScale:l,handleElementId:c}=Object(o["c"])(z()),{viewportRatio:a}=Object(o["c"])(T()),r=Object(n["computed"])(()=>Math.min(t.elementInfo.width,t.elementInfo.height)+"px"),i=Object(n["computed"])(()=>{const e=Ve,c=Ve*a.value,n=280/l.value,o=50/l.value,r=t.elementInfo.width,i=t.elementInfo.height,s=t.elementInfo.left,d=t.elementInfo.top;let u=0,b=i;return s+n>=e&&(u=r-n),d+i+o>=c&&(b=-o),{left:u+"px",top:b+"px"}}),s=e=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))};return(t,o)=>{const a=Object(n["resolveComponent"])("IconVolumeNotice"),d=Object(n["resolveDirective"])("contextmenu");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["editable-element-audio",{lock:e.elementInfo.lock}]),style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"element-content",onMousedown:o[1]||(o[1]=e=>s(e)),onTouchstart:o[2]||(o[2]=e=>s(e))},[Object(n["createVNode"])(a,{class:"audio-icon",style:Object(n["normalizeStyle"])({fontSize:Object(n["unref"])(r),color:e.elementInfo.color})},null,8,["style"]),Object(n["unref"])(c)===e.elementInfo.id?(Object(n["openBlock"])(),Object(n["createBlock"])(za,{key:0,class:"audio-player",style:Object(n["normalizeStyle"])({...Object(n["unref"])(i)}),src:e.elementInfo.src,loop:e.elementInfo.loop,scale:Object(n["unref"])(l),onMousedown:o[0]||(o[0]=Object(n["withModifiers"])(()=>{},["stop"]))},null,8,["style","src","loop","scale"])):Object(n["createCommentVNode"])("",!0)],32)),[[d,e.contextmenus]])],4)],6)}}});l("75e6");const Aa=Yt()(Fa,[["__scopeId","data-v-001bfbc4"]]);var $a=Aa;const Ra=["id"];var Pa=Object(n["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(e){const t=e,l=Object(n["computed"])(()=>{const e={[Se.IMAGE]:Nc,[Se.TEXT]:Dn,[Se.SHAPE]:Kn,[Se.LINE]:so,[Se.CHART]:jo,[Se.TABLE]:zo,[Se.LATEX]:Ho,[Se.VIDEO]:ha,[Se.AUDIO]:$a};return e[t.elementInfo.type]||null}),{orderElement:c}=Ue(),{alignElementToCanvas:o}=Fl(),{combineElements:a,uncombineElements:r}=Re(),{deleteElement:i}=$e(),{lockElement:s,unlockElement:d}=Ae(),{copyElement:u,pasteElement:b,cutElement:O}=Pe(),{selectAllElement:m}=He(),p=()=>t.elementInfo.lock?[{text:"解锁",handler:()=>d(t.elementInfo)}]:[{text:"剪切",subText:"Ctrl + X",handler:O},{text:"复制",subText:"Ctrl + C",handler:u},{text:"粘贴",subText:"Ctrl + V",handler:b},{divider:!0},{text:"水平居中",handler:()=>o(J.HORIZONTAL),children:[{text:"水平垂直居中",handler:()=>o(J.CENTER)},{text:"水平居中",handler:()=>o(J.HORIZONTAL)},{text:"左对齐",handler:()=>o(J.LEFT)},{text:"右对齐",handler:()=>o(J.RIGHT)}]},{text:"垂直居中",handler:()=>o(J.VERTICAL),children:[{text:"水平垂直居中",handler:()=>o(J.CENTER)},{text:"垂直居中",handler:()=>o(J.VERTICAL)},{text:"顶部对齐",handler:()=>o(J.TOP)},{text:"底部对齐",handler:()=>o(J.BOTTOM)}]},{divider:!0},{text:"置于顶层",disable:t.isMultiSelect&&!t.elementInfo.groupId,handler:()=>c(t.elementInfo,W.TOP),children:[{text:"置于顶层",handler:()=>c(t.elementInfo,W.TOP)},{text:"上移一层",handler:()=>c(t.elementInfo,W.UP)}]},{text:"置于底层",disable:t.isMultiSelect&&!t.elementInfo.groupId,handler:()=>c(t.elementInfo,W.BOTTOM),children:[{text:"置于底层",handler:()=>c(t.elementInfo,W.BOTTOM)},{text:"下移一层",handler:()=>c(t.elementInfo,W.DOWN)}]},{divider:!0},{text:"设置链接",handler:t.openLinkDialog},{text:t.elementInfo.groupId?"取消组合":"组合",subText:"Ctrl + G",handler:t.elementInfo.groupId?r:a,hide:!t.isMultiSelect},{text:"全选",subText:"Ctrl + A",handler:m},{text:"锁定",subText:"Ctrl + L",handler:s},{text:"删除",subText:"Delete",handler:i}];return(t,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"editable-element",ref:"elementRef",id:"editable-element-"+e.elementInfo.id,style:Object(n["normalizeStyle"])({zIndex:e.elementIndex})},[(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["resolveDynamicComponent"])(Object(n["unref"])(l)),{elementInfo:e.elementInfo,selectElement:e.selectElement,contextmenus:p},null,8,["elementInfo","selectElement"]))],12,Ra))}});const Ha=Pa;var qa=Ha,Ua=Object(n["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(e){return[1,2,3,4].includes(e)}}},setup(e){return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])("mouse-selection quadrant-"+e.quadrant),style:Object(n["normalizeStyle"])({top:e.top+"px",left:e.left+"px",width:e.width+"px",height:e.height+"px"})},null,6))}});l("4b9a");const Ga=Yt()(Ua,[["__scopeId","data-v-0d6c0f73"]]);var Xa=Ga;const Ya={class:"grid-lines"},Za=["d","stroke"];var Wa=Object(n["defineComponent"])({__name:"GridLines",setup(e){const{canvasScale:t,gridLineSize:l}=Object(o["c"])(z()),{currentSlide:c,viewportRatio:a}=Object(o["c"])(T()),r=Object(n["computed"])(()=>{var e;return null===(e=c.value)||void 0===e?void 0:e.background}),i=Object(n["computed"])(()=>{var e;const t=(null===(e=r.value)||void 0===e?void 0:e.color)||"#fff",l=["#000","#fff"];return I.a.mostReadable(t,l,{includeFallbackColors:!0}).setAlpha(.5).toRgbString()}),s=Object(n["computed"])(()=>{const e=Ve,t=Ve*a.value;let c="";for(let n=0;n<=Math.floor(t/l.value);n++)c+=`M0 ${n*l.value} L${e} ${n*l.value} `;for(let n=0;n<=Math.floor(e/l.value);n++)c+=`M${n*l.value} 0 L${n*l.value} ${t} `;return c});return(e,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",Ya,[Object(n["createElementVNode"])("path",{style:Object(n["normalizeStyle"])({transform:`scale(${Object(n["unref"])(t)})`}),d:Object(n["unref"])(s),fill:"none",stroke:Object(n["unref"])(i),"stroke-width":"0.3","stroke-dasharray":"5"},null,12,Za)]))}});l("dd7b");const Ja=Yt()(Wa,[["__scopeId","data-v-aebac580"]]);var Ka=Ja,Qa=e=>{const t=Object(n["computed"])(()=>{if(!e.value)return{backgroundColor:"#fff"};const{type:t,color:l,image:c,imageSize:n,gradientColor:o,gradientRotate:a,gradientType:r}=e.value;if("solid"===t)return{backgroundColor:l};if("image"===t)return c?"repeat"===n?{backgroundImage:"url("+c,backgroundRepeat:"repeat",backgroundSize:"contain"}:{backgroundImage:"url("+c,backgroundRepeat:"no-repeat",backgroundSize:n||"cover"}:{backgroundColor:"#fff"};if("gradient"===t){const e=a||0,t=o?o[0]:"#fff",l=o?o[1]:"#fff";return"radial"===r?{backgroundImage:`radial-gradient(${t}, ${l}`}:{backgroundImage:`linear-gradient(${e}deg, ${t}, ${l}`}}return{backgroundColor:"#fff"}});return{backgroundStyle:t}},er=Object(n["defineComponent"])({__name:"ViewportBackground",setup(e){const{gridLineSize:t}=Object(o["c"])(z()),{currentSlide:l}=Object(o["c"])(T()),c=Object(n["computed"])(()=>{var e;return null===(e=l.value)||void 0===e?void 0:e.background}),{backgroundStyle:a}=Qa(c);return(e,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"viewport-background",style:Object(n["normalizeStyle"])(Object(n["unref"])(a))},[Object(n["unref"])(t)?(Object(n["openBlock"])(),Object(n["createBlock"])(Ka,{key:0})):Object(n["createCommentVNode"])("",!0)],4))}});l("5977");const tr=Yt()(er,[["__scopeId","data-v-61c4db4a"]]);var lr=tr,cr=Object(n["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(e){const t=e,l=Object(n["computed"])(()=>t.axis.x*t.canvasScale+"px"),c=Object(n["computed"])(()=>t.axis.y*t.canvasScale+"px"),o=Object(n["computed"])(()=>"vertical"===t.type?{height:t.length*t.canvasScale+"px"}:{width:t.length*t.canvasScale+"px"});return(t,a)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"alignment-line",style:Object(n["normalizeStyle"])({left:Object(n["unref"])(l),top:Object(n["unref"])(c)})},[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["line",e.type]),style:Object(n["normalizeStyle"])(Object(n["unref"])(o))},null,6)],4))}});l("5688");const nr=Yt()(cr,[["__scopeId","data-v-37fa6068"]]);var or=nr;const ar={class:"ruler"};var rr=Object(n["defineComponent"])({__name:"Ruler",props:{viewportStyles:{type:Object,required:!0}},setup(e){const t=e,{canvasScale:l}=Object(o["c"])(z()),c=Object(n["computed"])(()=>t.viewportStyles.width*l.value/10);return(t,o)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ar,[Object(n["createElementVNode"])("div",{class:"h",style:Object(n["normalizeStyle"])({width:e.viewportStyles.width*Object(n["unref"])(l)+"px",left:e.viewportStyles.left+"px"})},[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(20,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["ruler-marker-100",{hide:Object(n["unref"])(c)<36,omit:Object(n["unref"])(c)<72}]),key:"marker-100-"+e},[Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e),1)],2)),64))],4),Object(n["createElementVNode"])("div",{class:"v",style:Object(n["normalizeStyle"])({height:e.viewportStyles.height*Object(n["unref"])(l)+"px",top:e.viewportStyles.top+"px"})},[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(20,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["ruler-marker-100",{hide:Object(n["unref"])(c)<36,omit:Object(n["unref"])(c)<72}]),key:e,style:Object(n["normalizeStyle"])({height:Object(n["unref"])(c)+"px"})},[Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e),1)],6)),64))],4)]))}});l("f126");const ir=Yt()(rr,[["__scopeId","data-v-0f6bb088"]]);var sr=ir;const dr=["width","height"],ur=["d"];var br=Object(n["defineComponent"])({__name:"ElementCreateSelection",emits:["created"],setup(e,{emit:t}){const l=z(),{creatingElement:c}=Object(o["c"])(l),{ctrlOrShiftKeyActive:a}=Object(o["c"])(G()),r=Object(n["ref"])(),i=Object(n["ref"])(),s=Object(n["ref"])(),d=Object(n["ref"])({x:0,y:0});Object(n["onMounted"])(()=>{if(!s.value)return;const{x:e,y:t}=s.value.getBoundingClientRect();d.value={x:e,y:t}});const u=e=>{let n=!0;const o=e.pageX,s=e.pageY;r.value=[o,s],document.onmousemove=e=>{if(!c.value||!n)return;let t=e.pageX,l=e.pageY;if(a.value){const e=t-o,n=l-s,a=Math.abs(e),r=Math.abs(n);if("shape"===c.value.type){const c=n>0&&e<0||n<0&&e>0;a>r?l=c?s-e:s+e:t=c?o-n:o+n}else"line"===c.value.type&&(a>r?l=s:t=o)}i.value=[t,l]},document.onmouseup=e=>{var a,d;if(document.onmousemove=null,document.onmouseup=null,2===e.button)return void setTimeout(()=>l.setCreatingElement(null),0);n=!1;const u=e.pageX,b=e.pageY,O=30;if("line"===(null===(a=c.value)||void 0===a?void 0:a.type)&&(Math.abs(u-o)>=O||Math.abs(b-s)>=O))t("created",{start:r.value,end:i.value});else if("line"!==(null===(d=c.value)||void 0===d?void 0:d.type)&&Math.abs(u-o)>=O&&Math.abs(b-s)>=O)t("created",{start:r.value,end:i.value});else{const e=200,l=Math.min(u,o),c=Math.min(b,s),n=Math.max(u,o),a=Math.max(b,s),r=n-l>=O?n-l:e,i=a-c>=O?a-c:e;t("created",{start:[l,c],end:[l+r,c+i]})}}},b=Object(n["computed"])(()=>{if(!r.value||!i.value)return null;if(!c.value||"line"!==c.value.type)return null;const[e,t]=r.value,[l,n]=i.value,o=Math.min(e,l),a=Math.max(e,l),s=Math.min(t,n),d=Math.max(t,n),u=a-o>=24?a-o:24,b=d-s>=24?d-s:24,O=e===o?0:a-o,m=t===s?0:d-s,p=l===o?0:a-o,f=n===s?0:d-s,j=`M${O}, ${m} L${p}, ${f}`;return{svgWidth:u,svgHeight:b,startX:O,startY:m,endX:p,endY:f,path:j}}),O=Object(n["computed"])(()=>{if(!r.value||!i.value)return{};const[e,t]=r.value,[l,c]=i.value,n=Math.min(e,l),o=Math.max(e,l),a=Math.min(t,c),s=Math.max(t,c),u=o-n,b=s-a;return{left:n-d.value.x+"px",top:a-d.value.y+"px",width:u+"px",height:b+"px"}});return(e,t)=>{var l,o;return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"element-create-selection",ref_key:"selectionRef",ref:s,onMousedown:t[0]||(t[0]=Object(n["withModifiers"])(e=>u(e),["stop"])),onContextmenu:t[1]||(t[1]=Object(n["withModifiers"])(()=>{},["stop","prevent"]))},[r.value&&i.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:Object(n["normalizeClass"])(["selection",null===(l=Object(n["unref"])(c))||void 0===l?void 0:l.type]),style:Object(n["normalizeStyle"])(Object(n["unref"])(O))},["line"===(null===(o=Object(n["unref"])(c))||void 0===o?void 0:o.type)&&Object(n["unref"])(b)?(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",{key:0,overflow:"visible",width:Object(n["unref"])(b).svgWidth,height:Object(n["unref"])(b).svgHeight},[Object(n["createElementVNode"])("path",{d:Object(n["unref"])(b).path,stroke:"#d14424",fill:"none","stroke-width":"2"},null,8,ur)],8,dr)):Object(n["createCommentVNode"])("",!0)],6)):Object(n["createCommentVNode"])("",!0)],544)}}});l("7aed");const Or=Yt()(br,[["__scopeId","data-v-5a941f07"]]);var mr=Or,pr=(e,t)=>{const l=Object(n["computed"])(()=>[{direction:Q.LEFT_TOP,style:{}},{direction:Q.TOP,style:{left:e.value/2+"px"}},{direction:Q.RIGHT_TOP,style:{left:e.value+"px"}},{direction:Q.LEFT,style:{top:t.value/2+"px"}},{direction:Q.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}},{direction:Q.LEFT_BOTTOM,style:{top:t.value+"px"}},{direction:Q.BOTTOM,style:{left:e.value/2+"px",top:t.value+"px"}},{direction:Q.RIGHT_BOTTOM,style:{left:e.value+"px",top:t.value+"px"}}]),c=Object(n["computed"])(()=>[{direction:Q.LEFT,style:{top:t.value/2+"px"}},{direction:Q.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}}]),o=Object(n["computed"])(()=>[{direction:Q.TOP,style:{left:e.value/2+"px"}},{direction:Q.BOTTOM,style:{left:e.value/2+"px",top:t.value+"px"}}]),a=Object(n["computed"])(()=>[{type:K.T,style:{width:e.value+"px"}},{type:K.B,style:{top:t.value+"px",width:e.value+"px"}},{type:K.L,style:{height:t.value+"px"}},{type:K.R,style:{left:e.value+"px",height:t.value+"px"}}]);return{resizeHandlers:l,textElementResizeHandlers:c,verticalTextElementResizeHandlers:o,borderLines:a}},fr=Object(n["defineComponent"])({__name:"ResizeHandler",props:{type:{type:String,default:""},rotate:{type:Number,default:0}},setup(e){const t=e,l=Object(n["computed"])(()=>{const e="rotate-",l=t.rotate;return l>-22.5&&l<=22.5?e+0:l>22.5&&l<=67.5?e+45:l>67.5&&l<=112.5?e+90:l>112.5&&l<=157.5?e+135:l>157.5||l<=-157.5?e+0:l>-157.5&&l<=-112.5?e+45:l>-112.5&&l<=-67.5?e+90:l>-67.5&&l<=-22.5?e+135:e+0});return(t,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["resize-handler",Object(n["unref"])(l),e.type])},null,2))}});l("b510");const jr=Yt()(fr,[["__scopeId","data-v-881ee3f8"]]);var vr=jr,hr=Object(n["defineComponent"])({__name:"BorderLine",props:{type:{type:String,required:!0},isWide:{type:Boolean,default:!1}},setup(e){return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["border-line",e.type,{wide:e.isWide}])},null,2))}});l("2460");const yr=Yt()(hr,[["__scopeId","data-v-7170d1be"]]);var gr=yr,xr=Object(n["defineComponent"])({__name:"MultiSelectOperate",props:{elementList:{type:Array,required:!0},scaleMultiElement:{type:Function,required:!0}},setup(e){const t=e,{activeElementIdList:l,canvasScale:c}=Object(o["c"])(z()),a=Object(n["computed"])(()=>t.elementList.filter(e=>l.value.includes(e.id))),r=Object(n["ref"])({minX:0,maxX:0,minY:0,maxY:0}),i=Object(n["computed"])(()=>(r.value.maxX-r.value.minX)*c.value),s=Object(n["computed"])(()=>(r.value.maxY-r.value.minY)*c.value),{resizeHandlers:d,borderLines:u}=pr(i,s),b=()=>{const{minX:e,maxX:t,minY:l,maxY:c}=he(a.value);r.value={minX:e,maxX:t,minY:l,maxY:c}};Object(n["watchEffect"])(b);const O=Object(n["computed"])(()=>a.value.some(e=>!!("image"!==e.type&&"shape"!==e.type||e.rotate)));return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"multi-select-operate",style:Object(n["normalizeStyle"])({left:r.value.minX*Object(n["unref"])(c)+"px",top:r.value.minY*Object(n["unref"])(c)+"px"})},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(u),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(gr,{key:e.type,type:e.type,style:Object(n["normalizeStyle"])(e.style)},null,8,["type","style"]))),128)),Object(n["unref"])(O)?Object(n["createCommentVNode"])("",!0):(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],{key:0},Object(n["renderList"])(Object(n["unref"])(d),t=>(Object(n["openBlock"])(),Object(n["createBlock"])(vr,{key:t.direction,type:t.direction,style:Object(n["normalizeStyle"])(t.style),onMousedown:Object(n["withModifiers"])(l=>e.scaleMultiElement(l,r.value,t.direction),["stop"])},null,8,["type","style","onMousedown"]))),128))],4))}});l("a669");const kr=Yt()(xr,[["__scopeId","data-v-defbd922"]]);var Cr=kr;const Nr={class:"rotate-handler"};function Er(e,t){return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Nr)}l("1ebd");const wr={},Vr=Yt()(wr,[["render",Er],["__scopeId","data-v-b99d8dae"]]);var Ir=Vr;const Sr={inheritAttrs:!1};var Lr=Object(n["defineComponent"])({...Sr,__name:"ImageElementOperate",props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup(e){const t=e,{canvasScale:l,clipingImageElementId:c}=Object(o["c"])(z()),a=Object(n["computed"])(()=>c.value===t.elementInfo.id),r=Object(n["computed"])(()=>t.elementInfo.width*l.value),i=Object(n["computed"])(()=>t.elementInfo.height*l.value),{resizeHandlers:s,borderLines:d}=pr(r,i);return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["image-element-operate",{cliping:Object(n["unref"])(a)}])},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(d),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(gr,{class:"operate-border-line",key:e.type,type:e.type,style:Object(n["normalizeStyle"])(e.style)},null,8,["type","style"]))),128)),e.handlerVisible?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(s),t=>(Object(n["openBlock"])(),Object(n["createBlock"])(vr,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(n["normalizeStyle"])(t.style),onMousedown:Object(n["withModifiers"])(l=>e.scaleElement(l,e.elementInfo,t.direction),["stop"])},null,8,["type","rotate","style","onMousedown"]))),128)),Object(n["createVNode"])(Ir,{class:"operate-rotate-handler",style:Object(n["normalizeStyle"])({left:Object(n["unref"])(r)/2+"px"}),onMousedown:l[0]||(l[0]=Object(n["withModifiers"])(t=>e.rotateElement(e.elementInfo),["stop"]))},null,8,["style"])],64)):Object(n["createCommentVNode"])("",!0)],2))}});l("ae9f");const Br=Yt()(Lr,[["__scopeId","data-v-46b250c2"]]);var _r=Br;const Tr={class:"text-element-operate"},Mr={inheritAttrs:!1};var Dr=Object(n["defineComponent"])({...Mr,__name:"TextElementOperate",props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup(e){const t=e,{canvasScale:l}=Object(o["c"])(z()),c=Object(n["computed"])(()=>t.elementInfo.width*l.value),a=Object(n["computed"])(()=>t.elementInfo.height*l.value),{textElementResizeHandlers:r,verticalTextElementResizeHandlers:i,borderLines:s}=pr(c,a),d=Object(n["computed"])(()=>t.elementInfo.vertical?i.value:r.value);return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Tr,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(s),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(gr,{class:"operate-border-line",key:e.type,type:e.type,style:Object(n["normalizeStyle"])(e.style)},null,8,["type","style"]))),128)),e.handlerVisible?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(d),t=>(Object(n["openBlock"])(),Object(n["createBlock"])(vr,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(n["normalizeStyle"])(t.style),onMousedown:Object(n["withModifiers"])(l=>e.scaleElement(l,e.elementInfo,t.direction),["stop"])},null,8,["type","rotate","style","onMousedown"]))),128)),Object(n["createVNode"])(Ir,{class:"operate-rotate-handler",style:Object(n["normalizeStyle"])({left:Object(n["unref"])(c)/2+"px"}),onMousedown:l[0]||(l[0]=Object(n["withModifiers"])(t=>e.rotateElement(e.elementInfo),["stop"]))},null,8,["style"])],64)):Object(n["createCommentVNode"])("",!0)]))}});const zr=Dr;var Fr=zr;const Ar={class:"shape-element-operate"},$r={inheritAttrs:!1};var Rr=Object(n["defineComponent"])({...$r,__name:"ShapeElementOperate",props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0},moveShapeKeypoint:{type:Function,required:!0}},setup(e){const t=e,{canvasScale:l}=Object(o["c"])(z()),c=Object(n["computed"])(()=>t.elementInfo.width*l.value),a=Object(n["computed"])(()=>t.elementInfo.height*l.value),{resizeHandlers:r,borderLines:i}=pr(c,a),s=Object(n["computed"])(()=>{if(!t.elementInfo.pathFormula||!t.elementInfo.keypoint)return{};const e=Le[t.elementInfo.pathFormula];if("editable"in e){const c=e.getBaseSize(t.elementInfo.width,t.elementInfo.height)*t.elementInfo.keypoint;if("left"===e.relative)return{left:c*l.value+"px"};if("right"===e.relative)return{left:(t.elementInfo.width-c)*l.value+"px"};if("center"===e.relative)return{left:(t.elementInfo.width-c)/2*l.value+"px"};if("top"===e.relative)return{top:c*l.value+"px"};if("bottom"===e.relative)return{top:(t.elementInfo.height-c)*l.value+"px"}}return{}});return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ar,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(i),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(gr,{class:"operate-border-line",key:e.type,type:e.type,style:Object(n["normalizeStyle"])(e.style)},null,8,["type","style"]))),128)),e.handlerVisible?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(r),t=>(Object(n["openBlock"])(),Object(n["createBlock"])(vr,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(n["normalizeStyle"])(t.style),onMousedown:Object(n["withModifiers"])(l=>e.scaleElement(l,e.elementInfo,t.direction),["stop"])},null,8,["type","rotate","style","onMousedown"]))),128)),Object(n["createVNode"])(Ir,{class:"operate-rotate-handler",style:Object(n["normalizeStyle"])({left:Object(n["unref"])(c)/2+"px"}),onMousedown:l[0]||(l[0]=Object(n["withModifiers"])(t=>e.rotateElement(e.elementInfo),["stop"]))},null,8,["style"]),void 0!==e.elementInfo.keypoint?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:"operate-keypoint-handler",style:Object(n["normalizeStyle"])(Object(n["unref"])(s)),onMousedown:l[1]||(l[1]=Object(n["withModifiers"])(t=>e.moveShapeKeypoint(t,e.elementInfo),["stop"]))},null,36)):Object(n["createCommentVNode"])("",!0)],64)):Object(n["createCommentVNode"])("",!0)]))}});l("614e");const Pr=Yt()(Rr,[["__scopeId","data-v-fd38df18"]]);var Hr=Pr;const qr={class:"line-element-operate"},Ur=["width","height","stroke"],Gr={key:0},Xr=["x1","y1","x2","y2"],Yr=["x1","y1","x2","y2"],Zr=["x1","y1","x2","y2"],Wr=["x1","y1","x2","y2"],Jr={inheritAttrs:!1};var Kr=Object(n["defineComponent"])({...Jr,__name:"LineElementOperate",props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},dragLineElement:{type:Function,required:!0}},setup(e){const t=e,{canvasScale:l}=Object(o["c"])(z()),c=Object(n["computed"])(()=>Math.max(t.elementInfo.start[0],t.elementInfo.end[0])),a=Object(n["computed"])(()=>Math.max(t.elementInfo.start[1],t.elementInfo.end[1])),r=Object(n["computed"])(()=>{const e=[{handler:ee.START,style:{left:t.elementInfo.start[0]*l.value+"px",top:t.elementInfo.start[1]*l.value+"px"}},{handler:ee.END,style:{left:t.elementInfo.end[0]*l.value+"px",top:t.elementInfo.end[1]*l.value+"px"}}];if(t.elementInfo.curve||t.elementInfo.broken){const c=t.elementInfo.curve||t.elementInfo.broken;e.push({handler:ee.C,style:{left:c[0]*l.value+"px",top:c[1]*l.value+"px"}})}else if(t.elementInfo.cubic){const[c,n]=t.elementInfo.cubic;e.push({handler:ee.C1,style:{left:c[0]*l.value+"px",top:c[1]*l.value+"px"}}),e.push({handler:ee.C2,style:{left:n[0]*l.value+"px",top:n[1]*l.value+"px"}})}return e});return(t,o)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",qr,[e.handlerVisible?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(r),t=>(Object(n["openBlock"])(),Object(n["createBlock"])(vr,{class:"operate-resize-handler",key:t.handler,style:Object(n["normalizeStyle"])(t.style),onMousedown:Object(n["withModifiers"])(l=>e.dragLineElement(l,e.elementInfo,t.handler),["stop"])},null,8,["style","onMousedown"]))),128)),(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",{width:Object(n["unref"])(c)||1,height:Object(n["unref"])(a)||1,stroke:e.elementInfo.color,overflow:"visible",style:Object(n["normalizeStyle"])({transform:`scale(${Object(n["unref"])(l)})`})},[e.elementInfo.curve?(Object(n["openBlock"])(),Object(n["createElementBlock"])("g",Gr,[Object(n["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,Xr),Object(n["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,Yr)])):Object(n["createCommentVNode"])("",!0),e.elementInfo.cubic?(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],{key:1},Object(n["renderList"])(e.elementInfo.cubic,(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("g",{key:l},[0===l?(Object(n["openBlock"])(),Object(n["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,Zr)):Object(n["createCommentVNode"])("",!0),1===l?(Object(n["openBlock"])(),Object(n["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,Wr)):Object(n["createCommentVNode"])("",!0)]))),128)):Object(n["createCommentVNode"])("",!0)],12,Ur))],64)):Object(n["createCommentVNode"])("",!0)]))}});l("fac9");const Qr=Yt()(Kr,[["__scopeId","data-v-4659f395"]]);var ei=Qr;const ti={class:"table-element-operate"},li={inheritAttrs:!1};var ci=Object(n["defineComponent"])({...li,__name:"TableElementOperate",props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup(e){const t=e,{canvasScale:l}=Object(o["c"])(z()),c=Object(n["computed"])(()=>t.elementInfo.outline.width||1),a=Object(n["computed"])(()=>(t.elementInfo.width+c.value)*l.value),r=Object(n["computed"])(()=>t.elementInfo.height*l.value),{resizeHandlers:i,borderLines:s}=pr(a,r);return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ti,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(s),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(gr,{class:"operate-border-line",key:e.type,type:e.type,style:Object(n["normalizeStyle"])(e.style)},null,8,["type","style"]))),128)),e.handlerVisible?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(i),t=>(Object(n["openBlock"])(),Object(n["createBlock"])(vr,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(n["normalizeStyle"])(t.style),onMousedown:Object(n["withModifiers"])(l=>e.scaleElement(l,e.elementInfo,t.direction),["stop"])},null,8,["type","rotate","style","onMousedown"]))),128)),Object(n["createVNode"])(Ir,{class:"operate-rotate-handler",style:Object(n["normalizeStyle"])({left:Object(n["unref"])(a)/2+"px"}),onMousedown:l[0]||(l[0]=Object(n["withModifiers"])(t=>e.rotateElement(e.elementInfo),["stop"]))},null,8,["style"])],64)):Object(n["createCommentVNode"])("",!0)]))}});const ni=ci;var oi=ni;const ai={class:"common-element-operate"},ri={inheritAttrs:!1};var ii=Object(n["defineComponent"])({...ri,__name:"CommonElementOperate",props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup(e){const t=e,{canvasScale:l}=Object(o["c"])(z()),c=Object(n["computed"])(()=>t.elementInfo.width*l.value),a=Object(n["computed"])(()=>t.elementInfo.height*l.value),{resizeHandlers:r,borderLines:i}=pr(c,a),s=Object(n["computed"])(()=>["video","audio"].includes(t.elementInfo.type));return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ai,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(i),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(gr,{class:"operate-border-line",key:e.type,type:e.type,style:Object(n["normalizeStyle"])(e.style)},null,8,["type","style"]))),128)),e.handlerVisible?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(r),t=>(Object(n["openBlock"])(),Object(n["createBlock"])(vr,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(n["normalizeStyle"])(t.style),onMousedown:Object(n["withModifiers"])(l=>e.scaleElement(l,e.elementInfo,t.direction),["stop"])},null,8,["type","rotate","style","onMousedown"]))),128)),Object(n["unref"])(s)?Object(n["createCommentVNode"])("",!0):(Object(n["openBlock"])(),Object(n["createBlock"])(Ir,{key:0,class:"operate-rotate-handler",style:Object(n["normalizeStyle"])({left:Object(n["unref"])(c)/2+"px"}),onMousedown:l[0]||(l[0]=Object(n["withModifiers"])(t=>e.rotateElement(e.elementInfo),["stop"]))},null,8,["style"]))],64)):Object(n["createCommentVNode"])("",!0)]))}});const si=ii;var di=si,ui=(l("55ec"),l("a79d")),bi=()=>{const e=T(),{addHistorySnapshot:t}=Te(),l=(l,c)=>{const n=/^(https?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-.,@?^=%&:\/~+#]*[\w\-@?^=%&\/~+#])?$/;if("web"===c.type&&!n.test(c.target))return ne["a"].error("不是正确的网页链接地址"),!1;if("slide"===c.type&&!c.target)return ne["a"].error("请先选择链接目标"),!1;const o={link:c};return e.updateElement({id:l.id,props:o}),t(),!0},c=l=>{e.removeElementProps({id:l.id,propName:"link"}),t()};return{setLink:l,removeLink:c}};const Oi=["href"],mi={class:"btns"};var pi=Object(n["defineComponent"])({__name:"LinkHandler",props:{elementInfo:{type:Object,required:!0},link:{type:Object,required:!0},openLinkDialog:{type:Function,required:!0}},setup(e){const t=e,l=z(),c=T(),{canvasScale:a}=Object(o["c"])(l),{slides:r}=Object(o["c"])(c),{removeLink:i}=bi(),s=Object(n["computed"])(()=>"line"===t.elementInfo.type?0:t.elementInfo.height),d=e=>{const t=r.value.findIndex(t=>t.id===e);-1!==t&&(l.setActiveElementIdList([]),c.updateSlideIndex(t))};return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"link-handler",style:Object(n["normalizeStyle"])({top:Object(n["unref"])(s)*Object(n["unref"])(a)+10+"px"})},["web"===e.link.type?(Object(n["openBlock"])(),Object(n["createElementBlock"])("a",{key:0,class:"link",href:e.link.target,target:"_blank"},Object(n["toDisplayString"])(e.link.target),9,Oi)):(Object(n["openBlock"])(),Object(n["createElementBlock"])("a",{key:1,class:"link",onClick:l[0]||(l[0]=t=>d(e.link.target))},"幻灯片页面 "+Object(n["toDisplayString"])(e.link.target),1)),Object(n["createElementVNode"])("div",mi,[Object(n["createElementVNode"])("div",{class:"btn",onClick:l[1]||(l[1]=t=>e.openLinkDialog())},"更换"),Object(n["createVNode"])(Object(n["unref"])(ui["a"]),{type:"vertical"}),Object(n["createElementVNode"])("div",{class:"btn",onClick:l[2]||(l[2]=t=>Object(n["unref"])(i)(e.elementInfo))},"移除")])],4))}});l("c6c4");const fi=Yt()(pi,[["__scopeId","data-v-12300fd5"]]);var ji=fi;const vi={key:1,class:"animation-index"};var hi=Object(n["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},moveShapeKeypoint:{type:Function,required:!0},openLinkDialog:{type:Function,required:!0}},setup(e){const t=e,{canvasScale:l,toolbarState:c}=Object(o["c"])(z()),{formatedAnimations:a}=Object(o["c"])(T()),r=Object(n["computed"])(()=>{const e={[Se.IMAGE]:_r,[Se.TEXT]:Fr,[Se.SHAPE]:Hr,[Se.LINE]:ei,[Se.TABLE]:oi,[Se.CHART]:di,[Se.LATEX]:di,[Se.VIDEO]:di,[Se.AUDIO]:di};return e[t.elementInfo.type]||null}),i=Object(n["computed"])(()=>{const e=[];for(let l=0;le.elId);c.includes(t.elementInfo.id)&&e.push(l)}return e}),s=Object(n["computed"])(()=>"rotate"in t.elementInfo?t.elementInfo.rotate:0),d=Object(n["computed"])(()=>"height"in t.elementInfo?t.elementInfo.height:0);return(t,o)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["operate",{"multi-select":e.isMultiSelect&&!e.isActive}]),style:Object(n["normalizeStyle"])({top:e.elementInfo.top*Object(n["unref"])(l)+"px",left:e.elementInfo.left*Object(n["unref"])(l)+"px",transform:`rotate(${Object(n["unref"])(s)}deg)`,transformOrigin:`${e.elementInfo.width*Object(n["unref"])(l)/2}px ${Object(n["unref"])(d)*Object(n["unref"])(l)/2}px`})},[e.isSelected?(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["resolveDynamicComponent"])(Object(n["unref"])(r)),{key:0,elementInfo:e.elementInfo,handlerVisible:!e.elementInfo.lock&&(e.isActiveGroupElement||!e.isMultiSelect),rotateElement:e.rotateElement,scaleElement:e.scaleElement,dragLineElement:e.dragLineElement,moveShapeKeypoint:e.moveShapeKeypoint},null,8,["elementInfo","handlerVisible","rotateElement","scaleElement","dragLineElement","moveShapeKeypoint"])):Object(n["createCommentVNode"])("",!0),"elAnimation"===Object(n["unref"])(c)&&Object(n["unref"])(i).length?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",vi,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(i),e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"index-item",key:e},Object(n["toDisplayString"])(e+1),1))),128))])):Object(n["createCommentVNode"])("",!0),e.isActive&&e.elementInfo.link?(Object(n["openBlock"])(),Object(n["createBlock"])(ji,{key:2,elementInfo:e.elementInfo,link:e.elementInfo.link,openLinkDialog:e.openLinkDialog,onMousedown:o[0]||(o[0]=Object(n["withModifiers"])(()=>{},["stop"]))},null,8,["elementInfo","link","openLinkDialog"])):Object(n["createCommentVNode"])("",!0)],6))}});l("624e");const yi=Yt()(hi,[["__scopeId","data-v-26f9c48a"]]);var gi=yi,xi=(l("6ba6"),l("5efb")),ki=(l("5704"),l("b558")),Ci=(l("2ef0f"),l("9839"));const Ni=["src"];var Ei=Object(n["defineComponent"])({__name:"BaseImageElement",props:{elementInfo:{type:Object,required:!0}},setup(e){const t=e,l=Object(n["computed"])(()=>t.elementInfo.shadow),{shadowStyle:c}=Al(l),o=Object(n["computed"])(()=>t.elementInfo.flipH),a=Object(n["computed"])(()=>t.elementInfo.flipV),{flipStyle:r}=$l(o,a),i=Object(n["computed"])(()=>t.elementInfo.clip),{clipShape:s,imgPosition:d}=Pl(i),u=Object(n["computed"])(()=>t.elementInfo.filters),{filter:b}=Hl(u);return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"base-element-image",style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["createElementVNode"])("div",{class:"element-content",style:Object(n["normalizeStyle"])({filter:Object(n["unref"])(c)?`drop-shadow(${Object(n["unref"])(c)})`:"",transform:Object(n["unref"])(r)})},[Object(n["createVNode"])(sc,{elementInfo:e.elementInfo},null,8,["elementInfo"]),Object(n["createElementVNode"])("div",{class:"image-content",style:Object(n["normalizeStyle"])({clipPath:Object(n["unref"])(s).style})},[Object(n["createElementVNode"])("img",{src:e.elementInfo.src,draggable:!1,style:Object(n["normalizeStyle"])({top:Object(n["unref"])(d).top,left:Object(n["unref"])(d).left,width:Object(n["unref"])(d).width,height:Object(n["unref"])(d).height,filter:Object(n["unref"])(b)}),alt:""},null,12,Ni),e.elementInfo.colorMask?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:"color-mask",style:Object(n["normalizeStyle"])({backgroundColor:e.elementInfo.colorMask.color,opacity:e.elementInfo.colorMask.opacity})},null,4)):Object(n["createCommentVNode"])("",!0)],4)],4)],4)],4))}});l("4c0e");const wi=Yt()(Ei,[["__scopeId","data-v-c874e65e"]]);var Vi=wi;const Ii=["innerHTML"];var Si=Object(n["defineComponent"])({__name:"BaseTextElement",props:{elementInfo:{type:Object,required:!0}},setup(e){const t=e,l=Object(n["computed"])(()=>t.elementInfo.shadow),{shadowStyle:c}=Al(l),o=Object(n["computed"])(()=>({"--textIndent":(t.elementInfo.textIndent||0)+"px","--paragraphSpace":(void 0===t.elementInfo.paragraphSpace?5:t.elementInfo.paragraphSpace)+"px"}));return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"base-element-text",style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["createElementVNode"])("div",{class:"element-content",style:Object(n["normalizeStyle"])({width:e.elementInfo.vertical?"auto":e.elementInfo.width+"px",height:e.elementInfo.vertical?e.elementInfo.height+"px":"auto",backgroundColor:e.elementInfo.fill,opacity:e.elementInfo.opacity,textShadow:Object(n["unref"])(c),lineHeight:e.elementInfo.lineHeight,letterSpacing:(e.elementInfo.wordSpace||0)+"px",color:e.elementInfo.defaultColor,fontFamily:e.elementInfo.defaultFontName,writingMode:e.elementInfo.vertical?"vertical-rl":"horizontal-tb"})},[Object(n["createVNode"])(Sc,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(n["createElementVNode"])("div",{class:"text ProseMirror-static",style:Object(n["normalizeStyle"])(Object(n["unref"])(o)),innerHTML:e.elementInfo.content},null,12,Ii)],4)],4)],4))}});l("5140");const Li=Yt()(Si,[["__scopeId","data-v-18d84242"]]);var Bi=Li;const _i=["width","height"],Ti={key:0},Mi=["transform"],Di=["d","fill","stroke","stroke-width","stroke-dasharray"],zi=["innerHTML"];var Fi=Object(n["defineComponent"])({__name:"BaseShapeElement",props:{elementInfo:{type:Object,required:!0}},setup(e){const t=e,l=Object(n["computed"])(()=>t.elementInfo.outline),{outlineWidth:c,outlineStyle:o,outlineColor:a}=ql(l),r=Object(n["computed"])(()=>t.elementInfo.shadow),{shadowStyle:i}=Al(r),s=Object(n["computed"])(()=>t.elementInfo.flipH),d=Object(n["computed"])(()=>t.elementInfo.flipV),{flipStyle:u}=$l(s,d),b=Object(n["computed"])(()=>{const e={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"};return t.elementInfo.text?t.elementInfo.text:e});return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"base-element-shape",style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["createElementVNode"])("div",{class:"element-content",style:Object(n["normalizeStyle"])({opacity:e.elementInfo.opacity,filter:Object(n["unref"])(i)?`drop-shadow(${Object(n["unref"])(i)})`:"",transform:Object(n["unref"])(u),color:Object(n["unref"])(b).defaultColor,fontFamily:Object(n["unref"])(b).defaultFontName})},[(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height},[e.elementInfo.gradient?(Object(n["openBlock"])(),Object(n["createElementBlock"])("defs",Ti,[Object(n["createVNode"])(Un,{id:"base-gradient-"+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(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("g",{transform:`scale(${e.elementInfo.width/e.elementInfo.viewBox[0]}, ${e.elementInfo.height/e.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`},[Object(n["createElementVNode"])("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",d:e.elementInfo.path,fill:e.elementInfo.gradient?`url(#base-gradient-${e.elementInfo.id})`:e.elementInfo.fill,stroke:Object(n["unref"])(a),"stroke-width":Object(n["unref"])(c),"stroke-dasharray":"dashed"===Object(n["unref"])(o)?"10 5":"0 0"},null,8,Di)],8,Mi)],8,_i)),Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["shape-text",Object(n["unref"])(b).align])},[Object(n["createElementVNode"])("div",{class:"ProseMirror-static",innerHTML:Object(n["unref"])(b).content},null,8,zi)],2)],4)],4)],4))}});l("8683");const Ai=Yt()(Fi,[["__scopeId","data-v-073084bf"]]);var $i=Ai;const Ri=["width","height"],Pi=["d","stroke","stroke-width","stroke-dasharray","marker-start","marker-end"];var Hi=Object(n["defineComponent"])({__name:"BaseLineElement",props:{elementInfo:{type:Object,required:!0}},setup(e){const t=e,l=Object(n["computed"])(()=>t.elementInfo.shadow),{shadowStyle:c}=Al(l),o=Object(n["computed"])(()=>{const e=Math.abs(t.elementInfo.start[0]-t.elementInfo.end[0]);return e<24?24:e}),a=Object(n["computed"])(()=>{const e=Math.abs(t.elementInfo.start[1]-t.elementInfo.end[1]);return e<24?24:e}),r=Object(n["computed"])(()=>"dashed"===t.elementInfo.style?"10, 5":"0, 0"),i=Object(n["computed"])(()=>Ce(t.elementInfo));return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"base-element-line",style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px"})},[Object(n["createElementVNode"])("div",{class:"element-content",style:Object(n["normalizeStyle"])({filter:Object(n["unref"])(c)?`drop-shadow(${Object(n["unref"])(c)})`:""})},[(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",{overflow:"visible",width:Object(n["unref"])(o),height:Object(n["unref"])(a)},[Object(n["createElementVNode"])("defs",null,[e.elementInfo.points[0]?(Object(n["openBlock"])(),Object(n["createBlock"])(co,{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(n["createCommentVNode"])("",!0),e.elementInfo.points[1]?(Object(n["openBlock"])(),Object(n["createBlock"])(co,{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(n["createCommentVNode"])("",!0)]),Object(n["createElementVNode"])("path",{d:Object(n["unref"])(i),stroke:e.elementInfo.color,"stroke-width":e.elementInfo.width,"stroke-dasharray":Object(n["unref"])(r),fill:"none","marker-start":e.elementInfo.points[0]?`url(#${e.elementInfo.id}-${e.elementInfo.points[0]}-start)`:"","marker-end":e.elementInfo.points[1]?`url(#${e.elementInfo.id}-${e.elementInfo.points[1]}-end)`:""},null,8,Pi)],8,Ri))],4)],4))}});l("fbfe");const qi=Yt()(Hi,[["__scopeId","data-v-340cdee8"]]);var Ui=qi,Gi=Object(n["defineComponent"])({__name:"BaseChartElement",props:{elementInfo:{type:Object,required:!0}},setup(e){const t=Object(n["inject"])(vl)||Object(n["ref"])(1),l=Object(n["computed"])(()=>t.value<1),c=Object(n["computed"])(()=>l.value?1/t.value:1);return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"base-element-chart",style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["createElementVNode"])("div",{class:"element-content",style:Object(n["normalizeStyle"])({backgroundColor:e.elementInfo.fill})},[Object(n["createVNode"])(Sc,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(n["createVNode"])(mo,{width:e.elementInfo.width*Object(n["unref"])(c),height:e.elementInfo.height*Object(n["unref"])(c),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||"",style:Object(n["normalizeStyle"])({zoom:1/Object(n["unref"])(c)})},null,8,["width","height","type","data","options","themeColor","gridColor","legends","legend","style"])],4)],4)],4))}});l("9b4d");const Xi=Yt()(Gi,[["__scopeId","data-v-7d2e5c4e"]]);var Yi=Xi;const Zi=["width"],Wi=["rowspan","colspan"],Ji=["innerHTML"];var Ki=Object(n["defineComponent"])({__name:"StaticTable",props:{data:{type:Array,required:!0},width:{type:Number,required:!0},cellMinHeight:{type:Number,required:!0},colWidths:{type:Array,required:!0},outline:{type:Object,required:!0},theme:{type:Object},editable:{type:Boolean,default:!0}},setup(e){const t=e,l=Object(n["ref"])([]),c=Object(n["computed"])(()=>l.value.reduce((e,t)=>e+t));Object(n["watch"])([()=>t.colWidths,()=>t.width],()=>{l.value=t.colWidths.map(e=>e*t.width)},{immediate:!0});const o=Object(n["computed"])(()=>t.data),{hideCells:a}=yo(o),r=Object(n["computed"])(()=>t.theme),{subThemeColor:i}=go(r);return(t,o)=>{var s,d,u,b,O;return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"static-table",style:Object(n["normalizeStyle"])({width:Object(n["unref"])(c)+"px"})},[Object(n["createElementVNode"])("table",{class:Object(n["normalizeClass"])({theme:Object(n["unref"])(r),"row-header":null===(s=Object(n["unref"])(r))||void 0===s?void 0:s.rowHeader,"row-footer":null===(d=Object(n["unref"])(r))||void 0===d?void 0:d.rowFooter,"col-header":null===(u=Object(n["unref"])(r))||void 0===u?void 0:u.colHeader,"col-footer":null===(b=Object(n["unref"])(r))||void 0===b?void 0:b.colFooter}),style:Object(n["normalizeStyle"])(`--themeColor: ${null===(O=Object(n["unref"])(r))||void 0===O?void 0:O.color}; --subThemeColor1: ${Object(n["unref"])(i)[0]}; --subThemeColor2: ${Object(n["unref"])(i)[1]}`)},[Object(n["createElementVNode"])("colgroup",null,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(l.value,(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("col",{span:"1",key:t,width:e},null,8,Zi))),128))]),Object(n["createElementVNode"])("tbody",null,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.data,(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("tr",{key:l,style:Object(n["normalizeStyle"])({height:e.cellMinHeight+"px"})},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(t,(t,c)=>Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("td",{class:"cell",style:Object(n["normalizeStyle"])({borderStyle:e.outline.style,borderColor:e.outline.color,borderWidth:e.outline.width+"px",...Object(n["unref"])(vo)(t.style)}),key:t.id,rowspan:t.rowspan,colspan:t.colspan},[Object(n["createElementVNode"])("div",{class:"cell-text",style:Object(n["normalizeStyle"])({minHeight:e.cellMinHeight-4+"px"}),innerHTML:Object(n["unref"])(ho)(t.text)},null,12,Ji)],12,Wi)),[[n["vShow"],!Object(n["unref"])(a).includes(`${l}_${c}`)]])),128))],4))),128))])],6)],4)}}});l("ae59");const Qi=Yt()(Ki,[["__scopeId","data-v-40e73d4e"]]);var es=Qi;const ts={class:"element-content"};var ls=Object(n["defineComponent"])({__name:"BaseTableElement",props:{elementInfo:{type:Object,required:!0}},setup(e){return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"base-element-table",style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["createElementVNode"])("div",ts,[Object(n["createVNode"])(es,{data:e.elementInfo.data,width:e.elementInfo.width,cellMinHeight:e.elementInfo.cellMinHeight,colWidths:e.elementInfo.colWidths,outline:e.elementInfo.outline,theme:e.elementInfo.theme},null,8,["data","width","cellMinHeight","colWidths","outline","theme"])])],4)],4))}});l("eb6d");const cs=Yt()(ls,[["__scopeId","data-v-6b8ce0be"]]);var ns=cs;const os={class:"element-content"},as=["width","height","stroke","stroke-width"],rs=["transform"],is=["d"];var ss=Object(n["defineComponent"])({__name:"BaseLatexElement",props:{elementInfo:{type:Object,required:!0}},setup(e){return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"base-element-latex",style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["createElementVNode"])("div",os,[(Object(n["openBlock"])(),Object(n["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(n["createElementVNode"])("g",{transform:`scale(${e.elementInfo.width/e.elementInfo.viewBox[0]}, ${e.elementInfo.height/e.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`},[Object(n["createElementVNode"])("path",{d:e.elementInfo.path},null,8,is)],8,rs)],8,as))])],4)],4))}});l("58eb");const ds=Yt()(ss,[["__scopeId","data-v-9a47b5f4"]]);var us=ds,bs=Object(n["defineComponent"])({__name:"BaseVideoElement",props:{elementInfo:{type:Object,required:!0}},setup(e){return(t,l)=>{const c=Object(n["resolveComponent"])("IconPlayOne");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"base-element-video",style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["createElementVNode"])("div",{class:"element-content",style:Object(n["normalizeStyle"])({backgroundImage:`url(${e.elementInfo.poster})`})},[Object(n["createVNode"])(c,{class:"icon"})],4)],4)],4)}}});l("5a58");const Os=Yt()(bs,[["__scopeId","data-v-56b7f716"]]);var ms=Os;const ps={class:"element-content"};var fs=Object(n["defineComponent"])({__name:"BaseAudioElement",props:{elementInfo:{type:Object,required:!0}},setup(e){const t=e,l=Object(n["computed"])(()=>Math.min(t.elementInfo.width,t.elementInfo.height)+"px");return(t,c)=>{const o=Object(n["resolveComponent"])("IconVolumeNotice");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"base-element-audio",style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["createElementVNode"])("div",ps,[Object(n["createVNode"])(o,{class:"audio-icon",style:Object(n["normalizeStyle"])({fontSize:Object(n["unref"])(l),color:e.elementInfo.color})},null,8,["style"])])],4)],4)}}});l("0491");const js=Yt()(fs,[["__scopeId","data-v-5258e03b"]]);var vs=js,hs=Object(n["defineComponent"])({__name:"ThumbnailElement",props:{elementInfo:{type:Object,required:!0},elementIndex:{type:Number,required:!0}},setup(e){const t=e,l=Object(n["computed"])(()=>{const e={[Se.IMAGE]:Vi,[Se.TEXT]:Bi,[Se.SHAPE]:$i,[Se.LINE]:Ui,[Se.CHART]:Yi,[Se.TABLE]:ns,[Se.LATEX]:us,[Se.VIDEO]:ms,[Se.AUDIO]:vs};return e[t.elementInfo.type]||null});return(t,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["base-element","base-element-"+e.elementInfo.id]),style:Object(n["normalizeStyle"])({zIndex:e.elementIndex})},[(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["resolveDynamicComponent"])(Object(n["unref"])(l)),{elementInfo:e.elementInfo,target:"thumbnail"},null,8,["elementInfo"]))],6))}});const ys=hs;var gs=ys;const xs={key:1,class:"placeholder"};var ks=Object(n["defineComponent"])({__name:"index",props:{slide:{type:Object,required:!0},size:{type:Number,required:!0},visible:{type:Boolean,default:!0}},setup(e){const t=e,{viewportRatio:l}=Object(o["c"])(T()),c=Object(n["computed"])(()=>t.slide.background),{backgroundStyle:a}=Qa(c),r=Object(n["computed"])(()=>t.size/Ve);return Object(n["provide"])(vl,r),(t,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"thumbnail-slide",style:Object(n["normalizeStyle"])({width:e.size+"px",height:e.size*Object(n["unref"])(l)+"px"})},[e.visible?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:"elements",style:Object(n["normalizeStyle"])({width:Object(n["unref"])(Ve)+"px",height:Object(n["unref"])(Ve)*Object(n["unref"])(l)+"px",transform:`scale(${Object(n["unref"])(r)})`})},[Object(n["createElementVNode"])("div",{class:"background",style:Object(n["normalizeStyle"])(Object(n["unref"])(a))},null,4),(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.slide.elements,(e,t)=>(Object(n["openBlock"])(),Object(n["createBlock"])(gs,{key:e.id,elementInfo:e,elementIndex:t+1},null,8,["elementInfo","elementIndex"]))),128))],4)):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",xs,"加载中 ..."))],4))}});l("689b");const Cs=Yt()(ks,[["__scopeId","data-v-3f5170e8"]]);var Ns=Cs;const Es=e=>(Object(n["pushScopeId"])("data-v-469f9b66"),e=e(),Object(n["popScopeId"])(),e),ws={class:"link-dialog"},Vs={class:"tabs"},Is=["onClick"],Ss={key:2,class:"preview"},Ls=Es(()=>Object(n["createElementVNode"])("div",null,"预览:",-1)),Bs={class:"btns"};var _s=Object(n["defineComponent"])({__name:"LinkDialog",emits:["close"],setup(e,{emit:t}){var l;const c=Ci["a"].Option,{handleElement:a}=Object(o["c"])(z()),{slides:r,currentSlide:i}=Object(o["c"])(T()),s=Object(n["ref"])("web"),d=Object(n["ref"])(""),u=Object(n["ref"])("");u.value=(null===(l=r.value.find(e=>e.id!==i.value.id))||void 0===l?void 0:l.id)||"";const b=Object(n["computed"])(()=>u.value&&r.value.find(e=>e.id===u.value)||null),O=[{key:"web",label:"网页链接"},{key:"slide",label:"幻灯片页面"}],{setLink:m}=bi();Object(n["onMounted"])(()=>{var e;null!==(e=a.value)&&void 0!==e&&e.link&&("web"===a.value.link.type?d.value=a.value.link.target:"slide"===a.value.link.type&&(u.value=a.value.link.target),s.value=a.value.link.type)});const p=()=>{const e={type:s.value,target:"web"===s.value?d.value:u.value};if(a.value){const l=m(a.value,e);l?t("close"):d.value=""}};return(e,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ws,[Object(n["createElementVNode"])("div",Vs,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(O,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["tab",{active:s.value===e.key}]),key:e.key,onClick:t=>s.value=e.key},Object(n["toDisplayString"])(e.label),11,Is)),64))]),"web"===s.value?(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(ki["a"]),{key:0,class:"input",value:d.value,"onUpdate:value":l[0]||(l[0]=e=>d.value=e),placeholder:"请输入网页链接地址"},null,8,["value"])):Object(n["createCommentVNode"])("",!0),"slide"===s.value?(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(Ci["a"]),{key:1,class:"input",value:u.value,"onUpdate:value":l[1]||(l[1]=e=>u.value=e)},{default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(r),(e,t)=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(c),{key:e.id,value:e.id,disabled:Object(n["unref"])(i).id===e.id},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("幻灯片 "+Object(n["toDisplayString"])(t+1),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["value"])):Object(n["createCommentVNode"])("",!0),"slide"===s.value&&Object(n["unref"])(b)?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ss,[Ls,Object(n["createVNode"])(Ns,{class:"thumbnail",slide:Object(n["unref"])(b),size:490},null,8,["slide"])])):Object(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("div",Bs,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{onClick:l[2]||(l[2]=e=>t("close")),style:{"margin-right":"10px"}},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("取消")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{type:"primary",onClick:l[3]||(l[3]=e=>p())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("确认")]),_:1})])]))}});l("7b49");const Ts=Yt()(_s,[["__scopeId","data-v-469f9b66"]]);var Ms=Ts;const Ds={class:"operates"},zs={key:1,class:"drag-mask"};var Fs=Object(n["defineComponent"])({__name:"index",setup(e){const t=z(),{activeElementIdList:l,activeGroupElementId:c,handleElementId:a,hiddenElementIdList:r,editorAreaFocus:i,gridLineSize:s,showRuler:d,showSelectPanel:u,creatingElement:b,canvasScale:O,textFormatPainter:m}=Object(o["c"])(t),{currentSlide:p}=Object(o["c"])(T()),{ctrlKeyState:f,spaceKeyState:j}=Object(o["c"])(G()),v=Object(n["ref"])(),h=Object(n["ref"])([]),y=Object(n["ref"])(!1),g=()=>y.value=!0;Object(n["watch"])(a,()=>{t.setActiveGroupElementId("")});const x=Object(n["ref"])([]),k=()=>{x.value=p.value?JSON.parse(JSON.stringify(p.value.elements)):[]};Object(n["watchEffect"])(k);const C=Object(n["ref"])(),{dragViewport:N,viewportStyles:E}=gl(C);kl(C);const{mouseSelection:w,mouseSelectionVisible:V,mouseSelectionQuadrant:I,updateMouseSelection:L}=xl(x,v),{dragElement:B}=Tl(x,h,O),{dragLineElement:_}=Ml(x),{selectElement:M}=_l(x,B),{scaleElement:D,scaleMultiElement:F}=Bl(x,h,O),{rotateElement:A}=Nl(x,v),{moveShapeKeypoint:$}=Dl(x,O),{selectAllElement:R}=He(),{deleteAllElements:P}=$e(),{pasteElement:H}=Pe(),{enterScreeningFromStart:q}=Ze(),{updateSlideIndex:U}=Fe();Object(n["onMounted"])(()=>{l.value.length&&Object(n["nextTick"])(()=>t.setActiveElementIdList([]))});const X=e=>{l.value.length&&t.setActiveElementIdList([]),j.value?N(e):L(e),i.value||t.setEditorareaFocus(!0),m.value&&t.setTextFormatPainter(null),yl()};Object(n["onUnmounted"])(()=>{m.value&&t.setTextFormatPainter(null)});const Y=()=>{i.value&&t.setEditorareaFocus(!1)},{scaleCanvas:Z}=We(),W=Object(S["throttle"])(Z,100,{leading:!0,trailing:!1}),J=Object(S["throttle"])(U,300,{leading:!0,trailing:!1}),K=e=>{e.preventDefault(),f.value?e.deltaY>0?W("-"):e.deltaY<0&&W("+"):e.deltaY>0?J(te.DOWN):e.deltaY<0&&J(te.UP)},Q=()=>{t.setRulerState(!d.value)},{insertElementFromCreateSelection:ee}=zl(v),ce=()=>[{text:"粘贴",subText:"Ctrl + V",handler:H},{text:"全选",subText:"Ctrl + A",handler:R},{text:"标尺",subText:d.value?"√":"",handler:Q},{text:"网格线",handler:()=>t.setGridLineSize(s.value?0:50),children:[{text:"无",subText:0===s.value?"√":"",handler:()=>t.setGridLineSize(0)},{text:"小",subText:25===s.value?"√":"",handler:()=>t.setGridLineSize(25)},{text:"中",subText:50===s.value?"√":"",handler:()=>t.setGridLineSize(50)},{text:"大",subText:100===s.value?"√":"",handler:()=>t.setGridLineSize(100)}]},{text:u.value?"关闭选择面板":"打开选择面板",handler:()=>{u.value?t.setSelectPanelState(!1):t.setSelectPanelState(!0)}},{text:"重置当前页",handler:P},{divider:!0},{text:"幻灯片放映",subText:"F5",handler:q}];return Object(n["provide"])(vl,O),(e,t)=>{const o=Object(n["resolveDirective"])("contextmenu"),i=Object(n["resolveDirective"])("click-outside");return Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"canvas",ref_key:"canvasRef",ref:C,onWheel:t[3]||(t[3]=e=>K(e)),onMousedown:t[4]||(t[4]=e=>X(e))},[Object(n["unref"])(b)?(Object(n["openBlock"])(),Object(n["createBlock"])(mr,{key:0,onCreated:t[0]||(t[0]=e=>Object(n["unref"])(ee)(e))})):Object(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("div",{class:"viewport-wrapper",style:Object(n["normalizeStyle"])({width:Object(n["unref"])(E).width*Object(n["unref"])(O)+"px",height:Object(n["unref"])(E).height*Object(n["unref"])(O)+"px",left:Object(n["unref"])(E).left+"px",top:Object(n["unref"])(E).top+"px"})},[Object(n["createElementVNode"])("div",Ds,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(h.value,(e,t)=>(Object(n["openBlock"])(),Object(n["createBlock"])(or,{key:t,type:e.type,axis:e.axis,length:e.length,canvasScale:Object(n["unref"])(O)},null,8,["type","axis","length","canvasScale"]))),128)),Object(n["unref"])(l).length>1?(Object(n["openBlock"])(),Object(n["createBlock"])(Cr,{key:0,elementList:x.value,scaleMultiElement:Object(n["unref"])(F)},null,8,["elementList","scaleMultiElement"])):Object(n["createCommentVNode"])("",!0),(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(x.value,e=>Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createBlock"])(gi,{key:e.id,elementInfo:e,isSelected:Object(n["unref"])(l).includes(e.id),isActive:Object(n["unref"])(a)===e.id,isActiveGroupElement:Object(n["unref"])(c)===e.id,isMultiSelect:Object(n["unref"])(l).length>1,rotateElement:Object(n["unref"])(A),scaleElement:Object(n["unref"])(D),openLinkDialog:g,dragLineElement:Object(n["unref"])(_),moveShapeKeypoint:Object(n["unref"])($)},null,8,["elementInfo","isSelected","isActive","isActiveGroupElement","isMultiSelect","rotateElement","scaleElement","dragLineElement","moveShapeKeypoint"])),[[n["vShow"],!Object(n["unref"])(r).includes(e.id)]])),128)),Object(n["createVNode"])(lr)]),Object(n["createElementVNode"])("div",{class:"viewport",ref_key:"viewportRef",ref:v,style:Object(n["normalizeStyle"])({transform:`scale(${Object(n["unref"])(O)})`})},[Object(n["unref"])(V)?(Object(n["openBlock"])(),Object(n["createBlock"])(Xa,{key:0,top:Object(n["unref"])(w).top,left:Object(n["unref"])(w).left,width:Object(n["unref"])(w).width,height:Object(n["unref"])(w).height,quadrant:Object(n["unref"])(I)},null,8,["top","left","width","height","quadrant"])):Object(n["createCommentVNode"])("",!0),(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(x.value,(e,t)=>Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createBlock"])(qa,{key:e.id,elementInfo:e,elementIndex:t+1,isMultiSelect:Object(n["unref"])(l).length>1,selectElement:Object(n["unref"])(M),openLinkDialog:g},null,8,["elementInfo","elementIndex","isMultiSelect","selectElement"])),[[n["vShow"],!Object(n["unref"])(r).includes(e.id)]])),128))],4)],4),Object(n["unref"])(j)?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",zs)):Object(n["createCommentVNode"])("",!0),Object(n["unref"])(d)?(Object(n["openBlock"])(),Object(n["createBlock"])(sr,{key:2,viewportStyles:Object(n["unref"])(E)},null,8,["viewportStyles"])):Object(n["createCommentVNode"])("",!0),Object(n["createVNode"])(Object(n["unref"])(le["a"]),{visible:y.value,"onUpdate:visible":t[2]||(t[2]=e=>y.value=e),footer:null,centered:"",width:540,destroyOnClose:""},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Ms,{onClose:t[1]||(t[1]=e=>y.value=!1)})]),_:1},8,["visible"])],32)),[[o,ce],[i,Y]])}}});l("8f78");const As=Yt()(Fs,[["__scopeId","data-v-17dcff2c"]]);var $s=As,Rs=(l("5136"),l("681b"));const Ps={class:"shape-item-thumbnail"},Hs={class:"shape-content"},qs={overflow:"visible",width:"18",height:"18"},Us=["transform"],Gs=["fill","stroke","d"];var Xs=Object(n["defineComponent"])({__name:"ShapeItemThumbnail",props:{shape:{type:Object,required:!0}},setup(e){return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ps,[Object(n["createElementVNode"])("div",Hs,[(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",qs,[Object(n["createElementVNode"])("g",{transform:`scale(${18/e.shape.viewBox[0]}, ${18/e.shape.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`},[Object(n["createElementVNode"])("path",{class:Object(n["normalizeClass"])(["shape-path",{outlined:e.shape.outlined}]),"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:e.shape.outlined?"#999":"transparent",stroke:e.shape.outlined?"transparent":"#999","stroke-width":"2",d:e.shape.path},null,10,Gs)],8,Us)]))])]))}});l("6c23");const Ys=Yt()(Xs,[["__scopeId","data-v-09653543"]]);var Zs=Ys;const Ws={class:"shape-pool"},Js={class:"category-name"},Ks={class:"shape-list"};var Qs=Object(n["defineComponent"])({__name:"ShapePool",emits:["select"],setup(e,{emit:t}){const l=e=>{t("select",e)};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ws,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(Be),e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"category",key:e.type},[Object(n["createElementVNode"])("div",Js,Object(n["toDisplayString"])(e.type),1),Object(n["createElementVNode"])("div",Ks,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.children,(e,t)=>(Object(n["openBlock"])(),Object(n["createBlock"])(Zs,{class:"shape-item",key:t,shape:e,onClick:t=>l(e)},null,8,["shape","onClick"]))),128))])]))),128))]))}});l("85dd");const ed=Yt()(Qs,[["__scopeId","data-v-711a4fb1"]]);var td=ed;const ld=[{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}]}],cd={class:"line-pool"},nd={class:"category-name"},od={class:"line-list"},ad=["onClick"],rd={overflow:"visible",width:"20",height:"20"},id=["d","stroke-dasharray","marker-start","marker-end"];var sd=Object(n["defineComponent"])({__name:"LinePool",emits:["select"],setup(e,{emit:t}){const l=e=>{t("select",e)};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",cd,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(ld),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"category",key:e.type},[Object(n["createElementVNode"])("div",nd,Object(n["toDisplayString"])(e.type),1),Object(n["createElementVNode"])("div",od,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.children,(e,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"line-item",key:c},[Object(n["createElementVNode"])("div",{class:"line-content",onClick:t=>l(e)},[(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",rd,[Object(n["createElementVNode"])("defs",null,[e.points[0]?(Object(n["openBlock"])(),Object(n["createBlock"])(co,{key:0,class:"line-marker",id:`preset-line-${t}-${c}`,position:"start",type:e.points[0],color:"currentColor",baseSize:2},null,8,["id","type"])):Object(n["createCommentVNode"])("",!0),e.points[1]?(Object(n["openBlock"])(),Object(n["createBlock"])(co,{key:1,class:"line-marker",id:`preset-line-${t}-${c}`,position:"end",type:e.points[1],color:"currentColor",baseSize:2},null,8,["id","type"])):Object(n["createCommentVNode"])("",!0)]),Object(n["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(#preset-line-${t}-${c}-${e.points[0]}-start)`:"","marker-end":e.points[1]?`url(#preset-line-${t}-${c}-${e.points[1]}-end)`:""},null,8,id)]))],8,ad)]))),128))])]))),128))]))}});l("3836");const dd=Yt()(sd,[["__scopeId","data-v-bca68faa"]]);var ud=dd;const bd={class:"chart-pool"},Od=["onClick"];var md=Object(n["defineComponent"])({__name:"ChartPool",emits:["select"],setup(e,{emit:t}){const l=["bar","horizontalBar","line","area","scatter","pie","ring"],c=e=>{t("select",e)};return(e,t)=>{const o=Object(n["resolveComponent"])("IconChartLine"),a=Object(n["resolveComponent"])("IconChartHistogram"),r=Object(n["resolveComponent"])("IconChartPie"),i=Object(n["resolveComponent"])("IconChartHistogramOne"),s=Object(n["resolveComponent"])("IconChartLineArea"),d=Object(n["resolveComponent"])("IconChartRing"),u=Object(n["resolveComponent"])("IconChartScatter");return Object(n["openBlock"])(),Object(n["createElementBlock"])("ul",bd,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(l,(e,t)=>Object(n["createElementVNode"])("li",{class:"chart-item",key:t},[Object(n["createElementVNode"])("div",{class:"chart-content",onClick:t=>c(e)},["line"===e?(Object(n["openBlock"])(),Object(n["createBlock"])(o,{key:0,size:"24"})):"bar"===e?(Object(n["openBlock"])(),Object(n["createBlock"])(a,{key:1,size:"24"})):"pie"===e?(Object(n["openBlock"])(),Object(n["createBlock"])(r,{key:2,size:"24"})):"horizontalBar"===e?(Object(n["openBlock"])(),Object(n["createBlock"])(i,{key:3,size:"24"})):"area"===e?(Object(n["openBlock"])(),Object(n["createBlock"])(s,{key:4,size:"24"})):"ring"===e?(Object(n["openBlock"])(),Object(n["createBlock"])(d,{key:5,size:"24"})):"scatter"===e?(Object(n["openBlock"])(),Object(n["createBlock"])(u,{key:6,size:"24"})):Object(n["createCommentVNode"])("",!0)],8,Od)])),64))])}}});l("24bc");const pd=Yt()(md,[["__scopeId","data-v-3870b42e"]]);var fd=pd,jd=(l("922d"),l("09d9"));const vd=e=>(Object(n["pushScopeId"])("data-v-8fd9f34c"),e=e(),Object(n["popScopeId"])(),e),hd={class:"table-generator"},yd={class:"title"},gd={class:"lef"},xd=["onMouseenter"],kd={key:1,class:"custom"},Cd={class:"row"},Nd=vd(()=>Object(n["createElementVNode"])("div",{class:"label",style:{flex:"1"}},"行数:",-1)),Ed={class:"row"},wd=vd(()=>Object(n["createElementVNode"])("div",{class:"label",style:{flex:"1"}},"列数:",-1)),Vd={class:"btns"};var Id=Object(n["defineComponent"])({__name:"TableGenerator",emits:["insert","close"],setup(e,{emit:t}){const l=Object(n["ref"])([]),c=Object(n["ref"])(3),o=Object(n["ref"])(3),a=Object(n["ref"])(!1),r=()=>{if(!l.value.length)return;const[e,c]=l.value;t("insert",{row:e,col:c})},i=()=>c.value<1||c.value>20||o.value<1||o.value>20?ne["a"].warning("行数/列数必须在0~20之间!"):(t("insert",{row:c.value,col:o.value}),void(a.value=!1)),s=()=>{t("close"),a.value=!1};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",hd,[Object(n["createElementVNode"])("div",yd,[Object(n["createElementVNode"])("div",gd,"表格 "+Object(n["toDisplayString"])(l.value.length?`${l.value[0]} x ${l.value[1]}`:""),1),Object(n["createElementVNode"])("div",{class:"right",onClick:t[0]||(t[0]=e=>a.value=!a.value)},Object(n["toDisplayString"])(a.value?"返回":"自定义"),1)]),a.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",kd,[Object(n["createElementVNode"])("div",Cd,[Nd,Object(n["createVNode"])(Object(n["unref"])(jd["a"]),{min:1,max:20,value:c.value,"onUpdate:value":t[3]||(t[3]=e=>c.value=e),style:{flex:"3"}},null,8,["value"])]),Object(n["createElementVNode"])("div",Ed,[wd,Object(n["createVNode"])(Object(n["unref"])(jd["a"]),{min:1,max:20,value:o.value,"onUpdate:value":t[4]||(t[4]=e=>o.value=e),style:{flex:"3"}},null,8,["value"])]),Object(n["createElementVNode"])("div",Vd,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn",onClick:t[5]||(t[5]=e=>s())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("取消")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn",type:"primary",onClick:t[6]||(t[6]=e=>i())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("确认")]),_:1})])])):(Object(n["openBlock"])(),Object(n["createElementBlock"])("table",{key:0,onMouseleave:t[1]||(t[1]=e=>l.value=[]),onClick:t[2]||(t[2]=e=>r())},[Object(n["createElementVNode"])("tbody",null,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(10,e=>Object(n["createElementVNode"])("tr",{key:e},[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(10,t=>Object(n["createElementVNode"])("td",{onMouseenter:c=>l.value=[e,t],key:t},[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["cell",{active:l.value.length&&e<=l.value[0]&&t<=l.value[1]}])},null,2)],40,xd)),64))])),64))])],32))]))}});l("b615");const Sd=Yt()(Id,[["__scopeId","data-v-8fd9f34c"]]);var Ld=Sd;const Bd={class:"media-input"},_d={class:"tabs"},Td=["onClick"],Md={class:"btns"},Dd={class:"btns"};var zd=Object(n["defineComponent"])({__name:"MediaInput",emits:["insertVideo","insertAudio","close"],setup(e,{emit:t}){const l=Object(n["ref"])("video"),c=Object(n["ref"])("https://mazwai.com/videvo_files/video/free/2019-01/small_watermarked/181004_04_Dolphins-Whale_06_preview.webm"),o=Object(n["ref"])("https://freesound.org/data/previews/614/614107_11861866-lq.mp3"),a=[{key:"video",label:"视频"},{key:"audio",label:"音频"}],r=()=>{if(!c.value)return ne["a"].error("请先输入正确的视频地址");t("insertVideo",c.value)},i=()=>{if(!o.value)return ne["a"].error("请先输入正确的音频地址");t("insertAudio",o.value)};return(e,s)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Bd,[Object(n["createElementVNode"])("div",_d,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(a,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["tab",{active:l.value===e.key}]),key:e.key,onClick:t=>l.value=e.key},Object(n["toDisplayString"])(e.label),11,Td)),64))]),"video"===l.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[Object(n["createVNode"])(Object(n["unref"])(ki["a"]),{value:c.value,"onUpdate:value":s[0]||(s[0]=e=>c.value=e),placeholder:"请输入视频地址,e.g. https://xxx.mp4"},null,8,["value"]),Object(n["createElementVNode"])("div",Md,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{onClick:s[1]||(s[1]=e=>t("close")),style:{"margin-right":"10px"}},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("取消")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{type:"primary",onClick:s[2]||(s[2]=e=>r())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("确认")]),_:1})])],64)):Object(n["createCommentVNode"])("",!0),"audio"===l.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:1},[Object(n["createVNode"])(Object(n["unref"])(ki["a"]),{value:o.value,"onUpdate:value":s[3]||(s[3]=e=>o.value=e),placeholder:"请输入音频地址,e.g. https://xxx.mp3"},null,8,["value"]),Object(n["createElementVNode"])("div",Dd,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{onClick:s[4]||(s[4]=e=>t("close")),style:{"margin-right":"10px"}},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("取消")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{type:"primary",onClick:s[5]||(s[5]=e=>i())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("确认")]),_:1})])],64)):Object(n["createCommentVNode"])("",!0)]))}});l("e0b6");const Fd=Yt()(zd,[["__scopeId","data-v-4e5f883a"]]);var Ad=Fd,$d=l("e5ca");$d["a"].SUB_SUP_SCALE=.5;const Rd=[{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"}],Pd=[{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"}]}],Hd=["width","height"],qd=["transform"],Ud=["d"];var Gd=Object(n["defineComponent"])({__name:"FormulaContent",props:{latex:{type:String,required:!0},width:{type:Number,required:!0},height:{type:Number,required:!0}},setup(e){const t=e,l=Object(n["ref"])({x:0,y:0,w:0,h:0}),c=Object(n["ref"])("");Object(n["watch"])(()=>t.latex,()=>{const e=new $d["b"](t.latex);c.value=e.pathd({}),l.value=e.box({})},{immediate:!0});const o=Object(n["computed"])(()=>{const e=l.value.w+32,c=l.value.h+32;return e>t.width||c>t.height?e/c>t.width/t.height?t.width/e:t.height/c:1});return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",{class:"formula-content",overflow:"visible",width:l.value.w+32,height:l.value.h+32,stroke:"#000","stroke-width":"1",fill:"none","stroke-linecap":"round","stroke-linejoin":"round"},[Object(n["createElementVNode"])("g",{transform:`scale(${Object(n["unref"])(o)}, ${Object(n["unref"])(o)}) translate(0,0) matrix(1,0,0,1,0,0)`,"transform-origin":"0 50%"},[Object(n["createElementVNode"])("path",{d:c.value},null,8,Ud)],8,qd)],8,Hd))}});l("e9df");const Xd=Yt()(Gd,[["__scopeId","data-v-1c41d9fe"]]);var Yd=Xd;const Zd=["innerHTML"];var Wd=Object(n["defineComponent"])({__name:"SymbolContent",props:{latex:{type:String,required:!0}},setup(e){const t=e,l=Object(n["computed"])(()=>{const e=new $d["b"](t.latex);return e.svg({SCALE_X:10,SCALE_Y:10})});return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"symbol-content",innerHTML:Object(n["unref"])(l)},null,8,Zd))}});const Jd=Wd;var Kd=Jd;const Qd={class:"latex-editor"},eu={class:"container"},tu={class:"left"},lu={class:"input-area"},cu={class:"preview"},nu={key:0,class:"placeholder"},ou={key:1,class:"preview-content"},au={class:"right"},ru={class:"tabs"},iu=["onClick"],su={class:"content"},du={key:0,class:"symbol"},uu={class:"symbol-tabs"},bu=["onClick"],Ou={class:"symbol-pool"},mu=["onClick"],pu={key:1,class:"formula"},fu={class:"formula-title"},ju=["onClick"],vu={class:"footer"};var hu=Object(n["defineComponent"])({__name:"index",props:{value:{type:String,default:""}},emits:["update","close"],setup(e,{emit:t}){const l=e,c=ki["a"].TextArea,o=[{label:"常用符号",value:"symbol"},{label:"预置公式",value:"formula"}],a=Rd,r=Pd,i=Object(n["ref"])(""),s=Object(n["ref"])("symbol"),d=Object(n["ref"])(),u=Object(n["ref"])(Pd[0].type),b=Object(n["computed"])(()=>{const e=Pd.find(e=>e.type===u.value);return(null===e||void 0===e?void 0:e.children)||[]});Object(n["onMounted"])(()=>{l.value&&(i.value=l.value)});const O=()=>{if(!i.value)return ne["a"].error("公式不能为空");const e=new $d["b"](i.value),l=e.pathd({}),c=e.box({});t("update",{latex:i.value,path:l,w:c.w+32,h:c.h+32})},m=e=>{d.value&&(d.value.focus(),document.execCommand("insertText",!1,e))};return(e,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Qd,[Object(n["createElementVNode"])("div",eu,[Object(n["createElementVNode"])("div",tu,[Object(n["createElementVNode"])("div",lu,[Object(n["createVNode"])(Object(n["unref"])(c),{value:i.value,"onUpdate:value":l[0]||(l[0]=e=>i.value=e),placeholder:"输入 LaTeX 公式",ref_key:"textAreaRef",ref:d},null,8,["value"])]),Object(n["createElementVNode"])("div",cu,[i.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ou,[Object(n["createVNode"])(Yd,{width:518,height:138,latex:i.value},null,8,["latex"])])):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",nu,"公式预览"))])]),Object(n["createElementVNode"])("div",au,[Object(n["createElementVNode"])("div",ru,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(o,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["tab",{active:e.value===s.value}]),key:e.value,onClick:t=>s.value=e.value},Object(n["toDisplayString"])(e.label),11,iu)),64))]),Object(n["createElementVNode"])("div",su,["symbol"===s.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",du,[Object(n["createElementVNode"])("div",uu,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(r),e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["symbol-tab",{active:u.value===e.type}]),key:e.type,onClick:t=>u.value=e.type},Object(n["toDisplayString"])(e.label),11,bu))),128))]),Object(n["createElementVNode"])("div",Ou,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(b),e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"symbol-item",key:e.latex,onClick:t=>m(e.latex)},[Object(n["createVNode"])(Kd,{latex:e.latex},null,8,["latex"])],8,mu))),128))])])):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",pu,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(a),e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"formula-item",key:e.label},[Object(n["createElementVNode"])("div",fu,Object(n["toDisplayString"])(e.label),1),Object(n["createElementVNode"])("div",{class:"formula-item-content",onClick:t=>i.value=e.latex},[Object(n["createVNode"])(Yd,{width:236,height:60,latex:e.latex},null,8,["latex"])],8,ju)]))),128))]))])])]),Object(n["createElementVNode"])("div",vu,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn",onClick:l[1]||(l[1]=e=>t("close"))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("取消")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn",type:"primary",onClick:l[2]||(l[2]=e=>O())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("确定")]),_:1})])]))}});l("c3b0");const yu=Yt()(hu,[["__scopeId","data-v-097b396c"]]);var gu=yu;const xu={class:"canvas-tool"},ku={class:"left-handler"},Cu={class:"add-element-handler"},Nu={class:"handler-item group-btn"},Eu={class:"right-handler"},wu={class:"viewport-size-preset"},Vu=["onClick"],Iu={class:"text"};var Su=Object(n["defineComponent"])({__name:"index",setup(e){const t=z(),{creatingElement:l}=Object(o["c"])(t),{canUndo:c,canRedo:a}=Object(o["c"])(U()),{redo:r,undo:i}=Te(),{scaleCanvas:s,setCanvasScalePercentage:d,resetCanvas:u,canvasScalePercentage:b}=We(),O=[200,150,100,80,50],m=Object(n["ref"])(!1),p=e=>{d(e),m.value=!1},{createImageElement:f,createChartElement:j,createTableElement:v,createLatexElement:h,createVideoElement:y,createAudioElement:g}=Me(),x=e=>{const t=e[0];t&&we(t).then(e=>f(e))},k=Object(n["ref"])(!1),C=Object(n["ref"])(!1),N=Object(n["ref"])(!1),E=Object(n["ref"])(!1),w=Object(n["ref"])(!1),V=Object(n["ref"])(!1),I=Object(n["ref"])(!1),S=(e=!1)=>{t.setCreatingElement({type:"text",vertical:e})},L=e=>{t.setCreatingElement({type:"shape",data:e}),k.value=!1},B=e=>{t.setCreatingElement({type:"line",data:e}),C.value=!1};return(e,t)=>{const o=Object(n["resolveComponent"])("IconBack"),d=Object(n["resolveComponent"])("IconNext"),f=Object(n["resolveComponent"])("IconFontSize"),_=Object(n["resolveComponent"])("IconTextRotationNone"),T=Object(n["resolveComponent"])("IconTextRotationDown"),M=Object(n["resolveComponent"])("IconDown"),D=Object(n["resolveComponent"])("IconPicture"),z=Object(n["resolveComponent"])("IconGraphicDesign"),F=Object(n["resolveComponent"])("IconConnection"),A=Object(n["resolveComponent"])("IconChartProportion"),$=Object(n["resolveComponent"])("IconInsertTable"),R=Object(n["resolveComponent"])("IconFormula"),P=Object(n["resolveComponent"])("IconVideoTwo"),H=Object(n["resolveComponent"])("IconMinus"),q=Object(n["resolveComponent"])("IconPlus"),U=Object(n["resolveComponent"])("IconFullScreen");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",xu,[Object(n["createElementVNode"])("div",ku,[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"撤销"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(o,{class:Object(n["normalizeClass"])(["handler-item",{disable:!Object(n["unref"])(c)}]),onClick:t[0]||(t[0]=e=>Object(n["unref"])(i)())},null,8,["class"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"重做"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(d,{class:Object(n["normalizeClass"])(["handler-item",{disable:!Object(n["unref"])(a)}]),onClick:t[1]||(t[1]=e=>Object(n["unref"])(r)())},null,8,["class"])]),_:1},8,["mouseEnterDelay"])]),Object(n["createElementVNode"])("div",Cu,[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入文字"},{default:Object(n["withCtx"])(()=>{var e;return[Object(n["createElementVNode"])("div",Nu,[Object(n["createVNode"])(f,{class:Object(n["normalizeClass"])(["icon",{active:"text"===(null===(e=Object(n["unref"])(l))||void 0===e?void 0:e.type)}]),onClick:t[2]||(t[2]=e=>S())},null,8,["class"]),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:I.value,"onUpdate:visible":t[5]||(t[5]=e=>I.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",{class:"text-type-item",onClick:t[3]||(t[3]=()=>{S(),I.value=!1})},[Object(n["createVNode"])(_),Object(n["createTextVNode"])(" 横向文本框")]),Object(n["createElementVNode"])("div",{class:"text-type-item",onClick:t[4]||(t[4]=()=>{S(!0),I.value=!1})},[Object(n["createVNode"])(T),Object(n["createTextVNode"])(" 竖向文本框")])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(M,{class:"arrow"})]),_:1},8,["visible"])])]}),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(el,{onChange:t[6]||(t[6]=e=>x(e))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入图片"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(D,{class:"handler-item"})]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:k.value,"onUpdate:visible":t[8]||(t[8]=e=>k.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(td,{onSelect:t[7]||(t[7]=e=>L(e))})]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入形状"},{default:Object(n["withCtx"])(()=>{var e;return[Object(n["createVNode"])(z,{class:Object(n["normalizeClass"])(["handler-item",{active:"shape"===(null===(e=Object(n["unref"])(l))||void 0===e?void 0:e.type)}])},null,8,["class"])]}),_:1},8,["mouseEnterDelay"])]),_:1},8,["visible"]),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:C.value,"onUpdate:visible":t[10]||(t[10]=e=>C.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ud,{onSelect:t[9]||(t[9]=e=>B(e))})]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入线条"},{default:Object(n["withCtx"])(()=>{var e;return[Object(n["createVNode"])(F,{class:Object(n["normalizeClass"])(["handler-item",{active:"line"===(null===(e=Object(n["unref"])(l))||void 0===e?void 0:e.type)}])},null,8,["class"])]}),_:1},8,["mouseEnterDelay"])]),_:1},8,["visible"]),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:N.value,"onUpdate:visible":t[12]||(t[12]=e=>N.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(fd,{onSelect:t[11]||(t[11]=e=>{Object(n["unref"])(j)(e),N.value=!1})})]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入图表"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(A,{class:"handler-item"})]),_:1},8,["mouseEnterDelay"])]),_:1},8,["visible"]),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:E.value,"onUpdate:visible":t[15]||(t[15]=e=>E.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Ld,{onClose:t[13]||(t[13]=e=>E.value=!1),onInsert:t[14]||(t[14]=({row:e,col:t})=>{Object(n["unref"])(v)(e,t),E.value=!1})})]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入表格"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])($,{class:"handler-item"})]),_:1},8,["mouseEnterDelay"])]),_:1},8,["visible"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入公式"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(R,{class:"handler-item",onClick:t[16]||(t[16]=e=>V.value=!0)})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:w.value,"onUpdate:visible":t[20]||(t[20]=e=>w.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Ad,{onClose:t[17]||(t[17]=e=>w.value=!1),onInsertVideo:t[18]||(t[18]=e=>{Object(n["unref"])(y)(e),w.value=!1}),onInsertAudio:t[19]||(t[19]=e=>{Object(n["unref"])(g)(e),w.value=!1})})]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入音视频"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(P,{class:"handler-item"})]),_:1},8,["mouseEnterDelay"])]),_:1},8,["visible"])]),Object(n["createElementVNode"])("div",Eu,[Object(n["createVNode"])(H,{class:"handler-item viewport-size",onClick:t[21]||(t[21]=e=>Object(n["unref"])(s)("-"))}),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:m.value,"onUpdate:visible":t[22]||(t[22]=e=>m.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",wu,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(O,e=>Object(n["createElementVNode"])("div",{class:"preset-item",key:e,onClick:t=>p(e)},Object(n["toDisplayString"])(e)+"%",9,Vu)),64))])]),default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("span",Iu,Object(n["toDisplayString"])(Object(n["unref"])(b)),1)]),_:1},8,["visible"]),Object(n["createVNode"])(q,{class:"handler-item viewport-size",onClick:t[23]||(t[23]=e=>Object(n["unref"])(s)("+"))}),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"适应屏幕"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(U,{class:"handler-item viewport-size-adaptation",onClick:t[24]||(t[24]=e=>Object(n["unref"])(u)())})]),_:1},8,["mouseEnterDelay"])]),Object(n["createVNode"])(Object(n["unref"])(le["a"]),{visible:V.value,"onUpdate:visible":t[27]||(t[27]=e=>V.value=e),footer:null,centered:"",width:880,destroyOnClose:""},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(gu,{onClose:t[25]||(t[25]=e=>V.value=!1),onUpdate:t[26]||(t[26]=e=>{Object(n["unref"])(h)(e),V.value=!1})})]),_:1},8,["visible"])])}}});l("0645");const Lu=Yt()(Su,[["__scopeId","data-v-8a7bb5f0"]]);var Bu=Lu,_u=()=>{const{slides:e}=Object(o["c"])(T()),t=Object(n["ref"])(null),l=Object(n["ref"])(50),c=()=>{e.value.length>l.value?t.value=setTimeout(()=>{l.value=l.value+20,c()},600):l.value=9999};return Object(n["onMounted"])(c),Object(n["onUnmounted"])(()=>{t.value&&clearTimeout(t.value)}),{slidesLoadLimit:l}},Tu=l("b76a"),Mu=l.n(Tu);const Du={class:"layout-pool"},zu=["onClick"];var Fu=Object(n["defineComponent"])({__name:"LayoutPool",emits:["select"],setup(e,{emit:t}){const{layouts:l}=Object(o["c"])(T()),c=e=>{t("select",e)};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Du,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(l),e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"layout-item",key:e.id,onClick:t=>c(e)},[Object(n["createVNode"])(Ns,{class:"thumbnail",slide:e,size:180},null,8,["slide"])],8,zu))),128))]))}});l("3328");const Au=Yt()(Fu,[["__scopeId","data-v-cc6b7dca"]]);var $u=Au;const Ru={class:"add-slide"},Pu={class:"select-btn"},Hu=["onMousedown"],qu={class:"page-number"};var Uu=Object(n["defineComponent"])({__name:"index",setup(e){const t=z(),l=T(),c=G(),{selectedSlidesIndex:a,thumbnailsFocus:r}=Object(o["c"])(t),{slides:i,slideIndex:s}=Object(o["c"])(l),{ctrlKeyState:d,shiftKeyState:u}=Object(o["c"])(c),{slidesLoadLimit:b}=_u(),O=Object(n["computed"])(()=>[...a.value,s.value]),m=Object(n["ref"])(!1),{copySlide:p,pasteSlide:f,createSlide:j,createSlideByTemplate:v,copyAndPasteSlide:h,deleteSlide:y,cutSlide:g,selectAllSlide:x,sortSlides:k}=Fe(),C=e=>{t.setActiveElementIdList([]),s.value!==e&&l.updateSlideIndex(e)},N=(e,l)=>{const c=O.value.length>1;if(!c||!O.value.includes(l)||0===e.button)if(d.value)if(s.value===l){if(!c)return;const e=O.value.filter(e=>e!==l);t.updateSelectedSlidesIndex(e),C(O.value[0])}else if(O.value.includes(l)){const e=O.value.filter(e=>e!==l);t.updateSelectedSlidesIndex(e)}else{const e=[...O.value,l];t.updateSelectedSlidesIndex(e),C(l)}else if(u.value){if(s.value===l&&!c)return;let e=Math.min(...O.value),n=l;l{r.value!==e&&(t.setThumbnailsFocus(e),e||t.updateSelectedSlidesIndex([]))},w=e=>{const{newIndex:t,oldIndex:l}=e;k(t,l)},{enterScreening:V,enterScreeningFromStart:I}=Ze(),S=()=>[{text:"粘贴",subText:"Ctrl + V",handler:f},{text:"全选",subText:"Ctrl + A",handler:x},{text:"新建页面",subText:"Enter",handler:j},{text:"幻灯片放映",subText:"F5",handler:I}],L=()=>[{text:"剪切",subText:"Ctrl + X",handler:g},{text:"复制",subText:"Ctrl + C",handler:p},{text:"粘贴",subText:"Ctrl + V",handler:f},{text:"全选",subText:"Ctrl + A",handler:x},{divider:!0},{text:"新建页面",subText:"Enter",handler:j},{text:"复制页面",subText:"Ctrl + D",handler:h},{text:"删除页面",subText:"Delete",handler:()=>y()},{divider:!0},{text:"从当前放映",subText:"Shift + F5",handler:V}];return(e,t)=>{const l=Object(n["resolveComponent"])("IconPlus"),c=Object(n["resolveComponent"])("IconDown"),o=Object(n["resolveDirective"])("contextmenu"),a=Object(n["resolveDirective"])("click-outside");return Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"thumbnails",onMousedown:t[3]||(t[3]=()=>E(!0))},[Object(n["createElementVNode"])("div",Ru,[Object(n["createElementVNode"])("div",{class:"btn",onClick:t[0]||(t[0]=e=>Object(n["unref"])(j)())},[Object(n["createVNode"])(l,{class:"icon"}),Object(n["createTextVNode"])("添加幻灯片")]),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",placement:"bottomLeft",visible:m.value,"onUpdate:visible":t[2]||(t[2]=e=>m.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])($u,{onSelect:t[1]||(t[1]=e=>{Object(n["unref"])(v)(e),m.value=!1})})]),default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",Pu,[Object(n["createVNode"])(c)])]),_:1},8,["visible"])]),Object(n["createVNode"])(Object(n["unref"])(Mu.a),{class:"thumbnail-list",modelValue:Object(n["unref"])(i),animation:300,scroll:!0,scrollSensitivity:50,setData:null,onEnd:w,itemKey:"id"},{item:Object(n["withCtx"])(({element:e,index:t})=>[Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["thumbnail-item",{active:Object(n["unref"])(s)===t,selected:Object(n["unref"])(O).includes(t)}]),onMousedown:e=>N(e,t)},[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["label",{"offset-left":t>=99}])},Object(n["toDisplayString"])(Object(n["unref"])(Y)(t+1,2)),3),Object(n["createVNode"])(Ns,{class:"thumbnail",slide:e,size:120,visible:tE(!1)],[o,S]])}}});l("dc4aa");const Gu=Yt()(Uu,[["__scopeId","data-v-61d61c80"]]);var Xu=Gu,Yu=(l("5783"),l("59a5")),Zu=()=>{const e=z(),{richTextAttrs:t,textFormatPainter:l}=Object(o["c"])(e),c=()=>{l.value?e.setTextFormatPainter(null):e.setTextFormatPainter({bold:t.value.bold,em:t.value.em,underline:t.value.underline,strikethrough:t.value.strikethrough,color:t.value.color,backcolor:t.value.backcolor,fontname:t.value.fontname,fontsize:t.value.fontsize,align:t.value.align})};return{toggleFormatPainter:c}},Wu=(l("438c"),l("fbdf"));const Ju=e=>(Object(n["pushScopeId"])("data-v-54aad0f0"),e=e(),Object(n["popScopeId"])(),e),Ku={class:"element-opacity"},Qu={class:"row"},eb=Ju(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"不透明度:",-1));var tb=Object(n["defineComponent"])({__name:"ElementOpacity",setup(e){const t=T(),{handleElement:l}=Object(o["c"])(z()),c=Object(n["ref"])(1);Object(n["watch"])(l,()=>{l.value&&(c.value="opacity"in l.value&&void 0!==l.value.opacity?l.value.opacity:1)},{deep:!0,immediate:!0});const{addHistorySnapshot:a}=Te(),r=e=>{if(!l.value)return;const c={opacity:e};t.updateElement({id:l.value.id,props:c}),a()};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ku,[Object(n["createElementVNode"])("div",Qu,[eb,Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"slider",min:0,max:1,step:.1,value:c.value,onChange:t[0]||(t[0]=e=>r(e))},null,8,["step","value"])])]))}});l("fb4b");const lb=Yt()(tb,[["__scopeId","data-v-54aad0f0"]]);var cb=lb,nb=(l("fbd6"),l("160c"));const ob={class:"color-block"};var ab=Object(n["defineComponent"])({__name:"ColorButton",props:{color:{type:String,required:!0}},setup(e){return(t,l)=>{const c=Object(n["resolveComponent"])("IconPlatte");return Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(xi["a"]),{class:"color-btn"},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",ob,[Object(n["createElementVNode"])("div",{class:"content",style:Object(n["normalizeStyle"])({backgroundColor:e.color})},null,4)]),Object(n["createVNode"])(c,{class:"color-btn-icon"})]),_:1})}}});l("dc8c");const rb=Yt()(ab,[["__scopeId","data-v-3b4a02d8"]]);var ib=rb,sb=Object(n["defineComponent"])({__name:"Checkboard",props:{size:{type:Number,default:8},white:{type:String,default:"#fff"},grey:{type:String,default:"#e6e6e6"}},setup(e){const t=e,l={},c=(e,t,l)=>{const c=document.createElement("canvas");c.width=c.height=2*l;const n=c.getContext("2d");return n?(n.fillStyle=e,n.fillRect(0,0,c.width,c.height),n.fillStyle=t,n.fillRect(0,0,l,l),n.translate(l,l),n.fillRect(0,0,l,l),c.toDataURL()):null},o=(e,t,n)=>{const o=e+","+t+","+n;if(l[o])return l[o];const a=c(e,t,n);return l[o]=a,a},a=Object(n["computed"])(()=>{const e=o(t.white,t.grey,t.size);return{backgroundImage:`url(${e})`}});return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"checkerboard",style:Object(n["normalizeStyle"])(Object(n["unref"])(a))},null,4))}});l("a8d7");const db=Yt()(sb,[["__scopeId","data-v-7494636c"]]);var ub=db;const bb=e=>(Object(n["pushScopeId"])("data-v-246b525c"),e=e(),Object(n["popScopeId"])(),e),Ob={class:"alpha"},mb={class:"alpha-checkboard-wrap"},pb=bb(()=>Object(n["createElementVNode"])("div",{class:"alpha-picker"},null,-1)),fb=[pb];var jb=Object(n["defineComponent"])({__name:"Alpha",props:{value:{type:Object,required:!0}},emits:["colorChange"],setup(e,{emit:t}){const l=e,c=Object(n["computed"])(()=>l.value),o=Object(n["computed"])(()=>{const e=[c.value.r,c.value.g,c.value.b].join(",");return`linear-gradient(to right, rgba(${e}, 0) 0%, rgba(${e}, 1) 100%)`}),a=Object(n["ref"])(),r=e=>{if(e.preventDefault(),!a.value)return;const l=a.value.clientWidth,n=a.value.getBoundingClientRect().left+window.pageXOffset,o=e.pageX-n;let r;r=o<0?0:o>l?1:Math.round(100*o/l)/100,c.value.a!==r&&t("colorChange",{r:c.value.r,g:c.value.g,b:c.value.b,a:r})},i=()=>{window.removeEventListener("mousemove",r),window.removeEventListener("mouseup",i)},s=e=>{r(e),window.addEventListener("mousemove",r),window.addEventListener("mouseup",i)};return Object(n["onUnmounted"])(i),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ob,[Object(n["createElementVNode"])("div",mb,[Object(n["createVNode"])(ub)]),Object(n["createElementVNode"])("div",{class:"alpha-gradient",style:Object(n["normalizeStyle"])({background:Object(n["unref"])(o)})},null,4),Object(n["createElementVNode"])("div",{class:"alpha-container",ref_key:"alphaRef",ref:a,onMousedown:t[0]||(t[0]=e=>s(e))},[Object(n["createElementVNode"])("div",{class:"alpha-pointer",style:Object(n["normalizeStyle"])({left:100*Object(n["unref"])(c).a+"%"})},fb,4)],544)]))}});l("e83e");const vb=Yt()(jb,[["__scopeId","data-v-246b525c"]]);var hb=vb;const yb=e=>(Object(n["pushScopeId"])("data-v-60c3cca1"),e=e(),Object(n["popScopeId"])(),e),gb={class:"hue"},xb=yb(()=>Object(n["createElementVNode"])("div",{class:"hue-picker"},null,-1)),kb=[xb];var Cb=Object(n["defineComponent"])({__name:"Hue",props:{value:{type:Object,required:!0},hue:{type:Number,required:!0}},emits:["colorChange"],setup(e,{emit:t}){const l=e,c=Object(n["ref"])(0),o=Object(n["ref"])(""),a=Object(n["computed"])(()=>{const e=I()(l.value).toHsl();return-1!==l.hue&&(e.h=l.hue),e}),r=Object(n["computed"])(()=>0===a.value.h&&"right"===o.value?"100%":100*a.value.h/360+"%");Object(n["watch"])(()=>l.value,()=>{const e=I()(l.value).toHsl(),t=0===e.s?l.hue:e.h;0!==t&&t-c.value>0&&(o.value="right"),0!==t&&t-c.value<0&&(o.value="left"),c.value=t});const i=Object(n["ref"])(),s=e=>{if(e.preventDefault(),!i.value)return;const c=i.value.clientWidth,n=i.value.getBoundingClientRect().left+window.pageXOffset,o=e.pageX-n;let r,s;o<0?r=0:o>c?r=360:(s=100*o/c,r=360*s/100),-1!==l.hue&&a.value.h===r||t("colorChange",{h:r,l:a.value.l,s:a.value.s,a:a.value.a})},d=()=>{window.removeEventListener("mousemove",s),window.removeEventListener("mouseup",d)},u=e=>{s(e),window.addEventListener("mousemove",s),window.addEventListener("mouseup",d)};return Object(n["onUnmounted"])(d),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",gb,[Object(n["createElementVNode"])("div",{class:"hue-container",ref_key:"hueRef",ref:i,onMousedown:t[0]||(t[0]=e=>u(e))},[Object(n["createElementVNode"])("div",{class:"hue-pointer",style:Object(n["normalizeStyle"])({left:Object(n["unref"])(r)})},kb,4)],544)]))}});l("179a");const Nb=Yt()(Cb,[["__scopeId","data-v-60c3cca1"]]);var Eb=Nb;const wb=e=>(Object(n["pushScopeId"])("data-v-d230faf4"),e=e(),Object(n["popScopeId"])(),e),Vb=wb(()=>Object(n["createElementVNode"])("div",{class:"saturation-white"},null,-1)),Ib=wb(()=>Object(n["createElementVNode"])("div",{class:"saturation-black"},null,-1)),Sb=wb(()=>Object(n["createElementVNode"])("div",{class:"saturation-circle"},null,-1)),Lb=[Sb];var Bb=Object(n["defineComponent"])({__name:"Saturation",props:{value:{type:Object,required:!0},hue:{type:Number,required:!0}},emits:["colorChange"],setup(e,{emit:t}){const l=e,c=Object(n["computed"])(()=>{const e=I()(l.value).toHsv();return-1!==l.hue&&(e.h=l.hue),e}),o=Object(n["computed"])(()=>`hsl(${c.value.h}, 100%, 50%)`),a=Object(n["computed"])(()=>-100*c.value.v+1+100+"%"),r=Object(n["computed"])(()=>100*c.value.s+"%"),i=Object(S["throttle"])((function(e){t("colorChange",e)}),20,{leading:!0,trailing:!1}),s=Object(n["ref"])(),d=e=>{if(e.preventDefault(),!s.value)return;const t=s.value.clientWidth,l=s.value.clientHeight,n=s.value.getBoundingClientRect().left+window.pageXOffset,o=s.value.getBoundingClientRect().top+window.pageYOffset,a=Object(S["clamp"])(e.pageX-n,0,t),r=Object(S["clamp"])(e.pageY-o,0,l),d=a/t,u=Object(S["clamp"])(-r/l+1,0,1);i({h:c.value.h,s:d,v:u,a:c.value.a})},u=()=>{window.removeEventListener("mousemove",d),window.removeEventListener("mouseup",u)},b=e=>{d(e),window.addEventListener("mousemove",d),window.addEventListener("mouseup",u)};return Object(n["onUnmounted"])(u),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"saturation",ref_key:"saturationRef",ref:s,style:Object(n["normalizeStyle"])({background:Object(n["unref"])(o)}),onMousedown:t[0]||(t[0]=e=>b(e))},[Vb,Ib,Object(n["createElementVNode"])("div",{class:"saturation-pointer",style:Object(n["normalizeStyle"])({top:Object(n["unref"])(a),left:Object(n["unref"])(r)})},Lb,4)],36))}});l("0516");const _b=Yt()(Bb,[["__scopeId","data-v-d230faf4"]]);var Tb=_b;const Mb={class:"editable-input"},Db=["value"];var zb=Object(n["defineComponent"])({__name:"EditableInput",props:{value:{type:Object,required:!0}},emits:["colorChange"],setup(e,{emit:t}){const l=e,c=Object(n["computed"])(()=>{let e="";return e=l.value.a<1?I()(l.value).toHex8String().toUpperCase():I()(l.value).toHexString().toUpperCase(),e.replace("#","")}),o=e=>{const l=e.target.value;l.length>=6&&t("colorChange",I()(l).toRgb())};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Mb,[Object(n["createElementVNode"])("input",{class:"input-content",value:Object(n["unref"])(c),onInput:t[0]||(t[0]=e=>o(e))},null,40,Db)]))}});l("a9b0");const Fb=Yt()(zb,[["__scopeId","data-v-2f428dde"]]);var Ab=Fb;const $b={class:"color-picker"},Rb={class:"picker-saturation-wrap"},Pb={class:"picker-controls"},Hb={class:"picker-color-wrap"},qb={class:"picker-sliders"},Ub={class:"picker-hue-wrap"},Gb={class:"picker-alpha-wrap"},Xb={class:"picker-field"},Yb={class:"picker-presets"},Zb=["onClick"],Wb={class:"picker-gradient-presets"},Jb=["onClick"],Kb={class:"picker-presets"},Qb=["onClick"],eO={key:0,class:"recent-colors-title"},tO={class:"picker-presets"},lO=["onClick"];var cO=Object(n["defineComponent"])({__name:"index",props:{modelValue:{type:String,default:"#e86b99"}},emits:["update:modelValue"],setup(e,{emit:t}){const l=e,c="RECENT_COLORS",o=[["#7f7f7f","#f2f2f2"],["#0d0d0d","#808080"],["#1c1a10","#ddd8c3"],["#0e243d","#c6d9f0"],["#233f5e","#dae5f0"],["#632623","#f2dbdb"],["#4d602c","#eaf1de"],["#3f3150","#e6e0ec"],["#1e5867","#d9eef3"],["#99490f","#fee9da"]],a=(e,t,l)=>{const c=I()(e).toRgb(),n=I()(t).toRgb(),o=(n.r-c.r)/l,a=(n.g-c.g)/l,r=(n.b-c.b)/l,i=[];for(let s=0;s{const e=[];for(const t of o)e.push(a(t[1],t[0],5));return e},i=["#000000","#ffffff","#eeece1","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c"],s=["#c21401","#ff1e02","#ffc12a","#ffff3a","#90cf5b","#00af57","#00afee","#0071be","#00215f","#72349d"],d=Object(n["ref"])(-1),u=Object(n["ref"])([]),b=Object(n["computed"])({get(){return I()(l.modelValue).toRgb()},set(e){const l=`rgba(${[e.r,e.g,e.b,e.a].join(",")})`;t("update:modelValue",l)}}),O=r(),m=Object(n["computed"])(()=>`rgba(${[b.value.r,b.value.g,b.value.b,b.value.a].join(",")})`),p=e=>{d.value=I()(e).toHsl().h,t("update:modelValue",e)},f=Object(S["debounce"])((function(){const e=I()(b.value).toRgbString();if(!u.value.includes(e)){u.value=[e,...u.value];const t=10;u.value.length>t&&(u.value=u.value.slice(0,t))}}),300,{trailing:!0});Object(n["onMounted"])(()=>{const e=localStorage.getItem(c);e&&(u.value=JSON.parse(e))}),Object(n["watch"])(u,()=>{const e=JSON.stringify(u.value);localStorage.setItem(c,e)});const j=e=>{"h"in e?(d.value=e.h,b.value=I()(e).toRgb()):(d.value=I()(e).toHsl().h,b.value=e),f()},v=()=>{const e="EyeDropper"in window;e?h():y()},h=()=>{ne["a"].success("按 ESC 键关闭取色吸管");const e=new window.EyeDropper;e.open().then(e=>{const t=I()(e.sRGBHex);d.value=t.toHsl().h,b.value=t.toRgb(),f()}).catch(()=>{ne["a"].success("关闭取色吸管")})},y=()=>{const e=document.querySelector(".canvas");if(!e)return;const 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);const l=document.createElement("div");l.style.cssText="position: absolute; top: -100px; left: -100px; width: 16px; height: 16px; border: 1px solid #000; z-index: 999",t.appendChild(l);const{left:c,top:n,width:o,height:a}=e.getBoundingClientRect(),r=e=>(!e.tagName||"FOREIGNOBJECT"!==e.tagName.toUpperCase())&&(!e.classList||!e.classList.contains("operate"));Object(ot["a"])(e,{filter:r,fontEmbedCSS:"",width:o,height:a,canvasWidth:o,canvasHeight:a,pixelRatio:1}).then(e=>{e.style.cssText=`position: absolute; top: ${n}px; left: ${c}px; cursor: crosshair;`,t.style.cursor="default",t.appendChild(e);const o=e.getContext("2d");if(!o)return;let a="";const r=e=>{const t=e.x,r=e.y,i=t-c,s=r-n,[d,u,b,O]=o.getImageData(i,s,1,1).data;a=`rgba(${d}, ${u}, ${b}, ${(O/255).toFixed(2)})`,l.style.left=t+10+"px",l.style.top=r+10+"px",l.style.backgroundColor=a},i=()=>{a="",l.style.left="-100px",l.style.top="-100px",l.style.backgroundColor=""},s=l=>{if(a&&0===l.button){const e=I()(a);d.value=e.toHsl().h,b.value=e.toRgb(),f()}document.body.removeChild(t),e.removeEventListener("mousemove",r),e.removeEventListener("mouseleave",i),window.removeEventListener("mousedown",s)};e.addEventListener("mousemove",r),e.addEventListener("mouseleave",i),window.addEventListener("mousedown",s)}).catch(()=>{ne["a"].error("取色吸管初始化失败"),document.body.removeChild(t)})};return(e,t)=>{const l=Object(n["resolveComponent"])("IconNeedle");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",$b,[Object(n["createElementVNode"])("div",Rb,[Object(n["createVNode"])(Tb,{value:Object(n["unref"])(b),hue:d.value,onColorChange:t[0]||(t[0]=e=>j(e))},null,8,["value","hue"])]),Object(n["createElementVNode"])("div",Pb,[Object(n["createElementVNode"])("div",Hb,[Object(n["createElementVNode"])("div",{class:"picker-current-color",style:Object(n["normalizeStyle"])({background:Object(n["unref"])(m)})},null,4),Object(n["createVNode"])(ub)]),Object(n["createElementVNode"])("div",qb,[Object(n["createElementVNode"])("div",Ub,[Object(n["createVNode"])(Eb,{value:Object(n["unref"])(b),hue:d.value,onColorChange:t[1]||(t[1]=e=>j(e))},null,8,["value","hue"])]),Object(n["createElementVNode"])("div",Gb,[Object(n["createVNode"])(hb,{value:Object(n["unref"])(b),onColorChange:t[2]||(t[2]=e=>j(e))},null,8,["value"])])])]),Object(n["createElementVNode"])("div",Xb,[Object(n["createVNode"])(Ab,{class:"input",value:Object(n["unref"])(b),onColorChange:t[3]||(t[3]=e=>j(e))},null,8,["value"]),Object(n["createElementVNode"])("div",{class:"straw",onClick:t[4]||(t[4]=e=>v())},[Object(n["createVNode"])(l)]),Object(n["createElementVNode"])("div",{class:"transparent",onClick:t[5]||(t[5]=e=>p("#00000000"))},[Object(n["createVNode"])(ub)])]),Object(n["createElementVNode"])("div",Yb,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(i,e=>Object(n["createElementVNode"])("div",{class:"picker-presets-color",key:e,style:Object(n["normalizeStyle"])({background:e}),onClick:t=>p(e)},null,12,Zb)),64))]),Object(n["createElementVNode"])("div",Wb,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(O),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"picker-gradient-col",key:t},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e,e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"picker-gradient-color",key:e,style:Object(n["normalizeStyle"])({background:e}),onClick:t=>p(e)},null,12,Jb))),128))]))),128))]),Object(n["createElementVNode"])("div",Kb,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(s,e=>Object(n["createElementVNode"])("div",{key:e,class:"picker-presets-color",style:Object(n["normalizeStyle"])({background:e}),onClick:t=>p(e)},null,12,Qb)),64))]),u.value.length?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",eO,"最近使用:")):Object(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("div",tO,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(u.value,e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:e,class:"picker-presets-color alpha",onClick:t=>p(e)},[Object(n["createElementVNode"])("div",{class:"picker-presets-color-content",style:Object(n["normalizeStyle"])({background:e})},null,4)],8,lO))),128))])])}}});l("bd05");const nO=Yt()(cO,[["__scopeId","data-v-3d280c42"]]);var oO=nO;const aO=e=>(Object(n["pushScopeId"])("data-v-49642f50"),e=e(),Object(n["popScopeId"])(),e),rO={class:"element-outline"},iO={key:0,class:"row"},sO=aO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"启用边框:",-1)),dO={class:"switch-wrapper",style:{flex:"3"}},uO={class:"row"},bO=aO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"边框样式:",-1)),OO={class:"row"},mO=aO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"边框颜色:",-1)),pO={class:"row"},fO=aO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"边框粗细:",-1));var jO=Object(n["defineComponent"])({__name:"ElementOutline",props:{fixed:{type:Boolean,default:!1}},setup(e){const t=Ci["a"].Option,l=T(),{handleElement:c}=Object(o["c"])(z()),a=Object(n["ref"])(),r=Object(n["ref"])(!1);Object(n["watch"])(c,()=>{c.value&&(a.value="outline"in c.value?c.value.outline:void 0,r.value=!!a.value)},{deep:!0,immediate:!0});const{addHistorySnapshot:i}=Te(),s=e=>{if(!c.value)return;const t={outline:{...a.value,...e}};l.updateElement({id:c.value.id,props:t}),i()},d=e=>{if(c.value){if(e){const e={width:2,color:"#000",style:"solid"};l.updateElement({id:c.value.id,props:{outline:e}})}else l.removeElementProps({id:c.value.id,propName:"outline"});i()}};return(l,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",rO,[e.fixed?Object(n["createCommentVNode"])("",!0):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",iO,[sO,Object(n["createElementVNode"])("div",dO,[Object(n["createVNode"])(Object(n["unref"])(nb["a"]),{checked:r.value,onChange:c[0]||(c[0]=e=>d(e))},null,8,["checked"])])])),r.value&&a.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:1},[Object(n["createElementVNode"])("div",uO,[bO,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:a.value.style,onChange:c[1]||(c[1]=e=>s({style:e}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),{value:"solid"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("实线边框")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{value:"dashed"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("虚线边框")]),_:1})]),_:1},8,["value"])]),Object(n["createElementVNode"])("div",OO,[mO,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:a.value.color,"onUpdate:modelValue":c[2]||(c[2]=e=>s({color:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:a.value.color||"#000",style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createElementVNode"])("div",pO,[fO,Object(n["createVNode"])(Object(n["unref"])(jd["a"]),{value:a.value.width,onChange:c[3]||(c[3]=e=>s({width:e})),style:{flex:"3"}},null,8,["value"])])],64)):Object(n["createCommentVNode"])("",!0)]))}});l("a9ab");const vO=Yt()(jO,[["__scopeId","data-v-49642f50"]]);var hO=vO;const yO=e=>(Object(n["pushScopeId"])("data-v-19c233fc"),e=e(),Object(n["popScopeId"])(),e),gO={class:"element-shadow"},xO={class:"row"},kO=yO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"启用阴影:",-1)),CO={class:"switch-wrapper",style:{flex:"3"}},NO={class:"row"},EO=yO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"水平阴影:",-1)),wO={class:"row"},VO=yO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"垂直阴影:",-1)),IO={class:"row"},SO=yO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"模糊距离:",-1)),LO={class:"row"},BO=yO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"阴影颜色:",-1));var _O=Object(n["defineComponent"])({__name:"ElementShadow",setup(e){const t=T(),{handleElement:l}=Object(o["c"])(z()),c=Object(n["ref"])(),a=Object(n["ref"])(!1);Object(n["watch"])(l,()=>{l.value&&(c.value="shadow"in l.value?l.value.shadow:void 0,a.value=!!c.value)},{deep:!0,immediate:!0});const{addHistorySnapshot:r}=Te(),i=e=>{if(!l.value||!c.value)return;const n={...c.value,...e};t.updateElement({id:l.value.id,props:{shadow:n}}),r()},s=e=>{if(l.value){if(e){const e={h:1,v:1,blur:2,color:"#000"};t.updateElement({id:l.value.id,props:{shadow:e}})}else t.removeElementProps({id:l.value.id,propName:"shadow"});r()}};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",gO,[Object(n["createElementVNode"])("div",xO,[kO,Object(n["createElementVNode"])("div",CO,[Object(n["createVNode"])(Object(n["unref"])(nb["a"]),{checked:a.value,onChange:t[0]||(t[0]=e=>s(e))},null,8,["checked"])])]),a.value&&c.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[Object(n["createElementVNode"])("div",NO,[EO,Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"slider",min:-10,max:10,step:1,value:c.value.h,onChange:t[1]||(t[1]=e=>i({h:e}))},null,8,["value"])]),Object(n["createElementVNode"])("div",wO,[VO,Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"slider",min:-10,max:10,step:1,value:c.value.v,onChange:t[2]||(t[2]=e=>i({v:e}))},null,8,["value"])]),Object(n["createElementVNode"])("div",IO,[SO,Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"slider",min:1,max:20,step:1,value:c.value.blur,onChange:t[3]||(t[3]=e=>i({blur:e}))},null,8,["value"])]),Object(n["createElementVNode"])("div",LO,[BO,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:c.value.color,"onUpdate:modelValue":t[4]||(t[4]=e=>i({color:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:c.value.color,style:{flex:"3"}},null,8,["color"])]),_:1})])],64)):Object(n["createCommentVNode"])("",!0)]))}});l("513b");const TO=Yt()(_O,[["__scopeId","data-v-19c233fc"]]);var MO=TO;const DO={class:"text-color-block"};var zO=Object(n["defineComponent"])({__name:"TextColorButton",props:{color:{type:String,required:!0}},setup(e){return(t,l)=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(xi["a"]),{class:"text-color-btn"},{default:Object(n["withCtx"])(()=>[Object(n["renderSlot"])(t.$slots,"default"),Object(n["createElementVNode"])("div",DO,[Object(n["createElementVNode"])("div",{class:"text-color-block-content",style:Object(n["normalizeStyle"])({backgroundColor:e.color})},null,4)])]),_:3}))}});l("3ef1");const FO=Yt()(zO,[["__scopeId","data-v-c90c8a28"]]);var AO=FO,$O=Object(n["defineComponent"])({__name:"CheckboxButton",props:{checked:{type:Boolean,default:!1}},setup(e){return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("button",{class:Object(n["normalizeClass"])(["checkbox-button",{checked:e.checked}])},[Object(n["renderSlot"])(t.$slots,"default")],2))}});l("573c");const RO=Yt()($O,[["__scopeId","data-v-699cf016"]]);var PO=RO;const HO={class:"checkbox-button-group"};function qO(e,t){return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",HO,[Object(n["renderSlot"])(e.$slots,"default",{},void 0,!0)])}l("5634");const UO={},GO=Yt()(UO,[["render",qO],["__scopeId","data-v-b8aa6eac"]]);var XO=GO;const YO=e=>(Object(n["pushScopeId"])("data-v-74237311"),e=e(),Object(n["popScopeId"])(),e),ZO={class:"text-style-panel"},WO={class:"preset-style"},JO=["onClick"],KO={class:"link-popover"},QO={class:"btns"},em={class:"row"},tm={class:"list-wrap"},lm=["onClick"],cm=YO(()=>Object(n["createElementVNode"])("span",null,null,-1)),nm=[cm],om=YO(()=>Object(n["createElementVNode"])("div",{style:{flex:"1"}},null,-1)),am={class:"list-wrap"},rm=["onClick"],im=YO(()=>Object(n["createElementVNode"])("span",null,null,-1)),sm=[im],dm={class:"row"},um=YO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"行间距:",-1)),bm={class:"row"},Om=YO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"段间距:",-1)),mm={class:"row"},pm=YO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"字间距:",-1)),fm={class:"row"},jm=YO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"首行缩进:",-1)),vm={class:"row"},hm=YO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"文本框填充:",-1));var ym=Object(n["defineComponent"])({__name:"TextStylePanel",setup(e){const{Group:t,Button:l}=Yu["a"],{OptGroup:c,Option:a}=Ci["a"],r=ki["a"].Group,s=xi["a"].Group,d=[{label:"大标题",style:{fontSize:"26px",fontWeight:700},cmd:[{command:"clear"},{command:"bold"},{command:"fontsize",value:"48px"},{command:"align",value:"center"}]},{label:"小标题",style:{fontSize:"22px",fontWeight:700},cmd:[{command:"clear"},{command:"bold"},{command:"fontsize",value:"36px"},{command:"align",value:"center"}]},{label:"正文",style:{fontSize:"20px"},cmd:[{command:"clear"},{command:"fontsize",value:"20px"}]},{label:"正文[小]",style:{fontSize:"18px"},cmd:[{command:"clear"},{command:"fontsize",value:"18px"}]},{label:"注释 1",style:{fontSize:"16px",fontStyle:"italic"},cmd:[{command:"clear"},{command:"fontsize",value:"16px"},{command:"em"}]},{label:"注释 2",style:{fontSize:"16px",textDecoration:"underline"},cmd:[{command:"clear"},{command:"fontsize",value:"16px"},{command:"underline"}]}],u=z(),b=T(),{handleElement:O,handleElementId:m,richTextAttrs:p,availableFonts:f,textFormatPainter:j}=Object(o["c"])(u),{addHistorySnapshot:v}=Te(),{toggleFormatPainter:h}=Zu(),y=e=>{b.updateElement({id:m.value,props:e}),v()},g=Object(n["ref"])(!1),x=Object(n["ref"])(!1),k=Object(n["ref"])(["disc","circle","square"]),C=Object(n["ref"])(["decimal","lower-roman","upper-roman","lower-alpha","upper-alpha","lower-greek"]),N=Object(n["ref"])("#000"),E=Object(n["ref"])(),w=Object(n["ref"])(),V=Object(n["ref"])(),I=Object(n["ref"])();Object(n["watch"])(O,()=>{O.value&&"text"===O.value.type&&(N.value=O.value.fill||"#fff",E.value=O.value.lineHeight||1.5,w.value=O.value.wordSpace||0,V.value=O.value.textIndent||0,I.value=void 0===O.value.paragraphSpace?5:O.value.paragraphSpace)},{deep:!0,immediate:!0});const S=["12px","14px","16px","18px","20px","22px","24px","28px","32px","36px","40px","44px","48px","54px","60px","66px","72px","76px","80px","88px","96px","104px","112px","120px"],L=[.9,1,1.15,1.2,1.4,1.5,1.8,2,2.5,3],B=[0,1,2,3,4,5,6,8,10],_=[0,48,96,144,192,240,288,336],M=[0,5,10,15,20,25,30,40,50,80],D=e=>{y({lineHeight:e})},F=e=>{y({paragraphSpace:e})},A=e=>{y({wordSpace:e})},$=e=>{y({textIndent:e})},R=e=>{y({fill:e})},P=(e,t)=>{yn.emit(jn.RICH_TEXT_COMMAND,{action:{command:e,value:t}})},H=e=>{yn.emit(jn.RICH_TEXT_COMMAND,{action:e})},q=Object(n["ref"])(""),U=Object(n["ref"])(!1);Object(n["watch"])(p,()=>U.value=!1);const G=()=>{q.value=p.value.link,U.value=!0},X=e=>{if(e){const t=/^(https?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-.,@?^=%&:\/~+#]*[\w\-@?^=%&\/~+#])?$/;if(!t.test(e))return ne["a"].error("不是正确的网页链接地址")}P("link",e),U.value=!1};return(e,o)=>{const u=Object(n["resolveComponent"])("IconFontSize"),b=Object(n["resolveComponent"])("IconAddText"),O=Object(n["resolveComponent"])("IconText"),m=Object(n["resolveComponent"])("IconHighLight"),v=Object(n["resolveComponent"])("IconTextBold"),y=Object(n["resolveComponent"])("IconTextItalic"),T=Object(n["resolveComponent"])("IconTextUnderline"),z=Object(n["resolveComponent"])("IconStrikethrough"),Y=Object(n["resolveComponent"])("IconCode"),Z=Object(n["resolveComponent"])("IconQuote"),W=Object(n["resolveComponent"])("IconFormat"),J=Object(n["resolveComponent"])("IconFormatBrush"),K=Object(n["resolveComponent"])("IconLinkOne"),Q=Object(n["resolveComponent"])("IconAlignTextLeft"),ee=Object(n["resolveComponent"])("IconAlignTextCenter"),te=Object(n["resolveComponent"])("IconAlignTextRight"),le=Object(n["resolveComponent"])("IconList"),ce=Object(n["resolveComponent"])("IconDown"),ne=Object(n["resolveComponent"])("IconOrderedList"),oe=Object(n["resolveComponent"])("IconIndentLeft"),ae=Object(n["resolveComponent"])("IconIndentRight"),re=Object(n["resolveComponent"])("IconRowHeight"),ie=Object(n["resolveComponent"])("IconVerticalSpacingBetweenItems"),se=Object(n["resolveComponent"])("IconFullwidth");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ZO,[Object(n["createElementVNode"])("div",WO,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(d,e=>Object(n["createElementVNode"])("div",{class:"preset-style-item",key:e.label,style:Object(n["normalizeStyle"])(e.style),onClick:t=>H(e.cmd)},Object(n["toDisplayString"])(e.label),13,JO)),64))]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(Object(n["unref"])(r),{compact:"",class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{class:"font-select",style:{flex:"3"},value:Object(n["unref"])(p).fontname,onChange:o[0]||(o[0]=e=>P("fontname",e))},{suffixIcon:Object(n["withCtx"])(()=>[Object(n["createVNode"])(u)]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(c),{label:"系统字体"},{default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(f),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(a),{key:e.value,value:e.value},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("span",{style:Object(n["normalizeStyle"])({fontFamily:e.value})},Object(n["toDisplayString"])(e.label),5)]),_:2},1032,["value"]))),128))]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{label:"在线字体"},{default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(i),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(a),{key:e.value,value:e.value},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.label),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["value"]),Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"2"},value:Object(n["unref"])(p).fontsize,onChange:o[1]||(o[1]=e=>P("fontsize",e))},{suffixIcon:Object(n["withCtx"])(()=>[Object(n["createVNode"])(b)]),default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(S,e=>Object(n["createVNode"])(Object(n["unref"])(a),{key:e,value:e},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(s),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(p).color,"onUpdate:modelValue":o[2]||(o[2]=e=>P("color",e))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(AO,{color:Object(n["unref"])(p).color,style:{flex:"3"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(O)]),_:1},8,["color"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(p).backcolor,"onUpdate:modelValue":o[3]||(o[3]=e=>P("backcolor",e))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字高亮"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(AO,{color:Object(n["unref"])(p).backcolor,style:{flex:"3"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(m)]),_:1},8,["color"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"增大字号"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"font-size-btn",style:{flex:"2"},onClick:o[4]||(o[4]=e=>P("fontsize-add"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(u),Object(n["createTextVNode"])("+")]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"减小字号"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"font-size-btn",style:{flex:"2"},onClick:o[5]||(o[5]=e=>P("fontsize-reduce"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(u),Object(n["createTextVNode"])("-")]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(XO,{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"加粗"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(p).bold,onClick:o[6]||(o[6]=e=>P("bold"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(v)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"斜体"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(p).em,onClick:o[7]||(o[7]=e=>P("em"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(y)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下划线"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(p).underline,onClick:o[8]||(o[8]=e=>P("underline"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(T)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除线"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(p).strikethrough,onClick:o[9]||(o[9]=e=>P("strikethrough"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(z)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(XO,{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上标"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(p).superscript,onClick:o[10]||(o[10]=e=>P("superscript"))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("A²")]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下标"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(p).subscript,onClick:o[11]||(o[11]=e=>P("subscript"))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("A₂")]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"行内代码"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(p).code,onClick:o[12]||(o[12]=e=>P("code"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Y)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"引用"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(p).blockquote,onClick:o[13]||(o[13]=e=>P("blockquote"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Z)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(XO,{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"清除格式"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},onClick:o[14]||(o[14]=e=>P("clear"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(W)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"格式刷"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:!!Object(n["unref"])(j),onClick:o[15]||(o[15]=e=>Object(n["unref"])(h)())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(J)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"超链接"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{placement:"bottomRight",trigger:"click",visible:U.value,"onUpdate:visible":o[20]||(o[20]=e=>U.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",KO,[Object(n["createVNode"])(Object(n["unref"])(ki["a"]),{value:q.value,"onUpdate:value":o[16]||(o[16]=e=>q.value=e),placeholder:"请输入超链接"},null,8,["value"]),Object(n["createElementVNode"])("div",QO,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{size:"small",disabled:!Object(n["unref"])(p).link,onClick:o[17]||(o[17]=e=>X()),style:{"margin-right":"5px"}},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("移除")]),_:1},8,["disabled"]),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{size:"small",type:"primary",onClick:o[18]||(o[18]=e=>X(q.value))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("确认")]),_:1})])])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:!!Object(n["unref"])(p).link,onClick:o[19]||(o[19]=e=>G())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(K)]),_:1},8,["checked"])]),_:1},8,["visible"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row","button-style":"solid",value:Object(n["unref"])(p).align,onChange:o[21]||(o[21]=e=>P("align",e.target.value))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"left",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Q)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"center",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ee)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"right",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(te)]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1},8,["value"]),Object(n["createElementVNode"])("div",em,[Object(n["createVNode"])(Object(n["unref"])(s),{style:{flex:"15"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"项目符号"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{type:Object(n["unref"])(p).bulletList?"primary":"default",style:{flex:"1"},onClick:o[22]||(o[22]=e=>P("bulletList"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(le)]),_:1},8,["type"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:g.value,"onUpdate:visible":o[23]||(o[23]=e=>g.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",tm,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(k.value,e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("ul",{class:"list",key:e,style:Object(n["normalizeStyle"])({listStyleType:e}),onClick:t=>P("bulletList",e)},[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(3,e=>Object(n["createElementVNode"])("li",{class:"list-item",key:e},nm)),64))],12,lm))),128))])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"popover-btn"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ce)]),_:1})]),_:1},8,["visible"])]),_:1}),om,Object(n["createVNode"])(Object(n["unref"])(s),{style:{flex:"15"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"编号"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{type:Object(n["unref"])(p).orderedList?"primary":"default",style:{flex:"1"},onClick:o[24]||(o[24]=e=>P("orderedList"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ne)]),_:1},8,["type"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:x.value,"onUpdate:visible":o[25]||(o[25]=e=>x.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",am,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(C.value,e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("ul",{class:"list",key:e,style:Object(n["normalizeStyle"])({listStyleType:e}),onClick:t=>P("orderedList",e)},[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(3,e=>Object(n["createElementVNode"])("li",{class:"list-item",key:e},sm)),64))],12,rm))),128))])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"popover-btn"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ce)]),_:1})]),_:1},8,["visible"])]),_:1})]),Object(n["createVNode"])(Object(n["unref"])(s),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"减小缩进"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[26]||(o[26]=e=>P("indent","-1"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oe)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"增大缩进"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[27]||(o[27]=e=>P("indent","+1"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ae)]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createElementVNode"])("div",dm,[um,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:E.value,onChange:o[28]||(o[28]=e=>D(e))},{suffixIcon:Object(n["withCtx"])(()=>[Object(n["createVNode"])(re)]),default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(L,e=>Object(n["createVNode"])(Object(n["unref"])(a),{key:e,value:e},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e)+"倍",1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),Object(n["createElementVNode"])("div",bm,[Om,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:I.value,onChange:o[29]||(o[29]=e=>F(e))},{suffixIcon:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ie)]),default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(M,e=>Object(n["createVNode"])(Object(n["unref"])(a),{key:e,value:e},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e)+"px",1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),Object(n["createElementVNode"])("div",mm,[pm,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:w.value,onChange:o[30]||(o[30]=e=>A(e))},{suffixIcon:Object(n["withCtx"])(()=>[Object(n["createVNode"])(se)]),default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(B,e=>Object(n["createVNode"])(Object(n["unref"])(a),{key:e,value:e},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e)+"px",1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),Object(n["createElementVNode"])("div",fm,[jm,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:V.value,onChange:o[31]||(o[31]=e=>$(e))},{suffixIcon:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ae)]),default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(_,e=>Object(n["createVNode"])(Object(n["unref"])(a),{key:e,value:e},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e)+"px",1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),Object(n["createElementVNode"])("div",vm,[hm,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:N.value,"onUpdate:modelValue":o[32]||(o[32]=e=>R(e))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:N.value,style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(hO),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(MO),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(cb)])}}});l("e7fc");const gm=Yt()(ym,[["__scopeId","data-v-74237311"]]);var xm=gm;const km={class:"element-flip"};var Cm=Object(n["defineComponent"])({__name:"ElementFlip",setup(e){const t=T(),{handleElement:l}=Object(o["c"])(z()),c=Object(n["ref"])(!1),a=Object(n["ref"])(!1);Object(n["watch"])(l,()=>{!l.value||"image"!==l.value.type&&"shape"!==l.value.type||(c.value=!!l.value.flipH,a.value=!!l.value.flipV)},{deep:!0,immediate:!0});const{addHistorySnapshot:r}=Te(),i=e=>{l.value&&(t.updateElement({id:l.value.id,props:e}),r())};return(e,t)=>{const l=Object(n["resolveComponent"])("IconFlipVertically"),o=Object(n["resolveComponent"])("IconFlipHorizontally");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",km,[Object(n["createVNode"])(XO,{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:a.value,onClick:t[0]||(t[0]=e=>i({flipV:!a.value}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(l),Object(n["createTextVNode"])(" 垂直翻转")]),_:1},8,["checked"]),Object(n["createVNode"])(PO,{style:{flex:"1"},checked:c.value,onClick:t[1]||(t[1]=e=>i({flipH:!c.value}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(o),Object(n["createTextVNode"])(" 水平翻转")]),_:1},8,["checked"])]),_:1})])}}});l("a13f");const Nm=Yt()(Cm,[["__scopeId","data-v-1b5a047e"]]);var Em=Nm;const wm=e=>(Object(n["pushScopeId"])("data-v-a99ef6ee"),e=e(),Object(n["popScopeId"])(),e),Vm={class:"element-filter"},Im={class:"row"},Sm=wm(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"启用滤镜:",-1)),Lm={class:"switch-wrapper",style:{flex:"3"}},Bm={key:0,class:"filter"},_m={class:"name"};var Tm=Object(n["defineComponent"])({__name:"ElementFilter",setup(e){const t=[{label:"模糊",key:"blur",default:0,value:0,unit:"px",max:10,step:1},{label:"亮度",key:"brightness",default:100,value:100,unit:"%",max:200,step:5},{label:"对比度",key:"contrast",default:100,value:100,unit:"%",max:200,step:5},{label:"灰度",key:"grayscale",default:0,value:0,unit:"%",max:100,step:5},{label:"饱和度",key:"saturate",default:100,value:100,unit:"%",max:200,step:5},{label:"色相",key:"hue-rotate",default:0,value:0,unit:"deg",max:360,step:10},{label:"不透明度",key:"opacity",default:100,value:100,unit:"%",max:100,step:5}],l=T(),{handleElement:c,handleElementId:a}=Object(o["c"])(z()),r=Object(n["ref"])(JSON.parse(JSON.stringify(t))),i=Object(n["ref"])(!1),{addHistorySnapshot:s}=Te();Object(n["watch"])(c,()=>{if(!c.value||"image"!==c.value.type)return;const e=c.value.filters;e?(r.value=t.map(t=>void 0!==e[t.key]?{...t,value:parseInt(e[t.key])}:t),i.value=!0):(r.value=JSON.parse(JSON.stringify(t)),i.value=!1)},{deep:!0,immediate:!0});const d=(e,t)=>{const n=c.value,o=n.filters||{},r={...o,[e.key]:`${t}${e.unit}`};l.updateElement({id:a.value,props:{filters:r}}),s()},u=e=>{c.value&&(e?l.updateElement({id:c.value.id,props:{filters:{}}}):l.removeElementProps({id:c.value.id,propName:"filters"}),s())};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Vm,[Object(n["createElementVNode"])("div",Im,[Sm,Object(n["createElementVNode"])("div",Lm,[Object(n["createVNode"])(Object(n["unref"])(nb["a"]),{checked:i.value,onChange:t[0]||(t[0]=e=>u(e))},null,8,["checked"])])]),i.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Bm,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(r.value,e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"filter-item",key:e.key},[Object(n["createElementVNode"])("div",_m,Object(n["toDisplayString"])(e.label),1),Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"filter-slider",max:e.max,min:0,step:e.step,value:e.value,onChange:t=>d(e,t)},null,8,["max","step","value","onChange"])]))),128))])):Object(n["createCommentVNode"])("",!0)]))}});l("23e8");const Mm=Yt()(Tm,[["__scopeId","data-v-a99ef6ee"]]);var Dm=Mm;const zm=e=>(Object(n["pushScopeId"])("data-v-7e9086fc"),e=e(),Object(n["popScopeId"])(),e),Fm={class:"element-color-mask"},Am={class:"row"},$m=zm(()=>Object(n["createElementVNode"])("div",{style:{flex:"1"}},"重新着色(蒙版):",-1)),Rm={class:"switch-wrapper",style:{flex:"1"}},Pm={class:"row",style:{"margin-top":"15px"}},Hm=zm(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"蒙版颜色:",-1)),qm={class:"row"},Um=zm(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"不透明度:",-1));var Gm=Object(n["defineComponent"])({__name:"ElementColorMask",setup(e){const t={color:"transparent",opacity:.3},l=T(),{handleElement:c,handleElementId:a}=Object(o["c"])(z()),r=Object(n["ref"])(t),i=Object(n["ref"])(!1),{addHistorySnapshot:s}=Te();Object(n["watch"])(c,()=>{c.value&&"image"===c.value.type&&(c.value.colorMask?(r.value=c.value.colorMask,i.value=!0):i.value=!1)},{deep:!0,immediate:!0});const d=e=>{c.value&&(e?l.updateElement({id:c.value.id,props:{colorMask:t}}):l.removeElementProps({id:c.value.id,propName:"colorMask"}),s())},u=e=>{const t={...r.value,...e};l.updateElement({id:a.value,props:{colorMask:t}}),s()};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Fm,[Object(n["createElementVNode"])("div",Am,[$m,Object(n["createElementVNode"])("div",Rm,[Object(n["createVNode"])(Object(n["unref"])(nb["a"]),{checked:i.value,onChange:t[0]||(t[0]=e=>d(e))},null,8,["checked"])])]),i.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[Object(n["createElementVNode"])("div",Pm,[Hm,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:r.value.color,"onUpdate:modelValue":t[1]||(t[1]=e=>u({color:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:r.value.color,style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createElementVNode"])("div",qm,[Um,Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"opacity-slider",max:1,min:0,step:.05,value:r.value.opacity,onChange:t[2]||(t[2]=e=>u({opacity:e}))},null,8,["step","value"])])],64)):Object(n["createCommentVNode"])("",!0)]))}});l("6a91");const Xm=Yt()(Gm,[["__scopeId","data-v-7e9086fc"]]);var Ym=Xm;const Zm=e=>(Object(n["pushScopeId"])("data-v-105f4640"),e=e(),Object(n["popScopeId"])(),e),Wm={class:"image-style-panel"},Jm={class:"clip"},Km=Zm(()=>Object(n["createElementVNode"])("div",{class:"title"},"按形状:",-1)),Qm={class:"shape-clip"},ep=["onClick"],tp={key:0,class:"title"};var lp=Object(n["defineComponent"])({__name:"ImageStylePanel",setup(e){const t=xi["a"].Group,l=Rl,c=[{label:"纵横比(方形)",children:[{key:"1:1",ratio:1}]},{label:"纵横比(纵向)",children:[{key:"2:3",ratio:1.5},{key:"3:4",ratio:4/3},{key:"3:5",ratio:5/3},{key:"4:5",ratio:5/4}]},{label:"纵横比(横向)",children:[{key:"3:2",ratio:2/3},{key:"4:3",ratio:3/4},{key:"5:3",ratio:.6},{key:"5:4",ratio:.8}]},{children:[{key:"16:9",ratio:9/16},{key:"16:10",ratio:.625}]}],a=z(),r=T(),{handleElement:i,handleElementId:s}=Object(o["c"])(a),{currentSlide:d}=Object(o["c"])(r),u=i,b=Object(n["ref"])(!1),{addHistorySnapshot:O}=Te(),m=()=>{a.setClipingImageElementId(s.value),b.value=!1},p=()=>{const e=i.value,t=e.width,l=e.height,c=e.left,n=e.top,o=e.clip?e.clip.range:[[0,0],[100,100]],a=t/((o[1][0]-o[0][0])/100),r=l/((o[1][1]-o[0][1])/100),s=c-a*(o[0][0]/100),d=n-r*(o[0][1]/100);return{originClipRange:o,originWidth:a,originHeight:r,originLeft:s,originTop:d}},f=(e,t=0)=>{const l=i.value,{originClipRange:c,originWidth:n,originHeight:o,originLeft:a,originTop:d}=p();if(t){const c=o/n,i=0,u=100;let b;if(c>t){const e=(1-t/c)/2*100;b=[[i,e],[u,u-e]]}else{const e=(1-c/t)/2*100;b=[[e,i],[u-e,u]]}r.updateElement({id:s.value,props:{clip:{...l.clip,shape:e,range:b},left:a+n*(b[0][0]/100),top:d+o*(b[0][1]/100),width:n*(b[1][0]-b[0][0])/100,height:o*(b[1][1]-b[0][1])/100}})}else r.updateElement({id:s.value,props:{clip:{...l.clip,shape:e,range:c}}});m(),O()},j=e=>{const t=e[0];t&&(we(t).then(e=>{const t={src:e};r.updateElement({id:s.value,props:t})}),O())},v=()=>{const e=i.value;if(e.clip){const{originWidth:e,originHeight:t,originLeft:l,originTop:c}=p();r.updateElement({id:s.value,props:{left:l,top:c,width:e,height:t}})}r.removeElementProps({id:s.value,propName:["clip","outline","flip","shadow","filters","colorMask"]}),O()},h=()=>{const e=i.value,t={...d.value.background,type:"image",image:e.src,imageSize:"cover"};r.updateSlide({background:t}),O()};return(e,o)=>{const a=Object(n["resolveComponent"])("IconTailoring"),r=Object(n["resolveComponent"])("IconDown"),i=Object(n["resolveComponent"])("IconTransform"),s=Object(n["resolveComponent"])("IconUndo"),d=Object(n["resolveComponent"])("IconTheme");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Wm,[Object(n["createElementVNode"])("div",{class:"origin-image",style:Object(n["normalizeStyle"])({backgroundImage:`url(${Object(n["unref"])(u).src})`})},null,4),Object(n["createVNode"])(Em),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"5"},onClick:o[0]||(o[0]=e=>m())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(a,{class:"btn-icon"}),Object(n["createTextVNode"])(" 裁剪图片")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:b.value,"onUpdate:visible":o[1]||(o[1]=e=>b.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",Jm,[Km,Object(n["createElementVNode"])("div",Qm,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(l),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"shape-clip-item",key:t,onClick:e=>f(t)},[Object(n["createElementVNode"])("div",{class:"shape",style:Object(n["normalizeStyle"])({clipPath:e.style})},null,4)],8,ep))),128))]),(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(c,e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:e.label},[e.label?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",tp,"按"+Object(n["toDisplayString"])(e.label)+":",1)):Object(n["createCommentVNode"])("",!0),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row"},{default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.children,e=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},key:e.key,onClick:t=>f("rect",e.ratio)},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e.key),1)]),_:2},1032,["onClick"]))),128))]),_:2},1024)],64))),64))])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"no-padding",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(r)]),_:1})]),_:1},8,["visible"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(Ym),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(Dm),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(hO),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(MO),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(el,{onChange:o[2]||(o[2]=e=>j(e))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"full-width-btn"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(i,{class:"btn-icon"}),Object(n["createTextVNode"])(" 替换图片")]),_:1})]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"full-width-btn",onClick:o[3]||(o[3]=e=>v())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(s,{class:"btn-icon"}),Object(n["createTextVNode"])(" 重置样式")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"full-width-btn",onClick:o[4]||(o[4]=e=>h())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(d,{class:"btn-icon"}),Object(n["createTextVNode"])(" 设为背景")]),_:1})])}}});l("dfe7");const cp=Yt()(lp,[["__scopeId","data-v-105f4640"]]);var np=cp;const op=e=>(Object(n["pushScopeId"])("data-v-43498c62"),e=e(),Object(n["popScopeId"])(),e),ap={class:"shape-style-panel"},rp={class:"title"},ip=op(()=>Object(n["createElementVNode"])("span",null,"点击替换形状",-1)),sp={class:"shape-pool"},dp={class:"shape-list"},up={class:"row"},bp=op(()=>Object(n["createElementVNode"])("div",{style:{flex:"1"}},null,-1)),Op={class:"row"},mp=op(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"起点颜色:",-1)),pp={class:"row"},fp=op(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"终点颜色:",-1)),jp={key:0,class:"row"},vp=op(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"渐变角度:",-1));var hp=Object(n["defineComponent"])({__name:"ShapeStylePanel",setup(e){const{Group:t,Button:l}=Yu["a"],{OptGroup:c,Option:a}=Ci["a"],r=ki["a"].Group,s=xi["a"].Group,d=z(),u=T(),{handleElement:b,handleElementId:O,richTextAttrs:m,availableFonts:p,textFormatPainter:f}=Object(o["c"])(d),j=b,v=Object(n["ref"])("#000"),h=Object(n["ref"])({type:"linear",rotate:0,color:["#fff","#fff"]}),y=Object(n["ref"])("fill"),g=Object(n["ref"])("middle");Object(n["watch"])(b,()=>{var e,t;b.value&&"shape"===b.value.type&&(v.value=b.value.fill||"#fff",h.value=b.value.gradient||{type:"linear",rotate:0,color:[v.value,"#fff"]},y.value=b.value.gradient?"gradient":"fill",g.value=(null===(e=b.value)||void 0===e||null===(t=e.text)||void 0===t?void 0:t.align)||"middle")},{deep:!0,immediate:!0});const{addHistorySnapshot:x}=Te(),{toggleFormatPainter:k}=Zu(),C=e=>{u.updateElement({id:O.value,props:e}),x()},N=e=>{"fill"===e?(u.removeElementProps({id:O.value,propName:"gradient"}),x()):C({gradient:h.value})},E=e=>{if(!h.value)return;const t={...h.value,...e};C({gradient:t})},w=e=>{C({fill:e})},V=e=>{const{width:t,height:l}=b.value,c={viewBox:e.viewBox,path:e.path,special:e.special};if(e.pathFormula){c.pathFormula=e.pathFormula,c.viewBox=[t,l];const n=Le[e.pathFormula];"editable"in n?(c.path=n.formula(t,l,n.defaultValue),c.keypoint=n.defaultValue):c.path=n.formula(t,l)}else c.pathFormula=void 0,c.keypoint=void 0;C(c)},I=e=>{const t=b.value,l={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"},c=t.text||l;C({text:{...c,align:e}})},S=["12px","14px","16px","18px","20px","22px","24px","28px","32px","36px","40px","44px","48px","54px","60px","66px","72px","76px","80px","88px","96px","104px","112px","120px"],L=(e,t)=>{yn.emit(jn.RICH_TEXT_COMMAND,{action:{command:e,value:t}})};return(e,o)=>{var d;const u=Object(n["resolveComponent"])("IconDown"),b=Object(n["resolveComponent"])("IconFontSize"),O=Object(n["resolveComponent"])("IconAddText"),x=Object(n["resolveComponent"])("IconText"),C=Object(n["resolveComponent"])("IconHighLight"),B=Object(n["resolveComponent"])("IconTextBold"),_=Object(n["resolveComponent"])("IconTextItalic"),T=Object(n["resolveComponent"])("IconTextUnderline"),M=Object(n["resolveComponent"])("IconStrikethrough"),D=Object(n["resolveComponent"])("IconFormat"),z=Object(n["resolveComponent"])("IconFormatBrush"),F=Object(n["resolveComponent"])("IconAlignTextLeft"),A=Object(n["resolveComponent"])("IconAlignTextCenter"),$=Object(n["resolveComponent"])("IconAlignTextRight"),R=Object(n["resolveComponent"])("IconAlignTextTopOne"),P=Object(n["resolveComponent"])("IconAlignTextMiddleOne"),H=Object(n["resolveComponent"])("IconAlignTextBottomOne");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ap,[Object(n["createElementVNode"])("div",rp,[ip,Object(n["createVNode"])(u)]),Object(n["createElementVNode"])("div",sp,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(Be),e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"category",key:e.type},[Object(n["createElementVNode"])("div",dp,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.children,(e,t)=>(Object(n["openBlock"])(),Object(n["createBlock"])(Zs,{class:"shape-item",key:t,shape:e,onClick:t=>V(e)},null,8,["shape","onClick"]))),128))])]))),128))]),Object(n["createElementVNode"])("div",up,[Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"10"},value:y.value,onChange:o[0]||(o[0]=e=>N(e))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(a),{value:"fill"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("纯色填充")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(a),{value:"gradient"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("渐变填充")]),_:1})]),_:1},8,["value"]),bp,"fill"===y.value?(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(Rs["a"]),{key:0,trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:v.value,"onUpdate:modelValue":o[1]||(o[1]=e=>w(e))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:v.value,style:{flex:"10"}},null,8,["color"])]),_:1})):(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(Ci["a"]),{key:1,style:{flex:"10"},value:h.value.type,onChange:o[2]||(o[2]=e=>E({type:e}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(a),{value:"linear"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("线性渐变")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(a),{value:"radial"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("径向渐变")]),_:1})]),_:1},8,["value"]))]),"gradient"===y.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[Object(n["createElementVNode"])("div",Op,[mp,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:h.value.color[0],"onUpdate:modelValue":o[3]||(o[3]=e=>E({color:[e,h.value.color[1]]}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:h.value.color[0],style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createElementVNode"])("div",pp,[fp,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:h.value.color[1],"onUpdate:modelValue":o[4]||(o[4]=e=>E({color:[h.value.color[0],e]}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:h.value.color[1],style:{flex:"3"}},null,8,["color"])]),_:1})]),"linear"===h.value.type?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",jp,[vp,Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"slider",min:0,max:360,step:15,value:h.value.rotate,onChange:o[5]||(o[5]=e=>E({rotate:e}))},null,8,["value"])])):Object(n["createCommentVNode"])("",!0)],64)):Object(n["createCommentVNode"])("",!0),Object(n["createVNode"])(Em),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),null!==(d=Object(n["unref"])(j).text)&&void 0!==d&&d.content?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:1},[Object(n["createVNode"])(Object(n["unref"])(r),{compact:"",class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{class:"font-select",style:{flex:"3"},value:Object(n["unref"])(m).fontname,onChange:o[6]||(o[6]=e=>L("fontname",e))},{suffixIcon:Object(n["withCtx"])(()=>[Object(n["createVNode"])(b)]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(c),{label:"系统字体"},{default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(p),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(a),{key:e.value,value:e.value},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("span",{style:Object(n["normalizeStyle"])({fontFamily:e.value})},Object(n["toDisplayString"])(e.label),5)]),_:2},1032,["value"]))),128))]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{label:"在线字体"},{default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(i),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(a),{key:e.value,value:e.value},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.label),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["value"]),Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"2"},value:Object(n["unref"])(m).fontsize,onChange:o[7]||(o[7]=e=>L("fontsize",e))},{suffixIcon:Object(n["withCtx"])(()=>[Object(n["createVNode"])(O)]),default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(S,e=>Object(n["createVNode"])(Object(n["unref"])(a),{key:e,value:e},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(s),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(m).color,"onUpdate:modelValue":o[8]||(o[8]=e=>L("color",e))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(AO,{color:Object(n["unref"])(m).color,style:{flex:"3"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(x)]),_:1},8,["color"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(m).backcolor,"onUpdate:modelValue":o[9]||(o[9]=e=>L("backcolor",e))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字高亮"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(AO,{color:Object(n["unref"])(m).backcolor,style:{flex:"3"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(C)]),_:1},8,["color"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"增大字号"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"font-size-btn",style:{flex:"2"},onClick:o[10]||(o[10]=e=>L("fontsize-add"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(b),Object(n["createTextVNode"])("+")]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"减小字号"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"font-size-btn",style:{flex:"2"},onClick:o[11]||(o[11]=e=>L("fontsize-reduce"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(b),Object(n["createTextVNode"])("-")]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(XO,{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"加粗"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(m).bold,onClick:o[12]||(o[12]=e=>L("bold"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(B)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"斜体"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(m).em,onClick:o[13]||(o[13]=e=>L("em"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(_)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下划线"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(m).underline,onClick:o[14]||(o[14]=e=>L("underline"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(T)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除线"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(m).strikethrough,onClick:o[15]||(o[15]=e=>L("strikethrough"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(M)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(XO,{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"清除格式"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},onClick:o[16]||(o[16]=e=>L("clear"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(D)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"格式刷"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:!!Object(n["unref"])(f),onClick:o[17]||(o[17]=e=>Object(n["unref"])(k)())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(z)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row","button-style":"solid",value:Object(n["unref"])(m).align,onChange:o[18]||(o[18]=e=>L("align",e.target.value))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"left",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(F)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"center",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(A)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"right",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])($)]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1},8,["value"]),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row","button-style":"solid",value:g.value,onChange:o[19]||(o[19]=e=>I(e.target.value))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"顶对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"top",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(R)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"middle",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(P)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"底对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"bottom",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(H)]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1},8,["value"]),Object(n["createVNode"])(Object(n["unref"])(ui["a"]))],64)):Object(n["createCommentVNode"])("",!0),Object(n["createVNode"])(hO),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(MO),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(cb)])}}});l("b353");const yp=Yt()(hp,[["__scopeId","data-v-43498c62"]]);var gp=yp;const xp=e=>(Object(n["pushScopeId"])("data-v-0ca152b4"),e=e(),Object(n["popScopeId"])(),e),kp={class:"line-style-panel"},Cp={class:"row"},Np=xp(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"线条样式:",-1)),Ep={class:"row"},wp=xp(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"线条颜色:",-1)),Vp={class:"row"},Ip=xp(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"线条宽度:",-1)),Sp={class:"row"},Lp=xp(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"起点样式:",-1)),Bp={class:"row"},_p=xp(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"终点样式:",-1));var Tp=Object(n["defineComponent"])({__name:"LineStylePanel",setup(e){const t=Ci["a"].Option,l=T(),{handleElement:c}=Object(o["c"])(z()),a=c,{addHistorySnapshot:r}=Te(),i=e=>{c.value&&(l.updateElement({id:c.value.id,props:e}),r())};return(e,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",kp,[Object(n["createElementVNode"])("div",Cp,[Np,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:Object(n["unref"])(a).style,onChange:l[0]||(l[0]=e=>i({style:e}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),{value:"solid"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("实线")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{value:"dashed"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("虚线")]),_:1})]),_:1},8,["value"])]),Object(n["createElementVNode"])("div",Ep,[wp,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(a).color,"onUpdate:modelValue":l[1]||(l[1]=e=>i({color:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:Object(n["unref"])(a).color,style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createElementVNode"])("div",Vp,[Ip,Object(n["createVNode"])(Object(n["unref"])(jd["a"]),{value:Object(n["unref"])(a).width,onChange:l[2]||(l[2]=e=>i({width:e})),style:{flex:"3"}},null,8,["value"])]),Object(n["createElementVNode"])("div",Sp,[Lp,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:Object(n["unref"])(a).points[0],onChange:l[3]||(l[3]=e=>i({points:[e,Object(n["unref"])(a).points[1]]}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),{value:""},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("无")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{value:"arrow"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("箭头")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{value:"dot"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("圆点")]),_:1})]),_:1},8,["value"])]),Object(n["createElementVNode"])("div",Bp,[_p,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:Object(n["unref"])(a).points[1],onChange:l[4]||(l[4]=e=>i({points:[Object(n["unref"])(a).points[0],e]}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),{value:""},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("无")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{value:"arrow"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("箭头")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{value:"dot"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("圆点")]),_:1})]),_:1},8,["value"])]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(MO)]))}});l("99b8");const Mp=Yt()(Tp,[["__scopeId","data-v-0ca152b4"]]);var Dp=Mp,zp=(l("ee00"),l("bb76"));const Fp={class:"chart-data-editor"},Ap={class:"editor-content"},$p={class:"range-box"},Rp=["id","onFocus","onPaste"],Pp={class:"btns"},Hp={class:"left"},qp={class:"right"};var Up=Object(n["defineComponent"])({__name:"ChartDataEditor",props:{data:{type:Object,required:!0}},emits:["save","close"],setup(e,{emit:t}){const l=e,c=100,o=32,a=Object(n["ref"])([0,0]),r=Object(n["ref"])({width:0,height:0}),i=Object(n["ref"])(null),s=Object(n["computed"])(()=>{const e=a.value[0]*c,t=a.value[1]*o;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(n["computed"])(()=>{const e=a.value[0]*c,t=a.value[1]*o;return{left:e+"px",top:t+"px"}}),u=()=>{const e=[],{labels:t,legends:c,series:n}=l.data,o=t.length,r=n.length;e.push(["",...c]);for(let l=0;l{if(!i.value)return;const[e,t]=i.value,l=document.querySelector(`#cell-${e+1}-${t}`);l&&l.focus()},O=e=>{const t=e.key.toUpperCase();t===te.ENTER&&b()};Object(n["onMounted"])(()=>{document.addEventListener("keydown",O)}),Object(n["onUnmounted"])(()=>{document.removeEventListener("keydown",O)});const m=()=>{const[e,l]=a.value,c=[],n=[],o=[];for(let t=1;t{for(let e=1;e<31;e++)for(let t=1;t<7;t++){const l=document.querySelector(`#cell-${e}-${t}`);l&&(l.value="")}},f=(e,t,l)=>{if(e.preventDefault(),!e.clipboardData)return;const c=e.clipboardData.items[0];c&&"string"===c.kind&&"text/plain"===c.type&&c.getAsString(e=>{const c=me(e);if("object"===typeof c)return;const n=pe(e);if(n){const e=t+n.length,c=l+n[0].length;for(let o=t;ot("close"),v=e=>{let t=!0;const l=e.pageX,n=e.pageY,i=a.value[0]*c,s=a.value[1]*o;document.onmousemove=e=>{if(!t)return;const c=e.pageX,o=e.pageY,a=c-l,d=o-n,u=i+a,b=s+d;r.value={width:u,height:b}},document.onmouseup=e=>{t=!1,document.onmousemove=null,document.onmouseup=null;const i=e.pageX,s=e.pageY;if(l===i&&n===s)return;let d=r.value.width,u=r.value.height;d%c>.5*c&&(d+=c-d%c),u%o>.5*o&&(u+=o-u%o);let b=Math.round(u/o),O=Math.round(d/c);b<3&&(b=3),O<2&&(O=2),a.value=[O,b],r.value={width:0,height:0}}};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Fp,[Object(n["createElementVNode"])("div",Ap,[Object(n["createElementVNode"])("div",$p,[Object(n["createElementVNode"])("div",{class:"temp-range",style:Object(n["normalizeStyle"])({width:r.value.width+"px",height:r.value.height+"px"})},null,4),(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(s),e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["range-line",e.type]),key:e.type,style:Object(n["normalizeStyle"])(e.style)},null,6))),128)),Object(n["createElementVNode"])("div",{class:"resizable",style:Object(n["normalizeStyle"])(Object(n["unref"])(d)),onMousedown:t[0]||(t[0]=Object(n["withModifiers"])(e=>v(e),["stop"]))},null,36)]),Object(n["createElementVNode"])("table",null,[Object(n["createElementVNode"])("tbody",null,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(31,e=>Object(n["createElementVNode"])("tr",{key:e},[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(7,t=>Object(n["createElementVNode"])("td",{key:t,class:Object(n["normalizeClass"])({head:1===t&&e<=a.value[1]||1===e&&t<=a.value[0]})},[Object(n["createElementVNode"])("input",{class:Object(n["normalizeClass"])(["item",{selected:e<=a.value[1]&&t<=a.value[0]}]),id:`cell-${e-1}-${t-1}`,autocomplete:"off",onFocus:l=>i.value=[e-1,t-1],onPaste:l=>f(l,e-1,t-1)},null,42,Rp)],2)),64))])),64))])])]),Object(n["createElementVNode"])("div",Pp,[Object(n["createElementVNode"])("div",Hp,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn",onClick:t[1]||(t[1]=e=>p())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("清空")]),_:1})]),Object(n["createElementVNode"])("div",qp,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn",onClick:t[2]||(t[2]=e=>j())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("取消")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{type:"primary",class:"btn",onClick:t[3]||(t[3]=e=>m()),style:{"margin-left":"10px"}},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("确认")]),_:1})])])]))}});l("18a5");const Gp=Yt()(Up,[["__scopeId","data-v-1eab5a3a"]]);var Xp=Gp;const Yp=e=>(Object(n["pushScopeId"])("data-v-73760920"),e=e(),Object(n["popScopeId"])(),e),Zp={class:"chart-style-panel"},Wp={class:"row"},Jp={class:"row"},Kp={key:1,class:"row"},Qp={key:2,class:"row"},ef={class:"row"},tf=Yp(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"图例:",-1)),lf={class:"row"},cf=Yp(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"背景填充:",-1)),nf={class:"row"},of=Yp(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"网格颜色:",-1)),af={style:{flex:"2"}},rf={class:"color-btn-wrap",style:{flex:"3"}},sf=["onClick"],df={class:"preset-themes"},uf=["onClick","onMouseenter"];var bf=Object(n["defineComponent"])({__name:"index",setup(e){const t=xi["a"].Group,l=Ci["a"].Option,c=[["#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"]],a=z(),r=T(),{handleElement:i,handleElementId:s}=Object(o["c"])(a),{theme:d}=Object(o["c"])(r),u=i,b=Object(n["ref"])(!1),O=Object(n["ref"])(!1),m=Object(n["ref"])([-1,-1]),{addHistorySnapshot:p}=Te(),f=Object(n["ref"])("#000"),j=Object(n["ref"])([]),v=Object(n["ref"])(""),h=Object(n["ref"])(""),y=Object(n["ref"])(!0),g=Object(n["ref"])(!0),x=Object(n["ref"])(!1),k=Object(n["ref"])(!1),C=Object(n["ref"])(!1),N=Object(n["ref"])(!1);Object(n["watch"])(i,()=>{if(i.value&&"chart"===i.value.type){if(f.value=i.value.fill||"#fff",i.value.options){const{lineSmooth:e,showLine:t,showArea:l,horizontalBars:c,donut:n,stackBars:o}=i.value.options;void 0!==e&&(y.value=e),void 0!==t&&(g.value=t),void 0!==l&&(x.value=l),void 0!==c&&(k.value=c),void 0!==n&&(C.value=n),void 0!==o&&(N.value=o)}j.value=i.value.themeColor,v.value=i.value.gridColor||"#333",h.value=i.value.legend||""}},{deep:!0,immediate:!0});const E=e=>{r.updateElement({id:s.value,props:e}),p()},w=e=>{b.value=!1,E({data:e})},V=e=>{E({fill:e})},I=e=>{const t=i.value,l={...t.options,...e};E({options:l})},S=(e,t)=>{const l={themeColor:j.value.map((l,c)=>c===t?e:l)};E(l)},L=()=>{const e={themeColor:[...j.value,d.value.themeColor]};E(e)},B=(e,t)=>{const l=e.slice(0,t+1);E({themeColor:l}),O.value=!1},_=e=>{const t={themeColor:j.value.filter((t,l)=>l!==e)};E(t)},M=e=>{E({gridColor:e})},D=e=>{E({legend:e})},F=()=>b.value=!0;return yn.on(jn.OPEN_CHART_DATA_EDITOR,F),Object(n["onUnmounted"])(()=>{yn.off(jn.OPEN_CHART_DATA_EDITOR,F)}),(e,o)=>{const a=Object(n["resolveComponent"])("IconEdit"),r=Object(n["resolveComponent"])("IconCloseSmall"),i=Object(n["resolveComponent"])("IconPlus");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Zp,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"full-width-btn",onClick:o[0]||(o[0]=e=>b.value=!0)},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(a,{class:"btn-icon"}),Object(n["createTextVNode"])(" 编辑图表数据 ")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),"line"===Object(n["unref"])(u).chartType?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[Object(n["createElementVNode"])("div",Wp,[Object(n["createVNode"])(Object(n["unref"])(zp["a"]),{onChange:o[1]||(o[1]=e=>I({showArea:e.target.checked})),checked:x.value,style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("面积图样式")]),_:1},8,["checked"]),Object(n["createVNode"])(Object(n["unref"])(zp["a"]),{onChange:o[2]||(o[2]=e=>I({showLine:!e.target.checked})),checked:!g.value,style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("散点图样式")]),_:1},8,["checked"])]),Object(n["createElementVNode"])("div",Jp,[Object(n["createVNode"])(Object(n["unref"])(zp["a"]),{onChange:o[3]||(o[3]=e=>I({lineSmooth:e.target.checked})),checked:y.value},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("使用平滑曲线")]),_:1},8,["checked"])])],64)):Object(n["createCommentVNode"])("",!0),"bar"===Object(n["unref"])(u).chartType?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Kp,[Object(n["createVNode"])(Object(n["unref"])(zp["a"]),{onChange:o[4]||(o[4]=e=>I({horizontalBars:e.target.checked})),checked:k.value},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("条形图样式")]),_:1},8,["checked"]),Object(n["createVNode"])(Object(n["unref"])(zp["a"]),{onChange:o[5]||(o[5]=e=>I({stackBars:e.target.checked})),checked:N.value},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("堆叠样式")]),_:1},8,["checked"])])):Object(n["createCommentVNode"])("",!0),"pie"===Object(n["unref"])(u).chartType?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Qp,[Object(n["createVNode"])(Object(n["unref"])(zp["a"]),{onChange:o[6]||(o[6]=e=>I({donut:e.target.checked})),checked:C.value},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("环形图样式")]),_:1},8,["checked"])])):Object(n["createCommentVNode"])("",!0),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createElementVNode"])("div",ef,[tf,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:h.value,onChange:o[7]||(o[7]=e=>D(e))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:""},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("不显示")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(l),{value:"top"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("显示在上方")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(l),{value:"bottom"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("显示在下方")]),_:1})]),_:1},8,["value"])]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createElementVNode"])("div",lf,[cf,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:f.value,"onUpdate:modelValue":o[8]||(o[8]=e=>V(e))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:f.value,style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createElementVNode"])("div",nf,[of,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:v.value,"onUpdate:modelValue":o[9]||(o[9]=e=>M(e))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:v.value,style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(j.value,(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"row",key:t},[Object(n["createElementVNode"])("div",af,Object(n["toDisplayString"])(0===t?"主题配色:":""),1),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:e,"onUpdate:modelValue":e=>S(e,t)},null,8,["modelValue","onUpdate:modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",rf,[Object(n["createVNode"])(ib,{color:e,style:{width:"100%"}},null,8,["color"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除"},{default:Object(n["withCtx"])(()=>[0!==t?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:"delete-color-btn",onClick:Object(n["withModifiers"])(e=>_(t),["stop"])},[Object(n["createVNode"])(r)],8,sf)):Object(n["createCommentVNode"])("",!0)]),_:2},1032,["mouseEnterDelay"])])]),_:2},1024)]))),128)),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:O.value,"onUpdate:visible":o[11]||(o[11]=e=>O.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",df,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(c,(e,t)=>Object(n["createElementVNode"])("div",{class:"preset-theme",key:t},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e,(l,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["preset-theme-color",{select:m.value[0]===t&&c<=m.value[1]}]),key:l,style:Object(n["normalizeStyle"])({backgroundColor:l}),onClick:t=>B(e,c),onMouseenter:e=>m.value=[t,c],onMouseleave:o[10]||(o[10]=e=>m.value=[-1,-1])},null,46,uf))),128))])),64))])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"no-padding",style:{flex:"2"}},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("推荐主题")]),_:1})]),_:1},8,["visible"]),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"no-padding",disabled:j.value.length>=10,style:{flex:"3"},onClick:o[12]||(o[12]=e=>L())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(i,{class:"btn-icon"}),Object(n["createTextVNode"])(" 添加主题色 ")]),_:1},8,["disabled"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(hO),Object(n["createVNode"])(Object(n["unref"])(le["a"]),{visible:b.value,"onUpdate:visible":o[15]||(o[15]=e=>b.value=e),footer:null,centered:"",closable:!1,width:648,destroyOnClose:""},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Xp,{data:Object(n["unref"])(u).data,onClose:o[13]||(o[13]=e=>b.value=!1),onSave:o[14]||(o[14]=e=>w(e))},null,8,["data"])]),_:1},8,["visible"])])}}});l("e818");const Of=Yt()(bf,[["__scopeId","data-v-73760920"]]);var mf=Of;const pf=e=>(Object(n["pushScopeId"])("data-v-79a422e5"),e=e(),Object(n["popScopeId"])(),e),ff={class:"table-style-panel"},jf={class:"row"},vf=pf(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"行数:",-1)),hf={class:"set-count",style:{flex:"3"}},yf={class:"count-text"},gf={class:"row"},xf=pf(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"列数:",-1)),kf={class:"set-count",style:{flex:"3"}},Cf={class:"count-text"},Nf={class:"row theme-switch"},Ef=pf(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"启用主题表格:",-1)),wf={class:"switch-wrapper",style:{flex:"3"}},Vf={class:"row"},If={class:"row"},Sf={class:"row"},Lf=pf(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"主题颜色:",-1));var Bf=Object(n["defineComponent"])({__name:"TableStylePanel",setup(e){const{Group:t,Button:l}=Yu["a"],{OptGroup:c,Option:r}=Ci["a"],s=ki["a"].Group,d=xi["a"].Group,u=T(),{handleElement:b,handleElementId:O,selectedTableCells:m,availableFonts:p}=Object(o["c"])(z()),f=Object(n["computed"])(()=>u.theme.themeColor),j=["12px","14px","16px","18px","20px","22px","24px","28px","32px"],v=Object(n["ref"])({bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"",fontsize:"12px",fontname:"微软雅黑",align:"left"}),h=Object(n["ref"])(),y=Object(n["ref"])(!1),g=Object(n["ref"])(0),x=Object(n["ref"])(0),k=Object(n["ref"])(0),C=Object(n["ref"])(0);Object(n["watch"])(b,()=>{b.value&&"table"===b.value.type&&(h.value=b.value.theme,y.value=!!h.value,g.value=b.value.data.length,x.value=b.value.data[0].length,k.value=b.value.data.length,C.value=b.value.data[0].length)},{deep:!0,immediate:!0});const{addHistorySnapshot:N}=Te(),E=()=>{if(!b.value||"table"!==b.value.type)return;let e=0,t=0;if(m.value.length){const l=m.value[0];e=+l.split("_")[0],t=+l.split("_")[1]}const l=b.value.data[e][t].style;v.value=l?{bold:!!l.bold,em:!!l.em,underline:!!l.underline,strikethrough:!!l.strikethrough,color:l.color||"#000",backcolor:l.backcolor||"",fontsize:l.fontsize||"12px",fontname:l.fontname||"微软雅黑",align:l.align||"left"}:{bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"",fontsize:"12px",fontname:"微软雅黑",align:"left"}};Object(n["onMounted"])(()=>{m.value.length&&E()}),Object(n["watch"])(m,E);const w=e=>{u.updateElement({id:O.value,props:e}),N()},V=e=>{const t=b.value,l=JSON.parse(JSON.stringify(t.data));for(let c=0;c{if(!h.value)return;const t={...h.value,...e};w({theme:t})},S=e=>{if(e){const e={theme:{color:f.value,rowHeader:!0,rowFooter:!1,colHeader:!1,colFooter:!1}};w(e)}else u.removeElementProps({id:O.value,propName:"theme"}),N()},L=e=>{const t=b.value,l=t.data.length;if(e>l){const c=new Array(x.value).fill({id:Object(a["b"])(10),colspan:1,rowspan:1,text:""}),n=new Array(e-l).fill(c),o=JSON.parse(JSON.stringify(t.data));o.push(...n),w({data:o})}else{const l=t.data.slice(0,e);w({data:l})}},B=e=>{const t=b.value,l=t.data[0].length;let c=t.data,n=t.colWidths.map(e=>e*t.width);if(e>l){c=c.map(t=>{const c=new Array(e-l).fill({id:Object(a["b"])(10),colspan:1,rowspan:1,text:""});return t.push(...c),t});const t=new Array(e-l).fill(100);n.push(...t)}else c=c.map(t=>t.slice(0,e)),n=n.slice(0,e);const o=n.reduce((e,t)=>e+t),r=n.map(e=>e/o),i={width:o,data:c,colWidths:r};w(i)};return(e,o)=>{const a=Object(n["resolveComponent"])("IconFontSize"),u=Object(n["resolveComponent"])("IconAddText"),b=Object(n["resolveComponent"])("IconText"),O=Object(n["resolveComponent"])("IconFill"),m=Object(n["resolveComponent"])("IconTextBold"),f=Object(n["resolveComponent"])("IconTextItalic"),k=Object(n["resolveComponent"])("IconTextUnderline"),C=Object(n["resolveComponent"])("IconStrikethrough"),N=Object(n["resolveComponent"])("IconAlignTextLeft"),E=Object(n["resolveComponent"])("IconAlignTextCenter"),w=Object(n["resolveComponent"])("IconAlignTextRight"),_=Object(n["resolveComponent"])("IconMinus"),T=Object(n["resolveComponent"])("IconPlus");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ff,[Object(n["createVNode"])(Object(n["unref"])(s),{compact:"",class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:v.value.fontname,onChange:o[0]||(o[0]=e=>V({fontname:e}))},{suffixIcon:Object(n["withCtx"])(()=>[Object(n["createVNode"])(a)]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(c),{label:"系统字体"},{default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(p),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(r),{key:e.value,value:e.value},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("span",{style:Object(n["normalizeStyle"])({fontFamily:e.value})},Object(n["toDisplayString"])(e.label),5)]),_:2},1032,["value"]))),128))]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{label:"在线字体"},{default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(i),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(r),{key:e.value,value:e.value},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.label),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["value"]),Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"2"},value:v.value.fontsize,onChange:o[1]||(o[1]=e=>V({fontsize:e}))},{suffixIcon:Object(n["withCtx"])(()=>[Object(n["createVNode"])(u)]),default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(j,e=>Object(n["createVNode"])(Object(n["unref"])(r),{key:e,value:e},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(d),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:v.value.color,"onUpdate:modelValue":o[2]||(o[2]=e=>V({color:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(AO,{color:v.value.color,style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(b)]),_:1},8,["color"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:v.value.backcolor,"onUpdate:modelValue":o[3]||(o[3]=e=>V({backcolor:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"单元格填充"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(AO,{color:v.value.backcolor,style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(O)]),_:1},8,["color"])]),_:1},8,["mouseEnterDelay"])]),_:1})]),_:1}),Object(n["createVNode"])(XO,{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"加粗"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:v.value.bold,onClick:o[4]||(o[4]=e=>V({bold:!v.value.bold}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(m)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"斜体"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:v.value.em,onClick:o[5]||(o[5]=e=>V({em:!v.value.em}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(f)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下划线"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:v.value.underline,onClick:o[6]||(o[6]=e=>V({underline:!v.value.underline}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(k)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除线"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:v.value.strikethrough,onClick:o[7]||(o[7]=e=>V({strikethrough:!v.value.strikethrough}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(C)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row","button-style":"solid",value:v.value.align,onChange:o[8]||(o[8]=e=>V({align:e.target.value}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"left",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(N)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"center",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(E)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"right",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(w)]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1},8,["value"]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(hO,{fixed:!0}),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createElementVNode"])("div",jf,[vf,Object(n["createElementVNode"])("div",hf,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn",disabled:g.value<=1,onClick:o[9]||(o[9]=e=>L(g.value-1))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(_)]),_:1},8,["disabled"]),Object(n["createElementVNode"])("div",yf,Object(n["toDisplayString"])(g.value),1),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn",disabled:g.value>=30,onClick:o[10]||(o[10]=e=>L(g.value+1))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(T)]),_:1},8,["disabled"])])]),Object(n["createElementVNode"])("div",gf,[xf,Object(n["createElementVNode"])("div",kf,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn",disabled:x.value<=1,onClick:o[11]||(o[11]=e=>B(x.value-1))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(_)]),_:1},8,["disabled"]),Object(n["createElementVNode"])("div",Cf,Object(n["toDisplayString"])(x.value),1),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn",disabled:x.value>=30,onClick:o[12]||(o[12]=e=>B(x.value+1))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(T)]),_:1},8,["disabled"])])]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createElementVNode"])("div",Nf,[Ef,Object(n["createElementVNode"])("div",wf,[Object(n["createVNode"])(Object(n["unref"])(nb["a"]),{checked:y.value,onChange:o[13]||(o[13]=e=>S(e))},null,8,["checked"])])]),h.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[Object(n["createElementVNode"])("div",Vf,[Object(n["createVNode"])(Object(n["unref"])(zp["a"]),{onChange:o[14]||(o[14]=e=>I({rowHeader:e.target.checked})),checked:h.value.rowHeader,style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("标题行")]),_:1},8,["checked"]),Object(n["createVNode"])(Object(n["unref"])(zp["a"]),{onChange:o[15]||(o[15]=e=>I({rowFooter:e.target.checked})),checked:h.value.rowFooter,style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("汇总行")]),_:1},8,["checked"])]),Object(n["createElementVNode"])("div",If,[Object(n["createVNode"])(Object(n["unref"])(zp["a"]),{onChange:o[16]||(o[16]=e=>I({colHeader:e.target.checked})),checked:h.value.colHeader,style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("第一列")]),_:1},8,["checked"]),Object(n["createVNode"])(Object(n["unref"])(zp["a"]),{onChange:o[17]||(o[17]=e=>I({colFooter:e.target.checked})),checked:h.value.colFooter,style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("最后一列")]),_:1},8,["checked"])]),Object(n["createElementVNode"])("div",Sf,[Lf,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:h.value.color,"onUpdate:modelValue":o[18]||(o[18]=e=>I({color:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:h.value.color,style:{flex:"3"}},null,8,["color"])]),_:1})])],64)):Object(n["createCommentVNode"])("",!0)])}}});l("ecba");const _f=Yt()(Bf,[["__scopeId","data-v-79a422e5"]]);var Tf=_f;const Mf=e=>(Object(n["pushScopeId"])("data-v-79d8ab96"),e=e(),Object(n["popScopeId"])(),e),Df={class:"latex-style-panel"},zf={class:"row"},Ff={class:"row"},Af=Mf(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"颜色:",-1)),$f={class:"row"},Rf=Mf(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"粗细:",-1));var Pf=Object(n["defineComponent"])({__name:"LatexStylePanel",setup(e){const t=T(),{handleElement:l}=Object(o["c"])(z()),c=l,a=Object(n["ref"])(!1),{addHistorySnapshot:r}=Te(),i=e=>{l.value&&(t.updateElement({id:l.value.id,props:e}),r())},s=e=>{i({path:e.path,latex:e.latex,width:e.w,height:e.h,viewBox:[e.w,e.h]})},d=()=>a.value=!0;return yn.on(jn.OPEN_LATEX_EDITOR,d),Object(n["onUnmounted"])(()=>{yn.off(jn.OPEN_LATEX_EDITOR,d)}),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Df,[Object(n["createElementVNode"])("div",zf,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:t[0]||(t[0]=e=>a.value=!0)},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("编辑 LaTeX")]),_:1})]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createElementVNode"])("div",Ff,[Af,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(c).color,"onUpdate:modelValue":t[1]||(t[1]=e=>i({color:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:Object(n["unref"])(c).color,style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createElementVNode"])("div",$f,[Rf,Object(n["createVNode"])(Object(n["unref"])(jd["a"]),{min:1,max:3,value:Object(n["unref"])(c).strokeWidth,onChange:t[2]||(t[2]=e=>i({strokeWidth:e})),style:{flex:"3"}},null,8,["value"])]),Object(n["createVNode"])(Object(n["unref"])(le["a"]),{visible:a.value,"onUpdate:visible":t[5]||(t[5]=e=>a.value=e),footer:null,centered:"",width:880,destroyOnClose:""},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(gu,{value:Object(n["unref"])(c).latex,onClose:t[3]||(t[3]=e=>a.value=!1),onUpdate:t[4]||(t[4]=e=>{s(e),a.value=!1})},null,8,["value"])]),_:1},8,["visible"])]))}});l("0593");const Hf=Yt()(Pf,[["__scopeId","data-v-79d8ab96"]]);var qf=Hf;const Uf=e=>(Object(n["pushScopeId"])("data-v-802e1e06"),e=e(),Object(n["popScopeId"])(),e),Gf={class:"video-style-panel"},Xf=Uf(()=>Object(n["createElementVNode"])("div",{class:"title"},"视频预览封面",-1)),Yf={class:"background-image-wrapper"},Zf={class:"background-image"},Wf={class:"row"};var Jf=Object(n["defineComponent"])({__name:"VideoStylePanel",setup(e){const t=T(),{handleElement:l}=Object(o["c"])(z()),c=l,{addHistorySnapshot:a}=Te(),r=e=>{l.value&&(t.updateElement({id:l.value.id,props:e}),a())},i=e=>{const t=e[0];t&&we(t).then(e=>r({poster:e}))};return(e,t)=>{const l=Object(n["resolveComponent"])("IconPlus");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Gf,[Xf,Object(n["createElementVNode"])("div",Yf,[Object(n["createVNode"])(el,{onChange:t[0]||(t[0]=e=>i(e))},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",Zf,[Object(n["createElementVNode"])("div",{class:"content",style:Object(n["normalizeStyle"])({backgroundImage:`url(${Object(n["unref"])(c).poster})`})},[Object(n["createVNode"])(l)],4)])]),_:1})]),Object(n["createElementVNode"])("div",Wf,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:t[1]||(t[1]=e=>r({poster:""}))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("重置封面")]),_:1})])])}}});l("e38f");const Kf=Yt()(Jf,[["__scopeId","data-v-802e1e06"]]);var Qf=Kf;const ej=e=>(Object(n["pushScopeId"])("data-v-1da06c97"),e=e(),Object(n["popScopeId"])(),e),tj={class:"audio-style-panel"},lj={class:"row"},cj=ej(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"图标颜色:",-1)),nj={class:"row switch-row"},oj=ej(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"自动播放:",-1)),aj={class:"switch-wrapper",style:{flex:"3"}},rj={class:"row switch-row"},ij=ej(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"循环播放:",-1)),sj={class:"switch-wrapper",style:{flex:"3"}};var dj=Object(n["defineComponent"])({__name:"AudioStylePanel",setup(e){const t=T(),{handleElement:l}=Object(o["c"])(z()),c=l,{addHistorySnapshot:a}=Te(),r=e=>{l.value&&(t.updateElement({id:l.value.id,props:e}),a())};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",tj,[Object(n["createElementVNode"])("div",lj,[cj,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(c).color,"onUpdate:modelValue":t[0]||(t[0]=e=>r({color:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:Object(n["unref"])(c).color,style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createElementVNode"])("div",nj,[oj,Object(n["createElementVNode"])("div",aj,[Object(n["createVNode"])(Object(n["unref"])(nb["a"]),{checked:Object(n["unref"])(c).autoplay,onChange:t[1]||(t[1]=e=>r({autoplay:e}))},null,8,["checked"])])]),Object(n["createElementVNode"])("div",rj,[ij,Object(n["createElementVNode"])("div",sj,[Object(n["createVNode"])(Object(n["unref"])(nb["a"]),{checked:Object(n["unref"])(c).loop,onChange:t[2]||(t[2]=e=>r({loop:e}))},null,8,["checked"])])])]))}});l("796c");const uj=Yt()(dj,[["__scopeId","data-v-1da06c97"]]);var bj=uj;const Oj=e=>(Object(n["pushScopeId"])("data-v-de815ffa"),e=e(),Object(n["popScopeId"])(),e),mj={class:"multi-style-panel"},pj={class:"row"},fj=Oj(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"填充颜色:",-1)),jj={class:"row"},vj=Oj(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"边框样式:",-1)),hj={class:"row"},yj=Oj(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"边框颜色:",-1)),gj={class:"row"},xj=Oj(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"边框粗细:",-1));var kj=Object(n["defineComponent"])({__name:"MultiStylePanel",setup(e){const{Button:t,Group:l}=Yu["a"],{OptGroup:c,Option:a}=Ci["a"],r=ki["a"].Group,s=xi["a"].Group,d=T(),{richTextAttrs:u,availableFonts:b,activeElementList:O}=Object(o["c"])(z()),{addHistorySnapshot:m}=Te(),p=(e,t)=>{d.updateElement({id:e,props:t}),m()},f=["12px","14px","16px","18px","20px","22px","24px","28px","32px","36px","40px","44px","48px","54px","60px","66px","72px","76px","80px","88px","96px","104px","112px","120px"],j=Object(n["ref"])("#fff"),v=Object(n["ref"])({width:0,color:"#fff",style:"solid"}),h=e=>{for(const t of O.value){if("text"!==t.type&&"shape"!==t.type&&"chart"!==t.type||p(t.id,{fill:e}),"table"===t.type){const l=JSON.parse(JSON.stringify(t.data));for(let t=0;t{for(const t of O.value){if("text"===t.type||"image"===t.type||"shape"===t.type||"table"===t.type||"chart"===t.type){const l=t.outline||{width:2,color:"#000",style:"solid"},c={outline:{...l,...e}};p(t.id,c)}"line"===t.type&&p(t.id,e)}v.value={...v.value,...e}},g=(e,t)=>{for(const c of O.value){var l;if(("text"===c.type||"shape"===c.type&&null!==(l=c.text)&&void 0!==l&&l.content)&&yn.emit(jn.RICH_TEXT_COMMAND,{target:c.id,action:{command:e,value:t}}),"table"===c.type){const l=JSON.parse(JSON.stringify(c.data));for(let c=0;c{const d=Object(n["resolveComponent"])("IconFontSize"),O=Object(n["resolveComponent"])("IconAddText"),m=Object(n["resolveComponent"])("IconText"),p=Object(n["resolveComponent"])("IconHighLight"),x=Object(n["resolveComponent"])("IconAlignTextLeft"),k=Object(n["resolveComponent"])("IconAlignTextCenter"),C=Object(n["resolveComponent"])("IconAlignTextRight");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",mj,[Object(n["createElementVNode"])("div",pj,[fj,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:j.value,"onUpdate:modelValue":o[0]||(o[0]=e=>h(e))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:j.value,style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createElementVNode"])("div",jj,[vj,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:v.value.style,onChange:o[1]||(o[1]=e=>y({style:e}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(a),{value:"solid"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("实线边框")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(a),{value:"dashed"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("虚线边框")]),_:1})]),_:1},8,["value"])]),Object(n["createElementVNode"])("div",hj,[yj,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:v.value.color,"onUpdate:modelValue":o[2]||(o[2]=e=>y({color:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:v.value.color||"#000",style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createElementVNode"])("div",gj,[xj,Object(n["createVNode"])(Object(n["unref"])(jd["a"]),{value:v.value.width,onChange:o[3]||(o[3]=e=>y({width:e})),style:{flex:"3"}},null,8,["value"])]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(Object(n["unref"])(r),{compact:"",class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:Object(n["unref"])(u).fontname,onChange:o[4]||(o[4]=e=>g("fontname",e))},{suffixIcon:Object(n["withCtx"])(()=>[Object(n["createVNode"])(d)]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(c),{label:"系统字体"},{default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(b),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(a),{key:e.value,value:e.value},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("span",{style:Object(n["normalizeStyle"])({fontFamily:e.value})},Object(n["toDisplayString"])(e.label),5)]),_:2},1032,["value"]))),128))]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{label:"在线字体"},{default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(i),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(a),{key:e.value,value:e.value},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.label),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["value"]),Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"2"},value:Object(n["unref"])(u).fontsize,onChange:o[5]||(o[5]=e=>g("fontsize",e))},{suffixIcon:Object(n["withCtx"])(()=>[Object(n["createVNode"])(O)]),default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(f,e=>Object(n["createVNode"])(Object(n["unref"])(a),{key:e,value:e},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(s),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(u).color,"onUpdate:modelValue":o[6]||(o[6]=e=>g("color",e))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(AO,{color:Object(n["unref"])(u).color,style:{flex:"3"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(m)]),_:1},8,["color"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(u).backcolor,"onUpdate:modelValue":o[7]||(o[7]=e=>g("backcolor",e))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字高亮"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(AO,{color:Object(n["unref"])(u).backcolor,style:{flex:"3"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(p)]),_:1},8,["color"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"增大字号"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"font-size-btn",style:{flex:"2"},onClick:o[8]||(o[8]=e=>g("fontsize-add","2"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(d),Object(n["createTextVNode"])("+")]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"减小字号"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"font-size-btn",style:{flex:"2"},onClick:o[9]||(o[9]=e=>g("fontsize-reduce","2"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(d),Object(n["createTextVNode"])("-")]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(l),{class:"row","button-style":"solid",value:Object(n["unref"])(u).align,onChange:o[10]||(o[10]=e=>g("align",e.target.value))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),{value:"left",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(x)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),{value:"center",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(k)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),{value:"right",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(C)]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1},8,["value"])])}}});l("173e");const Cj=Yt()(kj,[["__scopeId","data-v-de815ffa"]]);var Nj=Cj;const Ej={class:"element-style-panel"};var wj=Object(n["defineComponent"])({__name:"index",setup(e){const t={[Se.TEXT]:xm,[Se.IMAGE]:np,[Se.SHAPE]:gp,[Se.LINE]:Dp,[Se.CHART]:mf,[Se.TABLE]:Tf,[Se.LATEX]:qf,[Se.VIDEO]:Qf,[Se.AUDIO]:bj},{activeElementIdList:l,activeElementList:c,handleElement:a,activeGroupElementId:r}=Object(o["c"])(z()),i=Object(n["computed"])(()=>{if(l.value.length>1){if(!r.value)return Nj;const e=c.value.find(e=>e.id===r.value);return e&&t[e.type]||null}return a.value&&t[a.value.type]||null});return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ej,[(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["resolveDynamicComponent"])(Object(n["unref"])(i))))]))}});const Vj=wj;var Ij=Vj;const Sj=e=>(Object(n["pushScopeId"])("data-v-08d61819"),e=e(),Object(n["popScopeId"])(),e),Lj={class:"element-positopn-panel"},Bj=Sj(()=>Object(n["createElementVNode"])("div",{class:"title"},"层级:",-1)),_j=Sj(()=>Object(n["createElementVNode"])("div",{class:"title"},"对齐:",-1)),Tj={class:"row"},Mj=Sj(()=>Object(n["createElementVNode"])("div",{style:{flex:"1"}},null,-1)),Dj={key:0,class:"row"},zj={key:1,style:{flex:"1"}},Fj={class:"row"},Aj=Sj(()=>Object(n["createElementVNode"])("div",{style:{flex:"1"}},null,-1));var $j=Object(n["defineComponent"])({__name:"ElementPositionPanel",setup(e){const t=xi["a"].Group,l=T(),{handleElement:c,handleElementId:a}=Object(o["c"])(z()),r=Object(n["ref"])(0),i=Object(n["ref"])(0),s=Object(n["ref"])(0),d=Object(n["ref"])(0),u=Object(n["ref"])(0),b=Object(n["ref"])(!1),O=Object(n["computed"])(()=>c.value&&wl[c.value.type]||20),m=Object(n["computed"])(()=>{var e;return"text"===(null===(e=c.value)||void 0===e?void 0:e.type)&&!c.value.vertical}),p=Object(n["computed"])(()=>{var e;return"text"===(null===(e=c.value)||void 0===e?void 0:e.type)&&c.value.vertical});Object(n["watch"])(c,()=>{c.value&&(r.value=Object(S["round"])(c.value.left,1),i.value=Object(S["round"])(c.value.top,1),b.value="fixedRatio"in c.value&&!!c.value.fixedRatio,"line"!==c.value.type&&(s.value=Object(S["round"])(c.value.width,1),d.value=Object(S["round"])(c.value.height,1),u.value="rotate"in c.value&&void 0!==c.value.rotate?Object(S["round"])(c.value.rotate,1):0))},{deep:!0,immediate:!0});const{orderElement:f}=Ue(),{alignElementToCanvas:j}=Fl(),{addHistorySnapshot:v}=Te(),h=e=>{const t={left:e};l.updateElement({id:a.value,props:t}),v()},y=e=>{const t={top:e};l.updateElement({id:a.value,props:t}),v()},g=(e,t)=>{if(c.value&&"shape"===c.value.type&&"pathFormula"in c.value&&c.value.pathFormula){const l=Le[c.value.pathFormula];let n="";return n="editable"in l?l.formula(e,t,c.value.keypoint):l.formula(e,t),{viewBox:[e,t],path:n}}return null},x=e=>{let t={width:e};const c=g(e,d.value);c&&(t={...t,...c}),l.updateElement({id:a.value,props:t}),v()},k=e=>{let t={height:e};const c=g(s.value,e);c&&(t={...t,...c}),l.updateElement({id:a.value,props:t}),v()},C=e=>{const t={rotate:e};l.updateElement({id:a.value,props:t}),v()},N=e=>{const t={fixedRatio:e};l.updateElement({id:a.value,props:t}),v()},E=e=>{let t=45*Math.floor(u.value/45);"+"===e?t+=45:"-"===e&&(t-=45),t<-180&&(t=-180),t>180&&(t=180);const c={rotate:t};l.updateElement({id:a.value,props:c}),v()};return(e,l)=>{const o=Object(n["resolveComponent"])("IconSendToBack"),a=Object(n["resolveComponent"])("IconBringToFrontOne"),v=Object(n["resolveComponent"])("IconBringToFront"),g=Object(n["resolveComponent"])("IconSentToBack"),w=Object(n["resolveComponent"])("IconAlignLeft"),V=Object(n["resolveComponent"])("IconAlignVertically"),I=Object(n["resolveComponent"])("IconAlignRight"),S=Object(n["resolveComponent"])("IconAlignTop"),L=Object(n["resolveComponent"])("IconAlignHorizontally"),B=Object(n["resolveComponent"])("IconAlignBottom"),_=Object(n["resolveComponent"])("IconLock"),T=Object(n["resolveComponent"])("IconUnlock"),M=Object(n["resolveComponent"])("IconRotate");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Lj,[Bj,Object(n["createVNode"])(Object(n["unref"])(t),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[0]||(l[0]=e=>Object(n["unref"])(f)(Object(n["unref"])(c),Object(n["unref"])(W).TOP))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(o,{class:"btn-icon"}),Object(n["createTextVNode"])(" 置顶")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[1]||(l[1]=e=>Object(n["unref"])(f)(Object(n["unref"])(c),Object(n["unref"])(W).BOTTOM))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(a,{class:"btn-icon"}),Object(n["createTextVNode"])(" 置底")]),_:1})]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[2]||(l[2]=e=>Object(n["unref"])(f)(Object(n["unref"])(c),Object(n["unref"])(W).UP))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(v,{class:"btn-icon"}),Object(n["createTextVNode"])(" 上移")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[3]||(l[3]=e=>Object(n["unref"])(f)(Object(n["unref"])(c),Object(n["unref"])(W).DOWN))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(g,{class:"btn-icon"}),Object(n["createTextVNode"])(" 下移")]),_:1})]),_:1}),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),_j,Object(n["createVNode"])(Object(n["unref"])(t),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[4]||(l[4]=e=>Object(n["unref"])(j)(Object(n["unref"])(J).LEFT))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(w)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"水平居中"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[5]||(l[5]=e=>Object(n["unref"])(j)(Object(n["unref"])(J).HORIZONTAL))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(V)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[6]||(l[6]=e=>Object(n["unref"])(j)(Object(n["unref"])(J).RIGHT))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(I)]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[7]||(l[7]=e=>Object(n["unref"])(j)(Object(n["unref"])(J).TOP))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(S)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"垂直居中"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[8]||(l[8]=e=>Object(n["unref"])(j)(Object(n["unref"])(J).VERTICAL))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(L)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[9]||(l[9]=e=>Object(n["unref"])(j)(Object(n["unref"])(J).BOTTOM))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(B)]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createElementVNode"])("div",Tj,[Object(n["createVNode"])(Object(n["unref"])(jd["a"]),{prefix:"水平:",step:5,value:r.value,onChange:l[10]||(l[10]=e=>h(e)),style:{flex:"4"}},null,8,["value"]),Mj,Object(n["createVNode"])(Object(n["unref"])(jd["a"]),{prefix:"垂直:",step:5,value:i.value,onChange:l[11]||(l[11]=e=>y(e)),style:{flex:"4"}},null,8,["value"])]),"line"!==Object(n["unref"])(c).type?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Dj,[Object(n["createVNode"])(Object(n["unref"])(jd["a"]),{prefix:"宽度:",min:Object(n["unref"])(O),max:1500,step:5,disabled:Object(n["unref"])(p),value:s.value,onChange:l[12]||(l[12]=e=>x(e)),style:{flex:"4"}},null,8,["min","disabled","value"]),["image","shape","audio"].includes(Object(n["unref"])(c).type)?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[b.value?(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(et["a"]),{key:0,mouseLeaveDelay:0,mouseEnterDelay:.5,title:"解除宽高比锁定"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(_,{style:{flex:"1"},class:"icon-btn",onClick:l[13]||(l[13]=e=>N(!1))})]),_:1},8,["mouseEnterDelay"])):(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(et["a"]),{key:1,mouseLeaveDelay:0,mouseEnterDelay:.5,title:"宽高比锁定"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(T,{style:{flex:"1"},class:"icon-btn",onClick:l[14]||(l[14]=e=>N(!0))})]),_:1},8,["mouseEnterDelay"]))],64)):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",zj)),Object(n["createVNode"])(Object(n["unref"])(jd["a"]),{prefix:"高度:",min:Object(n["unref"])(O),max:800,step:5,disabled:Object(n["unref"])(m)||"table"===Object(n["unref"])(c).type,value:d.value,onChange:l[15]||(l[15]=e=>k(e)),style:{flex:"4"}},null,8,["min","disabled","value"])])):Object(n["createCommentVNode"])("",!0),["line","video","audio"].includes(Object(n["unref"])(c).type)?Object(n["createCommentVNode"])("",!0):(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:1},[Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createElementVNode"])("div",Fj,[Object(n["createVNode"])(Object(n["unref"])(jd["a"]),{prefix:"旋转:",min:-180,max:180,step:5,value:u.value,onChange:l[16]||(l[16]=e=>C(e)),style:{flex:"8"}},null,8,["value"]),Aj,Object(n["createElementVNode"])("div",{class:"text-btn",onClick:l[17]||(l[17]=e=>E("-")),style:{flex:"5"}},[Object(n["createVNode"])(M),Object(n["createTextVNode"])(" -45°")]),Object(n["createElementVNode"])("div",{class:"text-btn",onClick:l[18]||(l[18]=e=>E("+")),style:{flex:"5"}},[Object(n["createVNode"])(M,{style:Object(n["normalizeStyle"])({transform:"rotateY(180deg)"})},null,8,["style"]),Object(n["createTextVNode"])(" +45°")])])],64))])}}});l("691a");const Rj=Yt()($j,[["__scopeId","data-v-08d61819"]]);var Pj=Rj;const Hj=1e3,qj="click",Uj="animate__",Gj=[{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"}]}],Xj=[{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"}]}],Yj=[{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"}]}],Zj=e=>(Object(n["pushScopeId"])("data-v-7a134147"),e=e(),Object(n["popScopeId"])(),e),Wj={class:"element-animation-panel"},Jj={key:0,class:"element-animation"},Kj={class:"tabs"},Qj=["onClick"],ev={class:"type-title"},tv={class:"pool-item-wrapper"},lv=["onMouseenter","onClick"],cv={key:0,class:"mask"},nv={key:1,class:"tip"},ov={class:"sequence-content"},av={class:"index"},rv={class:"text"},iv={class:"handler"},sv={key:0,class:"configs"},dv={class:"config-item"},uv=Zj(()=>Object(n["createElementVNode"])("div",{style:{flex:"3"}},"持续时长:",-1)),bv={class:"config-item"},Ov=Zj(()=>Object(n["createElementVNode"])("div",{style:{flex:"3"}},"触发方式:",-1)),mv={class:"config-item"};var pv=Object(n["defineComponent"])({__name:"ElementAnimationPanel",setup(e){const t=Ci["a"].Option,l={};for(const n of Gj)for(const e of n.children)l[e.value]=e.name;for(const n of Xj)for(const e of n.children)l[e.value]=e.name;for(const n of Yj)for(const e of n.children)l[e.value]=e.name;const c=["in","out","attention"],r=T(),{handleElement:i,handleElementId:s}=Object(o["c"])(z()),{currentSlide:d,formatedAnimations:u,currentSlideAnimations:b}=Object(o["c"])(r),O=[{key:"in",label:"入场"},{key:"out",label:"退场"},{key:"attention",label:"强调"}],m=Object(n["ref"])("in");Object(n["watch"])(()=>s.value,()=>{f.value=!1});const p=Object(n["ref"])(""),f=Object(n["ref"])(!1),{addHistorySnapshot:j}=Te(),v=Object(n["computed"])(()=>{const e=[];for(let t=0;te.id===o.elId);if(!a)continue;const r=El[a.type],i=l[o.effect];e.push({...o,index:0===n?t+1:"",elType:r,animationEffect:i})}}return e}),h=Object(n["computed"])(()=>{const e=b.value,t=e.filter(e=>e.elId===s.value);return t||[]}),y=e=>{const t=b.value.filter(t=>t.id!==e);r.updateSlide({animations:t}),j()},g=e=>{const{newIndex:t,oldIndex:l}=e;if(l===t)return;const c=JSON.parse(JSON.stringify(b.value)),n=c[l];c.splice(l,1),c.splice(t,0,n),r.updateSlide({animations:c}),j()},x=(e,t,l)=>{const c=document.querySelector(`#editable-element-${e} [class^=editable-element-]`);if(c){const e=`${Uj}${t}`;document.documentElement.style.setProperty("--animate-duration",l+"ms"),c.classList.add(Uj+"animated",e);const n=()=>{document.documentElement.style.removeProperty("--animate-duration"),c.classList.remove(Uj+"animated",e)};c.addEventListener("animationend",n,{once:!0})}},k=(e,t)=>{if(t<100||t>5e3)return;const l=b.value.map(l=>l.id===e?{...l,duration:t}:l);r.updateSlide({animations:l}),j()},C=(e,t)=>{const l=b.value.map(l=>l.id===e?{...l,trigger:t}:l);r.updateSlide({animations:l}),j()},N=(e,t)=>{const l=b.value.map(l=>l.id===E.value?{...l,type:e,effect:t}:l);r.updateSlide({animations:l}),f.value=!1,j();const c=b.value.find(e=>e.elId===s.value),n=(null===c||void 0===c?void 0:c.duration)||Hj;x(s.value,t,n)},E=Object(n["ref"])(""),w=(e,t)=>{if(E.value)return void N(e,t);const l=JSON.parse(JSON.stringify(b.value));l.push({id:Object(a["b"])(10),elId:s.value,type:e,effect:t,duration:Hj,trigger:qj}),r.updateSlide({animations:l}),f.value=!1,j(),x(s.value,t,Hj)},V=Object(n["ref"])(!1),I=e=>{e?setTimeout(()=>V.value=!0,600):V.value=!1},S=e=>{f.value=!0,E.value=e,I(!0)},L={in:Gj,out:Xj,attention:Yj};return(e,l)=>{const o=Object(n["resolveComponent"])("IconEffects"),a=Object(n["resolveComponent"])("IconClick"),r=Object(n["resolveComponent"])("IconPlayOne"),s=Object(n["resolveComponent"])("IconCloseSmall");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Wj,[Object(n["unref"])(i)?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Jj,[Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:f.value,"onUpdate:visible":l[2]||(l[2]=e=>f.value=e),onVisibleChange:l[3]||(l[3]=e=>I(e))},{content:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",Kj,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(O,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["tab",e.key,{active:m.value===e.key}]),key:e.key,onClick:t=>m.value=e.key},Object(n["toDisplayString"])(e.label),11,Qj)),64))]),(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(c,e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,[m.value===e?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["animation-pool",e]),key:e},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(L[e],t=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"pool-type",key:t.name},[Object(n["createElementVNode"])("div",ev,Object(n["toDisplayString"])(t.name)+":",1),Object(n["createElementVNode"])("div",tv,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(t.children,t=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"pool-item",key:t.name,onMouseenter:e=>p.value=t.value,onMouseleave:l[0]||(l[0]=e=>p.value=""),onClick:l=>w(e,t.value)},[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["animation-box",[Object(n["unref"])(Uj)+"animated",Object(n["unref"])(Uj)+"fast",p.value===t.value&&`${Object(n["unref"])(Uj)}${t.value}`]])},Object(n["toDisplayString"])(t.name),3)],40,lv))),128))])]))),128)),V.value?Object(n["createCommentVNode"])("",!0):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",cv))],2)):Object(n["createCommentVNode"])("",!0)],64))),64))]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"element-animation-btn",onClick:l[1]||(l[1]=e=>E.value="")},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(o,{style:{"margin-right":"5px"}}),Object(n["createTextVNode"])(" 添加动画 ")]),_:1})]),_:1},8,["visible"])])):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",nv,[Object(n["createVNode"])(a,{style:{"margin-right":"5px"}}),Object(n["createTextVNode"])(" 选中画布中的元素添加动画")])),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(Object(n["unref"])(Mu.a),{class:"animation-sequence",modelValue:Object(n["unref"])(v),animation:300,scroll:!0,scrollSensitivity:50,handle:".sequence-content",onEnd:g,itemKey:"id"},{item:Object(n["withCtx"])(({element:e})=>{var l,c;return[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["sequence-item",[e.type,{active:(null===(l=Object(n["unref"])(i))||void 0===l?void 0:l.id)===e.elId}]])},[Object(n["createElementVNode"])("div",ov,[Object(n["createElementVNode"])("div",av,Object(n["toDisplayString"])(e.index),1),Object(n["createElementVNode"])("div",rv,"【"+Object(n["toDisplayString"])(e.elType)+"】"+Object(n["toDisplayString"])(e.animationEffect),1),Object(n["createElementVNode"])("div",iv,[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"预览"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(r,{class:"handler-btn",onClick:t=>x(e.elId,e.effect,e.duration)},null,8,["onClick"])]),_:2},1032,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(s,{class:"handler-btn",onClick:t=>y(e.id)},null,8,["onClick"])]),_:2},1032,["mouseEnterDelay"])])]),(null===(c=Object(n["unref"])(h)[0])||void 0===c?void 0:c.elId)===e.elId?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",sv,[Object(n["createVNode"])(Object(n["unref"])(ui["a"]),{style:{margin:"16px 0"}}),Object(n["createElementVNode"])("div",dv,[uv,Object(n["createVNode"])(Object(n["unref"])(jd["a"]),{min:500,max:3e3,step:500,value:e.duration,onChange:t=>k(e.id,t),style:{flex:"5"}},null,8,["value","onChange"])]),Object(n["createElementVNode"])("div",bv,[Ov,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{value:e.trigger,onChange:t=>C(e.id,t),style:{flex:"5"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),{value:"click"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("主动触发")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{value:"meantime"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("与上一动画同时")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{value:"auto"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("上一动画之后")]),_:1})]),_:2},1032,["value","onChange"])]),Object(n["createElementVNode"])("div",mv,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:t=>S(e.id)},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("更换动画")]),_:2},1032,["onClick"])])])):Object(n["createCommentVNode"])("",!0)],2)]}),_:1},8,["modelValue"])])}}});l("3650");const fv=Yt()(pv,[["__scopeId","data-v-7a134147"]]);var jv=fv;const vv=[{background:"#ffffff",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#5b9bd5","#ed7d31","#a5a5a5","#ffc000","#4472c4","#70ad47"]},{background:"#ffffff",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#83992a","#3c9670","#44709d","#a23b32","#d87728","#deb340"]},{background:"#ffffff",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#e48312","#bd582c","#865640","#9b8357","#c2bc80","#94a088"]},{background:"#ffffff",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#bdc8df","#003fa9","#f5ba00","#ff7567","#7676d9","#923ffc"]},{background:"#ffffff",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#90c225","#54a121","#e6b91e","#e86618","#c42f19","#918756"]},{background:"#ffffff",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#1cade4","#2683c6","#27ced7","#42ba97","#3e8853","#62a39f"]},{background:"#e9efd6",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#a5300f","#de7e18","#9f8351","#728653","#92aa4c","#6aac91"]},{background:"#17444e",fontColor:"#ffffff",fontname:"Microsoft Yahei",colors:["#b01513","#ea6312","#e6b729","#6bab90","#55839a","#9e5d9d"]},{background:"#36234d",fontColor:"#ffffff",fontname:"Microsoft Yahei",colors:["#b31166","#e33d6f","#e45f3c","#e9943a","#9b6bf2","#d63cd0"]},{background:"#247fad",fontColor:"#ffffff",fontname:"Microsoft Yahei",colors:["#052f61","#a50e82","#14967c","#6a9e1f","#e87d37","#c62324"]},{background:"#103f55",fontColor:"#ffffff",fontname:"Microsoft Yahei",colors:["#40aebd","#97e8d5","#a1cf49","#628f3e","#f2df3a","#fcb01c"]},{background:"#242367",fontColor:"#ffffff",fontname:"Microsoft Yahei",colors:["#ac3ec1","#477bd1","#46b298","#90ba4c","#dd9d31","#e25345"]},{background:"#e4b75e",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#f0a22e","#a5644e","#b58b80","#c3986d","#a19574","#c17529"]},{background:"#333333",fontColor:"#ffffff",fontname:"Microsoft Yahei",colors:["#bdc8df","#003fa9","#f5ba00","#ff7567","#7676d9","#923ffc"]}];var hv=()=>{const e=T(),{slides:t,currentSlide:l,theme:c}=Object(o["c"])(e),{addHistorySnapshot:n}=Te(),a=e=>{const t=[];for(const l of e.elements){if("shape"===l.type&&0!==I()(l.fill).getAlpha()){const e=I()(l.fill).toRgbString();t.includes(e)||t.push(e)}if("text"===l.type&&l.fill&&0!==I()(l.fill).getAlpha()){const e=I()(l.fill).toRgbString();t.includes(e)||t.push(e)}if("table"===l.type&&l.theme&&0!==I()(l.theme.color).getAlpha()){const e=I()(l.theme.color).toRgbString();t.includes(e)||t.push(e)}if("chart"===l.type&&l.fill&&0!==I()(l.fill).getAlpha()){const e=I()(l.fill).toRgbString();t.includes(e)||t.push(e)}if("line"===l.type&&0!==I()(l.color).getAlpha()){const e=I()(l.color).toRgbString();t.includes(e)||t.push(e)}if("audio"===l.type&&0!==I()(l.color).getAlpha()){const e=I()(l.color).toRgbString();t.includes(e)||t.push(e)}}return t},r=(e,t)=>{const l=a(e),c={};if(l.length>t.length){const e=I()(t[0]).analogous(l.length-t.length+10),c=e.map(e=>e.toHexString()).slice(1);t.push(...c)}for(let n=0;n{const l=r(e,t.colors);e.background&&"image"===e.background.type||(e.background={type:"solid",color:t.background});for(const c of e.elements){if("shape"===c.type&&(c.fill=l[I()(c.fill).toRgbString()]||c.fill,c.gradient&&delete c.gradient),"text"===c.type&&(c.fill&&(c.fill=l[I()(c.fill).toRgbString()]||c.fill),c.defaultColor=t.fontColor,c.defaultFontName=t.fontname),"table"===c.type){c.theme&&(c.theme.color=l[I()(c.theme.color).toRgbString()]||c.theme.color);for(const e of c.data)for(const l of e)l.style&&(l.style.color=t.fontColor,l.style.fontname=t.fontname)}"chart"===c.type&&(c.themeColor=[l[I()(c.themeColor[0]).toRgbString()]]||!1,c.gridColor=t.fontColor),"line"===c.type&&(c.color=l[I()(c.color).toRgbString()]||c.color),"audio"===c.type&&(c.color=l[I()(c.color).toRgbString()]||c.color),"latex"===c.type&&(c.color=t.fontColor)}},s=t=>{const c=JSON.parse(JSON.stringify(l.value));i(c,t),e.updateSlide({background:c.background,elements:c.elements}),n()},d=l=>{const c=JSON.parse(JSON.stringify(t.value));for(const e of c)i(e,l);e.setTheme({backgroundColor:l.background,themeColor:l.colors[0],fontColor:l.fontColor,fontName:l.fontname}),e.setSlides(c),n()},u=()=>{const l=JSON.parse(JSON.stringify(t.value)),{themeColor:o,backgroundColor:a,fontColor:r,fontName:i}=c.value;for(const e of l){e.background&&"image"===e.background.type||(e.background={type:"solid",color:a});for(const t of e.elements)if("shape"===t.type)t.fill=o;else if("line"===t.type)t.color=o;else if("text"===t.type)t.defaultColor=r,t.defaultFontName=i,t.fill&&(t.fill=o);else if("table"===t.type){t.theme&&(t.theme.color=o);for(const e of t.data)for(const t of e)t.style&&(t.style.color=r,t.style.fontname=i)}else"chart"===t.type?(t.themeColor=[o],t.gridColor=r):"latex"===t.type?t.color=r:"audio"===t.type&&(t.color=o)}e.setSlides(l),n()};return{applyPresetThemeToSingleSlide:s,applyPresetThemeToAllSlides:d,applyThemeToAllSlides:u}};const yv=e=>(Object(n["pushScopeId"])("data-v-93e8361c"),e=e(),Object(n["popScopeId"])(),e),gv={class:"slide-design-panel"},xv=yv(()=>Object(n["createElementVNode"])("div",{class:"title"},"背景填充",-1)),kv={class:"row"},Cv=yv(()=>Object(n["createElementVNode"])("div",{style:{flex:"1"}},null,-1)),Nv={key:0,class:"background-image-wrapper"},Ev={class:"background-image"},wv={key:1,class:"background-gradient-wrapper"},Vv={class:"row"},Iv=yv(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"起点颜色:",-1)),Sv={class:"row"},Lv=yv(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"终点颜色:",-1)),Bv={key:0,class:"row"},_v=yv(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"渐变角度:",-1)),Tv={class:"row"},Mv={class:"row"},Dv=yv(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"画布尺寸:",-1)),zv=yv(()=>Object(n["createElementVNode"])("div",{class:"title"},"全局主题",-1)),Fv={class:"row"},Av=yv(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"字体:",-1)),$v={class:"row"},Rv=yv(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"字体颜色:",-1)),Pv={class:"row"},Hv=yv(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"背景颜色:",-1)),qv={class:"row"},Uv=yv(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"主题色:",-1)),Gv={class:"row"},Xv=yv(()=>Object(n["createElementVNode"])("div",{class:"title"},"预置主题",-1)),Yv={class:"theme-list"},Zv={class:"theme-item-content"},Wv={class:"colors"},Jv={class:"btns"},Kv=["onClick"],Qv=["onClick"];var eh=Object(n["defineComponent"])({__name:"SlideDesignPanel",setup(e){const{OptGroup:t,Option:l}=Ci["a"],c=T(),{availableFonts:a}=Object(o["c"])(z()),{slides:r,currentSlide:s,viewportRatio:d,theme:u}=Object(o["c"])(c),b=Object(n["computed"])(()=>s.value.background?s.value.background:{type:"solid",value:"#fff"}),{addHistorySnapshot:O}=Te(),{applyPresetThemeToSingleSlide:m,applyPresetThemeToAllSlides:p,applyThemeToAllSlides:f}=hv(),j=e=>{if("solid"===e){const e={...b.value,type:"solid",color:b.value.color||"#fff"};c.updateSlide({background:e})}else if("image"===e){const e={...b.value,type:"image",image:b.value.image||"",imageSize:b.value.imageSize||"cover"};c.updateSlide({background:e})}else{const e={...b.value,type:"gradient",gradientType:b.value.gradientType||"linear",gradientColor:b.value.gradientColor||["#fff","#fff"],gradientRotate:b.value.gradientRotate||0};c.updateSlide({background:e})}O()},v=e=>{c.updateSlide({background:{...b.value,...e}}),O()},h=e=>{const t=e[0];t&&we(t).then(e=>v({image:e}))},y=()=>{const e=r.value.map(e=>({...e,background:s.value.background}));c.setSlides(e),O()},g=e=>{c.setTheme(e)},x=e=>{c.setViewportRatio(e)};return(e,c)=>{const o=Object(n["resolveComponent"])("IconPlus");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",gv,[xv,Object(n["createElementVNode"])("div",kv,[Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"10"},value:Object(n["unref"])(b).type,onChange:c[0]||(c[0]=e=>j(e))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"solid"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("纯色填充")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(l),{value:"image"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("图片填充")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(l),{value:"gradient"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("渐变填充")]),_:1})]),_:1},8,["value"]),Cv,"solid"===Object(n["unref"])(b).type?(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(Rs["a"]),{key:0,trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(b).color,"onUpdate:modelValue":c[1]||(c[1]=e=>v({color:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:Object(n["unref"])(b).color||"#fff",style:{flex:"10"}},null,8,["color"])]),_:1})):"image"===Object(n["unref"])(b).type?(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(Ci["a"]),{key:1,style:{flex:"10"},value:Object(n["unref"])(b).imageSize||"cover",onChange:c[2]||(c[2]=e=>v({imageSize:e}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"contain"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("缩放")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(l),{value:"repeat"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("拼贴")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(l),{value:"cover"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("缩放铺满")]),_:1})]),_:1},8,["value"])):(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(Ci["a"]),{key:2,style:{flex:"10"},value:Object(n["unref"])(b).gradientType,onChange:c[3]||(c[3]=e=>v({gradientType:e}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"linear"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("线性渐变")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(l),{value:"radial"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("径向渐变")]),_:1})]),_:1},8,["value"]))]),"image"===Object(n["unref"])(b).type?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Nv,[Object(n["createVNode"])(el,{onChange:c[4]||(c[4]=e=>h(e))},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",Ev,[Object(n["createElementVNode"])("div",{class:"content",style:Object(n["normalizeStyle"])({backgroundImage:`url(${Object(n["unref"])(b).image})`})},[Object(n["createVNode"])(o)],4)])]),_:1})])):Object(n["createCommentVNode"])("",!0),"gradient"===Object(n["unref"])(b).type?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",wv,[Object(n["createElementVNode"])("div",Vv,[Iv,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(b).gradientColor[0],"onUpdate:modelValue":c[5]||(c[5]=e=>v({gradientColor:[e,Object(n["unref"])(b).gradientColor[1]]}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:Object(n["unref"])(b).gradientColor[0],style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createElementVNode"])("div",Sv,[Lv,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(b).gradientColor[1],"onUpdate:modelValue":c[6]||(c[6]=e=>v({gradientColor:[Object(n["unref"])(b).gradientColor[0],e]}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:Object(n["unref"])(b).gradientColor[1],style:{flex:"3"}},null,8,["color"])]),_:1})]),"linear"===Object(n["unref"])(b).gradientType?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Bv,[_v,Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"slider",min:0,max:360,step:15,value:Object(n["unref"])(b).gradientRotate,onChange:c[7]||(c[7]=e=>v({gradientRotate:e}))},null,8,["value"])])):Object(n["createCommentVNode"])("",!0)])):Object(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("div",Tv,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:c[8]||(c[8]=e=>y())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("应用背景到全部")]),_:1})]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createElementVNode"])("div",Mv,[Dv,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:Object(n["unref"])(d),onChange:c[9]||(c[9]=e=>x(e))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:.5625},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("宽屏 16 : 9")]),_:1},8,["value"]),Object(n["createVNode"])(Object(n["unref"])(l),{value:.625},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("宽屏 16 : 10")]),_:1},8,["value"]),Object(n["createVNode"])(Object(n["unref"])(l),{value:.75},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("标准 4 : 3")]),_:1},8,["value"]),Object(n["createVNode"])(Object(n["unref"])(l),{value:.70710678},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("纸张 A3 / A4")]),_:1},8,["value"])]),_:1},8,["value"])]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),zv,Object(n["createElementVNode"])("div",Fv,[Av,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:Object(n["unref"])(u).fontName,onChange:c[10]||(c[10]=e=>g({fontName:e}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),{label:"系统字体"},{default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(a),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(l),{key:e.value,value:e.value},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("span",{style:Object(n["normalizeStyle"])({fontFamily:e.value})},Object(n["toDisplayString"])(e.label),5)]),_:2},1032,["value"]))),128))]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{label:"在线字体"},{default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(i),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(l),{key:e.value,value:e.value},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.label),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["value"])]),Object(n["createElementVNode"])("div",$v,[Rv,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(u).fontColor,"onUpdate:modelValue":c[11]||(c[11]=e=>g({fontColor:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:Object(n["unref"])(u).fontColor,style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createElementVNode"])("div",Pv,[Hv,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(u).backgroundColor,"onUpdate:modelValue":c[12]||(c[12]=e=>g({backgroundColor:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:Object(n["unref"])(u).backgroundColor,style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createElementVNode"])("div",qv,[Uv,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(u).themeColor,"onUpdate:modelValue":c[13]||(c[13]=e=>g({themeColor:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:Object(n["unref"])(u).themeColor,style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createElementVNode"])("div",Gv,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:c[14]||(c[14]=e=>Object(n["unref"])(f)())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("应用主题到全部")]),_:1})]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Xv,Object(n["createElementVNode"])("div",Yv,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(vv),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"theme-item",key:t,style:Object(n["normalizeStyle"])({backgroundColor:e.background,fontFamily:e.fontname})},[Object(n["createElementVNode"])("div",Zv,[Object(n["createElementVNode"])("div",{class:"text",style:Object(n["normalizeStyle"])({color:e.fontColor})},"文字 Aa",4),Object(n["createElementVNode"])("div",Wv,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.colors,(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"color-block",key:t,style:Object(n["normalizeStyle"])({backgroundColor:e})},null,4))),128))]),Object(n["createElementVNode"])("div",Jv,[Object(n["createElementVNode"])("div",{class:"btn",onClick:t=>Object(n["unref"])(m)(e)},"应用",8,Kv),Object(n["createElementVNode"])("div",{class:"btn",onClick:t=>Object(n["unref"])(p)(e)},"应用全局",8,Qv)])])],4))),128))])])}}});l("09e8");const th=Yt()(eh,[["__scopeId","data-v-93e8361c"]]);var lh=th;const ch={class:"slide-animation-panel"},nh={class:"animation-pool"},oh=["onClick"],ah={class:"animation-text"};var rh=Object(n["defineComponent"])({__name:"SlideAnimationPanel",setup(e){const t=T(),{slides:l,currentSlide:c}=Object(o["c"])(t),a=Object(n["computed"])(()=>c.value.turningMode||"slideY"),r=[{label:"无",value:"no"},{label:"淡入淡出",value:"fade"},{label:"左右推移",value:"slideX"},{label:"上下推移",value:"slideY"}],{addHistorySnapshot:i}=Te(),s=e=>{e!==a.value&&(t.updateSlide({turningMode:e}),i())},d=()=>{const e=l.value.map(e=>({...e,turningMode:c.value.turningMode}));t.setSlides(e),i()};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ch,[Object(n["createElementVNode"])("div",nh,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(r,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["animation-item",{active:Object(n["unref"])(a)===e.value}]),key:e.label,onClick:t=>s(e.value)},[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["animation-block",e.value])},null,2),Object(n["createElementVNode"])("div",ah,Object(n["toDisplayString"])(e.label),1)],10,oh)),64))]),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{width:"100%"},onClick:t[0]||(t[0]=e=>d())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("应用到全部")]),_:1})]))}});l("7d40");const ih=Yt()(rh,[["__scopeId","data-v-c4273212"]]);var sh=ih,dh=()=>{const e=T(),{activeElementIdList:t,activeElementList:l}=Object(o["c"])(z()),{currentSlide:c}=Object(o["c"])(e),{addHistorySnapshot:n}=Te(),a=o=>{const{minX:a,maxX:r,minY:i,maxY:s}=he(l.value),d=JSON.parse(JSON.stringify(c.value.elements)),u={};for(const e of l.value)if(e.groupId&&!u[e.groupId]){const t=l.value.filter(t=>t.groupId===e.groupId);u[e.groupId]=he(t)}if(o===J.LEFT)d.forEach(e=>{if(t.value.includes(e.id))if(e.groupId){const t=u[e.groupId],l=t.minX-a;e.left=e.left-l}else if("rotate"in e&&e.rotate){const{offsetX:t}=je({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate});e.left=a-t}else e.left=a});else if(o===J.RIGHT)d.forEach(e=>{if(t.value.includes(e.id))if(e.groupId){const t=u[e.groupId],l=t.maxX-r;e.left=e.left-l}else{const t="line"===e.type?Math.max(e.start[0],e.end[0]):e.width;if("rotate"in e&&e.rotate){const{offsetX:l}=je({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate});e.left=r-t+l}else e.left=r-t}});else if(o===J.TOP)d.forEach(e=>{if(t.value.includes(e.id))if(e.groupId){const t=u[e.groupId],l=t.minY-i;e.top=e.top-l}else if("rotate"in e&&e.rotate){const{offsetY:t}=je({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate});e.top=i-t}else e.top=i});else if(o===J.BOTTOM)d.forEach(e=>{if(t.value.includes(e.id))if(e.groupId){const t=u[e.groupId],l=t.maxY-s;e.top=e.top-l}else{const t="line"===e.type?Math.max(e.start[1],e.end[1]):e.height;if("rotate"in e&&e.rotate){const{offsetY:l}=je({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate});e.top=s-t+l}else e.top=s-t}});else if(o===J.HORIZONTAL){const e=(a+r)/2;d.forEach(l=>{if(t.value.includes(l.id))if(l.groupId){const t=u[l.groupId],c=(t.maxX+t.minX)/2,n=c-e;l.left=l.left-n}else{const t="line"===l.type?Math.max(l.start[0],l.end[0]):l.width;l.left=e-t/2}})}else if(o===J.VERTICAL){const e=(i+s)/2;d.forEach(l=>{if(t.value.includes(l.id))if(l.groupId){const t=u[l.groupId],c=(t.maxY+t.minY)/2,n=c-e;l.top=l.top-n}else{const t="line"===l.type?Math.max(l.start[1],l.end[1]):l.height;l.top=e-t/2}})}e.updateSlide({elements:d}),n()};return{alignActiveElement:a}},uh=()=>{const e=T(),{activeElementIdList:t,activeElementList:l}=Object(o["c"])(z()),{currentSlide:c}=Object(o["c"])(e),{addHistorySnapshot:a}=Te(),r=Object(n["computed"])(()=>{let e=0;const t=[];for(const c of l.value)c.groupId?t.includes(c.groupId)||(t.push(c.groupId),e+=1):e+=1;return e}),i=()=>{const{minX:n,maxX:o}=he(l.value),r=JSON.parse(JSON.stringify(l.value)),i=JSON.parse(JSON.stringify(c.value.elements)),s=[];let d=[];for(const e of r)if(e.groupId){const t=d.find(t=>t.groupId===e.groupId);t?d=d.map(t=>t.groupId===e.groupId?{...t,els:[...t.els,e]}:t):d.push({groupId:e.groupId,els:[e]})}else{const{minX:t,maxX:l}=ve(e);s.push({min:t,max:l,el:e})}const u=[];for(const e of d){const{minX:t,maxX:l}=he(e.els);u.push({min:t,max:l,els:e.els})}const b=[...s,...u];b.sort((e,t)=>e.min-t.min);let O=0;for(const e of b){const t=e.max-e.min;O+=t}const m=(o-n-O)/(b.length-1),p=[],f=b[0];let j={min:f.min,max:f.max};if("el"in f)p.push({pos:f.min,el:f.el});else for(const e of f.els){const{minX:t}=ve(e);p.push({pos:t,el:e})}for(let e=1;e{const{minY:n,maxY:o}=he(l.value),r=JSON.parse(JSON.stringify(l.value)),i=JSON.parse(JSON.stringify(c.value.elements)),s=[];let d=[];for(const e of r)if(e.groupId){const t=d.find(t=>t.groupId===e.groupId);t?d=d.map(t=>t.groupId===e.groupId?{...t,els:[...t.els,e]}:t):d.push({groupId:e.groupId,els:[e]})}else{const{minY:t,maxY:l}=ve(e);s.push({min:t,max:l,el:e})}const u=[];for(const e of d){const{minY:t,maxY:l}=he(e.els);u.push({min:t,max:l,els:e.els})}const b=[...s,...u];b.sort((e,t)=>e.min-t.min);let O=0;for(const e of b){const t=e.max-e.min;O+=t}const m=(o-n-O)/(b.length-1),p=[],f=b[0];let j={min:f.min,max:f.max};if("el"in f)p.push({pos:f.min,el:f.el});else for(const e of f.els){const{minY:t}=ve(e);p.push({pos:t,el:e})}for(let e=1;e{l.value?a(e):r(e)};return(e,a)=>{const r=Object(n["resolveComponent"])("IconAlignLeft"),b=Object(n["resolveComponent"])("IconAlignHorizontally"),O=Object(n["resolveComponent"])("IconAlignRight"),m=Object(n["resolveComponent"])("IconAlignTop"),p=Object(n["resolveComponent"])("IconAlignVertically"),f=Object(n["resolveComponent"])("IconAlignBottom"),j=Object(n["resolveComponent"])("IconGroup"),v=Object(n["resolveComponent"])("IconUngroup");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",bh,[Object(n["createVNode"])(Object(n["unref"])(t),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:a[0]||(a[0]=e=>u(Object(n["unref"])(J).LEFT))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(r)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"水平居中"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:a[1]||(a[1]=e=>u(Object(n["unref"])(J).HORIZONTAL))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(b)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:a[2]||(a[2]=e=>u(Object(n["unref"])(J).RIGHT))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(O)]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:a[3]||(a[3]=e=>u(Object(n["unref"])(J).TOP))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(m)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"垂直居中"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:a[4]||(a[4]=e=>u(Object(n["unref"])(J).VERTICAL))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(p)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:a[5]||(a[5]=e=>u(Object(n["unref"])(J).BOTTOM))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(f)]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["unref"])(i)>2?(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(t),{key:0,class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:a[6]||(a[6]=e=>Object(n["unref"])(s)())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("水平均匀分布")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:a[7]||(a[7]=e=>Object(n["unref"])(d)())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("垂直均匀分布")]),_:1})]),_:1})):Object(n["createCommentVNode"])("",!0),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{disabled:!Object(n["unref"])(l),onClick:a[8]||(a[8]=e=>Object(n["unref"])(c)()),style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(j,{style:{"margin-right":"3px"}}),Object(n["createTextVNode"])("组合")]),_:1},8,["disabled"]),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{disabled:Object(n["unref"])(l),onClick:a[9]||(a[9]=e=>Object(n["unref"])(o)()),style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(v,{style:{"margin-right":"3px"}}),Object(n["createTextVNode"])("取消组合")]),_:1},8,["disabled"])]),_:1})])}}});l("9bc1");const mh=Yt()(Oh,[["__scopeId","data-v-c88d31ba"]]);var ph=mh;const fh=[{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:["▢","▣","▤","▥","▦","▧","▨","▩","▭","▮","▯","▰","▱","▲","▷","▼","◁","◈","◉","◍","◐","◑","◒","◓","◔","◕","◧","◨","◩","◪","◫","◬","◭","◮"]}],jh={class:"symbol-panel"},vh={class:"tabs"},hh=["onClick"],yh={class:"pool"},gh=["onClick"],xh={class:"symbol"};var kh=Object(n["defineComponent"])({__name:"SymbolPanel",setup(e){const t=Object(n["ref"])(fh[0].key),l=Object(n["computed"])(()=>{const e=fh.find(e=>e.key===t.value);return(null===e||void 0===e?void 0:e.children)||[]}),c=e=>{yn.emit(jn.RICH_TEXT_COMMAND,{action:{command:"insert",value:e}})};return(e,o)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",jh,[Object(n["createElementVNode"])("div",vh,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(fh),e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["tab",{active:t.value===e.key}]),key:e.key,onClick:l=>t.value=e.key},Object(n["toDisplayString"])(e.label),11,hh))),128))]),Object(n["createElementVNode"])("div",yh,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(l),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"symbol-item",key:t,onClick:t=>c(e)},[Object(n["createElementVNode"])("div",xh,Object(n["toDisplayString"])(e),1)],8,gh))),128))])]))}});l("1126");const Ch=Yt()(kh,[["__scopeId","data-v-ba0c96fc"]]);var Nh=Ch;const Eh={class:"toolbar"},wh={class:"tabs"},Vh=["onClick"],Ih={class:"content"};var Sh=Object(n["defineComponent"])({__name:"index",setup(e){const t=z(),{activeElementIdList:l,handleElement:a,toolbarState:r}=Object(o["c"])(t),i=Object(n["computed"])(()=>{var e;return"text"===(null===(e=a.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}]}),s=[{label:"设计",value:c.SLIDE_DESIGN},{label:"切换",value:c.SLIDE_ANIMATION},{label:"动画",value:c.EL_ANIMATION}],d=[{label:"样式",value:c.EL_STYLE},{label:"位置",value:c.MULTI_POSITION}],u=e=>{t.setToolbarState(e)},b=Object(n["computed"])(()=>l.value.length?l.value.length>1?d:i.value:s);Object(n["watch"])(b,()=>{const e=b.value.map(e=>e.value);e.includes(r.value)||t.setToolbarState(e[0])});const O=Object(n["computed"])(()=>{const e={[c.EL_STYLE]:Ij,[c.EL_POSITION]:Pj,[c.EL_ANIMATION]:jv,[c.SLIDE_DESIGN]:lh,[c.SLIDE_ANIMATION]:sh,[c.MULTI_POSITION]:ph,[c.SYMBOL]:Nh};return e[r.value]||null});return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Eh,[Object(n["createElementVNode"])("div",wh,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(b),e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["tab",{active:e.value===Object(n["unref"])(r)}]),key:e.value,onClick:t=>u(e.value)},Object(n["toDisplayString"])(e.label),11,Vh))),128))]),Object(n["createElementVNode"])("div",Ih,[(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["resolveDynamicComponent"])(Object(n["unref"])(O))))])]))}});l("cd7e");const Lh=Yt()(Sh,[["__scopeId","data-v-5303bd17"]]);var Bh=Lh;const _h={class:"remark"},Th=["value"];var Mh=Object(n["defineComponent"])({__name:"index",props:{height:{type:Number,required:!0}},emits:["update:height"],setup(e,{emit:t}){const l=e,c=T(),{currentSlide:a}=Object(o["c"])(c),r=Object(n["computed"])(()=>{var e;return(null===(e=a.value)||void 0===e?void 0:e.remark)||""}),i=e=>{const t=e.target.value;c.updateSlide({remark:t})},s=e=>{let c=!0;const n=e.pageY,o=l.height;document.onmousemove=e=>{if(!c)return;const l=e.pageY,a=l-n;let r=-a+o;r<40&&(r=40),r>120&&(r=120),t("update:height",r)},document.onmouseup=()=>{c=!1,document.onmousemove=null,document.onmouseup=null}};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",_h,[Object(n["createElementVNode"])("div",{class:"resize-handler",onMousedown:t[0]||(t[0]=e=>s(e))},null,32),Object(n["createElementVNode"])("textarea",{value:Object(n["unref"])(r),placeholder:"点击输入演讲者备注",onInput:t[1]||(t[1]=e=>i(e))},null,40,Th)]))}});l("ec27");const Dh=Yt()(Mh,[["__scopeId","data-v-82b674f6"]]);var zh=Dh;const Fh=e=>(Object(n["pushScopeId"])("data-v-5a56d59c"),e=e(),Object(n["popScopeId"])(),e),Ah={key:0,class:"fullscreen-spin"},$h={class:"spin"},Rh=Fh(()=>Object(n["createElementVNode"])("div",{class:"spinner"},null,-1)),Ph={class:"text"};var Hh=Object(n["defineComponent"])({__name:"FullscreenSpin",props:{loading:{type:Boolean,default:!1},tip:{type:String,default:""}},setup(e){return(t,l)=>e.loading?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ah,[Object(n["createElementVNode"])("div",$h,[Rh,Object(n["createElementVNode"])("div",Ph,Object(n["toDisplayString"])(e.tip),1)])])):Object(n["createCommentVNode"])("",!0)}});l("cf16");const qh=Yt()(Hh,[["__scopeId","data-v-5a56d59c"]]);var Uh=qh;const Gh=e=>(Object(n["pushScopeId"])("data-v-92a8f63e"),e=e(),Object(n["popScopeId"])(),e),Xh={class:"export-img-dialog"},Yh={class:"thumbnails-view"},Zh={class:"configs"},Wh={class:"row"},Jh=Gh(()=>Object(n["createElementVNode"])("div",{class:"title"},"导出格式:",-1)),Kh={class:"row"},Qh=Gh(()=>Object(n["createElementVNode"])("div",{class:"title"},"导出范围:",-1)),ey={key:0,class:"row"},ty=["data-range"],ly={class:"row"},cy=Gh(()=>Object(n["createElementVNode"])("div",{class:"title"},"图片质量:",-1)),ny={class:"row"},oy=Gh(()=>Object(n["createElementVNode"])("div",{class:"title"},"忽略在线字体:",-1)),ay={class:"config-item"},ry={class:"btns"};var iy=Object(n["defineComponent"])({__name:"ExportImage",emits:["close"],setup(e,{emit:t}){const{Group:l,Button:c}=Yu["a"],{slides:a,currentSlide:r}=Object(o["c"])(T()),i=Object(n["ref"])(),s=Object(n["ref"])("all"),d=Object(n["ref"])([1,a.value.length]),u=Object(n["ref"])("jpeg"),b=Object(n["ref"])(1),O=Object(n["ref"])(!0),m=Object(n["computed"])(()=>"all"===s.value?a.value:"current"===s.value?[r.value]:a.value.filter((e,t)=>{const[l,c]=d.value;return t>=l-1&&t<=c-1})),{exportImage:p,exporting:f}=Rt(),j=()=>{i.value&&p(i.value,u.value,b.value,O.value)};return(e,o)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Xh,[Object(n["createElementVNode"])("div",Yh,[Object(n["createElementVNode"])("div",{class:"thumbnails",ref_key:"imageThumbnailsRef",ref:i},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(m),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(Ns,{class:"thumbnail",key:e.id,slide:e,size:1600},null,8,["slide"]))),128))],512)]),Object(n["createElementVNode"])("div",Zh,[Object(n["createElementVNode"])("div",Wh,[Jh,Object(n["createVNode"])(Object(n["unref"])(l),{class:"config-item",value:u.value,"onUpdate:value":o[0]||(o[0]=e=>u.value=e)},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"50%"},value:"jpeg"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("JPEG")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"50%"},value:"png"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("PNG")]),_:1})]),_:1},8,["value"])]),Object(n["createElementVNode"])("div",Kh,[Qh,Object(n["createVNode"])(Object(n["unref"])(l),{class:"config-item",value:s.value,"onUpdate:value":o[1]||(o[1]=e=>s.value=e)},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"33.33%"},value:"all"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("全部")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"33.33%"},value:"current"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("当前页")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"33.33%"},value:"custom"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("自定义")]),_:1})]),_:1},8,["value"])]),"custom"===s.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ey,[Object(n["createElementVNode"])("div",{class:"title","data-range":`(${d.value[0]} ~ ${d.value[1]})`},"自定义范围:",8,ty),Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"config-item",range:"",min:1,max:Object(n["unref"])(a).length,step:1,value:d.value,"onUpdate:value":o[2]||(o[2]=e=>d.value=e)},null,8,["max","value"])])):Object(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("div",ly,[cy,Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"config-item",min:0,max:1,step:.1,value:b.value,"onUpdate:value":o[3]||(o[3]=e=>b.value=e)},null,8,["step","value"])]),Object(n["createElementVNode"])("div",ny,[oy,Object(n["createElementVNode"])("div",ay,[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"导出时默认忽略在线字体,若您在幻灯片中使用了在线字体,且希望导出后保留相关样式,可选择关闭【忽略在线字体】选项,但要注意这将会增加导出用时。"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(nb["a"]),{checked:O.value,"onUpdate:checked":o[4]||(o[4]=e=>O.value=e)},null,8,["checked"])]),_:1},8,["mouseEnterDelay"])])])]),Object(n["createElementVNode"])("div",ry,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn export",type:"primary",onClick:o[5]||(o[5]=e=>j())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("导出图片")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn close",onClick:o[6]||(o[6]=e=>t("close"))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("关闭")]),_:1})]),Object(n["createVNode"])(Uh,{loading:Object(n["unref"])(f),tip:"正在导出..."},null,8,["loading"])]))}});l("700f");const sy=Yt()(iy,[["__scopeId","data-v-92a8f63e"]]);var dy=sy;const uy={class:"export-json-dialog"},by={class:"preview"},Oy={class:"btns"};var my=Object(n["defineComponent"])({__name:"ExportJSON",emits:["close"],setup(e,{emit:t}){const{slides:l}=Object(o["c"])(T()),{exportJSON:c}=Rt();return(e,o)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",uy,[Object(n["createElementVNode"])("div",by,[Object(n["createElementVNode"])("pre",null,Object(n["toDisplayString"])(Object(n["unref"])(l)),1)]),Object(n["createElementVNode"])("div",Oy,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn export",type:"primary",onClick:o[0]||(o[0]=e=>Object(n["unref"])(c)())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("导出 JSON")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn close",onClick:o[1]||(o[1]=e=>t("close"))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("关闭")]),_:1})])]))}});l("862c");const py=Yt()(my,[["__scopeId","data-v-0cc0995e"]]);var fy=py;const jy=()=>{const 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},vy=(e,t,l)=>{const c="";let n="";const o=document.styleSheets;if(o)for(const u of o)if(u.cssRules)for(const e of u.cssRules)n+=e.cssText;const{width:a,height:r,margin:i}=l,s=`\n \n \n \n `,d=""+t.innerHTML+"";e.open(),e.write(`\n ${c}\n \n ${s}\n ${d}\n \n `),e.close()},hy=(e,t)=>{const l=jy(),c=l.contentWindow;if(!l.contentDocument||!c)return;vy(l.contentDocument,e,t);const n=()=>{c.focus(),c.print()},o=()=>{l.removeEventListener("load",n),c.removeEventListener("afterprint",o),document.body.removeChild(l)};l.addEventListener("load",n),c.addEventListener("afterprint",o)},yy=e=>(Object(n["pushScopeId"])("data-v-527855fb"),e=e(),Object(n["popScopeId"])(),e),gy={class:"export-pdf-dialog"},xy={class:"thumbnails-view"},ky={class:"configs"},Cy={class:"row"},Ny=yy(()=>Object(n["createElementVNode"])("div",{class:"title"},"导出范围:",-1)),Ey={class:"row"},wy=yy(()=>Object(n["createElementVNode"])("div",{class:"title"},"每页数量:",-1)),Vy={class:"row"},Iy=yy(()=>Object(n["createElementVNode"])("div",{class:"title"},"边缘留白:",-1)),Sy={class:"config-item"},Ly=yy(()=>Object(n["createElementVNode"])("div",{class:"tip"}," 注意:若打印预览与实际样式不一致,请在弹出的打印窗口中勾选【背景图形】选项。 ",-1)),By={class:"btns"};var _y=Object(n["defineComponent"])({__name:"ExportPDF",emits:["close"],setup(e,{emit:t}){const{Group:l,Button:c}=Yu["a"],a=Ci["a"].Option,{slides:r,currentSlide:i,viewportRatio:s}=Object(o["c"])(T()),d=Object(n["ref"])(),u=Object(n["ref"])("all"),b=Object(n["ref"])(1),O=Object(n["ref"])(!0),m=()=>{if(!d.value)return;const e={width:1600,height:"all"===u.value?1600*s.value*b.value:1600*s.value,margin:O.value?50:0};hy(d.value,e)};return(e,o)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",gy,[Object(n["createElementVNode"])("div",xy,[Object(n["createElementVNode"])("div",{class:"thumbnails",ref_key:"pdfThumbnailsRef",ref:d},["current"===u.value?(Object(n["openBlock"])(),Object(n["createBlock"])(Ns,{key:0,class:"thumbnail",slide:Object(n["unref"])(i),size:1600},null,8,["slide"])):(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],{key:1},Object(n["renderList"])(Object(n["unref"])(r),(e,t)=>(Object(n["openBlock"])(),Object(n["createBlock"])(Ns,{class:Object(n["normalizeClass"])(["thumbnail",{"break-page":(t+1)%b.value===0}]),key:e.id,slide:e,size:1600},null,8,["class","slide"]))),128))],512)]),Object(n["createElementVNode"])("div",ky,[Object(n["createElementVNode"])("div",Cy,[Ny,Object(n["createVNode"])(Object(n["unref"])(l),{class:"config-item",value:u.value,"onUpdate:value":o[0]||(o[0]=e=>u.value=e)},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"50%"},value:"all"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("全部幻灯片")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"50%"},value:"current"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("当前幻灯片")]),_:1})]),_:1},8,["value"])]),Object(n["createElementVNode"])("div",Ey,[wy,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{class:"config-item",value:b.value,"onUpdate:value":o[1]||(o[1]=e=>b.value=e)},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(a),{value:1},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("1")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(a),{value:2},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("2")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(a),{value:3},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("3")]),_:1})]),_:1},8,["value"])]),Object(n["createElementVNode"])("div",Vy,[Iy,Object(n["createElementVNode"])("div",Sy,[Object(n["createVNode"])(Object(n["unref"])(nb["a"]),{checked:O.value,"onUpdate:checked":o[2]||(o[2]=e=>O.value=e)},null,8,["checked"])])]),Ly]),Object(n["createElementVNode"])("div",By,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn export",type:"primary",onClick:o[3]||(o[3]=e=>m())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("打印 / 导出 PDF")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn close",onClick:o[4]||(o[4]=e=>t("close"))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("关闭")]),_:1})])]))}});l("7ce8");const Ty=Yt()(_y,[["__scopeId","data-v-527855fb"]]);var My=Ty;const Dy=e=>(Object(n["pushScopeId"])("data-v-018847a8"),e=e(),Object(n["popScopeId"])(),e),zy={class:"export-pptx-dialog"},Fy={class:"configs"},Ay={class:"row"},$y=Dy(()=>Object(n["createElementVNode"])("div",{class:"title"},"导出范围:",-1)),Ry={key:0,class:"row"},Py=["data-range"],Hy={class:"row"},qy=Dy(()=>Object(n["createElementVNode"])("div",{class:"title"},"覆盖默认母版:",-1)),Uy={class:"config-item"},Gy={class:"btns"};var Xy=Object(n["defineComponent"])({__name:"ExportPPTX",emits:["close"],setup(e,{emit:t}){const{Group:l,Button:c}=Yu["a"],{slides:a,currentSlide:r}=Object(o["c"])(T()),{exportPPTX:i,exporting:s}=Rt(),d=Object(n["ref"])("all"),u=Object(n["ref"])([1,a.value.length]),b=Object(n["ref"])(!0),O=Object(n["computed"])(()=>"all"===d.value?a.value:"current"===d.value?[r.value]:a.value.filter((e,t)=>{const[l,c]=u.value;return t>=l-1&&t<=c-1}));return(e,o)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",zy,[Object(n["createElementVNode"])("div",Fy,[Object(n["createElementVNode"])("div",Ay,[$y,Object(n["createVNode"])(Object(n["unref"])(l),{class:"config-item",value:d.value,"onUpdate:value":o[0]||(o[0]=e=>d.value=e)},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"33.33%"},value:"all"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("全部")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"33.33%"},value:"current"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("当前页")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"33.33%"},value:"custom"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("自定义")]),_:1})]),_:1},8,["value"])]),"custom"===d.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ry,[Object(n["createElementVNode"])("div",{class:"title","data-range":`(${u.value[0]} ~ ${u.value[1]})`},"自定义范围:",8,Py),Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"config-item",range:"",min:1,max:Object(n["unref"])(a).length,step:1,value:u.value,"onUpdate:value":o[1]||(o[1]=e=>u.value=e)},null,8,["max","value"])])):Object(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("div",Hy,[qy,Object(n["createElementVNode"])("div",Uy,[Object(n["createVNode"])(Object(n["unref"])(nb["a"]),{checked:b.value,"onUpdate:checked":o[2]||(o[2]=e=>b.value=e)},null,8,["checked"])])])]),Object(n["createElementVNode"])("div",Gy,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn export",type:"primary",onClick:o[3]||(o[3]=e=>Object(n["unref"])(i)(Object(n["unref"])(O),b.value))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("导出 PPTX")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn close",onClick:o[4]||(o[4]=e=>t("close"))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("关闭")]),_:1})]),Object(n["createVNode"])(Uh,{loading:Object(n["unref"])(s),tip:"正在导出..."},null,8,["loading"])]))}});l("9918");const Yy=Yt()(Xy,[["__scopeId","data-v-018847a8"]]);var Zy=Yy;const Wy=e=>(Object(n["pushScopeId"])("data-v-40c1ae3a"),e=e(),Object(n["popScopeId"])(),e),Jy={class:"export-pptist-dialog"},Ky={class:"configs"},Qy={class:"row"},eg=Wy(()=>Object(n["createElementVNode"])("div",{class:"title"},"导出范围:",-1)),tg={key:0,class:"row"},lg=["data-range"],cg=Wy(()=>Object(n["createElementVNode"])("div",{class:"tip"}," 提示:.pptist 是本应用的特有文件后缀,支持将该类型的文件导入回应用中。 ",-1)),ng={class:"btns"};var og=Object(n["defineComponent"])({__name:"ExportSpecificFile",emits:["close"],setup(e,{emit:t}){const{Group:l,Button:c}=Yu["a"],{slides:a,currentSlide:r}=Object(o["c"])(T()),{exportSpecificFile:i}=Rt(),s=Object(n["ref"])("all"),d=Object(n["ref"])([1,a.value.length]),u=Object(n["computed"])(()=>"all"===s.value?a.value:"current"===s.value?[r.value]:a.value.filter((e,t)=>{const[l,c]=d.value;return t>=l-1&&t<=c-1}));return(e,o)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Jy,[Object(n["createElementVNode"])("div",Ky,[Object(n["createElementVNode"])("div",Qy,[eg,Object(n["createVNode"])(Object(n["unref"])(l),{class:"config-item",value:s.value,"onUpdate:value":o[0]||(o[0]=e=>s.value=e)},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"33.33%"},value:"all"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("全部")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"33.33%"},value:"current"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("当前页")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"33.33%"},value:"custom"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("自定义")]),_:1})]),_:1},8,["value"])]),"custom"===s.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",tg,[Object(n["createElementVNode"])("div",{class:"title","data-range":`(${d.value[0]} ~ ${d.value[1]})`},"自定义范围:",8,lg),Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"config-item",range:"",min:1,max:Object(n["unref"])(a).length,step:1,value:d.value,"onUpdate:value":o[1]||(o[1]=e=>d.value=e)},null,8,["max","value"])])):Object(n["createCommentVNode"])("",!0),cg]),Object(n["createElementVNode"])("div",ng,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn export",type:"primary",onClick:o[2]||(o[2]=e=>Object(n["unref"])(i)(Object(n["unref"])(u)))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("导出 .pptist 文件")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn close",onClick:o[3]||(o[3]=e=>t("close"))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("关闭")]),_:1})])]))}});l("3a1b");const ag=Yt()(og,[["__scopeId","data-v-40c1ae3a"]]);var rg=ag;const ig={class:"export-dialog"},sg={class:"tabs"},dg=["onClick"],ug={class:"content"};var bg=Object(n["defineComponent"])({__name:"index",setup(e){const t=z(),{dialogForExport:l}=Object(o["c"])(t),c=t.setDialogForExport,a=[{key:"pptist",label:"导出 pptist 文件"},{key:"pptx",label:"导出 PPTX"},{key:"image",label:"导出图片"},{key:"json",label:"导出 JSON"},{key:"pdf",label:"打印 / 导出 PDF"}],r=Object(n["computed"])(()=>{const e={image:dy,json:fy,pdf:My,pptx:Zy,pptist:rg};return e[l.value]||null});return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ig,[Object(n["createElementVNode"])("div",sg,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(a,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["tab",{active:e.key===Object(n["unref"])(l)}]),key:e.key,onClick:t=>Object(n["unref"])(c)(e.key)},Object(n["toDisplayString"])(e.label),11,dg)),64))]),Object(n["createElementVNode"])("div",ug,[(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["resolveDynamicComponent"])(Object(n["unref"])(r)),{onClose:t[0]||(t[0]=e=>Object(n["unref"])(c)(""))},null,32))])]))}});l("d970");const Og=Yt()(bg,[["__scopeId","data-v-1f8f1a8b"]]);var mg=Og;const pg={class:"title"},fg={class:"content"};var jg=Object(n["defineComponent"])({__name:"MoveablePanel",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},left:{type:Number,default:10},top:{type:Number,default:10},title:{type:String,default:""},moveable:{type:Boolean,default:!0}},emits:["close"],setup(e,{emit:t}){const l=e,c=Object(n["ref"])(0),o=Object(n["ref"])(0);Object(n["onMounted"])(()=>{l.left>=0?c.value=l.left:c.value=document.body.clientWidth+l.left-l.width,l.top>=0?o.value=l.top:o.value=document.body.clientHeight+l.top-l.height});const a=e=>{if(!l.moveable)return;let t=!0;const n=document.body.clientWidth,a=document.body.clientHeight,r=e.pageX,i=e.pageY,s=c.value,d=o.value;document.onmousemove=e=>{if(!t)return;const u=e.pageX-r,b=e.pageY-i;let O=s+u,m=d+b;O<0&&(O=0),m<0&&(m=0),O+l.width>n&&(O=n-l.width),m+l.height>a&&(m=a-l.height),c.value=O,o.value=m},document.onmouseup=()=>{t=!1,document.onmousemove=null,document.onmouseup=null}};return(l,r)=>{const i=Object(n["resolveComponent"])("IconClose");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"moveable-panel",style:Object(n["normalizeStyle"])({width:e.width+"px",height:e.height+"px",left:c.value+"px",top:o.value+"px"})},[e.title?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[Object(n["createElementVNode"])("div",{class:"header",onMousedown:r[1]||(r[1]=e=>a(e))},[Object(n["createElementVNode"])("div",pg,Object(n["toDisplayString"])(e.title),1),Object(n["createElementVNode"])("div",{class:"close-btn",onClick:r[0]||(r[0]=e=>t("close"))},[Object(n["createVNode"])(i)])],32),Object(n["createElementVNode"])("div",fg,[Object(n["renderSlot"])(l.$slots,"default")])],64)):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:1,class:"content",onMousedown:r[2]||(r[2]=e=>a(e))},[Object(n["renderSlot"])(l.$slots,"default")],32))],4)}}});l("1406");const vg=Yt()(jg,[["__scopeId","data-v-68252e2c"]]);var hg=vg;const yg=e=>(Object(n["pushScopeId"])("data-v-64f9ccca"),e=e(),Object(n["popScopeId"])(),e),gg={key:0,class:"handler"},xg={class:"btns"},kg={key:0,class:"icon-btns"},Cg={class:"element-list"},Ng={key:0,class:"group-els"},Eg=yg(()=>Object(n["createElementVNode"])("div",{class:"group-title"},"组合",-1)),wg=["onClick","onDblclick"],Vg=["id","value","onBlur","onKeydown"],Ig={key:1,class:"name"},Sg={class:"icons"},Lg=["onClick","onDblclick"],Bg=["id","value","onBlur","onKeydown"],_g={key:1,class:"name"},Tg={class:"icons"};var Mg=Object(n["defineComponent"])({__name:"SelectPanel",setup(e){const t=T(),l=z(),{currentSlide:c}=Object(o["c"])(t),{handleElement:a,handleElementId:r,activeElementIdList:i,activeGroupElementId:s,hiddenElementIdList:d}=Object(o["c"])(l),{orderElement:u}=Ue(),b=Object(n["computed"])(()=>{const e=[];for(const t of c.value.elements)if(t.groupId){const l=e[e.length-1];l&&"group"===l.type&&l.id&&l.id===t.groupId?l.elements.push(t):e.push({type:"group",id:t.groupId,elements:[t]})}else e.push(t);return e}),O=(e,t)=>{if(r.value===t)return;if(d.value.includes(t))return;const c=e.elements.map(e=>e.id);l.setActiveElementIdList(c),l.setHandleElementId(t),Object(n["nextTick"])(()=>l.setActiveGroupElementId(t))},m=e=>{r.value!==e&&(d.value.includes(e)||l.setActiveElementIdList([e]))},p=e=>{d.value.includes(e)?l.setHiddenElementIdList(d.value.filter(t=>t!==e)):l.setHiddenElementIdList([...d.value,e]),i.value.includes(e)&&l.setActiveElementIdList([])},f=()=>{const e=c.value.elements.map(e=>e.id),t=d.value.filter(t=>!e.includes(t));l.setHiddenElementIdList(t)},j=()=>{const e=c.value.elements.map(e=>e.id);l.setHiddenElementIdList([...d.value,...e]),i.value.length&&l.setActiveElementIdList([])},v=Object(n["ref"])(""),h=(e,l)=>{const c=e.target.value;t.updateElement({id:l,props:{name:c}}),v.value=""},y=e=>{v.value=e,Object(n["nextTick"])(()=>{const t=document.querySelector("#input-"+e);t.focus()})},g=()=>{l.setSelectPanelState(!1)};return(e,t)=>{const l=Object(n["resolveComponent"])("IconDown"),o=Object(n["resolveComponent"])("IconUp"),r=Object(n["resolveComponent"])("IconPreviewClose"),x=Object(n["resolveComponent"])("IconPreviewOpen");return Object(n["openBlock"])(),Object(n["createBlock"])(hg,{class:"select-panel",width:200,height:360,title:`选择(${Object(n["unref"])(i).length}/${Object(n["unref"])(c).elements.length})`,left:-270,top:90,onClose:t[4]||(t[4]=e=>g())},{default:Object(n["withCtx"])(()=>[Object(n["unref"])(b).length?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",gg,[Object(n["createElementVNode"])("div",xg,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{size:"small",style:{"margin-right":"5px"},onClick:t[0]||(t[0]=e=>f())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("全部显示")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{size:"small",onClick:t[1]||(t[1]=e=>j())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("全部隐藏")]),_:1})]),Object(n["unref"])(a)?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",kg,[Object(n["createVNode"])(l,{class:"icon-btn",onClick:t[2]||(t[2]=e=>Object(n["unref"])(u)(Object(n["unref"])(a),Object(n["unref"])(W).UP))}),Object(n["createVNode"])(o,{class:"icon-btn",onClick:t[3]||(t[3]=e=>Object(n["unref"])(u)(Object(n["unref"])(a),Object(n["unref"])(W).DOWN))})])):Object(n["createCommentVNode"])("",!0)])):Object(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("div",Cg,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(b),e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:e.id},["group"===e.type?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ng,[Eg,(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.elements,t=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["item",{active:Object(n["unref"])(i).includes(t.id),"group-active":Object(n["unref"])(s).includes(t.id)}]),key:t.id,onClick:l=>O(e,t.id),onDblclick:e=>y(t.id)},[v.value===t.id?(Object(n["openBlock"])(),Object(n["createElementBlock"])("input",{key:0,id:"input-"+t.id,value:t.name||Object(n["unref"])(El)[t.type],class:"input",type:"text",onBlur:e=>h(e,t.id),onKeydown:Object(n["withKeys"])(e=>h(e,t.id),["enter"])},null,40,Vg)):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ig,Object(n["toDisplayString"])(t.name||Object(n["unref"])(El)[t.type]),1)),Object(n["createElementVNode"])("div",Sg,[Object(n["unref"])(d).includes(t.id)?(Object(n["openBlock"])(),Object(n["createBlock"])(r,{key:0,style:{"font-size":"17px"},onClick:Object(n["withModifiers"])(e=>p(t.id),["stop"])},null,8,["onClick"])):(Object(n["openBlock"])(),Object(n["createBlock"])(x,{key:1,style:{"font-size":"17px"},onClick:Object(n["withModifiers"])(e=>p(t.id),["stop"])},null,8,["onClick"]))])],42,wg))),128))])):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:1,class:Object(n["normalizeClass"])(["item",{active:Object(n["unref"])(i).includes(e.id)}]),onClick:t=>m(e.id),onDblclick:t=>y(e.id)},[v.value===e.id?(Object(n["openBlock"])(),Object(n["createElementBlock"])("input",{key:0,id:"input-"+e.id,value:e.name||Object(n["unref"])(El)[e.type],class:"input",type:"text",onBlur:t=>h(t,e.id),onKeydown:Object(n["withKeys"])(t=>h(t,e.id),["enter"])},null,40,Bg)):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",_g,Object(n["toDisplayString"])(e.name||Object(n["unref"])(El)[e.type]),1)),Object(n["createElementVNode"])("div",Tg,[Object(n["unref"])(d).includes(e.id)?(Object(n["openBlock"])(),Object(n["createBlock"])(r,{key:0,style:{"font-size":"17px"},onClick:Object(n["withModifiers"])(t=>p(e.id),["stop"])},null,8,["onClick"])):(Object(n["openBlock"])(),Object(n["createBlock"])(x,{key:1,style:{"font-size":"17px"},onClick:Object(n["withModifiers"])(t=>p(e.id),["stop"])},null,8,["onClick"]))])],42,Lg))],64))),128))])]),_:1},8,["title"])}}});l("df7d");const Dg=Yt()(Mg,[["__scopeId","data-v-64f9ccca"]]);var zg=Dg;const Fg={class:"pptist-editor"},Ag={class:"layout-content"},$g={class:"layout-content-center"};var Rg=Object(n["defineComponent"])({__name:"index",setup(e){const t=z(),{dialogForExport:l,showSelectPanel:c}=Object(o["c"])(t),a=()=>t.setDialogForExport(""),r=Object(n["ref"])(40);return Je(),Ke(),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,[Object(n["createElementVNode"])("div",Fg,[Object(n["createVNode"])(jl,{class:"layout-header"}),Object(n["createElementVNode"])("div",Ag,[Object(n["createVNode"])(Xu,{class:"layout-content-left"}),Object(n["createElementVNode"])("div",$g,[Object(n["createVNode"])(Bu,{class:"center-top"}),Object(n["createVNode"])($s,{class:"center-body",style:Object(n["normalizeStyle"])({height:`calc(100% - ${r.value+40}px)`})},null,8,["style"]),Object(n["createVNode"])(zh,{class:"center-bottom",height:r.value,"onUpdate:height":t[0]||(t[0]=e=>r.value=e),style:Object(n["normalizeStyle"])({height:r.value+"px"})},null,8,["height","style"])]),Object(n["createVNode"])(Bh,{class:"layout-content-right"})])]),Object(n["unref"])(c)?(Object(n["openBlock"])(),Object(n["createBlock"])(zg,{key:0})):Object(n["createCommentVNode"])("",!0),Object(n["createVNode"])(Object(n["unref"])(le["a"]),{visible:!!Object(n["unref"])(l),footer:null,centered:"",closable:!1,width:680,destroyOnClose:"",onCancel:t[1]||(t[1]=e=>a())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(mg)]),_:1},8,["visible"])],64))}});l("a785");const Pg=Yt()(Rg,[["__scopeId","data-v-ed562e98"]]);var Hg=Pg,qg=()=>{const e=T(),{slides:t,slideIndex:l,formatedAnimations:c}=Object(o["c"])(e),a=Object(n["ref"])(0),r=Object(n["ref"])(!1),i=Object(n["ref"])(l.value),s=()=>{if(r.value)return;const{animations:e,autoNext:t}=c.value[a.value];a.value+=1,r.value=!0;let l=0;for(const c of e){const n=document.querySelector(`#screen-element-${c.elId} [class^=base-element-]`);if(!n){l+=1;continue}const o=`${Uj}${c.effect}`;n.style.removeProperty("--animate-duration");for(const e of n.classList)-1!==e.indexOf(Uj)&&n.classList.remove(e,Uj+"animated");n.style.setProperty("--animate-duration",c.duration+"ms"),n.classList.add(o,Uj+"animated");const a=()=>{"out"!==c.type&&(n.style.removeProperty("--animate-duration"),n.classList.remove(o,Uj+"animated")),l+=1,l===e.length&&(r.value=!1,t&&s())};n.addEventListener("animationend",a,{once:!0})}},d=()=>{a.value-=1;const{animations:e}=c.value[a.value];for(const t of e){const e=document.querySelector(`#screen-element-${t.elId} [class^=base-element-]`);if(e){e.style.removeProperty("--animate-duration");for(const t of e.classList)-1!==t.indexOf(Uj)&&e.classList.remove(t,Uj+"animated")}}e.every(e=>"attention"===e.type)&&m()},u=Object(n["ref"])(0),b=()=>{u.value&&(clearInterval(u.value),u.value=0)};Object(n["onUnmounted"])(b);const O=Object(S["throttle"])((function(e){ne["a"].success(e)}),1e3,{leading:!0,trailing:!1}),m=()=>{c.value.length&&a.value>0?d():l.value>0?(e.updateSlideIndex(l.value-1),l.value{c.value.length&&a.value{b(),ne["a"].success("开始自动放映"),u.value=setInterval(p,2500)},j=Object(S["throttle"])((function(e){e.deltaY<0?m():e.deltaY>0&&p()}),500,{leading:!0,trailing:!1}),v=Object(n["ref"])(null),h=e=>{v.value={x:e.changedTouches[0].pageX,y:e.changedTouches[0].pageY}},y=e=>{if(!v.value)return;const t=Math.abs(v.value.x-e.changedTouches[0].pageX),l=e.changedTouches[0].pageY-v.value.y;Math.abs(l)>t&&Math.abs(l)>50&&(v.value=null,l>0?m():p())},g=e=>{const t=e.key.toUpperCase();t===te.UP||t===te.LEFT||t===te.PAGEUP?m():t!==te.DOWN&&t!==te.RIGHT&&t!==te.SPACE&&t!==te.ENTER&&t!==te.PAGEDOWN||p()};Object(n["onMounted"])(()=>document.addEventListener("keydown",g)),Object(n["onUnmounted"])(()=>document.removeEventListener("keydown",g));const x=()=>{e.updateSlideIndex(l.value-1),a.value=0},k=()=>{e.updateSlideIndex(l.value+1),a.value=0},C=t=>{e.updateSlideIndex(t),a.value=0},N=l=>{const c=t.value.findIndex(e=>e.id===l);-1!==c&&(e.updateSlideIndex(c),a.value=0)};return{autoPlayTimer:u,autoPlay:f,closeAutoPlay:b,mousewheelListener:j,touchStartListener:h,touchEndListener:y,turnPrevSlide:x,turnNextSlide:k,turnSlideToIndex:C,turnSlideToId:N,execPrev:m,execNext:p,animationIndex:a}},Ug=e=>{const t=T(),{viewportRatio:l}=Object(o["c"])(t),c=Object(n["ref"])(0),a=Object(n["ref"])(0),r=()=>{const t=(null===e||void 0===e?void 0:e.value)||document.body,n=t.clientWidth,o=t.clientHeight;let r,i;o/n===l.value?(r=n,i=o):o/n>l.value?(r=n,i=n*l.value):(r=o/l.value,i=o),c.value=r,a.value=i};return Object(n["onMounted"])(()=>{r(),window.addEventListener("resize",r)}),Object(n["onUnmounted"])(()=>{window.removeEventListener("resize",r)}),{slideWidth:c,slideHeight:a}},Gg=()=>{const e=Object(n["ref"])(!0),t=Object(n["ref"])(!0),{exitScreening:l}=Ze(),c=()=>{e.value=Ye(),!e.value&&t.value&&l(),t.value=!0};Object(n["onMounted"])(()=>{e.value=Ye(),document.addEventListener("fullscreenchange",c),document.addEventListener("webkitfullscreenchange",c)}),Object(n["onUnmounted"])(()=>{document.removeEventListener("fullscreenchange",c),document.removeEventListener("webkitfullscreenchange",c)});const o=()=>{e.value&&(t.value=!1,Xe())};return{fullscreenState:e,manualExitFullscreen:o}},Xg=Object(n["defineComponent"])({__name:"ScreenChartElement",props:{elementInfo:{type:Object,required:!0}},setup(e){return(t,l)=>(Object(n["openBlock"])(),Object(n["createBlock"])(Yi,{class:"screen-element-chart",elementInfo:e.elementInfo},null,8,["elementInfo"]))}});const Yg=Xg;var Zg=Yg;const Wg={class:"element-content"};var Jg=Object(n["defineComponent"])({__name:"ScreenVideoElement",props:{elementInfo:{type:Object,required:!0}},setup(e){const{currentSlide:t}=Object(o["c"])(T()),l=Object(n["inject"])(vl)||Object(n["ref"])(1),c=Object(n["inject"])(hl)||Object(n["ref"])(""),a=Object(n["computed"])(()=>t.value.id===c.value);return(t,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"screen-element-video",style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["createElementVNode"])("div",Wg,[Object(n["unref"])(a)?(Object(n["openBlock"])(),Object(n["createBlock"])(fa,{key:0,width:e.elementInfo.width,height:e.elementInfo.height,src:e.elementInfo.src,poster:e.elementInfo.poster,scale:Object(n["unref"])(l)},null,8,["width","height","src","poster","scale"])):Object(n["createCommentVNode"])("",!0)])],4)],4))}});l("7a78");const Kg=Yt()(Jg,[["__scopeId","data-v-76457308"]]);var Qg=Kg;const ex={class:"element-content"};var tx=Object(n["defineComponent"])({__name:"ScreenAudioElement",props:{elementInfo:{type:Object,required:!0}},setup(e){const t=e,{viewportRatio:l,currentSlide:c}=Object(o["c"])(T()),a=Object(n["inject"])(vl)||Object(n["ref"])(1),r=Object(n["inject"])(hl)||Object(n["ref"])(""),i=Object(n["computed"])(()=>c.value.id===r.value),s=Object(n["computed"])(()=>Math.min(t.elementInfo.width,t.elementInfo.height)+"px"),d=Object(n["computed"])(()=>{const e=Ve,c=Ve*l.value,n=280/a.value,o=50/a.value,r=t.elementInfo.width,i=t.elementInfo.height,s=t.elementInfo.left,d=t.elementInfo.top;let u=0,b=i;return s+n>=e&&(u=r-n),d+i+o>=c&&(b=-o),{left:u+"px",top:b+"px"}}),u=Object(n["ref"])(),b=()=>{u.value&&u.value.toggle()};return(t,l)=>{const c=Object(n["resolveComponent"])("IconVolumeNotice");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"screen-element-audio",style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["createElementVNode"])("div",ex,[Object(n["createVNode"])(c,{class:"audio-icon",style:Object(n["normalizeStyle"])({fontSize:Object(n["unref"])(s),color:e.elementInfo.color}),onClick:l[0]||(l[0]=e=>b())},null,8,["style"]),Object(n["unref"])(i)?(Object(n["openBlock"])(),Object(n["createBlock"])(za,{key:0,class:"audio-player",ref_key:"audioPlayerRef",ref:u,style:Object(n["normalizeStyle"])({...Object(n["unref"])(d)}),src:e.elementInfo.src,loop:e.elementInfo.loop,autoplay:e.elementInfo.autoplay,scale:Object(n["unref"])(a)},null,8,["style","src","loop","autoplay","scale"])):Object(n["createCommentVNode"])("",!0)])],4)],4)}}});l("3010");const lx=Yt()(tx,[["__scopeId","data-v-1172b8ee"]]);var cx=lx;const nx=["id","title"];var ox=Object(n["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(e){const t=e,l=Object(n["computed"])(()=>{const e={[Se.IMAGE]:Vi,[Se.TEXT]:Bi,[Se.SHAPE]:$i,[Se.LINE]:Ui,[Se.CHART]:Zg,[Se.TABLE]:ns,[Se.LATEX]:us,[Se.VIDEO]:Qg,[Se.AUDIO]:cx};return e[t.elementInfo.type]||null}),{formatedAnimations:c,theme:a}=Object(o["c"])(T()),r=Object(n["computed"])(()=>{const e=c.value.findIndex(e=>{const l=e.animations.map(e=>e.elId);return l.includes(t.elementInfo.id)});if(-1===e)return!1;if(ee.elId===t.elementInfo.id);return"in"===(null===l||void 0===l?void 0:l.type)}),i=()=>{const e=t.elementInfo.link;e&&("web"===e.type?(t.manualExitFullscreen(),window.open(e.target)):"slide"===e.type&&t.turnSlideToId(e.target))};return(t,c)=>{var o;return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["screen-element",{link:e.elementInfo.link}]),id:"screen-element-"+e.elementInfo.id,style:Object(n["normalizeStyle"])({zIndex:e.elementIndex,color:Object(n["unref"])(a).fontColor,fontFamily:Object(n["unref"])(a).fontName,visibility:Object(n["unref"])(r)?"hidden":"visible"}),title:(null===(o=e.elementInfo.link)||void 0===o?void 0:o.target)||"",onClick:c[0]||(c[0]=e=>i())},[(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["resolveDynamicComponent"])(Object(n["unref"])(l)),{elementInfo:e.elementInfo},null,8,["elementInfo"]))],14,nx)}}});l("d2ee");const ax=Yt()(ox,[["__scopeId","data-v-a15cc1d8"]]);var rx=ax,ix=Object(n["defineComponent"])({__name:"ScreenSlide",props:{slide:{type:Object,required:!0},scale:{type:Number,required:!0},animationIndex:{type:Number,required:!0},turnSlideToId:{type:Function,required:!0},manualExitFullscreen:{type:Function,required:!0}},setup(e){const t=e,{viewportRatio:l}=Object(o["c"])(T()),c=Object(n["computed"])(()=>t.slide.background),{backgroundStyle:a}=Qa(c),r=Object(n["computed"])(()=>t.slide.id);return Object(n["provide"])(hl,r),(t,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"screen-slide",style:Object(n["normalizeStyle"])({width:Object(n["unref"])(Ve)+"px",height:Object(n["unref"])(Ve)*Object(n["unref"])(l)+"px",transform:`scale(${e.scale})`})},[Object(n["createElementVNode"])("div",{class:"background",style:Object(n["normalizeStyle"])({...Object(n["unref"])(a)})},null,4),(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.slide.elements,(t,l)=>(Object(n["openBlock"])(),Object(n["createBlock"])(rx,{key:t.id,elementInfo:t,elementIndex:l+1,animationIndex:e.animationIndex,turnSlideToId:e.turnSlideToId,manualExitFullscreen:e.manualExitFullscreen},null,8,["elementInfo","elementIndex","animationIndex","turnSlideToId","manualExitFullscreen"]))),128))],4))}});l("a060");const sx=Yt()(ix,[["__scopeId","data-v-7cf7f9e7"]]);var dx=sx;const ux={class:"screen-slide-list"};var bx=Object(n["defineComponent"])({__name:"ScreenSlideList",props:{slideWidth:{type:Number,required:!0},slideHeight:{type:Number,required:!0},animationIndex:{type:Number,required:!0},turnSlideToId:{type:Function,required:!0},manualExitFullscreen:{type:Function,required:!0}},setup(e){const t=e,{slides:l,slideIndex:c,currentSlide:a}=Object(o["c"])(T()),r=Object(n["computed"])(()=>t.slideWidth/Ve);return Object(n["provide"])(vl,r),(t,o)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ux,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(l),(t,l)=>{var o;return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["slide-item","turning-mode-"+(t.turningMode||"slideY"),{current:l===Object(n["unref"])(c),before:lObject(n["unref"])(c),hide:(l===Object(n["unref"])(c)-1||l===Object(n["unref"])(c)+1)&&t.turningMode!==Object(n["unref"])(a).turningMode}]),key:t.id},[Math.abs(Object(n["unref"])(c)-l)<2||null!==(o=t.animations)&&void 0!==o&&o.length?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:"slide-content",style:Object(n["normalizeStyle"])({width:e.slideWidth+"px",height:e.slideHeight+"px"})},[Object(n["createVNode"])(dx,{slide:t,scale:Object(n["unref"])(r),animationIndex:e.animationIndex,turnSlideToId:e.turnSlideToId,manualExitFullscreen:e.manualExitFullscreen},null,8,["slide","scale","animationIndex","turnSlideToId","manualExitFullscreen"])],4)):Object(n["createCommentVNode"])("",!0)],2)}),128))]))}});l("9557");const Ox=Yt()(bx,[["__scopeId","data-v-77a3e620"]]);var mx=Ox;const px={class:"slide-thumbnails"},fx={class:"return-button"},jx={class:"slide-thumbnails-content"},vx=["onClick"];var hx=Object(n["defineComponent"])({__name:"SlideThumbnails",props:{turnSlideToIndex:{type:Function,required:!0}},emits:["close"],setup(e,{emit:t}){const l=e,{slides:c,slideIndex:a}=Object(o["c"])(T()),{slidesLoadLimit:r}=_u(),i=e=>{l.turnSlideToIndex(e),t("close")};return(e,l)=>{const o=Object(n["resolveComponent"])("IconArrowCircleLeft");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",px,[Object(n["createElementVNode"])("div",fx,[Object(n["createVNode"])(o,{class:"icon",onClick:l[0]||(l[0]=e=>t("close"))})]),Object(n["createElementVNode"])("div",jx,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(c),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["thumbnail",{active:t===Object(n["unref"])(a)}]),key:e.id,onClick:e=>i(t)},[Object(n["createVNode"])(Ns,{slide:e,size:150,visible:tr.value?m.value/r.value.width:1),j=Object(n["computed"])(()=>r.value?p.value/r.value.height:1),v=()=>{a.value&&(m.value=a.value.clientWidth,p.value=a.value.clientHeight)},h=new ResizeObserver(v);Object(n["onMounted"])(()=>{a.value&&h.observe(a.value)}),Object(n["onUnmounted"])(()=>{a.value&&h.unobserve(a.value)});const y=()=>{r.value&&a.value&&(o=r.value.getContext("2d"),o&&(r.value.width=a.value.clientWidth,r.value.height=a.value.clientHeight,o.lineCap="round",o.lineJoin="round"))};Object(n["onMounted"])(y);const g=()=>{o&&("mark"===c.model?(o.globalCompositeOperation="xor",o.globalAlpha=.5):"pen"===c.model&&(o.globalCompositeOperation="source-over",o.globalAlpha=1))};Object(n["watch"])(()=>c.model,g);const x=(e,t,l)=>{if(!o)return;const n=i.x,a=i.y;o.lineWidth=l,o.strokeStyle=c.color,o.beginPath(),o.moveTo(n,a),o.lineTo(e,t),o.stroke(),o.closePath()},k=(e,t)=>{if(!o||!r.value)return;const l=i.x,n=i.y,a=c.rubberSize/2,s=a*Math.sin(Math.atan((t-n)/(e-l))),d=a*Math.cos(Math.atan((t-n)/(e-l))),u=[l+s,n-d],b=[l-s,n+d],O=[e+s,t-d],m=[e-s,t+d];o.save(),o.beginPath(),o.arc(e,t,a,0,2*Math.PI),o.clip(),o.clearRect(0,0,r.value.width,r.value.height),o.restore(),o.save(),o.beginPath(),o.moveTo(...u),o.lineTo(...O),o.lineTo(...m),o.lineTo(...b),o.closePath(),o.clip(),o.clearRect(0,0,r.value.width,r.value.height),o.restore()},C=(e,t)=>{const l=i.x,c=i.y;return Math.sqrt((e-l)*(e-l)+(t-c)*(t-c))},N=(e,t)=>{const l=10,n=.1,o=c.penSize,a=3,r=e/t;let i;return i=r<=n?o:r>=l?a:o-r/l*o,-1===u?i:1*i/3+2*u/3},E=(e,t)=>{const l=(new Date).getTime();if("pen"===c.model){const c=C(e,t),n=l-d,o=N(c,n);x(e,t,o),u=o}else"mark"===c.model?x(e,t,c.markSize):k(e,t);i={x:e,y:t},d=(new Date).getTime()},w=e=>{if(!r.value)return[0,0];const t=e instanceof MouseEvent?e:e.changedTouches[0],l=r.value.getBoundingClientRect(),c=t.pageX-l.x,n=t.pageY-l.y;return[c,n]},V=e=>{const[t,l]=w(e),c=t/f.value,n=l/j.value;s=!0,i={x:c,y:n},d=(new Date).getTime(),e instanceof MouseEvent||(b.value={x:t,y:l},O.value=!0)},I=e=>{const[t,l]=w(e),c=t/f.value,n=l/j.value;b.value={x:t,y:l},s&&E(c,n)},S=()=>{s&&(s=!1,l("end"))},L=()=>{o&&r.value&&(o.clearRect(0,0,r.value.width,r.value.height),l("end"))},B=()=>{var e;return null===(e=r.value)||void 0===e?void 0:e.toDataURL()},_=e=>{if(o&&r.value&&(o.clearRect(0,0,r.value.width,r.value.height),e)){o.globalCompositeOperation="source-over",o.globalAlpha=1;const t=new Image;t.src=e,t.onload=()=>{o.drawImage(t,0,0),g()}}};return t({clearCanvas:L,getImageDataURL:B,setImageDataURL:_}),(t,l)=>{const c=Object(n["resolveComponent"])("IconWrite"),o=Object(n["resolveComponent"])("IconHighLight");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"writing-board",ref_key:"writingBoardRef",ref:a},[e.blackboard?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",xx)):Object(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("canvas",{class:"canvas",ref_key:"canvasRef",ref:r,style:Object(n["normalizeStyle"])({width:m.value+"px",height:p.value+"px"}),onMousedown:l[0]||(l[0]=e=>V(e)),onMousemove:l[1]||(l[1]=e=>I(e)),onMouseup:l[2]||(l[2]=e=>S()),onTouchstart:l[3]||(l[3]=e=>V(e)),onTouchmove:l[4]||(l[4]=e=>I(e)),onTouchend:l[5]||(l[5]=e=>{S(),O.value=!1}),onMouseleave:l[6]||(l[6]=e=>{S(),O.value=!1}),onMouseenter:l[7]||(l[7]=e=>O.value=!0)},null,36),O.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:1},["eraser"===e.model?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:"eraser",style:Object(n["normalizeStyle"])({left:b.value.x-e.rubberSize/2+"px",top:b.value.y-e.rubberSize/2+"px",width:e.rubberSize+"px",height:e.rubberSize+"px"})},null,4)):Object(n["createCommentVNode"])("",!0),"pen"===e.model?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:1,class:"pen",style:Object(n["normalizeStyle"])({left:b.value.x-e.penSize/2+"px",top:b.value.y-6*e.penSize+e.penSize/2+"px",color:e.color})},["pen"===e.model?(Object(n["openBlock"])(),Object(n["createBlock"])(c,{key:0,class:"icon",size:6*e.penSize},null,8,["size"])):Object(n["createCommentVNode"])("",!0)],4)):Object(n["createCommentVNode"])("",!0),"mark"===e.model?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:2,class:"pen",style:Object(n["normalizeStyle"])({left:b.value.x-e.markSize/2+"px",top:b.value.y+"px",color:e.color})},["mark"===e.model?(Object(n["openBlock"])(),Object(n["createBlock"])(o,{key:0,class:"icon",size:1.5*e.markSize},null,8,["size"])):Object(n["createCommentVNode"])("",!0)],4)):Object(n["createCommentVNode"])("",!0)],64)):Object(n["createCommentVNode"])("",!0)],512)}}});l("b9ba");const Cx=Yt()(kx,[["__scopeId","data-v-3e9669a9"]]);var Nx=Cx;const Ex=e=>(Object(n["pushScopeId"])("data-v-52a2a3a6"),e=e(),Object(n["popScopeId"])(),e),wx={class:"writing-board-tool"},Vx={class:"tool-content"},Ix={class:"size"},Sx=Ex(()=>Object(n["createElementVNode"])("div",{class:"label"},"墨迹粗细:",-1)),Lx={class:"size"},Bx=Ex(()=>Object(n["createElementVNode"])("div",{class:"label"},"墨迹粗细:",-1)),_x={class:"size"},Tx=Ex(()=>Object(n["createElementVNode"])("div",{class:"label"},"橡皮大小:",-1)),Mx={class:"colors"},Dx=["onClick"];var zx=Object(n["defineComponent"])({__name:"WritingBoardTool",props:{slideWidth:{type:Number,required:!0},slideHeight:{type:Number,required:!0},left:{type:Number,default:-5},top:{type:Number,default:-5}},emits:["close"],setup(e,{emit:t}){const l=["#000000","#ffffff","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c","#ffff3a"],{currentSlide:c}=Object(o["c"])(T()),a=Object(n["ref"])(),r=Object(n["ref"])("#e2534d"),i=Object(n["ref"])("pen"),s=Object(n["ref"])(!1),d=Object(n["ref"])(""),u=Object(n["ref"])(6),b=Object(n["ref"])(24),O=Object(n["ref"])(80),m=e=>{i.value===e?d.value=d.value===e?"":e:(d.value&&(d.value=""),i.value=e)},p=()=>{a.value.clearCanvas()},f=e=>{"eraser"===i.value&&(i.value="pen"),r.value=e},j=()=>{t("close")};Object(n["watch"])(c,()=>{q.writingBoardImgs.where("id").equals(c.value.id).toArray().then(e=>{const t=e[0];a.value.setImageDataURL((null===t||void 0===t?void 0:t.dataURL)||"")})},{immediate:!0});const v=()=>{const e=a.value.getImageDataURL();q.writingBoardImgs.where("id").equals(c.value.id).toArray().then(t=>{const l=t[0];l?q.writingBoardImgs.update(l,{dataURL:e}):q.writingBoardImgs.add({id:c.value.id,dataURL:e})})};return(t,c)=>{const o=Object(n["resolveComponent"])("IconWrite"),h=Object(n["resolveComponent"])("IconHighLight"),y=Object(n["resolveComponent"])("IconErase"),g=Object(n["resolveComponent"])("IconClear"),x=Object(n["resolveComponent"])("IconFill"),k=Object(n["resolveComponent"])("IconClose");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",wx,[Object(n["createElementVNode"])("div",{class:"writing-board-wrap",style:Object(n["normalizeStyle"])({width:e.slideWidth+"px",height:e.slideHeight+"px"})},[Object(n["createVNode"])(Nx,{ref_key:"writingBoardRef",ref:a,color:r.value,blackboard:s.value,model:i.value,penSize:u.value,markSize:b.value,rubberSize:O.value,onEnd:c[0]||(c[0]=e=>v())},null,8,["color","blackboard","model","penSize","markSize","rubberSize"])],4),Object(n["createVNode"])(hg,{class:"tools-panel",width:520,height:50,left:e.left,top:e.top,moveable:""===d.value},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",{class:"tools",onMousedown:c[10]||(c[10]=Object(n["withModifiers"])(()=>{},["stop"]))},[Object(n["createElementVNode"])("div",Vx,[Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:"pen"===d.value},{content:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",Ix,[Sx,Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"size-slider",min:4,max:10,step:2,value:u.value,"onUpdate:value":c[1]||(c[1]=e=>u.value=e)},null,8,["value"])])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"画笔"},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["btn",{active:"pen"===i.value}]),onClick:c[2]||(c[2]=e=>m("pen"))},[Object(n["createVNode"])(o,{class:"icon"})],2)]),_:1},8,["mouseEnterDelay"])]),_:1},8,["visible"]),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:"mark"===d.value},{content:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",Lx,[Bx,Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"size-slider",min:16,max:40,step:4,value:b.value,"onUpdate:value":c[3]||(c[3]=e=>b.value=e)},null,8,["value"])])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"荧光笔"},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["btn",{active:"mark"===i.value}]),onClick:c[4]||(c[4]=e=>m("mark"))},[Object(n["createVNode"])(h,{class:"icon"})],2)]),_:1},8,["mouseEnterDelay"])]),_:1},8,["visible"]),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:"eraser"===d.value},{content:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",_x,[Tx,Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"size-slider",min:20,max:200,step:20,value:O.value,"onUpdate:value":c[5]||(c[5]=e=>O.value=e)},null,8,["value"])])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"橡皮擦"},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["btn",{active:"eraser"===i.value}]),onClick:c[6]||(c[6]=e=>m("eraser"))},[Object(n["createVNode"])(y,{class:"icon"})],2)]),_:1},8,["mouseEnterDelay"])]),_:1},8,["visible"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"清除墨迹"},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",{class:"btn",onClick:c[7]||(c[7]=e=>p())},[Object(n["createVNode"])(g,{class:"icon"})])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"黑板"},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["btn",{active:s.value}]),onClick:c[8]||(c[8]=e=>s.value=!s.value)},[Object(n["createVNode"])(x,{class:"icon"})],2)]),_:1},8,["mouseEnterDelay"]),Object(n["createElementVNode"])("div",Mx,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(l,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["color",{active:e===r.value}]),key:e,style:Object(n["normalizeStyle"])({backgroundColor:e}),onClick:t=>f(e)},null,14,Dx)),64))])]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"关闭画笔"},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",{class:"btn",onClick:c[9]||(c[9]=e=>j())},[Object(n["createVNode"])(k,{class:"icon"})])]),_:1},8,["mouseEnterDelay"])],32)]),_:1},8,["left","top","moveable"])])}}});l("399d");const Fx=Yt()(zx,[["__scopeId","data-v-52a2a3a6"]]);var Ax=Fx;const $x=e=>(Object(n["pushScopeId"])("data-v-5a82de11"),e=e(),Object(n["popScopeId"])(),e),Rx={class:"header"},Px={class:"content"},Hx={class:"timer"},qx=["value","disabled"],Ux=$x(()=>Object(n["createElementVNode"])("div",{class:"colon"},":",-1)),Gx={class:"timer"},Xx=["value","disabled"];var Yx=Object(n["defineComponent"])({__name:"CountdownTimer",props:{left:{type:Number,default:5},top:{type:Number,default:5}},emits:["close"],setup(e,{emit:t}){const l=Object(n["ref"])(null),c=Object(n["ref"])(!1),o=Object(n["ref"])(!1),a=Object(n["ref"])(0),r=Object(n["computed"])(()=>Math.floor(a.value/60)),i=Object(n["computed"])(()=>a.value%60),s=Object(n["computed"])(()=>!o.value||c.value),d=()=>{l.value&&clearInterval(l.value)};Object(n["onUnmounted"])(d);const u=()=>{d(),c.value=!1},b=()=>{d(),c.value=!1,o.value?a.value=600:a.value=0},O=()=>{d(),o.value?l.value=setInterval(()=>{a.value=a.value-1,a.value<=0&&b()},1e3):l.value=setInterval(()=>{a.value=a.value+1,a.value>36e3&&u()},1e3),c.value=!0},m=()=>{c.value?u():O()},p=()=>{o.value=!o.value,b()},f=(e,t)=>{const l=e.target;let c=l.value;const n=/^(\d)+$/.test(c);n?("second"===t&&+c>=60&&(c="59"),a.value="minute"===t?60*+c+i.value:+c+60*r.value):l.value=Y("minute"===t?r.value:i.value,2)};return(l,a)=>{const d=Object(n["resolveComponent"])("IconClose");return Object(n["openBlock"])(),Object(n["createBlock"])(hg,{class:"countdown-timer",width:180,height:110,left:e.left,top:e.top},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",Rx,[Object(n["createElementVNode"])("span",{class:"text-btn",onClick:a[0]||(a[0]=e=>m())},Object(n["toDisplayString"])(c.value?"暂停":"开始"),1),Object(n["createElementVNode"])("span",{class:"text-btn",onClick:a[1]||(a[1]=e=>b())},"重置"),Object(n["createElementVNode"])("span",{class:Object(n["normalizeClass"])(["text-btn",{active:o.value}]),onClick:a[2]||(a[2]=e=>p())},"倒计时",2)]),Object(n["createElementVNode"])("div",Px,[Object(n["createElementVNode"])("div",Hx,[Object(n["createElementVNode"])("input",{type:"text",value:Object(n["unref"])(Y)(Object(n["unref"])(r),2),maxlength:3,disabled:Object(n["unref"])(s),onMousedown:a[3]||(a[3]=Object(n["withModifiers"])(()=>{},["stop"])),onBlur:a[4]||(a[4]=e=>f(e,"minute")),onKeydown:[a[5]||(a[5]=Object(n["withModifiers"])(()=>{},["stop"])),a[6]||(a[6]=Object(n["withKeys"])(Object(n["withModifiers"])(e=>f(e,"minute"),["stop"]),["enter"]))]},null,40,qx)]),Ux,Object(n["createElementVNode"])("div",Gx,[Object(n["createElementVNode"])("input",{type:"text",value:Object(n["unref"])(Y)(Object(n["unref"])(i),2),maxlength:3,disabled:Object(n["unref"])(s),onMousedown:a[7]||(a[7]=Object(n["withModifiers"])(()=>{},["stop"])),onBlur:a[8]||(a[8]=e=>f(e,"second")),onKeydown:[a[9]||(a[9]=Object(n["withModifiers"])(()=>{},["stop"])),a[10]||(a[10]=Object(n["withKeys"])(Object(n["withModifiers"])(e=>f(e,"second"),["stop"]),["enter"]))]},null,40,Xx)])]),Object(n["createElementVNode"])("div",{class:"close-btn",onClick:a[11]||(a[11]=e=>t("close"))},[Object(n["createVNode"])(d,{class:"icon"})])]),_:1},8,["left","top"])}}});l("a874");const Zx=Yt()(Yx,[["__scopeId","data-v-5a82de11"]]);var Wx=Zx;const Jx={class:"tools-left"},Kx={class:"content"};var Qx=Object(n["defineComponent"])({__name:"BaseView",props:{changeViewMode:{type:Function,required:!0}},setup(e){const t=e,{slides:l,slideIndex:c}=Object(o["c"])(T()),{autoPlayTimer:a,autoPlay:r,closeAutoPlay:i,mousewheelListener:s,touchStartListener:d,touchEndListener:u,turnPrevSlide:b,turnNextSlide:O,turnSlideToIndex:m,turnSlideToId:p,execPrev:f,execNext:j,animationIndex:v}=qg(),{slideWidth:h,slideHeight:y}=Ug(),{exitScreening:g}=Ze(),{fullscreenState:x,manualExitFullscreen:k}=Gg(),C=Object(n["ref"])(!1),N=Object(n["ref"])(!1),E=Object(n["ref"])(!1),w=Object(n["ref"])(!1),V=Object(n["ref"])(!1),I=()=>[{text:"上一页",subText:"↑ ←",disable:c.value<=0,handler:()=>b()},{text:"下一页",subText:"↓ →",disable:c.value>=l.value.length-1,handler:()=>O()},{text:"第一页",disable:0===c.value,handler:()=>m(0)},{text:"最后一页",disable:c.value===l.value.length-1,handler:()=>m(l.value.length-1)},{divider:!0},{text:"显示工具栏",handler:()=>C.value=!0},{text:"查看所有幻灯片",handler:()=>w.value=!0},{text:"画笔工具",handler:()=>N.value=!0},{text:"演讲者视图",handler:()=>t.changeViewMode("presenter")},{divider:!0},{text:a.value?"取消自动放映":"自动放映",handler:a.value?i:r},{text:"结束放映",subText:"ESC",handler:g}];return(t,o)=>{const a=Object(n["resolveComponent"])("IconLeftTwo"),r=Object(n["resolveComponent"])("IconRightTwo"),i=Object(n["resolveComponent"])("IconWrite"),b=Object(n["resolveComponent"])("IconMagic"),O=Object(n["resolveComponent"])("IconStopwatchStart"),S=Object(n["resolveComponent"])("IconListView"),L=Object(n["resolveComponent"])("IconOffScreenOne"),B=Object(n["resolveComponent"])("IconFullScreenOne"),_=Object(n["resolveComponent"])("IconPower"),T=Object(n["resolveDirective"])("contextmenu");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["base-view",{"laser-pen":V.value}])},[Object(n["withDirectives"])(Object(n["createVNode"])(mx,{slideWidth:Object(n["unref"])(h),slideHeight:Object(n["unref"])(y),animationIndex:Object(n["unref"])(v),turnSlideToId:Object(n["unref"])(p),manualExitFullscreen:Object(n["unref"])(k),onWheel:o[0]||(o[0]=e=>Object(n["unref"])(s)(e)),onTouchstart:o[1]||(o[1]=e=>Object(n["unref"])(d)(e)),onTouchend:o[2]||(o[2]=e=>Object(n["unref"])(u)(e))},null,8,["slideWidth","slideHeight","animationIndex","turnSlideToId","manualExitFullscreen"]),[[T,I]]),w.value?(Object(n["openBlock"])(),Object(n["createBlock"])(gx,{key:0,turnSlideToIndex:Object(n["unref"])(m),onClose:o[3]||(o[3]=e=>w.value=!1)},null,8,["turnSlideToIndex"])):Object(n["createCommentVNode"])("",!0),N.value?(Object(n["openBlock"])(),Object(n["createBlock"])(Ax,{key:1,slideWidth:Object(n["unref"])(h),slideHeight:Object(n["unref"])(y),onClose:o[4]||(o[4]=e=>N.value=!1)},null,8,["slideWidth","slideHeight"])):Object(n["createCommentVNode"])("",!0),E.value?(Object(n["openBlock"])(),Object(n["createBlock"])(Wx,{key:2,onClose:o[5]||(o[5]=e=>E.value=!1)})):Object(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("div",Jx,[Object(n["createVNode"])(a,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:o[6]||(o[6]=e=>Object(n["unref"])(f)())}),Object(n["createVNode"])(r,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:o[7]||(o[7]=e=>Object(n["unref"])(j)())})]),Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["tools-right",{visible:C.value}]),onMouseleave:o[16]||(o[16]=e=>C.value=!1),onMouseenter:o[17]||(o[17]=e=>C.value=!0)},[Object(n["createElementVNode"])("div",Kx,[Object(n["createElementVNode"])("div",{class:"tool-btn page-number",onClick:o[8]||(o[8]=e=>w.value=!0)},"幻灯片 "+Object(n["toDisplayString"])(Object(n["unref"])(c)+1)+" / "+Object(n["toDisplayString"])(Object(n["unref"])(l).length),1),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"画笔工具"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(i,{class:"tool-btn",onClick:o[9]||(o[9]=e=>N.value=!0)})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"激光笔"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(b,{class:Object(n["normalizeClass"])(["tool-btn",{active:V.value}]),onClick:o[10]||(o[10]=e=>V.value=!V.value)},null,8,["class"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"计时器"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(O,{class:Object(n["normalizeClass"])(["tool-btn",{active:E.value}]),onClick:o[11]||(o[11]=e=>E.value=!E.value)},null,8,["class"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"演讲者视图"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(S,{class:"tool-btn",onClick:o[12]||(o[12]=t=>e.changeViewMode("presenter"))})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.3,title:Object(n["unref"])(x)?"退出全屏":"进入全屏"},{default:Object(n["withCtx"])(()=>[Object(n["unref"])(x)?(Object(n["openBlock"])(),Object(n["createBlock"])(L,{key:0,class:"tool-btn",onClick:o[13]||(o[13]=e=>Object(n["unref"])(k)())})):(Object(n["openBlock"])(),Object(n["createBlock"])(B,{key:1,class:"tool-btn",onClick:o[14]||(o[14]=e=>Object(n["unref"])(Ge)())}))]),_:1},8,["mouseEnterDelay","title"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"结束放映"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(_,{class:"tool-btn",onClick:o[15]||(o[15]=e=>Object(n["unref"])(g)())})]),_:1},8,["mouseEnterDelay"])])],34)],2)}}});l("05a9");const ek=Yt()(Qx,[["__scopeId","data-v-90ac59d8"]]);var tk=ek;const lk=e=>(Object(n["pushScopeId"])("data-v-f770d810"),e=e(),Object(n["popScopeId"])(),e),ck={class:"presenter-view"},nk={class:"toolbar"},ok=lk(()=>Object(n["createElementVNode"])("span",null,"普通视图",-1)),ak=lk(()=>Object(n["createElementVNode"])("span",null,"画笔",-1)),rk=lk(()=>Object(n["createElementVNode"])("span",null,"激光笔",-1)),ik=lk(()=>Object(n["createElementVNode"])("span",null,"计时器",-1)),sk=lk(()=>Object(n["createElementVNode"])("span",null,"结束放映",-1)),dk={class:"content"},uk=["onClick"],bk={class:"remark"},Ok={class:"header"},mk=lk(()=>Object(n["createElementVNode"])("span",null,"演讲者备注",-1)),pk=["innerHTML"],fk={class:"remark-scale"};var jk=Object(n["defineComponent"])({__name:"PresenterView",props:{changeViewMode:{type:Function,required:!0}},setup(e){const t=e,{slides:l,slideIndex:c,viewportRatio:a,currentSlide:r}=Object(o["c"])(T()),i=Object(n["ref"])(),s=Object(n["ref"])(),d=Object(n["ref"])(!1),u=Object(n["ref"])(!1),b=Object(n["ref"])(!1),{mousewheelListener:O,touchStartListener:m,touchEndListener:p,turnPrevSlide:f,turnNextSlide:j,turnSlideToIndex:v,turnSlideToId:h,animationIndex:y}=qg(),{slideWidth:g,slideHeight:x}=Ug(i),{exitScreening:k}=Ze(),{slidesLoadLimit:C}=_u(),{fullscreenState:N,manualExitFullscreen:E}=Gg(),w=Object(n["ref"])(16),V=Object(n["computed"])(()=>Ne(r.value.remark||"无备注")),I=e=>{s.value&&s.value.scrollBy(e.deltaY,0)},S=e=>{e<12||e>40||(w.value=e)};Object(n["watch"])(c,()=>{Object(n["nextTick"])(()=>{if(!s.value)return;const e=s.value.querySelector(".thumbnail.active");if(!e)return;const t=s.value.offsetWidth,l=e.offsetLeft;s.value.scrollTo({left:l-t/2,behavior:"smooth"})})});const L=()=>[{text:"上一页",subText:"↑ ←",disable:c.value<=0,handler:()=>f()},{text:"下一页",subText:"↓ →",disable:c.value>=l.value.length-1,handler:()=>j()},{text:"第一页",disable:0===c.value,handler:()=>v(0)},{text:"最后一页",disable:c.value===l.value.length-1,handler:()=>v(l.value.length-1)},{divider:!0},{text:"画笔工具",handler:()=>d.value=!0},{text:"普通视图",handler:()=>t.changeViewMode("base")},{divider:!0},{text:"结束放映",subText:"ESC",handler:k}];return(t,o)=>{const r=Object(n["resolveComponent"])("IconListView"),f=Object(n["resolveComponent"])("IconWrite"),j=Object(n["resolveComponent"])("IconMagic"),B=Object(n["resolveComponent"])("IconStopwatchStart"),_=Object(n["resolveComponent"])("IconOffScreenOne"),T=Object(n["resolveComponent"])("IconPower"),M=Object(n["resolveComponent"])("IconMinus"),D=Object(n["resolveComponent"])("IconPlus"),z=Object(n["resolveDirective"])("contextmenu");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ck,[Object(n["createElementVNode"])("div",nk,[Object(n["createElementVNode"])("div",{class:"tool-btn",onClick:o[0]||(o[0]=t=>e.changeViewMode("base"))},[Object(n["createVNode"])(r,{class:"tool-icon"}),ok]),Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["tool-btn",{active:d.value}]),onClick:o[1]||(o[1]=e=>d.value=!d.value)},[Object(n["createVNode"])(f,{class:"tool-icon"}),ak],2),Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["tool-btn",{active:b.value}]),onClick:o[2]||(o[2]=e=>b.value=!b.value)},[Object(n["createVNode"])(j,{class:"tool-icon"}),rk],2),Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["tool-btn",{active:u.value}]),onClick:o[3]||(o[3]=e=>u.value=!u.value)},[Object(n["createVNode"])(B,{class:"tool-icon"}),ik],2),Object(n["createElementVNode"])("div",{class:"tool-btn",onClick:o[4]||(o[4]=()=>Object(n["unref"])(N)?Object(n["unref"])(E)():Object(n["unref"])(Ge)())},[Object(n["unref"])(N)?(Object(n["openBlock"])(),Object(n["createBlock"])(_,{key:0,class:"tool-icon"})):(Object(n["openBlock"])(),Object(n["createBlock"])(_,{key:1,class:"tool-icon"})),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(Object(n["unref"])(N)?"退出全屏":"全屏"),1)]),Object(n["createVNode"])(Object(n["unref"])(ui["a"]),{class:"divider"}),Object(n["createElementVNode"])("div",{class:"tool-btn",onClick:o[5]||(o[5]=e=>Object(n["unref"])(k)())},[Object(n["createVNode"])(T,{class:"tool-icon"}),sk])]),Object(n["createElementVNode"])("div",dk,[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["slide-list-wrap",{"laser-pen":b.value}]),ref_key:"slideListWrapRef",ref:i},[Object(n["withDirectives"])(Object(n["createVNode"])(mx,{slideWidth:Object(n["unref"])(g),slideHeight:Object(n["unref"])(x),animationIndex:Object(n["unref"])(y),turnSlideToId:Object(n["unref"])(h),manualExitFullscreen:Object(n["unref"])(E),onWheel:o[6]||(o[6]=e=>Object(n["unref"])(O)(e)),onTouchstart:o[7]||(o[7]=e=>Object(n["unref"])(m)(e)),onTouchend:o[8]||(o[8]=e=>Object(n["unref"])(p)(e))},null,8,["slideWidth","slideHeight","animationIndex","turnSlideToId","manualExitFullscreen"]),[[z,L]]),d.value?(Object(n["openBlock"])(),Object(n["createBlock"])(Ax,{key:0,slideWidth:Object(n["unref"])(g),slideHeight:Object(n["unref"])(x),left:-365,top:-155,onClose:o[9]||(o[9]=e=>d.value=!1)},null,8,["slideWidth","slideHeight"])):Object(n["createCommentVNode"])("",!0),u.value?(Object(n["openBlock"])(),Object(n["createBlock"])(Wx,{key:1,left:75,onClose:o[10]||(o[10]=e=>u.value=!1)})):Object(n["createCommentVNode"])("",!0)],2),Object(n["createElementVNode"])("div",{class:"thumbnails",ref_key:"thumbnailsRef",ref:s,onWheel:o[11]||(o[11]=Object(n["withModifiers"])(e=>I(e),["prevent"]))},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(l),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["thumbnail",{active:t===Object(n["unref"])(c)}]),key:e.id,onClick:e=>Object(n["unref"])(v)(t)},[Object(n["createVNode"])(Ns,{slide:e,size:120/Object(n["unref"])(a),visible:tS(w.value-2))},[Object(n["createVNode"])(M)],2),Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["scale-btn",{disable:40===w.value}]),onClick:o[13]||(o[13]=e=>S(w.value+2))},[Object(n["createVNode"])(D)],2)])])])}}});l("6fb9");const vk=Yt()(jk,[["__scopeId","data-v-f770d810"]]);var hk=vk;const yk={class:"pptist-screen"};var gk=Object(n["defineComponent"])({__name:"index",setup(e){const t=Object(n["ref"])("base"),l=e=>{t.value=e},{exitScreening:c}=Ze(),o=e=>{const t=e.key.toUpperCase();t===te.ESC&&c()};return Object(n["onMounted"])(()=>document.addEventListener("keydown",o)),Object(n["onUnmounted"])(()=>document.removeEventListener("keydown",o)),(e,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",yk,["base"===t.value?(Object(n["openBlock"])(),Object(n["createBlock"])(tk,{key:0,changeViewMode:l})):"presenter"===t.value?(Object(n["openBlock"])(),Object(n["createBlock"])(hk,{key:1,changeViewMode:l})):Object(n["createCommentVNode"])("",!0)]))}});l("4764");const xk=Yt()(gk,[["__scopeId","data-v-6bf3d190"]]);var kk=xk,Ck=Object(n["defineComponent"])({__name:"MobileEditableElement",props:{elementInfo:{type:Object,required:!0},elementIndex:{type:Number,required:!0},selectElement:{type:Function,required:!0}},setup(e){const t=e,l=Object(n["computed"])(()=>{const e={[Se.IMAGE]:Nc,[Se.TEXT]:Dn,[Se.SHAPE]:Kn,[Se.LINE]:so,[Se.CHART]:jo,[Se.TABLE]:zo,[Se.LATEX]:Ho,[Se.VIDEO]:ha,[Se.AUDIO]:$a};return e[t.elementInfo.type]||null});return(t,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"mobile-editable-element",style:Object(n["normalizeStyle"])({zIndex:e.elementIndex})},[(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["resolveDynamicComponent"])(Object(n["unref"])(l)),{elementInfo:e.elementInfo,selectElement:e.selectElement,contextmenus:()=>null},null,8,["elementInfo","selectElement","contextmenus"]))],4))}});const Nk=Ck;var Ek=Nk,wk=Object(n["defineComponent"])({__name:"MobileOperate",props:{elementInfo:{type:Object,required:!0},isSelected:{type:Boolean,required:!0},canvasScale:{type:Number,required:!0},scaleElement:{type:Function,required:!0}},setup(e){const t=e,l=Object(n["computed"])(()=>"rotate"in t.elementInfo?t.elementInfo.rotate:0),c=Object(n["computed"])(()=>t.elementInfo.width*t.canvasScale),o=Object(n["computed"])(()=>t.elementInfo.height*t.canvasScale),{borderLines:a,resizeHandlers:r,textElementResizeHandlers:i}=pr(c,o),s="text"===t.elementInfo.type||"table"===t.elementInfo.type?i:r;return(t,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"mobile-operate",style:Object(n["normalizeStyle"])({top:e.elementInfo.top*e.canvasScale+"px",left:e.elementInfo.left*e.canvasScale+"px",transform:`rotate(${Object(n["unref"])(l)}deg)`,transformOrigin:`${e.elementInfo.width*e.canvasScale/2}px ${e.elementInfo.height*e.canvasScale/2}px`})},[e.isSelected?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(a),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(gr,{class:"operate-border-line",key:e.type,type:e.type,style:Object(n["normalizeStyle"])(e.style)},null,8,["type","style"]))),128)),(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(s),t=>(Object(n["openBlock"])(),Object(n["createBlock"])(vr,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(n["normalizeStyle"])(t.style),onTouchstart:Object(n["withModifiers"])(l=>e.scaleElement(l,e.elementInfo,t.direction),["stop"])},null,8,["type","rotate","style","onTouchstart"]))),128))],64)):Object(n["createCommentVNode"])("",!0)],4))}});l("dd03");const Vk=Yt()(wk,[["__scopeId","data-v-7fdc6c04"]]);var Ik=Vk;const Sk={class:"mobile-thumbnails"},Lk=["onClick"],Bk={class:"label"};var _k=Object(n["defineComponent"])({__name:"MobileThumbnails",setup(e){const t=T(),{slides:l,slideIndex:c}=Object(o["c"])(t),{sortSlides:a}=Fe(),{slidesLoadLimit:r}=_u(),i=e=>{t.updateSlideIndex(e)},s=e=>{const{newIndex:t,oldIndex:l}=e;a(t,l)};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Sk,[Object(n["createVNode"])(Object(n["unref"])(Mu.a),{class:"thumbnail-list",modelValue:Object(n["unref"])(l),animation:300,scroll:!0,scrollSensitivity:50,setData:null,itemKey:"id",delayOnTouchOnly:!0,delay:800,onEnd:s},{item:Object(n["withCtx"])(({element:e,index:t})=>[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["thumbnail-item",{active:Object(n["unref"])(c)===t}]),onClick:e=>i(t)},[Object(n["createElementVNode"])("div",Bk,Object(n["toDisplayString"])(t+1),1),Object(n["createVNode"])(Ns,{class:"thumbnail",slide:e,size:120,visible:t{const e=400,t=56;d({left:(Ve-e)/2,top:(Ve*c.value-t)/2,width:e,height:t},{content:"

新添加文本

"})},m=e=>{e&&e[0]&&we(e[0]).then(e=>u(e))},p=e=>{const t={viewBox:[200,200],path:"M 0 0 L 200 0 L 200 200 L 0 200 Z"},l={viewBox:[200,200],path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z"},n={square:t,round:l},o=200;b({left:(Ve-o)/2,top:(Ve*c.value-o)/2,width:o,height:o},n[e])},f=Object(n["computed"])(()=>{var e;return(null===(e=a.value)||void 0===e?void 0:e.remark)||""}),j=e=>{const t=e.target.value;l.updateSlide({remark:t})};return(e,l)=>{const c=Object(n["resolveComponent"])("IconPlus"),o=Object(n["resolveComponent"])("IconCopy"),a=Object(n["resolveComponent"])("IconDelete"),d=Object(n["resolveComponent"])("IconFontSize"),u=Object(n["resolveComponent"])("IconPicture"),b=Object(n["resolveComponent"])("IconSquare"),v=Object(n["resolveComponent"])("IconRound");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Dk,[Object(n["createElementVNode"])("div",zk,[Object(n["createElementVNode"])("textarea",{value:Object(n["unref"])(f),placeholder:"点击输入演讲者备注",onInput:l[0]||(l[0]=e=>j(e))},null,40,Fk)]),Object(n["createElementVNode"])("div",Ak,[Object(n["createVNode"])(Object(n["unref"])(t),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[1]||(l[1]=e=>Object(n["unref"])(r)())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(c,{class:"icon"}),Object(n["createTextVNode"])(" 新幻灯片")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[2]||(l[2]=e=>Object(n["unref"])(i)())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(o,{class:"icon"}),Object(n["createTextVNode"])(" 复制")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[3]||(l[3]=e=>Object(n["unref"])(s)())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(a,{class:"icon"}),Object(n["createTextVNode"])(" 删除")]),_:1})]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[4]||(l[4]=e=>O())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(d,{class:"icon"}),Object(n["createTextVNode"])(" 文字")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(el,{onChange:l[5]||(l[5]=e=>m(e))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(u,{class:"icon"}),Object(n["createTextVNode"])("图片 ")]),_:1})]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[6]||(l[6]=e=>p("square"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(b,{class:"icon"}),Object(n["createTextVNode"])(" 矩形")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[7]||(l[7]=e=>p("round"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(v,{class:"icon"}),Object(n["createTextVNode"])(" 圆形")]),_:1})]),_:1})]),Object(n["createVNode"])(Mk)])}}});l("25f2");const Rk=Yt()($k,[["__scopeId","data-v-1e17bcc7"]]);var Pk=Rk;const Hk=e=>(Object(n["pushScopeId"])("data-v-2633262b"),e=e(),Object(n["popScopeId"])(),e),qk={class:"element-toolbar"},Uk={class:"tabs"},Gk=["onClick"],Xk={class:"content"},Yk={key:0,class:"style"},Zk={class:"row-block"},Wk=Hk(()=>Object(n["createElementVNode"])("div",{class:"label"},"文字颜色:",-1)),Jk={class:"colors"},Kk=["onClick"],Qk={class:"row-block"},eC=Hk(()=>Object(n["createElementVNode"])("div",{class:"label"},"填充色:",-1)),tC={class:"colors"},lC=["onClick"],cC={key:1,class:"common"};var nC=Object(n["defineComponent"])({__name:"ElementToolbar",setup(e){const{Group:t,Button:l}=Yu["a"],c=xi["a"].Group,a=["#000000","#ffffff","#eeece1","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c","#c21401","#ff1e02","#ffc12a","#ffff3a","#90cf5b","#00af57"],r=z(),i=T(),{handleElement:s,handleElementId:d,richTextAttrs:u}=Object(o["c"])(r),{addHistorySnapshot:b}=Te(),O=(e,t)=>{i.updateElement({id:e,props:t}),b()},m=[{key:"style",label:"样式"},{key:"common",label:"布局"}],p=Object(n["ref"])("common"),{orderElement:f}=Ue(),{alignElementToCanvas:j}=Fl(),{addElementsFromData:v}=De(),{deleteElement:h}=$e(),y=()=>{const e=JSON.parse(JSON.stringify(s.value));v([e])},g=(e,t)=>{yn.emit(jn.RICH_TEXT_COMMAND,{action:{command:e,value:t}})},x=e=>{var t;if(s.value){if(("text"===s.value.type||"shape"===s.value.type&&null!==(t=s.value.text)&&void 0!==t&&t.content)&&yn.emit(jn.RICH_TEXT_COMMAND,{action:{command:"color",value:e}}),"table"===s.value.type){const t=JSON.parse(JSON.stringify(s.value.data));for(let l=0;l{if(s.value){if("text"!==s.value.type&&"shape"!==s.value.type&&"chart"!==s.value.type||O(d.value,{fill:e}),"table"===s.value.type){const t=JSON.parse(JSON.stringify(s.value.data));for(let l=0;l{const r=Object(n["resolveComponent"])("IconTextBold"),i=Object(n["resolveComponent"])("IconTextItalic"),d=Object(n["resolveComponent"])("IconTextUnderline"),b=Object(n["resolveComponent"])("IconStrikethrough"),O=Object(n["resolveComponent"])("IconFontSize"),v=Object(n["resolveComponent"])("IconAlignTextLeft"),C=Object(n["resolveComponent"])("IconAlignTextCenter"),N=Object(n["resolveComponent"])("IconAlignTextRight"),E=Object(n["resolveComponent"])("IconCopy"),w=Object(n["resolveComponent"])("IconDelete"),V=Object(n["resolveComponent"])("IconSendToBack"),I=Object(n["resolveComponent"])("IconBringToFrontOne"),S=Object(n["resolveComponent"])("IconBringToFront"),L=Object(n["resolveComponent"])("IconSentToBack"),B=Object(n["resolveComponent"])("IconAlignLeft"),_=Object(n["resolveComponent"])("IconAlignVertically"),T=Object(n["resolveComponent"])("IconAlignRight"),M=Object(n["resolveComponent"])("IconAlignTop"),D=Object(n["resolveComponent"])("IconAlignHorizontally"),z=Object(n["resolveComponent"])("IconAlignBottom");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",qk,[Object(n["createElementVNode"])("div",Uk,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(m,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["tab",{active:p.value===e.key}]),key:e.key,onClick:t=>p.value=e.key},Object(n["toDisplayString"])(e.label),11,Gk)),64))]),Object(n["createElementVNode"])("div",Xk,["style"===p.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Yk,[Object(n["createVNode"])(XO,{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(u).bold,onClick:o[0]||(o[0]=e=>g("bold"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(r)]),_:1},8,["checked"]),Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(u).em,onClick:o[1]||(o[1]=e=>g("em"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(i)]),_:1},8,["checked"]),Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(u).underline,onClick:o[2]||(o[2]=e=>g("underline"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(d)]),_:1},8,["checked"]),Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(u).strikethrough,onClick:o[3]||(o[3]=e=>g("strikethrough"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(b)]),_:1},8,["checked"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"2"},onClick:o[4]||(o[4]=e=>g("fontsize-add"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(O),Object(n["createTextVNode"])("+")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"2"},onClick:o[5]||(o[5]=e=>g("fontsize-reduce"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(O),Object(n["createTextVNode"])("-")]),_:1})]),_:1}),Object(n["createVNode"])(Object(n["unref"])(ui["a"]),{style:{margin:"20px 0"}}),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row","button-style":"solid",value:Object(n["unref"])(u).align,onChange:o[6]||(o[6]=e=>g("align",e.target.value))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"left",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(v)]),_:1}),Object(n["createVNode"])(Object(n["unref"])(l),{value:"center",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(C)]),_:1}),Object(n["createVNode"])(Object(n["unref"])(l),{value:"right",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(N)]),_:1})]),_:1},8,["value"]),Object(n["createVNode"])(Object(n["unref"])(ui["a"]),{style:{margin:"20px 0"}}),Object(n["createElementVNode"])("div",Zk,[Wk,Object(n["createElementVNode"])("div",Jk,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(a,e=>Object(n["createElementVNode"])("div",{class:"color",key:e,onClick:t=>x(e)},[Object(n["createElementVNode"])("div",{class:"color-block",style:Object(n["normalizeStyle"])({backgroundColor:e})},null,4)],8,Kk)),64))])]),Object(n["createElementVNode"])("div",Qk,[eC,Object(n["createElementVNode"])("div",tC,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(a,e=>Object(n["createElementVNode"])("div",{class:"color",key:e,onClick:t=>k(e)},[Object(n["createElementVNode"])("div",{class:"color-block",style:Object(n["normalizeStyle"])({backgroundColor:e})},null,4)],8,lC)),64))])])])):Object(n["createCommentVNode"])("",!0),"common"===p.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",cC,[Object(n["createVNode"])(Object(n["unref"])(c),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[7]||(o[7]=e=>y())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(E,{class:"icon"}),Object(n["createTextVNode"])(" 复制")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[8]||(o[8]=e=>Object(n["unref"])(h)())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(w,{class:"icon"}),Object(n["createTextVNode"])(" 删除")]),_:1})]),_:1}),Object(n["createVNode"])(Object(n["unref"])(ui["a"]),{style:{margin:"20px 0"}}),Object(n["createVNode"])(Object(n["unref"])(c),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[9]||(o[9]=e=>Object(n["unref"])(f)(Object(n["unref"])(s),Object(n["unref"])(W).TOP))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(V,{class:"icon"}),Object(n["createTextVNode"])(" 置顶")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[10]||(o[10]=e=>Object(n["unref"])(f)(Object(n["unref"])(s),Object(n["unref"])(W).BOTTOM))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(I,{class:"icon"}),Object(n["createTextVNode"])(" 置底")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[11]||(o[11]=e=>Object(n["unref"])(f)(Object(n["unref"])(s),Object(n["unref"])(W).UP))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(S,{class:"icon"}),Object(n["createTextVNode"])(" 上移")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[12]||(o[12]=e=>Object(n["unref"])(f)(Object(n["unref"])(s),Object(n["unref"])(W).DOWN))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(L,{class:"icon"}),Object(n["createTextVNode"])(" 下移")]),_:1})]),_:1}),Object(n["createVNode"])(Object(n["unref"])(ui["a"]),{style:{margin:"20px 0"}}),Object(n["createVNode"])(Object(n["unref"])(c),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[13]||(o[13]=e=>Object(n["unref"])(j)(Object(n["unref"])(J).LEFT))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(B,{class:"icon"}),Object(n["createTextVNode"])(" 左对齐")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[14]||(o[14]=e=>Object(n["unref"])(j)(Object(n["unref"])(J).HORIZONTAL))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(_,{class:"icon"}),Object(n["createTextVNode"])(" 水平居中")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[15]||(o[15]=e=>Object(n["unref"])(j)(Object(n["unref"])(J).RIGHT))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(T,{class:"icon"}),Object(n["createTextVNode"])(" 右对齐")]),_:1})]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[16]||(o[16]=e=>Object(n["unref"])(j)(Object(n["unref"])(J).TOP))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(M,{class:"icon"}),Object(n["createTextVNode"])(" 上对齐")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[17]||(o[17]=e=>Object(n["unref"])(j)(Object(n["unref"])(J).VERTICAL))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(D,{class:"icon"}),Object(n["createTextVNode"])(" 垂直居中")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[18]||(o[18]=e=>Object(n["unref"])(j)(Object(n["unref"])(J).BOTTOM))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(z,{class:"icon"}),Object(n["createTextVNode"])(" 下对齐")]),_:1})]),_:1})])):Object(n["createCommentVNode"])("",!0)])])}}});l("a8e7");const oC=Yt()(nC,[["__scopeId","data-v-2633262b"]]);var aC=oC;const rC={class:"mobile-editor-header"},iC={class:"history"};var sC=Object(n["defineComponent"])({__name:"Header",props:{changeMode:{type:Function,required:!0}},setup(e){const{canUndo:t,canRedo:l}=Object(o["c"])(U()),{redo:c,undo:a}=Te();return(o,r)=>{const i=Object(n["resolveComponent"])("IconBack"),s=Object(n["resolveComponent"])("IconNext"),d=Object(n["resolveComponent"])("IconLogout");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",rC,[Object(n["createElementVNode"])("div",iC,[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["history-item",{disable:!Object(n["unref"])(t)}]),onClick:r[0]||(r[0]=Object(n["withModifiers"])(e=>Object(n["unref"])(a)(),["stop"]))},[Object(n["createVNode"])(i),Object(n["createTextVNode"])(" 撤销")],2),Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["history-item",{disable:!Object(n["unref"])(l)}]),onClick:r[1]||(r[1]=Object(n["withModifiers"])(e=>Object(n["unref"])(c)(),["stop"]))},[Object(n["createVNode"])(s),Object(n["createTextVNode"])(" 重做")],2)]),Object(n["createElementVNode"])("div",{class:"back",onClick:r[2]||(r[2]=t=>e.changeMode("preview"))},[Object(n["createVNode"])(d),Object(n["createTextVNode"])(" 退出编辑")])])}}});l("601c");const dC=Yt()(sC,[["__scopeId","data-v-8639f30e"]]);var uC=dC;const bC={class:"mobile-editor"};var OC=Object(n["defineComponent"])({__name:"index",props:{changeMode:{type:Function,required:!0}},setup(e){const t=T(),l=z(),{slideIndex:c,currentSlide:a,viewportRatio:r}=Object(o["c"])(t),{activeElementIdList:i,handleElement:s}=Object(o["c"])(l),d=Object(n["ref"])(),u=Object(n["ref"])([]),b=Object(n["computed"])(()=>a.value.background),{backgroundStyle:O}=Qa(b),m=Object(n["computed"])(()=>{if(!d.value)return 1;const e=d.value.clientWidth,t=d.value.clientHeight,l=t/e;return l>=r.value?(e-20)/Ve:(t-20)/r.value/Ve});Object(n["onMounted"])(()=>{i.value.length&&l.setActiveElementIdList([]),0!==c.value&&t.updateSlideIndex(0)});const p=Object(n["computed"])(()=>({width:Ve*m.value+"px",height:Ve*r.value*m.value+"px"})),f=Object(n["ref"])([]),j=()=>{f.value=a.value?JSON.parse(JSON.stringify(a.value.elements)):[]};Object(n["watchEffect"])(j);const{dragElement:v}=Tl(f,u,m),{scaleElement:h}=Bl(f,u,m),y=(e,t,c=!0)=>{i.value.includes(t.id)||(l.setActiveElementIdList([t.id]),l.setHandleElementId(t.id)),c&&v(e,t)},g=()=>{l.setActiveElementIdList([])};return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",bC,[Object(n["createVNode"])(uC,{changeMode:e.changeMode},null,8,["changeMode"]),Object(n["createElementVNode"])("div",{class:"content",ref_key:"contentRef",ref:d,onTouchstart:l[0]||(l[0]=e=>g())},[Object(n["createElementVNode"])("div",{class:"viewport-wrapper",style:Object(n["normalizeStyle"])(Object(n["unref"])(p))},[Object(n["createElementVNode"])("div",{class:"background",style:Object(n["normalizeStyle"])(Object(n["unref"])(O))},null,4),(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(u.value,(e,t)=>(Object(n["openBlock"])(),Object(n["createBlock"])(or,{key:t,type:e.type,axis:e.axis,length:e.length,canvasScale:Object(n["unref"])(m)},null,8,["type","axis","length","canvasScale"]))),128)),(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(f.value,e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:e.id},["line"!==e.type?(Object(n["openBlock"])(),Object(n["createBlock"])(Ik,{key:0,elementInfo:e,isSelected:Object(n["unref"])(i).includes(e.id),canvasScale:Object(n["unref"])(m),scaleElement:Object(n["unref"])(h)},null,8,["elementInfo","isSelected","canvasScale","scaleElement"])):Object(n["createCommentVNode"])("",!0)],64))),128)),Object(n["createElementVNode"])("div",{class:"viewport",style:Object(n["normalizeStyle"])({transform:`scale(${Object(n["unref"])(m)})`})},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(f.value,(e,t)=>(Object(n["openBlock"])(),Object(n["createBlock"])(Ek,{key:e.id,elementInfo:e,elementIndex:t+1,selectElement:y},null,8,["elementInfo","elementIndex"]))),128))],4)],4)],544),Object(n["createVNode"])(Pk),Object(n["unref"])(s)?(Object(n["openBlock"])(),Object(n["createBlock"])(aC,{key:0})):Object(n["createCommentVNode"])("",!0)]))}});l("2d86");const mC=Yt()(OC,[["__scopeId","data-v-8cdcde82"]]);var pC=mC;const fC={class:"header"};var jC=Object(n["defineComponent"])({__name:"MobilePlayer",props:{changeMode:{type:Function,required:!0}},setup(e){const t=T(),{slides:l,slideIndex:c,currentSlide:a,viewportRatio:r}=Object(o["c"])(t),i=Object(n["ref"])(!1),s=Object(n["ref"])({width:0,height:0});Object(n["onMounted"])(()=>{0!==c.value&&t.updateSlideIndex(0),s.value={width:document.body.clientHeight,height:document.body.clientWidth}});const d=Object(n["computed"])(()=>{const e=s.value.height/s.value.width;let t=0,l=0;return e>=r.value?(t=s.value.width,l=t*r.value):(l=s.value.height,t=l/r.value),{width:t,height:l}}),u=Object(n["ref"])(null),b=e=>{u.value={x:e.changedTouches[0].pageX,y:e.changedTouches[0].pageY}},O=e=>{if(!u.value)return;const n=Math.abs(u.value.y-e.changedTouches[0].pageY),o=e.changedTouches[0].pageX-u.value.x;Math.abs(o)>n&&Math.abs(o)>50&&(u.value=null,o<0&&c.value>0&&t.updateSlideIndex(c.value-1),o>0&&c.value{const r=Object(n["resolveComponent"])("IconLogout");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"mobile-player",style:Object(n["normalizeStyle"])({width:s.value.width+"px",height:s.value.height+"px",transform:`rotate(90deg) translateY(-${s.value.height}px)`})},[Object(n["createElementVNode"])("div",{class:"screen-slide-list",onClick:o[0]||(o[0]=e=>i.value=!i.value),onTouchstart:o[1]||(o[1]=e=>b(e)),onTouchend:o[2]||(o[2]=e=>O(e))},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(l),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["slide-item","turning-mode-"+(e.turningMode||"slideY"),{current:t===Object(n["unref"])(c),before:tObject(n["unref"])(c),hide:(t===Object(n["unref"])(c)-1||t===Object(n["unref"])(c)+1)&&e.turningMode!==Object(n["unref"])(a).turningMode}]),key:e.id},[Math.abs(Object(n["unref"])(c)-t)<2?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:"slide-content",style:Object(n["normalizeStyle"])({width:Object(n["unref"])(d).width+"px",height:Object(n["unref"])(d).height+"px"})},[Object(n["createVNode"])(Ns,{slide:e,size:Object(n["unref"])(d).width},null,8,["slide","size"])],4)):Object(n["createCommentVNode"])("",!0)],2))),128))],32),i.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[Object(n["createElementVNode"])("div",fC,[Object(n["createElementVNode"])("div",{class:"back",onClick:o[3]||(o[3]=t=>e.changeMode("preview"))},[Object(n["createVNode"])(r),Object(n["createTextVNode"])(" 退出播放")])]),Object(n["createVNode"])(Mk,{class:"thumbnails"})],64)):Object(n["createCommentVNode"])("",!0)],4)}}});l("4f8b");const vC=Yt()(jC,[["__scopeId","data-v-5293de3b"]]);var hC=vC;const yC={class:"thumbnail-list"},gC={class:"menu"};var xC=Object(n["defineComponent"])({__name:"MobilePreview",props:{changeMode:{type:Function,required:!0}},setup(e){const{slides:t}=Object(o["c"])(T()),{slidesLoadLimit:l}=_u(),c=Object(n["ref"])(),a=Object(n["ref"])(0);return Object(n["onMounted"])(()=>{c.value&&(a.value=c.value.clientWidth)}),(o,r)=>{const i=Object(n["resolveComponent"])("IconEdit"),s=Object(n["resolveComponent"])("IconFullScreenPlay");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"mobile-preview",ref_key:"mobileRef",ref:c},[Object(n["createElementVNode"])("div",yC,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(t),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"thumbnail-item",key:e.id},[Object(n["createVNode"])(Ns,{slide:e,size:a.value-20,visible:te.changeMode("editor"))},[Object(n["createVNode"])(i,{class:"icon"}),Object(n["createTextVNode"])(" 编辑")]),Object(n["createVNode"])(Object(n["unref"])(ui["a"]),{type:"vertical",style:{height:"30px"}}),Object(n["createElementVNode"])("div",{class:"menu-item",onClick:r[1]||(r[1]=t=>e.changeMode("player"))},[Object(n["createVNode"])(s,{class:"icon"}),Object(n["createTextVNode"])(" 播放")])])],512)}}});l("d039d");const kC=Yt()(xC,[["__scopeId","data-v-1c8bce03"]]);var CC=kC;const NC={class:"mobile"};var EC=Object(n["defineComponent"])({__name:"index",setup(e){const t=Object(n["ref"])("preview"),l=e=>t.value=e,c=Object(n["computed"])(()=>{const e={editor:pC,player:hC,preview:CC};return e[t.value]||null});return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",NC,[(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["resolveDynamicComponent"])(Object(n["unref"])(c)),{changeMode:l}))]))}});l("be01");const wC=Yt()(EC,[["__scopeId","data-v-1fb24d48"]]);var VC=wC,IC=Object(n["defineComponent"])({__name:"App",setup(e){const t=Z(),l=z(),c=U(),{databaseId:a}=Object(o["c"])(l),{screening:r}=Object(o["c"])(X());return window.onbeforeunload=()=>!1,Object(n["onMounted"])(async()=>{await P(),c.initSnapshotDatabase(),l.setAvailableFonts()}),window.addEventListener("unload",()=>{const e=localStorage.getItem($),t=e?JSON.parse(e):[];t.push(a.value);const l=JSON.stringify(t);localStorage.setItem($,l)}),(e,l)=>Object(n["unref"])(r)?(Object(n["openBlock"])(),Object(n["createBlock"])(kk,{key:0})):Object(n["unref"])(t)?(Object(n["openBlock"])(),Object(n["createBlock"])(Hg,{key:1})):(Object(n["openBlock"])(),Object(n["createBlock"])(VC,{key:2}))}});l("8cc5");const SC=IC;var LC=SC,BC=l("9483");Object(BC["a"])("service-worker.js",{ready(){console.log("App is being served from cache by a service worker.\nFor more details, visit https://goo.gl/AFskqB")},registered(){console.log("Service worker has been registered.")},cached(){console.log("Content has been cached for offline use.")},updatefound(){console.log("New content is downloading.")},updated(){console.log("New content is available; please refresh.")},offline(){console.log("No internet connection found. App is running in offline mode.")},error(e){console.error("Error during service worker registration:",e)}});l("793f"),l("41ed"),l("77ed"),l("5952"),l("c860"),l("ae3f"),l("8c56");var _C=l("ab81"),TC=l("16cf"),MC=l("b6ec"),DC=l("7bf8"),zC=l("3be8"),FC=l("4621"),AC=l("63d0"),$C=l("3962"),RC=l("3bce"),PC=l("f59e"),HC=l("5a81"),qC=l("c24c"),UC=l("0cf2"),GC=l("4a33"),XC=l("b0d0"),YC=l("50f1"),ZC=l("7833"),WC=l("f2e7"),JC=l("b9bc"),KC=l("7f4b"),QC=l("36da"),eN=l("cfe0"),tN=l("af8a"),lN=l("d887"),cN=l("b28e"),nN=l("f914"),oN=l("0e0a"),aN=l("f807"),rN=l("2e67"),iN=l("e792"),sN=l("e483"),dN=l("9312"),uN=l("84e7"),bN=l("500e8"),ON=l("1e27"),mN=l("7312"),pN=l("8845"),fN=l("a3ef"),jN=l("8331"),vN=l("4040"),hN=l("f745"),yN=l("8377"),gN=l("246f"),xN=l("f1d2"),kN=l("ccc7"),CN=l("e3b9"),NN=l("6010"),EN=l("7abc"),wN=l("f259"),VN=l("23fa"),IN=l("1b1c"),SN=l("fd52"),LN=l("bde2"),BN=l("5a28"),_N=l("c53e"),TN=l("e970"),MN=l("1646"),DN=l("40bb"),zN=l("f99d"),FN=l("f3c2"),AN=l("33a2"),$N=l("fdbc"),RN=l("3a3e"),PN=l("500e"),HN=l("d0c6"),qN=l("1fcb"),UN=l("dcc2"),GN=l("a5f1"),XN=l("ce42"),YN=l("fa00"),ZN=l("0996"),WN=l("2c06"),JN=l("a5dc"),KN=l("8678"),QN=l("d7fb"),eE=l("b7c8"),tE=l("ae33"),lE=l("8c1a"),cE=l("b7b3"),nE=l("96be"),oE=l("5a69"),aE=l("f9e5"),rE=l("bbce"),iE=l("d41d"),sE=l("77ad"),dE=l("46cd"),uE=l("df0d"),bE=l("70f2"),OE=l("d16b"),mE=l("4bad"),pE=l("2e2d"),fE=l("e7f4"),jE=l("eb50"),vE=l("0be2"),hE=l("a90c"),yE=l("c90a"),gE=l("9fbc"),xE=l("5b20"),kE=l("69de"),CE=l("fbe7"),NE=l("ea01"),EE=l("74f3"),wE=l("3ee3"),VE=l("5294"),IE=l("eac5"),SE=l("b8af"),LE=l("dde4"),BE=l("cead"),_E=l("114f"),TE=l("bf2c");const ME={IconPlayOne:TE["a"],IconFullScreenPlay:_E["a"],IconLock:BE["a"],IconUnlock:LE["a"],IconPpt:SE["a"],IconFormat:IE["a"],IconPicture:VE["a"],IconFullScreen:wE["a"],IconList:EE["a"],IconOrderedList:NE["a"],IconHelpcenter:CE["a"],IconFlipVertically:kE["a"],IconFlipHorizontally:xE["a"],IconFontSize:gE["a"],IconCode:yE["a"],IconTextBold:hE["a"],IconTextItalic:vE["a"],IconTextUnderline:jE["a"],IconStrikethrough:fE["a"],IconEdit:pE["a"],IconQuote:mE["a"],IconBackgroundColor:OE["a"],IconGroup:bE["a"],IconUngroup:uE["a"],IconBack:dE["a"],IconNext:sE["a"],IconFullwidth:iE["a"],IconAlignTop:rE["a"],IconAlignLeft:aE["a"],IconAlignRight:oE["a"],IconAlignBottom:nE["a"],IconAlignVertically:cE["a"],IconAlignHorizontally:lE["a"],IconBringToFront:tE["a"],IconSendToBack:eE["a"],IconAlignTextLeft:QN["a"],IconAlignTextRight:KN["a"],IconAlignTextCenter:JN["a"],IconRowHeight:WN["a"],IconWrite:ZN["a"],IconInsertTable:YN["a"],IconAddText:XN["a"],IconFill:GN["a"],IconTailoring:UN["a"],IconEffects:qN["a"],IconColorFilter:HN["a"],IconUp:PN["a"],IconDown:RN["a"],IconPlus:$N["a"],IconMinus:AN["a"],IconConnection:FN["a"],IconBringToFrontOne:zN["a"],IconSentToBack:DN["a"],IconGithub:MN["a"],IconChartProportion:TN["a"],IconChartHistogram:_N["a"],IconChartHistogramOne:BN["a"],IconChartLineArea:LN["a"],IconChartRing:SN["a"],IconChartScatter:IN["a"],IconChartLine:VN["a"],IconChartPie:wN["a"],IconText:EN["a"],IconRotate:NN["a"],IconLeftTwo:CN["a"],IconRightTwo:kN["a"],IconPlatte:xN["a"],IconClose:gN["a"],IconCloseSmall:yN["a"],IconUndo:hN["a"],IconTransform:vN["a"],IconClick:jN["a"],IconTheme:fN["a"],IconArrowCircleLeft:pN["a"],IconGraphicDesign:mN["a"],IconLogout:ON["a"],IconErase:bN["a"],IconClear:uN["a"],IconFolderClose:dN["a"],IconAlignTextTopOne:sN["a"],IconAlignTextBottomOne:iN["a"],IconAlignTextMiddleOne:rN["a"],IconPause:aN["a"],IconVolumeMute:oN["a"],IconVolumeNotice:nN["a"],IconVolumeSmall:cN["a"],IconVideoTwo:lN["a"],IconFormula:tN["a"],IconLinkOne:eN["a"],IconFullScreenOne:QC["a"],IconOffScreenOne:KC["a"],IconPower:JC["a"],IconListView:WC["a"],IconMagic:ZC["a"],IconHighLight:YC["a"],IconShare:XC["a"],IconIndentLeft:GC["a"],IconIndentRight:UC["a"],IconVerticalSpacingBetweenItems:qC["a"],IconCopy:HC["a"],IconDelete:PC["a"],IconSquare:RC["a"],IconRound:$C["a"],IconNeedle:AC["a"],IconTextRotationNone:FC["a"],IconTextRotationDown:zC["a"],IconFormatBrush:DC["a"],IconPreviewOpen:MC["a"],IconPreviewClose:TC["a"],IconStopwatchStart:_C["a"]};var DE={install(e){for(const t of Object.keys(ME))e.component(t,ME[t])}};const zE={class:"menu-content"},FE=["onClick"],AE={class:"text"},$E={key:0,class:"sub-text"};var RE=Object(n["defineComponent"])({__name:"MenuContent",props:{menus:{type:Array,required:!0},handleClickMenuItem:{type:Function,required:!0}},setup(e){return(t,l)=>{const c=Object(n["resolveComponent"])("menu-content",!0);return Object(n["openBlock"])(),Object(n["createElementBlock"])("ul",zE,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.menus,(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:t.text||l},[t.hide?Object(n["createCommentVNode"])("",!0):(Object(n["openBlock"])(),Object(n["createElementBlock"])("li",{key:0,class:Object(n["normalizeClass"])(["menu-item",{divider:t.divider,disable:t.disable}]),onClick:Object(n["withModifiers"])(l=>e.handleClickMenuItem(t),["stop"])},[t.divider?Object(n["createCommentVNode"])("",!0):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:Object(n["normalizeClass"])(["menu-item-content",{"has-children":t.children,"has-handler":t.handler}])},[Object(n["createElementVNode"])("span",AE,Object(n["toDisplayString"])(t.text),1),t.subText&&!t.children?(Object(n["openBlock"])(),Object(n["createElementBlock"])("span",$E,Object(n["toDisplayString"])(t.subText),1)):Object(n["createCommentVNode"])("",!0),t.children&&t.children.length?(Object(n["openBlock"])(),Object(n["createBlock"])(c,{key:1,class:"sub-menu",menus:t.children,handleClickMenuItem:e.handleClickMenuItem},null,8,["menus","handleClickMenuItem"])):Object(n["createCommentVNode"])("",!0)],2))],10,FE))],64))),128))])}}});l("ca3c");const PE=Yt()(RE,[["__scopeId","data-v-e470e712"]]);var HE=PE,qE=Object(n["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(e){const t=e,l=Object(n["computed"])(()=>{const e=170,l=30,c=11,n=5,{x:o,y:a}=t.axis,r=t.menus.filter(e=>!(e.divider||e.hide)).length,i=t.menus.filter(e=>e.divider).length,s=e,d=r*l+i*c+2*n,u=document.body.clientWidth,b=document.body.clientHeight;return{left:u<=o+s?o-s:o,top:b<=a+d?a-d:a}}),c=e=>{e.disable||e.children&&!e.handler||(e.handler&&e.handler(t.el),t.removeContextmenu())};return(t,o)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,[Object(n["createElementVNode"])("div",{class:"mask",onContextmenu:o[0]||(o[0]=Object(n["withModifiers"])(t=>e.removeContextmenu(),["prevent"])),onMousedown:o[1]||(o[1]=t=>e.removeContextmenu())},null,32),Object(n["createElementVNode"])("div",{class:"contextmenu",style:Object(n["normalizeStyle"])({left:Object(n["unref"])(l).left+"px",top:Object(n["unref"])(l).top+"px"}),onContextmenu:o[2]||(o[2]=Object(n["withModifiers"])(()=>{},["prevent"]))},[Object(n["createVNode"])(HE,{menus:e.menus,handleClickMenuItem:c},null,8,["menus"])],36)],64))}});l("b096");const UE=qE;var GE=UE;const XE="CTX_CONTEXTMENU_HANDLER",YE=(e,t,l)=>{t.stopPropagation(),t.preventDefault();const c=l.value(e);if(!c)return;let o=null;const a=()=>{o&&(document.body.removeChild(o),o=null),e.classList.remove("contextmenu-active"),document.body.removeEventListener("scroll",a),window.removeEventListener("resize",a)},r={axis:{x:t.x,y:t.y},el:e,menus:c,removeContextmenu:a};o=document.createElement("div");const i=Object(n["createVNode"])(GE,r,null);Object(n["render"])(i,o),document.body.appendChild(o),e.classList.add("contextmenu-active"),document.body.addEventListener("scroll",a),window.addEventListener("resize",a)},ZE={mounted(e,t){e[XE]=l=>YE(e,l,t),e.addEventListener("contextmenu",e[XE])},unmounted(e){e&&e[XE]&&(e.removeEventListener("contextmenu",e[XE]),delete e[XE])}};var WE=ZE;const JE="CTX_CLICK_OUTSIDE_HANDLER",KE=(e,t,l)=>{const c=l.value,n=t.composedPath(),o=n?n.indexOf(e)<0:!e.contains(t.target);o&&c(t)},QE={mounted(e,t){e[JE]=l=>KE(e,l,t),setTimeout(()=>{document.addEventListener("click",e[JE])},0)},unmounted(e){e[JE]&&(document.removeEventListener("click",e[JE]),delete e[JE])}};var ew=QE,tw={install(e){e.directive("contextmenu",WE),e.directive("click-outside",ew)}};const lw=Object(n["createApp"])(LC);lw.use(DE),lw.use(tw),lw.use(Object(o["a"])()),lw.mount("#app")},cd4f:function(e,t,l){},cd7e:function(e,t,l){"use strict";l("fb92")},cf16:function(e,t,l){"use strict";l("c6ee")},d039d:function(e,t,l){"use strict";l("adee")},d097:function(e,t,l){},d2a1:function(e,t,l){},d2a4:function(e,t,l){},d2a7:function(e,t,l){},d2ee:function(e,t,l){"use strict";l("36ac")},d31d:function(e,t,l){},d422:function(e,t,l){},d45e:function(e,t,l){},d668:function(e,t,l){},d970:function(e,t,l){"use strict";l("97ba")},db8d:function(e,t,l){"use strict";l("8ddd")},dc4aa:function(e,t,l){"use strict";l("53c4")},dc8c:function(e,t,l){"use strict";l("9fe7")},dcba:function(e,t,l){},dd03:function(e,t,l){"use strict";l("d31d")},dd7b:function(e,t,l){"use strict";l("a832")},df7d:function(e,t,l){"use strict";l("9f60")},dfe7:function(e,t,l){"use strict";l("4ac4")},e0b6:function(e,t,l){"use strict";l("d45e")},e38f:function(e,t,l){"use strict";l("6877")},e394:function(e,t,l){},e4f3:function(e,t,l){},e611:function(e,t,l){},e63b:function(e,t,l){},e7fc:function(e,t,l){"use strict";l("a37f")},e818:function(e,t,l){"use strict";l("c42d")},e83e:function(e,t,l){"use strict";l("6b65")},e9df:function(e,t,l){"use strict";l("5c9a")},ea69:function(e,t,l){},eae7:function(e,t,l){},eb5e:function(e,t,l){},eb6d:function(e,t,l){"use strict";l("4327")},ec27:function(e,t,l){"use strict";l("e394")},ec31:function(e,t,l){},ecba:function(e,t,l){"use strict";l("a697")},ef77:function(e,t,l){},f126:function(e,t,l){"use strict";l("e63b")},f191:function(e,t,l){},f9e0:function(e,t,l){},fa09:function(e,t,l){},fac9:function(e,t,l){"use strict";l("45c1")},fb4b:function(e,t,l){"use strict";l("5aad")},fb92:function(e,t,l){},fbe9:function(e,t,l){},fbfe:function(e,t,l){"use strict";l("ef77")},fef7:function(e,t,l){"use strict";l("084d")},ff57:function(e,t,l){}}); +//# sourceMappingURL=app.000ee1e5.js.map \ No newline at end of file diff --git a/js/app.000ee1e5.js.map b/js/app.000ee1e5.js.map new file mode 100644 index 00000000..1e65d736 --- /dev/null +++ b/js/app.000ee1e5.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/views/components/element/AudioElement/BaseAudioElement.vue?d01d","webpack:///./src/components/ColorPicker/Saturation.vue?c2ef","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LatexStylePanel.vue?f968","webpack:///./src/views/Screen/BaseView.vue?5f13","webpack:///./src/views/Editor/CanvasTool/index.vue?56e5","webpack:///./src/views/Editor/Toolbar/SlideDesignPanel.vue?0bd8","webpack:///./src/views/components/element/LatexElement/index.vue?dedd","webpack:///./src/views/Editor/Toolbar/SymbolPanel.vue?fba6","webpack:///./src/components/MoveablePanel.vue?44ac","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/MultiStylePanel.vue?99b4","webpack:///./src/components/ColorPicker/Hue.vue?51e2","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue?3407","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue?9944","webpack:///./src/views/Editor/Canvas/Operate/RotateHandler.vue?1148","webpack:///./src/views/Editor/Toolbar/common/ElementFilter.vue?1120","webpack:///./src/views/Editor/Canvas/Operate/BorderLine.vue?dc09","webpack:///./src/views/Editor/CanvasTool/ChartPool.vue?e6bd","webpack:///./src/views/Mobile/MobileEditor/SlideToolbar.vue?4faa","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/Thumbnails/LayoutPool.vue?6185","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue?22f1","webpack:///./src/views/components/element/ProsemirrorEditor.vue?953a","webpack:///./src/views/Editor/CanvasTool/LinePool.vue?b397","webpack:///./src/views/components/element/AudioElement/AudioPlayer.vue?194f","webpack:///./src/views/Screen/WritingBoardTool.vue?5437","webpack:///./src/views/Editor/ExportDialog/ExportSpecificFile.vue?0864","webpack:///./src/views/Editor/Toolbar/common/TextColorButton.vue?c723","webpack:///./src/views/components/element/VideoElement/VideoPlayer/index.vue?2768","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue?7128","webpack:///./src/views/components/element/ElementOutline.vue?1a7f","webpack:///./src/views/Screen/index.vue?f2f3","webpack:///./src/views/Editor/Canvas/MouseSelection.vue?c748","webpack:///./src/views/components/element/ImageElement/BaseImageElement.vue?636a","webpack:///./src/views/Mobile/MobilePlayer.vue?4f23","webpack:///./src/views/Editor/Toolbar/common/ElementShadow.vue?f038","webpack:///./src/views/components/element/TextElement/BaseTextElement.vue?b117","webpack:///./src/components/CheckboxButtonGroup.vue?504a","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue?d210","webpack:///./src/components/CheckboxButton.vue?9231","webpack:///./src/views/components/element/LatexElement/BaseLatexElement.vue?dc6f","webpack:///./src/views/components/element/ImageElement/ImageClipHandler.vue?ee13","webpack:///./src/views/Editor/Canvas/ViewportBackground.vue?3afb","webpack:///./src/views/components/element/VideoElement/BaseVideoElement.vue?da7f","webpack:///./src/views/Mobile/MobileEditor/Header.vue?bef9","webpack:///./src/views/components/element/ChartElement/Chart.vue?eb4b","webpack:///./src/views/Editor/Canvas/Operate/ShapeElementOperate.vue?c66a","webpack:///./src/components/FileInput.vue?310d","webpack:///./src/views/Editor/Canvas/Operate/index.vue?38d7","webpack:///./src/views/components/element/TableElement/EditableTable.vue?307f","webpack:///./src/views/components/element/VideoElement/index.vue?1b93","webpack:///./src/views/components/ThumbnailSlide/index.vue?4fc5","webpack:///./src/views/components/element/ChartElement/Chart.vue?6018","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue?adbd","webpack:///./src/views/Editor/Toolbar/common/ElementColorMask.vue?218d","webpack:///./src/views/Editor/CanvasTool/ShapeItemThumbnail.vue?93fb","webpack:///./src/views/Screen/PresenterView.vue?a89e","webpack:///./src/views/Editor/ExportDialog/ExportImage.vue?a2ce","webpack:///./src/views/components/element/AudioElement/index.vue?3fea","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/AudioStylePanel.vue?0511","webpack:///./src/views/components/element/VideoElement/ScreenVideoElement.vue?edf3","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue?f9c5","webpack:///./src/views/Editor/Canvas/LinkDialog.vue?0918","webpack:///./src/views/Editor/ExportDialog/ExportPDF.vue?fd16","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue?e7c9","webpack:///./src/views/components/element/TableElement/CustomTextarea.vue?8683","webpack:///./src/views/components/element/ChartElement/index.vue?03dc","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue?8f5e","webpack:///./src/views/Editor/ExportDialog/ExportJSON.vue?cf15","webpack:///./src/views/components/element/ShapeElement/BaseShapeElement.vue?afd8","webpack:///./src/App.vue?48fe","webpack:///./src/views/Editor/Canvas/index.vue?385b","webpack:///./src/views/Screen/ScreenSlideList.vue?56b9","webpack:///./src/views/Editor/ExportDialog/ExportPPTX.vue?790c","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue?17ae","webpack:///./src/views/components/element/ChartElement/BaseChartElement.vue?84b4","webpack:///./src/views/Editor/Toolbar/MultiPositionPanel.vue?ba89","webpack:///./src/views/Screen/ScreenSlide.vue?4e32","webpack:///./src/views/Editor/Toolbar/common/ElementFlip.vue?e2c4","webpack:///./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue?7843","webpack:///./src/views/Editor/index.vue?1201","webpack:///./src/views/Screen/CountdownTimer.vue?617f","webpack:///./src/components/ColorPicker/Checkboard.vue?a884","webpack:///./src/views/Mobile/MobileEditor/ElementToolbar.vue?6b13","webpack:///./src/views/Editor/Toolbar/common/ElementOutline.vue?055a","webpack:///./src/components/ColorPicker/EditableInput.vue?ace0","webpack:///./src/views/components/element/TableElement/StaticTable.vue?538b","webpack:///./src/views/Editor/Canvas/Operate/ImageElementOperate.vue?36e6","webpack:///./src/views/components/element/ShapeElement/index.vue?bc41","webpack:///./src/components/Contextmenu/index.vue?07b9","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue?da55","webpack:///./src/views/Editor/Canvas/Operate/ResizeHandler.vue?881c","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue?4314","webpack:///./src/views/Editor/EditorHeader/index.vue?c577","webpack:///./src/components/WritingBoard.vue?1b61","webpack:///./src/views/components/element/TextElement/index.vue?e06d","webpack:///./src/views/components/element/ImageElement/index.vue?f7b5","webpack:///./src/components/ColorPicker/index.vue?69ff","webpack:///./src/views/components/element/LineElement/index.vue?179c","webpack:///./src/views/Mobile/index.vue?3233","webpack:///./src/views/Mobile/MobileThumbnails.vue?3d26","webpack:///./src/components/LaTeXEditor/index.vue?62b7","webpack:///./src/views/Editor/Canvas/Operate/LinkHandler.vue?8758","webpack:///./src/components/Contextmenu/MenuContent.vue?6675","webpack:///./src/types/toolbar.ts","webpack:///./src/configs/font.ts","webpack:///./src/utils/prosemirror/utils.ts","webpack:///./src/utils/font.ts","webpack:///./src/mocks/slides.ts","webpack:///./src/mocks/theme.ts","webpack:///./src/mocks/layout.ts","webpack:///./src/store/slides.ts","webpack:///./src/store/main.ts","webpack:///./src/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/edit.ts","webpack:///./src/configs/hotkey.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/types/slides.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/stringify.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/components/FileInput.vue","webpack:///./src/components/FileInput.vue?ae58","webpack:///./src/views/Editor/EditorHeader/index.vue","webpack:///./src/views/Editor/EditorHeader/index.vue?f944","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/configs/imageClip.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/useMoveShapeKeypoint.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/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/emitter.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/ShapeItemThumbnail.vue","webpack:///./src/views/Editor/CanvasTool/ShapeItemThumbnail.vue?7471","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/hooks/useTextFormatPainter.ts","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/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/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/common/TextColorButton.vue","webpack:///./src/views/Editor/Toolbar/common/TextColorButton.vue?c2f0","webpack:///./src/components/CheckboxButton.vue","webpack:///./src/components/CheckboxButton.vue?b241","webpack:///./src/components/CheckboxButtonGroup.vue","webpack:///./src/components/CheckboxButtonGroup.vue?da6b","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/common/ElementColorMask.vue","webpack:///./src/views/Editor/Toolbar/common/ElementColorMask.vue?2431","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/hooks/useSlideTheme.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/components/FullscreenSpin.vue","webpack:///./src/components/FullscreenSpin.vue?40fd","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/components/MoveablePanel.vue","webpack:///./src/components/MoveablePanel.vue?f129","webpack:///./src/views/Editor/SelectPanel.vue","webpack:///./src/views/Editor/SelectPanel.vue?88f8","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/CountdownTimer.vue","webpack:///./src/views/Screen/CountdownTimer.vue?b415","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/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/components/FullscreenSpin.vue?a251","webpack:///./src/views/Mobile/MobilePreview.vue?14b8","webpack:///./src/views/Screen/ScreenElement.vue?9349","webpack:///./src/views/Editor/ExportDialog/index.vue?589d","webpack:///./src/views/components/element/TableElement/index.vue?bb65","webpack:///./src/views/Editor/Thumbnails/index.vue?ffc4","webpack:///./src/views/Editor/Toolbar/common/ColorButton.vue?a034","webpack:///./src/views/Mobile/MobileEditor/MobileOperate.vue?5efe","webpack:///./src/views/Editor/Canvas/GridLines.vue?cd44","webpack:///./src/views/Editor/SelectPanel.vue?07f0","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue?9629","webpack:///./src/views/Editor/CanvasTool/MediaInput.vue?ea7f","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/VideoStylePanel.vue?33eb","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue?b279","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue?1b33","webpack:///./src/components/ColorPicker/Alpha.vue?3aaa","webpack:///./src/components/LaTeXEditor/FormulaContent.vue?ad41","webpack:///./src/views/components/element/TableElement/BaseTableElement.vue?6e7f","webpack:///./src/views/Editor/Remark/index.vue?d576","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue?a9dc","webpack:///./src/views/Editor/Canvas/Ruler.vue?933a","webpack:///./src/views/Editor/Canvas/Operate/LineElementOperate.vue?b7eb","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue?9029","webpack:///./src/views/components/element/LineElement/BaseLineElement.vue?d2fd","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue?6dda"],"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","SYS_FONTS","label","WEB_FONTS","autoSelectAll","view","empty","state","selection","selectAll","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","getAttrValue","attr","attrs","isActiveMark","markActive","isInSet","storedMarks","rangeHasMark","getAttrValueInSelection","keepChecking","nodesBetween","_defaultAttrs","color","backcolor","fontsize","fontname","align","getTextAttrs","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","slides","id","elements","left","top","viewBox","path","fill","fixedRatio","opacity","rotate","flipV","lineHeight","content","defaultFontName","defaultColor","end","points","style","background","wordSpace","theme","themeColor","fontColor","backgroundColor","layouts","outline","text","useSlidesStore","defineStore","slideIndex","viewportRatio","getters","currentSlide","currentSlideAnimations","animations","els","elIds","map","el","animation","includes","elId","formatedAnimations","trigger","last","autoNext","subColor","tinycolor","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","omit","nanoid","customAlphabet","databaseId","useMainStore","activeElementIdList","handleElementId","activeGroupElementId","hiddenElementIdList","canvasPercentage","canvasScale","canvasDragged","thumbnailsFocus","editorAreaFocus","disableHotkeys","gridLineSize","showRuler","creatingElement","availableFonts","toolbarState","SLIDE_DESIGN","clipingImageElementId","richTextAttrs","selectedTableCells","isScaling","selectedSlidesIndex","dialogForExport","textFormatPainter","showSelectPanel","activeElementList","slidesStore","handleElement","setActiveElementIdList","setHandleElementId","setActiveGroupElementId","setHiddenElementIdList","setCanvasPercentage","percentage","setCanvasScale","scale","setCanvasDragged","isDragged","setThumbnailsFocus","isFocus","setEditorareaFocus","setDisableHotkeysState","disable","setGridLineSize","setRulerState","show","setCreatingElement","setAvailableFonts","setToolbarState","setClipingImageElementId","setRichtextAttrs","setSelectedTableCells","cells","setScalingState","updateSelectedSlidesIndex","setDialogForExport","setTextFormatPainter","setSelectPanelState","LOCALSTORAGE_KEY_DISCARDED_DB","databaseNamePrefix","deleteDiscardedDB","async","now","Date","getTime","localStorageDiscardedDB","localStorage","getItem","localStorageDiscardedDBList","databaseNames","Dexie","getDatabaseNames","discardedDBNames","prefix","time","split","delete","removeItem","PPTistDB","constructor","super","version","stores","snapshots","writingBoardImgs","table","db","useSnapshotStore","snapshotCursor","snapshotLength","canUndo","canRedo","setSnapshotCursor","cursor","setSnapshotLength","newFirstSnapshot","add","allKeys","orderBy","keys","needDeleteKeys","snapshot","snapshotLengthLimit","update","bulkDelete","mainStore","toArray","useKeyboardStore","ctrlKeyState","shiftKeyState","spaceKeyState","ctrlOrShiftKeyActive","setCtrlKeyState","active","setShiftKeyState","setSpaceKeyState","useScreenStore","screening","setScreening","fillDigit","digit","len","padStart","isPC","navigator","userAgent","match","ElementOrderCommands","ElementAlignCommands","OperateBorderLines","OperateResizeHandlers","OperateLineHandlers","KEYS","HOTKEY_DOC","children","CRYPTO_KEY","encrypt","msg","CryptoJS","AES","toString","decrypt","ciphertext","bytes","enc","Utf8","copyText","Promise","resolve","reject","fakeElement","clipboard","Clipboard","action","container","body","on","e","destroy","appendChild","click","removeChild","readClipboard","readText","then","pasteCustomClipboardString","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","createSlideIdMap","slideIdMap","createElementIdMap","groupIdMap","elIdMap","groupId","getTableSubThemeColor","rgba","setAlpha","toRgbString","getLineElementPath","broken","mid","curve","cubic","c1","c2","p1","p2","parseText2Paragraphs","htmlText","replace","paragraphs","string","paragraph","getImageSize","src","img","onload","imgWidth","clientWidth","imgHeight","clientHeight","onerror","getImageDataURL","file","reader","FileReader","addEventListener","readAsDataURL","VIEWPORT_SIZE","ShapePathFormulasKeys","ElementTypes","SHAPE_PATH_FORMULAS","ROUND_RECT","editable","defaultValue","relative","getBaseSize","formula","CUT_RECT_DIAGONAL","CUT_RECT_SINGLE","CUT_RECT_SAMESIDE","ROUND_RECT_DIAGONAL","ROUND_RECT_SINGLE","ROUND_RECT_SAMESIDE","CUT_ROUND_RECT","MESSAGE","arrowWidth","arrowheight","ROUND_MESSAGE","L","lineWidth","RING_RECT","PLUS","TRIANGLE","vertex","PARALLELOGRAM_LEFT","point","PARALLELOGRAM_RIGHT","TRAPEZOID","BULLET","INDICATOR","SHAPE_LIST","pathFormula","special","outlined","CHART_TYPES","bar","horizontalBar","area","scatter","pie","ring","snapshotStore","addHistorySnapshot","debounce","addSnapshot","trailing","redo","throttle","reDo","leading","undo","unDo","storeToRefs","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","cellMinHeight","createTextElement","position","vertical","editorRef","querySelector","focus","createShapeElement","keypoint","createLineElement","isBroken","isCurve","isCubic","createLatexElement","w","h","latex","strokeWidth","createVideoElement","createAudioElement","loop","autoplay","addElementsFromData","currentSlideElementIdList","inCurrentSlide","values","addSlidesFromData","newSlides","target","useCreateElement","useAddSlidesOrElements","createTextElementFromClipboard","pasteTextClipboardData","onlySlide","onlyElements","_selectedSlidesIndex","computed","selectedSlides","selectedSlidesId","usePasteTextClipboardData","resetSlides","emptySlide","command","UP","DOWN","copySlide","pasteSlide","catch","err","message","warning","createSlide","createSlideByTemplate","newSlide","copyAndPasteSlide","targetSlidesId","cutSlide","selectAllSlide","newSelectedSlidesIndex","sortSlides","oldIndex","_slides","_slide","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","combine","uncombine","remove","moveSlide","PAGEUP","PAGEDOWN","order","tabActiveElement","firstElement","currentIndex","nextIndex","nextElementId","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","onMounted","onUnmounted","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","lexTagAttributes","quote","wordBegin","words","isQuoteEnd","isTagEnd","isWordEnd","isQuoteStart","word","isNotPair","secondWord","startsWith","newWord","thirdWord","endsWith","lexSkipTag","safeTagName","nextTag","tagState","lexTag","textStart","secondChar","tagStartClose","close","firstChar","tagEndClose","lex","isComment","safeTag","lexer","parser","root","stack","hasTerminalParent","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","toAST","typeMap","1","2","4","8","16","32","64","128","256","512","toPoints","pathData","SVGPathData","commands","x","y","x1","y1","x2","y2","lastPoint","cubicBezierPoints","arcToBezier","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","INCH_PX_RATIO","PT_PX_RATIO","exporting","ref","exportImage","domRef","quality","ignoreWebfont","toImage","toPng","toJpeg","foreignObjectSpans","querySelectorAll","spanRef","removeAttribute","config","fontEmbedCSS","dataUrl","saveAs","error","exportSpecificFile","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","undefined","moveTo","getShadowOption","shadow","v","offset","angle","blur","getOutlineOption","transparency","dashType","getLinkOption","exportPPTX","masterOverwrite","pptx","pptxgen","layout","defineLayout","bgColor","bgAlpha","defineSlideMaster","title","pptxSlide","image","gradientColor","color1","color2","mix","remark","addNotes","textProps","valign","margin","lineSpacingMultiple","autoFit","charSpacing","paragraphSpace","vert","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","plotArea","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","_defineComponent","__name","setup","__props","_ctx","_cache","_openBlock","_createElementBlock","_Fragment","_renderList","_unref","_createElementVNode","_toDisplayString","hotkey","__exports__","accept","default","emits","emit","inputRef","handleClick","handleChange","onClick","$event","_renderSlot","$slots","ref_key","onChange","_withScopeId","_pushScopeId","_popScopeId","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","href","_hoisted_13","MenuItem","Item","useExport","toggleGridLines","toggleRuler","openSelectPanel","hotkeyDrawerVisible","goLink","open","_component_IconFolderClose","_resolveComponent","_component_IconEdit","_component_IconPpt","_component_IconHelpcenter","_component_IconShare","_component_IconGithub","_createVNode","overlay","_withCtx","FileInput","_createTextVNode","_","mouseLeaveDelay","placement","closable","visible","onClose","HotkeyDoc","injectKeySlideScale","injectKeySlideId","removeAllRanges","getSelection","canvasRef","viewportLeft","viewportTop","initViewportPosition","canvasWidth","canvasHeight","viewportActualWidth","viewportActualHeight","setViewportPosition","newValue","oldValue","newViewportActualWidth","oldViewportActualWidth","newViewportActualHeight","oldViewportActualHeight","watch","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","inRangeElementIdList","groupElementList","groupElement","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","getOppositePoint","direction","oppositeMap","RIGHT_BOTTOM","LEFT_BOTTOM","LEFT_TOP","RIGHT_TOP","ClipPathTypes","ClipPaths","alignmentLines","scaleElement","isTouchEvent","MouseEvent","changedTouches","elOriginLeft","elOriginTop","elOriginWidth","elOriginHeight","originTableCellMinHeight","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","uniq","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","moveShapeKeypoint","shapePathData","baseSize","originPos","shapeElement","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","pentagon","hexagon","heptagon","octagon","chevron","arrow","parallelogram","parallelogram2","trapezoid","trapezoid2","clipShape","imgPosition","outlineWidth","outlineStyle","outlineColor","Number","required","useElementOutline","toRef","overflow","stroke","_createCommentVNode","Function","elementInfo","useClipImage","_createBlock","ImageRectOutline","ImageEllipseOutline","ImagePolygonOutline","clipData","clipPath","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","_resolveDirective","_withDirectives","_normalizeStyle","draggable","alt","onMousedown","_withModifiers","_normalizeClass","contextmenus","isCliping","useElementShadow","useElementFlip","useFilter","handleSelectElement","stopPropagation","originClip","centerOffsetX","centerOffsetY","rotatedCenterX","rotatedCenterY","_props","_directive_contextmenu","transform","ImageClipHandler","onClip","onTouchstart","ImageOutline","onDragstart","colorMask","buildKeymap","cmd","joinUp","joinDown","undoInputRule","selectParentNode","toggleMark","strong","splitListItem","list_item","liftListItem","sinkListItem","blockQuoteRule","wrappingInputRule","orderedListRule","childCount","bulletListRule","codeBlockRule","textblockTypeInputRule","buildInputRules","rules","smartQuotes","ellipsis","emDash","ordered_list","bullet_list","code_block","inputRules","buildPlugins","keymap","baseKeymap","dropCursor","gapCursor","history","listStyleType","group","parseDOM","tag","getAttrs","dom","hasAttribute","getAttribute","toDOM","listItem","_listItem","ignore","skip","hard_break","otherNodes","excludes","forecolor","inline","inclusive","schemaNodes","schemaMarks","Schema","createDocument","htmlString","DOMParser","parseFromString","firstElementChild","fromSchema","initProsemirrorEditor","EditorView","EditorState","plugins","EmitterEvents","emitter","mitt","setTextAlign","alignment","tasks","allowedNodeTypes","Set","has","task","setNodeMarkup","alignmentCommand","setSelection","isList","toggleList","listType","itemType","blockRange","parentList","validContent","nodeAttrs","wrapInList","setNodeIndentMarkup","delta","minIndent","maxIndent","setTextIndent","TextSelection","AllSelection","indentCommand","docChanged","Boolean","autoFocus","expose","editorViewRef","handleInput","innerHTML","handleFocus","handleBlur","handleKeydown","textContent","hasFocus","replaceRangeWith","setProps","execCommand","wrapIn","removeMark","insertText","handleDOMEvents","keydown","mouseup","RICH_TEXT_COMMAND","off","canMove","realHeightCache","realWidthCache","updateTextElementHeight","entries","contentRect","realHeight","realWidth","updateContent","checkEmptyText","pureText","isHandleElement","textShadow","letterSpacing","fontFamily","writingMode","ElementOutline","ProsemirrorEditor","textIndent","onUpdate","gradientTransform","defaultText","updateText","_text","prosemirrorEditorRef","startEdit","nextTick","onDblclick","gradient","GradientDefs","onBlur","pathMap","dot","rotateMap","markerUnits","orient","markerWidth","markerHeight","refX","refY","svgWidth","svgHeight","lineDashArray","LinePointMarker","chartRef","slideScale","inject","chartHeight","getPieChartData","getOptions","propsOptopns","renderChart","BarChart","LineChart","PieChart","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","isEqual","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","_vShow","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","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","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","loadError","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","_resolveDynamicComponent","validator","colorList","mostReadable","includeFallbackColors","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","verticalTextElementResizeHandlers","borderLines","T","R","isWide","localActiveElementList","useCommonOperate","setRange","watchEffect","disableResize","BorderLine","ResizeHandler","script","render","__default__","inheritAttrs","handlerVisible","scaleWidth","scaleHeight","RotateHandler","keypointStyle","keypointPos","handlers","ctrlHandler","ctrlHandler1","ctrlHandler2","cannotRotate","setLink","linkRegExp","removeLink","useLink","turnTarget","targetIndex","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","provide","ThumbnailElement","SelectOption","Option","address","selectedSlide","tabs","save","success","tab","placeholder","disabled","ThumbnailSlide","linkDialogVisible","setLocalElementList","useViewportSize","useDropImageOrText","useMouseSelection","useDragElement","useDragLineElement","useSelectElement","useScaleElement","useRotateElement","useMoveShapeKeypoint","handleClickBlankArea","removeEditorAreaFocus","throttleScaleCanvas","throttleUpdateSlideIndex","handleMousewheelCanvas","deltaY","useInsertFromCreateSelection","onWheel","ElementCreateSelection","onCreated","AlignmentLine","MultiSelectOperate","Operate","ViewportBackground","MouseSelection","EditableElement","Ruler","footer","centered","destroyOnClose","LinkDialog","selectShape","ShapeItemThumbnail","LINE_LIST","selectLine","chartList","selectChart","_component_IconChartLine","_component_IconChartHistogram","_component_IconChartPie","_component_IconChartHistogramOne","_component_IconChartLineArea","_component_IconChartRing","_component_IconChartScatter","customRow","customCol","isCustom","handleClickTable","insertCustomTable","videoSrc","audioSrc","insertVideo","insertAudio","hfmathConfig","SUB_SUP_SCALE","FORMULA_LIST","SYMBOL_LIST","box","pathd","eq","hfmath","boxW","boxH","SCALE_X","SCALE_Y","TextArea","formulaList","symbolList","textAreaRef","selectedSymbolKey","symbolPool","selectedSymbol","insertSymbol","FormulaContent","SymbolContent","canvasScalePresetList","canvasScaleVisible","applyCanvasPresetScale","insertImageElement","shapePoolVisible","linePoolVisible","chartPoolVisible","tableGeneratorVisible","mediaInputVisible","latexEditorVisible","textTypeSelectVisible","drawText","drawShape","drawLine","_component_IconBack","_component_IconNext","_component_IconFontSize","_component_IconTextRotationNone","_component_IconTextRotationDown","_component_IconDown","_component_IconPicture","_component_IconGraphicDesign","_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","changeSlideIndex","handleClickSlideThumbnail","minIndex","handleDragEnd","eventData","contextmenusThumbnails","contextmenusThumbnailItem","LayoutPool","Draggable","modelValue","scroll","scrollSensitivity","setData","onEnd","itemKey","toggleFormatPainter","deep","updateOpacity","_component_IconPlatte","white","grey","checkboardCache","renderCheckboard","fillRect","translate","toDataURL","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","clamp","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","setItem","changeColor","openEyeDropper","isSupportedEyeDropper","browserEyeDropper","customEyeDropper","eyeDropper","EyeDropper","tColor","sRGBHex","targetRef","maskRef","cssText","colorBlockRef","classList","contains","toCanvas","pixelRatio","toFixed","handleMouseleave","handleMousedown","_component_IconNeedle","Saturation","onColorChange","Hue","Alpha","EditableInput","fixed","hasOutline","updateOutline","outlineProps","toggleOutline","checked","_outline","ColorPicker","ColorButton","hasShadow","updateShadow","shadowProps","_shadow","toggleShadow","_hoisted_23","_hoisted_24","_hoisted_25","Group","RadioGroup","Button","RadioButton","OptGroup","SelectOptGroup","InputGroup","ButtonGroup","presetStyles","useTextFormatPainter","bulletListPanelVisible","orderedListPanelVisible","bulletListStyleTypeOption","orderedListStyleTypeOption","fontSizeOptions","lineHeightOptions","wordSpaceOptions","textIndentOptions","paragraphSpaceOptions","updateLineHeight","updateParagraphSpace","updateWordSpace","updateTextIndent","updateFill","emitRichTextCommand","emitBatchRichTextCommand","linkPopoverVisible","openLinkPopover","updateLink","_component_IconAddText","_component_IconText","_component_IconHighLight","_component_IconTextBold","_component_IconTextItalic","_component_IconTextUnderline","_component_IconStrikethrough","_component_IconCode","_component_IconQuote","_component_IconFormat","_component_IconFormatBrush","_component_IconLinkOne","_component_IconAlignTextLeft","_component_IconAlignTextCenter","_component_IconAlignTextRight","_component_IconList","_component_IconOrderedList","_component_IconIndentLeft","_component_IconIndentRight","_component_IconRowHeight","_component_IconVerticalSpacingBetweenItems","_component_IconFullwidth","compact","suffixIcon","TextColorButton","CheckboxButtonGroup","CheckboxButton","ElementShadow","ElementOpacity","updateFlip","flipProps","_component_IconFlipVertically","_component_IconFlipHorizontally","defaultFilters","unit","filterOptions","hasFilters","updateFilter","_handleElement","originFilters","toggleFilters","defaultColorMask","hasColorMask","toggleColorMask","updateColorMask","colorMaskProp","newColorMask","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","ElementColorMask","ElementFilter","handleShapeElement","fillType","updateFillType","updateGradient","gradientProps","_gradient","changeShape","updateTextAlign","_component_IconAlignTextTopOne","_component_IconAlignTextMiddleOne","_component_IconAlignTextBottomOne","handleLineElement","updateLine","CELL_WIDTH","CELL_HEIGHT","selectedRange","tempRangeSize","focusCell","rangeLines","resizablePointStyle","initData","_data","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_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","isHorizontalText","isVerticalText","updateLeft","updateTop","updateShapePathData","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","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","handleAnimationEnd","removeProperty","once","updateElementAnimationDuration","updateElementAnimationTrigger","updateElementAnimation","handleAnimationId","animationItem","addAnimation","popoverMaskHide","handlePopoverVisibleChange","openAnimationPool","in","out","attention","_component_IconEffects","_component_IconClick","onVisibleChange","handle","PRESET_THEMES","getSlideAllColors","createSlideThemeColorMap","newColors","oldColors","themeColorMap","otherColors","setSlideTheme","colorMap","applyPresetThemeToSingleSlide","applyPresetThemeToAllSlides","applyThemeToAllSlides","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","useSlideTheme","updateBackgroundType","newBackground","updateBackground","uploadBackgroundImage","applyBackgroundAllSlide","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","loading","tip","imageThumbnailsRef","rangeType","renderSlides","expImage","FullscreenSpin","createIframe","iframe","writeContent","printNode","docType","styleSheets","styleSheet","cssRules","rule","head","write","print","iframeContentWindow","contentWindow","contentDocument","handleLoadIframe","handleAfterprint","pdfThumbnailsRef","padding","expPDF","pageSize","currentDialogComponent","dialogMap","ExportImage","ExportJSON","ExportPDF","ExportPPTX","ExportSpecificFile","moveable","windowWidth","_component_IconClose","_elements","lastItem","selectGroupEl","idList","selectEl","hideElement","showAll","currentSlideElIdList","needHiddenElementIdList","hideAll","editingElId","saveElementName","enterEdit","_component_IconUp","_component_IconPreviewClose","_component_IconPreviewOpen","MoveablePanel","onKeydown","_withKeys","closeExportDialog","remarkHeight","useGlobalHotkey","usePasteEvent","EditorHeader","Thumbnails","CanvasTool","Canvas","Remark","Toolbar","SelectPanel","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","penSize","markSize","rubberSize","writingBoardRef","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","clearCanvas","setImageDataURL","imageDataURL","Image","drawImage","_component_IconWrite","onMouseup","onTouchmove","onTouchend","writingBoardColors","writingBoardColor","writingBoardModel","sizePopoverType","changeModel","closeWritingBoard","where","equals","ret","currentImg","hanldeWritingEnd","_component_IconErase","_component_IconClear","WritingBoard","inTiming","isCountdown","minute","inputEditable","clearTimer","reset","toggleCountdown","changeTime","isNumber","maxlength","changeViewMode","useExecPlay","useSlideSize","useFullscreen","rightToolsVisible","writingBoardToolVisible","timerlVisible","slideThumbnailModelVisible","laserPen","_component_IconLeftTwo","_component_IconRightTwo","_component_IconMagic","_component_IconStopwatchStart","_component_IconListView","_component_IconOffScreenOne","_component_IconFullScreenOne","_component_IconPower","ScreenSlideList","SlideThumbnails","WritingBoardTool","CountdownTimer","slideListWrapRef","thumbnailsRef","remarkFontSize","currentSlideRemark","handleMousewheelThumbnails","scrollBy","setRemarkFontSize","activeThumbnailRef","offsetLeft","scrollTo","behavior","viewMode","ESC","BaseView","PresenterView","_resizeHandlers","delayOnTouchOnly","delay","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","initSnapshotDatabase","discardedDB","discardedDBList","newDiscardedDB","Screen","Editor","Mobile","register","ready","console","log","registered","cached","updatefound","updated","offline","icons","IconPlayOne","PlayOne","IconFullScreenPlay","FullScreenPlay","IconLock","Lock","IconUnlock","Unlock","IconPpt","Ppt","IconFormat","Format","IconPicture","Picture","IconFullScreen","FullScreen","IconList","List","IconOrderedList","OrderedList","IconHelpcenter","Helpcenter","IconFlipVertically","FlipVertically","IconFlipHorizontally","FlipHorizontally","IconFontSize","FontSize","IconCode","Code","IconTextBold","TextBold","IconTextItalic","TextItalic","IconTextUnderline","TextUnderline","IconStrikethrough","Strikethrough","IconEdit","Edit","IconQuote","Quote","IconBackgroundColor","BackgroundColor","IconGroup","IconUngroup","Ungroup","IconBack","Back","IconNext","Next","IconFullwidth","Fullwidth","IconAlignTop","AlignTop","IconAlignLeft","AlignLeft","IconAlignRight","AlignRight","IconAlignBottom","AlignBottom","IconAlignVertically","AlignVertically","IconAlignHorizontally","AlignHorizontally","IconBringToFront","BringToFront","IconSendToBack","SendToBack","IconAlignTextLeft","AlignTextLeft","IconAlignTextRight","AlignTextRight","IconAlignTextCenter","AlignTextCenter","IconRowHeight","RowHeight","IconWrite","Write","IconInsertTable","InsertTable","IconAddText","AddText","IconFill","Fill","IconTailoring","Tailoring","IconEffects","Effects","IconColorFilter","ColorFilter","IconUp","Up","IconDown","Down","IconPlus","Plus","IconMinus","Minus","IconConnection","Connection","IconBringToFrontOne","BringToFrontOne","IconSentToBack","SentToBack","IconGithub","Github","IconChartProportion","ChartProportion","IconChartHistogram","ChartHistogram","IconChartHistogramOne","ChartHistogramOne","IconChartLineArea","ChartLineArea","IconChartRing","ChartRing","IconChartScatter","ChartScatter","IconChartLine","ChartLine","IconChartPie","ChartPie","IconText","Text","IconRotate","Rotate","IconLeftTwo","LeftTwo","IconRightTwo","RightTwo","IconPlatte","Platte","IconClose","Close","IconCloseSmall","CloseSmall","IconUndo","Undo","IconTransform","Transform","IconClick","Click","IconTheme","Theme","IconArrowCircleLeft","ArrowCircleLeft","IconGraphicDesign","GraphicDesign","IconLogout","Logout","IconErase","Erase","IconClear","Clear","IconFolderClose","FolderClose","IconAlignTextTopOne","AlignTextTopOne","IconAlignTextBottomOne","AlignTextBottomOne","IconAlignTextMiddleOne","AlignTextMiddleOne","IconPause","Pause","IconVolumeMute","VolumeMute","IconVolumeNotice","VolumeNotice","IconVolumeSmall","VolumeSmall","IconVideoTwo","VideoTwo","IconFormula","Formula","IconLinkOne","LinkOne","IconFullScreenOne","FullScreenOne","IconOffScreenOne","OffScreenOne","IconPower","Power","IconListView","ListView","IconMagic","Magic","IconHighLight","HighLight","IconShare","Share","IconIndentLeft","IndentLeft","IconIndentRight","IndentRight","IconVerticalSpacingBetweenItems","VerticalSpacingBetweenItems","IconCopy","Copy","IconDelete","Delete","IconSquare","Square","IconRound","Round","IconNeedle","Needle","IconTextRotationNone","TextRotationNone","IconTextRotationDown","TextRotationDown","IconFormatBrush","FormatBrush","IconPreviewOpen","PreviewOpen","IconPreviewClose","PreviewClose","IconStopwatchStart","StopwatchStart","install","app","component","menus","handleClickMenuItem","_component_menu_content","menu","removeContextmenu","MENU_WIDTH","MENU_HEIGHT","DIVIDER_HEIGHT","PADDING","menuCount","dividerCount","menuWidth","menuHeight","screenHeight","MenuContent","CTX_CONTEXTMENU_HANDLER","contextmenuListener","binding","vm","createVNode","ContextmenuComponent","ContextmenuDirective","mounted","unmounted","CTX_CLICK_OUTSIDE_HANDLER","clickListener","composedPath","isClickOutside","ClickOutsideDirective","directive","Contextmenu","ClickOutside","createApp","App","use","Icon","Directive","createPinia","mount"],"mappings":"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kCCAA,W,kCCAA,W,oCCAA,W,6DCAA,W,sFCAA,W,kCCAA,W,uICAA,W,kFCAA,W,kCCAA,W,wICAA,W,oCCAA,W,6DCAA,W,6DCAA,W,kCCAA,W,6JCAA,W,kCCAA,W,oCCAA,W,6DCAA,W,yDCAA,W,kCCAA,W,sFCAA,W,sICAA,W,2DCAA,W,oCCAA,W,kCCAA,W,oCCAA,W,oFCAA,W,oCCAA,W,2DCAA,W,6DCAA,W,6DCAA,W,oCCAA,W,+GCAA,W,oCCAA,W,oCCAA,W,+GCAA,W,6GCAA,W,6DCAA,W,oCCAA,W,oCCAA,W,oCCAA,W,oCCAA,W,6DCAA,W,kCCAA,W,6DCAA,W,oCCAA,W,kCCAA,W,6DCAA,W,6DCAA,W,2DCAA,W,oFCAA,W,oCCAA,W,oCCAA,W,oCCAA,W,+JCAA,W,kCCAA,W,uGCAA,W,yDCAA,W,gFCAA,W,kCCAA,W,kCCAA,W,kCCAA,W,kCCAA,W,qJCAA,W,kCCAA,W,yDCAA,W,kCCAA,W,gFCAA,W,kCCAA,W,gFCAA,W,kCCAA,W,yDCAA,W,kCCAA,W,yDCAA,W,kCCAA,W,yDCAA,W,kCCAA,W,yDCAA,W,yDCAA,W,uGCAA,W,8HCAA,W,yICAkByC,E,qCAAlB,SAAkBA,GAChBA,qBACAA,gCACAA,wBACAA,8BACAA,gCACAA,sCACAA,qCAPF,CAAkBA,MAAa,KCAxB,MAAMC,EAAY,CACvB,CAAEC,MAAO,QAASlB,MAAO,SACzB,CAAEkB,MAAO,OAAQlB,MAAO,mBACxB,CAAEkB,MAAO,KAAMlB,MAAO,UACtB,CAAEkB,MAAO,KAAMlB,MAAO,UACtB,CAAEkB,MAAO,KAAMlB,MAAO,SACtB,CAAEkB,MAAO,MAAOlB,MAAO,WACvB,CAAEkB,MAAO,KAAMlB,MAAO,YACtB,CAAEkB,MAAO,KAAMlB,MAAO,eACtB,CAAEkB,MAAO,OAAQlB,MAAO,WACxB,CAAEkB,MAAO,OAAQlB,MAAO,WACxB,CAAEkB,MAAO,OAAQlB,MAAO,UACxB,CAAEkB,MAAO,OAAQlB,MAAO,cACxB,CAAEkB,MAAO,OAAQlB,MAAO,eACxB,CAAEkB,MAAO,OAAQlB,MAAO,UACxB,CAAEkB,MAAO,OAAQl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C,KAAM,6CACNyX,YAAajC,GAAsBU,iBAErC,CACEnW,QAAS,CAAC,IAAK,KACfC,KAAM,qDACNyX,YAAajC,GAAsBW,mBAErC,CACEpW,QAAS,CAAC,IAAK,KACfC,KAAM,sDACNyX,YAAajC,GAAsBS,mBAErC,CACElW,QAAS,CAAC,IAAK,KACfC,KAAM,gEACNyX,YAAajC,GAAsBe,gBAErC,CACExW,QAAS,CAAC,IAAK,KACfC,KAAM,yDACNyX,YAAajC,GAAsBa,mBAErC,CACEtW,QAAS,CAAC,IAAK,KACfC,KAAM,+DACNyX,YAAajC,GAAsBc,qBAErC,CACEvW,QAAS,CAAC,IAAK,KACfC,KAAM,yEACNyX,YAAajC,GAAsBY,uBAKzC,CACE9c,KAAM,OACNuU,SAAU,CACR,CACE9N,QAAS,CAAC,IAAK,KACfC,KAAM,uDAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,sCACNyX,YAAajC,GAAsBwB,UAErC,CACEjX,QAAS,CAAC,IAAK,KACfC,KAAM,6BAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,yFAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,4CACNyX,YAAajC,GAAsB0B,oBAErC,CACEnX,QAAS,CAAC,IAAK,KACfC,KAAM,2CACNyX,YAAajC,GAAsB4B,qBAErC,CACErX,QAAS,CAAC,IAAK,KACfC,KAAM,4CACNyX,YAAajC,GAAsB6B,WAErC,CACEtX,QAAS,CAAC,IAAK,KACfC,KAAM,iDAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,sDACNyX,YAAajC,GAAsB8B,QAErC,CACEvX,QAAS,CAAC,IAAK,KACfC,KAAM,iEACNyX,YAAajC,GAAsB+B,WAErC,CACExX,QAAS,CAAC,IAAK,KACfC,KAAM,mGAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,qGAER,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,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,0DAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,sEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,uEAER,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,4DACNyX,YAAajC,GAAsBoB,GAErC,CACE7W,QAAS,CAAC,IAAK,KACfC,KAAM,uEACNyX,YAAajC,GAAsBsB,WAErC,CACE/W,QAAS,CAAC,IAAK,KACfC,KAAM,iEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,mHACNyX,YAAajC,GAAsBuB,MAErC,CACEhX,QAAS,CAAC,IAAK,KACfC,KAAM,sHAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,gEACNyX,YAAajC,GAAsBgB,SAErC,CACEzW,QAAS,CAAC,IAAK,KACfC,KAAM,mIACNyX,YAAajC,GAAsBmB,eAErC,CACE5W,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,qFAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,wHAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6JAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,4DAKZ,CACE1G,KAAM,KACNuU,SAAU,CACR,CACE9N,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,KACfC,KAAM,qGAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,qOAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,uFAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,sFAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,8GAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,8GAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,8DAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,gEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6DAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,gEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,4CAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,iDAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6DAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,kEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6FAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,yFAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,0HAER,CACED,QAAS,CAAC,KAAM,MAChBC,KAAM,8IACN0X,SAAS,GAEX,CACE3X,QAAS,CAAC,KAAM,MAChBC,KAAM,gJACN0X,SAAS,KAKf,CACEpe,KAAM,OACNuU,SAAU,CACR,CACE9N,QAAS,CAAC,KAAM,MAChBC,KAAM,qvCACN0X,SAAS,GAEX,CACE3X,QAAS,CAAC,KAAM,MAChBC,KAAM,42BACN0X,SAAS,GAEX,CACE3X,QAAS,CAAC,KAAM,MAChBC,KAAM,icACN0X,SAAS,GAEX,CACE3X,QAAS,CAAC,KAAM,MAChBC,KAAM,mfACN0X,SAAS,GAEX,CACE3X,QAAS,CAAC,KAAM,MAChBC,KAAM,gpDACN0X,SAAS,GAEX,CACE3X,QAAS,CAAC,KAAM,MAChBC,KAAM,4uBACN0X,SAAS,GAEX,CACE3X,QAAS,CAAC,KAAM,MAChBC,KAAM,gbACN0X,SAAS,GAEX,CACE3X,QAAS,CAAC,KAAM,MAChBC,KAAM,ssCACN0X,SAAS,GAEX,CACE3X,QAAS,CAAC,KAAM,MAChBC,KAAM,w/BACN0X,SAAS,GAEX,CACE3X,QAAS,CAAC,KAAM,MAChBC,KAAM,w3CACN0X,SAAS,GAEX,CACE3X,QAAS,CAAC,KAAM,MAChBC,KAAM,wkBACN0X,SAAS,GAEX,CACE3X,QAAS,CAAC,KAAM,MAChBC,KAAM,0jBACN0X,SAAS,GAEX,CACE3X,QAAS,CAAC,KAAM,MAChBC,KAAM,qyBACN0X,SAAS,GAEX,CACE3X,QAAS,CAAC,KAAM,MAChBC,KAAM,2ZACN0X,SAAS,GAEX,CACE3X,QAAS,CAAC,KAAM,MAChBC,KAAM,yjBACN0X,SAAS,GAEX,CACE3X,QAAS,CAAC,KAAM,MAChBC,KAAM,qxBACN0X,SAAS,GAEX,CACE3X,QAAS,CAAC,KAAM,MAChBC,KAAM,soBACN0X,SAAS,GAEX,CACE3X,QAAS,CAAC,KAAM,MAChBC,KAAM,2kCACN0X,SAAS,GAEX,CACE3X,QAAS,CAAC,KAAM,MAChBC,KAAM,wrBACN0X,SAAS,KAKf,CACEpe,KAAM,KACNuU,SAAU,CACR,CACE9N,QAAS,CAAC,KAAM,MAChBC,KAAM,oxDACN0X,SAAS,EACTC,UAAU,GAEZ,CACE5X,QAAS,CAAC,KAAM,MAChBC,KAAM,o1BACN0X,SAAS,EACTC,UAAU,GAEZ,CACE5X,QAAS,CAAC,KAAM,MAChBC,KAAM,ssBACN0X,SAAS,EACTC,UAAU,GAEZ,CACE5X,QAAS,CAAC,KAAM,MAChBC,KAAM,mtBACN0X,SAAS,EACTC,UAAU,GAEZ,CACE5X,QAAS,CAAC,KAAM,MAChBC,KAAM,2nBACN0X,SAAS,EACTC,UAAU,GAEZ,CACE5X,QAAS,CAAC,KAAM,MAChBC,KAAM,2mBACN0X,SAAS,EACTC,UAAU,GAEZ,CACE5X,QAAS,CAAC,KAAM,MAChBC,KAAM,yqCACN0X,SAAS,EACTC,UAAU,GAEZ,CACE5X,QAAS,CAAC,KAAM,MAChBC,KAAM,owBACN0X,SAAS,EACTC,UAAU,MC1tBLC,GAA0B,CACrCC,IAAK,MACLC,cAAe,MACfrF,KAAM,OACNsF,KAAM,OACNC,QAAS,OACTC,IAAK,MACLC,KAAM,OCVO,YACb,MAAMC,EAAgBrN,IAGhBsN,EAAqBC,uBAAS,WAClCF,EAAcG,gBACb,IAAK,CAAEC,UAAU,IAGdC,EAAOC,uBAAS,WACpBN,EAAcO,SACb,IAAK,CAAEC,SAAS,EAAMJ,UAAU,IAG7BK,EAAOH,uBAAS,WACpBN,EAAcU,SACb,IAAK,CAAEF,SAAS,EAAMJ,UAAU,IAEnC,MAAO,CACLH,qBACAI,OACAI,SCCW,QACb,MAAM5M,EAAYzG,IACZ0B,EAAc3F,KACd,gBAAE8E,GAAoB0S,eAAY9M,IAClC,MAAEjL,EAAF,cAASU,GAAkBqX,eAAY7R,IAEvC,mBAAEmR,GAAuBW,KAGzBra,EAAgB,CAAC8F,EAAqBwU,KAC1C/R,EAAY1C,WAAWC,GACvBwH,EAAU7E,uBAAuB,CAAC3C,EAAQ7E,KAEtCyG,EAAgBvP,OAAOmV,EAAU3D,mBAAmB,MAExD4Q,WAAW,KACTjN,EAAUjE,oBAAmB,IAC5B,GAECiR,GAAUA,IAEdZ,KAOIc,EAAsBzE,IAC1BD,GAAaC,GAAK9E,KAAK,EAAGtR,QAAOC,aAC/B,MAAMoJ,EAAQpJ,EAASD,EAEnBqJ,EAAQjG,EAAc5K,OAASwH,EAAQkX,IACzClX,EAAQkX,GACRjX,EAASD,EAAQqJ,GAEVpJ,EAASiX,GAAgB9T,EAAc5K,QAC9CyH,EAASiX,GAAgB9T,EAAc5K,MACvCwH,EAAQC,EAASoJ,GAGnBhJ,EAAc,CACZpF,KAAM,QACNqG,GAAIyF,eAAO,IACXqP,MACApW,QACAC,SACAuB,MAAO0V,GAAgBlX,GAAS,EAChCyB,KAAMyV,GAAgB9T,EAAc5K,MAAQyH,GAAU,EACtD4B,YAAY,EACZE,OAAQ,OASR+Y,EAAsB7f,IAC1B,MAAM8f,EAA8B,CAClC9f,KAAM,QACNqG,GAAIyF,eAAO,IACXiU,UAAWzB,GAAYte,GACvBuG,KAAM,IACNC,IAAK,MACLzB,MAAO,IACPC,OAAQ,IACR8B,OAAQ,EACRY,WAAY,CAACD,EAAMlK,MAAMmK,YACzBsY,UAAWvY,EAAMlK,MAAMoK,UACvBjN,KAAM,CACJulB,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,OACrCC,QAAS,CAAC,OACVC,OAAQ,CACN,CAAC,GAAI,GAAI,EAAG,EAAG,OAKrB,IAAIC,EAAwB,GACf,kBAATpgB,EAA0BogB,EAAU,CAAEC,gBAAgB,GACxC,SAATrgB,EAAiBogB,EAAU,CAAEE,UAAU,GAC9B,YAATtgB,EAAoBogB,EAAU,CAAEG,UAAU,GACjC,SAATvgB,IAAiBogB,EAAU,CAAEI,OAAO,IAE7Cpb,EAAc,IACT0a,EACHM,aASEK,EAAqB,CAACC,EAAaC,KACvC,MAAMrZ,EAAwB,CAC5BxE,SAAU2E,EAAMlK,MAAMoH,SACtBhC,MAAO8E,EAAMlK,MAAMoK,WAEfjN,EAAsB,GAC5B,IAAK,IAAIM,EAAI,EAAGA,EAAI0lB,EAAK1lB,IAAK,CAC5B,MAAM4lB,EAAwB,GAC9B,IAAK,IAAI1kB,EAAI,EAAGA,EAAIykB,EAAKzkB,IACvB0kB,EAASplB,KAAK,CAAE6K,GAAIyF,eAAO,IAAK+U,QAAS,EAAGC,QAAS,EAAG/Y,KAAM,GAAIT,UAEpE5M,EAAKc,KAAKolB,GAGZ,MAAMG,EAAqB,IACrBC,EAAsB,GAEtBC,EAAsB,IAAIngB,MAAM6f,GAAKha,KAAK,EAAIga,GAE9C5b,EAAQ4b,EAAMI,EACd/b,EAAS0b,EAAMM,EAErB5b,EAAc,CACZpF,KAAM,QACNqG,GAAIyF,eAAO,IACX/G,QACAC,SACAic,YACAna,OAAQ,EACRpM,OACA6L,MAAO0V,GAAgBlX,GAAS,EAChCyB,KAAMyV,GAAgB9T,EAAc5K,MAAQyH,GAAU,EACtD8C,QAAS,CACP/C,MAAO,EACPuC,MAAO,QACP3E,MAAO,WAET8E,MAAO,CACL9E,MAAO8E,EAAMlK,MAAMmK,WACnBwZ,WAAW,EACXC,WAAW,EACXC,WAAW,EACXC,WAAW,GAEbC,cAAe,MAcbC,EAAoB,CAACC,EAAiC9mB,KAC1D,MAAM,KAAE6L,EAAF,IAAQC,EAAR,MAAazB,EAAb,OAAoBC,GAAWwc,EAC/Bva,GAAc,OAAJvM,QAAI,IAAJA,OAAA,EAAAA,EAAMuM,UAAW,GAC3Bwa,GAAe,OAAJ/mB,QAAI,IAAJA,OAAA,EAAAA,EAAM+mB,YAAY,EAE7Bpb,EAAKyF,eAAO,IAClB1G,EAAc,CACZpF,KAAM,OACNqG,KACAE,OACAC,MACAzB,QACAC,SACAiC,UACAH,OAAQ,EACRI,gBAAiBO,EAAMlK,MAAMoH,SAC7BwC,aAAcM,EAAMlK,MAAMoK,UAC1B8Z,YACC,KACD9B,WAAW,KACT,MAAM+B,EAAgCvc,SAASwc,cAAc,qBAAqBtb,kBAC9Eqb,GAAWA,EAAUE,SACxB,MASDC,EAAqB,CAACL,EAAiC9mB,KAC3D,MAAM,KAAE6L,EAAF,IAAQC,EAAR,MAAazB,EAAb,OAAoBC,GAAWwc,EAC/B1B,EAA8B,CAClC9f,KAAM,QACNqG,GAAIyF,eAAO,IACXvF,OACAC,MACAzB,QACAC,SACAyB,QAAS/L,EAAK+L,QACdC,KAAMhM,EAAKgM,KACXC,KAAMc,EAAMlK,MAAMmK,WAClBd,YAAY,EACZE,OAAQ,GAGV,GADIpM,EAAK0jB,UAAS0B,EAAW1B,SAAU,GACnC1jB,EAAKyjB,YAAa,CACpB2B,EAAW3B,YAAczjB,EAAKyjB,YAC9B2B,EAAWrZ,QAAU,CAAC1B,EAAOC,GAE7B,MAAMmZ,EAAc/B,GAAoB1hB,EAAKyjB,aACzC,aAAcA,GAChB2B,EAAWpZ,KAAOyX,EAAYzB,QAAQ3X,EAAOC,EAAQmZ,EAAY5B,cACjEuD,EAAWgC,SAAW3D,EAAY5B,cAE/BuD,EAAWpZ,KAAOyX,EAAYzB,QAAQ3X,EAAOC,GAEpDI,EAAc0a,IAQViC,EAAoB,CAACP,EAA+B9mB,KACxD,MAAM,KAAE6L,EAAF,IAAQC,EAAR,MAAalF,EAAb,IAAoB8F,GAAQoa,EAE5B1B,EAA6B,CACjC9f,KAAM,OACNqG,GAAIyF,eAAO,IACXvF,OACAC,MACAlF,QACA8F,MACAC,OAAQ3M,EAAK2M,OACb1E,MAAO8E,EAAMlK,MAAMmK,WACnBJ,MAAO5M,EAAK4M,MACZvC,MAAO,GAELrK,EAAKsnB,WAAUlC,EAAW1F,OAAS,EAAE9Y,EAAM,GAAK8F,EAAI,IAAM,GAAI9F,EAAM,GAAK8F,EAAI,IAAM,IACnF1M,EAAKunB,UAASnC,EAAWxF,MAAQ,EAAEhZ,EAAM,GAAK8F,EAAI,IAAM,GAAI9F,EAAM,GAAK8F,EAAI,IAAM,IACjF1M,EAAKwnB,UAASpC,EAAWvF,MAAQ,CAAC,EAAEjZ,EAAM,GAAK8F,EAAI,IAAM,GAAI9F,EAAM,GAAK8F,EAAI,IAAM,GAAI,EAAE9F,EAAM,GAAK8F,EAAI,IAAM,GAAI9F,EAAM,GAAK8F,EAAI,IAAM,KAC1IhC,EAAc0a,IAOVqC,EAAsBznB,IAC1B0K,EAAc,CACZpF,KAAM,QACNqG,GAAIyF,eAAO,IACX/G,MAAOrK,EAAK0nB,EACZpd,OAAQtK,EAAK2nB,EACbvb,OAAQ,EACRP,MAAO0V,GAAgBvhB,EAAK0nB,GAAK,EACjC5b,KAAMyV,GAAgB9T,EAAc5K,MAAQ7C,EAAK2nB,GAAK,EACtD3b,KAAMhM,EAAKgM,KACX4b,MAAO5nB,EAAK4nB,MACZ3f,MAAO8E,EAAMlK,MAAMoK,UACnB4a,YAAa,EACb9b,QAAS,CAAC/L,EAAK0nB,EAAG1nB,EAAK2nB,GACvBzb,YAAY,KAQV4b,EAAsBrH,IAC1B/V,EAAc,CACZpF,KAAM,QACNqG,GAAIyF,eAAO,IACX/G,MAAO,IACPC,OAAQ,IACR8B,OAAQ,EACRP,MAAO0V,GAAgB,KAAO,EAC9BzV,KAAMyV,GAAgB9T,EAAc5K,MAAQ,KAAO,EACnD4d,SAQEsH,EAAsBtH,IAC1B/V,EAAc,CACZpF,KAAM,QACNqG,GAAIyF,eAAO,IACX/G,MAAO,GACPC,OAAQ,GACR8B,OAAQ,EACRP,MAAO0V,GAAgB,IAAM,EAC7BzV,KAAMyV,GAAgB9T,EAAc5K,MAAQ,IAAM,EAClDmlB,MAAM,EACNC,UAAU,EACV/b,YAAY,EACZjE,MAAO8E,EAAMlK,MAAMmK,WACnByT,SAIJ,MAAO,CACLyE,qBACAC,qBACAY,qBACAc,oBACAM,qBACAE,oBACAI,qBACAK,qBACAC,uBCzUW,QACb,MAAM/P,EAAYzG,IACZ0B,EAAc3F,KACd,aAAEK,GAAiBmX,eAAY7R,IAE/B,mBAAEmR,GAAuBW,KAMzBmD,EAAuBtc,IAC3B,MAAM,WAAEsT,EAAF,QAAcC,GAAYF,GAAmBrT,GAC7Cuc,EAA4Bxa,EAAa9K,MAAM+I,SAASoC,IAAIC,GAAMA,EAAGtC,IAE3E,IAAK,MAAM6E,KAAW5E,EAAU,CAC9B,MAAMwc,EAAiBD,EAA0Bha,SAASqC,EAAQ7E,IAElE6E,EAAQ7E,GAAKwT,EAAQ3O,EAAQ7E,IAEzByc,IACF5X,EAAQ3E,KAAO2E,EAAQ3E,KAAO,GAC9B2E,EAAQ1E,IAAM0E,EAAQ1E,IAAM,IAG1B0E,EAAQ4O,UAAS5O,EAAQ4O,QAAUF,EAAW1O,EAAQ4O,UAE5DnM,EAAY1C,WAAW3E,GACvBoM,EAAU7E,uBAAuB1S,OAAO4nB,OAAOlJ,IAC/CiF,KAOIkE,EAAqB5c,IACzB,MAAMsT,EAAaD,GAAiBrT,GAC9B6c,EAAY7c,EAAOsC,IAAIwB,IAC3B,MAAM,WAAE0P,EAAF,QAAcC,GAAYF,GAAmBzP,EAAM5D,UAEzD,IAAK,MAAM4E,KAAWhB,EAAM5D,SAC1B4E,EAAQ7E,GAAKwT,EAAQ3O,EAAQ7E,IACzB6E,EAAQ4O,UAAS5O,EAAQ4O,QAAUF,EAAW1O,EAAQ4O,UAGtD5O,EAAQzH,MAA8B,UAAtByH,EAAQzH,KAAKzD,OAG3B0Z,EAAWxO,EAAQzH,KAAKyf,QAC1BhY,EAAQzH,KAAKyf,OAASxJ,EAAWxO,EAAQzH,KAAKyf,eAGpChY,EAAQzH,MAIxB,GAAIyG,EAAM3B,WACR,IAAK,MAAMK,KAAasB,EAAM3B,WAC5BK,EAAUvC,GAAKyF,eAAO,IACtBlD,EAAUE,KAAO+Q,EAAQjR,EAAUE,MAGvC,MAAO,IACFoB,EACH7D,GAAIqT,EAAWxP,EAAM7D,OAGzBsH,EAAY1D,SAASgZ,GACrBnE,KAGF,MAAO,CACL8D,sBACAI,sBCvEW,QACb,MAAM,kBAAEzB,GAAsB4B,MACxB,oBAAEP,EAAF,kBAAuBI,GAAsBI,KAM7CC,EAAkCtb,IACtCwZ,EAAkB,CAChBhb,KAAM,EACNC,IAAK,EACLzB,MAAO,IACPC,OAAQ,IACP,CAAEiC,QAASc,KAQVub,EAAyB,CAACvb,EAAcqY,KAC5C,MAAMmD,GAAmB,OAAPnD,QAAO,IAAPA,OAAA,EAAAA,EAASmD,aAAa,EAClCC,GAAsB,OAAPpD,QAAO,IAAPA,OAAA,EAAAA,EAASoD,gBAAgB,EAExCjN,EAAgBD,GAA2BvO,GAGjD,GAA6B,kBAAlBwO,EAA4B,CACrC,MAAM,KAAEvW,EAAF,KAAQtF,GAAS6b,EAEV,aAATvW,GAAwBujB,EACV,WAATvjB,GAAsBwjB,GAAcR,EAAkBtoB,GADxBkoB,EAAoBloB,QAKxD,IAAK8oB,IAAiBD,EAAW,CACpC,MAAMvI,EAASJ,GAAqBrE,GACpC8M,EAA+BrI,KAInC,MAAO,CACLsI,2BCxCW,QACb,MAAM5Q,EAAYzG,IACZ0B,EAAc3F,KACZsF,oBAAqBmW,EAAvB,oBAA6CvX,GAAwBsT,eAAY9M,IACjF,aAAErK,EAAF,OAAgBjC,EAAhB,MAAwBqB,EAAxB,WAA+BS,GAAesX,eAAY7R,GAE1DL,EAAsBoW,sBAAS,IAAM,IAAID,EAAqBlmB,MAAO2K,EAAW3K,QAChFomB,EAAiBD,sBAAS,IAAMtd,EAAO7I,MAAM0I,OAAO,CAACC,EAAMwE,IAAU4C,EAAoB/P,MAAMsL,SAAS6B,KACxGkZ,EAAmBF,sBAAS,IAAMC,EAAepmB,MAAMmL,IAAIxC,GAAQA,EAAKG,MAExE,uBAAEid,GAA2BO,MAC7B,kBAAEb,GAAsBI,MACxB,mBAAEtE,GAAuBW,KAGzBqE,EAAc,KAClB,MAAMC,EAAoB,CACxB1d,GAAIyF,eAAO,IACXxF,SAAU,GACViB,WAAY,CACVvH,KAAM,QACN2C,MAAO8E,EAAMlK,MAAMqK,kBAGvB+F,EAAY3C,iBAAiB,GAC7B0H,EAAU7E,uBAAuB,IACjCF,EAAY3D,UAAU,CAAC+Z,KAOnB/Y,EAAoBgZ,IACpBA,IAAY3P,GAAK4P,IAAM/b,EAAW3K,MAAQ,GACxC2O,EAAoB3O,MAAMrC,QAAQwX,EAAU7E,uBAAuB,IACvEF,EAAY3C,iBAAiB9C,EAAW3K,MAAQ,IAEzCymB,IAAY3P,GAAK6P,MAAQhc,EAAW3K,MAAQ6I,EAAO7I,MAAMrC,OAAS,IACrEgR,EAAoB3O,MAAMrC,QAAQwX,EAAU7E,uBAAuB,IACvEF,EAAY3C,iBAAiB9C,EAAW3K,MAAQ,KAK9C4mB,EAAY,KAChB,MAAMpc,EAAO0M,GAAQlL,KAAKC,UAAU,CAClCxJ,KAAM,SACNtF,KAAMipB,EAAepmB,SAGvB4X,GAASpN,GAAMsO,KAAK,KAClB3D,EAAUnE,oBAAmB,MAK3B6V,EAAa,KACjBjO,KAAgBE,KAAKtO,IACnBub,EAAuBvb,EAAM,CAAEwb,WAAW,MACzCc,MAAMC,GAAOC,GAAA,KAAQC,QAAQF,KAI5BG,EAAc,KAClB,MAAMV,EAAoB,CACxB1d,GAAIyF,eAAO,IACXxF,SAAU,GACViB,WAAY,CACVvH,KAAM,QACN2C,MAAO8E,EAAMlK,MAAMqK,kBAGvB8K,EAAU7E,uBAAuB,IACjCF,EAAY1D,SAAS8Z,GACrBjF,KAII4F,EAAyBxa,IAC7B,MAAM,WAAE0P,EAAF,QAAcC,GAAYF,GAAmBzP,EAAM5D,UAEzD,IAAK,MAAM4E,KAAWhB,EAAM5D,SAC1B4E,EAAQ7E,GAAKwT,EAAQ3O,EAAQ7E,IACzB6E,EAAQ4O,UAAS5O,EAAQ4O,QAAUF,EAAW1O,EAAQ4O,UAE5D,MAAM6K,EAAW,IACZza,EACH7D,GAAIyF,eAAO,KAEb4G,EAAU7E,uBAAuB,IACjCF,EAAY1D,SAAS0a,GACrB7F,KAII8F,EAAoB,KACxB,MAAM1a,EAAQX,KAAKG,MAAMH,KAAKC,UAAUnB,EAAa9K,QACrDylB,EAAkB,CAAC9Y,KAIfI,EAAc,CAACua,EAAiBjB,EAAiBrmB,SACjD6I,EAAO7I,MAAMrC,SAAW2pB,EAAe3pB,OAAQ4oB,IAC9CnW,EAAYrD,YAAYua,GAE7BnS,EAAUnD,0BAA0B,IAEpCuP,KAKIgG,EAAW,KACf,MAAMD,EAAiB,IAAIjB,EAAiBrmB,OAC5C4mB,IACA7Z,EAAYua,IAIRE,EAAiB,KACrB,MAAMC,EAAyBlkB,MAAMxB,KAAKwB,MAAMsF,EAAO7I,MAAMrC,QAAS,CAACgL,EAAMwE,IAAUA,GACvFgI,EAAU7E,uBAAuB,IACjC6E,EAAUnD,0BAA0ByV,IAIhCC,EAAa,CAACra,EAAkBsa,KACpC,GAAIA,IAAata,EAAU,OAE3B,MAAMua,EAAU5b,KAAKG,MAAMH,KAAKC,UAAUpD,EAAO7I,QAC3C6nB,EAASD,EAAQD,GACvBC,EAAQ/oB,OAAO8oB,EAAU,GACzBC,EAAQ/oB,OAAOwO,EAAU,EAAGwa,GAC5BzX,EAAY3D,UAAUmb,GACtBxX,EAAY3C,iBAAiBJ,IAG/B,MAAO,CACLkZ,cACA9Y,mBACAmZ,YACAC,aACAK,cACAC,wBACAE,oBACAta,cACAwa,WACAC,iBACAE,eC9JW,QACb,MAAMvS,EAAYzG,IACZ0B,EAAc3F,KACd,oBAAEkE,GAAwBsT,eAAY9M,IACtC,aAAErK,GAAiBmX,eAAY7R,IAE/B,mBAAEmR,GAAuBW,KAGzB4F,EAAc,KAClB,MAAMC,EAA+B/b,KAAKG,MAAMH,KAAKC,UAAUnB,EAAa9K,MAAM+I,WAElF,IAAK,MAAM4E,KAAWoa,EAChBpZ,EAAoB3O,MAAMsL,SAASqC,EAAQ7E,MAAK6E,EAAQqa,MAAO,GAErE5X,EAAYvD,YAAY,CAAE9D,SAAUgf,IACpC5S,EAAU7E,uBAAuB,IACjCiR,KAOI0G,EAAiB5X,IACrB,MAAM0X,EAA+B/b,KAAKG,MAAMH,KAAKC,UAAUnB,EAAa9K,MAAM+I,WAElF,GAAIsH,EAAckM,QAAS,CACzB,MAAM2L,EAAqB,GAC3B,IAAK,MAAMva,KAAWoa,EAChBpa,EAAQ4O,UAAYlM,EAAckM,UACpC5O,EAAQqa,MAAO,EACfE,EAAmBjqB,KAAK0P,EAAQ7E,KAGpCsH,EAAYvD,YAAY,CAAE9D,SAAUgf,IACpC5S,EAAU7E,uBAAuB4X,OAE9B,CACH,IAAK,MAAMva,KAAWoa,EACpB,GAAIpa,EAAQ7E,KAAOuH,EAAcvH,GAAI,CACnC6E,EAAQqa,MAAO,EACf,MAGJ5X,EAAYvD,YAAY,CAAE9D,SAAUgf,IACpC5S,EAAU7E,uBAAuB,CAACD,EAAcvH,KAElDyY,KAGF,MAAO,CACLuG,cACAG,kBCrDW,QACb,MAAM9S,EAAYzG,IACZ0B,EAAc3F,KACd,oBAAEkE,EAAF,qBAAuBE,GAAyBoT,eAAY9M,IAC5D,aAAErK,GAAiBmX,eAAY7R,IAE/B,mBAAEmR,GAAuBW,KAIzBpU,EAAgB,KACpB,IAAKa,EAAoB3O,MAAMrC,OAAQ,OAEvC,IAAIoqB,EAA+B,GAEjCA,EADElZ,EAAqB7O,MACN8K,EAAa9K,MAAM+I,SAASL,OAAO0C,GAAMA,EAAGtC,KAAO+F,EAAqB7O,OAGxE8K,EAAa9K,MAAM+I,SAASL,OAAO0C,IAAOuD,EAAoB3O,MAAMsL,SAASF,EAAGtC,KAGnGqM,EAAU7E,uBAAuB,IACjCF,EAAYvD,YAAY,CAAE9D,SAAUgf,IACpCxG,KAII4G,EAAoB,KACnBrd,EAAa9K,MAAM+I,SAASpL,SACjCwX,EAAU7E,uBAAuB,IACjCF,EAAYvD,YAAY,CAAE9D,SAAU,KACpCwY,MAGF,MAAO,CACLzT,gBACAqa,sBClCW,QACb,MAAMhT,EAAYzG,IACZ0B,EAAc3F,KACd,oBAAEkE,EAAF,kBAAuBwB,EAAvB,gBAA0CvB,GAAoBqT,eAAY9M,IAC1E,aAAErK,GAAiBmX,eAAY7R,IAE/B,mBAAEmR,GAAuBW,KAKzBkG,EAAajC,sBAAS,KAC1B,GAAIhW,EAAkBnQ,MAAMrC,OAAS,EAAG,OAAO,EAE/C,MAAM0qB,EAAelY,EAAkBnQ,MAAM,GAAGuc,QAChD,IAAK8L,EAAc,OAAO,EAE1B,MAAMC,EAAcnY,EAAkBnQ,MAAMuoB,MAAMnd,IAAOA,EAAGmR,SAAWnR,EAAGmR,WAAa8L,GACvF,OAAQC,IAMJE,EAAkB,KACtB,IAAKrY,EAAkBnQ,MAAMrC,OAAQ,OAGrC,IAAIoqB,EAA+B/b,KAAKG,MAAMH,KAAKC,UAAUnB,EAAa9K,MAAM+I,WAGhF,MAAMwT,EAAUhO,eAAO,IAGjBka,EAAmC,GACzC,IAAK,MAAM9a,KAAWoa,EAChBpZ,EAAoB3O,MAAMsL,SAASqC,EAAQ7E,MAC7C6E,EAAQ4O,QAAUA,EAClBkM,EAAmBxqB,KAAK0P,IAO5B,MAAM+a,EAAyBX,EAAe3a,UAAUub,GAAYA,EAAS7f,KAAO2f,EAAmBA,EAAmB9qB,OAAS,GAAGmL,IAChI8f,EAAuBH,EAAmBtd,IAAIwd,GAAYA,EAAS7f,IACzEif,EAAiBA,EAAerf,OAAOigB,IAAaC,EAAqBtd,SAASqd,EAAS7f,KAE3F,MAAM+f,EAAcH,EAAyBD,EAAmB9qB,OAAS,EACzEoqB,EAAelpB,OAAOgqB,EAAa,KAAMJ,GAEzCrY,EAAYvD,YAAY,CAAE9D,SAAUgf,IACpCxG,KAMIuH,EAAoB,KACxB,IAAK3Y,EAAkBnQ,MAAMrC,OAAQ,OACrC,MAAMorB,EAAoB5Y,EAAkBnQ,MAAMgpB,KAAKrgB,GAAQA,EAAK4T,SACpE,IAAKwM,EAAmB,OAExB,MAAMhB,EAA+B/b,KAAKG,MAAMH,KAAKC,UAAUnB,EAAa9K,MAAM+I,WAClF,IAAK,MAAM4E,KAAWoa,EAChBpZ,EAAoB3O,MAAMsL,SAASqC,EAAQ7E,KAAO6E,EAAQ4O,gBAAgB5O,EAAQ4O,QAExFnM,EAAYvD,YAAY,CAAE9D,SAAUgf,IAIpC,MAAMkB,EAAsBra,EAAgB5O,MAAQ,CAAC4O,EAAgB5O,OAAS,GAC9EmV,EAAU7E,uBAAuB2Y,GAEjC1H,KAGF,MAAO,CACL6G,aACAI,kBACAM,sBChFW,QACb,MAAM3T,EAAYzG,KACZ,oBAAEC,EAAF,kBAAuBwB,GAAsB8R,eAAY9M,IAEzD,uBAAE4Q,GAA2BO,MAC7B,cAAExY,GAAkBob,KAGpBC,EAAc,KAClB,IAAKxa,EAAoB3O,MAAMrC,OAAQ,OAEvC,MAAM6M,EAAO0M,GAAQlL,KAAKC,UAAU,CAClCxJ,KAAM,WACNtF,KAAMgT,EAAkBnQ,SAG1B4X,GAASpN,GAAMsO,KAAK,KAClB3D,EAAUjE,oBAAmB,MAK3BkY,EAAa,KACjBD,IACArb,KAIIub,EAAe,KACnBzQ,KAAgBE,KAAKtO,IACnBub,EAAuBvb,KACtBsc,MAAMC,GAAOC,GAAA,KAAQC,QAAQF,KAI5BuC,EAAmB,KACvBH,IACAE,KAGF,MAAO,CACLF,cACAC,aACAC,eACAC,qBCjDW,QACb,MAAMnU,EAAYzG,KACZ,aAAE5D,GAAiBmX,eAAYxX,MAC/B,oBAAEqE,GAAwBmT,eAAY9M,GAGtCoU,EAAmB,KACvB,MAAMC,EAAmB1e,EAAa9K,MAAM+I,SAASL,OAAO0C,IAAOA,EAAG4c,OAASlZ,EAAoB9O,MAAMsL,SAASF,EAAGtC,KAC/G2gB,EAAyBD,EAAiBre,IAAIC,GAAMA,EAAGtC,IAC7DqM,EAAU7E,uBAAuBmZ,IAGnC,MAAO,CACLF,qBCVW,QACb,MAAMnZ,EAAc3F,KACd,oBAAEkE,EAAF,qBAAuBE,GAAyBoT,eAAYvT,MAC5D,aAAE5D,GAAiBmX,eAAY7R,IAE/B,mBAAEmR,GAAuBW,KAQzBwH,EAAc,CAACjD,EAAiBkD,EAAO,KAC3C,IAAI5B,EAA+B,GAEnC,MAAM6B,EAAQxe,IACZ,IAAI,KAAEpC,EAAF,IAAQC,GAAQmC,EACpB,OAAQqb,GACN,KAAK3P,GAAK+S,KACR7gB,GAAc2gB,EACd,MACF,KAAK7S,GAAKgT,MACR9gB,GAAc2gB,EACd,MACF,KAAK7S,GAAK4P,GACRzd,GAAY0gB,EACZ,MACF,KAAK7S,GAAK6P,KACR1d,GAAY0gB,EACZ,MACF,QAAS,MAEX,MAAO,IAAKve,EAAIpC,OAAMC,QAItB8e,EADElZ,EAAqB7O,MACN8K,EAAa9K,MAAM+I,SAASoC,IAAIC,GACxCyD,EAAqB7O,QAAUoL,EAAGtC,GAAK8gB,EAAKxe,GAAMA,GAI1CN,EAAa9K,MAAM+I,SAASoC,IAAIC,GACxCuD,EAAoB3O,MAAMsL,SAASF,EAAGtC,IAAM8gB,EAAKxe,GAAMA,GAIlEgF,EAAYvD,YAAY,CAAE9D,SAAUgf,IACpCxG,KAGF,MAAO,CACLmI,gBCpDW,QACb,MAAMtZ,EAAc3F,KACd,aAAEK,GAAiBmX,eAAY7R,IAE/B,mBAAEmR,GAAuBW,KAOzB6H,EAA8B,CAAC3O,EAA2BqN,KACvD,CACLuB,SAAU5O,EAAYhO,UAAUub,GAAYA,EAAS7f,KAAO2f,EAAmB,GAAG3f,IAClFmhB,SAAU7O,EAAYhO,UAAUub,GAAYA,EAAS7f,KAAO2f,EAAmBA,EAAmB9qB,OAAS,GAAGmL,MAS5GohB,EAAgB,CAAC9O,EAA2BzN,KAChD,MAAMwc,EAAkCne,KAAKG,MAAMH,KAAKC,UAAUmP,IAGlE,GAAIzN,EAAQ4O,QAAS,CAGnB,MAAMkM,EAAqB0B,EAAkBzhB,OAAOigB,GAAYA,EAASpM,UAAY5O,EAAQ4O,UACvF,SAAEyN,EAAF,SAAYC,GAAaF,EAA4B3O,EAAaqN,GAGxE,GAAIwB,IAAa7O,EAAYzd,OAAS,EAAG,OAKzC,MAAMysB,EAAcD,EAAkBF,EAAW,GAC3CI,EAAmBF,EAAkBtrB,OAAOmrB,EAAUvB,EAAmB9qB,QAE/E,GAAIysB,EAAY7N,QAAS,CACvB,MAAM+N,EAAyBH,EAAkBzhB,OAAOigB,GAAYA,EAASpM,UAAY6N,EAAY7N,SACrG4N,EAAkBtrB,OAAOmrB,EAAWM,EAAuB3sB,OAAQ,KAAM0sB,QAEtEF,EAAkBtrB,OAAOmrB,EAAW,EAAG,KAAMK,OAI/C,CAGH,MAAME,EAAQnP,EAAYhO,UAAUzE,GAAQA,EAAKG,KAAO6E,EAAQ7E,IAGhE,GAAIyhB,IAAUnP,EAAYzd,OAAS,EAAG,OAGtC,MAAMysB,EAAcD,EAAkBI,EAAQ,GACxCC,EAAeL,EAAkBtrB,OAAO0rB,EAAO,GAAG,GAKxD,GAAIH,EAAY7N,QAAS,CACvB,MAAMkM,EAAqB0B,EAAkBzhB,OAAOigB,GAAYA,EAASpM,UAAY6N,EAAY7N,SACjG4N,EAAkBtrB,OAAO0rB,EAAQ9B,EAAmB9qB,OAAQ,EAAG6sB,QAE5DL,EAAkBtrB,OAAO0rB,EAAQ,EAAG,EAAGC,GAG9C,OAAOL,GAQHM,EAAkB,CAACrP,EAA2BzN,KAClD,MAAMwc,EAAkCne,KAAKG,MAAMH,KAAKC,UAAUmP,IAElE,GAAIzN,EAAQ4O,QAAS,CACnB,MAAMkM,EAAqB0B,EAAkBzhB,OAAOigB,GAAYA,EAASpM,UAAY5O,EAAQ4O,UACvF,SAAEyN,GAAaD,EAA4B3O,EAAaqN,GAC9D,GAAiB,IAAbuB,EAAgB,OAEpB,MAAMU,EAAcP,EAAkBH,EAAW,GAC3CK,EAAmBF,EAAkBtrB,OAAOmrB,EAAUvB,EAAmB9qB,QAE/E,GAAI+sB,EAAYnO,QAAS,CACvB,MAAMoO,EAAyBR,EAAkBzhB,OAAOigB,GAAYA,EAASpM,UAAYmO,EAAYnO,SACrG4N,EAAkBtrB,OAAOmrB,EAAWW,EAAuBhtB,OAAQ,KAAM0sB,QAEtEF,EAAkBtrB,OAAOmrB,EAAW,EAAG,KAAMK,OAG/C,CACH,MAAME,EAAQnP,EAAYhO,UAAUzE,GAAQA,EAAKG,KAAO6E,EAAQ7E,IAChE,GAAc,IAAVyhB,EAAa,OAEjB,MAAMG,EAAcP,EAAkBI,EAAQ,GACxCC,EAAeL,EAAkBtrB,OAAO0rB,EAAO,GAAG,GAExD,GAAIG,EAAYnO,QAAS,CACvB,MAAMkM,EAAqB0B,EAAkBzhB,OAAOigB,GAAYA,EAASpM,UAAYmO,EAAYnO,SACjG4N,EAAkBtrB,OAAO0rB,EAAQ9B,EAAmB9qB,OAAQ,EAAG6sB,QAE5DL,EAAkBtrB,OAAO0rB,EAAQ,EAAG,EAAGC,GAG9C,OAAOL,GAQHS,EAAiB,CAACxP,EAA2BzN,KACjD,MAAMwc,EAAkCne,KAAKG,MAAMH,KAAKC,UAAUmP,IAGlE,GAAIzN,EAAQ4O,QAAS,CAGnB,MAAMkM,EAAqB0B,EAAkBzhB,OAAOigB,GAAYA,EAASpM,UAAY5O,EAAQ4O,UACvF,SAAEyN,EAAF,SAAYC,GAAaF,EAA4B3O,EAAaqN,GAGxE,GAAIwB,IAAa7O,EAAYzd,OAAS,EAAG,OAAO,KAGhD,MAAM0sB,EAAmBF,EAAkBtrB,OAAOmrB,EAAUvB,EAAmB9qB,QAC/EwsB,EAAkBlsB,QAAQosB,OAIvB,CAGH,MAAME,EAAQnP,EAAYhO,UAAUzE,GAAQA,EAAKG,KAAO6E,EAAQ7E,IAGhE,GAAIyhB,IAAUnP,EAAYzd,OAAS,EAAG,OAAO,KAG7CwsB,EAAkBtrB,OAAO0rB,EAAO,GAChCJ,EAAkBlsB,KAAK0P,GAGzB,OAAOwc,GAQHU,EAAoB,CAACzP,EAA2BzN,KACpD,MAAMwc,EAAkCne,KAAKG,MAAMH,KAAKC,UAAUmP,IAElE,GAAIzN,EAAQ4O,QAAS,CACnB,MAAMkM,EAAqB0B,EAAkBzhB,OAAOigB,GAAYA,EAASpM,UAAY5O,EAAQ4O,UACvF,SAAEyN,GAAaD,EAA4B3O,EAAaqN,GAC9D,GAAiB,IAAbuB,EAAgB,OAEpB,MAAMK,EAAmBF,EAAkBtrB,OAAOmrB,EAAUvB,EAAmB9qB,QAC/EwsB,EAAkBW,WAAWT,OAG1B,CACH,MAAME,EAAQnP,EAAYhO,UAAUzE,GAAQA,EAAKG,KAAO6E,EAAQ7E,IAChE,GAAc,IAAVyhB,EAAa,OAEjBJ,EAAkBtrB,OAAO0rB,EAAO,GAChCJ,EAAkBW,QAAQnd,GAG5B,OAAOwc,GAQHY,EAAe,CAACpd,EAAqB8Y,KACzC,IAAIsB,EAEAtB,IAAYhQ,EAAqBiQ,GAAIqB,EAAiBmC,EAAcpf,EAAa9K,MAAM+I,SAAU4E,GAC5F8Y,IAAYhQ,EAAqBkQ,KAAMoB,EAAiB0C,EAAgB3f,EAAa9K,MAAM+I,SAAU4E,GACrG8Y,IAAYhQ,EAAqBuU,IAAKjD,EAAiB6C,EAAe9f,EAAa9K,MAAM+I,SAAU4E,GACnG8Y,IAAYhQ,EAAqBwU,SAAQlD,EAAiB8C,EAAkB/f,EAAa9K,MAAM+I,SAAU4E,IAE7Goa,IAEL3X,EAAYvD,YAAY,CAAE9D,SAAUgf,IACpCxG,MAGF,MAAO,CACLwJ,iBChNG,MAAMG,GAAkB,KAC7B,MAAMC,EAASvjB,SAASwjB,gBACpBD,EAAOE,kBAAmBF,EAAOE,oBAC5BF,EAAOG,qBAAsBH,EAAOG,uBACpCH,EAAOI,wBAAyBJ,EAAOI,0BACvCJ,EAAOK,qBAAqBL,EAAOK,uBAIjCC,GAAiB,KACxB7jB,SAAS6jB,eAAgB7jB,SAAS6jB,iBAC7B7jB,SAAS8jB,oBAAqB9jB,SAAS8jB,sBACvC9jB,SAAS+jB,qBAAsB/jB,SAAS+jB,uBACxC/jB,SAASgkB,kBAAkBhkB,SAASgkB,oBAIlCC,GAAe,KAC1B,MAAMC,EACJlkB,SAASkkB,mBACTlkB,SAASmkB,sBACTnkB,SAASokB,yBACTpkB,SAASqkB,qBACTrkB,SAASskB,+BACX,QAASJ,GCtBI,YACb,MAAMK,EAAcrW,IACd1F,EAAc3F,IAGd2hB,EAAiB,KACrBlB,KACAiB,EAAYnW,cAAa,IAIrBqW,EAA0B,KAC9Bjc,EAAY3C,iBAAiB,GAC7B2e,KAIIE,EAAgB,KACpBH,EAAYnW,cAAa,GACrB6V,MAAgBJ,MAGtB,MAAO,CACLW,iBACAC,0BACAC,kBCxBW,QACb,MAAMnX,EAAYzG,KACZ,iBAAEK,EAAF,YAAoBC,EAApB,cAAiCC,GAAkBgT,eAAY9M,GAE/DoX,EAAwBpG,sBAAS,IAAM7Y,KAAKkf,MAA0B,IAApBxd,EAAYhP,OAAe,KAM7EysB,EAAehG,IACnB,IAAI9V,EAAa5B,EAAiB/O,MAClC,MAAM2pB,EAAO,EACPtP,EAAM,IACN9M,EAAM,GACI,MAAZkZ,GAAmB9V,GAAc0J,IAAK1J,GAAcgZ,GACxC,MAAZlD,GAAmB9V,GAAcpD,IAAKoD,GAAcgZ,GAExDxU,EAAUzE,oBAAoBC,IAQ1B+b,EAA4B1sB,IAChC,MAAM2Q,EAAarD,KAAKkf,MAAMxsB,EAAQgP,EAAYhP,MAAQ+O,EAAiB/O,OAAS,IACpFmV,EAAUzE,oBAAoBC,IAM1Bgc,EAAc,KAClBxX,EAAUzE,oBAAoB,IAC1BzB,GAAekG,EAAUrE,kBAAiB,IAGhD,MAAO,CACLyb,wBACAG,2BACAD,cACAE,gBC7BW,QACb,MAAMxX,EAAYzG,IACZke,EAAgBvX,KAChB,oBACJ1G,EADI,eAEJS,EAFI,cAGJiB,EAHI,gBAIJzB,EAJI,gBAKJO,EALI,gBAMJD,GACE+S,eAAY9M,IACV,aAAErK,GAAiBmX,eAAYxX,MAC/B,aAAE6K,EAAF,cAAgBC,EAAhB,cAA+BC,GAAkByM,eAAY2K,IAE7D,iBACJnf,EADI,UAEJmZ,EAFI,YAGJM,EAHI,YAIJna,EAJI,SAKJwa,EALI,kBAMJF,EANI,eAOJG,GACEqF,MAEE,gBAAErE,EAAF,kBAAmBM,GAAsBgE,MACzC,cAAEhf,GAAkBob,MACpB,YAAEpB,GAAgBiF,MAClB,YAAE5D,EAAF,WAAeC,EAAf,iBAA2BE,GAAqB0D,MAChD,iBAAEzD,GAAqB0D,MACvB,YAAEvD,GAAgBwD,MAClB,aAAEnC,GAAiBoC,MACnB,KAAExL,EAAF,KAAQI,GAASG,MACjB,eAAEkK,EAAF,wBAAkBC,GAA4Be,MAC9C,YAAEX,EAAF,YAAeE,GAAgBU,KAE/BC,EAAO,KACP3e,EAAoB3O,MAAMrC,OAAQwrB,IAC7Bja,EAAgBlP,OAAO4mB,KAG5B2G,EAAM,KACN5e,EAAoB3O,MAAMrC,OAAQyrB,IAC7Bla,EAAgBlP,OAAOunB,KAG5BiG,EAAY,KACZ7e,EAAoB3O,MAAMrC,OAAQ2rB,IAC7Bpa,EAAgBlP,OAAOqnB,KAG5B5lB,EAAY,KACZ0N,EAAgBnP,OAAOupB,IACvBra,EAAgBlP,OAAOwnB,KAGvBQ,EAAO,KACN7Y,EAAgBnP,OACrB8nB,KAEI2F,EAAU,KACTte,EAAgBnP,OACrBwoB,KAGIkF,EAAY,KACXve,EAAgBnP,OACrB8oB,KAGI6E,EAAS,KACThf,EAAoB3O,MAAMrC,OAAQmQ,IAC7BoB,EAAgBlP,OAAO+M,KAG5B6c,EAAQtpB,IACRqO,EAAoB3O,MAAMrC,OAAQ+rB,EAAYppB,GACzCA,IAAQwW,GAAK4P,IAAMpmB,IAAQwW,GAAK6P,MAAMlZ,EAAiBnN,IAG5DstB,EAAattB,IACbA,IAAQwW,GAAK+W,OAAQpgB,EAAiBqJ,GAAK4P,IACtCpmB,IAAQwW,GAAKgX,UAAUrgB,EAAiBqJ,GAAK6P,OAGlDoH,EAAStH,IACRpW,EAAcrQ,OACnB+qB,EAAa1a,EAAcrQ,MAAOymB,IAG9BpmB,EAAS,KACR6O,EAAgBlP,OACrBknB,KAGI8G,EAAmB,KACvB,IAAKljB,EAAa9K,MAAM+I,SAASpL,OAAQ,OACzC,IAAKiR,EAAgB5O,MAAO,CAC1B,MAAMiuB,EAAenjB,EAAa9K,MAAM+I,SAAS,GAEjD,YADAoM,EAAU7E,uBAAuB,CAAC2d,EAAanlB,KAGjD,MAAMolB,EAAepjB,EAAa9K,MAAM+I,SAASqE,UAAUhC,GAAMA,EAAGtC,KAAO8F,EAAgB5O,OACrFmuB,EAAYD,GAAgBpjB,EAAa9K,MAAM+I,SAASpL,OAAS,EAAI,EAAIuwB,EAAe,EACxFE,EAAgBtjB,EAAa9K,MAAM+I,SAASolB,GAAWrlB,GAE7DqM,EAAU7E,uBAAuB,CAAC8d,KAG9BC,GAAmB9V,IACvB,MAAM,QAAE+V,EAAF,SAAWC,EAAX,OAAqBC,EAArB,QAA6BC,GAAYlW,EACzCmW,EAAsBJ,GAAWG,EAEjCnuB,EAAMiY,EAAEjY,IAAIquB,cAOlB,GALID,IAAwBpZ,EAAatV,OAAO4sB,EAAclX,iBAAgB,GAC1E6Y,IAAahZ,EAAcvV,OAAO4sB,EAAchX,kBAAiB,GAChExG,EAAepP,OAASM,IAAQwW,GAAK8X,OAAOhC,EAAc/W,kBAAiB,GAG5E6Y,GAAuBpuB,IAAQwW,GAAK+X,EAGtC,OAFAtW,EAAEuW,sBACF3Z,EAAUlD,mBAAmB,OAG/B,GAAIsc,GAAYjuB,IAAQwW,GAAKiY,GAI3B,OAHAxW,EAAEuW,iBACF1C,SACAQ,EAAchX,kBAAiB,GAGjC,GAAItV,IAAQwW,GAAKiY,GAGf,OAFAxW,EAAEuW,sBACFzC,IAIF,GAAKld,EAAgBnP,OAAUkP,EAAgBlP,MAA/C,CAEA,GAAI0uB,GAAuBpuB,IAAQwW,GAAKkY,EAAG,CACzC,GAAI5f,EAAepP,MAAO,OAC1BuY,EAAEuW,iBACFxB,IAEF,GAAIoB,GAAuBpuB,IAAQwW,GAAKmY,EAAG,CACzC,GAAI7f,EAAepP,MAAO,OAC1BuY,EAAEuW,iBACFvB,IAEF,GAAImB,GAAuBpuB,IAAQwW,GAAKoY,EAAG,CACzC,GAAI9f,EAAepP,MAAO,OAC1BuY,EAAEuW,iBACFtB,IAEF,GAAIkB,GAAuBpuB,IAAQwW,GAAKqY,EAAG,CACzC,GAAI/f,EAAepP,MAAO,OAC1BuY,EAAEuW,iBACF/M,IAEF,GAAI2M,GAAuBpuB,IAAQwW,GAAKsY,EAAG,CACzC,GAAIhgB,EAAepP,MAAO,OAC1BuY,EAAEuW,iBACFnN,IAEF,GAAI+M,GAAuBpuB,IAAQwW,GAAKuY,EAAG,CACzC,GAAIjgB,EAAepP,MAAO,OAC1BuY,EAAEuW,iBACFrtB,IAEF,GAAIitB,GAAuBpuB,IAAQwW,GAAKiJ,EAAG,CACzC,GAAI3Q,EAAepP,MAAO,OAC1BuY,EAAEuW,iBACF9G,IAEF,IAAKuG,GAAYG,GAAuBpuB,IAAQwW,GAAKwY,EAAG,CACtD,GAAIlgB,EAAepP,MAAO,OAC1BuY,EAAEuW,iBACFrB,IAEF,GAAIc,GAAYG,GAAuBpuB,IAAQwW,GAAKwY,EAAG,CACrD,GAAIlgB,EAAepP,MAAO,OAC1BuY,EAAEuW,iBACFpB,IAEF,GAAIc,GAAUluB,IAAQwW,GAAKyY,EAAG,CAC5B,GAAIngB,EAAepP,MAAO,OAC1BuY,EAAEuW,iBACFf,EAAMtX,EAAqBuU,KAE7B,GAAIwD,GAAUluB,IAAQwW,GAAK0Y,EAAG,CAC5B,GAAIpgB,EAAepP,MAAO,OAC1BuY,EAAEuW,iBACFf,EAAMtX,EAAqBwU,QAE7B,GAAI3qB,IAAQwW,GAAK2Y,QAAUnvB,IAAQwW,GAAK4Y,UAAW,CACjD,GAAItgB,EAAepP,MAAO,OAC1BuY,EAAEuW,iBACFnB,IAEF,GAAIrtB,IAAQwW,GAAK4P,GAAI,CACnB,GAAItX,EAAepP,MAAO,OAC1BuY,EAAEuW,iBACFlF,EAAK9S,GAAK4P,IAEZ,GAAIpmB,IAAQwW,GAAK6P,KAAM,CACrB,GAAIvX,EAAepP,MAAO,OAC1BuY,EAAEuW,iBACFlF,EAAK9S,GAAK6P,MAEZ,GAAIrmB,IAAQwW,GAAK+S,KAAM,CACrB,GAAIza,EAAepP,MAAO,OAC1BuY,EAAEuW,iBACFlF,EAAK9S,GAAK+S,MAEZ,GAAIvpB,IAAQwW,GAAKgT,MAAO,CACtB,GAAI1a,EAAepP,MAAO,OAC1BuY,EAAEuW,iBACFlF,EAAK9S,GAAKgT,OAEZ,GAAIxpB,IAAQwW,GAAK+W,OAAQ,CACvB,GAAIze,EAAepP,MAAO,OAC1BuY,EAAEuW,iBACFlB,EAAU9W,GAAK+W,QAEjB,GAAIvtB,IAAQwW,GAAKgX,SAAU,CACzB,GAAI1e,EAAepP,MAAO,OAC1BuY,EAAEuW,iBACFlB,EAAU9W,GAAKgX,UAEjB,GAAIxtB,IAAQwW,GAAK6Y,MAAO,CACtB,GAAIvgB,EAAepP,MAAO,OAC1BuY,EAAEuW,iBACFzuB,IAEF,GAAIC,IAAQwW,GAAK8Y,MAAO,CACtB,GAAIxgB,EAAepP,MAAO,OAC1BuY,EAAEuW,iBACFrC,EAAY,KAEd,GAAInsB,IAAQwW,GAAK+Y,MAAO,CACtB,GAAIzgB,EAAepP,MAAO,OAC1BuY,EAAEuW,iBACFrC,EAAY,KAEd,GAAInsB,IAAQwW,GAAKgZ,QAAS,CACxB,GAAI1gB,EAAepP,MAAO,OAC1BuY,EAAEuW,iBACFnC,IAEF,GAAIrsB,IAAQwW,GAAKiZ,IAAK,CACpB,GAAI3gB,EAAepP,MAAO,OAC1BuY,EAAEuW,iBACFd,OAIEgC,GAAgB,KAChB1a,EAAatV,OAAO4sB,EAAclX,iBAAgB,GAClDH,EAAcvV,OAAO4sB,EAAchX,kBAAiB,GACpDJ,EAAcxV,OAAO4sB,EAAc/W,kBAAiB,IAG1Doa,uBAAU,KACRroB,SAAS4W,iBAAiB,UAAW6P,IACrCzmB,SAAS4W,iBAAiB,QAASwR,IACnCnvB,OAAO2d,iBAAiB,OAAQwR,MAElCE,yBAAY,KACVtoB,SAASuoB,oBAAoB,UAAW9B,IACxCzmB,SAASuoB,oBAAoB,QAASH,IACtCnvB,OAAOsvB,oBAAoB,OAAQH,OCxRxB,QACb,MAAM,gBAAE7gB,EAAF,gBAAmBD,EAAnB,eAAoCE,GAAmB6S,eAAYvT,MAEnE,uBAAEqX,GAA2BO,MAC7B,mBAAEjE,GAAuBuD,KAGzBwK,EAAkBC,IACtBjS,GAAgBiS,GAAWvX,KAAKwX,GAAWjO,EAAmBiO,KAO1DC,EAAiBhY,IACrB,IAAKpJ,EAAgBnP,QAAUkP,EAAgBlP,MAAO,OACtD,GAAIoP,EAAepP,MAAO,OAE1B,IAAKuY,EAAES,cAAe,OAEtB,MAAMwX,EAAqBjY,EAAES,cAAcyX,MACrCC,EAAyBF,EAAmB,GAElD,GAAKE,EAAL,CAGA,IAAK,MAAM/nB,KAAQ6nB,EACjB,GAAkB,SAAd7nB,EAAKgoB,OAAmD,IAAhChoB,EAAKlG,KAAKgB,QAAQ,SAAiB,CAC7D,MAAM4sB,EAAY1nB,EAAKioB,YAEvB,YADIP,GAAWD,EAAeC,IAME,WAAhCK,EAAuBC,MAAqD,eAAhCD,EAAuBjuB,MACrEiuB,EAAuBG,YAAYrmB,GAAQub,EAAuBvb,MAItEylB,uBAAU,KACRroB,SAAS4W,iBAAiB,QAAS+R,KAErCL,yBAAY,KACVtoB,SAASuoB,oBAAoB,QAASI,M,2ICpDnC,MAAMO,GAAgB,CAAC,QAAS,SAAU,YAEpCC,GAAc,CAAC,OAAQ,OAAQ,OAAQ,IAAK,KAAM,KAAM,KAAM,SAAU,QAAS,KAAM,QAAS,KAAM,KAAM,QAAS,YAErHC,GAA6B,CACxCC,GAAI,CAAC,KAAM,KAAM,QACjBC,GAAI,CAAC,MACLC,GAAI,CAAC,MACLC,MAAO,CAAC,SACRC,MAAO,CAAC,SACRC,MAAO,CAAC,SACRxvB,GAAI,CAAC,SACLyvB,GAAI,CAAC,UAGMC,GAAW,CAAC,WAAY,OAAQ,OAAQ,KAAM,MAAO,UAAW,QAAS,KAAM,MAAO,QAAS,SAAU,OAAQ,OAAQ,QAAS,SAAU,QAAS,OCL5JC,GAAe,CAAClwB,EAAcsI,KAClC,MAAMsM,EAAMtM,EAAMtI,EAAM0iB,SACxByN,GAAanwB,EAAO4U,IAGhBub,GAAe,CAACnwB,EAAc4U,KAClC5U,EAAM0iB,SAAW1iB,EAAM0iB,SAAW9N,GAG9Bwb,GAAc,CAACjqB,EAAayF,KAChC,MAAMykB,GAAQ,EACd,OAAQA,EAAO,CACb,MAAMC,EAAUnqB,EAAIjE,QAAQ,IAAK0J,GACjC,IAAiB,IAAb0kB,EACF,OAAOA,EAET,MAAMC,EAAOpqB,EAAIqqB,OAAOF,EAAU,GAClC,GAAa,MAATC,GAAyB,MAATA,GAAgB,cAAcE,KAAKF,GACrD,OAAOD,EAET1kB,EAAQ0kB,EAAU,EAEpB,OAAQ,GAGJI,GAAW1wB,IACf,MAAM,IAAEmG,GAAQnG,EAChB,IAAIswB,EAAUF,GAAYjqB,EAAKnG,EAAM0iB,UACrC,GAAI4N,IAAYtwB,EAAM0iB,SAAU,QACf,IAAb4N,IACFA,EAAUnqB,EAAI/J,QAGhB,MAAM+L,EAAUhC,EAAI3G,MAAMQ,EAAM0iB,SAAU4N,GAC1CJ,GAAalwB,EAAOswB,GAEpBtwB,EAAM2wB,OAAOj0B,KAAK,CAChBwE,KAAM,OACNiH,aAIEyoB,GAAc5wB,IAClB,MAAM,IAAEmG,GAAQnG,EAEhBmwB,GAAanwB,EAAO,GACpB,IAAI6wB,EAAa1qB,EAAIjE,QAAQ,SAAOlC,EAAM0iB,UACtCoO,EAAaD,EAAa,GACV,IAAhBA,IACFA,EAAaC,EAAa3qB,EAAI/J,QAGhC,MAAM+L,EAAUhC,EAAI3G,MAAMQ,EAAM0iB,SAAUmO,GAC1CX,GAAalwB,EAAO8wB,GAEpB9wB,EAAM2wB,OAAOj0B,KAAK,CAChBwE,KAAM,UACNiH,aAIE4oB,GAAc/wB,IAClB,MAAM,IAAEmG,GAAQnG,EACV4U,EAAMzO,EAAI/J,OAChB,IAAIoG,EAAQxC,EAAM0iB,SAElB,MAAOlgB,EAAQoS,EAAK,CAClB,MAAM2b,EAAOpqB,EAAIqqB,OAAOhuB,GAClBwuB,IAAc,KAAKP,KAAKF,IAAkB,MAATA,GAAyB,MAATA,GACvD,GAAIS,EAAW,MACfxuB,IAGF,IAAI8F,EAAM9F,EAAQ,EAClB,MAAO8F,EAAMsM,EAAK,CAChB,MAAM2b,EAAOpqB,EAAIqqB,OAAOloB,GAClB0oB,IAAc,KAAKP,KAAKF,IAAkB,MAATA,GAAyB,MAATA,GACvD,IAAKS,EAAW,MAChB1oB,IAGF4nB,GAAalwB,EAAOsI,GACpB,MAAM2oB,EAAU9qB,EAAI3G,MAAMgD,EAAO8F,GAKjC,OAJAtI,EAAM2wB,OAAOj0B,KAAK,CAChBwE,KAAM,MACNiH,QAAS8oB,IAEJA,GAGHC,GAAoBlxB,IACxB,MAAM,IAAEmG,EAAF,OAAOwqB,GAAW3wB,EACxB,IAAIgT,EAAShT,EAAM0iB,SACfyO,EAAQ,KACRC,EAAYpe,EAChB,MAAMqe,EAAQ,GACRzc,EAAMzO,EAAI/J,OAChB,MAAO4W,EAAS4B,EAAK,CACnB,MAAM2b,EAAOpqB,EAAIqqB,OAAOxd,GACxB,GAAIme,EAAO,CACT,MAAMG,EAAaf,IAASY,EACxBG,IAAYH,EAAQ,MACxBne,IACA,SAGF,MAAMue,EAAoB,MAAThB,GAAyB,MAATA,EACjC,GAAIgB,EAAU,CACRve,IAAWoe,GAAWC,EAAM30B,KAAKyJ,EAAI3G,MAAM4xB,EAAWpe,IAC1D,MAGF,MAAMwe,EAAY,KAAKf,KAAKF,GAC5B,GAAIiB,EAAW,CACTxe,IAAWoe,GAAWC,EAAM30B,KAAKyJ,EAAI3G,MAAM4xB,EAAWpe,IAC1Doe,EAAYpe,EAAS,EACrBA,IACA,SAGF,MAAMye,EAAwB,MAATlB,GAA0B,MAATA,EAClCkB,GACFN,EAAQZ,EACRvd,KAIFA,IAEFkd,GAAalwB,EAAOgT,GAEpB,MAAM9R,EAAO,YACb,IAAK,IAAIhF,EAAI,EAAGA,EAAIm1B,EAAMj1B,OAAQF,IAAK,CACrC,MAAMw1B,EAAOL,EAAMn1B,GAEby1B,GAAmC,IAAvBD,EAAKxvB,QAAQ,KAC/B,GAAIyvB,EAAW,CACb,MAAMC,EAAaP,EAAMn1B,EAAI,GAC7B,GAAI01B,GAAcC,wBAAWD,EAAY,KAAM,CAC7C,GAAIA,EAAWx1B,OAAS,EAAG,CACzB,MAAM01B,EAAUJ,EAAOE,EACvBjB,EAAOj0B,KAAK,CAAEwE,OAAMiH,QAAS2pB,IAC7B51B,GAAK,EACL,SAEF,MAAM61B,EAAYV,EAAMn1B,EAAI,GAE5B,GADAA,GAAK,EACD61B,EAAW,CACb,MAAMD,EAAUJ,EAAO,IAAMK,EAC7BpB,EAAOj0B,KAAK,CAAEwE,OAAMiH,QAAS2pB,IAC7B51B,GAAK,EACL,WAIN,GAAI81B,sBAASN,EAAM,KAAnB,CACE,MAAME,EAAaP,EAAMn1B,EAAI,GAC7B,GAAI01B,IAA2C,IAA7BA,EAAW1vB,QAAQ,KAAa,CAChD,MAAM4vB,EAAUJ,EAAOE,EACvBjB,EAAOj0B,KAAK,CAAEwE,OAAMiH,QAAS2pB,IAC7B51B,GAAK,EACL,SAGF,MAAM41B,EAAUJ,EAAKlyB,MAAM,GAAI,GAC/BmxB,EAAOj0B,KAAK,CAAEwE,OAAMiH,QAAS2pB,SAI/BnB,EAAOj0B,KAAK,CAAEwE,OAAMiH,QAASupB,MAI3BO,GAAa,CAAChB,EAAiBjxB,KACnC,MAAM,IAAEmG,EAAF,OAAOwqB,GAAW3wB,EAClBkyB,EAAcjB,EAAQlrB,cACtB6O,EAAMzO,EAAI/J,OAChB,IAAIwP,EAAQ5L,EAAM0iB,SAElB,MAAO9W,EAAQgJ,EAAK,CAClB,MAAMud,EAAUhsB,EAAIjE,QAAQ,KAAM0J,GAClC,IAAiB,IAAbumB,EAAgB,CAClBzB,GAAQ1wB,GACR,MAGF,MAAMoyB,EAAW,CACfjsB,MACAuc,SAAU1iB,EAAM0iB,SAChBiO,OAAQ,IAEVT,GAAakC,EAAUD,GACvB,MAAMn0B,EAAOq0B,GAAOD,GACpB,GAAIF,IAAgBl0B,EAAK+H,cAAzB,CAKA,GAAIosB,IAAYnyB,EAAM0iB,SAAU,CAC9B,MAAM4P,EAAYtyB,EAAM0iB,SACxBwN,GAAalwB,EAAOmyB,GACpBxB,EAAOj0B,KAAK,CACVwE,KAAM,OACNiH,QAAShC,EAAI3G,MAAM8yB,EAAWH,KAIlCxB,EAAOj0B,QAAQ01B,EAASzB,QACxBT,GAAalwB,EAAOoyB,EAAS1P,UAC7B,MAfE9W,EAAQwmB,EAAS1P,WAmBjB2P,GAAUryB,IACd,MAAM,IAAEmG,GAAQnG,EACVuyB,EAAapsB,EAAIqqB,OAAOxwB,EAAM0iB,SAAW,GACzC8P,EAA+B,MAAfD,EACtBpC,GAAanwB,EAAOwyB,EAAgB,EAAI,GACxCxyB,EAAM2wB,OAAOj0B,KAAK,CAChBwE,KAAM,YACNuxB,MAAOD,IAGT,MAAMvB,EAAUF,GAAW/wB,GAC3BkxB,GAAiBlxB,GAEjB,MAAM0yB,EAAYvsB,EAAIqqB,OAAOxwB,EAAM0iB,UAC7BiQ,EAA4B,MAAdD,EAMpB,OALAvC,GAAanwB,EAAO2yB,EAAc,EAAI,GACtC3yB,EAAM2wB,OAAOj0B,KAAK,CAChBwE,KAAM,UACNuxB,MAAOE,IAEF1B,GAGH2B,GAAO5yB,IACX,MAAMmG,EAAMnG,EAAMmG,IACZyO,EAAMzO,EAAI/J,OAEhB,MAAO4D,EAAM0iB,SAAW9N,EAAK,CAC3B,MAAMpS,EAAQxC,EAAM0iB,SAGpB,GAFAgO,GAAQ1wB,GAEJA,EAAM0iB,WAAalgB,EAAO,CAC5B,MAAMqwB,EAAYhB,wBAAW1rB,EAAK,MAAO3D,EAAQ,GACjD,GAAIqwB,EAAWjC,GAAW5wB,OACrB,CACH,MAAMixB,EAAUoB,GAAOryB,GACjB8yB,EAAU7B,EAAQlrB,cACpBwpB,GAAcxlB,SAAS+oB,IAAUb,GAAWhB,EAASjxB,OAMpD+yB,GAAS5sB,IACpB,MAAMnG,EAAQ,CACZmG,MACAuc,SAAU,EACViO,OAAQ,IAGV,OADAiC,GAAI5yB,GACGA,EAAM2wB,QCnQFqC,GAAUrC,IACrB,MAAMsC,EAAkB,CAAEhC,QAAS,KAAMxb,SAAU,IAC7CzV,EAAe,CAAE2wB,SAAQ3d,OAAQ,EAAGkgB,MAAO,CAACD,IAElD,OADAroB,GAAM5K,GACCizB,EAAKxd,UAGD0d,GAAoB,CAAClC,EAAiBiC,KACjD,MAAME,EAAa3D,GAA2BwB,GAC9C,GAAImC,EAAY,CACd,IAAIzG,EAAeuG,EAAM92B,OAAS,EAClC,MAAOuwB,GAAgB,EAAG,CACxB,MAAM0G,EAAgBH,EAAMvG,GAAcsE,QAC1C,GAAIoC,IAAkBpC,EAAS,MAC/B,GAAImC,EAAWrpB,SAASspB,GAAgB,OAAO,EAC/C1G,KAGJ,OAAO,GAGI2G,GAAc,CAACJ,EAAoBK,KAC9CL,EAAM51B,OAAOi2B,IAGF3oB,GAAS5K,IACpB,MAAM,MAAEkzB,EAAF,OAASvC,GAAW3wB,EAC1B,IAAI,OAAEgT,GAAWhT,EACb8C,EAAQowB,EAAMA,EAAM92B,OAAS,GAAGqZ,SACpC,MAAMb,EAAM+b,EAAOv0B,OAEnB,MAAO4W,EAAS4B,EAAK,CACnB,MAAM4e,EAAQ7C,EAAO3d,GACrB,GAAmB,cAAfwgB,EAAMtyB,KAAsB,CAC9B4B,EAAMpG,KAAK82B,GACXxgB,IACA,SAGF,MAAMygB,EAAW9C,IAAS3d,GAC1BA,IACA,MAAMie,EAAUwC,EAAStrB,QAAQpC,cACjC,GAAIytB,EAAMf,MAAO,CACf,IAAI7mB,EAAQsnB,EAAM92B,OACds3B,GAAe,EACnB,QAAS9nB,GAAS,EAChB,GAAIsnB,EAAMtnB,GAAOqlB,UAAYA,EAAS,CACpCyC,GAAe,EACf,MAGJ,MAAO1gB,EAAS4B,EAAK,CACnB,GAA4B,YAAxB+b,EAAO3d,GAAQ9R,KAAoB,MACvC8R,IAEF,GAAI0gB,EAAc,CAChBJ,GAAYJ,EAAOtnB,GACnB,MAEG,SAGP,MAAM+nB,EAAenE,GAAYzlB,SAASknB,GAC1C,IAAI2C,EAA0BD,EAK9B,GAJIC,IACFA,GAA2BT,GAAkBlC,EAASiC,IAGpDU,EAAyB,CAC3B,IAAIjH,EAAeuG,EAAM92B,OAAS,EAClC,MAAOuwB,EAAe,EAAG,CACvB,GAAIsE,IAAYiC,EAAMvG,GAAcsE,QAAS,CAC3CqC,GAAYJ,EAAOvG,GACnB,MAAMkH,EAAgBlH,EAAe,EACrC7pB,EAAQowB,EAAMW,GAAepe,SAC7B,MAEFkX,GAA8B,GAIlC,MAAMmH,EAAa,GACnB,IAAIC,EACJ,MAAO/gB,EAAS4B,EAAK,CACnB,MAAMof,EAASrD,EAAO3d,GACtB,GAAoB,YAAhBghB,EAAO9yB,KAAoB,CAC7B6yB,EAAcC,EACd,MAEFF,EAAWp3B,KAAMs3B,EAA0B7rB,SAC3C6K,IAGF,IAAK+gB,EAAa,MAElB/gB,IACA,MAAMyC,EAAuB,GACvBwe,EAA6B,CACjC/yB,KAAM,UACN+vB,QAASwC,EAAStrB,QAClB2rB,aACAre,YAEF3S,EAAMpG,KAAKu3B,GAEX,MAAMC,IAAgBH,EAAYtB,OAASxC,GAASlmB,SAASknB,IAC7D,GAAIiD,EAAa,CACfhB,EAAMx2B,KAAK,CAACu0B,UAASxb,aACrB,MAAM0e,EAAa,CAAExD,SAAQ3d,SAAQkgB,SACrCtoB,GAAMupB,GACNnhB,EAASmhB,EAAWnhB,QAGxBhT,EAAMgT,OAASA,GC7HJohB,GAAY,CAACjuB,EAAakuB,KACrC,MAAMC,EAAMnuB,EAAIjE,QAAQmyB,GACxB,OAAa,IAATC,EAAmB,CAACnuB,GACjB,CAACA,EAAI3G,MAAM,EAAG80B,GAAMnuB,EAAI3G,MAAM80B,EAAMD,EAAIj4B,UAG3Cm4B,GAAWpuB,IACf,MAAMquB,EAAMruB,EAAIqqB,OAAO,GACjBloB,EAAMnC,EAAI/J,OAAS,EACnBq1B,EAAuB,MAAR+C,GAAuB,MAARA,EACpC,OAAI/C,GAAgB+C,IAAQruB,EAAIqqB,OAAOloB,GAC9BnC,EAAI3G,MAAM,EAAG8I,GAEfnC,GAGHsuB,GAAoBX,GACjBA,EAAWlqB,IAAI8qB,IACpB,MAAMC,EAAQP,GAAUM,EAAUE,OAAQ,KACpC71B,EAAM41B,EAAM,GACZl2B,EAA4B,kBAAbk2B,EAAM,GAAkBJ,GAAQI,EAAM,IAAM,KACjE,MAAO,CAAE51B,MAAKN,WAILo2B,GAAU/xB,GACdA,EAAM8G,IAAItI,IACf,GAAkB,YAAdA,EAAKJ,KAAoB,CAC3B,MAAMuU,EAAWof,GAAOvzB,EAAKmU,UACvBrO,EAAmB,CACvBlG,KAAM,UACN+vB,QAAS3vB,EAAK2vB,QAAQlrB,cACtB+tB,WAAYW,GAAiBnzB,EAAKwyB,YAClCre,YAEF,OAAOrO,EAGT,MAAMA,EAAyB,CAC7BlG,KAAMI,EAAKJ,KACXiH,QAAS7G,EAAK6G,SAEhB,OAAOf,I,UCzCJ,MCKM0tB,GAAS3uB,IACpB,MAAMwqB,EAASoC,GAAM5sB,GACfrD,EAAQkwB,GAAOrC,GACrB,OAAOkE,GAAO/xB,I,8BCRhB,MAAMiyB,GAAU,CACdC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,IAAK,IACLC,IAAK,IACLC,IAAK,KAsBMC,GAAY33B,IACvB,MAAM43B,EAAW,IAAIC,QAAY73B,GAE3BwK,EAAS,GACf,IAAK,MAAMnB,KAAQuuB,EAASE,SAAU,CACpC,MAAM30B,EAAO6zB,GAAQ3tB,EAAKlG,MAU1B,GARkB,IAAdkG,EAAKlG,MAA4B,KAAdkG,EAAKlG,MAC1BqH,EAAO7L,KAAK,CACVo5B,EAAG1uB,EAAK0uB,EACRC,EAAG3uB,EAAK2uB,EACRrY,SAAUtW,EAAKsW,SACfxc,SAGc,KAAdkG,EAAKlG,KACPqH,EAAO7L,KAAK,CACVo5B,EAAG1uB,EAAK0uB,EACRC,EAAG3uB,EAAK2uB,EACRva,MAAO,CACLta,KAAM,QACN80B,GAAI5uB,EAAK4uB,GACTC,GAAI7uB,EAAK6uB,GACTC,GAAI9uB,EAAK8uB,GACTC,GAAI/uB,EAAK+uB,IAEXzY,SAAUtW,EAAKsW,SACfxc,cAGC,GAAkB,MAAdkG,EAAKlG,KACZqH,EAAO7L,KAAK,CACVo5B,EAAG1uB,EAAK0uB,EACRC,EAAG3uB,EAAK2uB,EACRva,MAAO,CACLta,KAAM,YACN80B,GAAI5uB,EAAK4uB,GACTC,GAAI7uB,EAAK6uB,IAEXvY,SAAUtW,EAAKsW,SACfxc,cAGC,GAAkB,MAAdkG,EAAKlG,KAAc,CAC1B,MAAMk1B,EAAY7tB,EAAOA,EAAOnM,OAAS,GACzC,IAAK,CAAC,IAAK,IAAK,IAAK,KAAK2N,SAASqsB,EAAUl1B,MAAO,SAEpD,MAAMm1B,EAAoBC,gBAAY,CACpCC,GAAIH,EAAUN,EACdU,GAAIJ,EAAUL,EACdU,GAAIrvB,EAAK0uB,EACTY,GAAItvB,EAAK2uB,EACTY,GAAIvvB,EAAKwvB,GACTC,GAAIzvB,EAAK0vB,GACTC,cAAe3vB,EAAK4vB,KACpBC,aAAc7vB,EAAK8vB,SACnBC,UAAW/vB,EAAK+vB,YAElB,IAAK,MAAMC,KAAWf,EACpB9tB,EAAO7L,KAAK,CACVo5B,EAAGsB,EAAQtB,EACXC,EAAGqB,EAAQrB,EACXva,MAAO,CACLta,KAAM,QACN80B,GAAIoB,EAAQpB,GACZC,GAAImB,EAAQnB,GACZC,GAAIkB,EAAQlB,GACZC,GAAIiB,EAAQjB,IAEdzY,UAAU,EACVxc,KAAM,UAIP,IAAkB,IAAdkG,EAAKlG,KAGT,SAFHqH,EAAO7L,KAAK,CAAE+1B,OAAO,EAAMvxB,UAI/B,OAAOqH,GChHH8uB,GAAa,oEACbC,GAAS,6BAETC,GAAcrb,IAClBA,EAASA,EAAOF,QAAQ,QAAS,MACjC,IAAIwb,EAAU,GAEd,IAAK,IAAIv4B,EAAI,EAAGA,EAAIid,EAAO9f,OAAQ6C,IAAK,CACtC,MAAMnB,EAAIoe,EAAOub,WAAWx4B,GAExBnB,EAAI,IACN05B,GAAWE,OAAOC,aAAa75B,GAExBA,EAAI,KAAOA,EAAI,MACtB05B,GAAWE,OAAOC,aAAc75B,GAAK,EAAK,KAC1C05B,GAAWE,OAAOC,aAAkB,GAAJ75B,EAAU,OAG1C05B,GAAWE,OAAOC,aAAc75B,GAAK,GAAM,KAC3C05B,GAAWE,OAAOC,aAAe75B,GAAK,EAAK,GAAM,KACjD05B,GAAWE,OAAOC,aAAkB,GAAJ75B,EAAU,MAI9C,OAAO05B,GAGHI,GAAUC,IACd,IACIC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EADpCC,EAAS,GAETn8B,EAAI,EACR27B,EAAQN,GAAWM,GACnB,MAAO37B,EAAI27B,EAAMz7B,OACf07B,EAAOD,EAAMJ,WAAWv7B,KACxB67B,EAAOF,EAAMJ,WAAWv7B,KACxB87B,EAAOH,EAAMJ,WAAWv7B,KACxB+7B,EAAOH,GAAQ,EACfI,GAAgB,EAAPJ,IAAa,EAAMC,GAAQ,EACpCI,GAAgB,GAAPJ,IAAc,EAAMC,GAAQ,EACrCI,EAAc,GAAPJ,EACHM,MAAMP,GAAOI,EAAOC,EAAO,GACtBE,MAAMN,KAAOI,EAAO,IAC7BC,EAASA,EAAShB,GAAW7G,OAAOyH,GAAQZ,GAAW7G,OAAO0H,GAAQb,GAAW7G,OAAO2H,GAAQd,GAAW7G,OAAO4H,GAEpH,OAAOC,GAGIE,GAAcnsB,IACzB,MAAMosB,EAAO,IAAIC,cACXC,EAAMF,EAAKG,kBAAkBvsB,GAEnC,OAAOkrB,GAASM,GAAOc,ICpCnBE,GAAgB,IAChBC,GAAc,IAQL,YACb,MAAMhqB,EAAc3F,KACd,OAAE5B,EAAF,MAAUqB,EAAV,cAAiBU,GAAkBqX,eAAY7R,IAE/C,kBAAEqV,GAAsBI,KAExBwU,EAAYC,kBAAI,GAGhBC,EAAc,CAACC,EAAqBpE,EAAgBqE,EAAiBC,GAAgB,KACzFL,EAAUr6B,OAAQ,EAClB,MAAM26B,EAAqB,QAAXvE,EAAmBwE,QAAQC,QAErCC,EAAqBN,EAAOO,iBAAiB,yBACnDD,EAAmBrf,QAAQuf,GAAWA,EAAQC,gBAAgB,UAE9D7Y,WAAW,KACT,MAAM8Y,EAA4B,CAChCT,UACAjzB,MAAO,MAGLkzB,IAAeQ,EAAOC,aAAe,IAEzCR,EAAQH,EAAQU,GAAQpiB,KAAKsiB,IAC3Bf,EAAUr6B,OAAQ,EAClBq7B,qBAAOD,EAAS,iBAAiBhF,KAChCtP,MAAM,KACPuT,EAAUr6B,OAAQ,EAClBgnB,GAAA,KAAQsU,MAAM,aAEf,MAICC,EAAsB3T,IAC1B,MAAM4T,EAAO,IAAIC,KAAK,CAACvkB,GAAQlL,KAAKC,UAAU2b,KAAY,CAAEnlB,KAAM,KAClE44B,qBAAOG,EAAM,yBAITE,EAAqB,CAACC,EAAiBC,GAAQ,KACnD,MAAMvd,EAAOsd,EAAM,GAEbrd,EAAS,IAAIC,WACnBD,EAAOE,iBAAiB,OAAQ,KAC9B,IACE,MAAM3V,EAASmD,KAAKG,MAAMoL,GAAQ+G,EAAO9f,SACrCo9B,EAAOxrB,EAAY3D,UAAU5D,GAC5B4c,EAAkB5c,GAEzB,MACEme,GAAA,KAAQsU,MAAM,qBAGlBhd,EAAOud,WAAWxd,IAIdyd,EAAa,KACjB,MAAMN,EAAO,IAAIC,KAAK,CAACzvB,KAAKC,UAAUpD,EAAO7I,QAAS,CAAEyC,KAAM,KAC9D44B,qBAAOG,EAAM,uBAITO,EAAeC,IACnB,MAAM38B,EAAIwM,IAAUmwB,GACdC,EAAQ58B,EAAE68B,WACV92B,EAAkB,IAAV62B,EAAc,UAAY58B,EAAEqd,SAAS,GAAGyf,cACtD,MAAO,CACLF,QACA72B,UAQEg3B,EAAcC,IAClB,MAAMC,EAAMjG,GAAMgG,GAClB,IAAIE,GAAa,EACbC,EAAS,EAEb,MAAMC,EAA8B,GAC9BtwB,EAAQ,CAACuwB,EAAYC,EAAe,MAExC,IAAK,MAAMh0B,KAAQ+zB,EAAK,CACtB,MAAME,EAAa,YAAaj0B,GAAQ,CAAC,MAAO,KAAM,KAAK2C,SAAS3C,EAAK6pB,SAEzE,GAAIoK,GAAcH,EAAO9+B,OAAQ,CAC/B,MAAMk/B,EAAYJ,EAAOA,EAAO9+B,OAAS,GACpCk/B,EAAUha,UAASga,EAAUha,QAAU,IAC5Cga,EAAUha,QAAQia,WAAY,EAGhC,MAAMC,EAAW,IAAKJ,GAChBK,EAAY,eAAgBr0B,EAAOA,EAAK0sB,WAAWryB,KAAKyB,GAAqB,UAAbA,EAAKnE,KAAmB,KAC9F,GAAI08B,GAAaA,EAAUh9B,MAAO,CAChC,MAAMi9B,EAAWD,EAAUh9B,MAAMqT,MAAM,KACvC,IAAK,MAAM6pB,KAAaD,EAAU,CAChC,MAAOE,EAAMC,GAAUF,EAAU7pB,MAAM,OAChC/S,EAAKN,GAAS,CAACm2B,kBAAKgH,GAAOhH,kBAAKiH,IACnC98B,GAAON,IAAO+8B,EAASz8B,GAAON,IAItC,GAAI,YAAa2I,EAAM,CAarB,GAZqB,OAAjBA,EAAK6pB,UACPuK,EAAS,cAAgB,UAEN,WAAjBp0B,EAAK6pB,UACPuK,EAAS,eAAiB,QAEP,QAAjBp0B,EAAK6pB,UACPuK,EAAS,kBAAoB,SAEV,QAAjBp0B,EAAK6pB,UACPuK,EAAS,kBAAoB,OAEV,MAAjBp0B,EAAK6pB,QAAiB,CACxB,MAAM/tB,EAAOkE,EAAK0sB,WAAWryB,KAAKyB,GAAqB,SAAbA,EAAKnE,KAC/Cy8B,EAAS,SAAc,OAAJt4B,QAAI,IAAJA,OAAA,EAAAA,EAAMzE,QAAS,GAWpC,GATqB,OAAjB2I,EAAK6pB,UACPuK,EAAS,aAAe,MAEL,OAAjBp0B,EAAK6pB,UACPuK,EAAS,aAAe,MAEL,OAAjBp0B,EAAK6pB,UACP+J,GAAa,GAEM,MAAjB5zB,EAAK6pB,SACH,eAAgB7pB,EAAM,CACxB,MAAM00B,EAAiB10B,EAAK0sB,WAAWryB,KAAKyB,GAAqB,gBAAbA,EAAKnE,KACrD+8B,GAAkBA,EAAer9B,QAAOw8B,GAAUa,EAAer9B,QAK3E,GAAI,YAAa2I,GAAyB,OAAjBA,EAAK6pB,QAC5BiK,EAAOx+B,KAAK,CAAEuM,KAAM,GAAIqY,QAAS,CAAEia,WAAW,UAE3C,GAAI,YAAan0B,EAAM,CAC1B,MAAM6B,EAAO7B,EAAKe,QAAQ6T,QAAQ,UAAW,KAAKA,QAAQ,QAAS,KAAKA,QAAQ,QAAS,KAAKA,QAAQ,SAAU,KAAKA,QAAQ,MAAO,IAC9HsF,EAAoC,GAEtCka,EAAS,eACXla,EAAQya,SAAWr2B,SAAS81B,EAAS,cAAgB3C,IAEnD2C,EAAS,WACXla,EAAQzd,MAAQ22B,EAAYgB,EAAS,UAAU33B,OAE7C23B,EAAS,sBACXla,EAAQ0a,UAAYxB,EAAYgB,EAAS,qBAAqB33B,OAE5D23B,EAAS,2BACoD,IAA3DA,EAAS,wBAAwBt5B,QAAQ,eAC3Cof,EAAQrc,UAAY,CAClBpB,MAAOyd,EAAQzd,OAAS,UACxB2E,MAAO,SAGuD,IAA9DgzB,EAAS,wBAAwBt5B,QAAQ,kBAC3Cof,EAAQ2a,OAAS,cAGjBT,EAAS,sBAC+C,IAAtDA,EAAS,mBAAmBt5B,QAAQ,eACtCof,EAAQrc,UAAY,CAClBpB,MAAOyd,EAAQzd,OAAS,UACxB2E,MAAO,SAGkD,IAAzDgzB,EAAS,mBAAmBt5B,QAAQ,kBACtCof,EAAQ2a,OAAS,cAGjBT,EAAS,oBACwB,UAA/BA,EAAS,oBAA+Bla,EAAQnc,aAAc,GAC/B,QAA/Bq2B,EAAS,oBAA6Bla,EAAQlc,WAAY,IAE5Do2B,EAAS,gBAAela,EAAQrd,MAAQu3B,EAAS,eACjDA,EAAS,iBAAgBla,EAAQvc,KAAmC,SAA5By2B,EAAS,gBACjDA,EAAS,gBAAela,EAAQ4a,OAAoC,WAA3BV,EAAS,eAClDA,EAAS,iBAAgBla,EAAQ6a,SAAWX,EAAS,gBACrDA,EAAS,UAASla,EAAQ8a,UAAY,CAAEC,IAAKb,EAAS,UAEtDR,GAAwC,OAA1BQ,EAAS,eACzBla,EAAQgb,OAAS,CAAEp7B,KAAM,SAAU+5B,OAAQ,GAAKpC,IAChDvX,EAAQib,gBAAkB,GAC1BvB,GAAa,GAEXA,GAAwC,OAA1BQ,EAAS,eACzBla,EAAQgb,OAAS,CAAErB,OAAQ,GAAKpC,IAChCvX,EAAQib,gBAAkB,GAC1BvB,GAAa,GAEXC,IACF3Z,EAAQkb,YAAcvB,EACtBA,EAAS,GAGXC,EAAOx+B,KAAK,CAAEuM,OAAMqY,gBAEb,aAAcla,GAAMwD,EAAMxD,EAAKqO,SAAU+lB,KAItD,OADA5wB,EAAMmwB,GACCG,GAYHuB,EAAe,CAACl0B,EAAmB+G,EAAQ,CAAEwmB,EAAG,EAAGC,EAAG,KACnDxtB,EAAOqB,IAAImV,IAChB,QAAoB2d,IAAhB3d,EAAM0T,MACR,MAAO,CAAEA,OAAO,GAEb,GAAmB,MAAf1T,EAAM7d,KACb,MAAO,CACL40B,EAAG/W,EAAM+W,EAAI8C,GAAgBtpB,EAAMwmB,EACnCC,EAAGhX,EAAMgX,EAAI6C,GAAgBtpB,EAAMymB,EACnC4G,QAAQ,GAGP,GAAI5d,EAAMvD,MAAO,CACpB,GAAyB,UAArBuD,EAAMvD,MAAMta,KACd,MAAO,CACL40B,EAAG/W,EAAM+W,EAAI8C,GAAgBtpB,EAAMwmB,EACnCC,EAAGhX,EAAMgX,EAAI6C,GAAgBtpB,EAAMymB,EACnCva,MAAO,CACLta,KAAM,QACN80B,GAAKjX,EAAMvD,MAAMwa,GAAgB4C,GAAgBtpB,EAAMwmB,EACvDG,GAAKlX,EAAMvD,MAAMya,GAAgB2C,GAAgBtpB,EAAMymB,EACvDG,GAAKnX,EAAMvD,MAAM0a,GAAgB0C,GAAgBtpB,EAAMwmB,EACvDK,GAAKpX,EAAMvD,MAAM2a,GAAgByC,GAAgBtpB,EAAMymB,IAIxD,GAAyB,cAArBhX,EAAMvD,MAAMta,KACnB,MAAO,CACL40B,EAAG/W,EAAM+W,EAAI8C,GAAgBtpB,EAAMwmB,EACnCC,EAAGhX,EAAMgX,EAAI6C,GAAgBtpB,EAAMymB,EACnCva,MAAO,CACLta,KAAM,YACN80B,GAAKjX,EAAMvD,MAAMwa,GAAgB4C,GAAgBtpB,EAAMwmB,EACvDG,GAAKlX,EAAMvD,MAAMya,GAAgB2C,GAAgBtpB,EAAMymB,IAK/D,MAAO,CACLD,EAAG/W,EAAM+W,EAAI8C,GAAgBtpB,EAAMwmB,EACnCC,EAAGhX,EAAMgX,EAAI6C,GAAgBtpB,EAAMymB,KAMnC6G,EAAmBC,IACvB,MAAM/+B,EAAI08B,EAAYqC,EAAOh5B,QACvB,EAAE0f,EAAF,EAAKuZ,GAAMD,EAEjB,IAAIE,EAAS,EACTC,EAAQ,GA2CZ,OAzCU,IAANzZ,GAAiB,IAANuZ,GACbC,EAAS,EACTC,EAAQ,IAEK,IAANzZ,EACHuZ,EAAI,GACNC,EAASD,EACTE,EAAQ,KAGRD,GAAUD,EACVE,EAAQ,KAGG,IAANF,EACHvZ,EAAI,GACNwZ,EAASxZ,EACTyZ,EAAQ,IAGRD,GAAUxZ,EACVyZ,EAAQ,KAGHzZ,EAAI,GAAKuZ,EAAI,GACpBC,EAAShxB,KAAK+M,IAAIyK,EAAGuZ,GACrBE,EAAQ,IAEDzZ,EAAI,GAAKuZ,EAAI,GACpBC,EAAShxB,KAAK+M,IAAIyK,GAAIuZ,GACtBE,EAAQ,KAEDzZ,EAAI,GAAKuZ,EAAI,GACpBC,EAAShxB,KAAK+M,KAAKyK,EAAGuZ,GACtBE,EAAQ,KAEDzZ,EAAI,GAAKuZ,EAAI,IACpBC,EAAShxB,KAAK+M,KAAKyK,GAAIuZ,GACvBE,EAAQ,KAGH,CACL97B,KAAM,QACN2C,MAAO/F,EAAE+F,MAAMmY,QAAQ,IAAK,IAC5BjU,QAASjK,EAAE48B,MACXuC,KAAMJ,EAAOI,KAAOpE,GACpBkE,SACAC,UAKEE,EAAoBl0B,IACxB,MAAMlL,EAAI08B,GAAmB,OAAPxxB,QAAO,IAAPA,OAAA,EAAAA,EAASnF,QAAS,WACxC,MAAO,CACLA,MAAO/F,EAAE+F,MACTs5B,aAA8B,KAAf,EAAIr/B,EAAE48B,OACrBz0B,OAAQ+C,EAAQ/C,OAAS,GAAK4yB,GAC9BuE,SAA4B,UAAlBp0B,EAAQR,MAAoB,QAAU,SAK9C60B,EAAiB14B,IACrB,MAAM,KAAEzD,EAAF,OAAQkjB,GAAWzf,EACzB,GAAa,QAATzD,EAAgB,MAAO,CAAEm7B,IAAKjY,GAClC,GAAa,UAATljB,EAAkB,CACpB,MAAM0K,EAAQtE,EAAO7I,MAAMoN,UAAUT,GAASA,EAAM7D,KAAO6c,GAC3D,IAAe,IAAXxY,EAAc,MAAO,CAAER,MAAOQ,EAAQ,GAG5C,OAAO,MAIH0xB,EAAa,CAACjX,EAAkBkX,KACpCzE,EAAUr6B,OAAQ,EAClB,MAAM++B,EAAO,IAAIC,QAUjB,GAR4B,OAAxBp0B,EAAc5K,MAAiB++B,EAAKE,OAAS,eAChB,MAAxBr0B,EAAc5K,MAAgB++B,EAAKE,OAAS,aACpB,YAAxBr0B,EAAc5K,OACrB++B,EAAKG,aAAa,CAAE3/B,KAAM,KAAMiI,MAAO,GAAIC,OAAQ,YACnDs3B,EAAKE,OAAS,MAEXF,EAAKE,OAAS,cAEfH,EAAiB,CACnB,MAAQ15B,MAAO+5B,EAASlD,MAAOmD,GAAYrD,EAAY7xB,EAAMlK,MAAMqK,iBACnE00B,EAAKM,kBAAkB,CACrBC,MAAO,gBACPt1B,WAAY,CAAE5E,MAAO+5B,EAAST,aAA8B,KAAf,EAAIU,MAIrD,IAAK,MAAMzyB,KAASib,EAAS,CAC3B,MAAM2X,EAAYR,EAAKryB,WAEvB,GAAIC,EAAM3C,WAAY,CACpB,MAAMA,EAAa2C,EAAM3C,WACzB,GAAwB,UAApBA,EAAWvH,MAAoBuH,EAAWw1B,MAC5CD,EAAUv1B,WAAa,CAAE7M,KAAM6M,EAAWw1B,YAEvC,GAAwB,UAApBx1B,EAAWvH,MAAoBuH,EAAW5E,MAAO,CACxD,MAAM/F,EAAI08B,EAAY/xB,EAAW5E,OACjCm6B,EAAUv1B,WAAa,CAAE5E,MAAO/F,EAAE+F,MAAOs5B,aAA8B,KAAf,EAAIr/B,EAAE48B,aAE3D,GAAwB,aAApBjyB,EAAWvH,MAAuBuH,EAAWy1B,cAAe,CACnE,MAAOC,EAAQC,GAAU31B,EAAWy1B,cAC9Br6B,EAAQyG,IAAU+zB,IAAIF,EAAQC,GAAQxD,cACtC98B,EAAI08B,EAAY32B,GACtBm6B,EAAUv1B,WAAa,CAAE5E,MAAO/F,EAAE+F,MAAOs5B,aAA8B,KAAf,EAAIr/B,EAAE48B,SAKlE,GAFItvB,EAAMkzB,QAAQN,EAAUO,SAASnzB,EAAMkzB,QAEtClzB,EAAM5D,SAEX,IAAK,MAAMqC,KAAMuB,EAAM5D,SACrB,GAAgB,SAAZqC,EAAG3I,KAAiB,OACtB,MAAMs9B,EAAY3D,EAAWhxB,EAAG1B,SAE1BmZ,EAAoC,CACxCwU,EAAGjsB,EAAGpC,KAAOmxB,GACb7C,EAAGlsB,EAAGnC,IAAMkxB,GACZtV,EAAGzZ,EAAG5D,MAAQ2yB,GACdrV,EAAG1Z,EAAG3D,OAAS0yB,GACfmD,SAAU,GAAKlD,GACfsD,SAAU,OACVt4B,MAAO,UACP46B,OAAQ,MACRC,OAAQ,GAAK7F,GACb0D,gBAAiB,EAAI1D,GACrB8F,oBAAqB,IACrBC,SAAS,GAKX,GAHI/0B,EAAG7B,SAAQsZ,EAAQtZ,OAAS6B,EAAG7B,QAC/B6B,EAAGnB,YAAW4Y,EAAQud,YAAch1B,EAAGnB,UAAYmwB,IACnDhvB,EAAG3B,aAAYoZ,EAAQqd,oBAAsB90B,EAAG3B,WAAa,MAC7D2B,EAAGhC,KAAM,CACX,MAAM/J,EAAI08B,EAAY3wB,EAAGhC,MACnBE,OAAyB20B,IAAf7yB,EAAG9B,QAAwB,EAAI8B,EAAG9B,QAClDuZ,EAAQzZ,KAAO,CAAEhE,MAAO/F,EAAE+F,MAAOs5B,aAAwC,KAAzB,EAAIr/B,EAAE48B,MAAQ3yB,IAE5D8B,EAAGxB,eAAciZ,EAAQzd,MAAQ22B,EAAY3wB,EAAGxB,cAAcxE,OAC9DgG,EAAGzB,kBAAiBkZ,EAAQ6a,SAAWtyB,EAAGzB,iBAC1CyB,EAAGgzB,SAAQvb,EAAQub,OAASD,EAAgB/yB,EAAGgzB,SACnD,UAAIhzB,EAAGb,eAAP,OAAI,EAAY/C,QAAOqb,EAAQjH,KAAO6iB,EAAiBrzB,EAAGb,eACvC0zB,IAAf7yB,EAAG9B,UAAuBuZ,EAAQ6b,aAAkC,KAAlB,EAAItzB,EAAG9B,eACnC20B,IAAtB7yB,EAAGi1B,iBAA8Bxd,EAAQib,gBAAkB1yB,EAAGi1B,eAAiBjG,IAC/EhvB,EAAG8Y,WAAUrB,EAAQyd,KAAO,UAEhCf,EAAUgB,QAAQR,EAAWld,QAG1B,GAAgB,UAAZzX,EAAG3I,KAAkB,SAC5B,MAAMogB,EAA8B,CAClC1Z,KAAMiC,EAAGwS,IACTyZ,EAAGjsB,EAAGpC,KAAOmxB,GACb7C,EAAGlsB,EAAGnC,IAAMkxB,GACZtV,EAAGzZ,EAAG5D,MAAQ2yB,GACdrV,EAAG1Z,EAAG3D,OAAS0yB,IAKjB,GAHI/uB,EAAGo1B,QAAO3d,EAAQ2d,MAAQp1B,EAAGo1B,OAC7Bp1B,EAAG5B,QAAOqZ,EAAQrZ,MAAQ4B,EAAG5B,OAC7B4B,EAAG7B,SAAQsZ,EAAQtZ,OAAS6B,EAAG7B,QAC/B6B,EAAGlF,KAAM,CACX,MAAMu6B,EAAa7B,EAAcxzB,EAAGlF,MAChCu6B,IAAY5d,EAAQ8a,UAAY8C,GAGtC,GADA,UAAIr1B,EAAGs1B,eAAP,OAAI,EAAYp3B,UAASuZ,EAAQ6b,aAAe,IAAMz3B,SAAQ,UAACmE,EAAGs1B,eAAJ,aAAC,EAAYp3B,UACvE8B,EAAGu1B,KAAM,CACW,YAAlBv1B,EAAGu1B,KAAKC,QAAqB/d,EAAQge,UAAW,GAEpD,MAAO98B,EAAO8F,GAAOuB,EAAGu1B,KAAK3kB,OACtB8kB,EAAQC,GAAUh9B,GAClBi9B,EAAMC,GAAQp3B,EAEfq3B,EAAU91B,EAAG5D,QAAUw5B,EAAOF,GAAU3G,IACxCgH,EAAU/1B,EAAG3D,SAAWw5B,EAAOF,GAAU5G,IAE/CtX,EAAQgC,EAAIqc,EAAU/G,GACtBtX,EAAQiC,EAAIqc,EAAUhH,GAEtBtX,EAAQue,OAAS,CACf3+B,KAAM,OACN40B,EAAGyJ,EAAS3G,GAAgB+G,EAAU/G,GACtC7C,EAAGyJ,EAAS5G,GAAgBgH,EAAUhH,GACtCtV,GAAImc,EAAOF,GAAU3G,GAAgB+G,EAAU/G,GAC/CrV,GAAImc,EAAOF,GAAU5G,GAAgBgH,EAAUhH,IAInDoF,EAAU8B,SAASxe,QAGhB,GAAgB,UAAZzX,EAAG3I,KAAkB,CAC5B,GAAI2I,EAAGyV,QAAS,CACd,MAAMygB,EAAS15B,SAASwc,cAAc,iCAAiChZ,EAAGtC,UACpEy4B,EAAYzH,GAAWwH,GAEvBze,EAA8B,CAClC1lB,KAAMokC,EACNlK,EAAGjsB,EAAGpC,KAAOmxB,GACb7C,EAAGlsB,EAAGnC,IAAMkxB,GACZtV,EAAGzZ,EAAG5D,MAAQ2yB,GACdrV,EAAG1Z,EAAG3D,OAAS0yB,IAGjB,GADI/uB,EAAG7B,SAAQsZ,EAAQtZ,OAAS6B,EAAG7B,QAC/B6B,EAAGlF,KAAM,CACX,MAAMu6B,EAAa7B,EAAcxzB,EAAGlF,MAChCu6B,IAAY5d,EAAQ8a,UAAY8C,GAGtClB,EAAU8B,SAASxe,OAEhB,OACH,MAAMhS,EAAQ,CACZwmB,EAAGjsB,EAAG5D,MAAQ4D,EAAGlC,QAAQ,GACzBouB,EAAGlsB,EAAG3D,OAAS2D,EAAGlC,QAAQ,IAEtBY,EAASk0B,EAAa/G,GAAS7rB,EAAGjC,MAAO0H,GAEzC2wB,EAAYzF,EAAY3wB,EAAGhC,MAC3BE,OAAyB20B,IAAf7yB,EAAG9B,QAAwB,EAAI8B,EAAG9B,QAE5CuZ,EAA8B,CAClCwU,EAAGjsB,EAAGpC,KAAOmxB,GACb7C,EAAGlsB,EAAGnC,IAAMkxB,GACZtV,EAAGzZ,EAAG5D,MAAQ2yB,GACdrV,EAAG1Z,EAAG3D,OAAS0yB,GACf/wB,KAAM,CAAEhE,MAAOo8B,EAAUp8B,MAAOs5B,aAAgD,KAAjC,EAAI8C,EAAUvF,MAAQ3yB,IACrEQ,UAMF,GAJIsB,EAAGo1B,QAAO3d,EAAQ2d,MAAQp1B,EAAGo1B,OAC7Bp1B,EAAG5B,QAAOqZ,EAAQrZ,MAAQ4B,EAAG5B,OAC7B4B,EAAGgzB,SAAQvb,EAAQub,OAASD,EAAgB/yB,EAAGgzB,SACnD,UAAIhzB,EAAGb,eAAP,OAAI,EAAY/C,QAAOqb,EAAQjH,KAAO6iB,EAAiBrzB,EAAGb,UACtDa,EAAGlF,KAAM,CACX,MAAMu6B,EAAa7B,EAAcxzB,EAAGlF,MAChCu6B,IAAY5d,EAAQ8a,UAAY8C,GAGtClB,EAAUkC,SAAS,WAAiC5e,GAEtD,GAAIzX,EAAGZ,KAAM,CACX,MAAMu1B,EAAY3D,EAAWhxB,EAAGZ,KAAKd,SAE/BmZ,EAAoC,CACxCwU,EAAGjsB,EAAGpC,KAAOmxB,GACb7C,EAAGlsB,EAAGnC,IAAMkxB,GACZtV,EAAGzZ,EAAG5D,MAAQ2yB,GACdrV,EAAG1Z,EAAG3D,OAAS0yB,GACfmD,SAAU,GAAKlD,GACfsD,SAAU,OACVt4B,MAAO,UACP04B,gBAAiB,EAAI1D,GACrB4F,OAAQ50B,EAAGZ,KAAKhF,OAEd4F,EAAG7B,SAAQsZ,EAAQtZ,OAAS6B,EAAG7B,QAC/B6B,EAAGZ,KAAKZ,eAAciZ,EAAQzd,MAAQ22B,EAAY3wB,EAAGZ,KAAKZ,cAAcxE,OACxEgG,EAAGZ,KAAKb,kBAAiBkZ,EAAQ6a,SAAWtyB,EAAGZ,KAAKb,iBAExD41B,EAAUgB,QAAQR,EAAWld,SAI5B,GAAgB,SAAZzX,EAAG3I,KAAiB,CAC3B,MAAM0G,EAAOyT,GAAmBxR,GAC1BtB,EAASk0B,EAAa/G,GAAS9tB,KAC/B,KAAE4R,EAAF,KAAQC,EAAR,KAAcC,EAAd,KAAoBC,GAASJ,GAAgB1P,GAC7C/L,EAAI08B,EAAY3wB,EAAGhG,OAEnByd,EAA8B,CAClCwU,EAAGjsB,EAAGpC,KAAOmxB,GACb7C,EAAGlsB,EAAGnC,IAAMkxB,GACZtV,GAAI7J,EAAOD,GAAQof,GACnBrV,GAAI5J,EAAOD,GAAQkf,GACnBve,KAAM,CACJxW,MAAO/F,EAAE+F,MACTs5B,aAA8B,KAAf,EAAIr/B,EAAE48B,OACrBz0B,MAAO4D,EAAG5D,MAAQ4yB,GAClBuE,SAAuB,UAAbvzB,EAAGrB,MAAoB,QAAU,OAC3C23B,eAAgBt2B,EAAGtB,OAAO,GAAK,QAAU,OACzC63B,aAAcv2B,EAAGtB,OAAO,GAAK,QAAU,QAEzCA,UAEEsB,EAAGgzB,SAAQvb,EAAQub,OAASD,EAAgB/yB,EAAGgzB,SAEnDmB,EAAUkC,SAAS,WAAiC5e,QAGjD,GAAgB,UAAZzX,EAAG3I,KAAkB,CAC5B,MAAMm/B,EAAY,GAClB,IAAK,IAAInkC,EAAI,EAAGA,EAAI2N,EAAGjO,KAAKylB,OAAOjlB,OAAQF,IAAK,CAC9C,MAAMkL,EAAOyC,EAAGjO,KAAKylB,OAAOnlB,GAC5BmkC,EAAU3jC,KAAK,CACbsB,KAAM,MAAK9B,EAAI,GACfilB,OAAQtX,EAAGjO,KAAKulB,OAChB8C,OAAQ7c,IAIZ,IAAIk5B,EAAwB,GAC5B,GAA6B,KAAzBz2B,EAAGjB,WAAWxM,OAAekkC,EAAcz2B,EAAGjB,WAAWgB,IAAI/F,GAAS22B,EAAY32B,GAAOA,YACxF,GAA6B,IAAzBgG,EAAGjB,WAAWxM,OAAckkC,EAAch2B,IAAUT,EAAGjB,WAAW,IAAI23B,UAAU,IAAI32B,IAAI/F,GAAS22B,EAAY32B,EAAM+2B,eAAe/2B,WACtI,CACH,MAAM+Q,EAAM/K,EAAGjB,WAAWxM,OACpBokC,EAAal2B,IAAUT,EAAGjB,WAAWgM,EAAM,IAAI2rB,UAAU,GAAS3rB,GAAKhL,IAAI/F,GAASA,EAAM+2B,eAChG0F,EAAc,IAAIz2B,EAAGjB,WAAWpJ,MAAM,EAAGoV,EAAM,MAAO4rB,GAAY52B,IAAI/F,GAAS22B,EAAY32B,GAAOA,OAGpG,MAAMyd,EAA8B,CAClCwU,EAAGjsB,EAAGpC,KAAOmxB,GACb7C,EAAGlsB,EAAGnC,IAAMkxB,GACZtV,EAAGzZ,EAAG5D,MAAQ2yB,GACdrV,EAAG1Z,EAAG3D,OAAS0yB,GACf0H,YAA8B,QAAjBz2B,EAAGoX,UAAsBqf,EAAcA,EAAY9gC,MAAM,EAAGqK,EAAGjO,KAAKylB,OAAOjlB,SAGtFyN,EAAGhC,OAAMyZ,EAAQmf,SAAW,CAAE54B,KAAM,CAAEhE,MAAO22B,EAAY3wB,EAAGhC,MAAMhE,SAClEgG,EAAG62B,SACLpf,EAAQqf,YAAa,EACrBrf,EAAQsf,UAA0B,QAAd/2B,EAAG62B,OAAmB,IAAM,IAChDpf,EAAQuf,YAAcrG,EAAY3wB,EAAGqX,WAAa,WAAWrd,MAC7Dyd,EAAQwf,eAAiB,GAAKjI,IAGhC,IAAI33B,EAAOs8B,EAAKuD,UAAUthB,IACE,MAA5B,GAAqB,QAAjB5V,EAAGoX,UACL/f,EAAOs8B,EAAKuD,UAAUthB,IACtB6B,EAAQ0f,OAAS,UAAAn3B,EAAGyX,eAAH,SAAYC,eAAiB,MAAQ,WAEnD,GAAqB,SAAjB1X,EAAGoX,UAAsB,WAChC,UAAIpX,EAAGyX,eAAP,OAAI,EAAYE,SAAUtgB,EAAOs8B,EAAKuD,UAAUphB,MACd,KAAzB,UAAA9V,EAAGyX,eAAH,eAAYG,WACnBvgB,EAAOs8B,EAAKuD,UAAUnhB,QAEtBygB,EAAU9W,QAAQ,CAAEvrB,KAAM,SAAUimB,OAAQjiB,MAAM6H,EAAGjO,KAAKylB,OAAO,GAAGjlB,QAAQyL,KAAK,GAAG+B,IAAI,CAACkzB,EAAG5gC,IAAMA,KAClGolB,EAAQ2f,SAAW,GAEhB//B,EAAOs8B,EAAKuD,UAAU1mB,KAE3B,UAAIxQ,EAAGyX,eAAP,OAAI,EAAY4f,aAAY5f,EAAQ4f,YAAa,QAE9C,GAAqB,QAAjBr3B,EAAGoX,UAAqB,OAC/B,UAAIpX,EAAGyX,eAAP,OAAI,EAAYI,OACdxgB,EAAOs8B,EAAKuD,UAAUI,SACtB7f,EAAQ8f,SAAW,IAEhBlgC,EAAOs8B,EAAKuD,UAAUlhB,IAG7Bme,EAAUqD,SAASngC,EAAMm/B,EAAW/e,QAGjC,GAAgB,UAAZzX,EAAG3I,KAAkB,CAC5B,MAAMogC,EAAc,GACpB,IAAK,IAAIplC,EAAI,EAAGA,EAAI2N,EAAGjO,KAAKQ,OAAQF,IAAK,CACvC,MAAMqlC,EAAU13B,EAAGjO,KAAKM,GAExB,IAAK,IAAIkB,EAAI,EAAGA,EAAImkC,EAAQnlC,OAAQgB,IAAK,CACvC,MAAMokC,EAAOD,EAAQnkC,GACrB,GAAIokC,EAAKzf,QAAU,GAAKyf,EAAKxf,QAAU,EACrC,IAAK,IAAIJ,EAAM1lB,EAAG0lB,EAAM1lB,EAAIslC,EAAKxf,QAASJ,IACxC,IAAK,IAAIC,EAAMD,IAAQ1lB,EAAIkB,EAAI,EAAIA,EAAGykB,EAAMzkB,EAAIokC,EAAKzf,QAASF,IAAOyf,EAAY5kC,KAAK,GAAGklB,KAAOC,MAMxG,MAAM4f,EAAY,GAEZ94B,EAAQkB,EAAGlB,MACjB,IAAIC,EAAiC,KACjC84B,EAAgC,GAChC/4B,IACFC,EAAa4xB,EAAY7xB,EAAM9E,OAC/B69B,EAAiBzmB,GAAsBtS,EAAM9E,OAAO+F,IAAIxC,GAAQozB,EAAYpzB,KAG9E,IAAK,IAAIlL,EAAI,EAAGA,EAAI2N,EAAGjO,KAAKQ,OAAQF,IAAK,CACvC,MAAM0lB,EAAM/X,EAAGjO,KAAKM,GACdylC,EAAO,GAEb,IAAK,IAAIvkC,EAAI,EAAGA,EAAIwkB,EAAIxlB,OAAQgB,IAAK,uBACnC,MAAMokC,EAAO5f,EAAIxkB,GACXwkC,EAAsC,CAC1C7f,QAASyf,EAAKzf,QACdC,QAASwf,EAAKxf,QACdjd,MAAM,UAAAy8B,EAAKh5B,aAAL,eAAYzD,QAAQ,EAC1Bm3B,QAAQ,UAAAsF,EAAKh5B,aAAL,eAAYxD,MAAM,EAC1BC,UAAW,CAAEuD,MAAO,UAAAg5B,EAAKh5B,aAAL,SAAYvD,UAAY,MAAQ,QACpDhB,OAAO,UAAAu9B,EAAKh5B,aAAL,eAAYvE,QAAS,OAC5Bw6B,OAAQ,SACRtC,UAAU,UAAAqF,EAAKh5B,aAAL,eAAYxE,WAAY,OAClC+3B,UAAW,UAAAyF,EAAKh5B,aAAL,SAAYzE,SAAW2B,SAAQ,UAAC87B,EAAKh5B,aAAN,aAAC,EAAYzE,UAAY,IAAM80B,IAE3E,GAAIlwB,GAASC,EAAY,CACvB,IAAI9K,EACaA,EAAb5B,EAAI,IAAM,EAAOwlC,EAAe,GAC3BA,EAAe,IAEpB/4B,EAAMyZ,WAAmB,IAANlmB,GACdyM,EAAM0Z,WAAanmB,IAAM2N,EAAGjO,KAAKQ,OAAS,GAC1CuM,EAAM2Z,WAAmB,IAANllB,GACnBuL,EAAM4Z,WAAanlB,IAAMwkB,EAAIxlB,OAAS,KAHf0B,EAAI8K,GAKpCg5B,EAAY/5B,KAAO,CAAEhE,MAAO/F,EAAE+F,MAAOs5B,aAA8B,KAAf,EAAIr/B,EAAE48B,QAE5D,aAAI8G,EAAKh5B,aAAT,OAAI,EAAY1E,UAAW,CACzB,MAAMhG,EAAI08B,EAAYgH,EAAKh5B,MAAM1E,WACjC89B,EAAY/5B,KAAO,CAAEhE,MAAO/F,EAAE+F,MAAOs5B,aAA8B,KAAf,EAAIr/B,EAAE48B,QAE5D,UAAI8G,EAAKh5B,aAAT,OAAI,EAAY3E,QAAO+9B,EAAY/9B,MAAQ22B,EAAYgH,EAAKh5B,MAAM3E,OAAOA,OAEpEy9B,EAAYv3B,SAAS,GAAG7N,KAAKkB,MAChCukC,EAAKjlC,KAAK,CACRuM,KAAMu4B,EAAKv4B,KACXqY,QAASsgB,IAIXD,EAAKvlC,QAAQqlC,EAAU/kC,KAAKilC,GAGlC,MAAMrgB,EAA8B,CAClCwU,EAAGjsB,EAAGpC,KAAOmxB,GACb7C,EAAGlsB,EAAGnC,IAAMkxB,GACZtV,EAAGzZ,EAAG5D,MAAQ2yB,GACdrV,EAAG1Z,EAAG3D,OAAS0yB,GACfiJ,KAAMh4B,EAAGsY,UAAUvY,IAAIxC,GAAQyC,EAAG5D,MAAQmB,EAAOwxB,KAE/C/uB,EAAGlB,QAAO2Y,EAAQzZ,KAAO,CAAEhE,MAAO,YAClCgG,EAAGb,QAAQ/C,OAAS4D,EAAGb,QAAQnF,QACjCyd,EAAQwgB,OAAS,CACf5gC,KAA2B,UAArB2I,EAAGb,QAAQR,MAAoB,QAAU,OAC/Cu5B,GAAIl4B,EAAGb,QAAQ/C,MAAQ4yB,GACvBh1B,MAAO22B,EAAY3wB,EAAGb,QAAQnF,OAAOA,QAIzCm6B,EAAUgE,SAASP,EAAWngB,QAG3B,GAAgB,UAAZzX,EAAG3I,KAAkB,CAC5B,MAAM6+B,EAAS15B,SAASwc,cAAc,iCAAiChZ,EAAGtC,UACpEy4B,EAAYzH,GAAWwH,GAEvBze,EAA8B,CAClC1lB,KAAMokC,EACNlK,EAAGjsB,EAAGpC,KAAOmxB,GACb7C,EAAGlsB,EAAGnC,IAAMkxB,GACZtV,EAAGzZ,EAAG5D,MAAQ2yB,GACdrV,EAAG1Z,EAAG3D,OAAS0yB,IAEjB,GAAI/uB,EAAGlF,KAAM,CACX,MAAMu6B,EAAa7B,EAAcxzB,EAAGlF,MAChCu6B,IAAY5d,EAAQ8a,UAAY8C,GAGtClB,EAAU8B,SAASxe,IAKzBT,WAAW,KACT2c,EAAKyE,UAAU,CAAEC,SAAU,gBAAiB3qB,KAAK,IAAMuhB,EAAUr6B,OAAQ,GAAO8mB,MAAM,KACpFuT,EAAUr6B,OAAQ,EAClBgnB,GAAA,KAAQsU,MAAM,WAEf,MAGL,MAAO,CACLjB,YACAE,cACAuB,aACAJ,qBACAH,qBACAsD,eC3wBJ,MACM6E,GAAa,CAAEC,MAAO,cACtBC,GAAa,CAAED,MAAO,SACtBE,GAAa,CAAEF,MAAO,SACtBG,GAAa,CAAEH,MAAO,SAIAI,oCAAiB,CAC3CC,OAAQ,YACRC,MAAMC,GAGR,MAAO,CAACC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,EAC1DW,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAO1tB,IAAcpO,IAC/E07B,yBAAcC,gCAAoBC,cAAW,CACnDjkC,IAAKqI,EAAKlG,MACT,CACDiiC,gCAAoB,MAAOd,GAAYe,6BAAiBh8B,EAAKlG,MAAO,IACnE4hC,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAY77B,EAAKqO,SAAW4tB,IAC1EP,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,cACPrjC,IAAKskC,EAAO1jC,OACX,CACDwjC,gCAAoB,MAAOb,GAAYc,6BAAiBC,EAAO1jC,OAAQ,GACvEwjC,gCAAoB,MAAOZ,GAAYa,6BAAiBC,EAAO5kC,OAAQ,OAEvE,OACH,MACD,Y,oCC3BR,MAAM6kC,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMnB,GAAa,CAAC,UAKQK,oCAAiB,CAC3CC,OAAQ,YACRl3B,MAAO,CACPg4B,OAAQ,CACNriC,KAAMw2B,OACN8L,QAAS,YAGXC,MAAO,CAAC,UACRf,MAAMC,GAAS,KAAEe,IAQnB,MAAMC,EAAW5K,mBAEX6K,EAAc,KACbD,EAASllC,QACdklC,EAASllC,MAAMA,MAAQ,GACvBklC,EAASllC,MAAM0Y,UAEX0sB,EAAgB7sB,IACpB,MAAMojB,EAASpjB,EAAEoN,OAA4BgW,MACzCA,GAAOsJ,EAAK,SAAUtJ,IAG5B,MAAO,CAACwI,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,aACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBH,MACpD,CACDI,wBAAYpB,EAAKqB,OAAQ,WACzBd,gCAAoB,QAAS,CAC3Bf,MAAO,QACPlhC,KAAM,OACNlD,KAAM,SACNkmC,QAAS,WACTnL,IAAK4K,EACLJ,OAAQZ,EAAQY,OAChBY,SAAUtB,EAAO,KAAOA,EAAO,GAAKkB,GAAUF,EAAaE,KAC1D,KAAM,GAAI5B,U,UC9CjB,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMiC,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,iBACtBC,GAAa,CAAED,MAAO,QACtBE,GAAa,CAAEF,MAAO,aACtBG,GAA2B6B,GAAa,IAAmBjB,gCAAoB,OAAQ,CAAEf,MAAO,QAAU,MAAO,IACjHmC,GAAa,CAAEnC,MAAO,aACtBoC,GAA2BJ,GAAa,IAAmBjB,gCAAoB,OAAQ,CAAEf,MAAO,QAAU,MAAO,IACjHqC,GAAa,CAAErC,MAAO,aACtBsC,GAA2BN,GAAa,IAAmBjB,gCAAoB,OAAQ,CAAEf,MAAO,QAAU,MAAO,IACjHuC,GAAa,CAAEvC,MAAO,aACtBwC,GAA4BR,GAAa,IAAmBjB,gCAAoB,OAAQ,CAAEf,MAAO,QAAU,MAAO,IAClHyC,GAAc,CAAEzC,MAAO,SACvB0C,GAAc,CAClBC,KAAM,2CACN3gB,OAAQ,UAEJ4gB,GAAc,CAAE5C,MAAO,aAmBDI,oCAAiB,CAC3CC,OAAQ,QACRC,MAAMC,GAER,MAAMsC,EAAW,QAAKC,KAEhBtxB,EAAYzG,KACZ,aAAEW,EAAF,UAAgBC,EAAhB,gBAA2BY,GAAoB+R,eAAY9M,IAE3D,eAAEiX,EAAF,wBAAkBC,GAA4Be,MAC9C,YAAElG,EAAF,YAAena,EAAf,YAA4BwZ,GAAgBsG,MAC5C,KAAElL,EAAF,KAAQI,GAASG,MACjB,mBAAEwZ,GAAuBgL,KAEzBz0B,EAAqBkD,EAAUlD,mBAE/B00B,EAAkB,KACtBxxB,EAAU9D,gBAAgBhC,EAAarP,MAAQ,EAAI,KAG/C4mC,EAAc,KAClBzxB,EAAU7D,eAAehC,EAAUtP,QAG/B6mC,EAAkB,KACjB32B,EAAgBlQ,MAChBmV,EAAUhD,qBAAoB,GADPgD,EAAUhD,qBAAoB,IAItD20B,EAAsBxM,kBAAI,GAE1ByM,EAAUnJ,GAAgB/8B,OAAOmmC,KAAKpJ,GAE5C,MAAO,CAACuG,EAAUC,KAChB,MAAM6C,EAA6BC,8BAAkB,mBAC/CC,EAAsBD,8BAAkB,YACxCE,EAAqBF,8BAAkB,WACvCG,EAA4BH,8BAAkB,kBAC9CI,EAAuBJ,8BAAkB,aACzCK,EAAwBL,8BAAkB,cAEhD,OAAQ7C,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrC4D,yBAAa/C,mBAAO,SAAW,CAAEh5B,QAAS,CAAC,UAAY,CACrDg8B,QAASC,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAO,KAAM,CAC/BM,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaG,GAAW,CACtB7C,OAAQ,UACRY,SAAUtB,EAAO,KAAOA,EAAO,GAAKzI,GAAS8I,mBAAO/I,EAAP+I,CAA2B9I,KACvE,CACDoJ,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO+B,GAAW,KAAM,CACnCzB,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,kBAEnBC,EAAG,MAGPA,EAAG,IAELL,yBAAa/C,mBAAO+B,GAAW,CAC7BnB,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAOxyB,EAAPwyB,CAA2B,UAC/E,CACDM,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,MAGPA,EAAG,MAGP9C,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,MAAOb,GAAY,CACrC2D,yBAAaP,GACbW,+BACA9D,OAGJ+D,EAAG,IAELL,yBAAa/C,mBAAO,SAAW,CAAEh5B,QAAS,CAAC,UAAY,CACrDg8B,QAASC,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAO,KAAM,CAC/BM,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO+B,GAAW,CAC7BnB,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAO1iB,EAAP0iB,KACpD,CACDM,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,IAELL,yBAAa/C,mBAAO+B,GAAW,CAC7BnB,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAO9iB,EAAP8iB,KACpD,CACDM,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,IAELL,yBAAa/C,mBAAO+B,GAAW,CAC7BnB,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAOvd,EAAPud,KACpD,CACDM,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,IAELL,yBAAa/C,mBAAO+B,GAAW,CAC7BnB,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAO13B,EAAP03B,KACpD,CACDM,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,IAELL,yBAAa/C,mBAAO+B,GAAW,CAC7BnB,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBqB,MACpD,CACD5B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiBjD,6BAAiBF,mBAAOp1B,GAAgB,QAAU,SAAU,KAE/Ew4B,EAAG,IAELL,yBAAa/C,mBAAO+B,GAAW,CAC7BnB,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBsB,MACpD,CACD7B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiBjD,6BAAiBF,mBAAOn1B,GAAa,OAAS,QAAS,KAE1Eu4B,EAAG,IAELL,yBAAa/C,mBAAO+B,GAAW,CAC7BnB,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAOle,EAAPke,KACpD,CACDM,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,WAEnBC,EAAG,IAELL,yBAAa/C,mBAAO+B,GAAW,CAC7BnB,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBuB,MACpD,CACD9B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiBjD,6BAAiBF,mBAAOv0B,GAAmB,SAAW,UAAW,KAEpF23B,EAAG,MAGPA,EAAG,MAGP9C,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,MAAOoB,GAAY,CACrC0B,yBAAaL,GACbS,+BACA7B,OAGJ8B,EAAG,IAELL,yBAAa/C,mBAAO,SAAW,CAAEh5B,QAAS,CAAC,UAAY,CACrDg8B,QAASC,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAO,KAAM,CAC/BM,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO+B,GAAW,CAC7BnB,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBb,mBAAOpY,EAAPoY,KACtD,CACDM,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,IAELL,yBAAa/C,mBAAO+B,GAAW,CAC7BnB,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBb,mBAAOrY,EAAPqY,KACtD,CACDM,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,YAEnBC,EAAG,MAGPA,EAAG,MAGP9C,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,MAAOsB,GAAY,CACrCwB,yBAAaJ,GACbQ,+BACA3B,OAGJ4B,EAAG,IAELL,yBAAa/C,mBAAO,SAAW,CAAEh5B,QAAS,CAAC,UAAY,CACrDg8B,QAASC,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAO,KAAM,CAC/BM,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO+B,GAAW,CAC7BnB,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiByB,EAAO,qDAC7D,CACDhC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,IAELL,yBAAa/C,mBAAO+B,GAAW,CAC7BnB,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiByB,EAAO,qEAC7D,CACDhC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,IAELL,yBAAa/C,mBAAO+B,GAAW,CAC7BnB,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBwB,EAAoB9mC,OAAQ,IAClF,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,SAEnBC,EAAG,MAGPA,EAAG,MAGP9C,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,MAAOwB,GAAY,CACrCsB,yBAAaH,GACbO,+BACAzB,OAGJ0B,EAAG,MAGPnD,gCAAoB,MAAO0B,GAAa,CACtCoB,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBxI,MAAO,MACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,MAAO,CACzBf,MAAO,YACP0B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBb,mBAAOxyB,EAAPwyB,CAA2B,UACjF,CACD+C,yBAAaF,EAAsB,CACjC//B,KAAM,KACN6B,KAAM,aAIZy+B,EAAG,IAELL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBxI,MAAO,SACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,MAAO,CACzBf,MAAO,YACP0B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBb,mBAAOrY,EAAPqY,KACtD,CACD+C,yBAAaJ,EAAoB,CAC/B7/B,KAAM,KACN6B,KAAM,OACNW,MAAO,CAAC,aAAa,aAI3B89B,EAAG,IAELnD,gCAAoB,IAAK2B,GAAa,CACpC3B,gCAAoB,MAAO6B,GAAa,CACtCiB,yBAAaD,EAAuB,CAClChgC,KAAM,KACN6B,KAAM,eAKdo+B,yBAAa/C,mBAAO,SAAS,CAC3Bj9B,MAAO,MACPugC,UAAW,QACXC,UAAU,EACVC,QAASnB,EAAoB9mC,MAC7BkoC,QAAS9D,EAAO,MAAQA,EAAO,IAAOkB,GAAiBwB,EAAoB9mC,OAAQ,IAClF,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaW,MAEfN,EAAG,GACF,EAAG,CAAC,kB,UCtUX,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCHR,MAAMO,GAAgDtoC,SAChDuoC,GAA0CvoC,SCL1CwoC,GAAkB,KAC7B,MAAM9mC,EAAYX,OAAO0nC,eACzB/mC,GAAaA,EAAU8mC,mBCETE,WACd,MAAMC,EAAenO,iBAAI,GACnBoO,EAAcpO,iBAAI,GAElBnlB,EAAYzG,KACZ,iBAAEK,EAAF,cAAoBE,GAAkBgT,eAAY9M,IAClD,cAAEvK,GAAkBqX,eAAYxX,KAGhCk+B,EAAuB,KAC3B,IAAKH,EAAUxoC,MAAO,OACtB,MAAM4oC,EAAcJ,EAAUxoC,MAAMge,YAC9B6qB,EAAeL,EAAUxoC,MAAMke,aAErC,GAAI2qB,EAAeD,EAAch+B,EAAc5K,MAAO,CACpD,MAAM8oC,EAAsBF,GAAe75B,EAAiB/O,MAAQ,KACpEmV,EAAUvE,eAAek4B,EAAsBpqB,IAC/C+pB,EAAazoC,OAAS4oC,EAAcE,GAAuB,EAC3DJ,EAAY1oC,OAAS6oC,EAAeC,EAAsBl+B,EAAc5K,OAAS,MAE9E,CACH,MAAM+oC,EAAuBF,GAAgB95B,EAAiB/O,MAAQ,KACtEmV,EAAUvE,eAAem4B,GAAwBrqB,GAAgB9T,EAAc5K,QAC/EyoC,EAAazoC,OAAS4oC,EAAcG,EAAuBn+B,EAAc5K,OAAS,EAClF0oC,EAAY1oC,OAAS6oC,EAAeE,GAAwB,IAK1DC,EAAsB,CAACC,EAAkBC,KAC7C,IAAKV,EAAUxoC,MAAO,OACtB,MAAM4oC,EAAcJ,EAAUxoC,MAAMge,YAC9B6qB,EAAeL,EAAUxoC,MAAMke,aAE/BirB,EAAyBP,GAAeK,EAAW,KACnDG,EAAyBR,GAAeM,EAAW,KACnDG,EAA0BR,GAAgBI,EAAW,KACrDK,EAA0BT,GAAgBK,EAAW,KAEvDL,EAAeD,EAAch+B,EAAc5K,MAC7CmV,EAAUvE,eAAeu4B,EAAyBzqB,IAGlDvJ,EAAUvE,eAAey4B,GAA2B3qB,GAAgB9T,EAAc5K,QAEpFyoC,EAAazoC,MAAQyoC,EAAazoC,OAASmpC,EAAyBC,GAA0B,EAC9FV,EAAY1oC,MAAQ0oC,EAAY1oC,OAASqpC,EAA0BC,GAA2B,GAIhGC,mBAAMx6B,EAAkBi6B,GACxBO,mBAAM3+B,EAAe+9B,GAGrBY,mBAAMt6B,EAAe,KACdA,EAAcjP,OAAO2oC,MAI5B,MAAMa,EAAiBrjB,sBAAS,KAAM,CACpC3e,MAAOkX,GACPjX,OAAQiX,GAAgB9T,EAAc5K,MACtCgJ,KAAMy/B,EAAazoC,MACnBiJ,IAAKy/B,EAAY1oC,SAIbypC,EAAiB,IAAIC,eAAef,GAE1C1Y,uBAAU,KACJuY,EAAUxoC,OAAOypC,EAAeE,QAAQnB,EAAUxoC,SAExDkwB,yBAAY,KACNsY,EAAUxoC,OAAOypC,EAAeG,UAAUpB,EAAUxoC,SAI1D,MAAM6pC,EAAgBtxB,IACpB,IAAIuxB,GAAc,EAElB,MAAMC,EAAaxxB,EAAEyxB,MACfC,EAAa1xB,EAAE2xB,MAEfC,EAAa1B,EAAazoC,MAC1BoqC,EAAY1B,EAAY1oC,MAE9B4H,SAASyiC,YAAc9xB,IACrB,IAAKuxB,EAAa,OAElB,MAAMQ,EAAe/xB,EAAEyxB,MACjBO,EAAehyB,EAAE2xB,MAEvBzB,EAAazoC,MAAQmqC,GAAcG,EAAeP,GAClDrB,EAAY1oC,MAAQoqC,GAAaG,EAAeN,IAGlDriC,SAAS4iC,UAAY,KACnBV,GAAc,EACdliC,SAASyiC,YAAc,KACvBziC,SAAS4iC,UAAY,KAErBr1B,EAAUrE,kBAAiB,KAI/B,MAAO,CACL04B,iBACAK,iBC1GW,IAACzuB,EAAgCqvB,KAC9C,MAAMt1B,EAAYzG,KACZ,YAAEM,EAAF,oBAAeF,GAAwBmT,eAAY9M,GAEnDu1B,EAAwBpQ,kBAAI,GAC5BqQ,EAAyBrQ,iBAAI,GAC7BsQ,EAAiBtQ,iBAAI,CACzBrxB,IAAK,EACLD,KAAM,EACNxB,MAAO,EACPC,OAAQ,IAIJojC,EAAwBtyB,IAC5B,IAAKkyB,EAAYzqC,MAAO,OAExB,IAAI8pC,GAAc,EAClB,MAAMgB,EAAeL,EAAYzqC,MAAM+qC,wBAEjCC,EAAoB,EAEpBjB,EAAaxxB,EAAEyxB,MACfC,EAAa1xB,EAAE2xB,MAEflhC,GAAQ+gC,EAAae,EAAazT,GAAKroB,EAAYhP,MACnDiJ,GAAOghC,EAAaa,EAAaxT,GAAKtoB,EAAYhP,MAGxD4qC,EAAe5qC,MAAQ,CACrBiJ,IAAKA,EACLD,KAAMA,EACNxB,MAAO,EACPC,OAAQ,GAEVijC,EAAsB1qC,OAAQ,EAC9B2qC,EAAuB3qC,MAAQ,EAE/B4H,SAASyiC,YAAc9xB,IACrB,IAAKuxB,EAAa,OAElB,MAAMQ,EAAe/xB,EAAEyxB,MACjBO,EAAehyB,EAAE2xB,MAEjBe,GAAeX,EAAeP,GAAc/6B,EAAYhP,MACxDkrC,GAAgBX,EAAeN,GAAcj7B,EAAYhP,MAEzDwH,EAAQ8F,KAAK69B,IAAIF,GACjBxjC,EAAS6F,KAAK69B,IAAID,GAExB,GAAK1jC,EAAQwjC,GAAqBvjC,EAASujC,EAAoB,OAI/D,IAAII,EAAW,EACVH,EAAc,GAAKC,EAAe,EAAIE,EAAW,EAC5CH,EAAc,GAAKC,EAAe,EAAIE,EAAW,EACjDH,EAAc,GAAKC,EAAe,EAAIE,EAAW,EACjDH,EAAc,GAAKC,EAAe,IAAIE,EAAW,GAG3DR,EAAe5qC,MAAQ,IAClB4qC,EAAe5qC,MAClBwH,MAAOA,EACPC,OAAQA,GAEVijC,EAAsB1qC,OAAQ,EAC9B2qC,EAAuB3qC,MAAQorC,GAGjCxjC,SAAS4iC,UAAY,KACnB5iC,SAASyiC,YAAc,KACvBziC,SAAS4iC,UAAY,KACrBV,GAAc,EAGd,IAAIuB,EAAmC,GACvC,IAAK,IAAI5tC,EAAI,EAAGA,EAAI2d,EAAYpb,MAAMrC,OAAQF,IAAK,CACjD,MAAMkQ,EAAUyN,EAAYpb,MAAMvC,GAC5B6tC,EAAqBV,EAAe5qC,MAAMgJ,KAC1CuiC,EAAoBX,EAAe5qC,MAAMiJ,IACzCuiC,EAAsBZ,EAAe5qC,MAAMwH,MAC3CikC,EAAuBb,EAAe5qC,MAAMyH,QAE5C,KAAEsT,EAAF,KAAQC,EAAR,KAAcC,EAAd,KAAoBC,GAASJ,GAAgBnN,GAGnD,IAAI+9B,GAAY,EACqB,IAAjCf,EAAuB3qC,MACzB0rC,EAAY3wB,EAAOuwB,GACPtwB,EAAOswB,EAAqBE,GAC5BvwB,EAAOswB,GACPrwB,EAAOqwB,EAAoBE,EAEC,IAAjCd,EAAuB3qC,MAC9B0rC,EAAY3wB,EAAQuwB,EAAqBE,GAC7BxwB,EAAQswB,EAAqBE,EAAuBA,GACpDvwB,EAAQswB,EAAoBE,GAC5BvwB,EAAQqwB,EAAoBE,EAAwBA,EAExB,IAAjCd,EAAuB3qC,MAC9B0rC,EAAY3wB,EAAOuwB,GACPtwB,EAAOswB,EAAqBE,GAC5BvwB,EAAQswB,EAAoBE,GAC5BvwB,EAAQqwB,EAAoBE,EAAwBA,EAExB,IAAjCd,EAAuB3qC,QAC9B0rC,EAAY3wB,EAAQuwB,EAAqBE,GAC7BxwB,EAAQswB,EAAqBE,EAAuBA,GACpDvwB,EAAOswB,GACPrwB,EAAOqwB,EAAoBE,IAIrCC,GAAc/9B,EAAQqa,MAASlZ,EAAoB9O,MAAMsL,SAASqC,EAAQ7E,KAAKuiC,EAAmBptC,KAAK0P,GAI7G09B,EAAqBA,EAAmB3iC,OAAOijC,IAC7C,GAAIA,EAAepvB,QAAS,CAC1B,MAAMqvB,EAAuBP,EAAmBlgC,IAAIwgC,GAAkBA,EAAe7iC,IAC/E+iC,EAAmBzwB,EAAYpb,MAAM0I,OAAOiF,GAAWA,EAAQ4O,UAAYovB,EAAepvB,SAChG,OAAOsvB,EAAiBtjB,MAAMujB,GAAgBF,EAAqBtgC,SAASwgC,EAAahjC,KAE3F,OAAO,IAET,MAAM8iC,EAAuBP,EAAmBlgC,IAAIwgC,GAAkBA,EAAe7iC,IACrFqM,EAAU7E,uBAAuBs7B,GAEjClB,EAAsB1qC,OAAQ,IAIlC,MAAO,CACL4qC,iBACAF,wBACAC,yBACAE,yBCxIYkB,OACd,MAAM,eAAE38B,GAAmB6S,eAAYvT,MAEjC,mBAAE2T,EAAF,kBAAsB2B,GAAsB4B,KAG5ComB,EAAczzB,IAClB,IAAKA,EAAE0zB,cAAgD,IAAhC1zB,EAAE0zB,aAAaxb,MAAM9yB,OAAc,OAC1D,MAAMuuC,EAAmB3zB,EAAE0zB,aAAaxb,MAAM,GAG9C,GAA8B,SAA1Byb,EAAiBvb,OAA+D,IAA5Cub,EAAiBzpC,KAAKgB,QAAQ,SAAiB,CACrF,MAAM4sB,EAAY6b,EAAiBtb,YAC/BP,GACFjS,GAAgBiS,GAAWvX,KAAKwX,GAAWjO,EAAmBiO,QAG/B,WAA1B4b,EAAiBvb,MAA+C,eAA1Bub,EAAiBzpC,MAC9DypC,EAAiBrb,YAAYrmB,IAC3B,GAAI4E,EAAepP,MAAO,OAC1B,MAAMyd,EAASJ,GAAqB7S,GACpCwZ,EAAkB,CAChBhb,KAAM,EACNC,IAAK,EACLzB,MAAO,IACPC,OAAQ,IACP,CAAEiC,QAAS+T,OAKpBwS,uBAAU,KACR8b,EAAW/rC,OAAS+rC,EAAW/rC,MAAMwe,iBAAiB,OAAQwtB,GAE9DpkC,SAASukC,YAAc5zB,GAAKA,EAAEuW,iBAC9BlnB,SAASwkC,OAAS7zB,GAAKA,EAAEuW,iBACzBlnB,SAASykC,YAAc9zB,GAAKA,EAAEuW,iBAC9BlnB,SAAS0kC,WAAa/zB,GAAKA,EAAEuW,mBAE/BoB,yBAAY,KACV6b,EAAW/rC,OAAS+rC,EAAW/rC,MAAMmwB,oBAAoB,OAAQ6b,GAEjEpkC,SAASukC,YAAc,KACvBvkC,SAASwkC,OAAS,KAClBxkC,SAASykC,YAAc,KACvBzkC,SAAS0kC,WAAa,QCzC1B,MAAMC,GAAyB,CAAClV,EAAWC,KACzC,MAAMkV,EAASl/B,KAAKm/B,MAAMpV,EAAGC,GACvBiH,EAAQ,IAAMjxB,KAAKqM,GAAK6yB,EAC9B,OAAOjO,GAGM,QAACnjB,EAAgCqvB,KAC9C,MAAMr6B,EAAc3F,KACd,YAAEuE,GAAgBiT,eAAYvT,MAE9B,mBAAE6S,GAAuBW,KAGzBwqB,EAAiB/+B,IACrB,IAAIm8B,GAAc,EACdvL,EAAQ,EACZ,MAAMoO,EAAiBh/B,EAAQpE,QAAU,EAEnCqjC,EAASj/B,EAAQ3E,KACjB6jC,EAAQl/B,EAAQ1E,IAChB6jC,EAAUn/B,EAAQnG,MAClBulC,EAAWp/B,EAAQlG,OAGnBulC,EAAUJ,EAASE,EAAU,EAC7BG,EAAUJ,EAAQE,EAAW,EAEnC,IAAKtC,EAAYzqC,MAAO,OACxB,MAAM8qC,EAAeL,EAAYzqC,MAAM+qC,wBAEvCnjC,SAASyiC,YAAc9xB,IACrB,IAAKuxB,EAAa,OAGlB,MAAMoD,GAAU30B,EAAEyxB,MAAQc,EAAa9hC,MAAQgG,EAAYhP,MACrDmtC,GAAU50B,EAAE2xB,MAAQY,EAAa7hC,KAAO+F,EAAYhP,MACpDq3B,EAAI6V,EAASF,EACb1V,EAAI2V,EAAUE,EAEpB5O,EAAQgO,GAAuBlV,EAAGC,GAGlC,MAAM8V,EAAgB,EACjB9/B,KAAK69B,IAAI5M,IAAU6O,EAAgB7O,EAAQ,EACtCA,EAAQ,GAAKjxB,KAAK69B,IAAI5M,EAAQ,KAAO6O,EAAgB7O,GAAUA,EAAQ,GACvEA,EAAQ,GAAKjxB,KAAK69B,IAAI5M,EAAQ,KAAO6O,EAAgB7O,GAAUA,EAAQ,GACvEA,EAAQ,GAAKjxB,KAAK69B,IAAI5M,EAAQ,KAAO6O,EAAgB7O,GAAUA,EAAQ,GACvEA,EAAQ,GAAKjxB,KAAK69B,IAAI5M,EAAQ,KAAO6O,EAAgB7O,GAAUA,EAAQ,GACvEA,EAAQ,GAAKjxB,KAAK69B,IAAI5M,EAAQ,MAAQ6O,EAAgB7O,GAAUA,EAAQ,IACxEA,EAAQ,GAAKjxB,KAAK69B,IAAI5M,EAAQ,MAAQ6O,EAAgB7O,GAAUA,EAAQ,IACxEA,EAAQ,GAAKjxB,KAAK69B,IAAI5M,EAAQ,MAAQ6O,EAAgB7O,GAAUA,EAAQ,IACxEA,EAAQ,GAAKjxB,KAAK69B,IAAI5M,EAAQ,MAAQ6O,IAAgB7O,GAAUA,EAAQ,KAElFnjB,EAAYpb,MAAQob,EAAYpb,MAAMmL,IAAIC,GAAMuC,EAAQ7E,KAAOsC,EAAGtC,GAAK,IAAKsC,EAAI7B,OAAQg1B,GAAUnzB,IAGpGxD,SAAS4iC,UAAY,KACnBV,GAAc,EACdliC,SAASyiC,YAAc,KACvBziC,SAAS4iC,UAAY,KAEjBmC,IAAmBpO,IAEvBnuB,EAAYvD,YAAY,CAAE9D,SAAUqS,EAAYpb,QAChDuhB,OAIJ,MAAO,CACLmrB,kBChFG,MAAMW,GAAkB,CAC7B7iC,KAAM,KACNg1B,MAAO,KACPoB,MAAO,KACPhlB,KAAM,KACN0xB,MAAO,KACPv5B,MAAO,KACPw5B,MAAO,KACPC,MAAO,KACPzoB,MAAO,MAGI0oB,GAAW,CACtBjjC,KAAM,GACNg1B,MAAO,GACPoB,MAAO,GACP0M,MAAO,IACPv5B,MAAO,GACPw5B,MAAO,IACPC,MAAO,GACPzoB,MAAO,ICGH2oB,GAAyB,CAAC//B,EAA4B4wB,KAC1D,MAAM,KAAEv1B,EAAF,IAAQC,EAAR,MAAazB,EAAb,OAAoBC,GAAWkG,EAE/B2L,EAAShM,KAAKiM,KAAMjM,KAAKkM,IAAIhS,EAAO,GAAK8F,KAAKkM,IAAI/R,EAAQ,IAAO,EACjEgS,EAA6C,IAA5BnM,KAAKoM,KAAKjS,EAASD,GAAe8F,KAAKqM,GAExDC,GAAe,IAAM2kB,EAAQ9kB,GAAkBnM,KAAKqM,GAAK,IACzDE,GAAeJ,EAAiB8kB,GAASjxB,KAAKqM,GAAK,IACnDg0B,GAAY,GAAKpP,GAASjxB,KAAKqM,GAAK,IACpCi0B,EAAWrP,EAAQjxB,KAAKqM,GAAK,IAE7Bk0B,EAAYrmC,EAAQ,EACpBsmC,EAAarmC,EAAS,EAEtBqS,EAAa9Q,EAAO6kC,EACpB9zB,EAAY9Q,EAAM6kC,EAElBC,EAAe,CACnB/kC,KAAM8Q,EAAaR,EAAShM,KAAK2M,IAAIL,GACrC3Q,IAAK8Q,EAAYT,EAAShM,KAAK6M,IAAIP,IAE/Bo0B,EAAW,CACfhlC,KAAM8Q,EAAag0B,EAAaxgC,KAAK2M,IAAI0zB,GACzC1kC,IAAK8Q,EAAY+zB,EAAaxgC,KAAK6M,IAAIwzB,IAEnCM,EAAgB,CACpBjlC,KAAM8Q,EAAaR,EAAShM,KAAK2M,IAAIJ,GACrC5Q,IAAK8Q,EAAYT,EAAShM,KAAK6M,IAAIN,IAE/Bq0B,EAAa,CACjBllC,KAAM8Q,EAAa+zB,EAAYvgC,KAAK2M,IAAI2zB,GACxC3kC,IAAK8Q,EAAY8zB,EAAYvgC,KAAK6M,IAAIyzB,IAElCO,EAAmB,CACvBnlC,KAAM8Q,EAAaR,EAAShM,KAAK2M,IAAIL,GACrC3Q,IAAK8Q,EAAYT,EAAShM,KAAK6M,IAAIP,IAE/Bw0B,EAAc,CAClBplC,KAAM8Q,EAAag0B,EAAaxgC,KAAK6M,IAAIyzB,GACzC3kC,IAAK8Q,EAAY+zB,EAAaxgC,KAAK2M,IAAI2zB,IAEnCS,EAAkB,CACtBrlC,KAAM8Q,EAAaR,EAAShM,KAAK2M,IAAIJ,GACrC5Q,IAAK8Q,EAAYT,EAAShM,KAAK6M,IAAIN,IAE/By0B,EAAY,CAChBtlC,KAAM8Q,EAAa+zB,EAAYvgC,KAAK2M,IAAI2zB,GACxC3kC,IAAK8Q,EAAY8zB,EAAYvgC,KAAK6M,IAAIyzB,IAGxC,MAAO,CAAEG,eAAcC,WAAUC,gBAAeC,aAAYC,mBAAkBC,cAAaC,kBAAiBC,cAQxGC,GAAmB,CAACC,EAAmB1kC,KAC3C,MAAM2kC,EAAc,CAClB,CAAC73B,EAAsB83B,cAAe5kC,EAAOikC,aAC7C,CAACn3B,EAAsB+3B,aAAc7kC,EAAOmkC,cAC5C,CAACr3B,EAAsBg4B,UAAW9kC,EAAOqkC,iBACzC,CAACv3B,EAAsBi4B,WAAY/kC,EAAOukC,gBAC1C,CAACz3B,EAAsBoU,KAAMlhB,EAAOskC,YACpC,CAACx3B,EAAsBqU,QAASnhB,EAAOkkC,SACvC,CAACp3B,EAAsBiT,MAAO/f,EAAOokC,WACrC,CAACt3B,EAAsBkT,OAAQhgB,EAAOwkC,WAExC,OAAOG,EAAYD,IAGN,IC/FGM,GAMAC,GDyFH,IACb3zB,EACA4zB,EACAhgC,KAEA,MAAMmG,EAAYzG,IACZ0B,EAAc3F,KACd,oBAAEkE,EAAF,qBAAuBE,GAAyBoT,eAAY9M,IAC5D,cAAEvK,GAAkBqX,eAAY7R,IAChC,qBAAEqF,GAAyBwM,eAAY5M,MAEvC,mBAAEkM,GAAuBW,KAGzB+sB,EAAe,CAAC12B,EAA4B5K,EAA8C8Y,KAC9F,MAAMyoB,IAAiB32B,aAAa42B,YACpC,GAAID,KAAkB32B,EAAE62B,iBAAmB72B,EAAE62B,eAAe,IAAK,OAEjE,IAAItF,GAAc,EAClB30B,EAAUpD,iBAAgB,GAE1B,MAAMs9B,EAAe1hC,EAAQ3E,KACvBsmC,EAAc3hC,EAAQ1E,IACtBsmC,EAAgB5hC,EAAQnG,MACxBgoC,EAAiB7hC,EAAQlG,OAEzBgoC,EAA4C,UAAjB9hC,EAAQlL,KAAmBkL,EAAQoW,cAAgB,EAE9E2rB,EAAY,WAAY/hC,GAAWA,EAAQpE,OAAUoE,EAAQpE,OAAS,EACtEomC,EAAeriC,KAAKqM,GAAK+1B,EAAW,IAEpCrmC,EAAaoM,EAAqBzV,OAAU,eAAgB2N,GAAWA,EAAQtE,WAC/EumC,EAAcL,EAAgBC,EAE9BzF,EAAamF,EAAe32B,EAAE62B,eAAe,GAAGpF,MAAQzxB,EAAEyxB,MAC1DC,EAAaiF,EAAe32B,EAAE62B,eAAe,GAAGlF,MAAQ3xB,EAAE2xB,MAG1D2F,EAAUpC,GAAS9/B,EAAQlL,OAAS,GACpCqtC,EAAsBvoC,GAAiBA,EAAOsoC,EAAUA,EAAUtoC,EAExE,IAAIuC,EACAimC,EAAW,EACXC,EAAU,EACVC,EAA+B,GAC/BC,EAA6B,GAIjC,GAAI,WAAYviC,GAAWA,EAAQpE,OAAQ,CACzC,MAAM,KAAEP,EAAF,IAAQC,EAAR,MAAazB,EAAb,OAAoBC,GAAWkG,EACrC7D,EAAS4jC,GAAuB,CAAE1kC,OAAMC,MAAKzB,QAAOC,UAAUioC,GAC9D,MAAMS,EAAgB5B,GAAiB9nB,EAAS3c,GAEhDimC,EAAWI,EAAcnnC,KACzBgnC,EAAUG,EAAclnC,QAMrB,CACH,MAAMmnC,EAAY1xB,GACZ2xB,EAAa3xB,GAAgB9T,EAAc5K,MAC3CswC,EAAuB3iC,EAAQ7E,KAAO+F,EAAqB7O,MAEjE,IAAK,MAAMoL,KAAMgQ,EAAYpb,MAAO,CAClC,GAAI,WAAYoL,GAAMA,EAAG7B,OAAQ,SACjC,GAAgB,SAAZ6B,EAAG3I,KAAiB,SACxB,GAAI6tC,GAAwBllC,EAAGtC,KAAO6E,EAAQ7E,GAAI,SAClD,IAAKwnC,GAAwB3hC,EAAoB3O,MAAMsL,SAASF,EAAGtC,IAAK,SAExE,MAAME,EAAOoC,EAAGpC,KACVC,EAAMmC,EAAGnC,IACTzB,EAAQ4D,EAAG5D,MACXC,EAAS2D,EAAG3D,OACZ8oC,EAAQvnC,EAAOxB,EACfgpC,EAASvnC,EAAMxB,EAEfgpC,EAAqB,CAAEzwC,MAAOiJ,EAAK+S,MAAO,CAAChT,EAAMunC,IACjDG,EAAwB,CAAE1wC,MAAOwwC,EAAQx0B,MAAO,CAAChT,EAAMunC,IACvDI,EAAsB,CAAE3wC,MAAOgJ,EAAMgT,MAAO,CAAC/S,EAAKunC,IAClDI,EAAuB,CAAE5wC,MAAOuwC,EAAOv0B,MAAO,CAAC/S,EAAKunC,IAE1DP,EAAgBhyC,KAAKwyC,EAASC,GAC9BR,EAAcjyC,KAAK0yC,EAAUC,GAI/B,MAAMC,EAAyB,CAAE7wC,MAAO,EAAGgc,MAAO,CAAC,EAAGo0B,IAChDU,EAA4B,CAAE9wC,MAAOqwC,EAAYr0B,MAAO,CAAC,EAAGo0B,IAC5DW,EAAsC,CAAE/wC,MAAOqwC,EAAa,EAAGr0B,MAAO,CAAC,EAAGo0B,IAC1EY,EAA0B,CAAEhxC,MAAO,EAAGgc,MAAO,CAAC,EAAGq0B,IACjDY,EAA2B,CAAEjxC,MAAOowC,EAAWp0B,MAAO,CAAC,EAAGq0B,IAC1Da,EAAoC,CAAElxC,MAAOowC,EAAY,EAAGp0B,MAAO,CAAC,EAAGq0B,IAE7EJ,EAAgBhyC,KAAK4yC,EAAaC,EAAgBC,GAClDb,EAAcjyC,KAAK+yC,EAAcC,EAAeC,GAEhDjB,EAAkBv0B,GAAeu0B,GACjCC,EAAgBx0B,GAAew0B,GAMjC,MAAMiB,EAAoB,CAACC,EAAyBC,KAClD,MAAMjE,EAAgB,EAEhBkE,EAAwC,GAC9C,IAAIC,GAAqB,EACrBC,GAAuB,EAC3B,MAAMC,EAAgB,CAAE72B,QAAS,EAAGC,QAAS,GAE7C,GAAIw2B,GAAyB,IAAbA,EACd,IAAK,IAAI5zC,EAAI,EAAGA,EAAIwyC,EAAgBtyC,OAAQF,IAAK,CAC/C,MAAM,MAAEuC,EAAF,MAASgc,GAAUi0B,EAAgBxyC,GACnC8P,EAAMD,KAAKC,OAAOyO,EAAOo1B,GAAY,GACrC/2B,EAAM/M,KAAK+M,OAAO2B,EAAOo1B,GAAY,GAEvC9jC,KAAK69B,IAAIkG,EAAWrxC,GAASotC,IAAkBoE,IACjDC,EAAc52B,QAAUw2B,EAAWrxC,EACnCwxC,GAAuB,EACvBF,EAAgBrzC,KAAK,CAAEwE,KAAM,aAAcivC,KAAM,CAACra,EAAG9pB,EAAM,GAAI+pB,EAAGt3B,GAAQrC,OAAQ0c,EAAM9M,EAAM,OAIpG,GAAI6jC,GAAyB,IAAbA,EACd,IAAK,IAAI3zC,EAAI,EAAGA,EAAIyyC,EAAcvyC,OAAQF,IAAK,CAC7C,MAAM,MAAEuC,EAAF,MAASgc,GAAUk0B,EAAczyC,GACjC8P,EAAMD,KAAKC,OAAOyO,EAAQq1B,GAAY,GACtCh3B,EAAM/M,KAAK+M,OAAO2B,EAAQq1B,GAAY,GAExC/jC,KAAK69B,IAAIiG,EAAWpxC,GAASotC,IAAkBmE,IACjDE,EAAc72B,QAAUw2B,EAAWpxC,EACnCuxC,GAAqB,EACrBD,EAAgBrzC,KAAK,CAAEwE,KAAM,WAAYivC,KAAM,CAACra,EAAGr3B,EAAOs3B,EAAG/pB,EAAM,IAAK5P,OAAQ0c,EAAM9M,EAAM,OAKlG,OADAyhC,EAAehvC,MAAQsxC,EAChBG,GAGHE,EAAmBp5B,IACvB,IAAKuxB,EAAa,OAElB,MAAMQ,EAAe/xB,aAAa42B,WAAa52B,EAAEyxB,MAAQzxB,EAAE62B,eAAe,GAAGpF,MACvEO,EAAehyB,aAAa42B,WAAa52B,EAAE2xB,MAAQ3xB,EAAE62B,eAAe,GAAGlF,MAEvE7S,EAAIiT,EAAeP,EACnBzS,EAAIiT,EAAeN,EAEzB,IAAIziC,EAAQ+nC,EACR9nC,EAAS+nC,EACTxmC,EAAOqmC,EACPpmC,EAAMqmC,EAGV,GAAII,EAAU,CACZ,MAAMkC,GAAYtkC,KAAK2M,IAAI01B,GAAgBtY,EAAI/pB,KAAK6M,IAAIw1B,GAAgBrY,GAAKtoB,EAAYhP,MACzF,IAAI6xC,GAAYvkC,KAAK2M,IAAI01B,GAAgBrY,EAAIhqB,KAAK6M,IAAIw1B,GAAgBtY,GAAKroB,EAAYhP,MAInFqJ,IACEod,IAAY7P,EAAsB83B,cAAgBjoB,IAAY7P,EAAsBg4B,WAAUiD,EAAWD,EAAWhC,GACpHnpB,IAAY7P,EAAsB+3B,aAAeloB,IAAY7P,EAAsBi4B,YAAWgD,GAAYD,EAAWhC,IAOvHnpB,IAAY7P,EAAsB83B,cACpClnC,EAAQsoC,EAAmBP,EAAgBqC,GAC3CnqC,EAASqoC,EAAmBN,EAAiBqC,IAEtCprB,IAAY7P,EAAsB+3B,aACzCnnC,EAAQsoC,EAAmBP,EAAgBqC,GAC3CnqC,EAASqoC,EAAmBN,EAAiBqC,GAC7C7oC,EAAOqmC,GAAgB7nC,EAAQ+nC,IAExB9oB,IAAY7P,EAAsBg4B,UACzCpnC,EAAQsoC,EAAmBP,EAAgBqC,GAC3CnqC,EAASqoC,EAAmBN,EAAiBqC,GAC7C7oC,EAAOqmC,GAAgB7nC,EAAQ+nC,GAC/BtmC,EAAMqmC,GAAe7nC,EAAS+nC,IAEvB/oB,IAAY7P,EAAsBi4B,WACzCrnC,EAAQsoC,EAAmBP,EAAgBqC,GAC3CnqC,EAASqoC,EAAmBN,EAAiBqC,GAC7C5oC,EAAMqmC,GAAe7nC,EAAS+nC,IAEvB/oB,IAAY7P,EAAsBoU,KACzCvjB,EAASqoC,EAAmBN,EAAiBqC,GAC7C5oC,EAAMqmC,GAAe7nC,EAAS+nC,IAEvB/oB,IAAY7P,EAAsBqU,OACzCxjB,EAASqoC,EAAmBN,EAAiBqC,GAEtCprB,IAAY7P,EAAsBiT,MACzCriB,EAAQsoC,EAAmBP,EAAgBqC,GAC3C5oC,EAAOqmC,GAAgB7nC,EAAQ+nC,IAExB9oB,IAAY7P,EAAsBkT,QACzCtiB,EAAQsoC,EAAmBP,EAAgBqC,IAI7C,MAAME,EAAgBpE,GAAuB,CAAElmC,QAAOC,SAAQuB,OAAMC,OAAOymC,GACrEqC,EAAuBxD,GAAiB9nB,EAASqrB,GACjDE,EAAkBD,EAAqB/oC,KACvCipC,EAAiBF,EAAqB9oC,IAEtC2R,EAAUo3B,EAAkBjC,EAC5Bl1B,EAAUo3B,EAAiBjC,EAEjChnC,GAAc4R,EACd3R,GAAY4R,MAMT,CACH,IAAIq3B,EAAQ7a,EAAIroB,EAAYhP,MACxBmyC,EAAQ7a,EAAItoB,EAAYhP,MAO5B,GALIqJ,IACEod,IAAY7P,EAAsB83B,cAAgBjoB,IAAY7P,EAAsBg4B,WAAUuD,EAAQD,EAAQtC,GAC9GnpB,IAAY7P,EAAsB+3B,aAAeloB,IAAY7P,EAAsBi4B,YAAWsD,GAASD,EAAQtC,IAGjHnpB,IAAY7P,EAAsB83B,aAAc,CAClD,MAAM,QAAE9zB,EAAF,QAAWC,GAAYs2B,EAAkB9B,EAAeE,EAAgB2C,EAAO5C,EAAcE,EAAiB2C,GACpHD,GAAgBt3B,EAChBu3B,GAAgBt3B,EACZxR,IACEwR,EAASq3B,EAAQC,EAAQvC,EACxBuC,EAAQD,EAAQtC,GAEvBpoC,EAAQsoC,EAAmBP,EAAgB2C,GAC3CzqC,EAASqoC,EAAmBN,EAAiB2C,QAE1C,GAAI1rB,IAAY7P,EAAsB+3B,YAAa,CACtD,MAAM,QAAE/zB,EAAF,QAAWC,GAAYs2B,EAAkB9B,EAAe6C,EAAO5C,EAAcE,EAAiB2C,GACpGD,GAAgBt3B,EAChBu3B,GAAgBt3B,EACZxR,IACEwR,EAASq3B,GAASC,EAAQvC,EACzBuC,GAASD,EAAQtC,GAExBpoC,EAAQsoC,EAAmBP,EAAgB2C,GAC3CzqC,EAASqoC,EAAmBN,EAAiB2C,GAC7CnpC,EAAOqmC,GAAgB7nC,EAAQ+nC,QAE5B,GAAI9oB,IAAY7P,EAAsBg4B,SAAU,CACnD,MAAM,QAAEh0B,EAAF,QAAWC,GAAYs2B,EAAkB9B,EAAe6C,EAAO5C,EAAc6C,GACnFD,GAAgBt3B,EAChBu3B,GAAgBt3B,EACZxR,IACEwR,EAASq3B,EAAQC,EAAQvC,EACxBuC,EAAQD,EAAQtC,GAEvBpoC,EAAQsoC,EAAmBP,EAAgB2C,GAC3CzqC,EAASqoC,EAAmBN,EAAiB2C,GAC7CnpC,EAAOqmC,GAAgB7nC,EAAQ+nC,GAC/BtmC,EAAMqmC,GAAe7nC,EAAS+nC,QAE3B,GAAI/oB,IAAY7P,EAAsBi4B,UAAW,CACpD,MAAM,QAAEj0B,EAAF,QAAWC,GAAYs2B,EAAkB9B,EAAeE,EAAgB2C,EAAO5C,EAAc6C,GACnGD,GAAgBt3B,EAChBu3B,GAAgBt3B,EACZxR,IACEwR,EAASq3B,GAASC,EAAQvC,EACzBuC,GAASD,EAAQtC,GAExBpoC,EAAQsoC,EAAmBP,EAAgB2C,GAC3CzqC,EAASqoC,EAAmBN,EAAiB2C,GAC7ClpC,EAAMqmC,GAAe7nC,EAAS+nC,QAE3B,GAAI/oB,IAAY7P,EAAsBiT,KAAM,CAC/C,MAAM,QAAEjP,GAAYu2B,EAAkB9B,EAAe6C,EAAO,MAC5DA,GAAgBt3B,EAChBpT,EAAQsoC,EAAmBP,EAAgB2C,GAC3ClpC,EAAOqmC,GAAgB7nC,EAAQ+nC,QAE5B,GAAI9oB,IAAY7P,EAAsBkT,MAAO,CAChD,MAAM,QAAElP,GAAYu2B,EAAkB9B,EAAeE,EAAgB2C,EAAO,MAC5EA,GAAgBt3B,EAChBpT,EAAQsoC,EAAmBP,EAAgB2C,QAExC,GAAIzrB,IAAY7P,EAAsBoU,IAAK,CAC9C,MAAM,QAAEnQ,GAAYs2B,EAAkB,KAAM7B,EAAc6C,GAC1DA,GAAgBt3B,EAChBpT,EAASqoC,EAAmBN,EAAiB2C,GAC7ClpC,EAAMqmC,GAAe7nC,EAAS+nC,QAE3B,GAAI/oB,IAAY7P,EAAsBqU,OAAQ,CACjD,MAAM,QAAEpQ,GAAYs2B,EAAkB,KAAM7B,EAAcE,EAAiB2C,GAC3EA,GAAgBt3B,EAChBpT,EAASqoC,EAAmBN,EAAiB2C,IAIjD/2B,EAAYpb,MAAQob,EAAYpb,MAAMmL,IAAIC,IACxC,GAAIuC,EAAQ7E,KAAOsC,EAAGtC,GAAI,OAAOsC,EACjC,GAAgB,UAAZA,EAAG3I,MAAoB,gBAAiB2I,GAAMA,EAAGwV,YAAa,CAChE,MAAMA,EAAc/B,GAAoBzT,EAAGwV,aAE3C,IAAIzX,EAAO,GAIX,OAH+BA,EAA3B,aAAcyX,EAAoBA,EAAYzB,QAAQ3X,EAAOC,EAAQ2D,EAAGmZ,UAChE3D,EAAYzB,QAAQ3X,EAAOC,GAEhC,IACF2D,EAAIpC,OAAMC,MAAKzB,QAAOC,SACzByB,QAAS,CAAC1B,EAAOC,GACjB0B,QAGJ,GAAgB,UAAZiC,EAAG3I,KAAkB,CACvB,IAAIshB,EAAgB0rB,GAA4BhoC,EAAS+nC,GAAkBpkC,EAAGjO,KAAKQ,OAGnF,OAFAomB,EAAgBA,EAAgB,GAAK,GAAKA,EAEtCA,IAAkB0rB,EAAiC,IAAKrkC,EAAIpC,OAAMxB,SAC/D,IACF4D,EAAIpC,OAAMC,MAAKzB,QAAOC,SACzBsc,cAAeA,EAAgB,GAAK,GAAKA,GAG7C,MAAO,IAAK3Y,EAAIpC,OAAMC,MAAKzB,QAAOC,aAIhC2qC,EAAiB75B,IACrBuxB,GAAc,EAEdliC,SAASyqC,YAAc,KACvBzqC,SAAS0qC,WAAa,KACtB1qC,SAASyiC,YAAc,KACvBziC,SAAS4iC,UAAY,KAErBwE,EAAehvC,MAAQ,GAEvB,MAAMsqC,EAAe/xB,aAAa42B,WAAa52B,EAAEyxB,MAAQzxB,EAAE62B,eAAe,GAAGpF,MACvEO,EAAehyB,aAAa42B,WAAa52B,EAAE2xB,MAAQ3xB,EAAE62B,eAAe,GAAGlF,MAEzEH,IAAeO,GAAgBL,IAAeM,IAElDn6B,EAAYvD,YAAY,CAAE9D,SAAUqS,EAAYpb,QAChDmV,EAAUpD,iBAAgB,GAE1BwP,MAGE2tB,GACFtnC,SAASyqC,YAAcV,EACvB/pC,SAAS0qC,WAAaF,IAGtBxqC,SAASyiC,YAAcsH,EACvB/pC,SAAS4iC,UAAY4H,IAKnBG,EAAoB,CAACh6B,EAAeyD,EAAyByK,KACjE,IAAIqjB,GAAc,EAElB,MAAM,KAAE/uB,EAAF,KAAQC,EAAR,KAAcC,EAAd,KAAoBC,GAASc,EAC7Bw2B,EAAex3B,EAAOD,EACtB03B,EAAgBv3B,EAAOD,EACvB20B,EAAc4C,EAAeC,EAE7B1I,EAAaxxB,EAAEyxB,MACfC,EAAa1xB,EAAE2xB,MAEfwI,EAAkC1mC,KAAKG,MAAMH,KAAKC,UAAUmP,EAAYpb,QAE9E4H,SAASyiC,YAAc9xB,IACrB,IAAKuxB,EAAa,OAElB,MAAMQ,EAAe/xB,EAAEyxB,MACjBO,EAAehyB,EAAE2xB,MAEjB7S,GAAKiT,EAAeP,GAAc/6B,EAAYhP,MACpD,IAAIs3B,GAAKiT,EAAeN,GAAcj7B,EAAYhP,MAG9CyV,EAAqBzV,QACnBymB,IAAY7P,EAAsB83B,cAAgBjoB,IAAY7P,EAAsBg4B,WAAUtX,EAAID,EAAIuY,GACtGnpB,IAAY7P,EAAsB+3B,aAAeloB,IAAY7P,EAAsBi4B,YAAWvX,GAAKD,EAAIuY,IAI7G,IAAI+C,EAAc53B,EACd63B,EAAc53B,EACd63B,EAAc53B,EACd63B,EAAc53B,EAEduL,IAAY7P,EAAsB83B,cACpCkE,EAAc53B,EAAOqc,EACrByb,EAAc53B,EAAOoc,GAEd7Q,IAAY7P,EAAsB+3B,aACzCgE,EAAc53B,EAAOsc,EACrByb,EAAc53B,EAAOoc,GAEd7Q,IAAY7P,EAAsBg4B,UACzC+D,EAAc53B,EAAOsc,EACrBwb,EAAc53B,EAAOqc,GAEd7Q,IAAY7P,EAAsBi4B,WACzC+D,EAAc53B,EAAOqc,EACrBwb,EAAc53B,EAAOqc,GAEd7Q,IAAY7P,EAAsBoU,IACzC6nB,EAAc53B,EAAOqc,EAEd7Q,IAAY7P,EAAsBqU,OACzC6nB,EAAc53B,EAAOoc,EAEd7Q,IAAY7P,EAAsBiT,KACzC8oB,EAAc53B,EAAOsc,EAEd5Q,IAAY7P,EAAsBkT,QACzC8oB,EAAc53B,EAAOqc,GAIvB,MAAM0b,EAAuBH,EAAcD,EACrCK,EAAwBF,EAAcD,EAG5C,IAAII,EAAaF,EAAuBP,EACpCU,EAAcF,EAAwBP,EAEtCQ,GAAc,IAAGA,EAAa,GAC9BC,GAAe,IAAGA,EAAc,GAGpC93B,EAAYpb,MAAQob,EAAYpb,MAAMmL,IAAIC,IACxC,IAAiB,UAAZA,EAAG3I,MAAgC,UAAZ2I,EAAG3I,OAAqBkM,EAAoB3O,MAAMsL,SAASF,EAAGtC,IAAK,CAC7F,MAAMqqC,EAAgBT,EAAkB1vC,KAAKowC,GAAYA,EAAStqC,KAAOsC,EAAGtC,IAC5E,MAAO,IACFsC,EACH5D,MAAO2rC,EAAc3rC,MAAQyrC,EAC7BxrC,OAAQ0rC,EAAc1rC,OAASyrC,EAC/BlqC,KAAM2pC,GAAeQ,EAAcnqC,KAAO+R,GAAQk4B,EAClDhqC,IAAK4pC,GAAeM,EAAclqC,IAAMgS,GAAQi4B,GAGpD,OAAO9nC,KAIXxD,SAAS4iC,UAAYjyB,IACnBuxB,GAAc,EACdliC,SAASyiC,YAAc,KACvBziC,SAAS4iC,UAAY,KAEjBT,IAAexxB,EAAEyxB,OAASC,IAAe1xB,EAAE2xB,QAE/C95B,EAAYvD,YAAY,CAAE9D,SAAUqS,EAAYpb,QAChDuhB,OAIJ,MAAO,CACL0tB,eACAsD,sBEhjBW,IACbn3B,EACAsO,KAEA,MAAMvU,EAAYzG,KACZ,oBAAEC,EAAF,qBAAuBE,EAAvB,gBAA6CD,EAA7C,gBAA8DO,GAAoB8S,eAAY9M,IAC9F,qBAAEM,GAAyBwM,eAAY5M,KAIvCg+B,EAAgB,CAAC96B,EAA4B5K,EAAqB2lC,GAAY,KAMlF,GALKnkC,EAAgBnP,OAAOmV,EAAUjE,oBAAmB,GAKpDvC,EAAoB3O,MAAMsL,SAASqC,EAAQ7E,KAuB3C,GAAI2M,EAAqBzV,MAAO,CACnC,IAAIuzC,EAA4B,GAEhC,GAAI5lC,EAAQ4O,QAAS,CACnB,MAAMi3B,EAA2B,GACjCp4B,EAAYpb,MAAMyb,QAASrQ,IACrBA,EAAGmR,UAAY5O,EAAQ4O,SAASi3B,EAAev1C,KAAKmN,EAAGtC,MAE7DyqC,EAAkB5kC,EAAoB3O,MAAM0I,OAAOI,IAAO0qC,EAAeloC,SAASxC,SAGlFyqC,EAAkB5kC,EAAoB3O,MAAM0I,OAAOI,GAAMA,IAAO6E,EAAQ7E,IAGtEyqC,EAAgB51C,OAAS,GAC3BwX,EAAU7E,uBAAuBijC,QAKhC,GAAI3kC,EAAgB5O,QAAU2N,EAAQ7E,GACzCqM,EAAU5E,mBAAmB5C,EAAQ7E,SAIlC,GAAI+F,EAAqB7O,QAAU2N,EAAQ7E,GAAI,CAClD,MAAMihC,EAAaxxB,aAAa42B,WAAa52B,EAAEyxB,MAAQzxB,EAAE62B,eAAe,GAAGpF,MACrEC,EAAa1xB,aAAa42B,WAAa52B,EAAE2xB,MAAQ3xB,EAAE62B,eAAe,GAAGlF,MAEzE3xB,EAAEoN,OAAuB6kB,UAAajyB,IACtC,MAAM+xB,EAAe/xB,EAAEyxB,MACjBO,EAAehyB,EAAE2xB,MAEnBH,IAAeO,GAAgBL,IAAeM,IAChDp1B,EAAU3E,wBAAwB7C,EAAQ7E,IACxCyP,EAAEoN,OAAuB6kB,UAAY,YA1DQ,CACnD,IAAI+I,EAA4B,GAOhC,GAJEA,EADE99B,EAAqBzV,MACL,IAAI2O,EAAoB3O,MAAO2N,EAAQ7E,IAEpC,CAAC6E,EAAQ7E,IAE5B6E,EAAQ4O,QAAS,CACnB,MAAMi3B,EAA2B,GACjCp4B,EAAYpb,MAAMyb,QAASrQ,IACrBA,EAAGmR,UAAY5O,EAAQ4O,SAASi3B,EAAev1C,KAAKmN,EAAGtC,MAE7DyqC,EAAkB,IAAIA,KAAoBC,GAG5Cr+B,EAAU7E,uBAAuBmjC,kBAAKF,IACtCp+B,EAAU5E,mBAAmB5C,EAAQ7E,IA8CnCwqC,GAAW5pB,EAAYnR,EAAG5K,IAGhC,MAAO,CACL0lC,kBChFW,IACbj4B,EACA4zB,EACAhgC,KAEA,MAAMoB,EAAc3F,KACd,oBAAEkE,EAAF,qBAAuBE,GAAyBoT,eAAYvT,MAC5D,cAAE6G,GAAkB0M,eAAY5M,MAChC,cAAEzK,GAAkBqX,eAAY7R,IAEhC,mBAAEmR,GAAuBW,KAEzBwxB,EAAc,CAACn7B,EAA4B5K,KAC/C,MAAMuhC,IAAiB32B,aAAa42B,YACpC,GAAID,KAAkB32B,EAAE62B,iBAAmB72B,EAAE62B,eAAe,IAAK,OAEjE,IAAKzgC,EAAoB3O,MAAMsL,SAASqC,EAAQ7E,IAAK,OACrD,IAAIghC,GAAc,EAElB,MAAMsG,EAAY1xB,GACZ2xB,EAAa3xB,GAAgB9T,EAAc5K,MAE3CotC,EAAgB,EAEhBsF,EAAkC1mC,KAAKG,MAAMH,KAAKC,UAAUmP,EAAYpb,QACxE2zC,EAA0BjB,EAAkBhqC,OAAO0C,GAAMuD,EAAoB3O,MAAMsL,SAASF,EAAGtC,KAE/FumC,EAAe1hC,EAAQ3E,KACvBsmC,EAAc3hC,EAAQ1E,IACtBsmC,EAAgB5hC,EAAQnG,MACxBgoC,EAAkB,WAAY7hC,GAAWA,EAAQlG,OAAUkG,EAAQlG,OAAS,EAC5EklC,EAAkB,WAAYh/B,GAAWA,EAAQpE,OAAUoE,EAAQpE,OAAS,EAE5EwgC,EAAamF,EAAe32B,EAAE62B,eAAe,GAAGpF,MAAQzxB,EAAEyxB,MAC1DC,EAAaiF,EAAe32B,EAAE62B,eAAe,GAAGlF,MAAQ3xB,EAAE2xB,MAEhE,IAAI0J,EAAiC,KAErC,MAAMtD,EAAuB3iC,EAAQ7E,KAAO+F,EAAqB7O,MAKjE,IAAIiwC,EAA+B,GAC/BC,EAA6B,GAEjC,IAAK,MAAM9kC,KAAMgQ,EAAYpb,MAAO,CAClC,GAAgB,SAAZoL,EAAG3I,KAAiB,SACxB,GAAI6tC,GAAwBllC,EAAGtC,KAAO6E,EAAQ7E,GAAI,SAClD,IAAKwnC,GAAwB3hC,EAAoB3O,MAAMsL,SAASF,EAAGtC,IAAK,SAExE,IAAIE,EAAMC,EAAKzB,EAAOC,EACtB,GAAI,WAAY2D,GAAMA,EAAG7B,OAAQ,CAC/B,MAAM,OAAE6Q,EAAF,OAAUE,GAAWjB,GAAoB,CAC7CrQ,KAAMoC,EAAGpC,KACTC,IAAKmC,EAAGnC,IACRzB,MAAO4D,EAAG5D,MACVC,OAAQ2D,EAAG3D,OACX8B,OAAQ6B,EAAG7B,SAEbP,EAAOoR,EAAO,GACdnR,EAAMqR,EAAO,GACb9S,EAAQ4S,EAAO,GAAKA,EAAO,GAC3B3S,EAAS6S,EAAO,GAAKA,EAAO,QAG5BtR,EAAOoC,EAAGpC,KACVC,EAAMmC,EAAGnC,IACTzB,EAAQ4D,EAAG5D,MACXC,EAAS2D,EAAG3D,OAGd,MAAM8oC,EAAQvnC,EAAOxB,EACfgpC,EAASvnC,EAAMxB,EACfulC,EAAU/jC,EAAMxB,EAAS,EACzBwlC,EAAUjkC,EAAOxB,EAAQ,EAEzBipC,EAAqB,CAAEzwC,MAAOiJ,EAAK+S,MAAO,CAAChT,EAAMunC,IACjDG,EAAwB,CAAE1wC,MAAOwwC,EAAQx0B,MAAO,CAAChT,EAAMunC,IACvDsD,EAAkC,CAAE7zC,MAAOgtC,EAAShxB,MAAO,CAAChT,EAAMunC,IAClEI,EAAsB,CAAE3wC,MAAOgJ,EAAMgT,MAAO,CAAC/S,EAAKunC,IAClDI,EAAuB,CAAE5wC,MAAOuwC,EAAOv0B,MAAO,CAAC/S,EAAKunC,IACpDsD,EAAgC,CAAE9zC,MAAOitC,EAASjxB,MAAO,CAAC/S,EAAKunC,IAErEP,EAAgBhyC,KAAKwyC,EAASC,EAAYmD,GAC1C3D,EAAcjyC,KAAK0yC,EAAUC,EAAWkD,GAI1C,MAAMjD,EAAyB,CAAE7wC,MAAO,EAAGgc,MAAO,CAAC,EAAGo0B,IAChDU,EAA4B,CAAE9wC,MAAOqwC,EAAYr0B,MAAO,CAAC,EAAGo0B,IAC5DW,EAAsC,CAAE/wC,MAAOqwC,EAAa,EAAGr0B,MAAO,CAAC,EAAGo0B,IAC1EY,EAA0B,CAAEhxC,MAAO,EAAGgc,MAAO,CAAC,EAAGq0B,IACjDY,EAA2B,CAAEjxC,MAAOowC,EAAWp0B,MAAO,CAAC,EAAGq0B,IAC1Da,EAAoC,CAAElxC,MAAOowC,EAAY,EAAGp0B,MAAO,CAAC,EAAGq0B,IAE7EJ,EAAgBhyC,KAAK4yC,EAAaC,EAAgBC,GAClDb,EAAcjyC,KAAK+yC,EAAcC,EAAeC,GAGhDjB,EAAkBv0B,GAAeu0B,GACjCC,EAAgBx0B,GAAew0B,GAE/B,MAAMyB,EAAmBp5B,IACvB,MAAM+xB,EAAe/xB,aAAa42B,WAAa52B,EAAEyxB,MAAQzxB,EAAE62B,eAAe,GAAGpF,MACvEO,EAAehyB,aAAa42B,WAAa52B,EAAE2xB,MAAQ3xB,EAAE62B,eAAe,GAAGlF,MAU7E,IAJuB,IAAnB0J,IACFA,EAAiBtmC,KAAK69B,IAAIpB,EAAaO,GAAgB8C,GACtC9/B,KAAK69B,IAAIlB,EAAaM,GAAgB6C,IAEpDtD,GAAe8J,EAAgB,OAEpC,IAAI1B,GAAS5H,EAAeP,GAAc/6B,EAAYhP,MAClDmyC,GAAS5H,EAAeN,GAAcj7B,EAAYhP,MAElDuV,EAAcvV,QACZsN,KAAK69B,IAAI+G,GAAS5kC,KAAK69B,IAAIgH,KAAQA,EAAQ,GAC3C7kC,KAAK69B,IAAI+G,GAAS5kC,KAAK69B,IAAIgH,KAAQD,EAAQ,IAIjD,IAKI6B,EAAoBC,EAAoBC,EAAoBC,EAL5DC,EAAa9E,EAAe6C,EAC5BkC,EAAY9E,EAAc6C,EAM9B,GAAyC,IAArCxjC,EAAoB3O,MAAMrC,QAAgB2yC,EAC5C,GAAI3D,EAAgB,CAClB,MAAM,OAAEvyB,EAAF,OAAUE,GAAWjB,GAAoB,CAC7CrQ,KAAMmrC,EACNlrC,IAAKmrC,EACL5sC,MAAO+nC,EACP9nC,OAAQ+nC,EACRjmC,OAAQojC,IAEVoH,EAAa35B,EAAO,GACpB45B,EAAa55B,EAAO,GACpB65B,EAAa35B,EAAO,GACpB45B,EAAa55B,EAAO,OAEI,SAAjB3M,EAAQlL,MACfsxC,EAAaI,EACbH,EAAaG,EAAa7mC,KAAK+M,IAAI1M,EAAQ5J,MAAM,GAAI4J,EAAQ9D,IAAI,IACjEoqC,EAAaG,EACbF,EAAaE,EAAY9mC,KAAK+M,IAAI1M,EAAQ5J,MAAM,GAAI4J,EAAQ9D,IAAI,MAGhEkqC,EAAaI,EACbH,EAAaG,EAAa5E,EAC1B0E,EAAaG,EACbF,EAAaE,EAAY5E,OAGxB,CACH,MAAMn0B,EAAa,GACbC,EAAY,GACZC,EAAc,GACdC,EAAe,GAErB,IAAK,IAAI/d,EAAI,EAAGA,EAAIk2C,EAAwBh2C,OAAQF,IAAK,CACvD,MAAMkQ,EAAUgmC,EAAwBl2C,GAClCuL,EAAO2E,EAAQ3E,KAAOkpC,EACtBjpC,EAAM0E,EAAQ1E,IAAMkpC,EACpB3qC,EAAQmG,EAAQnG,MAChBC,EAAU,WAAYkG,GAAWA,EAAQlG,OAAUkG,EAAQlG,OAAS,EACpE8B,EAAU,WAAYoE,GAAWA,EAAQpE,OAAUoE,EAAQpE,OAAS,EAE1E,GAAI,WAAYoE,GAAWA,EAAQpE,OAAQ,CACzC,MAAM,OAAE6Q,EAAF,OAAUE,GAAWjB,GAAoB,CAAErQ,OAAMC,MAAKzB,QAAOC,SAAQ8B,WAC3E8R,EAAWpd,KAAKmc,EAAO,IACvBkB,EAAUrd,KAAKqc,EAAO,IACtBiB,EAAYtd,KAAKmc,EAAO,IACxBoB,EAAavd,KAAKqc,EAAO,QAED,SAAjB3M,EAAQlL,MACf4Y,EAAWpd,KAAK+K,GAChBsS,EAAUrd,KAAKgL,GACfsS,EAAYtd,KAAK+K,EAAOsE,KAAK+M,IAAI1M,EAAQ5J,MAAM,GAAI4J,EAAQ9D,IAAI,KAC/D2R,EAAavd,KAAKgL,EAAMqE,KAAK+M,IAAI1M,EAAQ5J,MAAM,GAAI4J,EAAQ9D,IAAI,OAG/DwR,EAAWpd,KAAK+K,GAChBsS,EAAUrd,KAAKgL,GACfsS,EAAYtd,KAAK+K,EAAOxB,GACxBgU,EAAavd,KAAKgL,EAAMxB,IAI5BssC,EAAazmC,KAAKC,OAAO8N,GACzB24B,EAAa1mC,KAAK+M,OAAOkB,GACzB04B,EAAa3mC,KAAKC,OAAO+N,GACzB44B,EAAa5mC,KAAK+M,OAAOmB,GAG3B,MAAM64B,EAAgBN,GAAcC,EAAaD,GAAc,EACzDO,EAAgBL,GAAcC,EAAaD,GAAc,EAIzD3C,EAAwC,GAC9C,IAAIC,GAAqB,EACrBC,GAAuB,EAC3B,IAAK,IAAI/zC,EAAI,EAAGA,EAAIwyC,EAAgBtyC,OAAQF,IAAK,CAC/C,MAAM,MAAEuC,EAAF,MAASgc,GAAUi0B,EAAgBxyC,GACnC8P,EAAMD,KAAKC,OAAOyO,EAAO+3B,EAAYC,GACrC35B,EAAM/M,KAAK+M,OAAO2B,EAAO+3B,EAAYC,GAEvC1mC,KAAK69B,IAAI8I,EAAaj0C,GAASotC,IAAkBoE,IACnD4C,GAAyBH,EAAaj0C,EACtCwxC,GAAuB,EACvBF,EAAgBrzC,KAAK,CAACwE,KAAM,aAAcivC,KAAM,CAACra,EAAG9pB,EAAM,GAAI+pB,EAAGt3B,GAAQrC,OAAQ0c,EAAM9M,EAAM,OAE3FD,KAAK69B,IAAI+I,EAAal0C,GAASotC,IAAkBoE,IACnD4C,GAAyBF,EAAal0C,EACtCwxC,GAAuB,EACvBF,EAAgBrzC,KAAK,CAACwE,KAAM,aAAcivC,KAAM,CAACra,EAAG9pB,EAAM,GAAI+pB,EAAGt3B,GAAQrC,OAAQ0c,EAAM9M,EAAM,OAE3FD,KAAK69B,IAAImJ,EAAgBt0C,GAASotC,IAAkBoE,IACtD4C,GAAyBE,EAAgBt0C,EACzCwxC,GAAuB,EACvBF,EAAgBrzC,KAAK,CAACwE,KAAM,aAAcivC,KAAM,CAACra,EAAG9pB,EAAM,GAAI+pB,EAAGt3B,GAAQrC,OAAQ0c,EAAM9M,EAAM,OAGjG,IAAK,IAAI9P,EAAI,EAAGA,EAAIyyC,EAAcvyC,OAAQF,IAAK,CAC7C,MAAM,MAAEuC,EAAF,MAASgc,GAAUk0B,EAAczyC,GACjC8P,EAAMD,KAAKC,OAAOyO,EAAOi4B,EAAYC,GACrC75B,EAAM/M,KAAK+M,OAAO2B,EAAOi4B,EAAYC,GAEvC5mC,KAAK69B,IAAI4I,EAAa/zC,GAASotC,IAAkBmE,IACnD4C,GAA2BJ,EAAa/zC,EACxCuxC,GAAqB,EACrBD,EAAgBrzC,KAAK,CAACwE,KAAM,WAAYivC,KAAM,CAACra,EAAGr3B,EAAOs3B,EAAG/pB,EAAM,IAAK5P,OAAQ0c,EAAM9M,EAAM,OAEzFD,KAAK69B,IAAI6I,EAAah0C,GAASotC,IAAkBmE,IACnD4C,GAA2BH,EAAah0C,EACxCuxC,GAAqB,EACrBD,EAAgBrzC,KAAK,CAACwE,KAAM,WAAYivC,KAAM,CAACra,EAAGr3B,EAAOs3B,EAAG/pB,EAAM,IAAK5P,OAAQ0c,EAAM9M,EAAM,OAEzFD,KAAK69B,IAAIkJ,EAAgBr0C,GAASotC,IAAkBmE,IACtD4C,GAA2BE,EAAgBr0C,EAC3CuxC,GAAqB,EACrBD,EAAgBrzC,KAAK,CAACwE,KAAM,WAAYivC,KAAM,CAACra,EAAGr3B,EAAOs3B,EAAG/pB,EAAM,IAAK5P,OAAQ0c,EAAM9M,EAAM,OAM/F,GAHAyhC,EAAehvC,MAAQsxC,EAGkB,IAArC3iC,EAAoB3O,MAAMrC,QAAgB2yC,EAC5Cl1B,EAAYpb,MAAQob,EAAYpb,MAAMmL,IAAIC,GACjCA,EAAGtC,KAAO6E,EAAQ7E,GAAK,IAAKsC,EAAIpC,KAAMmrC,EAAYlrC,IAAKmrC,GAAchpC,OAM3E,CACH,MAAMiF,EAAgB+K,EAAYpb,MAAMgD,KAAKoI,GAAMA,EAAGtC,KAAO6E,EAAQ7E,IACrE,IAAKuH,EAAe,OAEpB+K,EAAYpb,MAAQob,EAAYpb,MAAMmL,IAAIC,GACpCuD,EAAoB3O,MAAMsL,SAASF,EAAGtC,IACpCsC,EAAGtC,KAAO6E,EAAQ7E,GACb,IACFsC,EACHpC,KAAMmrC,EACNlrC,IAAKmrC,GAGF,IACFhpC,EACHpC,KAAMoC,EAAGpC,MAAQmrC,EAAa9jC,EAAcrH,MAC5CC,IAAKmC,EAAGnC,KAAOmrC,EAAY/jC,EAAcpH,MAGtCmC,KAKPgnC,EAAiB75B,IACrBuxB,GAAc,EAEdliC,SAASyqC,YAAc,KACvBzqC,SAAS0qC,WAAa,KACtB1qC,SAASyiC,YAAc,KACvBziC,SAAS4iC,UAAY,KAErBwE,EAAehvC,MAAQ,GAEvB,MAAMsqC,EAAe/xB,aAAa42B,WAAa52B,EAAEyxB,MAAQzxB,EAAE62B,eAAe,GAAGpF,MACvEO,EAAehyB,aAAa42B,WAAa52B,EAAE2xB,MAAQ3xB,EAAE62B,eAAe,GAAGlF,MAEzEH,IAAeO,GAAgBL,IAAeM,IAElDn6B,EAAYvD,YAAY,CAAE9D,SAAUqS,EAAYpb,QAChDuhB,MAGE2tB,GACFtnC,SAASyqC,YAAcV,EACvB/pC,SAAS0qC,WAAaF,IAGtBxqC,SAASyiC,YAAcsH,EACvB/pC,SAAS4iC,UAAY4H,IAIzB,MAAO,CACLsB,gBCzTYt4B,OACd,MAAMhL,EAAc3F,KACd,YAAEuE,GAAgBiT,eAAYvT,MAE9B,mBAAE6S,GAAuBW,KAGzBqyB,EAAkB,CAACh8B,EAAe5K,EAAyB8Y,KAC/D,IAAIqjB,GAAc,EAElB,MAAMsD,EAAgB,EAEhBrD,EAAaxxB,EAAEyxB,MACfC,EAAa1xB,EAAE2xB,MAEfsK,EAAsC,GAG5C,IAAK,IAAI/2C,EAAI,EAAGA,EAAI2d,EAAYpb,MAAMrC,OAAQF,IAAK,CACjD,MAAMkrB,EAAWvN,EAAYpb,MAAMvC,GACnC,GAAsB,SAAlBkrB,EAASlmB,MAAmBkmB,EAASpf,OAAQ,SAEjD,MAAMP,EAAO2f,EAAS3f,KAChBC,EAAM0f,EAAS1f,IACfzB,EAAQmhB,EAASnhB,MACjBC,EAASkhB,EAASlhB,OAElB8oC,EAAQvnC,EAAOxB,EACfgpC,EAASvnC,EAAMxB,EACfulC,EAAU/jC,EAAMxB,EAAS,EACzBwlC,EAAUjkC,EAAOxB,EAAQ,EAEzBwmC,EAAW,CAAE3W,EAAG4V,EAAS3V,EAAGruB,GAC5BmlC,EAAc,CAAE/W,EAAG4V,EAAS3V,EAAGkZ,GAC/BlC,EAAY,CAAEjX,EAAGruB,EAAMsuB,EAAG0V,GAC1BkB,EAAa,CAAE7W,EAAGkZ,EAAOjZ,EAAG0V,GAE5Be,EAAe,CAAE1W,EAAGruB,EAAMsuB,EAAGruB,GAC7BglC,EAAgB,CAAE5W,EAAGkZ,EAAOjZ,EAAGruB,GAC/BolC,EAAkB,CAAEhX,EAAGruB,EAAMsuB,EAAGkZ,GAChCrC,EAAmB,CAAE9W,EAAGkZ,EAAOjZ,EAAGkZ,GAExCgE,EAAiBv2C,KACf+vC,EACAI,EACAE,EACAJ,EACAH,EACAE,EACAI,EACAF,GAIJvmC,SAASyiC,YAAc9xB,IACrB,IAAKuxB,EAAa,OAElB,MAAMQ,EAAe/xB,EAAEyxB,MACjBO,EAAehyB,EAAE2xB,MAEjBgI,GAAS5H,EAAeP,GAAc/6B,EAAYhP,MAClDmyC,GAAS5H,EAAeN,GAAcj7B,EAAYhP,MAGxD,IAAI8gC,EAASnzB,EAAQ3E,KAAO2E,EAAQ5J,MAAM,GACtCg9B,EAASpzB,EAAQ1E,IAAM0E,EAAQ5J,MAAM,GACrCi9B,EAAOrzB,EAAQ3E,KAAO2E,EAAQ9D,IAAI,GAClCo3B,EAAOtzB,EAAQ1E,IAAM0E,EAAQ9D,IAAI,GAErC,MAAMiT,EAAMnP,EAAQkP,QAAUlP,EAAQoP,OAAS,CAAC,EAAG,GACnD,IAAI03B,EAAO9mC,EAAQ3E,KAAO8T,EAAI,GAC1B43B,EAAO/mC,EAAQ1E,IAAM6T,EAAI,GAE7B,MAAOG,EAAIC,GAAMvP,EAAQqP,OAAS,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,IAC/C,IAAI23B,EAAMhnC,EAAQ3E,KAAOiU,EAAG,GACxB23B,EAAMjnC,EAAQ1E,IAAMgU,EAAG,GACvB43B,EAAMlnC,EAAQ3E,KAAOkU,EAAG,GACxB43B,EAAMnnC,EAAQ1E,IAAMiU,EAAG,GAI3B,GAAIuJ,IAAY5P,GAAoBk+B,MAAO,CACzCjU,GAAkBoR,EAClBnR,GAAkBoR,EAEd7kC,KAAK69B,IAAIrK,EAASE,GAAQoM,IAAetM,EAASE,GAClD1zB,KAAK69B,IAAIpK,EAASE,GAAQmM,IAAerM,EAASE,GAEtD,IAAK,MAAM+T,KAAmBR,EAAkB,CAC9C,MAAM,EAAEnd,EAAF,EAAKC,GAAM0d,EACjB,GAAI1nC,KAAK69B,IAAI9T,EAAIyJ,GAAUsM,GAAiB9/B,KAAK69B,IAAI7T,EAAIyJ,GAAUqM,EAAe,CAChFtM,EAASzJ,EACT0J,EAASzJ,EACT,aAID,GAAI7Q,IAAY5P,GAAoBo+B,IAAK,CAC5CjU,GAAckR,EACdjR,GAAckR,EAEV7kC,KAAK69B,IAAIrK,EAASE,GAAQoM,IAAepM,EAAOF,GAChDxzB,KAAK69B,IAAIpK,EAASE,GAAQmM,IAAenM,EAAOF,GAEpD,IAAK,MAAMiU,KAAmBR,EAAkB,CAC9C,MAAM,EAAEnd,EAAF,EAAKC,GAAM0d,EACjB,GAAI1nC,KAAK69B,IAAI9T,EAAI2J,GAAQoM,GAAiB9/B,KAAK69B,IAAI7T,EAAI2J,GAAQmM,EAAe,CAC5EpM,EAAO3J,EACP4J,EAAO3J,EACP,aAIG7Q,IAAY5P,GAAoBmY,GACvCylB,GAAcvC,EACdwC,GAAcvC,EAEV7kC,KAAK69B,IAAIsJ,EAAO3T,GAAUsM,IAAeqH,EAAO3T,GAChDxzB,KAAK69B,IAAIuJ,EAAO3T,GAAUqM,IAAesH,EAAO3T,GAChDzzB,KAAK69B,IAAIsJ,EAAOzT,GAAQoM,IAAeqH,EAAOzT,GAC9C1zB,KAAK69B,IAAIuJ,EAAOzT,GAAQmM,IAAesH,EAAOzT,GAC9C3zB,KAAK69B,IAAIsJ,GAAQ3T,EAASE,GAAQ,GAAKoM,GAAiB9/B,KAAK69B,IAAIuJ,GAAQ3T,EAASE,GAAQ,GAAKmM,IACjGqH,GAAQ3T,EAASE,GAAQ,EACzB0T,GAAQ3T,EAASE,GAAQ,IAGpBxa,IAAY5P,GAAoBq+B,IACvCP,GAAYzC,EACZ0C,GAAYzC,EAER7kC,KAAK69B,IAAIwJ,EAAM7T,GAAUsM,IAAeuH,EAAM7T,GAC9CxzB,KAAK69B,IAAIyJ,EAAM7T,GAAUqM,IAAewH,EAAM7T,GAC9CzzB,KAAK69B,IAAIwJ,EAAM3T,GAAQoM,IAAeuH,EAAM3T,GAC5C1zB,KAAK69B,IAAIyJ,EAAM3T,GAAQmM,IAAewH,EAAM3T,IAEzCxa,IAAY5P,GAAoBs+B,KACvCN,GAAY3C,EACZ4C,GAAY3C,EAER7kC,KAAK69B,IAAI0J,EAAM/T,GAAUsM,IAAeyH,EAAM/T,GAC9CxzB,KAAK69B,IAAI2J,EAAM/T,GAAUqM,IAAe0H,EAAM/T,GAC9CzzB,KAAK69B,IAAI0J,EAAM7T,GAAQoM,IAAeyH,EAAM7T,GAC5C1zB,KAAK69B,IAAI2J,EAAM7T,GAAQmM,IAAe0H,EAAM7T,IAIlD,MAAMlmB,EAAOzN,KAAKC,IAAIuzB,EAAQE,GACxB/lB,EAAO3N,KAAKC,IAAIwzB,EAAQE,GACxBjmB,EAAO1N,KAAK+M,IAAIymB,EAAQE,GACxB9lB,EAAO5N,KAAK+M,IAAI0mB,EAAQE,GAExBl9B,EAA0B,CAAC,EAAG,GAC9B8F,EAAwB,CAACmR,EAAOD,EAAMG,EAAOD,GAC/C6lB,EAASE,IACXj9B,EAAM,GAAKiX,EAAOD,EAClBlR,EAAI,GAAK,GAEPk3B,EAASE,IACXl9B,EAAM,GAAKmX,EAAOD,EAClBpR,EAAI,GAAK,GAGXuR,EAAYpb,MAAQob,EAAYpb,MAAMmL,IAAIC,IACxC,GAAIA,EAAGtC,KAAO6E,EAAQ7E,GAAI,CACxB,MAAMssC,EAAwB,IACxBhqC,EACJpC,KAAM+R,EACN9R,IAAKgS,EACLlX,MAAOA,EACP8F,IAAKA,GAcP,OAZI4c,IAAY5P,GAAoBk+B,OAAStuB,IAAY5P,GAAoBo+B,KACvEtnC,EAAQkP,SAAQu4B,EAAMv4B,OAAS,EAAE9Y,EAAM,GAAK8F,EAAI,IAAM,GAAI9F,EAAM,GAAK8F,EAAI,IAAM,IAC/E8D,EAAQoP,QAAOq4B,EAAMr4B,MAAQ,EAAEhZ,EAAM,GAAK8F,EAAI,IAAM,GAAI9F,EAAM,GAAK8F,EAAI,IAAM,IAC7E8D,EAAQqP,QAAOo4B,EAAMp4B,MAAQ,CAAC,EAAEjZ,EAAM,GAAK8F,EAAI,IAAM,GAAI9F,EAAM,GAAK8F,EAAI,IAAM,GAAI,EAAE9F,EAAM,GAAK8F,EAAI,IAAM,GAAI9F,EAAM,GAAK8F,EAAI,IAAM,MAE/H4c,IAAY5P,GAAoBmY,GACnCrhB,EAAQkP,SAAQu4B,EAAMv4B,OAAS,CAAC43B,EAAO15B,EAAM25B,EAAOz5B,IACpDtN,EAAQoP,QAAOq4B,EAAMr4B,MAAQ,CAAC03B,EAAO15B,EAAM25B,EAAOz5B,KAGlDtN,EAAQqP,QAAOo4B,EAAMp4B,MAAQ,CAAC,CAAC23B,EAAM55B,EAAM65B,EAAM35B,GAAO,CAAC45B,EAAM95B,EAAM+5B,EAAM75B,KAE1Em6B,EAET,OAAOhqC,KAIXxD,SAAS4iC,UAAYjyB,IACnBuxB,GAAc,EACdliC,SAASyiC,YAAc,KACvBziC,SAAS4iC,UAAY,KAErB,MAAMF,EAAe/xB,EAAEyxB,MACjBO,EAAehyB,EAAE2xB,MAEnBH,IAAeO,GAAgBL,IAAeM,IAElDn6B,EAAYvD,YAAY,CAAE9D,SAAUqS,EAAYpb,QAChDuhB,OAIJ,MAAO,CACLgzB,oBC3MW,IACbn5B,EACApM,KAEA,MAAMoB,EAAc3F,KAEd,mBAAE8W,GAAuBW,KAEzBmzB,EAAoB,CAAC98B,EAA4B5K,KACrD,MAAMuhC,IAAiB32B,aAAa42B,YACpC,GAAID,KAAkB32B,EAAE62B,iBAAmB72B,EAAE62B,eAAe,IAAK,OAEjE,IAAItF,GAAc,EAElB,MAAMC,EAAamF,EAAe32B,EAAE62B,eAAe,GAAGpF,MAAQzxB,EAAEyxB,MAC1DC,EAAaiF,EAAe32B,EAAE62B,eAAe,GAAGlF,MAAQ3xB,EAAE2xB,MAE1DtpB,EAAc/B,GAAoBlR,EAAQiT,aAChD,IAAI00B,EAAsC,KAC1C,GAAI,aAAc10B,EAAa,CAC7B,MAAM20B,EAAW30B,EAAY1B,YAAYvR,EAAQnG,MAAOmG,EAAQlG,QAC1D+tC,EAAYD,EAAW5nC,EAAQ4W,UAC9BhX,EAAK8M,GAAOuG,EAAY5E,MACzBiD,EAAW2B,EAAY3B,SAE7Bq2B,EAAgB,CAAEC,WAAUC,YAAWjoC,MAAK8M,MAAK4E,YAGnD,MAAM0yB,EAAmBp5B,IACvB,IAAKuxB,EAAa,OAElB,MAAMQ,EAAe/xB,aAAa42B,WAAa52B,EAAEyxB,MAAQzxB,EAAE62B,eAAe,GAAGpF,MACvEO,EAAehyB,aAAa42B,WAAa52B,EAAE2xB,MAAQ3xB,EAAE62B,eAAe,GAAGlF,MACvEgI,GAAS5H,EAAeP,GAAc/6B,EAAYhP,MAClDmyC,GAAS5H,EAAeN,GAAcj7B,EAAYhP,MAExDob,EAAYpb,MAAQob,EAAYpb,MAAMmL,IAAIC,IACxC,GAAIA,EAAGtC,KAAO6E,EAAQ7E,IAAMwsC,EAAe,CACzC,MAAM,SAAEC,EAAF,UAAYC,EAAZ,IAAuBjoC,EAAvB,IAA4B8M,EAA5B,SAAiC4E,GAAaq2B,EAC9CG,EAAerqC,EAErB,IAAImZ,EAAW,EAWf,MATiB,SAAbtF,IAAqBsF,GAAYixB,EAAYtD,GAASqD,GACzC,UAAbt2B,IAAsBsF,GAAYixB,EAAYtD,GAASqD,GAC1C,WAAbt2B,IAAuBsF,GAAYixB,EAAoB,EAARtD,GAAaqD,GAC/C,QAAbt2B,IAAoBsF,GAAYixB,EAAYrD,GAASoD,GACxC,WAAbt2B,IAAuBsF,GAAYixB,EAAYrD,GAASoD,GAExDhxB,EAAWhX,IAAKgX,EAAWhX,GAC3BgX,EAAWlK,IAAKkK,EAAWlK,GAExB,IACFjP,EACHmZ,WACApb,KAAMyX,EAAYzB,QAAQs2B,EAAajuC,MAAOiuC,EAAahuC,OAAQ8c,IAGvE,OAAOnZ,KAILgnC,EAAiB75B,IACrBuxB,GAAc,EAEdliC,SAASyqC,YAAc,KACvBzqC,SAAS0qC,WAAa,KACtB1qC,SAASyiC,YAAc,KACvBziC,SAAS4iC,UAAY,KAErB,MAAMF,EAAe/xB,aAAa42B,WAAa52B,EAAEyxB,MAAQzxB,EAAE62B,eAAe,GAAGpF,MACvEO,EAAehyB,aAAa42B,WAAa52B,EAAE2xB,MAAQ3xB,EAAE62B,eAAe,GAAGlF,MAEzEH,IAAeO,GAAgBL,IAAeM,IAElDn6B,EAAYvD,YAAY,CAAE9D,SAAUqS,EAAYpb,QAChDuhB,MAGE2tB,GACFtnC,SAASyqC,YAAcV,EACvB/pC,SAAS0qC,WAAaF,IAGtBxqC,SAASyiC,YAAcsH,EACvB/pC,SAAS4iC,UAAY4H,IAIzB,MAAO,CACLiD,sBClGY5K,OACd,MAAMt1B,EAAYzG,KACZ,YAAEM,EAAF,gBAAeO,GAAoB0S,eAAY9M,GAG/CugC,EAAyBC,IAC7B,MAAM,MAAE5xC,EAAF,IAAS8F,GAAQ8rC,EAEvB,IAAKlL,EAAYzqC,MAAO,OACxB,MAAM8qC,EAAeL,EAAYzqC,MAAM+qC,yBAEhCjK,EAAQC,GAAUh9B,GAClBi9B,EAAMC,GAAQp3B,EACfkR,EAAOzN,KAAKC,IAAIuzB,EAAQE,GACxBhmB,EAAO1N,KAAK+M,IAAIymB,EAAQE,GACxB/lB,EAAO3N,KAAKC,IAAIwzB,EAAQE,GACxB/lB,EAAO5N,KAAK+M,IAAI0mB,EAAQE,GAExBj4B,GAAQ+R,EAAO+vB,EAAazT,GAAKroB,EAAYhP,MAC7CiJ,GAAOgS,EAAO6vB,EAAaxT,GAAKtoB,EAAYhP,MAC5CwH,GAASwT,EAAOD,GAAQ/L,EAAYhP,MACpCyH,GAAUyT,EAAOD,GAAQjM,EAAYhP,MAE3C,MAAO,CAAEgJ,OAAMC,MAAKzB,QAAOC,WAIvBmuC,EAAgCD,IACpC,MAAM,MAAE5xC,EAAF,IAAS8F,GAAQ8rC,EAEvB,IAAKlL,EAAYzqC,MAAO,OACxB,MAAM8qC,EAAeL,EAAYzqC,MAAM+qC,yBAEhCjK,EAAQC,GAAUh9B,GAClBi9B,EAAMC,GAAQp3B,EACfkR,EAAOzN,KAAKC,IAAIuzB,EAAQE,GACxBhmB,EAAO1N,KAAK+M,IAAIymB,EAAQE,GACxB/lB,EAAO3N,KAAKC,IAAIwzB,EAAQE,GACxB/lB,EAAO5N,KAAK+M,IAAI0mB,EAAQE,GAExBj4B,GAAQ+R,EAAO+vB,EAAazT,GAAKroB,EAAYhP,MAC7CiJ,GAAOgS,EAAO6vB,EAAaxT,GAAKtoB,EAAYhP,MAC5CwH,GAASwT,EAAOD,GAAQ/L,EAAYhP,MACpCyH,GAAUyT,EAAOD,GAAQjM,EAAYhP,MAErC61C,EAA2B,CAC/B/U,IAAW/lB,EAAO,EAAIvT,EACtBu5B,IAAW9lB,EAAO,EAAIxT,GAElBquC,EAAyB,CAC7B9U,IAASjmB,EAAO,EAAIvT,EACpBy5B,IAAShmB,EAAO,EAAIxT,GAGtB,MAAO,CACLuB,OACAC,MACAlF,MAAO8xC,EACPhsC,IAAKisC,KAIH,kBAAE9xB,EAAF,mBAAqBM,EAArB,kBAAyCE,GAAsBoB,KAG/DmwB,EAAoCJ,IACxC,IAAKpmC,EAAgBvP,MAAO,OAE5B,MAAMyC,EAAO8M,EAAgBvP,MAAMyC,KACnC,GAAa,SAATA,EAAiB,CACnB,MAAMwhB,EAAWyxB,EAAsBC,GACvC1xB,GAAYD,EAAkBC,EAAU,CAAEC,SAAU3U,EAAgBvP,MAAMkkB,gBAEvE,GAAa,UAATzhB,EAAkB,CACzB,MAAMwhB,EAAWyxB,EAAsBC,GACvC1xB,GAAYK,EAAmBL,EAAU1U,EAAgBvP,MAAM7C,WAE5D,GAAa,SAATsF,EAAiB,CACxB,MAAMwhB,EAAW2xB,EAA6BD,GAC9C1xB,GAAYO,EAAkBP,EAAU1U,EAAgBvP,MAAM7C,MAEhEgY,EAAU3D,mBAAmB,OAG/B,MAAO,CACLukC,qCCnFW,QACb,MAAM3lC,EAAc3F,KACd,oBAAEkE,EAAF,kBAAuBwB,GAAsB8R,eAAYvT,MACzD,aAAE5D,EAAF,cAAgBF,GAAkBqX,eAAY7R,IAE9C,mBAAEmR,GAAuBW,KAMzB8zB,EAAwBvvB,IAC5B,MAAMwvB,EAAgBv3B,GAChBw3B,EAAiBx3B,GAAgB9T,EAAc5K,OAC/C,KAAE+a,EAAF,KAAQC,EAAR,KAAcC,EAAd,KAAoBC,GAASC,GAAoBhL,EAAkBnQ,OAEnE+nB,EAA+B/b,KAAKG,MAAMH,KAAKC,UAAUnB,EAAa9K,MAAM+I,WAClF,IAAK,MAAM4E,KAAWoa,EACpB,GAAKpZ,EAAoB3O,MAAMsL,SAASqC,EAAQ7E,IAAhD,CAGA,GAAI2d,IAAY/P,EAAqBy/B,OAAQ,CAC3C,MAAMt7B,EAAUI,GAAQC,EAAOD,GAAQ,EAAIi7B,EAAiB,EACtDt7B,EAAUG,GAAQC,EAAOD,GAAQ,EAAIk7B,EAAgB,EAC3DtoC,EAAQ1E,IAAM0E,EAAQ1E,IAAM4R,EAC5BlN,EAAQ3E,KAAO2E,EAAQ3E,KAAO4R,EAIhC,GAAI6L,IAAY/P,EAAqBsU,IAAK,CACxC,MAAMnQ,EAAUI,EAAO,EACvBtN,EAAQ1E,IAAM0E,EAAQ1E,IAAM4R,OAIzB,GAAI4L,IAAY/P,EAAqB0/B,SAAU,CAClD,MAAMv7B,EAAUI,GAAQC,EAAOD,GAAQ,EAAIi7B,EAAiB,EAC5DvoC,EAAQ1E,IAAM0E,EAAQ1E,IAAM4R,OAIzB,GAAI4L,IAAY/P,EAAqBuU,OAAQ,CAChD,MAAMpQ,EAAUK,EAAOg7B,EACvBvoC,EAAQ1E,IAAM0E,EAAQ1E,IAAM4R,OAIzB,GAAI4L,IAAY/P,EAAqBmT,KAAM,CAC9C,MAAMjP,EAAUG,EAAO,EACvBpN,EAAQ3E,KAAO2E,EAAQ3E,KAAO4R,OAI3B,GAAI6L,IAAY/P,EAAqB2/B,WAAY,CACpD,MAAMz7B,EAAUG,GAAQC,EAAOD,GAAQ,EAAIk7B,EAAgB,EAC3DtoC,EAAQ3E,KAAO2E,EAAQ3E,KAAO4R,OAI3B,GAAI6L,IAAY/P,EAAqBoT,MAAO,CAC/C,MAAMlP,EAAUI,EAAOi7B,EACvBtoC,EAAQ3E,KAAO2E,EAAQ3E,KAAO4R,GAIlCxK,EAAYvD,YAAY,CAAE9D,SAAUgf,IACpCxG,KAGF,MAAO,CACLy0B,yBC1EY5X,OACd,MAAMkY,EAAcnwB,sBAAS,KAC3B,GAAIiY,EAAOp+B,MAAO,CAChB,MAAM,EAAE8kB,EAAF,EAAKuZ,EAAL,KAAQG,EAAR,MAAcp5B,GAAUg5B,EAAOp+B,MACrC,MAAO,GAAG8kB,OAAOuZ,OAAOG,OAAUp5B,IAEpC,MAAO,KAGT,MAAO,CACLkxC,gBCXW,IAAC9V,EAAiCh3B,KAC/C,MAAM+sC,EAAYpwB,sBAAS,KACzB,IAAIpc,EAAQ,GAMZ,OAJIy2B,EAAMxgC,OAASwJ,EAAMxJ,MAAO+J,EAAQ,kCAC/BP,EAAMxJ,MAAO+J,EAAQ,kBACrBy2B,EAAMxgC,QAAO+J,EAAQ,mBAEvBA,IAGT,MAAO,CACLwsC,eRfJ,SAAkBzH,GAChBA,iBACAA,uBACAA,wBAHF,CAAkBA,QAAa,KAM/B,SAAkBC,GAChBA,iBACAA,2BACAA,uBACAA,yBACAA,yBACAA,uBACAA,iBAPF,CAAkBA,QAAS,KAUpB,MAAMyH,GAAY,CACvBC,KAAM,CACJl3C,KAAM,KACNkD,KAAMqsC,GAAc4H,KACpBp9B,OAAQ,IACRvP,MAAO,IAET4sC,MAAO,CACLp3C,KAAM,MACNkD,KAAMqsC,GAAc8H,QACpB7sC,MAAO,sDACP8sC,WAAY,CAACrvC,EAAeC,IACnB,WAAmB,GAARD,SAAmBA,KAAkB,GAATC,OAAkBD,KAASC,SAAcA,OAG3FqvC,MAAO,CACLv3C,KAAM,MACNkD,KAAMqsC,GAAc8H,QACpB7sC,MAAO,gEACP8sC,WAAY,CAACrvC,EAAeC,IACnB,WAAmB,GAARD,SAAmBA,KAAkB,GAATC,OAAkBD,KAASC,OAAoB,GAARD,KAAeC,SAAuB,GAATA,OAGtHsvC,UAAW,CACTx3C,KAAM,OACNkD,KAAMqsC,GAAc4H,KACpBp9B,OAAQ,OACRvP,MAAO,4CAETitC,QAAS,CACPz3C,KAAM,KACNkD,KAAMqsC,GAAcmI,QACpBltC,MAAO,+BAETmtC,SAAU,CACR33C,KAAM,MACNkD,KAAMqsC,GAAc8H,QACpB7sC,MAAO,sCACP8sC,WAAY,CAACrvC,EAAeC,IACnB,KAAa,GAARD,WAAqBC,OAAYD,KAASC,OAG1D0vC,UAAW,CACT53C,KAAM,OACNkD,KAAMqsC,GAAc8H,QACpB7sC,MAAO,oCACP8sC,WAAY,CAACrvC,EAAeC,IACnB,KAAa,GAARD,KAAeC,aAAkBD,SAGjD4vC,UAAW,CACT73C,KAAM,OACNkD,KAAMqsC,GAAc8H,QACpB7sC,MAAO,qCACP8sC,WAAY,CAACrvC,EAAeC,IACnB,aAAaA,OAAYD,KAASC,OAG7C4vC,QAAS,CACP93C,KAAM,KACNkD,KAAMqsC,GAAc8H,QACpB7sC,MAAO,8CACP8sC,WAAY,CAACrvC,EAAeC,IACnB,KAAa,GAARD,SAAmBA,KAAkB,GAATC,OAA0B,GAARD,KAAeC,SAAuB,GAATA,OAG3F6vC,SAAU,CACR/3C,KAAM,MACNkD,KAAMqsC,GAAc8H,QACpB7sC,MAAO,wDACP8sC,WAAY,CAACrvC,EAAeC,IACnB,KAAa,GAARD,SAAmBA,KAAS,IAAOC,OAAY,IAAOD,KAASC,OAAY,IAAOD,KAASC,SAAc,IAAOA,OAGhI8vC,QAAS,CACPh4C,KAAM,MACNkD,KAAMqsC,GAAc8H,QACpB7sC,MAAO,gEACP8sC,WAAY,CAACrvC,EAAeC,IACnB,KAAa,GAARD,SAA2B,GAARA,SAAmBA,KAAkB,GAATC,OAA0B,GAARD,KAAeC,OAAoB,GAARD,KAAeC,SAAuB,GAATA,OAGzI+vC,SAAU,CACRj4C,KAAM,MACNkD,KAAMqsC,GAAc8H,QACpB7sC,MAAO,0EACP8sC,WAAY,CAACrvC,EAAeC,IACnB,KAAa,GAARD,SAA2B,GAARA,KAAwB,GAATC,OAAkBD,KAAkB,GAATC,OAA0B,IAARD,KAAgBC,OAAoB,IAARD,KAAgBC,SAAuB,GAATA,OAA0B,GAARD,KAAwB,GAATC,OAG1LgwC,QAAS,CACPl4C,KAAM,MACNkD,KAAMqsC,GAAc8H,QACpB7sC,MAAO,kFACP8sC,WAAY,CAACrvC,EAAeC,IACnB,KAAa,GAARD,SAA2B,GAARA,SAAmBA,KAAkB,GAATC,OAAkBD,KAAkB,GAATC,OAA0B,GAARD,KAAeC,OAAoB,GAARD,KAAeC,SAAuB,GAATA,SAA6B,GAATA,OAGxLiwC,QAAS,CACPn4C,KAAM,KACNkD,KAAMqsC,GAAc8H,QACpB7sC,MAAO,+DACP8sC,WAAY,CAACrvC,EAAeC,IACnB,KAAa,IAARD,SAAoBA,KAAkB,GAATC,OAA0B,IAARD,KAAgBC,SAAcA,OAAoB,IAARD,KAAyB,GAATC,aAGzH6Y,MAAO,CACL/gB,KAAM,IACNkD,KAAMqsC,GAAc8H,QACpB7sC,MAAO,sDACP8sC,WAAY,CAACrvC,EAAeC,IACnB,WAAmB,IAARD,SAAoBA,KAAkB,GAATC,OAA0B,IAARD,KAAgBC,SAAcA,OAGnGkwC,MAAO,CACLp4C,KAAM,KACNkD,KAAMqsC,GAAc8H,QACpB7sC,MAAO,wEACP8sC,WAAY,CAACrvC,EAAeC,IACnB,OAAgB,GAATA,OAA0B,GAARD,KAAwB,GAATC,OAA0B,GAARD,SAAmBA,KAAkB,GAATC,OAA0B,GAARD,KAAeC,OAAoB,GAARD,KAAwB,GAATC,SAA6B,GAATA,OAGjLmwC,cAAe,CACbr4C,KAAM,QACNkD,KAAMqsC,GAAc8H,QACpB7sC,MAAO,8CACP8sC,WAAY,CAACrvC,EAAeC,IACnB,KAAa,GAARD,SAAmBA,SAAqB,GAARA,KAAeC,SAAcA,OAG7EowC,eAAgB,CACdt4C,KAAM,SACNkD,KAAMqsC,GAAc8H,QACpB7sC,MAAO,8CACP8sC,WAAY,CAACrvC,EAAeC,IACnB,KAAa,GAARD,KAAeC,OAAYD,KAASC,OAAoB,GAARD,eAGhEswC,UAAW,CACTv4C,KAAM,KACNkD,KAAMqsC,GAAc8H,QACpB7sC,MAAO,8CACP8sC,WAAY,CAACrvC,EAAeC,IACnB,KAAa,IAARD,SAA4B,IAARA,SAAoBA,KAASC,SAAcA,OAG/EswC,WAAY,CACVx4C,KAAM,MACNkD,KAAMqsC,GAAc8H,QACpB7sC,MAAO,8CACP8sC,WAAY,CAACrvC,EAAeC,IACnB,WAAWD,SAAqB,IAARA,KAAgBC,OAAoB,IAARD,KAAgBC,QSnKjEk5B,WACd,MAAMqX,EAAY7xB,sBAAS,KACzB,IAAKwa,EAAK3gC,MAAO,OAAOw2C,GAAUC,KAClC,MAAM7V,EAAQD,EAAK3gC,MAAM4gC,OAASkO,GAAc4H,KAEhD,OAAOF,GAAU5V,KAGbqX,EAAc9xB,sBAAS,KAC3B,IAAKwa,EAAK3gC,MACR,MAAO,CACLiJ,IAAK,IACLD,KAAM,IACNxB,MAAO,OACPC,OAAQ,QAIZ,MAAO1D,EAAO8F,GAAO82B,EAAK3gC,MAAMgc,MAE1Bi3B,GAAcppC,EAAI,GAAK9F,EAAM,IAAM,IACnCmvC,GAAerpC,EAAI,GAAK9F,EAAM,IAAM,IACpCiF,EAAOjF,EAAM,GAAKkvC,EAClBhqC,EAAMlF,EAAM,GAAKmvC,EAEvB,MAAO,CACLlqC,MAAOA,EAAO,IACdC,KAAMA,EAAM,IACZzB,MAAO,IAAMyrC,EAAa,IAC1BxrC,OAAQ,IAAMyrC,EAAc,OAIhC,MAAO,CACL8E,YACAC,gBCpCYvX,OACd,MAAMh4B,EAASyd,sBAAS,KACtB,IAAKua,EAAQ1gC,MAAO,MAAO,GAC3B,IAAI0I,EAAS,GACb,IAAK,MAAMpI,KAAO1C,OAAOiX,KAAK6rB,EAAQ1gC,OACpC0I,GAAU,GAAGpI,KAAOogC,EAAQ1gC,MAAMM,OAEpC,OAAOoI,IAGT,MAAO,CACLA,WCVY6B,OACd,MAAM2tC,EAAe/xB,sBAAS,wCAAM5b,EAAQvK,aAAd,aAAM,EAAewH,aAArB,QAA8B,IACtD2wC,EAAehyB,sBAAS,kBAAM,UAAA5b,EAAQvK,aAAR,eAAe+J,QAAS,UACtDquC,EAAejyB,sBAAS,kBAAM,UAAA5b,EAAQvK,aAAR,eAAeoF,QAAS,YAE5D,MAAO,CACL8yC,eACAC,eACAC,iBCTJ,MACM1U,GAAa,CAAC,QAAS,UACvBE,GAAa,CAAC,KAAM,KAAM,QAAS,SAAU,SAAU,eAAgB,oBAOjDG,oCAAiB,CAC3CC,OAAQ,mBACRl3B,MAAO,CACPtF,MAAO,CACL/E,KAAM41C,OACNC,UAAU,GAEZ7wC,OAAQ,CACNhF,KAAM41C,OACNC,UAAU,GAEZ/tC,QAAS,CACP9H,KAAM7E,QAER0b,OAAQ,CACN7W,KAAMw2B,OACN8L,QAAS,MAGXd,MAAMC,GAER,MAAMp3B,EAAQo3B,GAIR,aACJgU,EADI,aAEJC,EAFI,aAGJC,GACEG,GAAkBC,mBAAM1rC,EAAO,YAEnC,MAAO,CAACq3B,EAAUC,IACRF,EAAQ35B,SACX85B,yBAAcC,gCAAoB,MAAO,CACxChkC,IAAK,EACLqjC,MAAO,qBACP8U,SAAU,UACVjxC,MAAO08B,EAAQ18B,MACfC,OAAQy8B,EAAQz8B,QACf,CACDi9B,gCAAoB,OAAQ,CAC1B,gBAAiB,qBACjB,iBAAkB,OAClB,oBAAqB,IACrBt7B,KAAM,cACN8uB,GAAIgM,EAAQ5qB,OACZ8e,GAAI8L,EAAQ5qB,OACZ9R,MAAO08B,EAAQ18B,MACfC,OAAQy8B,EAAQz8B,OAChBixC,OAAQjU,mBAAO2T,GACf,eAAgB3T,mBAAOyT,GACvB,mBAA6C,WAAzBzT,mBAAO0T,GAA6B,OAAS,OAChE,KAAM,EAAGvU,KACX,EAAGF,KACNiV,gCAAoB,IAAI,M,UC5D9B,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMjV,GAAa,CAAC,QAAS,UACvBE,GAAa,CAAC,KAAM,KAAM,KAAM,KAAM,SAAU,eAAgB,oBAO1CG,oCAAiB,CAC3CC,OAAQ,sBACRl3B,MAAO,CACPtF,MAAO,CACL/E,KAAM41C,OACNC,UAAU,GAEZ7wC,OAAQ,CACNhF,KAAM41C,OACNC,UAAU,GAEZ/tC,QAAS,CACP9H,KAAM7E,SAGRqmC,MAAMC,GAER,MAAMp3B,EAAQo3B,GAIR,aACJgU,EADI,aAEJC,EAFI,aAGJC,GACEG,GAAkBC,mBAAM1rC,EAAO,YAEnC,MAAO,CAACq3B,EAAUC,IACRF,EAAQ35B,SACX85B,yBAAcC,gCAAoB,MAAO,CACxChkC,IAAK,EACLqjC,MAAO,wBACP8U,SAAU,UACVjxC,MAAO08B,EAAQ18B,MACfC,OAAQy8B,EAAQz8B,QACf,CACDi9B,gCAAoB,UAAW,CAC7B,gBAAiB,qBACjB,iBAAkB,OAClB,oBAAqB,IACrBt7B,KAAM,cACN4uB,GAAIkM,EAAQ18B,MAAQ,EACpBywB,GAAIiM,EAAQz8B,OAAS,EACrBywB,GAAIgM,EAAQ18B,MAAQ,EACpB4wB,GAAI8L,EAAQz8B,OAAS,EACrBixC,OAAQjU,mBAAO2T,GACf,eAAgB3T,mBAAOyT,GACvB,mBAA6C,WAAzBzT,mBAAO0T,GAA6B,OAAS,OAChE,KAAM,EAAGvU,KACX,EAAGF,KACNiV,gCAAoB,IAAI,M,WCxD9B,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMjV,GAAa,CAAC,QAAS,UACvBE,GAAa,CAAC,IAAK,SAAU,eAAgB,oBAOvBG,oCAAiB,CAC3CC,OAAQ,sBACRl3B,MAAO,CACPtF,MAAO,CACL/E,KAAM41C,OACNC,UAAU,GAEZ7wC,OAAQ,CACNhF,KAAM41C,OACNC,UAAU,GAEZ/tC,QAAS,CACP9H,KAAM7E,QAERi5C,WAAY,CACVp0C,KAAMm2C,SACNN,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,GAIR,aACJgU,EADI,aAEJC,EAFI,aAGJC,GACEG,GAAkBC,mBAAM1rC,EAAO,YAEnC,MAAO,CAACq3B,EAAUC,IACRF,EAAQ35B,SACX85B,yBAAcC,gCAAoB,MAAO,CACxChkC,IAAK,EACLqjC,MAAO,wBACP8U,SAAU,UACVjxC,MAAO08B,EAAQ18B,MACfC,OAAQy8B,EAAQz8B,QACf,CACDi9B,gCAAoB,OAAQ,CAC1B,gBAAiB,qBACjB,iBAAkB,OAClB,oBAAqB,IACrBt7B,KAAM,cACN9J,EAAG4kC,EAAQ2S,WAAW3S,EAAQ18B,MAAO08B,EAAQz8B,QAC7CixC,OAAQjU,mBAAO2T,GACf,eAAgB3T,mBAAOyT,GACvB,mBAA6C,WAAzBzT,mBAAO0T,GAA6B,OAAS,OAChE,KAAM,EAAGvU,KACX,EAAGF,KACNiV,gCAAoB,IAAI,M,UCzD9B,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMjV,GAAa,CAAEC,MAAO,iBAWAI,oCAAiB,CAC3CC,OAAQ,QACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIRvD,EAAOxa,sBAAS,IAAMrZ,EAAM+rC,YAAYlY,OACxC,UAAEqX,GAAcc,GAAanY,GAEnC,MAAO,CAACwD,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC/B,SAA3Be,mBAAOuT,GAAWv1C,MACd4hC,yBAAc0U,yBAAaC,GAAkB,CAC5C14C,IAAK,EACLkH,MAAO08B,EAAQ2U,YAAYrxC,MAC3BC,OAAQy8B,EAAQ2U,YAAYpxC,OAC5B6R,OAAQmrB,mBAAOuT,GAAW1+B,OAC1B/O,QAAS25B,EAAQ2U,YAAYtuC,SAC5B,KAAM,EAAG,CAAC,QAAS,SAAU,SAAU,aACd,YAA3Bk6B,mBAAOuT,GAAWv1C,MAChB4hC,yBAAc0U,yBAAaE,GAAqB,CAC/C34C,IAAK,EACLkH,MAAO08B,EAAQ2U,YAAYrxC,MAC3BC,OAAQy8B,EAAQ2U,YAAYpxC,OAC5B8C,QAAS25B,EAAQ2U,YAAYtuC,SAC5B,KAAM,EAAG,CAAC,QAAS,SAAU,aACJ,YAA3Bk6B,mBAAOuT,GAAWv1C,MAChB4hC,yBAAc0U,yBAAaG,GAAqB,CAC/C54C,IAAK,EACLkH,MAAO08B,EAAQ2U,YAAYrxC,MAC3BC,OAAQy8B,EAAQ2U,YAAYpxC,OAC5B8C,QAAS25B,EAAQ2U,YAAYtuC,QAC7BssC,WAAYpS,mBAAOuT,GAAWnB,YAC7B,KAAM,EAAG,CAAC,QAAS,SAAU,UAAW,gBAC3C8B,gCAAoB,IAAI,SCrDpC,MAAM,GAAc,GAEL,UCFf,MAAMhT,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAC,OACdE,GAAa,CAAC,OACdC,GAAa,CAAC,eACdC,GAA2B6B,GAAa,IAAmBjB,gCAAoB,MAAO,CAC1Fl9B,MAAO,KACPC,OAAQ,KACR2B,KAAM,OACNsvC,OAAQ,QACP,CACYhU,gCAAoB,OAAQ,CACvC,eAAgB,MAChB,kBAAmB,aACnBplC,EAAG,uDAEH,IACEwmC,GAAa,CACjBhC,IAEIiC,GAAa,CAAC,eACdC,GAA2BL,GAAa,IAAmBjB,gCAAoB,MAAO,CAC1Fl9B,MAAO,KACPC,OAAQ,KACR2B,KAAM,OACNsvC,OAAQ,QACP,CACYhU,gCAAoB,OAAQ,CACvC,eAAgB,MAChB,kBAAmB,aACnBplC,EAAG,kCAEH,IACE2mC,GAAa,CACjBD,IAW0BjC,oCAAiB,CAC3CC,OAAQ,mBACRl3B,MAAO,CACP8Q,IAAK,CACHnb,KAAMw2B,OACNqf,UAAU,GAEZa,SAAU,CACR12C,KAAM7E,QAERw7C,SAAU,CACR32C,KAAMw2B,OACNqf,UAAU,GAEZ9wC,MAAO,CACL/E,KAAM41C,OACNC,UAAU,GAEZ7wC,OAAQ,CACNhF,KAAM41C,OACNC,UAAU,GAEZrvC,IAAK,CACHxG,KAAM41C,OACNC,UAAU,GAEZtvC,KAAM,CACJvG,KAAM41C,OACNC,UAAU,GAEZ/uC,OAAQ,CACN9G,KAAM41C,OACNC,UAAU,IAGZtT,MAAO,CAAC,QACRf,MAAMC,GAAS,KAAEe,IAInB,MAAMn4B,EAAQo3B,GAMR,YAAEl1B,GAAgBiT,eAAYvT,MAC9B,qBAAE+G,GAAyBwM,eAAY5M,KAEvCgkC,EAA2B/e,iBAAI,CACnCrxB,IAAK,IACLD,KAAM,MAEFswC,EAAqBhf,kBAAI,GACzBif,EAAejf,iBAA+B,MAG9Ckf,EAA2B,KAC/B,MAAOz1C,EAAO8F,GAAOiD,EAAMqsC,SAAWrsC,EAAMqsC,SAASn9B,MAAQ,CAAC,CAAC,EAAG,GAAI,CAAC,IAAK,MAEtEi3B,GAAcppC,EAAI,GAAK9F,EAAM,IAAM,IACnCmvC,GAAerpC,EAAI,GAAK9F,EAAM,IAAM,IACpCiF,EAAOjF,EAAM,GAAKkvC,EAClBhqC,EAAMlF,EAAM,GAAKmvC,EAEvB,MAAO,CAAED,aAAYC,cAAalqC,OAAMC,QAIpCgvC,EAAc9xB,sBAAS,KAC3B,MAAM,WAAE8sB,EAAF,YAAcC,EAAd,KAA2BlqC,EAA3B,IAAiCC,GAAQuwC,IAC/C,MAAO,CACLxwC,MAAOA,EACPC,KAAMA,EACNzB,MAAO,IAAMyrC,EACbxrC,OAAQ,IAAMyrC,KAKZuG,EAAyBtzB,sBAAS,KAC/B,CACLld,IAAKgvC,EAAYj4C,MAAMiJ,IAAM,IAC7BD,KAAMivC,EAAYj4C,MAAMgJ,KAAO,IAC/BxB,MAAOywC,EAAYj4C,MAAMwH,MAAQ,IACjCC,OAAQwwC,EAAYj4C,MAAMyH,OAAS,OAKjCiyC,EAAwBpf,iBAAI,CAChCrxB,IAAK,EACLD,KAAM,EACNxB,MAAO,EACPC,OAAQ,IAIJkyC,EAA6BxzB,sBAAS,KAC1C,MAAM,IAAEld,EAAF,KAAOD,EAAP,MAAaxB,EAAb,OAAoBC,GAAWiyC,EAAsB15C,MAC3D,MAAO,CACLiJ,IAAKA,EAAM,IACXD,KAAMA,EAAO,IACbxB,MAAOA,EAAQ,IACfC,OAAQA,EAAS,OAKfmyC,EAAsBzzB,sBAAS,KACnC,MAAM0zB,EAAc5B,EAAYj4C,MAAMwH,MAChCsyC,EAAe7B,EAAYj4C,MAAMyH,QAEjC,IAAEwB,EAAF,KAAOD,EAAP,MAAaxB,EAAb,OAAoBC,GAAWiyC,EAAsB15C,MAE3D,MAAO,CACLgJ,KAAe,IAAMxB,GAAdwB,EAAuB,IAC9BC,IAAa,IAAMxB,GAAbwB,EAAuB,IAC7BzB,MAAOqyC,EAAcryC,EAAQ,IAAM,IACnCC,OAAQqyC,EAAeryC,EAAS,IAAM,OAKpCsyC,EAAmB,KACvB,MAAM,KAAE/wC,EAAF,IAAQC,GAAQuwC,IACtBE,EAAsB15C,MAAQ,CAC5BgJ,KAAMA,EACNC,IAAKA,EACLzB,MAAO,IACPC,OAAQ,KAGV4xC,EAAyBr5C,MAAQ,CAC/BiJ,KAAMA,EAAM,IACZD,MAAOA,EAAO,MAKZgxC,EAAa,KACjB,GAAIV,EAAmBt5C,MAAO,OAE9B,IAAKu5C,EAAav5C,MAEhB,YADAilC,EAAK,OAAQ,MAIf,MAAM,KAAEj8B,EAAF,IAAQC,GAAQuwC,IAEhBv1B,EAAW,CACfjb,MAAO0wC,EAAsB15C,MAAMgJ,KAAOA,GAAQ,IAAM8D,EAAMtF,MAC9DyB,KAAMywC,EAAsB15C,MAAMiJ,IAAMA,GAAO,IAAM6D,EAAMrF,OAC3DD,OAAQkyC,EAAsB15C,MAAMwH,MAAQ,KAAO,IAAMsF,EAAMtF,MAC/DC,QAASiyC,EAAsB15C,MAAMyH,OAAS,KAAO,IAAMqF,EAAMrF,QAG7DwyC,EAAsC,CAC1Cj+B,MAAOu9B,EAAav5C,MACpBikB,YAEFghB,EAAK,OAAQgV,IAITC,EAAoB3hC,IACxB,MAAMjY,EAAMiY,EAAEjY,IAAIquB,cACdruB,IAAQwW,GAAK6Y,OAAOqqB,KAG1B/pB,uBAAU,KACR8pB,IACAnyC,SAAS4W,iBAAiB,UAAW07B,KAEvChqB,yBAAY,KACVtoB,SAASuoB,oBAAoB,UAAW+pB,KAI1C,MAAMC,EAAc,KAClB,MAAMC,EAAc,CAClBpxC,KAAM/B,SAAS2yC,EAAoB55C,MAAMgJ,MACzCC,IAAKhC,SAAS2yC,EAAoB55C,MAAMiJ,KACxCzB,MAAOP,SAAS2yC,EAAoB55C,MAAMwH,OAC1CC,OAAQR,SAAS2yC,EAAoB55C,MAAMyH,SAGvCwrC,EAAa,IAAMmH,EAAY5yC,MAC/B0rC,EAAc,IAAMkH,EAAY3yC,OAEhC1D,EAA0B,EAC7Bq2C,EAAYpxC,KAAOiqC,GACnBmH,EAAYnxC,IAAMiqC,GAEfrpC,EAAwB,CACf,IAAbopC,EAAmBlvC,EAAM,GACX,IAAdmvC,EAAoBnvC,EAAM,IAG5Bw1C,EAAav5C,MAAQ,CAAC+D,EAAO8F,IAIzBwwC,EAAiB9hC,IACrB+gC,EAAmBt5C,OAAQ,EAC3B,IAAI8pC,GAAc,EAElB,MAAMC,EAAaxxB,EAAEyxB,MACfC,EAAa1xB,EAAE2xB,MACfoQ,EAAiBrC,EAAYj4C,MAC7Bu6C,EAAiB,IAAKb,EAAsB15C,OAElD4H,SAASyiC,YAAc9xB,IACrB,IAAKuxB,EAAa,OAElB,MAAMQ,EAAe/xB,EAAEyxB,MACjBO,EAAehyB,EAAE2xB,MAEvB,IAAIgI,GAAS5H,EAAeP,GAAc/6B,EAAYhP,MAAQ8M,EAAMtF,MAAQ,IACxE2qC,GAAS5H,EAAeN,GAAcj7B,EAAYhP,MAAQ8M,EAAMrF,OAAS,IAEzEqF,EAAMvD,OAAS,IAAMuD,EAAMvD,OAAS,MACtC2oC,GAAS3H,EAAeN,GAAcj7B,EAAYhP,MAAQ8M,EAAMtF,MAAQ,IACxE2qC,IAAU7H,EAAeP,GAAc/6B,EAAYhP,MAAQ8M,EAAMrF,OAAS,MAEvEqF,EAAMvD,QAAU,KAAOuD,EAAMvD,QAAU,KAASuD,EAAMvD,SAAW,KAAOuD,EAAMvD,SAAW,OAC5F2oC,GAASA,EACTC,GAASA,GAEPrlC,EAAMvD,QAAU,KAAOuD,EAAMvD,QAAU,KACzC2oC,IAAU3H,EAAeN,GAAcj7B,EAAYhP,MAAQ8M,EAAMtF,MAAQ,IACzE2qC,GAAS7H,EAAeP,GAAc/6B,EAAYhP,MAAQ8M,EAAMrF,OAAS,KAG3E,IAAI0sC,EAAaoG,EAAevxC,KAAOkpC,EACnCkC,EAAYmG,EAAetxC,IAAMkpC,EAEjCgC,EAAa,EAAGA,EAAa,EACxBA,EAAaoG,EAAe/yC,MAAQ8yC,EAAe9yC,QAC1D2sC,EAAamG,EAAe9yC,MAAQ+yC,EAAe/yC,OAEjD4sC,EAAY,EAAGA,EAAY,EACtBA,EAAYmG,EAAe9yC,OAAS6yC,EAAe7yC,SAC1D2sC,EAAYkG,EAAe7yC,OAAS8yC,EAAe9yC,QAGrDiyC,EAAsB15C,MAAQ,IACzB05C,EAAsB15C,MACzBgJ,KAAMmrC,EACNlrC,IAAKmrC,IAITxsC,SAAS4iC,UAAY,KACnBV,GAAc,EACdliC,SAASyiC,YAAc,KACvBziC,SAAS4iC,UAAY,KAErB2P,IAEA/3B,WAAW,KACTk3B,EAAmBt5C,OAAQ,GAC1B,KAKDw6C,EAAiB,CAACjiC,EAAe9V,KACrC62C,EAAmBt5C,OAAQ,EAC3B,IAAI8pC,GAAc,EAElB,MAAM2Q,EAAW,GAAK3tC,EAAMtF,MAAQ,IAC9BkzC,EAAY,GAAK5tC,EAAMrF,OAAS,IAEhCsiC,EAAaxxB,EAAEyxB,MACfC,EAAa1xB,EAAE2xB,MACfoQ,EAAiBrC,EAAYj4C,MAC7Bu6C,EAAiB,IAAKb,EAAsB15C,OAE5C4vC,EAAc8J,EAAsB15C,MAAMwH,MAAQkyC,EAAsB15C,MAAMyH,OAEpFG,SAASyiC,YAAc9xB,IACrB,IAAKuxB,EAAa,OAElB,MAAMQ,EAAe/xB,EAAEyxB,MACjBO,EAAehyB,EAAE2xB,MAEvB,IAqBIiK,EAAYC,EAAWuG,EAAaC,EArBpC1I,GAAS5H,EAAeP,GAAc/6B,EAAYhP,MAAQ8M,EAAMtF,MAAQ,IACxE2qC,GAAS5H,EAAeN,GAAcj7B,EAAYhP,MAAQ8M,EAAMrF,OAAS,IAEzEqF,EAAMvD,OAAS,IAAMuD,EAAMvD,OAAS,MACtC2oC,GAAS3H,EAAeN,GAAcj7B,EAAYhP,MAAQ8M,EAAMtF,MAAQ,IACxE2qC,IAAU7H,EAAeP,GAAc/6B,EAAYhP,MAAQ8M,EAAMrF,OAAS,MAEvEqF,EAAMvD,QAAU,KAAOuD,EAAMvD,QAAU,KAASuD,EAAMvD,SAAW,KAAOuD,EAAMvD,SAAW,OAC5F2oC,GAASA,EACTC,GAASA,GAEPrlC,EAAMvD,QAAU,KAAOuD,EAAMvD,QAAU,KACzC2oC,IAAU3H,EAAeN,GAAcj7B,EAAYhP,MAAQ8M,EAAMtF,MAAQ,IACzE2qC,GAAS7H,EAAeP,GAAc/6B,EAAYhP,MAAQ8M,EAAMrF,OAAS,KAGvEgO,EAAqBzV,QACnByC,IAASmU,EAAsB83B,cAAgBjsC,IAASmU,EAAsBg4B,WAAUuD,EAAQD,EAAQtC,GACxGntC,IAASmU,EAAsB+3B,aAAelsC,IAASmU,EAAsBi4B,YAAWsD,GAASD,EAAQtC,IAK3GntC,IAASmU,EAAsBg4B,UAC7B2L,EAAevxC,KAAOkpC,EAAQ,IAChCA,GAASqI,EAAevxC,MAEtBuxC,EAAetxC,IAAMkpC,EAAQ,IAC/BA,GAASoI,EAAetxC,KAEtBsxC,EAAe/yC,MAAQ0qC,EAAQuI,IACjCvI,EAAQqI,EAAe/yC,MAAQizC,GAE7BF,EAAe9yC,OAAS0qC,EAAQuI,IAClCvI,EAAQoI,EAAe9yC,OAASizC,GAElCC,EAAcJ,EAAe/yC,MAAQ0qC,EACrC0I,EAAeL,EAAe9yC,OAAS0qC,EACvCgC,EAAaoG,EAAevxC,KAAOkpC,EACnCkC,EAAYmG,EAAetxC,IAAMkpC,GAE1B1vC,IAASmU,EAAsBi4B,WAClC0L,EAAevxC,KAAOuxC,EAAe/yC,MAAQ0qC,EAAQoI,EAAe9yC,QACtE0qC,EAAQoI,EAAe9yC,OAAS+yC,EAAevxC,KAAOuxC,EAAe/yC,QAEnE+yC,EAAetxC,IAAMkpC,EAAQ,IAC/BA,GAASoI,EAAetxC,KAEtBsxC,EAAe/yC,MAAQ0qC,EAAQuI,IACjCvI,EAAQuI,EAAWF,EAAe/yC,OAEhC+yC,EAAe9yC,OAAS0qC,EAAQuI,IAClCvI,EAAQoI,EAAe9yC,OAASizC,GAElCC,EAAcJ,EAAe/yC,MAAQ0qC,EACrC0I,EAAeL,EAAe9yC,OAAS0qC,EACvCgC,EAAaoG,EAAevxC,KAC5BorC,EAAYmG,EAAetxC,IAAMkpC,GAE1B1vC,IAASmU,EAAsB+3B,aAClC4L,EAAevxC,KAAOkpC,EAAQ,IAChCA,GAASqI,EAAevxC,MAEtBuxC,EAAetxC,IAAMsxC,EAAe9yC,OAAS0qC,EAAQmI,EAAe7yC,SACtE0qC,EAAQmI,EAAe7yC,QAAU8yC,EAAetxC,IAAMsxC,EAAe9yC,SAEnE8yC,EAAe/yC,MAAQ0qC,EAAQuI,IACjCvI,EAAQqI,EAAe/yC,MAAQizC,GAE7BF,EAAe9yC,OAAS0qC,EAAQuI,IAClCvI,EAAQuI,EAAYH,EAAe9yC,QAErCkzC,EAAcJ,EAAe/yC,MAAQ0qC,EACrC0I,EAAeL,EAAe9yC,OAAS0qC,EACvCgC,EAAaoG,EAAevxC,KAAOkpC,EACnCkC,EAAYmG,EAAetxC,KAEpBxG,IAASmU,EAAsB83B,cAClC6L,EAAevxC,KAAOuxC,EAAe/yC,MAAQ0qC,EAAQoI,EAAe9yC,QACtE0qC,EAAQoI,EAAe9yC,OAAS+yC,EAAevxC,KAAOuxC,EAAe/yC,QAEnE+yC,EAAetxC,IAAMsxC,EAAe9yC,OAAS0qC,EAAQmI,EAAe7yC,SACtE0qC,EAAQmI,EAAe7yC,QAAU8yC,EAAetxC,IAAMsxC,EAAe9yC,SAEnE8yC,EAAe/yC,MAAQ0qC,EAAQuI,IACjCvI,EAAQuI,EAAWF,EAAe/yC,OAEhC+yC,EAAe9yC,OAAS0qC,EAAQuI,IAClCvI,EAAQuI,EAAYH,EAAe9yC,QAErCkzC,EAAcJ,EAAe/yC,MAAQ0qC,EACrC0I,EAAeL,EAAe9yC,OAAS0qC,EACvCgC,EAAaoG,EAAevxC,KAC5BorC,EAAYmG,EAAetxC,KAEpBxG,IAASmU,EAAsBoU,KAClCuvB,EAAetxC,IAAMkpC,EAAQ,IAC/BA,GAASoI,EAAetxC,KAEtBsxC,EAAe9yC,OAAS0qC,EAAQuI,IAClCvI,EAAQoI,EAAe9yC,OAASizC,GAElCC,EAAcJ,EAAe/yC,MAC7BozC,EAAeL,EAAe9yC,OAAS0qC,EACvCgC,EAAaoG,EAAevxC,KAC5BorC,EAAYmG,EAAetxC,IAAMkpC,GAE1B1vC,IAASmU,EAAsBqU,QAClCsvB,EAAetxC,IAAMsxC,EAAe9yC,OAAS0qC,EAAQmI,EAAe7yC,SACtE0qC,EAAQmI,EAAe7yC,QAAU8yC,EAAetxC,IAAMsxC,EAAe9yC,SAEnE8yC,EAAe9yC,OAAS0qC,EAAQuI,IAClCvI,EAAQuI,EAAYH,EAAe9yC,QAErCkzC,EAAcJ,EAAe/yC,MAC7BozC,EAAeL,EAAe9yC,OAAS0qC,EACvCgC,EAAaoG,EAAevxC,KAC5BorC,EAAYmG,EAAetxC,KAEpBxG,IAASmU,EAAsBiT,MAClC0wB,EAAevxC,KAAOkpC,EAAQ,IAChCA,GAASqI,EAAevxC,MAEtBuxC,EAAe/yC,MAAQ0qC,EAAQuI,IACjCvI,EAAQqI,EAAe/yC,MAAQizC,GAEjCE,EAAcJ,EAAe/yC,MAAQ0qC,EACrC0I,EAAeL,EAAe9yC,OAC9B0sC,EAAaoG,EAAevxC,KAAOkpC,EACnCkC,EAAYmG,EAAetxC,MAGvBsxC,EAAevxC,KAAOuxC,EAAe/yC,MAAQ0qC,EAAQoI,EAAe9yC,QACtE0qC,EAAQoI,EAAe9yC,OAAS+yC,EAAevxC,KAAOuxC,EAAe/yC,QAEnE+yC,EAAe/yC,MAAQ0qC,EAAQuI,IACjCvI,EAAQuI,EAAWF,EAAe/yC,OAEpCozC,EAAeL,EAAe9yC,OAC9BkzC,EAAcJ,EAAe/yC,MAAQ0qC,EACrCiC,EAAaoG,EAAevxC,KAC5BorC,EAAYmG,EAAetxC,KAG7BywC,EAAsB15C,MAAQ,CAC5BgJ,KAAMmrC,EACNlrC,IAAKmrC,EACL5sC,MAAOmzC,EACPlzC,OAAQmzC,IAIZhzC,SAAS4iC,UAAY,KACnBV,GAAc,EACdliC,SAASyiC,YAAc,KACvBziC,SAAS4iC,UAAY,KAErB2P,IAEA/3B,WAAW,IAAMk3B,EAAmBt5C,OAAQ,EAAO,KAIjD66C,EAAkB10B,sBAAS,KAC/B,MAAMhT,EAAS,UACT5J,EAASuD,EAAMvD,OACrB,OAAIA,GAAU,MAAQA,GAAU,KAAa4J,EAAS,EAC7C5J,EAAS,MAAQA,GAAU,KAAa4J,EAAS,GACjD5J,EAAS,MAAQA,GAAU,MAAc4J,EAAS,GAClD5J,EAAS,OAASA,GAAU,MAAc4J,EAAS,IACnD5J,EAAS,OAASA,IAAW,MAAc4J,EAAS,EACpD5J,GAAU,OAASA,IAAW,MAAc4J,EAAS,GACrD5J,GAAU,OAASA,IAAW,KAAa4J,EAAS,GACpD5J,GAAU,MAAQA,IAAW,KAAa4J,EAAS,IACrDA,EAAS,IAGZ2nC,EAAc,CAClBlkC,EAAsBg4B,SACtBh4B,EAAsBi4B,UACtBj4B,EAAsB+3B,YACtB/3B,EAAsB83B,cAElBqM,EAAa,CACjBnkC,EAAsBoU,IACtBpU,EAAsBqU,OACtBrU,EAAsBiT,KACtBjT,EAAsBkT,OAGxB,MAAO,CAACqa,EAAUC,KAChB,MAAM4W,EAA2BC,8BAAkB,iBAEnD,OAAOC,6BAAiB7W,yBAAcC,gCAAoB,MAAO,CAC/DX,MAAO,qBACP55B,MAAOoxC,4BAAgB9B,EAAyBr5C,QAC/C,CACD0kC,gCAAoB,MAAO,CACzBf,MAAO,aACP/lB,IAAKsmB,EAAQtmB,IACbw9B,WAAW,EACXC,IAAK,GACLtxC,MAAOoxC,4BAAgB1W,mBAAOgV,KAC7B,KAAM,GAAI/V,IACbgB,gCAAoB,MAAO,CACzBf,MAAO,oBACP55B,MAAOoxC,4BAAgB,IAClB1W,mBAAOkV,GACVP,SAAUlV,EAAQkV,YAEnB,CACD1U,gCAAoB,MAAO,CACzBf,MAAO,UACP/lB,IAAKsmB,EAAQtmB,IACbw9B,WAAW,EACXC,IAAK,GACLtxC,MAAOoxC,4BAAgB1W,mBAAOmV,KAC7B,KAAM,GAAIhW,KACZ,GACHc,gCAAoB,MAAO,CACzBf,MAAO,UACP55B,MAAOoxC,4BAAgB1W,mBAAOkV,IAC9B2B,YAAalX,EAAO,KAAOA,EAAO,GAAKmX,2BAAejW,GAAU+U,EAAc/U,GAAS,CAAC,WACvF,EACAjB,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAYsW,EAAcx6B,GACrEokB,gCAAoB,MAAO,CAChCf,MAAO6X,4BAAgB,CAAC,aAAcl7B,EAAOmkB,mBAAOoW,KACpDv6C,IAAKggB,EACLg7B,YAAaC,2BAAejW,GAAUkV,EAAelV,EAAQhlB,GAAQ,CAAC,UACrEwlB,GAAY,GAAIjC,KACjB,MACHQ,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAYuW,EAAaz6B,GACpEokB,gCAAoB,MAAO,CAChCf,MAAO6X,4BAAgB,CAAC,aAAcl7B,EAAOmkB,mBAAOoW,KACpDv6C,IAAKggB,EACLg7B,YAAaC,2BAAejW,GAAUkV,EAAelV,EAAQhlB,GAAQ,CAAC,UACrE2lB,GAAY,GAAIF,KACjB,MACH,KACF,IAAK,CACN,CAACiV,EAA0BhB,S,UCxjB/B,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMtW,GAAa,CAAC,OAkBQK,oCAAiB,CAC3CC,OAAQ,QACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,GAEZjF,cAAe,CACb5wC,KAAMm2C,SACNN,UAAU,GAEZmD,aAAc,CACZh5C,KAAMm2C,WAGR3U,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIR/uB,EAAYzG,IACZ0B,EAAc3F,KACd,sBAAEkF,GAA0BsS,eAAY9M,GAExCumC,EAAYv1B,sBAAS,IAAMxW,EAAsB3P,QAAU8M,EAAM+rC,YAAY/vC,KAE7E,mBAAEyY,GAAuBW,KAEzBkc,EAASjY,sBAAS,IAAMrZ,EAAM+rC,YAAYza,SAC1C,YAAEkY,GAAgBqF,GAAiBvd,GAEnCoC,EAAQra,sBAAS,IAAMrZ,EAAM+rC,YAAYrY,OACzCh3B,EAAQ2c,sBAAS,IAAMrZ,EAAM+rC,YAAYrvC,QACzC,UAAE+sC,GAAcqF,GAAepb,EAAOh3B,GAEtCm3B,EAAOxa,sBAAS,IAAMrZ,EAAM+rC,YAAYlY,OACxC,UAAEqX,EAAF,YAAaC,GAAgBa,GAAanY,GAE1CD,EAAUva,sBAAS,IAAMrZ,EAAM+rC,YAAYnY,UAC3C,OAAEh4B,GAAWmzC,GAAUnb,GAEvBob,EAAuBvjC,IACvBzL,EAAM+rC,YAAY7wB,OACtBzP,EAAEwjC,kBACFjvC,EAAMumC,cAAc96B,EAAGzL,EAAM+rC,eAGzBmB,EAAc78C,IAGlB,GAFAgY,EAAUxD,yBAAyB,KAE9BxU,EAAM,OAEX,MAAM,MAAE6e,EAAF,SAASiI,GAAa9mB,EACtB6+C,EAA+BlvC,EAAM+rC,YAAYlY,MAAQ,CAAEC,MAAO,OAAQ5kB,MAAO,CAAC,CAAC,EAAG,GAAI,CAAC,IAAK,OAEhGhT,EAAO8D,EAAM+rC,YAAY7vC,KAAOib,EAASjb,KACzCC,EAAM6D,EAAM+rC,YAAY5vC,IAAMgb,EAAShb,IACvCzB,EAAQsF,EAAM+rC,YAAYrxC,MAAQyc,EAASzc,MAC3CC,EAASqF,EAAM+rC,YAAYpxC,OAASwc,EAASxc,OAEnD,IAAIw0C,EAAgB,EAChBC,EAAgB,EAEpB,GAAIpvC,EAAM+rC,YAAYtvC,OAAQ,CAC5B,MAAMyjC,EAAWhkC,EAAOxB,EAAQ,GAAMsF,EAAM+rC,YAAY7vC,KAAO8D,EAAM+rC,YAAYrxC,MAAQ,GACnFylC,IAAahkC,EAAMxB,EAAS,GAAMqF,EAAM+rC,YAAY5vC,IAAM6D,EAAM+rC,YAAYpxC,OAAS,IAErF+kC,GAAU1/B,EAAM+rC,YAAYtvC,OAAS+D,KAAKqM,GAAK,IAE/CwiC,EAAiBnP,EAAU1/B,KAAK2M,IAAIuyB,GAAUS,EAAU3/B,KAAK6M,IAAIqyB,GACjE4P,EAAiBpP,EAAU1/B,KAAK6M,IAAIqyB,GAAUS,EAAU3/B,KAAK2M,IAAIuyB,GAEvEyP,EAAgBE,EAAiBnP,EACjCkP,IAAkBE,EAAiBnP,GAGrC,MAAMoP,EAAS,CACb1b,KAAM,IAAKqb,EAAYhgC,SACvBhT,KAAMA,EAAOizC,EACbhzC,IAAKA,EAAMizC,EACX10C,QACAC,UAEF2I,EAAYnC,cAAc,CAAEnF,GAAIgE,EAAM+rC,YAAY/vC,GAAIgE,MAAOuvC,IAE7D96B,KAGF,MAAO,CAAC4iB,EAAUC,KAChB,MAAMkY,EAAyBrB,8BAAkB,eAEjD,OAAQ5W,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,yBAA0B,CAAE,KAAQtX,EAAQ2U,YAAY7wB,QAChFje,MAAOoxC,4BAAgB,CACrBlyC,IAAKi7B,EAAQ2U,YAAY5vC,IAAM,KAC/BD,KAAMk7B,EAAQ2U,YAAY7vC,KAAO,KACjCxB,MAAO08B,EAAQ2U,YAAYrxC,MAAQ,KACnCC,OAAQy8B,EAAQ2U,YAAYpxC,OAAS,QAEtC,CACDi9B,gCAAoB,MAAO,CACzBf,MAAO,iBACP55B,MAAOoxC,4BAAgB,CAAEoB,UAAW,UAAUrY,EAAQ2U,YAAYtvC,gBACjE,CACAk7B,mBAAOiX,IACHrX,yBAAc0U,yBAAayD,GAAkB,CAC5Cl8C,IAAK,EACLsd,IAAKsmB,EAAQ2U,YAAYj7B,IACzBu7B,SAAUjV,EAAQ2U,YAAYlY,KAC9Bn5B,MAAO08B,EAAQ2U,YAAYrxC,MAC3BC,OAAQy8B,EAAQ2U,YAAYpxC,OAC5BwB,IAAKi7B,EAAQ2U,YAAY5vC,IACzBD,KAAMk7B,EAAQ2U,YAAY7vC,KAC1BO,OAAQ26B,EAAQ2U,YAAYtvC,OAC5B6vC,SAAU3U,mBAAOuT,GAAWjuC,MAC5B0yC,OAAQrY,EAAO,KAAOA,EAAO,GAAKpoB,GAASg+B,EAAWh+B,KACrD,KAAM,EAAG,CAAC,MAAO,WAAY,QAAS,SAAU,MAAO,OAAQ,SAAU,cAC5Ek/B,6BAAiB7W,yBAAcC,gCAAoB,MAAO,CACxDhkC,IAAK,EACLqjC,MAAO,kBACP55B,MAAOoxC,4BAAgB,CACzBzyC,OAAQ+7B,mBAAO6R,GAAe,eAAe7R,mBAAO6R,MAAkB,GACtEiG,UAAW9X,mBAAO8R,KAEhB+E,YAAalX,EAAO,KAAOA,EAAO,GAAKkB,GAAUwW,EAAoBxW,IACrEoX,aAActY,EAAO,KAAOA,EAAO,GAAKkB,GAAUwW,EAAoBxW,KACrE,CACDkC,yBAAamV,GAAc,CAAE9D,YAAa3U,EAAQ2U,aAAe,KAAM,EAAG,CAAC,gBAC3EnU,gCAAoB,MAAO,CACzBf,MAAO,gBACP55B,MAAOoxC,4BAAgB,CAAE/B,SAAU3U,mBAAOuT,GAAWjuC,SACpD,CACD26B,gCAAoB,MAAO,CACzB9mB,IAAKsmB,EAAQ2U,YAAYj7B,IACzBw9B,WAAW,EACXrxC,MAAOoxC,4BAAgB,CACzBlyC,IAAKw7B,mBAAOwT,GAAahvC,IACzBD,KAAMy7B,mBAAOwT,GAAajvC,KAC1BxB,MAAOi9B,mBAAOwT,GAAazwC,MAC3BC,OAAQg9B,mBAAOwT,GAAaxwC,OAC5BiB,OAAQ+7B,mBAAO/7B,KAEbk0C,YAAaxY,EAAO,KAAOA,EAAO,GAAKmX,2BAAe,OAAU,CAAC,aACjEF,IAAK,IACJ,KAAM,GAAI3X,IACZQ,EAAQ2U,YAAYgE,WAChBxY,yBAAcC,gCAAoB,MAAO,CACxChkC,IAAK,EACLqjC,MAAO,aACP55B,MAAOoxC,4BAAgB,CAC7B9wC,gBAAiB65B,EAAQ2U,YAAYgE,UAAUz3C,MAC/CkE,QAAS46B,EAAQ2U,YAAYgE,UAAUvzC,WAEhC,KAAM,IACTqvC,gCAAoB,IAAI,IAC3B,IACF,KAAM,CACP,CAAC2D,EAAwBpY,EAAQuX,iBAEtC,IACF,O,UCjLL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACM/X,GAAa,CAAC,QAAS,UACvBE,GAAa,CAAC,IAAK,SAAU,eAAgB,oBAQvBG,oCAAiB,CAC3CC,OAAQ,iBACRl3B,MAAO,CACPtF,MAAO,CACL/E,KAAM41C,OACNC,UAAU,GAEZ7wC,OAAQ,CACNhF,KAAM41C,OACNC,UAAU,GAEZ/tC,QAAS,CACP9H,KAAM7E,SAGRqmC,MAAMC,GAER,MAAMp3B,EAAQo3B,GAIR,aACJgU,EADI,aAEJC,EAFI,aAGJC,GACEG,GAAkBC,mBAAM1rC,EAAO,YAEnC,MAAO,CAACq3B,EAAUC,IACRF,EAAQ35B,SACX85B,yBAAcC,gCAAoB,MAAO,CACxChkC,IAAK,EACLqjC,MAAO,kBACP8U,SAAU,UACVjxC,MAAO08B,EAAQ18B,MACfC,OAAQy8B,EAAQz8B,QACf,CACDi9B,gCAAoB,OAAQ,CAC1B,gBAAiB,qBACjB,iBAAkB,OAClB,oBAAqB,IACrBt7B,KAAM,cACN9J,EAAG,SAAS4kC,EAAQ18B,YAAY08B,EAAQ18B,SAAS08B,EAAQz8B,aAAay8B,EAAQz8B,WAC9EixC,OAAQjU,mBAAO2T,GACf,eAAgB3T,mBAAOyT,GACvB,mBAA6C,WAAzBzT,mBAAO0T,GAA6B,OAAS,OAChE,KAAM,EAAGvU,KACX,EAAGF,KACNiV,gCAAoB,IAAI,M,UCtD9B,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,U,qHCIR,MAAMmE,GAAe14C,IAC1B,MAAMyQ,EAAO,GACPtU,EAAO,CAACD,EAAay8C,IAAiBloC,EAAKvU,GAAOy8C,EAiBxD,OAfAx8C,EAAK,cAAey8C,QACpBz8C,EAAK,gBAAiB08C,QACtB18C,EAAK,SAAUwhB,SACfxhB,EAAK,SAAUohB,SACfphB,EAAK,YAAa28C,SAClB38C,EAAK,SAAU48C,QACf58C,EAAK,SAAU68C,eAAWh5C,EAAOrB,MAAMs6C,SACvC98C,EAAK,SAAU68C,eAAWh5C,EAAOrB,MAAMwD,KACvChG,EAAK,SAAU68C,eAAWh5C,EAAOrB,MAAMyD,YACvCjG,EAAK,SAAU68C,eAAWh5C,EAAOrB,MAAM0D,gBAEvClG,EAAK,QAAS+8C,gBAAcl5C,EAAOC,MAAMk5C,YACzCh9C,EAAK,QAASi9C,gBAAap5C,EAAOC,MAAMk5C,YACxCh9C,EAAK,QAASk9C,gBAAar5C,EAAOC,MAAMk5C,YAEjC1oC,GCrBH6oC,GAAkBp6C,GAAuBq6C,gBAAkB,WAAYr6C,GAEvEs6C,GAAmBt6C,GACvBq6C,gBACE,cACAr6C,EACAkT,IAAS,CAAEuX,OAAQvX,EAAM,KACzB,CAACA,EAAO3T,IAASA,EAAKg7C,WAAah7C,EAAK6B,MAAMqpB,SAAWvX,EAAM,IAI7DsnC,GAAkBx6C,GAAuBq6C,gBAAkB,iBAAkBr6C,GAE7Ey6C,GAAiBz6C,GAAuB06C,gBAAuB,QAAS16C,GAEjE26C,GAAmB75C,IAC9B,MAAM85C,EAAQ,IACTC,QACHC,QACAC,SAOF,OALAH,EAAMjgD,KAAKy/C,GAAet5C,EAAOC,MAAM0C,aACvCm3C,EAAMjgD,KAAK2/C,GAAgBx5C,EAAOC,MAAMi6C,eACxCJ,EAAMjgD,KAAK6/C,GAAe15C,EAAOC,MAAMk6C,cACvCL,EAAMjgD,KAAK8/C,GAAc35C,EAAOC,MAAMm6C,aAE/BC,gBAAW,CAAEP,WC1BTQ,GAAgBt6C,GACpB,CACL65C,GAAgB75C,GAChBu6C,gBAAO7B,GAAY14C,IACnBu6C,gBAAOC,QACPC,kBACAC,kBACAC,mB,iBCbJ,MAAMj4C,GAAwB,CAC5BpC,MAAO,CACLqpB,MAAO,CACLgX,QAAS,GAEXia,cAAe,CACbja,QAAS,KAGbr7B,QAAS,aACTu1C,MAAO,QACPC,SAAU,CACR,CACEC,IAAK,KACLC,SAAUC,IACR,MAAMtxB,GAAUsxB,EAAoBC,aAAa,SAAYD,EAAoBE,aAAa,SAAW,IAAM,EACzG96C,EAAO,CAAEspB,OAAQA,IAEjB,cAAEixB,GAAmBK,EAAoBt1C,MAG/C,OAFIi1C,IAAev6C,EAAK,iBAAmBu6C,GAEpCv6C,KAIb+6C,MAAQ38C,IACN,MAAM,MAAEkrB,EAAF,cAASixB,GAAkBn8C,EAAK6B,MACtC,IAAIqF,EAAQ,GACRi1C,IAAej1C,GAAS,oBAAoBi1C,MAEhD,MAAMv6C,EAAO,CAAEsF,SAIf,OAHc,IAAVgkB,IAAatpB,EAAK,SAAWspB,GAG1B,CAAC,KAAMtpB,EAAM,KAIlBoC,GAAuB,CAC3BnC,MAAO,CACLs6C,cAAe,CACbja,QAAS,KAGbr7B,QAAS,aACTu1C,MAAO,QACPC,SAAU,CACR,CACEC,IAAK,KACLC,SAAUC,IACR,MAAM,cAAEL,GAAmBK,EAAoBt1C,MAC/C,OAAOi1C,EAAgB,CAAEA,iBAAkB,MAIjDQ,MAAQ38C,IACN,MAAM,cAAEm8C,GAAkBn8C,EAAK6B,MAC/B,IAAIqF,EAAQ,GAGZ,OAFIi1C,IAAej1C,GAAS,oBAAoBi1C,MAEzC,CAAC,KAAM,CAAEj1C,SAAS,KAIvB01C,GAAqB,IACtBC,QACHh2C,QAAS,mBACTu1C,MAAO,SAGHvhC,GAAsB,CAC1BhZ,MAAO,CACLc,MAAO,CACLu/B,QAAS,IAEXvI,OAAQ,CACNuI,QAAS,IAGbr7B,QAAS,UACTu1C,MAAO,QACPC,SAAU,CACR,CACEC,IAAK,IACLC,SAAUC,IACR,MAAM,UAAEr3C,GAAeq3C,EAAoBt1C,MAE3C,IAAIvE,EAAS65C,EAAoBE,aAAa,UAAYv3C,GAAa,GACvExC,EAAQ,8BAA8BwsB,KAAKxsB,GAASA,EAAQ,GAE5D,MAAMg3B,IAAY6iB,EAAoBE,aAAa,gBAAkB,GAErE,MAAO,CAAE/5C,QAAOg3B,YAGpB,CACE2iB,IAAK,MACLQ,QAAQ,GAEV,CACER,IAAK,MACLS,MAAM,IAGVJ,MAAQ38C,IACN,MAAM,MAAE2C,EAAF,OAASg3B,GAAW35B,EAAK6B,MAC/B,IAAIqF,EAAQ,GACRvE,GAAmB,SAAVA,IAAkBuE,GAAS,eAAevE,MAEvD,MAAMf,EAAO,CAAEsF,SAGf,OAFIyyB,IAAQ/3B,EAAK,eAAiB+3B,GAE3B,CAAC,IAAK/3B,EAAM,MAKjB,WAAEo7C,MAAeC,IAAez7C,QAEvB,WACVy7C,GACH,aAAgBh5C,GAChB,YAAeD,GACf,UAAa44C,GACb/hC,cC7HF,MAAM/W,GAAsB,CAC1Bo5C,SAAU,YACVb,SAAU,CACR,CAAEC,IAAK,OACP,CACEp1C,MAAO,iBACPq1C,SAAUp/C,GAAmB,QAAVA,GAAmB,OAG1Cw/C,MAAO,IAAM,CAAC,MAAO,IAGjB94C,GAAwB,CAC5Bq5C,SAAU,cACVb,SAAU,CACR,CAAEC,IAAK,OACP,CACEp1C,MAAO,iBACPq1C,SAAUp/C,GAAmB,UAAVA,GAAqB,OAG5Cw/C,MAAO,IAAM,CAAC,MAAO,IAGjB/4C,GAA0B,CAC9By4C,SAAU,CACR,CAAEC,IAAK,UACP,CACEp1C,MAAO,kBACPq1C,SAAUp/C,GAAmB,iBAAVA,GAA4B,MAEjD,CACE+J,MAAO,uBACPq1C,SAAUp/C,GAAmB,iBAAVA,GAA4B,OAGnDw/C,MAAO,IAAM,CAAC,OAAQ,CAAEz1C,MAAO,sCAAwC,IAGnEvD,GAAsB,CAC1B04C,SAAU,CACR,CAAEC,IAAK,KACP,CACEp1C,MAAO,kBACPq1C,SAAUp/C,GAAmB,cAAVA,GAAyB,MAE9C,CACE+J,MAAO,uBACPq1C,SAAUp/C,GAAmB,cAAVA,GAAyB,OAGhDw/C,MAAO,IAAM,CAAC,OAAQ,CAAEz1C,MAAO,8BAAgC,IAG3Di2C,GAAsB,CAC1Bt7C,MAAO,CACLU,MAAO,IAET66C,QAAQ,EACRhB,MAAO,SACPC,SAAU,CACR,CACEn1C,MAAO,QACPq1C,SAAUh6C,GAASA,EAAQ,CAAEA,SAAU,KAG3Co6C,MAAO39C,IACL,MAAM,MAAEuD,GAAUvD,EAAK6C,MACvB,IAAIqF,EAAQ,GAEZ,OADI3E,IAAO2E,GAAS,UAAU3E,MACvB,CAAC,OAAQ,CAAE2E,SAAS,KAIzB1E,GAAsB,CAC1BX,MAAO,CACLW,UAAW,IAEb46C,QAAQ,EACRhB,MAAO,SACPC,SAAU,CACR,CACEn1C,MAAO,mBACPq1C,SAAU/5C,GAAaA,EAAY,CAAEA,aAAc,KAGvDm6C,MAAO39C,IACL,MAAM,UAAEwD,GAAcxD,EAAK6C,MAC3B,IAAIqF,EAAQ,GAEZ,OADI1E,IAAW0E,GAAS,qBAAqB1E,MACtC,CAAC,OAAQ,CAAE0E,SAAS,KAIzBzE,GAAqB,CACzBZ,MAAO,CACLY,SAAU,IAEZ26C,QAAQ,EACRhB,MAAO,SACPC,SAAU,CACR,CACEn1C,MAAO,YACPq1C,SAAU95C,GAAYA,EAAW,CAAEA,YAAa,KAGpDk6C,MAAO39C,IACL,MAAM,SAAEyD,GAAazD,EAAK6C,MAC1B,IAAIqF,EAAQ,GAEZ,OADIzE,IAAUyE,GAAS,cAAczE,GAC9B,CAAC,OAAQ,CAAEyE,SAAS,KAIzBxE,GAAqB,CACzBb,MAAO,CACLa,SAAU,IAEZ06C,QAAQ,EACRhB,MAAO,SACPC,SAAU,CACR,CACEn1C,MAAO,cACPq1C,SAAU75C,IACD,CAAEA,SAAUA,GAAgC,kBAAbA,EAAwBA,EAASgY,QAAQ,UAAW,IAAM,OAItGiiC,MAAO39C,IACL,MAAM,SAAE0D,GAAa1D,EAAK6C,MAC1B,IAAIqF,EAAQ,GAEZ,OADIxE,IAAUwE,GAAS,gBAAgBxE,GAChC,CAAC,OAAQ,CAAEwE,SAAS,KAIzB7D,GAAiB,CACrBxB,MAAO,CACL4hC,KAAM,GACNhH,MAAO,CAAEyF,QAAS,MAClBpf,OAAQ,CAAEof,QAAS,WAErBmb,WAAW,EACXhB,SAAU,CACR,CACEC,IAAK,UACLC,SAAUC,IACR,MAAM/Y,EAAQ+Y,EAAoBE,aAAa,QACzCjgB,EAAS+f,EAAoBE,aAAa,SAChD,MAAO,CAAEjZ,OAAMhH,YAIrBkgB,MAAO38C,GAAQ,CAAC,IAAKA,EAAK6B,MAAO,IAGpB,WACV3B,QACHuC,SAFa,GAGbC,YACAy6C,aACA36C,aACAsB,aACAD,eACAD,iBACAD,aACAN,KAAIA,ICtKC,MAAMi6C,GAAc97C,GACd+7C,GAAcr9C,GCGrBqB,GAAS,IAAIi8C,QAAO,CACxBh8C,MAAO87C,GACPp9C,MAAOq9C,KAGIE,GAAkB52C,IAC7B,MAAM62C,EAAa,QAAQ72C,UACrB6qB,EAAS,IAAI1zB,OAAO2/C,UACpB7yC,EAAU4mB,EAAOksB,gBAAgBF,EAAY,aAAaloC,KAAKqoC,kBACrE,OAAOF,QAAUG,WAAWv8C,IAAQ+H,MAAMwB,IAG/BizC,GAAwB,CAACvB,EAAc31C,EAAiBoD,EAAQ,KACpE,IAAI+zC,QAAWxB,EAAK,CACzB99C,MAAOu/C,QAAYzgD,OAAO,CACxBgC,IAAKi+C,GAAe52C,GACpBq3C,QAASrC,GAAat6C,SAErB0I,I,ICvBWk0C,G,cAAlB,SAAkBA,GAChBA,2CACAA,qDACAA,4CAHF,CAAkBA,QAAa,KAsB/B,MAAMC,GAA2BC,kBAElBD,UCtBR,MAAME,GAAe,CAACr/C,EAAiBsC,EAAgBg9C,KAC5D,MAAM,UAAE5/C,EAAF,IAAaa,GAAQP,EAC3B,IAAKN,IAAca,EAAK,OAAOP,EAE/B,MAAM,KAAEC,EAAF,GAAQC,GAAOR,GACf,MAAE6C,GAAUD,EAEZ2C,EAAa1C,EAAM0C,WACnB04C,EAAWp7C,EAAMk5C,UACjB7/B,EAAYrZ,EAAMqZ,UAQlB2jC,EAAgB,GACtBD,EAAYA,GAAa,GAEzB,MAAME,EAAmB,IAAIC,IAAI,CAACx6C,EAAY04C,EAAU/hC,IAexD,OAbArb,EAAI6C,aAAanD,EAAMC,EAAI,CAACa,EAAMV,KAChC,MAAMmB,EAAWT,EAAKJ,KAChB+C,EAAQ3C,EAAK6B,MAAMc,OAAS,GAQlC,OAPIA,IAAU47C,GAAaE,EAAiBE,IAAIl+C,IAC9C+9C,EAAMpjD,KAAK,CACT4E,OACAV,MACAmB,cAGG,IAGJ+9C,EAAM1jD,QAEX0jD,EAAM5lC,QAAQgmC,IACZ,MAAM,KAAE5+C,EAAF,IAAQV,EAAR,SAAamB,GAAam+C,EAChC,IAAI,MAAE/8C,GAAU7B,EACD6B,EAAX08C,EAAmB,IAAK18C,EAAOc,MAAO47C,GAC7B,IAAK18C,EAAOc,MAAO,MAChC1D,EAAKA,EAAG4/C,cAAcv/C,EAAKmB,EAAUoB,EAAO7B,EAAKE,SAG5CjB,GAVmBA,GAaf6/C,GAAmB,CAACtgD,EAAkB+/C,KACjD,MAAM,MAAE7/C,GAAUF,GACZ,OAAE+C,EAAF,UAAU5C,GAAcD,EACxBO,EAAKq/C,GACT5/C,EAAMO,GAAG8/C,aAAapgD,GACtB4C,EACAg9C,GAEF//C,EAAKK,SAASI,ICvDH+/C,GAAS,CAACh/C,EAAYuB,IAE/BvB,EAAKJ,OAAS2B,EAAOC,MAAMk6C,aAC3B17C,EAAKJ,OAAS2B,EAAOC,MAAMi6C,aAIlBwD,GAAa,CAACC,EAAoBC,EAAoBhD,IAC1D,CAACz9C,EAAoBG,KAC1B,MAAM,OAAE0C,EAAF,UAAU5C,GAAcD,GACxB,MAAEU,EAAF,IAASC,GAAQV,EACjBwa,EAAQ/Z,EAAMggD,WAAW//C,GAE/B,IAAK8Z,EAAO,OAAO,EAEnB,MAAMkmC,EAAal+C,EAAgBnB,GAAeg/C,GAAOh/C,EAAMuB,GAA5CJ,CAAqDxC,GAExE,GAAIwa,EAAMnY,OAAS,GAAKq+C,GAAclmC,EAAMnY,MAAQq+C,EAAWr+C,OAAS,EAAG,CACzE,GAAIq+C,EAAWr/C,KAAKJ,OAASs/C,IAAa/C,EACxC,OAAOxB,gBAAawE,EAAbxE,CAAuBj8C,EAAOG,GAGvC,GAAImgD,GAAOK,EAAWr/C,KAAMuB,IAAW29C,EAASI,aAAaD,EAAWr/C,KAAK6G,SAAU,CACrF,MAAM,GAAE5H,GAAOP,EACf,GAAIy9C,EAAe,CACjB,MAAMoD,EAAY,IACbF,EAAWr/C,KAAK6B,MACnBs6C,cAAeA,GAEjBl9C,EAAG4/C,cAAcQ,EAAW//C,IAAK4/C,EAAUK,QAExCtgD,EAAG4/C,cAAcQ,EAAW//C,IAAK4/C,GAItC,OAFIrgD,GAAUA,EAASI,IAEhB,GAIX,OAAIk9C,EAAsBqD,gBAAWN,EAAU,CAAE/C,iBAAvBqD,CAAwC9gD,EAAOG,GAClE2gD,gBAAWN,EAAXM,CAAqB9gD,EAAOG,ICxCvC,SAAS4gD,GAAoBxgD,EAAiBK,EAAaogD,GACzD,IAAKzgD,EAAGO,IAAK,OAAOP,EAEpB,MAAMe,EAAOf,EAAGO,IAAIS,OAAOX,GAC3B,IAAKU,EAAM,OAAOf,EAElB,MAAM0gD,EAAY,EACZC,EAAY,EAElB,IAAIjmB,GAAU35B,EAAK6B,MAAM83B,QAAU,GAAK+lB,EAIxC,GAHI/lB,EAASgmB,IAAWhmB,EAASgmB,GAC7BhmB,EAASimB,IAAWjmB,EAASimB,GAE7BjmB,IAAW35B,EAAK6B,MAAM83B,OAAQ,OAAO16B,EAEzC,MAAMsgD,EAAY,IACbv/C,EAAK6B,MACR83B,UAGF,OAAO16B,EAAG4/C,cAAcv/C,EAAKU,EAAKJ,KAAM2/C,EAAWv/C,EAAKE,OAG1D,MAAM2/C,GAAgB,CAAC5gD,EAAiBsC,EAAgBm+C,KACtD,MAAM,UAAE/gD,EAAF,IAAaa,GAAQP,EAC3B,IAAKN,IAAca,EAAK,OAAOP,EAE/B,KAAMN,aAAqBmhD,SAAiBnhD,aAAqBohD,SAAe,OAAO9gD,EAEvF,MAAM,KAAEC,EAAF,GAAQC,GAAOR,EAarB,OAXAa,EAAI6C,aAAanD,EAAMC,EAAI,CAACa,EAAMV,KAChC,MAAMmB,EAAWT,EAAKJ,KAEtB,MAAsB,cAAlBa,EAAS/D,MAA0C,eAAlB+D,EAAS/D,MAC5CuC,EAAKwgD,GAAoBxgD,EAAIK,EAAKogD,IAC3B,IAEAV,GAAOh/C,EAAMuB,KAIjBtC,GAGI+gD,GAAgB,CAACxhD,EAAkBkhD,KAC9C,MAAM,MAAEhhD,GAAUF,GACZ,OAAE+C,EAAF,UAAU5C,GAAcD,EAExBO,EAAK4gD,GACTnhD,EAAMO,GAAG8/C,aAAapgD,GACtB4C,EACAm+C,GAEF,QAAIzgD,EAAGghD,aACLzhD,EAAKK,SAASI,IACP,IC5CiBiiC,oCAAiB,CAC3CC,OAAQ,oBACRl3B,MAAO,CACPiB,UAAW,CACTtL,KAAMw2B,OACNqf,UAAU,GAEZ1uC,aAAc,CACZnH,KAAMw2B,OACNqf,UAAU,GAEZ3uC,gBAAiB,CACflH,KAAMw2B,OACNqf,UAAU,GAEZv5B,SAAU,CACRtc,KAAMsgD,QACNhe,SAAS,GAEX/kC,MAAO,CACLyC,KAAMw2B,OACNqf,UAAU,GAEZ0K,UAAW,CACTvgD,KAAMsgD,QACNhe,SAAS,IAGXC,MAAO,CAAC,SAAU,QAAS,OAAQ,aACnCf,MAAMC,GAAS,OAAE+e,EAAF,KAAUhe,IAO3B,MAAMn4B,EAAQo3B,EAMR/uB,EAAYzG,KACZ,gBAAEE,EAAF,kBAAmBqB,GAAsBgS,eAAY9M,GAErD+tC,EAAgB5oB,mBACtB,IAAI14B,EAMJ,MAAMuhD,EAAc3hC,uBAAS,WAC3ByjB,EAAK,SAAUrjC,EAAWy9C,IAAI+D,aAC7B,IAAK,CAAE1hC,UAAU,IAEd2hC,EAAc,KAClBluC,EAAUhE,wBAAuB,GACjC8zB,EAAK,UAGDqe,EAAa,KACjBnuC,EAAUhE,wBAAuB,GACjC8zB,EAAK,SAGDE,EAAc3jB,uBAAS,WAC3B,MAAM9c,EAAQe,EAAa7D,EAAY,CACrCwD,MAAO0H,EAAMlD,aACbrE,SAAUuH,EAAMnD,kBAElBwL,EAAUvD,iBAAiBlN,KAC1B,GAAI,CAAEgd,UAAU,IAEb6hC,EAAgB,KACpBJ,IACAhe,KAIIqe,EAAcr9B,sBAAS,IAAMrZ,EAAM9M,OACzCupC,mBAAMia,EAAa,KACjB,IAAK5hD,EAAY,OACjB,GAAIA,EAAW6hD,WAAY,OAE3B,MAAM,IAAEphD,EAAF,GAAOP,GAAOF,EAAWL,MAC/BK,EAAWF,SAASI,EAAG4hD,iBAAiB,EAAGrhD,EAAIqH,QAAQnC,KAAM+4C,GAAekD,EAAYxjD,WAI1FupC,mBAAM,IAAMz8B,EAAMiS,SAAU,KAC1Bnd,EAAW+hD,SAAS,CAAE5kC,SAAU,IAAMjS,EAAMiS,aAI9C,MAAMsF,EAAQ,IAAMziB,EAAWyiB,QAC/B4+B,EAAO,CAAE5+B,UAIT,MAAMu/B,EAAc,EAAGj+B,SAAQxN,aAC7B,IAAKwN,GAAU/W,EAAgB5O,QAAU8M,EAAMiB,UAAW,OAC1D,GAAI4X,GAAUA,IAAW7Y,EAAMiB,UAAW,OAE1C,MAAM3B,EAAW,YAAa+L,EAAU,CAACA,GAAUA,EAEnD,IAAK,MAAMxP,KAAQyD,EACjB,GAAqB,aAAjBzD,EAAK8d,SAA0B9d,EAAK3I,MAAO,CAC7C,MAAM6B,EAAOD,EAAWL,MAAM6C,OAAOrB,MAAMwC,SAASlF,OAAO,CAAEkF,SAAUoD,EAAK3I,QAC5EoB,EAAcQ,GACdD,EAAQC,EAAYC,QAEjB,GAAqB,aAAjB8G,EAAK8d,SAA0B9d,EAAK3I,MAAO,CAClD,MAAM6B,EAAOD,EAAWL,MAAM6C,OAAOrB,MAAMuC,SAASjF,OAAO,CAAEiF,SAAUqD,EAAK3I,QAC5EoB,EAAcQ,GACdD,EAAQC,EAAYC,QAEjB,GAAqB,iBAAjB8G,EAAK8d,QAA4B,CACxC,MAAMkD,EAAOhhB,EAAK3I,OAAS2I,EAAK3I,MAAQ,EACxCoB,EAAcQ,GACd,MAAM0D,EAAW0B,EAAYpF,GAAc+nB,EAAO,KAC5C9nB,EAAOD,EAAWL,MAAM6C,OAAOrB,MAAMuC,SAASjF,OAAO,CAAEiF,aAC7D3D,EAAQC,EAAYC,QAEjB,GAAqB,oBAAjB8G,EAAK8d,QAA+B,CAC3C,MAAMkD,EAAOhhB,EAAK3I,OAAS2I,EAAK3I,MAAQ,EACxCoB,EAAcQ,GACd,IAAI0D,EAAW0B,EAAYpF,GAAc+nB,EACrCrkB,EAAW,KAAIA,EAAW,IAC9B,MAAMzD,EAAOD,EAAWL,MAAM6C,OAAOrB,MAAMuC,SAASjF,OAAO,CAAEiF,SAAUA,EAAW,OAClF3D,EAAQC,EAAYC,QAEjB,GAAqB,UAAjB8G,EAAK8d,SAAuB9d,EAAK3I,MAAO,CAC/C,MAAM6B,EAAOD,EAAWL,MAAM6C,OAAOrB,MAAMi9C,UAAU3/C,OAAO,CAAE+E,MAAOuD,EAAK3I,QAC1EoB,EAAcQ,GACdD,EAAQC,EAAYC,QAEjB,GAAqB,cAAjB8G,EAAK8d,SAA2B9d,EAAK3I,MAAO,CACnD,MAAM6B,EAAOD,EAAWL,MAAM6C,OAAOrB,MAAMsC,UAAUhF,OAAO,CAAEgF,UAAWsD,EAAK3I,QAC9EoB,EAAcQ,GACdD,EAAQC,EAAYC,QAEjB,GAAqB,SAAjB8G,EAAK8d,QACZrlB,EAAcQ,GACdw7C,eAAWx7C,EAAWL,MAAM6C,OAAOrB,MAAMs6C,OAAzCD,CAAiDx7C,EAAWL,MAAOK,EAAWF,eAE3E,GAAqB,OAAjBiH,EAAK8d,QACZrlB,EAAcQ,GACdw7C,eAAWx7C,EAAWL,MAAM6C,OAAOrB,MAAMwD,GAAzC62C,CAA6Cx7C,EAAWL,MAAOK,EAAWF,eAEvE,GAAqB,cAAjBiH,EAAK8d,QACZrlB,EAAcQ,GACdw7C,eAAWx7C,EAAWL,MAAM6C,OAAOrB,MAAMyD,UAAzC42C,CAAoDx7C,EAAWL,MAAOK,EAAWF,eAE9E,GAAqB,kBAAjBiH,EAAK8d,QACZrlB,EAAcQ,GACdw7C,eAAWx7C,EAAWL,MAAM6C,OAAOrB,MAAM0D,cAAzC22C,CAAwDx7C,EAAWL,MAAOK,EAAWF,eAElF,GAAqB,cAAjBiH,EAAK8d,QACZ22B,eAAWx7C,EAAWL,MAAM6C,OAAOrB,MAAM4D,UAAzCy2C,CAAoDx7C,EAAWL,MAAOK,EAAWF,eAE9E,GAAqB,gBAAjBiH,EAAK8d,QACZ22B,eAAWx7C,EAAWL,MAAM6C,OAAOrB,MAAM2D,YAAzC02C,CAAsDx7C,EAAWL,MAAOK,EAAWF,eAEhF,GAAqB,eAAjBiH,EAAK8d,QACZo9B,eAAOjiD,EAAWL,MAAM6C,OAAOC,MAAM0C,WAArC88C,CAAiDjiD,EAAWL,MAAOK,EAAWF,eAE3E,GAAqB,SAAjBiH,EAAK8d,QACZ22B,eAAWx7C,EAAWL,MAAM6C,OAAOrB,MAAM6D,KAAzCw2C,CAA+Cx7C,EAAWL,MAAOK,EAAWF,eAEzE,GAAqB,UAAjBiH,EAAK8d,SAAuB9d,EAAK3I,MACxC2hD,GAAiB//C,EAAY+G,EAAK3I,YAE/B,GAAqB,WAAjB2I,EAAK8d,SAAwB9d,EAAK3I,MACzC6iD,GAAcjhD,GAAa+G,EAAK3I,YAE7B,GAAqB,eAAjB2I,EAAK8d,QAA0B,CACtC,MAAMu4B,EAAgBr2C,EAAK3I,OAAS,IAC5Bu+C,YAAa13C,EAAY02C,UAAWkC,GAAa79C,EAAWL,MAAM6C,OAAOC,MACjFy9C,GAAWj7C,EAAY44C,EAAUT,EAAjC8C,CAAgDlgD,EAAWL,MAAOK,EAAWF,eAE1E,GAAqB,gBAAjBiH,EAAK8d,QAA2B,CACvC,MAAMu4B,EAAgBr2C,EAAK3I,OAAS,IAC5Bs+C,aAAcx3C,EAAay2C,UAAWkC,GAAa79C,EAAWL,MAAM6C,OAAOC,MACnFy9C,GAAWh7C,EAAa24C,EAAUT,EAAlC8C,CAAiDlgD,EAAWL,MAAOK,EAAWF,eAE3E,GAAqB,UAAjBiH,EAAK8d,QAAqB,CACjCrlB,EAAcQ,GACd,MAAM,MAAEK,EAAF,IAASC,GAAQN,EAAWL,MAAMC,UACxCI,EAAWF,SAASE,EAAWL,MAAMO,GAAGgiD,WAAW7hD,EAAME,IAAKD,EAAIC,WAE/D,GAAqB,SAAjBwG,EAAK8d,QAAoB,CAChC,MAAMnkB,EAAWV,EAAWL,MAAM6C,OAAOrB,MAAMmD,MACzC,KAAEnE,EAAF,GAAQC,GAAOJ,EAAWL,MAAMC,UAChChD,EAAS4D,EAAsBR,EAAWL,MAAMc,IAAKN,EAAMC,EAAIM,GACrE,GAAI9D,EACF,GAAImK,EAAK3I,MAAO,CACd,MAAM6B,EAAOD,EAAWL,MAAM6C,OAAOrB,MAAMmD,KAAK7F,OAAO,CAAEimC,KAAM39B,EAAK3I,MAAOs/B,MAAO32B,EAAK3I,QACvF2B,EAAQC,EAAYC,EAAM,CAAEE,KAAMvD,EAAOuD,KAAKI,IAAKH,GAAIxD,EAAOwD,GAAGG,IAAM,SAEpEP,EAAWF,SAASE,EAAWL,MAAMO,GAAGgiD,WAAWtlD,EAAOuD,KAAKI,IAAK3D,EAAOwD,GAAGG,IAAM,EAAGG,SAEzF,GAAIsC,EAAWhD,EAAWL,MAAOe,GACpC,GAAIqG,EAAK3I,MAAO,CACd,MAAM6B,EAAOD,EAAWL,MAAM6C,OAAOrB,MAAMmD,KAAK7F,OAAO,CAAEimC,KAAM39B,EAAK3I,MAAOs/B,MAAO32B,EAAK3I,QACvF2B,EAAQC,EAAYC,QAEjBu7C,eAAW96C,EAAX86C,CAAqBx7C,EAAWL,MAAOK,EAAWF,eAEhDiH,EAAK3I,QACZoB,EAAcQ,GACdw7C,eAAW96C,EAAU,CAAEgkC,KAAM39B,EAAK3I,MAAOs/B,MAAO32B,EAAK3I,OAArDo9C,CAA8Dx7C,EAAWL,MAAOK,EAAWF,eAGrE,WAAjBiH,EAAK8d,SAAwB9d,EAAK3I,OACzC4B,EAAWF,SAASE,EAAWL,MAAMO,GAAGiiD,WAAWp7C,EAAK3I,QAI5D4B,EAAWyiB,QACX8+B,IACAhe,KAIIiN,EAAgB,KACpB,IAAKniC,EAAkBjQ,MAAO,OAE9B,MAAMoM,EAA4B,CAAC,CAAEqa,QAAS,UAC9C,IAAK,MAAMnmB,KAAO1C,OAAOiX,KAAK5E,EAAkBjQ,OAAQ,CACtD,MAAMymB,EAAUnmB,EACVN,EAAQiQ,EAAkBjQ,MAAMM,GAClCN,GAAOoM,EAAQnO,KAAK,CAAEwoB,UAASzmB,UAErC4jD,EAAY,CAAEzrC,OAAQ/L,IACtB+I,EAAUjD,qBAAqB,OA0BjC,OAtBA+d,uBAAU,KACRruB,EAAag/C,GAAuBsC,EAAcljD,MAAmBwjD,EAAYxjD,MAAO,CACtFgkD,gBAAiB,CACf3/B,MAAOg/B,EACP7kB,KAAM8kB,EACNW,QAASV,EACT7qC,MAAOysB,EACP+e,QAAS9R,GAEXrzB,SAAU,IAAMjS,EAAMiS,WAEpBjS,EAAMk2C,WAAWphD,EAAWyiB,UAElC6L,yBAAY,KACVtuB,GAAcA,EAAW4W,YAG3ByoC,GAAQ3oC,GAAG0oC,GAAcmD,kBAAmBP,GAC5C1zB,yBAAY,KACV+wB,GAAQmD,IAAIpD,GAAcmD,kBAAmBP,KAGxC,CAACzf,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,qBAAsB,CAAE,iBAAkB/W,mBAAOx0B,MACzEw1B,QAAS,gBACTnL,IAAK4oB,EACL5H,YAAalX,EAAO,KAAOA,EAAO,GAAKkB,GAAUL,EAAK,YAAaK,KAClE,KAAM,Q,UCtRX,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMK,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAA2BiC,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,oBAAsB,MAAO,IAC5HC,GAA2B+B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,uBAAyB,MAAO,IAczGI,oCAAiB,CAC3CC,OAAQ,QACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,GAEZjF,cAAe,CACb5wC,KAAMm2C,SACNN,UAAU,GAEZmD,aAAc,CACZh5C,KAAMm2C,WAGR3U,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIR/uB,EAAYzG,IACZ0B,EAAc3F,KACd,gBAAEmE,EAAF,UAAmBkB,GAAcmS,eAAY9M,IAE7C,mBAAEoM,GAAuBW,KAEzB6pB,EAAazR,mBAEb8D,EAASjY,sBAAS,IAAMrZ,EAAM+rC,YAAYza,SAC1C,YAAEkY,GAAgBqF,GAAiBvd,GAEnC0d,EAAsB,CAACvjC,EAA4B8rC,GAAU,KAC7Dv3C,EAAM+rC,YAAY7wB,OACtBzP,EAAEwjC,kBAEFjvC,EAAMumC,cAAc96B,EAAGzL,EAAM+rC,YAAawL,KAKtCC,EAAkBhqB,kBAAK,GACvBiqB,EAAiBjqB,kBAAK,GAE5BiP,mBAAMz5B,EAAW,KACXlB,EAAgB5O,QAAU8M,EAAM+rC,YAAY/vC,KAE3CgH,EAAU9P,QACR8M,EAAM+rC,YAAY30B,WAAuC,IAA3BogC,EAAgBtkD,QACjDoQ,EAAYnC,cAAc,CACxBnF,GAAIgE,EAAM+rC,YAAY/vC,GACtBgE,MAAO,CAAErF,OAAQ68C,EAAgBtkD,SAEnCskD,EAAgBtkD,OAAS,GAEvB8M,EAAM+rC,YAAY30B,WAAsC,IAA1BqgC,EAAevkD,QAC/CoQ,EAAYnC,cAAc,CACxBnF,GAAIgE,EAAM+rC,YAAY/vC,GACtBgE,MAAO,CAAEtF,MAAO+8C,EAAevkD,SAEjCukD,EAAevkD,OAAS,OAK9B,MAAMwkD,EAA2BC,IAC/B,MAAMC,EAAcD,EAAQ,GAAGC,YAC/B,IAAK3Y,EAAW/rC,MAAO,OAEvB,MAAM2kD,EAAaD,EAAYj9C,OAAS,GAClCm9C,EAAYF,EAAYl9C,MAAQ,GAEjCsF,EAAM+rC,YAAY30B,UAAYpX,EAAM+rC,YAAYpxC,SAAWk9C,IACzD70C,EAAU9P,MAMVskD,EAAgBtkD,MAAQ2kD,EAL3Bv0C,EAAYnC,cAAc,CACxBnF,GAAIgE,EAAM+rC,YAAY/vC,GACtBgE,MAAO,CAAErF,OAAQk9C,MAKnB73C,EAAM+rC,YAAY30B,UAAYpX,EAAM+rC,YAAYrxC,QAAUo9C,IACvD90C,EAAU9P,MAMVukD,EAAevkD,MAAQ4kD,EAL1Bx0C,EAAYnC,cAAc,CACxBnF,GAAIgE,EAAM+rC,YAAY/vC,GACtBgE,MAAO,CAAEtF,MAAOo9C,OAMlBnb,EAAiB,IAAIC,eAAe8a,GAE1Cv0B,uBAAU,KACJ8b,EAAW/rC,OAAOypC,EAAeE,QAAQoC,EAAW/rC,SAE1DkwB,yBAAY,KACN6b,EAAW/rC,OAAOypC,EAAeG,UAAUmC,EAAW/rC,SAG5D,MAAM6kD,EAAiBn7C,IACrB0G,EAAYnC,cAAc,CACxBnF,GAAIgE,EAAM+rC,YAAY/vC,GACtBgE,MAAO,CAAEpD,aAGX6X,KAGIujC,EAAiB,KACrB,MAAMC,EAAWj4C,EAAM+rC,YAAYnvC,QAAQwC,WAAW,WAAY,IAC7D64C,GAAU30C,EAAYtC,cAAchB,EAAM+rC,YAAY/vC,KAGvDk8C,EAAkB7+B,sBAAS,IAAMvX,EAAgB5O,QAAU8M,EAAM+rC,YAAY/vC,IAKnF,OAJAygC,mBAAMyb,EAAiB,KAChBA,EAAgBhlD,OAAO8kD,MAGvB,CAAC3gB,EAAUC,KAChB,MAAMkY,EAAyBrB,8BAAkB,eAEjD,OAAQ5W,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,wBAAyB,CAAE,KAAQtX,EAAQ2U,YAAY7wB,QAC/Eje,MAAOoxC,4BAAgB,CACrBlyC,IAAKi7B,EAAQ2U,YAAY5vC,IAAM,KAC/BD,KAAMk7B,EAAQ2U,YAAY7vC,KAAO,KACjCxB,MAAO08B,EAAQ2U,YAAYrxC,MAAQ,KACnCC,OAAQy8B,EAAQ2U,YAAYpxC,OAAS,QAEtC,CACDi9B,gCAAoB,MAAO,CACzBf,MAAO,iBACP55B,MAAOoxC,4BAAgB,CAAEoB,UAAW,UAAUrY,EAAQ2U,YAAYtvC,gBACjE,CACD2xC,6BAAiB7W,yBAAcC,gCAAoB,MAAO,CACxDX,MAAO,kBACP8B,QAAS,aACTnL,IAAKyR,EACLhiC,MAAOoxC,4BAAgB,CACrB3zC,MAAO08B,EAAQ2U,YAAY30B,SAAW,OAASggB,EAAQ2U,YAAYrxC,MAAQ,KAC3EC,OAAQy8B,EAAQ2U,YAAY30B,SAAWggB,EAAQ2U,YAAYpxC,OAAS,KAAO,OAC3E4C,gBAAiB65B,EAAQ2U,YAAYzvC,KACrCE,QAAS46B,EAAQ2U,YAAYvvC,QAC7B27C,WAAYxgB,mBAAO6R,GACnB7sC,WAAYy6B,EAAQ2U,YAAYpvC,WAChCy7C,eAAgBhhB,EAAQ2U,YAAY5uC,WAAa,GAAK,KACtD7E,MAAO8+B,EAAQ2U,YAAYjvC,aAC3Bu7C,WAAYjhB,EAAQ2U,YAAYlvC,gBAChCy7C,YAAalhB,EAAQ2U,YAAY30B,SAAW,cAAgB,kBAE9Do3B,YAAalX,EAAO,KAAOA,EAAO,GAAKkB,GAAUwW,EAAoBxW,IACrEoX,aAActY,EAAO,KAAOA,EAAO,GAAKkB,GAAUwW,EAAoBxW,KACrE,CACDkC,yBAAa6d,GAAgB,CAC3B79C,MAAO08B,EAAQ2U,YAAYrxC,MAC3BC,OAAQy8B,EAAQ2U,YAAYpxC,OAC5B8C,QAAS25B,EAAQ2U,YAAYtuC,SAC5B,KAAM,EAAG,CAAC,QAAS,SAAU,YAChCi9B,yBAAa8d,GAAmB,CAC9B3hB,MAAO,OACP51B,UAAWm2B,EAAQ2U,YAAY/vC,GAC/Bc,aAAcs6B,EAAQ2U,YAAYjvC,aAClCD,gBAAiBu6B,EAAQ2U,YAAYlvC,gBACrCoV,UAAWmlB,EAAQ2U,YAAY7wB,KAC/BhoB,MAAOkkC,EAAQ2U,YAAYnvC,QAC3BK,MAAOoxC,4BAAgB,CACrB,gBAAmBjX,EAAQ2U,YAAY0M,YAAc,GAArC,KAChB,yBAA8DtnB,IAAvCiG,EAAQ2U,YAAYxY,eAA+B,EAAI6D,EAAQ2U,YAAYxY,gBAA9E,OAEtBmlB,SAAUphB,EAAO,KAAOA,EAAO,GAAKpkC,GAAS6kD,EAAc7kD,IAC3Ds7C,YAAalX,EAAO,KAAOA,EAAO,GAAKkB,GAAUwW,EAAoBxW,GAAQ,KAC5E,KAAM,EAAG,CAAC,YAAa,eAAgB,kBAAmB,WAAY,QAAS,UAClF5B,GACAE,IACC,KAAM,CACP,CAAC0Y,EAAwBpY,EAAQuX,iBAElC,IACF,O,UChML,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAM/X,GAAa,CAAC,KAAM,qBACpBE,GAAa,CAAC,cACdC,GAAa,CAAC,cACdC,GAAa,CAAC,MACdgC,GAAa,CAAC,cACdC,GAAa,CAAC,cAKQhC,oCAAiB,CAC3CC,OAAQ,eACRl3B,MAAO,CACPhE,GAAI,CACFrG,KAAMw2B,OACNqf,UAAU,GAEZ71C,KAAM,CACJA,KAAMw2B,QAERyG,OAAQ,CACNj9B,KAAMw2B,OACNqf,UAAU,GAEZ3Y,OAAQ,CACNl9B,KAAMw2B,OACNqf,UAAU,GAEZ/uC,OAAQ,CACN9G,KAAM41C,OACNtT,QAAS,IAGXd,MAAMC,GAIR,MAAO,CAACC,EAAUC,IACS,WAAjBF,EAAQzhC,MACX4hC,yBAAcC,gCAAoB,iBAAkB,CACnDhkC,IAAK,EACLwI,GAAIo7B,EAAQp7B,GACZyuB,GAAI,KACJC,GAAI,KACJC,GAAI,OACJC,GAAI,KACJ+tB,kBAAmB,UAAUvhB,EAAQ36B,mBACpC,CACDm7B,gCAAoB,OAAQ,CAC1BpG,OAAQ,KACR,aAAc4F,EAAQxE,QACrB,KAAM,EAAGkE,IACZc,gCAAoB,OAAQ,CAC1BpG,OAAQ,OACR,aAAc4F,EAAQvE,QACrB,KAAM,EAAGkE,KACX,EAAGH,MACLW,yBAAcC,gCAAoB,iBAAkB,CACnDhkC,IAAK,EACLwI,GAAIo7B,EAAQp7B,IACX,CACD47B,gCAAoB,OAAQ,CAC1BpG,OAAQ,KACR,aAAc4F,EAAQxE,QACrB,KAAM,EAAGoG,IACZpB,gCAAoB,OAAQ,CAC1BpG,OAAQ,OACR,aAAc4F,EAAQvE,QACrB,KAAM,EAAGoG,KACX,EAAGjC,QCrEZ,MAAM,GAAc,GAEL,UCFf,MACMJ,GAAa,CAAC,QAAS,UACvBE,GAAa,CAAEtjC,IAAK,GACpBujC,GAAa,CAAC,aACdC,GAAa,CAAC,IAAK,OAAQ,SAAU,eAAgB,oBAgB/BC,oCAAiB,CAC3CC,OAAQ,QACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,GAEZjF,cAAe,CACb5wC,KAAMm2C,SACNN,UAAU,GAEZmD,aAAc,CACZh5C,KAAMm2C,WAGR3U,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIR/uB,EAAYzG,IACZ0B,EAAc3F,KACd,gBAAEmE,GAAoBqT,eAAY9M,IAElC,mBAAEoM,GAAuBW,KAEzB45B,EAAsB,CAACvjC,EAA4B8rC,GAAU,KAC7Dv3C,EAAM+rC,YAAY7wB,OACtBzP,EAAEwjC,kBAEFjvC,EAAMumC,cAAc96B,EAAGzL,EAAM+rC,YAAawL,KAGtC95C,EAAU4b,sBAAS,IAAMrZ,EAAM+rC,YAAYtuC,UAC3C,aAAE2tC,EAAF,aAAgBC,EAAhB,aAA8BC,GAAiBG,GAAkBhuC,GAEjE6zB,EAASjY,sBAAS,IAAMrZ,EAAM+rC,YAAYza,SAC1C,YAAEkY,GAAgBqF,GAAiBvd,GAEnCoC,EAAQra,sBAAS,IAAMrZ,EAAM+rC,YAAYrY,OACzCh3B,EAAQ2c,sBAAS,IAAMrZ,EAAM+rC,YAAYrvC,QACzC,UAAE+sC,GAAcqF,GAAepb,EAAOh3B,GAEtCuV,EAAWub,kBAAI,GAErBiP,mBAAM36B,EAAiB,KACjBA,EAAgB5O,QAAU8M,EAAM+rC,YAAY/vC,IAC1CiW,EAAS/e,QAAO+e,EAAS/e,OAAQ,KAIzC,MAAMwK,EAAO2b,sBAAoB,KAC/B,MAAMu/B,EAAyB,CAC7Bh8C,QAAS,GACTC,gBAAiB,OACjBC,aAAc,OACdpE,MAAO,UAET,OAAKsH,EAAM+rC,YAAYruC,KAEhBsC,EAAM+rC,YAAYruC,KAFWk7C,IAKhCC,EAAcj8C,IAClB,MAAMk8C,EAAQ,IAAKp7C,EAAKxK,MAAO0J,WAC/B0G,EAAYnC,cAAc,CACxBnF,GAAIgE,EAAM+rC,YAAY/vC,GACtBgE,MAAO,CAAEtC,KAAMo7C,KAGjBrkC,KAGIujC,EAAiB,KACrB,IAAKh4C,EAAM+rC,YAAYruC,KAAM,OAE7B,MAAMu6C,EAAWj4C,EAAM+rC,YAAYruC,KAAKd,QAAQwC,WAAW,WAAY,IAClE64C,IACH30C,EAAYjC,mBAAmB,CAAErF,GAAIgE,EAAM+rC,YAAY/vC,GAAIsF,SAAU,SACrEmT,MAIEskC,EAAuBvrB,mBACvBwrB,EAAY,KAChB/mC,EAAS/e,OAAQ,EACjB+lD,sBAAS,IAAMF,EAAqB7lD,OAAS6lD,EAAqB7lD,MAAMqkB,UAG1E,MAAO,CAAC8f,EAAUC,KAChB,MAAMkY,EAAyBrB,8BAAkB,eAEjD,OAAQ5W,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,yBAA0B,CAAE,KAAQtX,EAAQ2U,YAAY7wB,QAChFje,MAAOoxC,4BAAgB,CACrBlyC,IAAKi7B,EAAQ2U,YAAY5vC,IAAM,KAC/BD,KAAMk7B,EAAQ2U,YAAY7vC,KAAO,KACjCxB,MAAO08B,EAAQ2U,YAAYrxC,MAAQ,KACnCC,OAAQy8B,EAAQ2U,YAAYpxC,OAAS,QAEtC,CACDi9B,gCAAoB,MAAO,CACzBf,MAAO,iBACP55B,MAAOoxC,4BAAgB,CAAEoB,UAAW,UAAUrY,EAAQ2U,YAAYtvC,gBACjE,CACD2xC,6BAAiB7W,yBAAcC,gCAAoB,MAAO,CACxDX,MAAO,kBACP55B,MAAOoxC,4BAAgB,CACrB7xC,QAAS46B,EAAQ2U,YAAYvvC,QAC7BZ,OAAQ+7B,mBAAO6R,GAAe,eAAe7R,mBAAO6R,MAAkB,GACtEiG,UAAW9X,mBAAO8R,GAClBnxC,MAAOq/B,mBAAOj6B,GAAMZ,aACpBu7C,WAAY1gB,mBAAOj6B,GAAMb,kBAE3B2xC,YAAalX,EAAO,KAAOA,EAAO,GAAKkB,GAAUwW,EAAoBxW,IACrEoX,aAActY,EAAO,KAAOA,EAAO,GAAKkB,GAAUwW,EAAoBxW,IACtE0gB,WAAY5hB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBwgB,MACvD,EACAzhB,yBAAcC,gCAAoB,MAAO,CACxCmU,SAAU,UACVjxC,MAAO08B,EAAQ2U,YAAYrxC,MAC3BC,OAAQy8B,EAAQ2U,YAAYpxC,QAC3B,CACAy8B,EAAQ2U,YAAYoN,UAChB5hB,yBAAcC,gCAAoB,OAAQV,GAAY,CACrD4D,yBAAa0e,GAAc,CACzBp9C,GAAI,qBAAqBo7B,EAAQ2U,YAAY/vC,GAC7CrG,KAAMyhC,EAAQ2U,YAAYoN,SAASxjD,KACnCi9B,OAAQwE,EAAQ2U,YAAYoN,SAAS7gD,MAAM,GAC3Cu6B,OAAQuE,EAAQ2U,YAAYoN,SAAS7gD,MAAM,GAC3CmE,OAAQ26B,EAAQ2U,YAAYoN,SAAS18C,QACpC,KAAM,EAAG,CAAC,KAAM,OAAQ,SAAU,SAAU,cAEjDovC,gCAAoB,IAAI,GAC5BjU,gCAAoB,IAAK,CACvB6X,UAAW,SAASrY,EAAQ2U,YAAYrxC,MAAQ08B,EAAQ2U,YAAY3vC,QAAQ,OAAOg7B,EAAQ2U,YAAYpxC,OAASy8B,EAAQ2U,YAAY3vC,QAAQ,0CAC3I,CACDw7B,gCAAoB,OAAQ,CAC1Bf,MAAO,aACP,gBAAiB,qBACjB,iBAAkB,OAClB,oBAAqB,IACrBrkC,EAAG4kC,EAAQ2U,YAAY1vC,KACvBC,KAAM86B,EAAQ2U,YAAYoN,SAAW,0BAA0B/hB,EAAQ2U,YAAY/vC,MAAQo7B,EAAQ2U,YAAYzvC,KAC/GsvC,OAAQjU,mBAAO2T,GACf,eAAgB3T,mBAAOyT,GACvB,mBAA6C,WAAzBzT,mBAAO0T,GAA6B,OAAS,OAChE,KAAM,EAAGrU,KACX,EAAGD,KACL,EAAGH,KACNgB,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,aAAc,CAAC/W,mBAAOj6B,GAAMhF,MAAO,CAAE,SAAYuZ,EAAS/e,OAASykC,mBAAOj6B,GAAMd,aACvG,CACAqV,EAAS/e,OAASykC,mBAAOj6B,GAAMd,SAC3B26B,yBAAc0U,yBAAauM,GAAmB,CAC7ChlD,IAAK,EACLmlC,QAAS,uBACTnL,IAAKurB,EACL93C,UAAWm2B,EAAQ2U,YAAY/vC,GAC/Bc,aAAc66B,mBAAOj6B,GAAMZ,aAC3BD,gBAAiB86B,mBAAOj6B,GAAMb,gBAC9BoV,UAAWmlB,EAAQ2U,YAAY7wB,KAC/BhoB,MAAOykC,mBAAOj6B,GAAMd,QACpB87C,SAAUphB,EAAO,KAAOA,EAAO,GAAKpkC,GAAS2lD,EAAW3lD,IACxDmmD,OAAQ/hB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBwf,KACpDxJ,YAAalX,EAAO,KAAOA,EAAO,GAAKkB,GAAUwW,EAAoBxW,GAAQ,KAC5E,KAAM,EAAG,CAAC,YAAa,eAAgB,kBAAmB,WAAY,WACzEqT,gCAAoB,IAAI,IAC3B,IACF,KAAM,CACP,CAAC2D,EAAwBpY,EAAQuX,iBAElC,IACF,O,UC/LL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAM/X,GAAa,CAAC,KAAM,cAAe,eAAgB,OAAQ,QAC3DE,GAAa,CAAC,IAAK,OAAQ,aAKLG,oCAAiB,CAC3CC,OAAQ,kBACRl3B,MAAO,CACPhE,GAAI,CACFrG,KAAMw2B,OACNqf,UAAU,GAEZr0B,SAAU,CACRxhB,KAAMw2B,OACNqf,UAAU,GAEZ71C,KAAM,CACJA,KAAMw2B,OACNqf,UAAU,GAEZlzC,MAAO,CACL3C,KAAMw2B,QAERsc,SAAU,CACR9yC,KAAM41C,OACNC,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIRkiB,EAAU,CACdC,IAAK,uCACL1O,MAAO,qBAEH2O,EAAY,CAChB,cAAe,IACf,YAAa,GAGTn9C,EAAOgd,sBAAS,IAAMigC,EAAQt5C,EAAMrK,OACpC8G,EAAS4c,sBAAS,IAAMmgC,EAAU,GAAGx5C,EAAMrK,QAAQqK,EAAMmX,aAAe,GACxE1c,EAAO4e,sBAAS,IAAMrZ,EAAMyoC,SAAW,EAAI,EAAIzoC,EAAMyoC,UAE3D,MAAO,CAACpR,EAAUC,KACRC,yBAAcC,gCAAoB,SAAU,CAClDx7B,GAAI,GAAGo7B,EAAQp7B,MAAMo7B,EAAQzhC,QAAQyhC,EAAQjgB,WAC7CsiC,YAAa,iBACbC,OAAQ,OACRC,YAA4B,EAAfhiB,mBAAOl9B,GACpBm/C,aAA6B,EAAfjiB,mBAAOl9B,GACrBo/C,KAAqB,IAAfliB,mBAAOl9B,GACbq/C,KAAqB,IAAfniB,mBAAOl9B,IACZ,CACDm9B,gCAAoB,OAAQ,CAC1BplC,EAAGmlC,mBAAOt7B,GACVC,KAAM86B,EAAQ9+B,MACdm3C,UAAW,SAAwB,GAAf9X,mBAAOl9B,OAA+B,GAAfk9B,mBAAOl9B,cAAuBk9B,mBAAOl7B,aAC/E,KAAM,EAAGq6B,KACX,EAAGF,QC/DR,MAAM,GAAc,GAEL,UCFf,MACMA,GAAa,CAAC,QAAS,UACvBE,GAAa,CAAC,IAAK,SAAU,eAAgB,mBAAoB,eAAgB,cACjFC,GAAa,CAAC,KAWQE,oCAAiB,CAC3CC,OAAQ,QACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,GAEZjF,cAAe,CACb5wC,KAAMm2C,SACNN,UAAU,GAEZmD,aAAc,CACZh5C,KAAMm2C,WAGR3U,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIR4X,EAAuBvjC,IACvBzL,EAAM+rC,YAAY7wB,OACtBzP,EAAEwjC,kBAEFjvC,EAAMumC,cAAc96B,EAAGzL,EAAM+rC,eAGzBza,EAASjY,sBAAS,IAAMrZ,EAAM+rC,YAAYza,SAC1C,YAAEkY,GAAgBqF,GAAiBvd,GAEnCyoB,EAAW1gC,sBAAS,KACxB,MAAM3e,EAAQ8F,KAAK69B,IAAIr+B,EAAM+rC,YAAY90C,MAAM,GAAK+I,EAAM+rC,YAAYhvC,IAAI,IAC1E,OAAOrC,EAAQ,GAAK,GAAKA,IAErBs/C,EAAY3gC,sBAAS,KACzB,MAAM1e,EAAS6F,KAAK69B,IAAIr+B,EAAM+rC,YAAY90C,MAAM,GAAK+I,EAAM+rC,YAAYhvC,IAAI,IAC3E,OAAOpC,EAAS,GAAK,GAAKA,IAGtBs/C,EAAgB5gC,sBAAS,IAAkC,WAA5BrZ,EAAM+rC,YAAY9uC,MAAqB,OAAS,OAE/EZ,EAAOgd,sBAAS,IACbvJ,GAAmB9P,EAAM+rC,cAGlC,MAAO,CAAC1U,EAAUC,KAChB,MAAMkY,EAAyBrB,8BAAkB,eAEjD,OAAQ5W,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,yBAA0B,CAAE,KAAQtX,EAAQ2U,YAAY7wB,QAChFje,MAAOoxC,4BAAgB,CACrBlyC,IAAKi7B,EAAQ2U,YAAY5vC,IAAM,KAC/BD,KAAMk7B,EAAQ2U,YAAY7vC,KAAO,QAElC,CACD07B,gCAAoB,MAAO,CACzBf,MAAO,kBACP55B,MAAOoxC,4BAAgB,CAAEzyC,OAAQ+7B,mBAAO6R,GAAe,eAAe7R,mBAAO6R,MAAkB,KAC/FgF,YAAalX,EAAO,KAAOA,EAAO,GAAKkB,GAAUwW,EAAoBxW,IACrEoX,aAActY,EAAO,KAAOA,EAAO,GAAKkB,GAAUwW,EAAoBxW,KACrE,EACAjB,yBAAcC,gCAAoB,MAAO,CACxCmU,SAAU,UACVjxC,MAAOi9B,mBAAOoiB,GACdp/C,OAAQg9B,mBAAOqiB,IACd,CACDpiB,gCAAoB,OAAQ,KAAM,CAC/BR,EAAQ2U,YAAY/uC,OAAO,IACvBu6B,yBAAc0U,yBAAaiO,GAAiB,CAC3C1mD,IAAK,EACLwI,GAAIo7B,EAAQ2U,YAAY/vC,GACxBmb,SAAU,QACVxhB,KAAMyhC,EAAQ2U,YAAY/uC,OAAO,GACjC1E,MAAO8+B,EAAQ2U,YAAYzzC,MAC3BmwC,SAAUrR,EAAQ2U,YAAYrxC,OAC7B,KAAM,EAAG,CAAC,KAAM,OAAQ,QAAS,cACpCmxC,gCAAoB,IAAI,GAC3BzU,EAAQ2U,YAAY/uC,OAAO,IACvBu6B,yBAAc0U,yBAAaiO,GAAiB,CAC3C1mD,IAAK,EACLwI,GAAIo7B,EAAQ2U,YAAY/vC,GACxBmb,SAAU,MACVxhB,KAAMyhC,EAAQ2U,YAAY/uC,OAAO,GACjC1E,MAAO8+B,EAAQ2U,YAAYzzC,MAC3BmwC,SAAUrR,EAAQ2U,YAAYrxC,OAC7B,KAAM,EAAG,CAAC,KAAM,OAAQ,QAAS,cACpCmxC,gCAAoB,IAAI,KAE9BjU,gCAAoB,OAAQ,CAC1Bf,MAAO,aACPrkC,EAAGmlC,mBAAOt7B,GACVuvC,OAAQxU,EAAQ2U,YAAYzzC,MAC5B,eAAgB8+B,EAAQ2U,YAAYrxC,MACpC,mBAAoBi9B,mBAAOsiB,GAC3B39C,KAAM,OACN,eAAgB86B,EAAQ2U,YAAY/uC,OAAO,GAAK,QAAQo6B,EAAQ2U,YAAY/vC,MAAMo7B,EAAQ2U,YAAY/uC,OAAO,YAAc,GAC3H,aAAco6B,EAAQ2U,YAAY/uC,OAAO,GAAK,QAAQo6B,EAAQ2U,YAAY/vC,MAAMo7B,EAAQ2U,YAAY/uC,OAAO,UAAY,IACtH,KAAM,EAAG85B,IACZsX,4BAAgBxW,gCAAoB,OAAQ,CAC1Cf,MAAO,YACPrkC,EAAGmlC,mBAAOt7B,GACVuvC,OAAQ,cACR,eAAgB,KAChBtvC,KAAM,QACL,KAAM,EAAGy6B,IAAa,CACvB,CAACyY,EAAwBpY,EAAQuX,iBAElC,EAAG/X,MACL,KACF,O,UCzHL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,U,aCIaK,I,UAAAA,6BAAiB,CAC3CC,OAAQ,QACRl3B,MAAO,CACPtF,MAAO,CACL/E,KAAM41C,OACNC,UAAU,GAEZ7wC,OAAQ,CACNhF,KAAM41C,OACNC,UAAU,GAEZ71C,KAAM,CACJA,KAAMw2B,OACNqf,UAAU,GAEZn7C,KAAM,CACJsF,KAAM7E,OACN06C,UAAU,GAEZz1B,QAAS,CACPpgB,KAAM7E,QAERuM,WAAY,CACV1H,KAAMc,MACN+0C,UAAU,GAEZ31B,QAAS,CACPlgB,KAAMc,MACN+0C,UAAU,GAEZ71B,UAAW,CACThgB,KAAMw2B,QAERgJ,OAAQ,CACNx/B,KAAMw2B,SAGRgL,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIR+iB,EAAW3sB,mBACX4sB,EAAaC,oBAAO/e,KAAwB9N,iBAAI,GAEtD,IAAIgT,EAEJ,MAAM8Z,EAAcjhC,sBAAS,IACvBrZ,EAAMm1B,OAAen1B,EAAMrF,OAAS,GACjCqF,EAAMrF,QAGT4/C,EAAkB,KAAM,IAAMv6C,EAAM3P,KAAMylB,OAAQ9V,EAAM3P,KAAKylB,OAAO,KAEpE0kC,EAAa,KACjB,MAAMC,EAAez6C,EAAM+V,SAAW,GACtC,MAAO,IACF0kC,EACH//C,MAAOsF,EAAMtF,MAAQ0/C,EAAWlnD,MAChCyH,OAAQ2/C,EAAYpnD,MAAQknD,EAAWlnD,QAIrCwnD,EAAc,KAClB,IAAKP,EAASjnD,MAAO,OAErB,MAAM6iB,EAAUykC,IACG,QAAfx6C,EAAMrK,OAAgB6qC,EAAQ,IAAIma,QAASR,EAASjnD,MAAO8M,EAAM3P,KAAM0lB,IACxD,SAAf/V,EAAMrK,OAAiB6qC,EAAQ,IAAIoa,QAAUT,EAASjnD,MAAO8M,EAAM3P,KAAM0lB,IAC1D,QAAf/V,EAAMrK,OAAgB6qC,EAAQ,IAAIqa,QAASV,EAASjnD,MAAOqnD,IAAmBxkC,KAG9E+kC,EAAc,KAClB,IAAKta,EAEH,YADAka,IAGF,MAAM3kC,EAAUykC,IACVnqD,EAAsB,QAAf2P,EAAMrK,KAAiB4kD,IAAoBv6C,EAAM3P,KAC9DmwC,EAAMr4B,OAAO9X,EAAM0lB,IAGrB0mB,mBAAM,CACJ,IAAMz8B,EAAMtF,MACZ,IAAMsF,EAAMrF,OACZ,IAAMqF,EAAM3P,KACZ,IAAM2P,EAAM+V,QACZqkC,GACCU,GAEH33B,uBAAUu3B,GAEV,MAAMK,EAAc1hC,sBAAS,KAC3B,IAAI2hC,EAAmB,GACvB,GAAIh7C,EAAM3C,WAAWxM,QAAU,GAAImqD,EAASh7C,EAAM3C,gBAC7C,GAAgC,IAA5B2C,EAAM3C,WAAWxM,OAAcmqD,EAASj8C,IAAUiB,EAAM3C,WAAW,IAAI23B,UAAU,IAAI32B,IAAI/F,GAASA,EAAM+2B,mBAC5G,CACH,MAAMhmB,EAAMrJ,EAAM3C,WAAWxM,OACvBokC,EAAal2B,IAAUiB,EAAM3C,WAAWgM,EAAM,IAAI2rB,UAAU,GAAS3rB,GAAKhL,IAAI/F,GAASA,EAAM+2B,eACnG2rB,EAAS,IAAIh7C,EAAM3C,WAAWpJ,MAAM,EAAGoV,EAAM,MAAO4rB,GAEtD,OAAO+lB,IAKHC,EAAc,KAClB,GAAKd,EAASjnD,MAEd,IAAK,IAAIvC,EAAI,EAAGA,EAAI,GAAIA,IACtBwpD,EAASjnD,MAAM+J,MAAMi+C,YAAY,kBAAiBvqD,EAAI,GAAKoqD,EAAY7nD,MAAMvC,KAIjF8rC,mBAAMse,EAAaE,GACnB93B,uBAAU83B,GAGV,MAAME,EAAkB,KACjBhB,EAASjnD,OACV8M,EAAM2V,WAAWwkC,EAASjnD,MAAM+J,MAAMi+C,YAAY,eAAgBl7C,EAAM2V,YAM9E,OAHA8mB,mBAAM,IAAMz8B,EAAM2V,UAAWwlC,GAC7Bh4B,uBAAUg4B,GAEH,CAAC9jB,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,QACP55B,MAAOoxC,4BAAgB,CAAE+M,cAAkC,QAAnBhkB,EAAQjC,OAAmB,iBAAmB,YACrF,CACDyC,gCAAoB,MAAO,CACzBf,MAAO,gBACP8B,QAAS,WACTnL,IAAK2sB,EACLl9C,MAAOoxC,4BAAgB,CACrB3zC,MAAO08B,EAAQ18B,MAAQ,KACvBC,OAAQg9B,mBAAO2iB,GAAe,KAC9B7K,UAAW,SAAS,EAAI9X,mBAAOyiB,SAEhC,KAAM,GACRhjB,EAAQjC,QACJoC,yBAAcC,gCAAoB,MAAO,CACxChkC,IAAK,EACLqjC,MAAO,UACP55B,MAAOoxC,4BAAgB,CAAEoB,UAAW,SAAS,EAAI9X,mBAAOyiB,SACvD,EACA7iB,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYN,EAAQvhB,QAAS,CAACsf,EAAQ90B,KACpFk3B,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,SACPrjC,IAAK6M,EACLpD,MAAOoxC,4BAAgB,CAAE/1C,MAAO8+B,EAAQzhB,aACvC,CACDiiB,gCAAoB,MAAO,CACzBf,MAAO,QACP55B,MAAOoxC,4BAAgB,CAAE9wC,gBAAiBo6B,mBAAOojB,GAAa16C,MAC7D,KAAM,GACTy6B,6BAAiB,IAAMjD,6BAAiB1C,GAAS,IAChD,KACD,OACH,IACH0W,gCAAoB,IAAI,IAC3B,Q,oBCxKL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCGa5U,gCAAiB,CAC3CC,OAAQ,QACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,GAEZjF,cAAe,CACb5wC,KAAMm2C,SACNN,UAAU,GAEZmD,aAAc,CACZh5C,KAAMm2C,WAGR3U,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIR4X,EAAuBvjC,IACvBzL,EAAM+rC,YAAY7wB,OACtBzP,EAAEwjC,kBAEFjvC,EAAMumC,cAAc96B,EAAGzL,EAAM+rC,eAGzBsP,EAAiB,KACrBlH,GAAQhc,KAAK+b,GAAcoH,yBAG7B,MAAO,CAACjkB,EAAUC,KAChB,MAAMkY,EAAyBrB,8BAAkB,eAEjD,OAAQ5W,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,yBAA0B,CAAE,KAAQtX,EAAQ2U,YAAY7wB,QAChFje,MAAOoxC,4BAAgB,CACrBlyC,IAAKi7B,EAAQ2U,YAAY5vC,IAAM,KAC/BD,KAAMk7B,EAAQ2U,YAAY7vC,KAAO,KACjCxB,MAAO08B,EAAQ2U,YAAYrxC,MAAQ,KACnCC,OAAQy8B,EAAQ2U,YAAYpxC,OAAS,QAEtC,CACDi9B,gCAAoB,MAAO,CACzBf,MAAO,iBACP55B,MAAOoxC,4BAAgB,CAAEoB,UAAW,UAAUrY,EAAQ2U,YAAYtvC,gBACjE,CACD2xC,6BAAiB7W,yBAAcC,gCAAoB,MAAO,CACxDX,MAAO,kBACP55B,MAAOoxC,4BAAgB,CACrB9wC,gBAAiB65B,EAAQ2U,YAAYzvC,OAEvCkyC,YAAalX,EAAO,KAAOA,EAAO,GAAKkB,GAAUwW,EAAoBxW,IACrEoX,aAActY,EAAO,KAAOA,EAAO,GAAKkB,GAAUwW,EAAoBxW,IACtE0gB,WAAY5hB,EAAO,KAAOA,EAAO,GAAMkB,GAAiB6iB,MACvD,CACD3gB,yBAAa6d,GAAgB,CAC3B79C,MAAO08B,EAAQ2U,YAAYrxC,MAC3BC,OAAQy8B,EAAQ2U,YAAYpxC,OAC5B8C,QAAS25B,EAAQ2U,YAAYtuC,SAC5B,KAAM,EAAG,CAAC,QAAS,SAAU,YAChCi9B,yBAAa6gB,GAAO,CAClB7gD,MAAO08B,EAAQ2U,YAAYrxC,MAC3BC,OAAQy8B,EAAQ2U,YAAYpxC,OAC5BhF,KAAMyhC,EAAQ2U,YAAYr2B,UAC1BrlB,KAAM+mC,EAAQ2U,YAAY17C,KAC1B0lB,QAASqhB,EAAQ2U,YAAYh2B,QAC7B1Y,WAAY+5B,EAAQ2U,YAAY1uC,WAChCsY,UAAWyhB,EAAQ2U,YAAYp2B,UAC/BE,QAASuhB,EAAQ2U,YAAY17C,KAAKwlB,QAClCsf,OAAQiC,EAAQ2U,YAAY5W,QAAU,IACrC,KAAM,EAAG,CAAC,QAAS,SAAU,OAAQ,OAAQ,UAAW,aAAc,YAAa,UAAW,YAChG,KAAM,CACP,CAACqa,EAAwBpY,EAAQuX,iBAElC,IACF,O,UCnFL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCDR,MAAM6M,GAAgBv+C,IAC3B,IAAKA,EAAO,MAAO,GACnB,MAAM,KACJzD,EADI,GAEJC,EAFI,UAGJC,EAHI,cAIJC,EAJI,MAKJrB,EALI,UAMJC,EANI,SAOJC,EAPI,SAQJC,EARI,MASJC,GACEuE,EAEJ,IAAIw+C,EAAiB,GAAG/hD,EAAY,YAAc,MAAMC,EAAgB,eAAiB,KAGzF,MAFuB,MAAnB8hD,IAAwBA,EAAiB,QAEtC,CACLC,WAAYliD,EAAO,OAAS,SAC5BmiD,UAAWliD,EAAK,SAAW,SAC3BgiD,iBACAnjD,MAAOA,GAAS,OAChBiF,gBAAiBhF,GAAa,GAC9Bi4B,SAAUh4B,GAAY,OACtB6/C,WAAY5/C,GAAY,OACxByC,UAAWxC,GAAS,SAIXkjD,GAAcl+C,GAClBA,EAAK+S,QAAQ,MAAO,SAASA,QAAQ,KAAM,UChCpCzL,WACd,MAAM62C,EAAYxiC,sBAAS,KACzB,MAAMwiC,EAAY,GAElB,IAAK,IAAIlrD,EAAI,EAAGA,EAAIqU,EAAM9R,MAAMrC,OAAQF,IAAK,CAC3C,MAAM4lB,EAAWvR,EAAM9R,MAAMvC,GAE7B,IAAK,IAAIkB,EAAI,EAAGA,EAAI0kB,EAAS1lB,OAAQgB,IAAK,CACxC,MAAMokC,EAAO1f,EAAS1kB,GAEtB,GAAIokC,EAAKzf,QAAU,GAAKyf,EAAKxf,QAAU,EACrC,IAAK,IAAIJ,EAAM1lB,EAAG0lB,EAAM1lB,EAAIslC,EAAKxf,QAASJ,IACxC,IAAK,IAAIC,EAAMD,IAAQ1lB,EAAIkB,EAAI,EAAIA,EAAGykB,EAAMzkB,EAAIokC,EAAKzf,QAASF,IAC5DulC,EAAU1qD,KAAK,GAAGklB,KAAOC,MAMnC,OAAOulC,IAGT,MAAO,CACLA,cCtBYz+C,OACd,MAAM0+C,EAAgBtuB,iBAAI,CAAC,GAAI,KAO/B,OANAiP,mBAAM,IAAMr/B,EAAMlK,MAAO,KACnBkK,EAAMlK,QACR4oD,EAAc5oD,MAAQwc,GAAsBtS,EAAMlK,MAAMoF,SAEzD,CAAEyjD,WAAW,IAET,CACLD,kBCZJ,MACMllB,GAAa,CAAC,aAMQK,oCAAiB,CAC3CC,OAAQ,iBACRl3B,MAAO,CACP9M,MAAO,CACLyC,KAAMw2B,OACN8L,QAAS,IAEX+jB,gBAAiB,CACfrmD,KAAM,CAACsgD,QAAS9pB,QAChB8L,SAAS,IAGXC,MAAO,CAAC,cAAe,mBACvBf,MAAMC,GAAS,KAAEe,IAKnB,MAAMn4B,EAAQo3B,EAMR6kB,EAAczuB,mBACd9vB,EAAO8vB,iBAAI,IACXrpB,EAAUqpB,kBAAI,GAIpBiP,mBAAM,IAAMz8B,EAAM9M,MAAO,KACnBiR,EAAQjR,QACZwK,EAAKxK,MAAQ8M,EAAM9M,MACf+oD,EAAY/oD,QAAO+oD,EAAY/oD,MAAMojD,UAAYt2C,EAAM9M,SAC1D,CAAE6oD,WAAW,IAEhB,MAAM1F,EAAc,KAClB,IAAK4F,EAAY/oD,MAAO,OACxB,MAAMwK,EAAOu+C,EAAY/oD,MAAMojD,UAC/Bne,EAAK,cAAez6B,IAIhB64C,EAAc,KAClBpyC,EAAQjR,OAAQ,EAEX+oD,EAAY/oD,QACjB+oD,EAAY/oD,MAAMgpD,QAAWzwC,IAE3B,GADAA,EAAEuW,kBACGvW,EAAES,cAAe,OAEtB,MAAM0X,EAAyBnY,EAAES,cAAcyX,MAAM,GAEjDC,GAA0D,WAAhCA,EAAuBC,MAAqD,eAAhCD,EAAuBjuB,MAC/FiuB,EAAuBG,YAAYrmB,IACjC,MAAMwO,EAAgBD,GAA2BvO,GACjD,GAA6B,kBAAlBwO,EAA4B,OAEvC,MAAMiwC,EAAYhwC,GAA0BzO,GAC5C,GAAIy+C,EAGF,OAFAhkB,EAAK,kBAAmBgkB,QACpBF,EAAY/oD,QAAO+oD,EAAY/oD,MAAMojD,UAAY6F,EAAU,GAAG,KAIpEhkB,EAAK,cAAez6B,GACpB5C,SAASg8C,YAAY,cAAc,EAAOp5C,QAO5C84C,EAAa,KACjBryC,EAAQjR,OAAQ,EACZ+oD,EAAY/oD,QAAO+oD,EAAY/oD,MAAMgpD,QAAU,OAQrD,OAJA94B,yBAAY,KACN64B,EAAY/oD,QAAO+oD,EAAY/oD,MAAMgpD,QAAU,QAG9C,CAAC7kB,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,kBACP8B,QAAS,cACTnL,IAAKyuB,EACLG,QAAS7F,EACT8C,OAAQ7C,EACR6F,QAAS/kB,EAAO,KAAOA,EAAO,GAAMkB,GAAiB6d,KACrDC,UAAW54C,EAAKxK,OACf,KAAM,GAAI0jC,Q,UChGf,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMA,GAAa,CACjBpjC,IAAK,EACLqjC,MAAO,WAEHC,GAAa,CAAC,eACdC,GAAa,CAAC,SACdC,GAAa,CAAC,UAAW,UAAW,kBAAmB,cAAe,gBACtEgC,GAAa,CAAC,aAiBQ/B,oCAAiB,CAC3CC,OAAQ,gBACRl3B,MAAO,CACP3P,KAAM,CACJsF,KAAMc,MACN+0C,UAAU,GAEZ9wC,MAAO,CACL/E,KAAM41C,OACNC,UAAU,GAEZv0B,cAAe,CACbthB,KAAM41C,OACNC,UAAU,GAEZ50B,UAAW,CACTjhB,KAAMc,MACN+0C,UAAU,GAEZ/tC,QAAS,CACP9H,KAAM7E,OACN06C,UAAU,GAEZpuC,MAAO,CACLzH,KAAM7E,QAERmhB,SAAU,CACRtc,KAAMsgD,QACNhe,SAAS,IAGXC,MAAO,CAAC,SAAU,kBAAmB,uBACrCf,MAAMC,GAAS,KAAEe,IAMnB,MAAMn4B,EAAQo3B,GAMR,YAAEl1B,GAAgBiT,eAAYvT,KAE9B06C,EAAgB9uB,kBAAI,GACpB+uB,EAAY/uB,iBAAc,IAC1BgvB,EAAUhvB,iBAAc,IAExBivB,EAAapjC,sBAAwB,CACzCvmB,MACE,OAAOkN,EAAM3P,MAEfqsD,IAAIC,GACFxkB,EAAK,SAAUwkB,MAKbv/C,EAAQic,sBAAS,IAAMrZ,EAAM5C,QAC7B,cAAE0+C,GAAkBc,GAAiBx/C,GAGrCy/C,EAAcrvB,iBAAc,IAC5BsvB,EAAazjC,sBAAS,IAAMwjC,EAAY3pD,MAAM6pD,OAAO,CAACC,EAAGC,IAAMD,EAAIC,IACzExgB,mBAAM,CACJ,IAAMz8B,EAAM4W,UACZ,IAAM5W,EAAMtF,OACX,KACDmiD,EAAY3pD,MAAQ8M,EAAM4W,UAAUvY,IAAIxC,GAAQA,EAAOmE,EAAMtF,QAC5D,CAAEqhD,WAAW,IAIhB,MAAMmB,EAAsB,KAC1BX,EAAUrpD,MAAQ,GAClBspD,EAAQtpD,MAAQ,IAGlBupC,mBAAM,IAAMz8B,EAAMiS,SAAU,KACrBjS,EAAMiS,UAAUirC,MAIvB,MAAMC,EAAmB9jC,sBAAS,KAChC,MAAM8jC,EAA6B,GACnC,IAAK,IAAIxsD,EAAI,EAAGA,EAAIksD,EAAY3pD,MAAMrC,OAAS,EAAGF,IAAK,CACrD,MAAM0E,EAAMwnD,EAAY3pD,MAAMe,MAAM,EAAGtD,GAAGosD,OAAO,CAACC,EAAGC,IAAOD,EAAIC,GAChEE,EAAiBhsD,KAAKkE,GAExB,OAAO8nD,IAIHn4C,EAAQqU,sBAAS,IAAMrZ,EAAM3P,OAC7B,UAAEwrD,GAAcuB,GAAap4C,GAG7Bq4C,EAAgBhkC,sBAAS,KAC7B,IAAKkjC,EAAUrpD,MAAMrC,OAAQ,MAAO,GACpC,MAAOmjC,EAAQC,GAAUsoB,EAAUrpD,MAEnC,IAAKspD,EAAQtpD,MAAMrC,OAAQ,MAAO,CAAC,GAAGmjC,KAAUC,KAChD,MAAOC,EAAMC,GAAQqoB,EAAQtpD,MAE7B,GAAI8gC,IAAWE,GAAQD,IAAWE,EAAM,MAAO,CAAC,GAAGH,KAAUC,KAE7D,MAAMopB,EAAgB,GAEhBpvC,EAAOzN,KAAKC,IAAIuzB,EAAQE,GACxB/lB,EAAO3N,KAAKC,IAAIwzB,EAAQE,GACxBjmB,EAAO1N,KAAK+M,IAAIymB,EAAQE,GACxB9lB,EAAO5N,KAAK+M,IAAI0mB,EAAQE,GAE9B,IAAK,IAAIxjC,EAAI,EAAGA,EAAI8rD,EAAWvpD,MAAMrC,OAAQF,IAAK,CAChD,MAAM4lB,EAAWkmC,EAAWvpD,MAAMvC,GAClC,IAAK,IAAIkB,EAAI,EAAGA,EAAI0kB,EAAS1lB,OAAQgB,IAC/BlB,GAAKsd,GAAQtd,GAAKud,GAAQrc,GAAKsc,GAAQtc,GAAKuc,GAAMivC,EAAclsD,KAAK,GAAGR,KAAKkB,KAGrF,OAAOwrD,IAGT5gB,mBAAM4gB,EAAe,CAACnqD,EAAOkpC,KACvBkhB,qBAAQpqD,EAAOkpC,IACnBjE,EAAK,sBAAuBklB,EAAcnqD,SAI5C,MAAMqqD,EAAclkC,sBAAS,IACvBgkC,EAAcnqD,MAAMrC,OAAS,EAAU,KACpCwsD,EAAcnqD,MAAM,IAIvBoyC,EAAgB,IAAMgX,EAAcppD,OAAQ,EAE5CsqD,EAAsB,CAAC/xC,EAAegyC,EAAkBC,KAC3C,IAAbjyC,EAAEkyC,SACJnB,EAAQtpD,MAAQ,GAChBopD,EAAcppD,OAAQ,EACtBqpD,EAAUrpD,MAAQ,CAACuqD,EAAUC,KAI3BE,EAAuB,CAACH,EAAkBC,KACzCpB,EAAcppD,QACnBspD,EAAQtpD,MAAQ,CAACuqD,EAAUC,KAG7Bv6B,uBAAU,KACRroB,SAAS4W,iBAAiB,UAAW4zB,KAEvCliB,yBAAY,KACVtoB,SAASuoB,oBAAoB,UAAWiiB,KAI1C,MAAMuY,EAAa,CAACJ,EAAkBC,IAAqB7B,EAAU3oD,MAAMsL,SAAS,GAAGi/C,KAAYC,KAG7FI,EAAaz9C,IACjB,MAAM09C,EAAStB,EAAWvpD,MAAMrC,OAAS,EACzC0rD,EAAUrpD,MAAQ,CAAC,EAAGmN,GACtBm8C,EAAQtpD,MAAQ,CAAC6qD,EAAQ19C,IAIrB29C,EAAa39C,IACjB,MAAM49C,EAASxB,EAAWvpD,MAAMmN,GAAOxP,OAAS,EAChD0rD,EAAUrpD,MAAQ,CAACmN,EAAO,GAC1Bm8C,EAAQtpD,MAAQ,CAACmN,EAAO49C,IAIpBtpD,EAAY,KAChB,MAAMopD,EAAStB,EAAWvpD,MAAMrC,OAAS,EACnCotD,EAASxB,EAAWvpD,MAAM6qD,GAAQltD,OAAS,EACjD0rD,EAAUrpD,MAAQ,CAAC,EAAG,GACtBspD,EAAQtpD,MAAQ,CAAC6qD,EAAQE,IAIrBC,EAAaT,IACjB,MAAMU,EAA6Bj/C,KAAKG,MAAMH,KAAKC,UAAUs9C,EAAWvpD,QAElEkrD,EAAc3B,EAAWvpD,MAAMuqD,GAC/BY,EAAe,GACrB,IAAK,IAAI1tD,EAAI,EAAGA,EAAIytD,EAAYvtD,OAAQF,IAClCktD,EAAWJ,EAAU9sD,IAAI0tD,EAAaltD,KAAKR,GAGjD,IAAK,MAAM0E,KAAOgpD,EAChB,IAAK,IAAI1tD,EAAI8sD,EAAU9sD,GAAK,EAAGA,IAC7B,IAAKktD,EAAWltD,EAAG0E,GAAM,CACvB8oD,EAAYxtD,GAAG0E,GAAKohB,QAAU0nC,EAAYxtD,GAAG0E,GAAKohB,QAAU,EAC5D,MAKN0nC,EAAYpsD,OAAO0rD,EAAU,GAC7BhB,EAAWvpD,MAAQirD,GAIfG,EAAaZ,IACjB,MAAMS,EAA6Bj/C,KAAKG,MAAMH,KAAKC,UAAUs9C,EAAWvpD,QAElEmrD,EAAe,GACrB,IAAK,IAAI1tD,EAAI,EAAGA,EAAI8rD,EAAWvpD,MAAMrC,OAAQF,IACvCktD,EAAWltD,EAAG+sD,IAAWW,EAAaltD,KAAKR,GAGjD,IAAK,MAAM0E,KAAOgpD,EAChB,IAAK,IAAI1tD,EAAI+sD,EAAU/sD,GAAK,EAAGA,IAC7B,IAAKktD,EAAWxoD,EAAK1E,GAAI,CACvBwtD,EAAY9oD,GAAK1E,GAAG6lB,QAAU2nC,EAAY9oD,GAAK1E,GAAG6lB,QAAU,EAC5D,MAKNimC,EAAWvpD,MAAQirD,EAAY9/C,IAAIxC,IACjCA,EAAK9J,OAAO2rD,EAAU,GACf7hD,IAETghD,EAAY3pD,MAAMnB,OAAO2rD,EAAU,GACnCvlB,EAAK,kBAAmB0kB,EAAY3pD,QAIhCqrD,EAAad,IACjB,MAAMU,EAA6Bj/C,KAAKG,MAAMH,KAAKC,UAAUs9C,EAAWvpD,QAElEqjB,EAAwB,GAC9B,IAAK,IAAI5lB,EAAI,EAAGA,EAAIwtD,EAAY,GAAGttD,OAAQF,IACzC4lB,EAASplB,KAAK,CACZqlB,QAAS,EACTC,QAAS,EACT/Y,KAAM,GACN1B,GAAIyF,eAAO,MAIf08C,EAAYpsD,OAAO0rD,EAAU,EAAGlnC,GAChCkmC,EAAWvpD,MAAQirD,GAIfK,EAAad,IACjBjB,EAAWvpD,MAAQupD,EAAWvpD,MAAMmL,IAAIxC,IACtC,MAAMo6B,EAAO,CACXzf,QAAS,EACTC,QAAS,EACT/Y,KAAM,GACN1B,GAAIyF,eAAO,KAGb,OADA5F,EAAK9J,OAAO2rD,EAAU,EAAGznB,GAClBp6B,IAETghD,EAAY3pD,MAAMnB,OAAO2rD,EAAU,EAAG,KACtCvlB,EAAK,kBAAmB0kB,EAAY3pD,QAIhCurD,EAAY,CAACC,EAAkBpyC,KACnC,IAAI6xC,EAA6Bj/C,KAAKG,MAAMH,KAAKC,UAAUs9C,EAAWvpD,QACtE,MAAMyrD,EAAc,CAAEnoC,QAAS,EAAGC,QAAS,EAAG/Y,KAAM,IAEpD,GAAIghD,EAAU,CACZ,MAAME,EAAU,GAChB,IAAK,IAAIjuD,EAAI,EAAGA,EAAI+tD,EAAU/tD,IAAK,CACjC,MAAM4lB,EAAwB,GAC9B,IAAK,IAAI1kB,EAAI,EAAGA,EAAIssD,EAAY,GAAGttD,OAAQgB,IACzC0kB,EAASplB,KAAK,IACTwtD,EACH3iD,GAAIyF,eAAO,MAGfm9C,EAAQztD,KAAKolB,GAEf4nC,EAAc,IAAIA,KAAgBS,GAEhCtyC,IACF6xC,EAAcA,EAAY9/C,IAAIxC,IAC5B,MAAMmJ,EAAqB,GAC3B,IAAK,IAAIrU,EAAI,EAAGA,EAAI2b,EAAU3b,IAAK,CACjC,MAAMslC,EAAO,IACR0oB,EACH3iD,GAAIyF,eAAO,KAEbuD,EAAM7T,KAAK8kC,GAEb,MAAO,IAAIp6B,KAASmJ,KAEtB63C,EAAY3pD,MAAQ,IAAI2pD,EAAY3pD,SAAU,IAAIuD,MAAM6V,GAAUhQ,KAAK,MACvE67B,EAAK,kBAAmB0kB,EAAY3pD,QAGtCupD,EAAWvpD,MAAQirD,GAIfU,EAAa,KACjB,MAAO7qB,EAAQC,GAAUsoB,EAAUrpD,OAC5BghC,EAAMC,GAAQqoB,EAAQtpD,MAEvB+a,EAAOzN,KAAKC,IAAIuzB,EAAQE,GACxB/lB,EAAO3N,KAAKC,IAAIwzB,EAAQE,GACxBjmB,EAAO1N,KAAK+M,IAAIymB,EAAQE,GACxB9lB,EAAO5N,KAAK+M,IAAI0mB,EAAQE,GAExBgqB,EAA6Bj/C,KAAKG,MAAMH,KAAKC,UAAUs9C,EAAWvpD,QAExEirD,EAAYlwC,GAAME,GAAMsI,QAAUvI,EAAOD,EAAO,EAChDkwC,EAAYlwC,GAAME,GAAMqI,QAAUpI,EAAOD,EAAO,EAEhDsuC,EAAWvpD,MAAQirD,EACnBjB,KAII4B,EAAa,CAACrB,EAAkBC,KACpC,MAAMS,EAA6Bj/C,KAAKG,MAAMH,KAAKC,UAAUs9C,EAAWvpD,QACxEirD,EAAYV,GAAUC,GAAUjnC,QAAU,EAC1C0nC,EAAYV,GAAUC,GAAUlnC,QAAU,EAE1CimC,EAAWvpD,MAAQirD,EACnBjB,KAII6B,EAA4B,CAACtzC,EAAeiyC,KAChDR,IACA,IAAIlgB,GAAc,EAElB,MAAMgiB,EAAcnC,EAAY3pD,MAAMwqD,GAChCzgB,EAAaxxB,EAAEyxB,MAEfyQ,EAAW,GAEjB7yC,SAASyiC,YAAc9xB,IACrB,IAAKuxB,EAAa,OAElB,MAAMoI,GAAS35B,EAAEyxB,MAAQD,GAAc/6B,EAAYhP,MAC7CwH,EAAQskD,EAAc5Z,EAAQuI,EAAWA,EAAWntC,KAAKkf,MAAMs/B,EAAc5Z,GAEnFyX,EAAY3pD,MAAMwqD,GAAYhjD,GAEhCI,SAAS4iC,UAAY,KACnBV,GAAc,EACdliC,SAASyiC,YAAc,KACvBziC,SAAS4iC,UAAY,KAErBvF,EAAK,kBAAmB0kB,EAAY3pD,SAKlC+rD,EAAwB,KAC5B,MAAMd,EAA6Bj/C,KAAKG,MAAMH,KAAKC,UAAUs9C,EAAWvpD,QAExE,IAAK,IAAIvC,EAAI,EAAGA,EAAIwtD,EAAYttD,OAAQF,IACtC,IAAK,IAAIkB,EAAI,EAAGA,EAAIssD,EAAYxtD,GAAGE,OAAQgB,IACrCwrD,EAAcnqD,MAAMsL,SAAS,GAAG7N,KAAKkB,OACvCssD,EAAYxtD,GAAGkB,GAAG6L,KAAO,IAI/B++C,EAAWvpD,MAAQirD,GAOfe,EAAgB,KACpB,MAAMC,EAAc,CAACxuD,EAAWkB,IACzB4qD,EAAWvpD,MAAMvC,GACjB8rD,EAAWvpD,MAAMvC,GAAGkB,GACrBgsD,EAAWltD,EAAGkB,GAAWstD,EAAYxuD,EAAGkB,EAAI,GACzC,CAAClB,EAAGkB,GAFyBstD,EAAYxuD,EAAI,EAAG,GADtB,KAMnC6rD,EAAQtpD,MAAQ,GAEhB,MAAMksD,EAAU7C,EAAUrpD,MAAM,GAC1BmsD,EAAU9C,EAAUrpD,MAAM,GAAK,EAE/BosD,EAAWH,EAAYC,EAASC,GACjCC,EAIA/C,EAAUrpD,MAAQosD,GAHrBf,EAAUa,EAAU,GACpB7C,EAAUrpD,MAAQ,CAACksD,EAAU,EAAG,IAKlCnG,sBAAS,KACP,MAAMsG,EAAUzkD,SAASwc,cAAc,qBACnCioC,GAASA,EAAQhoC,WAKnBgK,EAAmB9V,IACvB,IAAKzL,EAAMiS,WAAaorC,EAAcnqD,MAAMrC,OAAQ,OAEpD,MAAM2C,EAAMiY,EAAEjY,IAAIquB,cAClB,GAAIw7B,EAAcnqD,MAAMrC,OAAS,EAAG,CAKlC,GAJI2C,IAAQwW,GAAKiZ,MACfxX,EAAEuW,iBACFk9B,KAEEzzC,EAAE+V,SAAWhuB,IAAQwW,GAAK4P,GAAI,CAChCnO,EAAEuW,iBACF,MAAMy7B,GAAYJ,EAAcnqD,MAAM,GAAGqT,MAAM,KAAK,GACpDg4C,EAAUd,GAEZ,GAAIhyC,EAAE+V,SAAWhuB,IAAQwW,GAAK6P,KAAM,CAClCpO,EAAEuW,iBACF,MAAMy7B,GAAYJ,EAAcnqD,MAAM,GAAGqT,MAAM,KAAK,GACpDg4C,EAAUd,EAAW,GAEvB,GAAIhyC,EAAE+V,SAAWhuB,IAAQwW,GAAK+S,KAAM,CAClCtR,EAAEuW,iBACF,MAAM07B,GAAYL,EAAcnqD,MAAM,GAAGqT,MAAM,KAAK,GACpDi4C,EAAUd,GAEZ,GAAIjyC,EAAE+V,SAAWhuB,IAAQwW,GAAKgT,MAAO,CACnCvR,EAAEuW,iBACF,MAAM07B,GAAYL,EAAcnqD,MAAM,GAAGqT,MAAM,KAAK,GACpDi4C,EAAUd,EAAW,SAGhBlqD,IAAQwW,GAAK2Y,QACpBs8B,KAIJ97B,uBAAU,KACRroB,SAAS4W,iBAAiB,UAAW6P,KAEvC6B,yBAAY,KACVtoB,SAASuoB,oBAAoB,UAAW9B,KAI1C,MAAM80B,EAAc3hC,uBAAS,SAASxhB,EAAOuqD,EAAUC,GACrDjB,EAAWvpD,MAAMuqD,GAAUC,GAAUhgD,KAAOxK,EAC5CilC,EAAK,SAAUskB,EAAWvpD,SACzB,IAAK,CAAE0hB,UAAU,IAGd4qC,EAAkB,CAACnvD,EAAkBotD,EAAkBC,KAC3D,MAAMK,EAAS1tD,EAAKQ,OACdotD,EAAS5tD,EAAK,GAAGQ,OAEvB,IAAI4uD,EAAe,EACfC,EAAe,EACfjC,EAAWM,EAAStB,EAAWvpD,MAAMrC,SAAQ4uD,EAAehC,EAAWM,EAAStB,EAAWvpD,MAAMrC,QACjG6sD,EAAWO,EAASxB,EAAWvpD,MAAM,GAAGrC,SAAQ6uD,EAAehC,EAAWO,EAASxB,EAAWvpD,MAAM,GAAGrC,SACvG4uD,GAAgBC,IAAcjB,EAAUgB,EAAcC,GAE1DzG,sBAAS,KACP,IAAK,IAAItoD,EAAI,EAAGA,EAAIotD,EAAQptD,IAC1B,IAAK,IAAIkB,EAAI,EAAGA,EAAIosD,EAAQpsD,IACtB4qD,EAAWvpD,MAAMuqD,EAAW9sD,GAAG+sD,EAAW7rD,KAC5C4qD,EAAWvpD,MAAMuqD,EAAW9sD,GAAG+sD,EAAW7rD,GAAG6L,KAAOrN,EAAKM,GAAGkB,IAIlEsmC,EAAK,SAAUskB,EAAWvpD,UAKxBysD,EAAyB,KAC7B,MAAMC,EAAsB,GAE5B,IAAK,IAAIjvD,EAAI,EAAGA,EAAI8rD,EAAWvpD,MAAMrC,OAAQF,IAAK,CAChD,MAAM4lB,EAAWkmC,EAAWvpD,MAAMvC,GAC5BkvD,EAAY,GAClB,IAAK,IAAIhuD,EAAI,EAAGA,EAAI0kB,EAAS1lB,OAAQgB,IAC9BgsD,EAAWltD,EAAGkB,IAAIguD,EAAU1uD,KAAKolB,EAAS1kB,IAE7CguD,EAAUhvD,QAAQ+uD,EAAoBzuD,KAAK0uD,GAGjD,OAAOD,GAIHE,EAAyB,KAC7B,MAAMF,EAAsBD,IACtBI,EAAeH,EAAoB/uD,OAAS,EAC5CmvD,EAAeJ,EAAoB,GAAG/uD,OAAS,EAErD,MAAO,CAAEkvD,eAAcC,iBAMnBC,EAAuB,CAACxC,EAAkBC,KAC9C,MAAMwC,EAAkB7C,EAAcnqD,MAAMrC,OAAS,EAC/CsvD,EAAa1D,EAAWvpD,MAAMuqD,GAAUC,GAExC0C,EAAWF,EACXG,GAAYH,IAAoBC,EAAW1pC,QAAU,GAAK0pC,EAAW3pC,QAAU,GAErF,MAAO,CAAE4pC,WAAUC,aAGf1R,EAAgBrwC,IACpB,MAAMgiD,EAAYhiD,EAAGiiD,QAAQD,UACvB7C,GAAY6C,EAAU/5C,MAAM,KAAK,GACjCm3C,GAAY4C,EAAU/5C,MAAM,KAAK,GAElC82C,EAAcnqD,MAAMsL,SAAS,GAAGi/C,KAAYC,OAC/CnB,EAAUrpD,MAAQ,CAACuqD,EAAUC,GAC7BlB,EAAQtpD,MAAQ,IAGlB,MAAM,SAAEktD,EAAF,SAAYC,GAAaJ,EAAqBxC,EAAUC,IACxD,aAAEqC,EAAF,aAAgBC,GAAiBF,IAEvC,MAAO,CACL,CACEpiD,KAAM,MACNwM,SAAU,CACR,CAAExM,KAAM,MAAO8iD,QAAS,IAAMhC,EAAUd,IACxC,CAAEhgD,KAAM,MAAO8iD,QAAS,IAAMhC,EAAUd,EAAW,MAGvD,CACEhgD,KAAM,MACNwM,SAAU,CACR,CAAExM,KAAM,MAAO8iD,QAAS,IAAMjC,EAAUd,IACxC,CAAE//C,KAAM,MAAO8iD,QAAS,IAAMjC,EAAUd,EAAW,MAGvD,CACE//C,KAAM,MACN4G,SAAU07C,EACVQ,QAAS,IAAMlC,EAAUZ,IAE3B,CACEhgD,KAAM,MACN4G,SAAUy7C,EACVS,QAAS,IAAMtC,EAAUT,IAE3B,CAAEgD,SAAS,GACX,CACE/iD,KAAM,QACN4G,SAAU87C,EACVI,QAAS3B,GAEX,CACEnhD,KAAM,UACN4G,SAAU+7C,EACVG,QAAS,IAAM1B,EAAWrB,EAAUC,IAEtC,CAAE+C,SAAS,GACX,CACE/iD,KAAM,QACN8iD,QAAS,IAAM1C,EAAUJ,IAE3B,CACEhgD,KAAM,QACN8iD,QAAS,IAAMxC,EAAUP,IAE3B,CACE//C,KAAM,UACN8iD,QAAS7rD,KAKf,MAAO,CAAC0iC,EAAUC,KAAe,cAC/B,MAAMkY,EAAyBrB,8BAAkB,eAEjD,OAAQ5W,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,iBACP55B,MAAOoxC,4BAAgB,CAAE3zC,MAAOi9B,mBAAOmlB,GAAc,QACpD,CACA1lB,EAAQnlB,UACJslB,yBAAcC,gCAAoB,MAAOZ,GAAY,EACnDW,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOwlB,GAAmB,CAAC9nD,EAAKgL,KAC1Fk3B,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,YACPrjC,IAAK6M,EACLpD,MAAOoxC,4BAAgB,CAAEnyC,KAAM7G,EAAM,OACrCm5C,YAAahW,GAAUumB,EAA0BvmB,EAAQn4B,IACxD,KAAM,GAAIy2B,MACX,SAEN+U,gCAAoB,IAAI,GAC5BjU,gCAAoB,QAAS,CAC3Bf,MAAO6X,4BAAgB,CACrB,MAAS/W,mBAAOv6B,GAChB,uBAAcu6B,mBAAOv6B,UAArB,aAAc,EAAeyZ,UAC7B,uBAAc8gB,mBAAOv6B,UAArB,aAAc,EAAe0Z,UAC7B,uBAAc6gB,mBAAOv6B,UAArB,aAAc,EAAe2Z,UAC7B,uBAAc4gB,mBAAOv6B,UAArB,aAAc,EAAe4Z,YAE/B/Z,MAAOoxC,4BAAgB,2BAAiB1W,mBAAOv6B,UAAxB,aAAiB,EAAe9E,4BAA4Bq/B,mBAAOmkB,GAAe,yBAAyBnkB,mBAAOmkB,GAAe,OACvJ,CACDlkB,gCAAoB,WAAY,KAAM,EACnCL,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYmlB,EAAY3pD,MAAO,CAACwH,EAAO2F,KACrFk3B,yBAAcC,gCAAoB,MAAO,CAC/CkpB,KAAM,IACNltD,IAAK6M,EACL3F,MAAOA,GACN,KAAM,EAAGq8B,MACV,QAENa,gCAAoB,QAAS,KAAM,EAChCL,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAO8kB,GAAa,CAAClmC,EAAUknC,KACzFlmB,yBAAcC,gCAAoB,KAAM,CAC9ChkC,IAAKiqD,EACLxgD,MAAOoxC,4BAAgB,CAAE1zC,OAAQy8B,EAAQngB,cAAgB,QACxD,EACAsgB,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYnhB,EAAU,CAAC0f,EAAMynB,IAC5EtP,6BAAiB7W,yBAAcC,gCAAoB,KAAM,CAC9DX,MAAO6X,4BAAgB,CAAC,OAAQ,CAClC,SAAY/W,mBAAO0lB,GAAe7+C,SAAS,GAAGi/C,KAAYC,MAAe/lB,mBAAO0lB,GAAexsD,OAAS,EACxG,OAAU8mC,mBAAO4lB,KAAiB,GAAGE,KAAYC,OAE/CzgD,MAAOoxC,4BAAgB,CACzBsS,YAAavpB,EAAQ35B,QAAQR,MAC7B2jD,YAAaxpB,EAAQ35B,QAAQnF,MAC7BuoD,YAAazpB,EAAQ35B,QAAQ/C,MAAQ,QAClCi9B,mBAAO6jB,GAAP7jB,CAAqB1B,EAAKh5B,SAE3BzJ,IAAKyiC,EAAKj6B,GACVya,QAASwf,EAAKxf,QACdD,QAASyf,EAAKzf,QACd,kBAAmB,GAAGinC,KAAYC,IAClClP,YAAahW,GAAUglB,EAAoBhlB,EAAQilB,EAAUC,GAC7DoD,aAAetoB,GAAiBolB,EAAqBH,EAAUC,IAC9D,CACA/lB,mBAAO4lB,KAAiB,GAAGE,KAAYC,KACnCnmB,yBAAc0U,yBAAa8U,GAAgB,CAC1CvtD,IAAK,EACLqjC,MAAO6X,4BAAgB,CAAC,YAAa,CAAE,OAAU/W,mBAAO4lB,KAAiB,GAAGE,KAAYC,OACxFzgD,MAAOoxC,4BAAgB,CAAET,UAAYxW,EAAQngB,cAAgB,EAAK,OAClE/jB,MAAO+iC,EAAKv4B,KACZsjD,cAAe9tD,GAASykC,mBAAO0e,EAAP1e,CAAoBzkC,EAAOuqD,EAAUC,GAC7DuD,kBAAmB/tD,GAASssD,EAAgBtsD,EAAOuqD,EAAUC,IAC5D,KAAM,EAAG,CAAC,QAAS,QAAS,QAAS,gBAAiB,wBACxDnmB,yBAAcC,gCAAoB,MAAO,CACxChkC,IAAK,EACLqjC,MAAO,YACP55B,MAAOoxC,4BAAgB,CAAET,UAAYxW,EAAQngB,cAAgB,EAAK,OAClEq/B,UAAW3e,mBAAOikB,GAAPjkB,CAAmB1B,EAAKv4B,OAClC,KAAM,GAAIs7B,MAChB,GAAIhC,KAAc,CACnB,CAACkqB,YAASvpB,mBAAOkkB,GAAWr9C,SAAS,GAAGi/C,KAAYC,MACpD,CAAClO,EAAyBlxC,GAAOqwC,EAAarwC,OAE9C,OACH,KACD,SAEL,IACF,O,UCjrBL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMs4B,GAAa,CAAEC,MAAO,mBAYAI,oCAAiB,CAC3CC,OAAQ,QACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,GAEZjF,cAAe,CACb5wC,KAAMm2C,SACNN,UAAU,GAEZmD,aAAc,CACZh5C,KAAMm2C,WAGR3U,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIR/uB,EAAYzG,IACZ0B,EAAc3F,KACd,YAAEuE,EAAF,gBAAeJ,EAAf,UAAgCkB,GAAcmS,eAAY9M,GAE1D42B,EAAazR,oBAEb,mBAAE/Y,GAAuBW,KAEzB45B,EAAuBvjC,IACvBzL,EAAM+rC,YAAY7wB,OACtBzP,EAAEwjC,kBAEFjvC,EAAMumC,cAAc96B,EAAGzL,EAAM+rC,eAIzB95B,EAAWub,kBAAI,GAErBiP,mBAAM36B,EAAiB,KACjBA,EAAgB5O,QAAU8M,EAAM+rC,YAAY/vC,KAAIiW,EAAS/e,OAAQ,KAGvEupC,mBAAMxqB,EAAU,KACd5J,EAAUhE,uBAAuB4N,EAAS/e,SAG5C,MAAM8lD,EAAY,KACXh5C,EAAM+rC,YAAY7wB,OAAMjJ,EAAS/e,OAAQ,IAK1CskD,EAAkBhqB,kBAAK,GAE7BiP,mBAAMz5B,EAAW,KACXlB,EAAgB5O,QAAU8M,EAAM+rC,YAAY/vC,KAE5CgH,EAAU9P,QAAO+e,EAAS/e,OAAQ,GAEjC8P,EAAU9P,QAAoC,IAA3BskD,EAAgBtkD,QACtCoQ,EAAYnC,cAAc,CACxBnF,GAAIgE,EAAM+rC,YAAY/vC,GACtBgE,MAAO,CAAErF,OAAQ68C,EAAgBtkD,SAEnCskD,EAAgBtkD,OAAS,MAI7B,MAAMiuD,EAA4BxJ,IAChC,MAAMC,EAAcD,EAAQ,GAAGC,YAC/B,IAAK3Y,EAAW/rC,MAAO,OAEvB,MAAM2kD,EAAaD,EAAYj9C,OAE3BqF,EAAM+rC,YAAYpxC,SAAWk9C,IAC1B70C,EAAU9P,MAMVskD,EAAgBtkD,MAAQ2kD,EAL3Bv0C,EAAYnC,cAAc,CACxBnF,GAAIgE,EAAM+rC,YAAY/vC,GACtBgE,MAAO,CAAErF,OAAQk9C,OAOnBlb,EAAiB,IAAIC,eAAeukB,GAE1Ch+B,uBAAU,KACJ8b,EAAW/rC,OAAOypC,EAAeE,QAAQoC,EAAW/rC,SAE1DkwB,yBAAY,KACN6b,EAAW/rC,OAAOypC,EAAeG,UAAUmC,EAAW/rC,SAI5D,MAAMkuD,EAAoB/wD,IACxBiT,EAAYnC,cAAc,CACxBnF,GAAIgE,EAAM+rC,YAAY/vC,GACtBgE,MAAO,CAAE3P,UAEXokB,KAII4sC,EAAmBC,IACvB,MAAM5mD,EAAQ4mD,EAAOvE,OAAO,CAACC,EAAGC,IAAMD,EAAIC,GACpCrmC,EAAY0qC,EAAOjjD,IAAIxC,GAAQA,EAAOnB,GAE5C4I,EAAYnC,cAAc,CACxBnF,GAAIgE,EAAM+rC,YAAY/vC,GACtBgE,MAAO,CAAEtF,QAAOkc,eAElBnC,KAII8sC,EAAuBv8C,IAC3Bi0C,sBAAS,IAAM5wC,EAAUtD,sBAAsBC,KAGjD,MAAO,CAACqyB,EAAUC,KAChB,MAAMkY,EAAyBrB,8BAAkB,eAEjD,OAAQ5W,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,yBAA0B,CAAE,KAAQtX,EAAQ2U,YAAY7wB,QAChFyd,QAAS,aACTnL,IAAKyR,EACLhiC,MAAOoxC,4BAAgB,CACrBlyC,IAAKi7B,EAAQ2U,YAAY5vC,IAAM,KAC/BD,KAAMk7B,EAAQ2U,YAAY7vC,KAAO,KACjCxB,MAAO08B,EAAQ2U,YAAYrxC,MAAQ,QAEpC,CACDk9B,gCAAoB,MAAO,CACzBf,MAAO,iBACP55B,MAAOoxC,4BAAgB,CAAEoB,UAAW,UAAUrY,EAAQ2U,YAAYtvC,gBACjE,CACD2xC,6BAAiB7W,yBAAcC,gCAAoB,MAAOZ,GAAY,CACpE8D,yBAAa8mB,GAAe,CAC1BhT,YAAalX,EAAO,KAAOA,EAAO,GAAKmX,2BAAe,OAAU,CAAC,UACjEp+C,KAAM+mC,EAAQ2U,YAAY17C,KAC1BqK,MAAO08B,EAAQ2U,YAAYrxC,MAC3Buc,cAAemgB,EAAQ2U,YAAY90B,cACnCL,UAAWwgB,EAAQ2U,YAAYn1B,UAC/BnZ,QAAS25B,EAAQ2U,YAAYtuC,QAC7BL,MAAOg6B,EAAQ2U,YAAY3uC,MAC3B6U,SAAUA,EAAS/e,MACnB0lC,SAAUtB,EAAO,KAAOA,EAAO,GAAKjnC,GAAQ+wD,EAAiB/wD,IAC7DoxD,kBAAmBnqB,EAAO,KAAOA,EAAO,GAAKgqB,GAAUD,EAAgBC,IACvEI,sBAAuBpqB,EAAO,KAAOA,EAAO,GAAKtyB,GAASu8C,EAAoBv8C,KAC7E,KAAM,EAAG,CAAC,OAAQ,QAAS,gBAAiB,YAAa,UAAW,QAAS,cAC9EiN,EAAS/e,OAASkkC,EAAQ2U,YAAY7wB,MACnCqc,yBAAcC,gCAAoB,MAAO,CACxChkC,IAAK,EACLqjC,MAAO6X,4BAAgB,CAAC,aAAc,CAAE,KAAQtX,EAAQ2U,YAAY7wB,QACpEg+B,WAAY5hB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBwgB,KACxDxK,YAAalX,EAAO,KAAOA,EAAO,GAAKkB,GAAUwW,EAAoBxW,IACrEoX,aAActY,EAAO,KAAOA,EAAO,GAAKkB,GAAUwW,EAAoBxW,KACrE,CACDZ,gCAAoB,MAAO,CACzBf,MAAO,WACP55B,MAAOoxC,4BAAgB,CAAEoB,UAAW,SAAU,EAAI9X,mBAAOz1B,SACxD,OAAQ,IACV,KACH2pC,gCAAoB,IAAI,MACzB,CACH,CAAC2D,EAAwBpY,EAAQuX,iBAElC,IACF,O,UCpLL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACM/X,GAAa,CAAC,QAAS,SAAU,SAAU,gBAC3CE,GAAa,CAAC,aACdC,GAAa,CAAC,KAQQE,oCAAiB,CAC3CC,OAAQ,QACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,GAEZjF,cAAe,CACb5wC,KAAMm2C,SACNN,UAAU,GAEZmD,aAAc,CACZh5C,KAAMm2C,WAGR3U,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIR4X,EAAuBvjC,IACvBzL,EAAM+rC,YAAY7wB,OACtBzP,EAAEwjC,kBAEFjvC,EAAMumC,cAAc96B,EAAGzL,EAAM+rC,eAGzB4V,EAAkB,KACtBxN,GAAQhc,KAAK+b,GAAc0N,oBAG7B,MAAO,CAACvqB,EAAUC,KAChB,MAAMkY,EAAyBrB,8BAAkB,eAEjD,OAAQ5W,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,yBAA0B,CAAE,KAAQtX,EAAQ2U,YAAY7wB,QAChFje,MAAOoxC,4BAAgB,CACrBlyC,IAAKi7B,EAAQ2U,YAAY5vC,IAAM,KAC/BD,KAAMk7B,EAAQ2U,YAAY7vC,KAAO,KACjCxB,MAAO08B,EAAQ2U,YAAYrxC,MAAQ,KACnCC,OAAQy8B,EAAQ2U,YAAYpxC,OAAS,QAEtC,CACDi9B,gCAAoB,MAAO,CACzBf,MAAO,iBACP55B,MAAOoxC,4BAAgB,CAAEoB,UAAW,UAAUrY,EAAQ2U,YAAYtvC,gBACjE,CACD2xC,6BAAiB7W,yBAAcC,gCAAoB,MAAO,CACxDX,MAAO,kBACP2X,YAAalX,EAAO,KAAOA,EAAO,GAAKkB,GAAUwW,EAAoBxW,IACrEoX,aAActY,EAAO,KAAOA,EAAO,GAAKkB,GAAUwW,EAAoBxW,IACtE0gB,WAAY5hB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBmpB,MACvD,EACApqB,yBAAcC,gCAAoB,MAAO,CACxCmU,SAAU,UACVjxC,MAAO08B,EAAQ2U,YAAYrxC,MAC3BC,OAAQy8B,EAAQ2U,YAAYpxC,OAC5BixC,OAAQxU,EAAQ2U,YAAYzzC,MAC5B,eAAgB8+B,EAAQ2U,YAAY7zB,YACpC5b,KAAM,OACN,iBAAkB,QAClB,kBAAmB,SAClB,CACDs7B,gCAAoB,IAAK,CACvB6X,UAAW,SAASrY,EAAQ2U,YAAYrxC,MAAQ08B,EAAQ2U,YAAY3vC,QAAQ,OAAOg7B,EAAQ2U,YAAYpxC,OAASy8B,EAAQ2U,YAAY3vC,QAAQ,0CAC3I,CACDw7B,gCAAoB,OAAQ,CAC1BplC,EAAG4kC,EAAQ2U,YAAY1vC,MACtB,KAAM,EAAG06B,KACX,EAAGD,KACL,EAAGF,MACL,KAAM,CACP,CAAC4Y,EAAwBpY,EAAQuX,iBAElC,IACF,O,UCpFL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCJA,IACb79B,EACA+wC,KAEA1+B,uBAAU,KACR,IAAK0+B,EAAS3uD,MAAO,OAErB,IAAIyC,EAAO,SAQX,GAPI,gBAAgBmsD,KAAKhxC,GAAMnb,EAAO,MAC7B,gBAAgBmsD,KAAKhxC,KAAMnb,EAAO,OAEvCksD,EAAS3uD,OAAkB,QAATyC,IAAmBksD,EAAS3uD,MAAM6uD,YAAY,0BAA4BF,EAAS3uD,MAAM6uD,YAAY,oCACzHpsD,EAAO,UAGI,QAATA,EAAgB,CAClB,MAAMqsD,EAAOjuD,OAAeiuD,IAE5B,GAAIA,GAAOA,EAAIC,cAAe,CAC5B,MAAMC,EAAM,IAAIF,EAChBE,EAAIC,WAAWrxC,GACfoxC,EAAIE,YAAYP,EAAS3uD,aAGxB,GAAa,QAATyC,EAAgB,CACvB,MAAM0sD,EAAStuD,OAAesuD,MAC9B,GAAIA,GAASA,EAAMJ,cAAe,CAChC,MAAMK,EAAYD,EAAME,aAAa,CACnC5sD,KAAM,MACNm7B,IAAKhgB,IAEPwxC,EAAUE,mBAAmBX,EAAS3uD,OACtCovD,EAAUG,YCjClB,MAAM5pB,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CACjBpjC,IAAK,EACLqjC,MAAO,cAEHC,GAAa,CAAC,MAAO,UACrBC,GAAa,CAAEF,MAAO,SACtBG,GAA2B6B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,mBAAqB,MAAO,IAC3HmC,GAAa,CAAEnC,MAAO,cACtBoC,GAAa,CAAEpC,MAAO,oBACtBqC,GAAa,CAAErC,MAAO,gBACtBsC,GAAa,CAAEtC,MAAO,UACtBuC,GAAa,CAAEvC,MAAO,gBACtBwC,GAA4BR,GAAa,IAAmBjB,gCAAoB,OAAQ,CAAEf,MAAO,SAAW,MAAO,IACnHyC,GAAc,CAClBD,IAEIE,GAAc,CAAE1C,MAAO,QACvB4C,GAAc,CAAE5C,MAAO,SACvB6rB,GAAc,CAAE7rB,MAAO,SACvB8rB,GAAc,CAAE9rB,MAAO,qBACvB+rB,GAAc,CAAE/rB,MAAO,SACvBgsB,GAAc,CAAEhsB,MAAO,mBACvBisB,GAAc,CAAC,WACfC,GAAc,CAAElsB,MAAO,gBACvBmsB,GAAc,CAAEnsB,MAAO,OACvBosB,GAA4BpqB,GAAa,IAAmBjB,gCAAoB,OAAQ,CAAEf,MAAO,SAAW,MAAO,IACnHqsB,GAAc,CAClBD,IAO0BhsB,oCAAiB,CAC3CC,OAAQ,QACRl3B,MAAO,CACPtF,MAAO,CACL/E,KAAM41C,OACNC,UAAU,GAEZ7wC,OAAQ,CACNhF,KAAM41C,OACNC,UAAU,GAEZ16B,IAAK,CACHnb,KAAMw2B,OACNqf,UAAU,GAEZ2X,OAAQ,CACNxtD,KAAMw2B,OACN8L,QAAS,IAEXl0B,MAAO,CACLpO,KAAM41C,OACNtT,QAAS,IAGXd,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIRgsB,EAAe,CAACC,EAAS,KAC7B,GAAe,IAAXA,GAAgBt2B,MAAMs2B,GAAS,MAAO,QAE1C,MAAMC,EAAQC,GAAiBA,EAAM,GAAK,IAAMA,EAAM,GAAKA,EACrDC,EAAOhjD,KAAKijD,MAAMJ,EAAS,MAC3B5iD,EAAMD,KAAKijD,OAAOJ,EAAgB,KAAPG,GAAe,IAC1CE,EAAMljD,KAAKijD,MAAMJ,EAAgB,KAAPG,EAAoB,GAAN/iD,GAC9C,OAAQ+iD,EAAO,EAAI,CAACA,EAAM/iD,EAAKijD,GAAO,CAACjjD,EAAKijD,IAAMrlD,IAAIilD,GAAMxnD,KAAK,MAG7D6nD,EAAiC9iD,GAC9BA,EAAQo9B,wBAAwB/hC,KAGnC2lD,EAAWr0B,mBACXo2B,EAAcp2B,mBACdq2B,EAAer2B,mBAEfs2B,EAASt2B,iBAAI,IACbu2B,EAASv2B,kBAAI,GACbw2B,EAAcx2B,iBAAI,GAClBy2B,EAAWz2B,iBAAI,GACf02B,EAAS12B,iBAAI,GACbnV,EAAOmV,kBAAI,GACX22B,EAAkB32B,kBAAI,GACtB42B,EAAe52B,iBAAI,GAEnB62B,EAAqB72B,kBAAI,GACzB82B,EAAc92B,iBAAI,SAClB+2B,EAAkB/2B,iBAAI,KAEtBg3B,EAAQnrC,sBAAS,IAAM+pC,EAAaY,EAAY9wD,QAChDuxD,EAAQprC,sBAAS,IAAM+pC,EAAaa,EAAS/wD,QAC7CwxD,EAAiBrrC,sBAAS,IAAM2qC,EAAY9wD,MAAQ+wD,EAAS/wD,MAAQ,IAAM,KAC3EyxD,EAAiBtrC,sBAAS,IAAM6qC,EAAOhxD,MAAQ+wD,EAAS/wD,MAAQ,IAAM,KACtE0xD,EAAiBvrC,sBAAS,IAAqB,IAAfyqC,EAAO5wD,MAAc,KAErD2xD,EAAmBr3B,kBAAI,GACvBs3B,EAAe,CACnB,CAAE1wD,MAAO,KAAMlB,MAAO,GACtB,CAAEkB,MAAO,OAAQlB,MAAO,KACxB,CAAEkB,MAAO,QAASlB,MAAO,MACzB,CAAEkB,MAAO,KAAMlB,MAAO,GACtB,CAAEkB,MAAO,QAASlB,MAAO,KACzB,CAAEkB,MAAO,OAAQlB,MAAO,KAGpB6xD,EAAQz+C,IACPu7C,EAAS3uD,QAEdoT,EAAO9F,KAAK+M,IAAIjH,EAAM,GACtBA,EAAO9F,KAAKC,IAAI6F,EAAM29C,EAAS/wD,OAE/B2uD,EAAS3uD,MAAM8wD,YAAc19C,EAC7B09C,EAAY9wD,MAAQoT,IAGhB0+C,EAAO,KACNnD,EAAS3uD,QAEd6wD,EAAO7wD,OAAQ,EACf2uD,EAAS3uD,MAAM8xD,OACfb,EAAgBjxD,OAAQ,IAGpB+xD,EAAQ,KACPpD,EAAS3uD,QAEd6wD,EAAO7wD,OAAQ,EACf2uD,EAAS3uD,MAAM+xD,QACfd,EAAgBjxD,OAAQ,IAGpBgyD,EAAS,KACTnB,EAAO7wD,MAAO8xD,IACbC,KAGDE,EAAathD,IACZg+C,EAAS3uD,QAEd2Q,EAAarD,KAAK+M,IAAI1J,EAAY,GAClCA,EAAarD,KAAKC,IAAIoD,EAAY,GAElCg+C,EAAS3uD,MAAM4wD,OAASjgD,EACxBigD,EAAO5wD,MAAQ2Q,EACXg+C,EAAS3uD,MAAMkyD,OAAwB,IAAfvhD,IAAkBg+C,EAAS3uD,MAAMkyD,OAAQ,KAGjEC,EAASC,IACTzD,EAAS3uD,QAAO2uD,EAAS3uD,MAAMkxD,aAAekB,GAClDlB,EAAalxD,MAAQoyD,GAGjBC,EAAuB,KAAK,MAChCtB,EAAS/wD,OAAQ,UAAA2uD,EAAS3uD,aAAT,eAAgB+wD,WAAY,GAGzCuB,EAAmB,KAAK,MAC5BxB,EAAY9wD,OAAQ,UAAA2uD,EAAS3uD,aAAT,eAAgB8wD,cAAe,GAG/CyB,EAAc,KACbptC,EAAKnlB,OAER6xD,EAAK,GACLC,KAHeC,KAObS,EAAiB,KAAK,MAC1BxB,EAAOhxD,MAAQ,UAAA2uD,EAAS3uD,aAAT,SAAgByyD,SAAS90D,OAASgxD,EAAS3uD,MAAMyyD,SAAS5oD,IAAI8kD,EAAS3uD,MAAMyyD,SAAS90D,OAAS,GAAK,GAG/G+0D,EAAYp4B,kBAAI,GAChBq4B,EAAc,IAAMD,EAAU1yD,OAAQ,EAEtC4yD,EAAar6C,IACjB,IAAKo2C,EAAS3uD,QAAU0wD,EAAY1wD,MAAO,OAC3C,MAAM6yD,EAAU,YAAat6C,EAAIA,EAAEs6C,QAAUt6C,EAAE62B,eAAe,GAAGyjB,QACjE,IAAIliD,GAAckiD,EAAUpC,EAA8BC,EAAY1wD,QAAU0wD,EAAY1wD,MAAMge,YAClGrN,EAAarD,KAAK+M,IAAI1J,EAAY,GAClCA,EAAarD,KAAKC,IAAIoD,EAAY,GAClC,MAAMyC,EAAOzC,EAAaogD,EAAS/wD,MAEnC2uD,EAAS3uD,MAAM8wD,YAAc19C,EAC7B09C,EAAY9wD,MAAQoT,GAGhB0/C,EAAWv6C,IACf,IAAKo2C,EAAS3uD,QAAU0wD,EAAY1wD,MAAO,OAE3C,MAAM6yD,EAAU,YAAat6C,EAAIA,EAAEs6C,QAAUt6C,EAAE62B,eAAe,GAAGyjB,QACjE,IAAIliD,GAAckiD,EAAUpC,EAA8BC,EAAY1wD,QAAU0wD,EAAY1wD,MAAMge,YAClGrN,EAAarD,KAAK+M,IAAI1J,EAAY,GAClCA,EAAarD,KAAKC,IAAIoD,EAAY,GAClC,MAAMyC,EAAOzC,EAAaogD,EAAS/wD,MAEnC2uD,EAAS3uD,MAAM8wD,YAAc19C,EAC7B09C,EAAY9wD,MAAQoT,EAEpBxL,SAASuoB,oBAAoB,YAAayiC,GAC1ChrD,SAASuoB,oBAAoB,YAAayiC,GAC1ChrD,SAASuoB,oBAAoB,UAAW2iC,GACxClrD,SAASuoB,oBAAoB,WAAY2iC,IAGrCC,EAAyB,KAC7BnrD,SAAS4W,iBAAiB,YAAao0C,GACvChrD,SAAS4W,iBAAiB,YAAao0C,GACvChrD,SAAS4W,iBAAiB,UAAWs0C,GACrClrD,SAAS4W,iBAAiB,WAAYs0C,IAGlCE,EAAcz6C,IAClB,IAAKo4C,EAAa3wD,MAAO,OACzB,MAAM6yD,EAAU,YAAat6C,EAAIA,EAAEs6C,QAAUt6C,EAAE62B,eAAe,GAAGyjB,QAC3DliD,GAAckiD,EAAUpC,EAA8BE,EAAa3wD,QAAU,GACnFiyD,EAAUthD,IAGNsiD,EAAW,KACfrrD,SAASuoB,oBAAoB,YAAa6iC,GAC1CprD,SAASuoB,oBAAoB,YAAa6iC,GAC1CprD,SAASuoB,oBAAoB,UAAW8iC,GACxCrrD,SAASuoB,oBAAoB,WAAY8iC,IAGrCC,EAA2B,KAC/BtrD,SAAS4W,iBAAiB,YAAaw0C,GACvCprD,SAAS4W,iBAAiB,YAAaw0C,GACvCprD,SAAS4W,iBAAiB,UAAWy0C,GACrCrrD,SAAS4W,iBAAiB,WAAYy0C,IAGlCE,EAAwB56C,IAC5B,IAAKo4C,EAAa3wD,MAAO,OACzB,MAAM2Q,GAAc4H,EAAEs6C,QAAUpC,EAA8BE,EAAa3wD,QAAU,GACrFiyD,EAAUthD,IAGNyiD,EAA0B76C,IAC9B,GAAIw4C,EAAS/wD,OAAS0wD,EAAY1wD,MAAO,CACvC,MAAM83B,EAAK44B,EAAY1wD,MAAM+qC,wBAAwB/hC,KAC/CqqD,EAAK96C,EAAEs6C,QAAU/6B,EACvB,GAAIu7B,EAAK,GAAKA,EAAK3C,EAAY1wD,MAAMirC,YAAa,OAElD,MAAM73B,EAAO29C,EAAS/wD,OAASqzD,EAAK3C,EAAY1wD,MAAMirC,aACtDomB,EAAgBrxD,MAAWqzD,GAAMjgD,GAAQ,KAAO,GAAK,IAA7B,KACxBg+C,EAAYpxD,MAAQkwD,EAAa98C,GACjC+9C,EAAmBnxD,OAAQ,IAIzBszD,EAAe,KACd3E,EAAS3uD,QAEV2uD,EAAS3uD,MAAMkyD,OACjBvD,EAAS3uD,MAAMkyD,OAAQ,EACvBD,EAAU,MAGVtD,EAAS3uD,MAAMkyD,OAAQ,EACvBD,EAAU,MAIRsB,EAAa,KACjBpuC,EAAKnlB,OAASmlB,EAAKnlB,OAGfwzD,EAA0Bl5B,kBAAK,GAC/Bm5B,EAAiBn5B,kBAAI,GACrBo5B,EAAqB,KACzBD,EAAezzD,OAAQ,EACvB2zD,aAAaH,EAAwBxzD,OACrCwzD,EAAwBxzD,MAAQoiB,WAAW,KAAK,MAC9C,UAAIusC,EAAS3uD,aAAb,OAAI,EAAgB4zD,OAAOj2D,SAAQ81D,EAAezzD,OAAQ,IACzD,MAKL,OAFA6zD,GAAO/mD,EAAM8Q,IAAK+wC,GAEX,CAACxqB,EAAUC,KAChB,MAAM0vB,EAAuB5sB,8BAAkB,aACzC6sB,EAAyB7sB,8BAAkB,eAC3C8sB,EAA4B9sB,8BAAkB,kBAC9C+sB,EAA8B/sB,8BAAkB,oBAChDgtB,EAA6BhtB,8BAAkB,mBAErD,OAAQ7C,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,eAAgB,CAAE,kBAAmBiY,EAAezzD,SAC5E+J,MAAOoxC,4BAAgB,CACrB3zC,MAAO08B,EAAQ18B,MAAQ08B,EAAQrzB,MAAQ,KACvCpJ,OAAQy8B,EAAQz8B,OAASy8B,EAAQrzB,MAAQ,KACzC0rC,UAAW,SAAS,EAAIrY,EAAQrzB,WAElCsjD,YAAa/vB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBouB,KAC3DruB,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBouB,MACtD,CACDhvB,gCAAoB,MAAO,CACzBf,MAAO,aACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiB0sB,MACpD,CACAU,EAAU1yD,OACNqkC,yBAAcC,gCAAoB,MAAOZ,GAAY,WACtDiV,gCAAoB,IAAI,GAC5BjU,gCAAoB,QAAS,CAC3Bf,MAAO,QACP8B,QAAS,WACTnL,IAAKq0B,EACL/wC,IAAKsmB,EAAQtmB,IACbqyC,OAAQ/rB,EAAQ+rB,OAChB,qBAAsB,GACtBmE,YAAa,GACbC,iBAAkBjwB,EAAO,KAAOA,EAAO,GAAMkB,GAAiB+sB,KAC9DiC,aAAclwB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBgtB,KAC1DiC,QAASnwB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBitB,KACrDiC,WAAYpwB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBktB,KACxDiC,OAAQrwB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBouB,KACpDgB,QAAStwB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBouB,KACrDiB,QAASvwB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBqtB,MACpD,KAAM,GAAI/uB,IACbc,gCAAoB,MAAOb,GAAY,CACrCa,gCAAoB,OAAQ,CAC1Bf,MAAO6X,4BAAgB,CAAC,aAAc,CAAE,mBAAoByV,EAAgBjxD,SAC5E40D,eAAgBxwB,EAAO,KAAOA,EAAO,GAAMkB,GAAiB2rB,EAAgBjxD,OAAQ,IACnF,CACA6wD,EAAO7wD,OACHqkC,yBAAc0U,yBAAa+a,EAAsB,CAAExzD,IAAK,MACxD+jC,yBAAc0U,yBAAagb,EAAwB,CAAEzzD,IAAK,MAC9D,QAGPwjC,GACAY,gCAAoB,MAAOoB,GAAY,CACrCpB,gCAAoB,MAAOqB,GAAY,CACrCrB,gCAAoB,MAAO,CACzBf,MAAO,iBACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiB0sB,MACpD,CACDttB,gCAAoB,OAAQsB,GAAY,CACrC6qB,EAAO7wD,OACHqkC,yBAAc0U,yBAAagb,EAAwB,CAAEzzD,IAAK,MAC1D+jC,yBAAc0U,yBAAa+a,EAAsB,CAAExzD,IAAK,SAGjEokC,gCAAoB,MAAOuB,GAAY,CACrCvB,gCAAoB,MAAO,CACzBf,MAAO,mBACP0B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBguB,MACtD,CACD5uB,gCAAoB,OAAQwB,GAAY,CACpB,IAAjB0qB,EAAO5wD,OACHqkC,yBAAc0U,yBAAaib,EAA2B,CAAE1zD,IAAK,KAC5C,IAAjBswD,EAAO5wD,OACLqkC,yBAAc0U,yBAAakb,EAA6B,CAAE3zD,IAAK,MAC/D+jC,yBAAc0U,yBAAamb,EAA4B,CAAE5zD,IAAK,SAGzEokC,gCAAoB,MAAO,CACzBf,MAAO,kBACP2X,YAAalX,EAAO,MAAQA,EAAO,IAAOkB,GAAiB4tB,KAC3DxW,aAActY,EAAO,MAAQA,EAAO,IAAOkB,GAAiB4tB,KAC5D7tB,QAASjB,EAAO,MAAQA,EAAO,IAAMkB,GAAU6tB,EAAqB7tB,KACnE,CACDZ,gCAAoB,MAAO,CACzBf,MAAO,aACP8B,QAAS,eACTnL,IAAKq2B,GACJ,CACDjsB,gCAAoB,MAAO,CACzBf,MAAO,mBACP55B,MAAOoxC,4BAAgB,CAAE3zC,MAAOi9B,mBAAOitB,MACtCtrB,GAAa,IACf,MACF,MAEL1B,gCAAoB,OAAQ2B,GAAa,CACvC3B,gCAAoB,OAAQ6B,GAAa5B,6BAAiBF,mBAAO6sB,IAAS,GAC1E1pB,6BAAiB,OACjBlD,gCAAoB,OAAQ8qB,GAAa7qB,6BAAiBF,mBAAO8sB,IAAS,OAG9E7sB,gCAAoB,MAAO+qB,GAAa,CACtC/qB,gCAAoB,MAAOgrB,GAAa,CACtChrB,gCAAoB,MAAOirB,GAAa,CACtCjrB,gCAAoB,OAAQ,CAC1Bf,MAAO,eACP0B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBqsB,EAAiB3xD,OAAS2xD,EAAiB3xD,QACjG2kC,6BAAwC,IAAvBusB,EAAalxD,MAAc,KAAQkxD,EAAalxD,MAAQ,KAAO,GAClF2xD,EAAiB3xD,OACbqkC,yBAAcC,gCAAoB,MAAO,CACxChkC,IAAK,EACLqjC,MAAO,aACPkxB,aAAczwB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBqsB,EAAiB3xD,OAAQ,IACpF,EACAqkC,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAYotB,EAAejpD,GACtE+7B,gCAAoB,MAAO,CAChCf,MAAO6X,4BAAgB,CAAC,kBAAmB,CAAE,OAAU7yC,EAAK3I,QAAUkxD,EAAalxD,SACnFM,IAAKqI,EAAKzH,MACVmkC,QAAUC,GAAiB6sB,EAAMxpD,EAAK3I,QACrC2kC,6BAAiBh8B,EAAKzH,OAAQ,GAAI0uD,KACnC,MACH,KACHjX,gCAAoB,IAAI,OAGhCjU,gCAAoB,MAAO,CACzBf,MAAO,OACP0B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBiuB,MACtD,CACD7uB,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,iBAAkB,CAAE,OAAUr2B,EAAKnlB,UAC1D,CACD0kC,gCAAoB,OAAQmrB,GAAa,KAAOlrB,6BAAiBxf,EAAKnlB,MAAQ,IAAM,KAAM,IACzF,OAGP0kC,gCAAoB,MAAO,CACzBf,MAAO,WACP8B,QAAS,cACTnL,IAAKo2B,EACLpV,YAAalX,EAAO,MAAQA,EAAO,IAAOkB,GAAiBytB,KAC3DrW,aAActY,EAAO,MAAQA,EAAO,IAAOkB,GAAiBytB,KAC5DoB,YAAa/vB,EAAO,MAAQA,EAAO,IAAMkB,GAAU8tB,EAAuB9tB,IAC1EsoB,aAAcxpB,EAAO,MAAQA,EAAO,IAAOkB,GAAiB6rB,EAAmBnxD,OAAQ,GACvF60D,aAAczwB,EAAO,MAAQA,EAAO,IAAOkB,GAAiB6rB,EAAmBnxD,OAAQ,IACtF,CACD0kC,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,WAAY,CAAE,QAAW2V,EAAmBnxD,SACpE+J,MAAOoxC,4BAAgB,CAAEnyC,KAAMqoD,EAAgBrxD,SAC9C2kC,6BAAiBysB,EAAYpxD,OAAQ,GACxC0kC,gCAAoB,MAAOorB,GAAa,CACtCprB,gCAAoB,MAAO,CACzBf,MAAO,SACP55B,MAAOoxC,4BAAgB,CAAE3zC,MAAOi9B,mBAAOgtB,MACtC,KAAM,GACT/sB,gCAAoB,MAAO,CACzBf,MAAO,SACP55B,MAAOoxC,4BAAgB,CAAE3zC,MAAOi9B,mBAAO+sB,MACtCxB,GAAa,MAEjB,QAEJ,Q,UC/bL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCIajsB,gCAAiB,CAC3CC,OAAQ,QACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,GAEZjF,cAAe,CACb5wC,KAAMm2C,SACNN,UAAU,GAEZmD,aAAc,CACZh5C,KAAMm2C,WAGR3U,MAAMC,GAER,MAAMp3B,EAAQo3B,GAIR,YAAEl1B,GAAgBiT,eAAYvT,KAE9BotC,EAAsB,CAACvjC,EAA4B8rC,GAAU,KAC7Dv3C,EAAM+rC,YAAY7wB,OACtBzP,EAAEwjC,kBAEFjvC,EAAMumC,cAAc96B,EAAGzL,EAAM+rC,YAAawL,KAG5C,MAAO,CAAClgB,EAAUC,KAChB,MAAMkY,EAAyBrB,8BAAkB,eAEjD,OAAQ5W,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,yBAA0B,CAAE,KAAQtX,EAAQ2U,YAAY7wB,QAChFje,MAAOoxC,4BAAgB,CACrBlyC,IAAKi7B,EAAQ2U,YAAY5vC,IAAM,KAC/BD,KAAMk7B,EAAQ2U,YAAY7vC,KAAO,KACjCxB,MAAO08B,EAAQ2U,YAAYrxC,MAAQ,KACnCC,OAAQy8B,EAAQ2U,YAAYpxC,OAAS,QAEtC,CACDi9B,gCAAoB,MAAO,CACzBf,MAAO,iBACP55B,MAAOoxC,4BAAgB,CAAEoB,UAAW,UAAUrY,EAAQ2U,YAAYtvC,gBACjE,CACD2xC,6BAAiB7W,yBAAcC,gCAAoB,MAAO,CACxDX,MAAO,kBACP2X,YAAalX,EAAO,KAAOA,EAAO,GAAKkB,GAAUwW,EAAoBxW,GAAQ,IAC7EoX,aAActY,EAAO,KAAOA,EAAO,GAAKkB,GAAUwW,EAAoBxW,GAAQ,KAC7E,CACDkC,yBAAastB,GAAa,CACxBttD,MAAO08B,EAAQ2U,YAAYrxC,MAC3BC,OAAQy8B,EAAQ2U,YAAYpxC,OAC5BmW,IAAKsmB,EAAQ2U,YAAYj7B,IACzBqyC,OAAQ/rB,EAAQ2U,YAAYoX,OAC5Bp/C,MAAO4zB,mBAAOz1B,IACb,KAAM,EAAG,CAAC,QAAS,SAAU,MAAO,SAAU,WAChDq1B,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAY,CAAC,IAAK,IAAK,IAAK,KAAO77B,GAC9E+7B,gCAAoB,MAAO,CAChCf,MAAO6X,4BAAgB,CAAC,iBAAkB7yC,IAC1CrI,IAAKqI,EACL2yC,YAAalX,EAAO,KAAOA,EAAO,GAAKkB,GAAUwW,EAAoBxW,IACrEoX,aAActY,EAAO,KAAOA,EAAO,GAAKkB,GAAUwW,EAAoBxW,KACrE,KAAM,KACP,MACH,KAAM,CACP,CAACgX,EAAwBpY,EAAQuX,iBAElC,IACF,O,UC5EL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAM9V,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAC,MAAO,YACrBE,GAAa,CAAED,MAAO,cACtBE,GAAa,CAAEF,MAAO,SACtBG,GAAa,CAAEH,MAAO,gBACtBmC,GAAa,CAAEnC,MAAO,UACtBoC,GAAa,CAAEpC,MAAO,gBACtBqC,GAA2BL,GAAa,IAAmBjB,gCAAoB,OAAQ,CAAEf,MAAO,SAAW,MAAO,IAClHsC,GAAa,CACjBD,IAEIE,GAAa,CAAEvC,MAAO,QACtBwC,GAAc,CAAExC,MAAO,SACvByC,GAAc,CAAEzC,MAAO,SACvB0C,GAAc,CAAE1C,MAAO,OACvB4C,GAA4BZ,GAAa,IAAmBjB,gCAAoB,OAAQ,CAAEf,MAAO,SAAW,MAAO,IACnH6rB,GAAc,CAClBjpB,IAO0BxC,oCAAiB,CAC3CC,OAAQ,cACRl3B,MAAO,CACP8Q,IAAK,CACHnb,KAAMw2B,OACNqf,UAAU,GAEZnzB,KAAM,CACJ1iB,KAAMsgD,QACNzK,UAAU,GAEZlzB,SAAU,CACR3iB,KAAMsgD,QACNhe,SAAS,GAEXl0B,MAAO,CACLpO,KAAM41C,OACNtT,QAAS,IAGXd,MAAMC,GAAS,OAAE+e,IAEnB,MAAMn2C,EAAQo3B,EAIRgsB,EAAe,CAACC,EAAS,KAC7B,GAAe,IAAXA,GAAgBt2B,MAAMs2B,GAAS,MAAO,QAE1C,MAAMC,EAAQC,GAAiBA,EAAM,GAAK,IAAMA,EAAM,GAAKA,EACrDC,EAAOhjD,KAAKijD,MAAMJ,EAAS,MAC3B5iD,EAAMD,KAAKijD,OAAOJ,EAAgB,KAAPG,GAAe,IAC1CE,EAAMljD,KAAKijD,MAAMJ,EAAgB,KAAPG,EAAoB,GAAN/iD,GAC9C,OAAQ+iD,EAAO,EAAI,CAACA,EAAM/iD,EAAKijD,GAAO,CAACjjD,EAAKijD,IAAMrlD,IAAIilD,GAAMxnD,KAAK,MAG7D6nD,EAAiC9iD,GAC9BA,EAAQo9B,wBAAwB/hC,KAGnC+rD,EAAWz6B,mBACXo2B,EAAcp2B,mBACdq2B,EAAer2B,mBAEfs2B,EAASt2B,iBAAI,IACbu2B,EAASv2B,kBAAI,GACbw2B,EAAcx2B,iBAAI,GAClBy2B,EAAWz2B,iBAAI,GACf02B,EAAS12B,iBAAI,GAEb62B,EAAqB72B,kBAAI,GACzB82B,EAAc92B,iBAAI,SAClB+2B,EAAkB/2B,iBAAI,KAEtBg3B,EAAQnrC,sBAAS,IAAM+pC,EAAaY,EAAY9wD,QAChDuxD,EAAQprC,sBAAS,IAAM+pC,EAAaa,EAAS/wD,QAC7CwxD,EAAiBrrC,sBAAS,IAAM2qC,EAAY9wD,MAAQ+wD,EAAS/wD,MAAQ,IAAM,KAC3EyxD,EAAiBtrC,sBAAS,IAAM6qC,EAAOhxD,MAAQ+wD,EAAS/wD,MAAQ,IAAM,KACtE0xD,EAAiBvrC,sBAAS,IAAqB,IAAfyqC,EAAO5wD,MAAc,KAErD6xD,EAAQz+C,IACP2hD,EAAS/0D,QAEdoT,EAAO9F,KAAK+M,IAAIjH,EAAM,GACtBA,EAAO9F,KAAKC,IAAI6F,EAAM29C,EAAS/wD,OAE/B+0D,EAAS/0D,MAAM8wD,YAAc19C,EAC7B09C,EAAY9wD,MAAQoT,IAGhB0+C,EAAO,KACNiD,EAAS/0D,QAEd6wD,EAAO7wD,OAAQ,EACf+0D,EAAS/0D,MAAM8xD,SAGXC,EAAQ,KACPgD,EAAS/0D,QAEd6wD,EAAO7wD,OAAQ,EACf+0D,EAAS/0D,MAAM+xD,UAGXC,EAAS,KACTnB,EAAO7wD,MAAO8xD,IACbC,KAGDE,EAAathD,IACZokD,EAAS/0D,QAEd2Q,EAAarD,KAAK+M,IAAI1J,EAAY,GAClCA,EAAarD,KAAKC,IAAIoD,EAAY,GAElCokD,EAAS/0D,MAAM4wD,OAASjgD,EACxBigD,EAAO5wD,MAAQ2Q,EACXokD,EAAS/0D,MAAMkyD,OAAwB,IAAfvhD,IAAkBokD,EAAS/0D,MAAMkyD,OAAQ,KAGjEG,EAAuB,KAAK,MAChCtB,EAAS/wD,OAAQ,UAAA+0D,EAAS/0D,aAAT,eAAgB+wD,WAAY,GAGzCuB,EAAmB,KAAK,MAC5BxB,EAAY9wD,OAAQ,UAAA+0D,EAAS/0D,aAAT,eAAgB8wD,cAAe,GAG/CkE,EAAe,KACnBnE,EAAO7wD,OAAQ,GAGXuyD,EAAc,KACbzlD,EAAMqY,MAET0sC,EAAK,GACLC,KAHeC,KAObS,EAAiB,KAAK,MAC1BxB,EAAOhxD,MAAQ,UAAA+0D,EAAS/0D,aAAT,SAAgByyD,SAAS90D,OAASo3D,EAAS/0D,MAAMyyD,SAAS5oD,IAAIkrD,EAAS/0D,MAAMyyD,SAAS90D,OAAS,GAAK,GAG/Gg1D,EAAc,IAAM3rC,GAAA,KAAQsU,MAAM,UAElCs3B,EAAar6C,IACjB,IAAKw8C,EAAS/0D,QAAU0wD,EAAY1wD,MAAO,OAC3C,MAAM6yD,EAAU,YAAat6C,EAAIA,EAAEs6C,QAAUt6C,EAAE62B,eAAe,GAAGyjB,QACjE,IAAIliD,GAAckiD,EAAUpC,EAA8BC,EAAY1wD,QAAU0wD,EAAY1wD,MAAMge,YAClGrN,EAAarD,KAAK+M,IAAI1J,EAAY,GAClCA,EAAarD,KAAKC,IAAIoD,EAAY,GAClC,MAAMyC,EAAOzC,EAAaogD,EAAS/wD,MAEnC+0D,EAAS/0D,MAAM8wD,YAAc19C,EAC7B09C,EAAY9wD,MAAQoT,GAGhB0/C,EAAWv6C,IACf,IAAKw8C,EAAS/0D,QAAU0wD,EAAY1wD,MAAO,OAE3C,MAAM6yD,EAAU,YAAat6C,EAAIA,EAAEs6C,QAAUt6C,EAAE62B,eAAe,GAAGyjB,QACjE,IAAIliD,GAAckiD,EAAUpC,EAA8BC,EAAY1wD,QAAU0wD,EAAY1wD,MAAMge,YAClGrN,EAAarD,KAAK+M,IAAI1J,EAAY,GAClCA,EAAarD,KAAKC,IAAIoD,EAAY,GAClC,MAAMyC,EAAOzC,EAAaogD,EAAS/wD,MAEnC+0D,EAAS/0D,MAAM8wD,YAAc19C,EAC7B09C,EAAY9wD,MAAQoT,EAEpBxL,SAASuoB,oBAAoB,YAAayiC,GAC1ChrD,SAASuoB,oBAAoB,YAAayiC,GAC1ChrD,SAASuoB,oBAAoB,UAAW2iC,GACxClrD,SAASuoB,oBAAoB,WAAY2iC,IAGrCC,EAAyB,KAC7BnrD,SAAS4W,iBAAiB,YAAao0C,GACvChrD,SAAS4W,iBAAiB,YAAao0C,GACvChrD,SAAS4W,iBAAiB,UAAWs0C,GACrClrD,SAAS4W,iBAAiB,WAAYs0C,IAGlCE,EAAcz6C,IAClB,IAAKo4C,EAAa3wD,MAAO,OACzB,MAAM6yD,EAAU,YAAat6C,EAAIA,EAAEs6C,QAAUt6C,EAAE62B,eAAe,GAAGyjB,QAC3DliD,GAAckiD,EAAUpC,EAA8BE,EAAa3wD,QAAU,GACnFiyD,EAAUthD,IAGNsiD,EAAW,KACfrrD,SAASuoB,oBAAoB,YAAa6iC,GAC1CprD,SAASuoB,oBAAoB,YAAa6iC,GAC1CprD,SAASuoB,oBAAoB,UAAW8iC,GACxCrrD,SAASuoB,oBAAoB,WAAY8iC,IAGrCC,EAA2B,KAC/BtrD,SAAS4W,iBAAiB,YAAaw0C,GACvCprD,SAAS4W,iBAAiB,YAAaw0C,GACvCprD,SAAS4W,iBAAiB,UAAWy0C,GACrCrrD,SAAS4W,iBAAiB,WAAYy0C,IAGlCE,EAAwB56C,IAC5B,IAAKo4C,EAAa3wD,MAAO,OACzB,MAAM2Q,GAAc4H,EAAEs6C,QAAUpC,EAA8BE,EAAa3wD,QAAU,GACrFiyD,EAAUthD,IAGNyiD,EAA0B76C,IAC9B,GAAIw4C,EAAS/wD,OAAS0wD,EAAY1wD,MAAO,CACvC,MAAM83B,EAAK44B,EAAY1wD,MAAM+qC,wBAAwB/hC,KAC/CqqD,EAAK96C,EAAEs6C,QAAU/6B,EACvB,GAAIu7B,EAAK,GAAKA,EAAK3C,EAAY1wD,MAAMirC,YAAa,OAElD,MAAM73B,EAAO29C,EAAS/wD,OAASqzD,EAAK3C,EAAY1wD,MAAMirC,aACtDomB,EAAgBrxD,MAAWqzD,GAAMjgD,GAAQ,KAAO,GAAK,IAA7B,KACxBg+C,EAAYpxD,MAAQkwD,EAAa98C,GACjC+9C,EAAmBnxD,OAAQ,IAIzBszD,EAAe,KACdyB,EAAS/0D,QAEV+0D,EAAS/0D,MAAMkyD,OACjB6C,EAAS/0D,MAAMkyD,OAAQ,EACvBD,EAAU,MAGV8C,EAAS/0D,MAAMkyD,OAAQ,EACvBD,EAAU,MAQd,OAJAhP,EAAO,CACL+O,WAGK,CAAC7tB,EAAUC,KAChB,MAAM2vB,EAAyB7sB,8BAAkB,eAC3C4sB,EAAuB5sB,8BAAkB,aACzC8sB,EAA4B9sB,8BAAkB,kBAC9C+sB,EAA8B/sB,8BAAkB,oBAChDgtB,EAA6BhtB,8BAAkB,mBAErD,OAAQ7C,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,eACP55B,MAAOoxC,4BAAgB,CAAEoB,UAAW,SAAS,EAAIrY,EAAQrzB,YACxD,CACD6zB,gCAAoB,QAAS,CAC3Bf,MAAO,QACP8B,QAAS,WACTnL,IAAKy6B,EACLn3C,IAAKsmB,EAAQtmB,IACbwH,SAAU8e,EAAQ9e,SAClBivC,iBAAkBjwB,EAAO,KAAOA,EAAO,GAAMkB,GAAiB+sB,KAC9DiC,aAAclwB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBgtB,KAC1DmC,OAAQrwB,EAAO,KAAOA,EAAO,GAAMkB,GAAiB0vB,KACpDT,QAASnwB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBitB,KACrDiC,WAAYpwB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBktB,KACxDmC,QAASvwB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBqtB,MACpD,KAAM,GAAIjvB,IACbgB,gCAAoB,MAAOd,GAAY,CACrCc,gCAAoB,MAAOb,GAAY,CACrCa,gCAAoB,MAAO,CACzBf,MAAO,iBACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiB0sB,MACpD,CACDttB,gCAAoB,OAAQZ,GAAY,CACrC+sB,EAAO7wD,OACHqkC,yBAAc0U,yBAAagb,EAAwB,CAAEzzD,IAAK,MAC1D+jC,yBAAc0U,yBAAa+a,EAAsB,CAAExzD,IAAK,SAGjEokC,gCAAoB,MAAOoB,GAAY,CACrCpB,gCAAoB,MAAO,CACzBf,MAAO,mBACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBguB,MACpD,CACD5uB,gCAAoB,OAAQqB,GAAY,CACpB,IAAjB6qB,EAAO5wD,OACHqkC,yBAAc0U,yBAAaib,EAA2B,CAAE1zD,IAAK,KAC5C,IAAjBswD,EAAO5wD,OACLqkC,yBAAc0U,yBAAakb,EAA6B,CAAE3zD,IAAK,MAC/D+jC,yBAAc0U,yBAAamb,EAA4B,CAAE5zD,IAAK,SAGzEokC,gCAAoB,MAAO,CACzBf,MAAO,kBACP2X,YAAalX,EAAO,KAAOA,EAAO,GAAMkB,GAAiB4tB,KACzDxW,aAActY,EAAO,KAAOA,EAAO,GAAMkB,GAAiB4tB,KAC1D7tB,QAASjB,EAAO,MAAQA,EAAO,IAAMkB,GAAU6tB,EAAqB7tB,KACnE,CACDZ,gCAAoB,MAAO,CACzBf,MAAO,aACP8B,QAAS,eACTnL,IAAKq2B,GACJ,CACDjsB,gCAAoB,MAAO,CACzBf,MAAO,mBACP55B,MAAOoxC,4BAAgB,CAAE3zC,MAAOi9B,mBAAOitB,MACtCzrB,GAAY,IACd,MACF,QAGPvB,gCAAoB,OAAQwB,GAAY,CACtCxB,gCAAoB,OAAQyB,GAAaxB,6BAAiBF,mBAAO6sB,IAAS,GAC1E1pB,6BAAiB,OACjBlD,gCAAoB,OAAQ0B,GAAazB,6BAAiBF,mBAAO8sB,IAAS,KAE5E7sB,gCAAoB,MAAO,CACzBf,MAAO,WACP8B,QAAS,cACTnL,IAAKo2B,EACLpV,YAAalX,EAAO,MAAQA,EAAO,IAAOkB,GAAiBytB,KAC3DrW,aAActY,EAAO,MAAQA,EAAO,IAAOkB,GAAiBytB,KAC5DoB,YAAa/vB,EAAO,MAAQA,EAAO,IAAMkB,GAAU8tB,EAAuB9tB,IAC1EsoB,aAAcxpB,EAAO,MAAQA,EAAO,IAAOkB,GAAiB6rB,EAAmBnxD,OAAQ,GACvF60D,aAAczwB,EAAO,MAAQA,EAAO,IAAOkB,GAAiB6rB,EAAmBnxD,OAAQ,IACtF,CACD0kC,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,WAAY,CAAE,QAAW2V,EAAmBnxD,SACpE+J,MAAOoxC,4BAAgB,CAAEnyC,KAAMqoD,EAAgBrxD,SAC9C2kC,6BAAiBysB,EAAYpxD,OAAQ,GACxC0kC,gCAAoB,MAAO2B,GAAa,CACtC3B,gCAAoB,MAAO,CACzBf,MAAO,SACP55B,MAAOoxC,4BAAgB,CAAE3zC,MAAOi9B,mBAAOgtB,MACtC,KAAM,GACT/sB,gCAAoB,MAAO,CACzBf,MAAO,SACP55B,MAAOoxC,4BAAgB,CAAE3zC,MAAOi9B,mBAAO+sB,MACtChC,GAAa,MAEjB,QAEJ,O,UCpVL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCKazrB,gCAAiB,CAC3CC,OAAQ,QACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,GAEZjF,cAAe,CACb5wC,KAAMm2C,SACNN,UAAU,GAEZmD,aAAc,CACZh5C,KAAMm2C,WAGR3U,MAAMC,GAER,MAAMp3B,EAAQo3B,GAIR,YAAEl1B,EAAF,gBAAeJ,GAAoBqT,eAAYvT,MAC/C,cAAE9D,GAAkBqX,eAAYxX,KAEhCwqD,EAAgB9uC,sBAAS,IACtB7Y,KAAKC,IAAIT,EAAM+rC,YAAYrxC,MAAOsF,EAAM+rC,YAAYpxC,QAAU,MAEjEytD,EAAsB/uC,sBAAS,KACnC,MAAMyiB,EAAclqB,GACdmqB,EAAenqB,GAAgB9T,EAAc5K,MAE7Cm1D,EAAa,IAAMnmD,EAAYhP,MAC/Bo1D,EAAc,GAAKpmD,EAAYhP,MAE/B8sC,EAAUhgC,EAAM+rC,YAAYrxC,MAC5BulC,EAAWjgC,EAAM+rC,YAAYpxC,OAC7BmlC,EAAS9/B,EAAM+rC,YAAY7vC,KAC3B6jC,EAAQ//B,EAAM+rC,YAAY5vC,IAEhC,IAAID,EAAO,EACPC,EAAM8jC,EAKV,OAHIH,EAASuoB,GAAcvsB,IAAa5/B,EAAO8jC,EAAUqoB,GACrDtoB,EAAQE,EAAWqoB,GAAevsB,IAAc5/B,GAAOmsD,GAEpD,CACLpsD,KAAMA,EAAO,KACbC,IAAKA,EAAM,QAIT6yC,EAAuBvjC,IACvBzL,EAAM+rC,YAAY7wB,OACtBzP,EAAEwjC,kBAEFjvC,EAAMumC,cAAc96B,EAAGzL,EAAM+rC,eAG/B,MAAO,CAAC1U,EAAUC,KAChB,MAAM6vB,EAA8B/sB,8BAAkB,oBAChDoV,EAAyBrB,8BAAkB,eAEjD,OAAQ5W,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,yBAA0B,CAAE,KAAQtX,EAAQ2U,YAAY7wB,QAChFje,MAAOoxC,4BAAgB,CACrBlyC,IAAKi7B,EAAQ2U,YAAY5vC,IAAM,KAC/BD,KAAMk7B,EAAQ2U,YAAY7vC,KAAO,KACjCxB,MAAO08B,EAAQ2U,YAAYrxC,MAAQ,KACnCC,OAAQy8B,EAAQ2U,YAAYpxC,OAAS,QAEtC,CACDi9B,gCAAoB,MAAO,CACzBf,MAAO,iBACP55B,MAAOoxC,4BAAgB,CAAEoB,UAAW,UAAUrY,EAAQ2U,YAAYtvC,gBACjE,CACD2xC,6BAAiB7W,yBAAcC,gCAAoB,MAAO,CACxDX,MAAO,kBACP2X,YAAalX,EAAO,KAAOA,EAAO,GAAKkB,GAAUwW,EAAoBxW,IACrEoX,aAActY,EAAO,KAAOA,EAAO,GAAKkB,GAAUwW,EAAoBxW,KACrE,CACDkC,yBAAaysB,EAA6B,CACxCtwB,MAAO,aACP55B,MAAOoxC,4BAAgB,CACrB7d,SAAUmH,mBAAOwwB,GACjB7vD,MAAO8+B,EAAQ2U,YAAYzzC,SAE5B,KAAM,EAAG,CAAC,UACZq/B,mBAAO71B,KAAqBs1B,EAAQ2U,YAAY/vC,IAC5Cu7B,yBAAc0U,yBAAasc,GAAa,CACvC/0D,IAAK,EACLqjC,MAAO,eACP55B,MAAOoxC,4BAAgB,IAAK1W,mBAAOywB,KACnCt3C,IAAKsmB,EAAQ2U,YAAYj7B,IACzBuH,KAAM+e,EAAQ2U,YAAY1zB,KAC1BtU,MAAO4zB,mBAAOz1B,GACdssC,YAAalX,EAAO,KAAOA,EAAO,GAAKmX,2BAAe,OAAU,CAAC,WAChE,KAAM,EAAG,CAAC,QAAS,MAAO,OAAQ,WACrC5C,gCAAoB,IAAI,IAC3B,KAAM,CACP,CAAC2D,EAAwBpY,EAAQuX,iBAElC,IACF,O,UC7GL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAM/X,GAAa,CAAC,MA2BQK,oCAAiB,CAC3CC,OAAQ,kBACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,GAEZgd,aAAc,CACZ7yD,KAAM41C,OACNC,UAAU,GAEZid,cAAe,CACb9yD,KAAMsgD,QACNzK,UAAU,GAEZjF,cAAe,CACb5wC,KAAMm2C,SACNN,UAAU,GAEZkd,eAAgB,CACd/yD,KAAMm2C,SACNN,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIRuxB,EAA0BtvC,sBAAS,KACvC,MAAMuvC,EAAiB,CACrB,CAAC92C,GAAa+2C,OAAQC,GACtB,CAACh3C,GAAai3C,MAAOC,GACrB,CAACl3C,GAAam3C,OAAQC,GACtB,CAACp3C,GAAaq3C,MAAOC,GACrB,CAACt3C,GAAau3C,OAAQC,GACtB,CAACx3C,GAAay3C,OAAQC,GACtB,CAAC13C,GAAa23C,OAAQC,GACtB,CAAC53C,GAAa63C,OAAQC,GACtB,CAAC93C,GAAa+3C,OAAQC,IAExB,OAAOlB,EAAe5oD,EAAM+rC,YAAYp2C,OAAS,QAG7C,aAAEsoB,GAAiBoC,MACnB,qBAAE6oB,GAAyB6gB,MAC3B,gBAAEruC,EAAF,kBAAmBM,GAAsBgE,MACzC,cAAEhf,GAAkBob,MACpB,YAAEpB,EAAF,cAAeG,GAAkB8E,MACjC,YAAE5D,EAAF,aAAeE,EAAf,WAA6BD,GAAe4D,MAC5C,iBAAEzD,GAAqB0D,KAEvBwuB,EAAe,IACf3uC,EAAM+rC,YAAY7wB,KACb,CAAC,CACNxd,KAAM,KACN8iD,QAAS,IAAMrlC,EAAcnb,EAAM+rC,eAIhC,CACL,CACEruC,KAAM,KACNssD,QAAS,WACTxJ,QAASlkC,GAEX,CACE5e,KAAM,KACNssD,QAAS,WACTxJ,QAASnkC,GAEX,CACE3e,KAAM,KACNssD,QAAS,WACTxJ,QAASjkC,GAEX,CAAEkkC,SAAS,GACX,CACE/iD,KAAM,OACN8iD,QAAS,IAAMtX,EAAqBt/B,EAAqB2/B,YACzDr/B,SAAU,CACR,CAAExM,KAAM,SAAU8iD,QAAS,IAAMtX,EAAqBt/B,EAAqBy/B,SAC3E,CAAE3rC,KAAM,OAAQ8iD,QAAS,IAAMtX,EAAqBt/B,EAAqB2/B,aACzE,CAAE7rC,KAAM,MAAO8iD,QAAS,IAAMtX,EAAqBt/B,EAAqBmT,OACxE,CAAErf,KAAM,MAAO8iD,QAAS,IAAMtX,EAAqBt/B,EAAqBoT,UAG5E,CACEtf,KAAM,OACN8iD,QAAS,IAAMtX,EAAqBt/B,EAAqB0/B,UACzDp/B,SAAU,CACR,CAAExM,KAAM,SAAU8iD,QAAS,IAAMtX,EAAqBt/B,EAAqBy/B,SAC3E,CAAE3rC,KAAM,OAAQ8iD,QAAS,IAAMtX,EAAqBt/B,EAAqB0/B,WACzE,CAAE5rC,KAAM,OAAQ8iD,QAAS,IAAMtX,EAAqBt/B,EAAqBsU,MACzE,CAAExgB,KAAM,OAAQ8iD,QAAS,IAAMtX,EAAqBt/B,EAAqBuU,WAG7E,CAAEsiC,SAAS,GACX,CACE/iD,KAAM,OACN4G,QAAStE,EAAMyoD,gBAAkBzoD,EAAM+rC,YAAYt8B,QACnD+wC,QAAS,IAAMviC,EAAaje,EAAM+rC,YAAapiC,EAAqBuU,KACpEhU,SAAU,CACR,CAAExM,KAAM,OAAQ8iD,QAAS,IAAMviC,EAAaje,EAAM+rC,YAAapiC,EAAqBuU,MACpF,CAAExgB,KAAM,OAAQ8iD,QAAS,IAAMviC,EAAaje,EAAM+rC,YAAapiC,EAAqBiQ,OAGxF,CACElc,KAAM,OACN4G,QAAStE,EAAMyoD,gBAAkBzoD,EAAM+rC,YAAYt8B,QACnD+wC,QAAS,IAAMviC,EAAaje,EAAM+rC,YAAapiC,EAAqBwU,QACpEjU,SAAU,CACR,CAAExM,KAAM,OAAQ8iD,QAAS,IAAMviC,EAAaje,EAAM+rC,YAAapiC,EAAqBwU,SACpF,CAAEzgB,KAAM,OAAQ8iD,QAAS,IAAMviC,EAAaje,EAAM+rC,YAAapiC,EAAqBkQ,SAGxF,CAAE4mC,SAAS,GACX,CACE/iD,KAAM,OACN8iD,QAASxgD,EAAM0oD,gBAEjB,CACEhrD,KAAMsC,EAAM+rC,YAAYt8B,QAAU,OAAS,KAC3Cu6C,QAAS,WACTxJ,QAASxgD,EAAM+rC,YAAYt8B,QAAUuM,EAAoBN,EACzDuuC,MAAOjqD,EAAMyoD,eAEf,CACE/qD,KAAM,KACNssD,QAAS,WACTxJ,QAAS/jC,GAEX,CACE/e,KAAM,KACNssD,QAAS,WACTxJ,QAASxlC,GAEX,CACEtd,KAAM,KACNssD,QAAS,SACTxJ,QAASx/C,IAKf,MAAO,CAACq2B,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,mBACPrJ,IAAK,aACLxxB,GAAI,oBAAoBo7B,EAAQ2U,YAAY/vC,GAC5CiB,MAAOoxC,4BAAgB,CACrB6b,OAAQ9yB,EAAQoxB,gBAEjB,EACAjxB,yBAAc0U,yBAAake,qCAAyBxyB,mBAAOgxB,IAA2B,CACrF5c,YAAa3U,EAAQ2U,YACrBxF,cAAenP,EAAQmP,cACvBoI,aAAcA,GACb,KAAM,EAAG,CAAC,cAAe,oBAC3B,GAAI/X,QC3LT,MAAM,GAAc,GAEL,UCDaK,gCAAiB,CAC3CC,OAAQ,iBACRl3B,MAAO,CACP7D,IAAK,CACHxG,KAAM41C,OACNC,UAAU,GAEZtvC,KAAM,CACJvG,KAAM41C,OACNC,UAAU,GAEZ9wC,MAAO,CACL/E,KAAM41C,OACNC,UAAU,GAEZ7wC,OAAQ,CACNhF,KAAM41C,OACNC,UAAU,GAEZlN,SAAU,CACR3oC,KAAM41C,OACNC,UAAU,EACV4e,UAAUl3D,GACR,MAAO,CAAC,EAAG,EAAG,EAAG,GAAGsL,SAAStL,MAIjCikC,MAAMC,GAIR,MAAO,CAACC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,4BAA4BtX,EAAQkH,UAC3DrhC,MAAOoxC,4BAAgB,CACrBlyC,IAAKi7B,EAAQj7B,IAAM,KACnBD,KAAMk7B,EAAQl7B,KAAO,KACrBxB,MAAO08B,EAAQ18B,MAAQ,KACvBC,OAAQy8B,EAAQz8B,OAAS,QAE1B,KAAM,O,UCtCX,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMi8B,GAAa,CAAEC,MAAO,cACtBC,GAAa,CAAC,IAAK,UAUGG,oCAAiB,CAC3CC,OAAQ,YACRC,MAAMC,GAER,MAAM,YAAEl1B,EAAF,aAAeK,GAAiB4S,eAAYvT,MAC5C,aAAE5D,EAAF,cAAgBF,GAAkBqX,eAAYxX,KAE9CT,EAAamc,sBAAsC,4BAAMrb,EAAa9K,aAAnB,aAAM,EAAoBgK,aAG7EyY,EAAY0D,sBAAS,KAAK,MAC9B,MAAMgZ,GAAU,UAAAn1B,EAAWhK,aAAX,eAAkBoF,QAAS,OACrC+xD,EAAY,CAAC,OAAQ,QAC3B,OAAOtrD,IAAUurD,aAAaj4B,EAASg4B,EAAW,CAAEE,uBAAuB,IAAQ36C,SAAS,IAAIC,gBAI5FxT,EAAOgd,sBAAS,KACpB,MAAMnL,EAAO0D,GACPxD,EAAOwD,GAAgB9T,EAAc5K,MAE3C,IAAIW,EAAI,GACR,IAAK,IAAIlD,EAAI,EAAGA,GAAK6P,KAAKijD,MAAMr1C,EAAO7L,EAAarP,OAAQvC,IAC1DkD,GAAK,MAAMlD,EAAI4R,EAAarP,UAAUgb,KAAQvd,EAAI4R,EAAarP,SAEjE,IAAK,IAAIvC,EAAI,EAAGA,GAAK6P,KAAKijD,MAAMv1C,EAAO3L,EAAarP,OAAQvC,IAC1DkD,GAAK,IAAIlD,EAAI4R,EAAarP,YAAYvC,EAAI4R,EAAarP,SAASkb,KAElE,OAAOva,IAGT,MAAO,CAACwjC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,OAAQ,CAC1B36B,MAAOoxC,4BAAgB,CACrBoB,UAAW,SAAS9X,mBAAOz1B,QAE7B1P,EAAGmlC,mBAAOt7B,GACVC,KAAM,OACNsvC,OAAQjU,mBAAOhiB,GACf,eAAgB,MAChB,mBAAoB,KACnB,KAAM,GAAImhB,U,UCnDjB,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCJC55B,OACd,MAAMstD,EAAkBnxC,sBAAS,KAC/B,IAAKnc,EAAWhK,MAAO,MAAO,CAAEqK,gBAAiB,QAEjD,MAAM,KACJ5H,EADI,MAEJ2C,EAFI,MAGJo6B,EAHI,UAIJ+3B,EAJI,cAKJ93B,EALI,eAMJ+3B,EANI,aAOJC,GACEztD,EAAWhK,MAGf,GAAa,UAATyC,EAAkB,MAAO,CAAE4H,gBAAiBjF,GAI3C,GAAa,UAAT3C,EACP,OAAK+8B,EACa,WAAd+3B,EACK,CACLG,gBAAiB,OAAOl4B,EACxBm4B,iBAAkB,SAClBC,eAAgB,WAGb,CACLF,gBAAiB,OAAOl4B,EACxBm4B,iBAAkB,YAClBC,eAAgBL,GAAa,SAXZ,CAAEltD,gBAAiB,QAgBnC,GAAa,aAAT5H,EAAqB,CAC5B,MAAM8G,EAASiuD,GAAkB,EAC3B93B,EAASD,EAAgBA,EAAc,GAAK,OAC5CE,EAASF,EAAgBA,EAAc,GAAK,OAElD,MAAqB,WAAjBg4B,EAAkC,CAAEC,gBAAiB,mBAAmBh4B,MAAWC,KAChF,CAAE+3B,gBAAiB,mBAAmBnuD,SAAcm2B,MAAWC,KAGxE,MAAO,CAAEt1B,gBAAiB,UAG5B,MAAO,CACLitD,oBC1CwBvzB,gCAAiB,CAC3CC,OAAQ,qBACRC,MAAMC,GAER,MAAM,aAAE70B,GAAiB4S,eAAYvT,MAC/B,aAAE5D,GAAiBmX,eAAYxX,KAC/BT,EAAamc,sBAAsC,4BAAMrb,EAAa9K,aAAnB,aAAM,EAAoBgK,cAE7E,gBAAEstD,GAAoBO,GAAwB7tD,GAEpD,MAAO,CAACm6B,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,sBACP55B,MAAOoxC,4BAAgB1W,mBAAO6yB,KAC7B,CACA7yB,mBAAOp1B,IACHg1B,yBAAc0U,yBAAa+e,GAAW,CAAEx3D,IAAK,KAC9Cq4C,gCAAoB,IAAI,IAC3B,O,UCvBL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCDa5U,gCAAiB,CAC3CC,OAAQ,gBACRl3B,MAAO,CACPrK,KAAM,CACJA,KAAMw2B,OACNqf,UAAU,GAEZ5G,KAAM,CACJjvC,KAAM7E,OACN06C,UAAU,GAEZ36C,OAAQ,CACN8E,KAAM41C,OACNC,UAAU,GAEZtpC,YAAa,CACXvM,KAAM41C,OACNC,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,EAKRl7B,EAAOmd,sBAAS,IAAMrZ,EAAM4kC,KAAKra,EAAIvqB,EAAMkC,YAAc,MACzD/F,EAAMkd,sBAAS,IAAMrZ,EAAM4kC,KAAKpa,EAAIxqB,EAAMkC,YAAc,MAGxD+oD,EAAY5xC,sBAAS,IACN,aAAfrZ,EAAMrK,KAA4B,CAAEgF,OAAQqF,EAAMnP,OAASmP,EAAMkC,YAAc,MAC5E,CAAExH,MAAOsF,EAAMnP,OAASmP,EAAMkC,YAAc,OAGrD,MAAO,CAACm1B,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,iBACP55B,MAAOoxC,4BAAgB,CAAEnyC,KAAMy7B,mBAAOz7B,GAAOC,IAAKw7B,mBAAOx7B,MACxD,CACDy7B,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,OAAQtX,EAAQzhC,OACxCsH,MAAOoxC,4BAAgB1W,mBAAOszB,KAC7B,KAAM,IACR,O,UC9CL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMr0B,GAAa,CAAEC,MAAO,SAcAI,oCAAiB,CAC3CC,OAAQ,QACRl3B,MAAO,CACP08B,eAAgB,CACd/mC,KAAM7E,OACN06C,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,GAIR,YAAEl1B,GAAgBiT,eAAYvT,KAE9BspD,EAAa7xC,sBAAS,IACnBrZ,EAAM08B,eAAehiC,MAAQwH,EAAYhP,MAAQ,IAG1D,MAAO,CAACmkC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAO,CACzBf,MAAO,IACP55B,MAAOoxC,4BAAgB,CACrB3zC,MAAO08B,EAAQsF,eAAehiC,MAAQi9B,mBAAOz1B,GAAe,KAC5DhG,KAAMk7B,EAAQsF,eAAexgC,KAAO,QAErC,EACAq7B,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAY,GAAKyzB,GAC5DvzB,gCAAoB,MAAO,CAChCf,MAAO6X,4BAAgB,CAAC,mBAAoB,CAAE,KAAQ/W,mBAAOuzB,GAAc,GAAI,KAAQvzB,mBAAOuzB,GAAc,MAC5G13D,IAAK,cAAc23D,GAClB,CACDvzB,gCAAoB,OAAQ,KAAMC,6BAAiBszB,GAAS,IAC3D,IACD,MACH,GACHvzB,gCAAoB,MAAO,CACzBf,MAAO,IACP55B,MAAOoxC,4BAAgB,CACrB1zC,OAAQy8B,EAAQsF,eAAe/hC,OAASg9B,mBAAOz1B,GAAe,KAC9D/F,IAAKi7B,EAAQsF,eAAevgC,IAAM,QAEnC,EACAo7B,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAY,GAAKyzB,GAC5DvzB,gCAAoB,MAAO,CAChCf,MAAO6X,4BAAgB,CAAC,mBAAoB,CAAE,KAAQ/W,mBAAOuzB,GAAc,GAAI,KAAQvzB,mBAAOuzB,GAAc,MAC5G13D,IAAK23D,EACLluD,MAAOoxC,4BAAgB,CAAE1zC,OAAQg9B,mBAAOuzB,GAAc,QACrD,CACDtzB,gCAAoB,OAAQ,KAAMC,6BAAiBszB,GAAS,IAC3D,IACD,MACH,S,UClEP,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMv0B,GAAa,CAAC,QAAS,UACvBE,GAAa,CAAC,KAQQG,oCAAiB,CAC3CC,OAAQ,yBACRgB,MAAO,CAAC,WACRf,MAAMC,GAAS,KAAEe,IAMnB,MAAM9vB,EAAYzG,KACZ,gBAAEa,GAAoB0S,eAAY9M,IAClC,qBAAEM,GAAyBwM,eAAY5M,KAEvCtR,EAAQu2B,mBACRzwB,EAAMywB,mBAEN49B,EAAe59B,mBACfgE,EAAShE,iBAAI,CACjBjD,EAAG,EACHC,EAAG,IAELrH,uBAAU,KACR,IAAKioC,EAAal4D,MAAO,OACzB,MAAM,EAAEq3B,EAAF,EAAKC,GAAM4gC,EAAal4D,MAAM+qC,wBACpCzM,EAAOt+B,MAAQ,CAAEq3B,IAAGC,OAKtB,MAAM6gC,EAAmB5/C,IACvB,IAAIuxB,GAAc,EAElB,MAAMC,EAAaxxB,EAAEyxB,MACfC,EAAa1xB,EAAE2xB,MACrBnmC,EAAM/D,MAAQ,CAAC+pC,EAAYE,GAE3BriC,SAASyiC,YAAc9xB,IACrB,IAAKhJ,EAAgBvP,QAAU8pC,EAAa,OAE5C,IAAIQ,EAAe/xB,EAAEyxB,MACjBO,EAAehyB,EAAE2xB,MAIrB,GAAIz0B,EAAqBzV,MAAO,CAC9B,MAAMkyC,EAAQ5H,EAAeP,EACvBoI,EAAQ5H,EAAeN,EAGvBmuB,EAAO9qD,KAAK69B,IAAI+G,GAChBmmB,EAAO/qD,KAAK69B,IAAIgH,GAEtB,GAAmC,UAA/B5iC,EAAgBvP,MAAMyC,KAAkB,CAG1C,MAAM61D,EAAcnmB,EAAQ,GAAKD,EAAQ,GAAOC,EAAQ,GAAKD,EAAQ,EAEjEkmB,EAAOC,EACT9tB,EAAe+tB,EAAaruB,EAAaiI,EAAQjI,EAAaiI,EAG9D5H,EAAeguB,EAAavuB,EAAaoI,EAAQpI,EAAaoI,MAI1B,SAA/B5iC,EAAgBvP,MAAMyC,OACzB21D,EAAOC,EAAM9tB,EAAeN,EAC3BK,EAAeP,GAIxBlgC,EAAI7J,MAAQ,CAACsqC,EAAcC,IAG7B3iC,SAAS4iC,UAAYjyB,IAAI,QAIvB,GAHA3Q,SAASyiC,YAAc,KACvBziC,SAAS4iC,UAAY,KAEJ,IAAbjyB,EAAEkyC,OAEJ,YADAroC,WAAW,IAAMjN,EAAU3D,mBAAmB,MAAO,GAIvDs4B,GAAc,EAEd,MAAMyuB,EAAWhgD,EAAEyxB,MACbwuB,EAAWjgD,EAAE2xB,MAEb2F,EAAU,GAEhB,GACkC,UAAhC,UAAAtgC,EAAgBvP,aAAhB,eAAuByC,QACtB6K,KAAK69B,IAAIotB,EAAWxuB,IAAe8F,GAAWviC,KAAK69B,IAAIqtB,EAAWvuB,IAAe4F,GAElF5K,EAAK,UAAW,CACdlhC,MAAOA,EAAM/D,MACb6J,IAAKA,EAAI7J,aAGR,GAC6B,UAAhC,UAAAuP,EAAgBvP,aAAhB,eAAuByC,OACtB6K,KAAK69B,IAAIotB,EAAWxuB,IAAe8F,GAAWviC,KAAK69B,IAAIqtB,EAAWvuB,IAAe4F,EAElF5K,EAAK,UAAW,CACdlhC,MAAOA,EAAM/D,MACb6J,IAAKA,EAAI7J,YAGR,CACH,MAAMy4D,EAAc,IACd19C,EAAOzN,KAAKC,IAAIgrD,EAAUxuB,GAC1B9uB,EAAO3N,KAAKC,IAAIirD,EAAUvuB,GAC1BjvB,EAAO1N,KAAK+M,IAAIk+C,EAAUxuB,GAC1B7uB,EAAO5N,KAAK+M,IAAIm+C,EAAUvuB,GAC1BrvB,EAAUI,EAAOD,GAAQ80B,EAAU70B,EAAOD,EAAO09C,EACjD59C,EAAUK,EAAOD,GAAQ40B,EAAU30B,EAAOD,EAAOw9C,EACvDxzB,EAAK,UAAW,CACdlhC,MAAO,CAACgX,EAAME,GACdpR,IAAK,CAACkR,EAAOH,EAASK,EAAOJ,QAO/B69C,EAAWvyC,sBAAS,KACxB,IAAKpiB,EAAM/D,QAAU6J,EAAI7J,MAAO,OAAO,KACvC,IAAKuP,EAAgBvP,OAAwC,SAA/BuP,EAAgBvP,MAAMyC,KAAiB,OAAO,KAE5E,MAAOk2D,EAASC,GAAW70D,EAAM/D,OAC1B64D,EAAOC,GAASjvD,EAAI7J,MACrB+a,EAAOzN,KAAKC,IAAIorD,EAASE,GACzB79C,EAAO1N,KAAK+M,IAAIs+C,EAASE,GACzB59C,EAAO3N,KAAKC,IAAIqrD,EAASE,GACzB59C,EAAO5N,KAAK+M,IAAIu+C,EAASE,GAEzBjS,EAAW7rC,EAAOD,GAAQ,GAAKC,EAAOD,EAAO,GAC7C+rC,EAAY5rC,EAAOD,GAAQ,GAAKC,EAAOD,EAAO,GAE9C6lB,EAAS63B,IAAY59C,EAAO,EAAIC,EAAOD,EACvCgmB,EAAS63B,IAAY39C,EAAO,EAAIC,EAAOD,EACvC+lB,EAAO63B,IAAU99C,EAAO,EAAIC,EAAOD,EACnCkmB,EAAO63B,IAAU79C,EAAO,EAAIC,EAAOD,EAEnC9R,EAAO,IAAI23B,MAAWC,MAAWC,MAASC,IAEhD,MAAO,CACL4lB,WACAC,YACAhmB,SACAC,SACAC,OACAC,OACA93B,UAKE8a,EAAWkC,sBAAS,KACxB,IAAKpiB,EAAM/D,QAAU6J,EAAI7J,MAAO,MAAO,GAEvC,MAAO8gC,EAAQC,GAAUh9B,EAAM/D,OACxBghC,EAAMC,GAAQp3B,EAAI7J,MACnB+a,EAAOzN,KAAKC,IAAIuzB,EAAQE,GACxBhmB,EAAO1N,KAAK+M,IAAIymB,EAAQE,GACxB/lB,EAAO3N,KAAKC,IAAIwzB,EAAQE,GACxB/lB,EAAO5N,KAAK+M,IAAI0mB,EAAQE,GAExBz5B,EAAQwT,EAAOD,EACftT,EAASyT,EAAOD,EAEtB,MAAO,CACLjS,KAAM+R,EAAOujB,EAAOt+B,MAAMq3B,EAAI,KAC9BpuB,IAAKgS,EAAOqjB,EAAOt+B,MAAMs3B,EAAI,KAC7B9vB,MAAOA,EAAQ,KACfC,OAAQA,EAAS,QAIrB,MAAO,CAAC08B,EAAUC,KAAe,QAC/B,OAAQC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,2BACP8B,QAAS,eACTnL,IAAK49B,EACL5c,YAAalX,EAAO,KAAOA,EAAO,GAAKmX,2BAAejW,GAAU6yB,EAAgB7yB,GAAS,CAAC,UAC1FyzB,cAAe30B,EAAO,KAAOA,EAAO,GAAKmX,2BAAe,OAAU,CAAC,OAAO,cACzE,CACAx3C,EAAM/D,OAAS6J,EAAI7J,OACfqkC,yBAAcC,gCAAoB,MAAO,CACxChkC,IAAK,EACLqjC,MAAO6X,4BAAgB,CAAC,YAAD,UAAc/W,mBAAOl1B,UAArB,aAAc,EAAyB9M,OAC9DsH,MAAOoxC,4BAAgB1W,mBAAOxgB,KAC7B,CACkC,UAAlC,6BAAO1U,UAAP,eAAyB9M,OAAmBgiC,mBAAOi0B,IAC/Cr0B,yBAAcC,gCAAoB,MAAO,CACxChkC,IAAK,EACLm4C,SAAU,UACVjxC,MAAOi9B,mBAAOi0B,GAAU7R,SACxBp/C,OAAQg9B,mBAAOi0B,GAAU5R,WACxB,CACDpiB,gCAAoB,OAAQ,CAC1BplC,EAAGmlC,mBAAOi0B,GAAUvvD,KACpBuvC,OAAQ,UACRtvC,KAAM,OACN,eAAgB,KACf,KAAM,EAAGw6B,KACX,EAAGF,KACNiV,gCAAoB,IAAI,IAC3B,IACHA,gCAAoB,IAAI,IAC3B,S,UCzNL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLA,IAACnxC,EAAoBC,KAElC,MAAMuxD,EAAiB7yC,sBAAS,IACvB,CACL,CAAEqoB,UAAW53B,EAAsBg4B,SAAU7kC,MAAO,IACpD,CAAEykC,UAAW53B,EAAsBoU,IAAKjhB,MAAO,CAACf,KAAMxB,EAAMxH,MAAQ,EAAI,OACxE,CAAEwuC,UAAW53B,EAAsBi4B,UAAW9kC,MAAO,CAACf,KAAMxB,EAAMxH,MAAQ,OAC1E,CAAEwuC,UAAW53B,EAAsBiT,KAAM9f,MAAO,CAACd,IAAKxB,EAAOzH,MAAQ,EAAI,OACzE,CAAEwuC,UAAW53B,EAAsBkT,MAAO/f,MAAO,CAACf,KAAMxB,EAAMxH,MAAQ,KAAMiJ,IAAKxB,EAAOzH,MAAQ,EAAI,OACpG,CAAEwuC,UAAW53B,EAAsB+3B,YAAa5kC,MAAO,CAACd,IAAKxB,EAAOzH,MAAQ,OAC5E,CAAEwuC,UAAW53B,EAAsBqU,OAAQlhB,MAAO,CAACf,KAAMxB,EAAMxH,MAAQ,EAAI,KAAMiJ,IAAKxB,EAAOzH,MAAQ,OACrG,CAAEwuC,UAAW53B,EAAsB83B,aAAc3kC,MAAO,CAACf,KAAMxB,EAAMxH,MAAQ,KAAMiJ,IAAKxB,EAAOzH,MAAQ,SAKrGi5D,EAA4B9yC,sBAAS,IAClC,CACL,CAAEqoB,UAAW53B,EAAsBiT,KAAM9f,MAAO,CAACd,IAAKxB,EAAOzH,MAAQ,EAAI,OACzE,CAAEwuC,UAAW53B,EAAsBkT,MAAO/f,MAAO,CAACf,KAAMxB,EAAMxH,MAAQ,KAAMiJ,IAAKxB,EAAOzH,MAAQ,EAAI,SAGlGk5D,EAAoC/yC,sBAAS,IAC1C,CACL,CAAEqoB,UAAW53B,EAAsBoU,IAAKjhB,MAAO,CAACf,KAAMxB,EAAMxH,MAAQ,EAAI,OACxE,CAAEwuC,UAAW53B,EAAsBqU,OAAQlhB,MAAO,CAACf,KAAMxB,EAAMxH,MAAQ,EAAI,KAAMiJ,IAAKxB,EAAOzH,MAAQ,SAKnGm5D,EAAchzC,sBAAS,IACpB,CACL,CAAE1jB,KAAMkU,EAAmByiD,EAAGrvD,MAAO,CAACvC,MAAOA,EAAMxH,MAAQ,OAC3D,CAAEyC,KAAMkU,EAAmB6Y,EAAGzlB,MAAO,CAACd,IAAKxB,EAAOzH,MAAQ,KAAMwH,MAAOA,EAAMxH,MAAQ,OACrF,CAAEyC,KAAMkU,EAAmBoJ,EAAGhW,MAAO,CAACtC,OAAQA,EAAOzH,MAAQ,OAC7D,CAAEyC,KAAMkU,EAAmB0iD,EAAGtvD,MAAO,CAACf,KAAMxB,EAAMxH,MAAQ,KAAMyH,OAAQA,EAAOzH,MAAQ,SAI3F,MAAO,CACLg5D,iBACAC,4BACAC,oCACAC,gBCvCwBp1B,gCAAiB,CAC3CC,OAAQ,gBACRl3B,MAAO,CACPrK,KAAM,CACJA,KAAMw2B,OACN8L,QAAS,IAEXx7B,OAAQ,CACN9G,KAAM41C,OACNtT,QAAS,IAGXd,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIR2W,EAAkB10B,sBAAS,KAC/B,MAAMhT,EAAS,UACT5J,EAASuD,EAAMvD,OACrB,OAAIA,GAAU,MAAQA,GAAU,KAAa4J,EAAS,EAC7C5J,EAAS,MAAQA,GAAU,KAAa4J,EAAS,GACjD5J,EAAS,MAAQA,GAAU,MAAc4J,EAAS,GAClD5J,EAAS,OAASA,GAAU,MAAc4J,EAAS,IACnD5J,EAAS,OAASA,IAAW,MAAc4J,EAAS,EACpD5J,GAAU,OAASA,IAAW,MAAc4J,EAAS,GACrD5J,GAAU,OAASA,IAAW,KAAa4J,EAAS,GACpD5J,GAAU,MAAQA,IAAW,KAAa4J,EAAS,IACrDA,EAAS,IAGlB,MAAO,CAACgxB,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,iBAAkB/W,mBAAOoW,GAAkB3W,EAAQzhC,QAC1E,KAAM,O,UCpCX,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCDashC,gCAAiB,CAC3CC,OAAQ,aACRl3B,MAAO,CACPrK,KAAM,CACJA,KAAMw2B,OACNqf,UAAU,GAEZghB,OAAQ,CACN72D,KAAMsgD,QACNhe,SAAS,IAGXd,MAAMC,GAIR,MAAO,CAACC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,cAAetX,EAAQzhC,KAAM,CAAE,KAAQyhC,EAAQo1B,WACtE,KAAM,O,UCpBX,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCOav1B,gCAAiB,CAC3CC,OAAQ,qBACRl3B,MAAO,CACPsO,YAAa,CACX3Y,KAAMc,MACN+0C,UAAU,GAEZ/F,kBAAmB,CACjB9vC,KAAMm2C,SACNN,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,GAIR,oBAAEv1B,EAAF,YAAuBK,GAAgBiT,eAAYvT,KAEnD6qD,EAAyBpzC,sBAAS,IAAMrZ,EAAMsO,YAAY1S,OAAO0C,GAAMuD,EAAoB3O,MAAMsL,SAASF,EAAGtC,MAE7GkT,EAAQse,iBAAI,CAChBvf,KAAM,EACNC,KAAM,EACNC,KAAM,EACNC,KAAM,IAIF1T,EAAQ2e,sBAAS,KAAOnK,EAAMhc,MAAMgb,KAAOgB,EAAMhc,MAAM+a,MAAQ/L,EAAYhP,OAC3EyH,EAAS0e,sBAAS,KAAOnK,EAAMhc,MAAMkb,KAAOc,EAAMhc,MAAMib,MAAQjM,EAAYhP,QAC5E,eAAEg5D,EAAF,YAAkBG,GAAgBK,GAAiBhyD,EAAOC,GAG1DgyD,EAAW,KACf,MAAM,KAAE1+C,EAAF,KAAQC,EAAR,KAAcC,EAAd,KAAoBC,GAASC,GAAoBo+C,EAAuBv5D,OAC9Egc,EAAMhc,MAAQ,CAAE+a,OAAMC,OAAMC,OAAMC,SAEpCw+C,yBAAYD,GAGZ,MAAME,EAAgBxzC,sBAAS,IACtBozC,EAAuBv5D,MAAMgpB,KAAKrgB,MAEtB,UAAdA,EAAKlG,MAAkC,UAAdkG,EAAKlG,MAC9BkG,EAAKY,UAMZ,MAAO,CAAC46B,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,uBACP55B,MAAOoxC,4BAAgB,CACrBnyC,KAAMgT,EAAMhc,MAAM+a,KAAO0pB,mBAAOz1B,GAAe,KAC/C/F,IAAK+S,EAAMhc,MAAMib,KAAOwpB,mBAAOz1B,GAAe,QAE/C,EACAq1B,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAO00B,GAAev9C,IAChFyoB,yBAAc0U,yBAAa6gB,GAAY,CAC7Ct5D,IAAKsb,EAAKnZ,KACVA,KAAMmZ,EAAKnZ,KACXsH,MAAOoxC,4BAAgBv/B,EAAK7R,QAC3B,KAAM,EAAG,CAAC,OAAQ,YACnB,MACF06B,mBAAOk1B,GASLhhB,gCAAoB,IAAI,IARvBtU,wBAAW,GAAOC,gCAAoBC,cAAW,CAAEjkC,IAAK,GAAKkkC,wBAAYC,mBAAOu0B,GAAkB14C,IACzF+jB,yBAAc0U,yBAAa8gB,GAAe,CAChDv5D,IAAKggB,EAAMkuB,UACX/rC,KAAM6d,EAAMkuB,UACZzkC,MAAOoxC,4BAAgB76B,EAAMvW,OAC7BuxC,YAAaC,2BAAgBjW,GAAiBpB,EAAQqO,kBAAkBjN,EAAQtpB,EAAMhc,MAAOsgB,EAAMkuB,WAAa,CAAC,UAChH,KAAM,EAAG,CAAC,OAAQ,QAAS,kBAC5B,OAEP,O,UCtFL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,U,UCPR7K,MAAM,kB,iDAAXW,gCAAkC,MAAlC,I,UCAF,MAAMw1B,GAAS,GAKT,GAA2B,KAAgBA,GAAQ,CAAC,CAAC,SAASC,IAAQ,CAAC,YAAY,qBAE1E,UCOf,MAAMC,GAAc,CAClBC,cAAc,GAGYl2B,oCAAiB,IACxCi2B,GACHh2B,OAAQ,sBACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,GAEZ4hB,eAAgB,CACdz3D,KAAMsgD,QACNzK,UAAU,GAEZ5L,cAAe,CACbjqC,KAAMm2C,SACNN,UAAU,GAEZrJ,aAAc,CACZxsC,KAAMm2C,SACNN,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,GAIR,YAAEl1B,EAAF,sBAAeW,GAA0BsS,eAAYvT,KAErDgtC,EAAYv1B,sBAAS,IAAMxW,EAAsB3P,QAAU8M,EAAM+rC,YAAY/vC,IAE7EqxD,EAAah0C,sBAAS,IAAMrZ,EAAM+rC,YAAYrxC,MAAQwH,EAAYhP,OAClEo6D,EAAcj0C,sBAAS,IAAMrZ,EAAM+rC,YAAYpxC,OAASuH,EAAYhP,QACpE,eAAEg5D,EAAF,YAAkBG,GAAgBK,GAAiBW,EAAYC,GAErE,MAAO,CAACj2B,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,wBAAyB,CAAE,QAAW/W,mBAAOiX,OACpE,EACArX,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAO00B,GAAev9C,IAChFyoB,yBAAc0U,yBAAa6gB,GAAY,CAC7Cj2B,MAAO,sBACPrjC,IAAKsb,EAAKnZ,KACVA,KAAMmZ,EAAKnZ,KACXsH,MAAOoxC,4BAAgBv/B,EAAK7R,QAC3B,KAAM,EAAG,CAAC,OAAQ,YACnB,MACHm6B,EAAQg2B,gBACJ71B,yBAAcC,gCAAoBC,cAAW,CAAEjkC,IAAK,GAAK,EACvD+jC,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOu0B,GAAkB14C,IACnF+jB,yBAAc0U,yBAAa8gB,GAAe,CAChDl2B,MAAO,yBACPrjC,IAAKggB,EAAMkuB,UACX/rC,KAAM6d,EAAMkuB,UACZjlC,OAAQ26B,EAAQ2U,YAAYtvC,OAC5BQ,MAAOoxC,4BAAgB76B,EAAMvW,OAC7BuxC,YAAaC,2BAAejW,GAAUpB,EAAQ+K,aAAa3J,EAAQpB,EAAQ2U,YAAav4B,EAAMkuB,WAAY,CAAC,UAC1G,KAAM,EAAG,CAAC,OAAQ,SAAU,QAAS,kBACtC,MACJhH,yBAAa6yB,GAAe,CAC1B12B,MAAO,yBACP55B,MAAOoxC,4BAAgB,CAAEnyC,KAAMy7B,mBAAO01B,GAAc,EAAI,OACxD7e,YAAalX,EAAO,KAAOA,EAAO,GAAKmX,2BAAgBjW,GAAiBpB,EAAQwI,cAAcxI,EAAQ2U,aAAe,CAAC,WACrH,KAAM,EAAG,CAAC,WACZ,KACHF,gCAAoB,IAAI,IAC3B,O,UC/EL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMjV,GAAa,CAAEC,MAAO,wBActBq2B,GAAc,CAClBC,cAAc,GAGYl2B,oCAAiB,IACxCi2B,GACHh2B,OAAQ,qBACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,GAEZ4hB,eAAgB,CACdz3D,KAAMsgD,QACNzK,UAAU,GAEZ5L,cAAe,CACbjqC,KAAMm2C,SACNN,UAAU,GAEZrJ,aAAc,CACZxsC,KAAMm2C,SACNN,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,GAIR,YAAEl1B,GAAgBiT,eAAYvT,KAE9ByrD,EAAah0C,sBAAS,IAAMrZ,EAAM+rC,YAAYrxC,MAAQwH,EAAYhP,OAClEo6D,EAAcj0C,sBAAS,IAAMrZ,EAAM+rC,YAAYpxC,OAASuH,EAAYhP,QAEpE,0BAAEi5D,EAAF,kCAA6BC,EAA7B,YAAgEC,GAAgBK,GAAiBW,EAAYC,GAC7GpB,EAAiB7yC,sBAAS,IAAMrZ,EAAM+rC,YAAY30B,SAAWg1C,EAAkCl5D,MAAQi5D,EAA0Bj5D,OAEvI,MAAO,CAACmkC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,EAC1DW,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAO00B,GAAev9C,IAChFyoB,yBAAc0U,yBAAa6gB,GAAY,CAC7Cj2B,MAAO,sBACPrjC,IAAKsb,EAAKnZ,KACVA,KAAMmZ,EAAKnZ,KACXsH,MAAOoxC,4BAAgBv/B,EAAK7R,QAC3B,KAAM,EAAG,CAAC,OAAQ,YACnB,MACHm6B,EAAQg2B,gBACJ71B,yBAAcC,gCAAoBC,cAAW,CAAEjkC,IAAK,GAAK,EACvD+jC,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOu0B,GAAkB14C,IACnF+jB,yBAAc0U,yBAAa8gB,GAAe,CAChDl2B,MAAO,yBACPrjC,IAAKggB,EAAMkuB,UACX/rC,KAAM6d,EAAMkuB,UACZjlC,OAAQ26B,EAAQ2U,YAAYtvC,OAC5BQ,MAAOoxC,4BAAgB76B,EAAMvW,OAC7BuxC,YAAaC,2BAAejW,GAAUpB,EAAQ+K,aAAa3J,EAAQpB,EAAQ2U,YAAav4B,EAAMkuB,WAAY,CAAC,UAC1G,KAAM,EAAG,CAAC,OAAQ,SAAU,QAAS,kBACtC,MACJhH,yBAAa6yB,GAAe,CAC1B12B,MAAO,yBACP55B,MAAOoxC,4BAAgB,CAAEnyC,KAAMy7B,mBAAO01B,GAAc,EAAI,OACxD7e,YAAalX,EAAO,KAAOA,EAAO,GAAKmX,2BAAgBjW,GAAiBpB,EAAQwI,cAAcxI,EAAQ2U,aAAe,CAAC,WACrH,KAAM,EAAG,CAAC,WACZ,KACHF,gCAAoB,IAAI,SCjFhC,MAAM,GAAc,GAEL,UCFf,MACMjV,GAAa,CAAEC,MAAO,yBAetBq2B,GAAc,CAClBC,cAAc,GAGYl2B,oCAAiB,IACxCi2B,GACHh2B,OAAQ,sBACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,GAEZ4hB,eAAgB,CACdz3D,KAAMsgD,QACNzK,UAAU,GAEZ5L,cAAe,CACbjqC,KAAMm2C,SACNN,UAAU,GAEZrJ,aAAc,CACZxsC,KAAMm2C,SACNN,UAAU,GAEZjD,kBAAmB,CACjB5yC,KAAMm2C,SACNN,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,GAIR,YAAEl1B,GAAgBiT,eAAYvT,KAE9ByrD,EAAah0C,sBAAS,IAAMrZ,EAAM+rC,YAAYrxC,MAAQwH,EAAYhP,OAClEo6D,EAAcj0C,sBAAS,IAAMrZ,EAAM+rC,YAAYpxC,OAASuH,EAAYhP,QACpE,eAAEg5D,EAAF,YAAkBG,GAAgBK,GAAiBW,EAAYC,GAE/DE,EAAgBn0C,sBAAS,KAC7B,IAAKrZ,EAAM+rC,YAAYj4B,cAAgB9T,EAAM+rC,YAAYt0B,SAAU,MAAO,GAE1E,MAAM3D,EAAc/B,GAAoB/R,EAAM+rC,YAAYj4B,aAC1D,GAAI,aAAcA,EAAa,CAC7B,MAAM25C,EAAc35C,EAAY1B,YAAYpS,EAAM+rC,YAAYrxC,MAAOsF,EAAM+rC,YAAYpxC,QAAUqF,EAAM+rC,YAAYt0B,SACnH,GAA6B,SAAzB3D,EAAY3B,SAAqB,MAAO,CAAEjW,KAAMuxD,EAAcvrD,EAAYhP,MAAQ,MACtF,GAA6B,UAAzB4gB,EAAY3B,SAAsB,MAAO,CAAEjW,MAAO8D,EAAM+rC,YAAYrxC,MAAQ+yD,GAAevrD,EAAYhP,MAAQ,MACnH,GAA6B,WAAzB4gB,EAAY3B,SAAuB,MAAO,CAAEjW,MAAO8D,EAAM+rC,YAAYrxC,MAAQ+yD,GAAe,EAAIvrD,EAAYhP,MAAQ,MACxH,GAA6B,QAAzB4gB,EAAY3B,SAAoB,MAAO,CAAEhW,IAAKsxD,EAAcvrD,EAAYhP,MAAQ,MACpF,GAA6B,WAAzB4gB,EAAY3B,SAAuB,MAAO,CAAEhW,KAAM6D,EAAM+rC,YAAYpxC,OAAS8yD,GAAevrD,EAAYhP,MAAQ,MAEtH,MAAO,KAGT,MAAO,CAACmkC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,EAC1DW,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAO00B,GAAev9C,IAChFyoB,yBAAc0U,yBAAa6gB,GAAY,CAC7Cj2B,MAAO,sBACPrjC,IAAKsb,EAAKnZ,KACVA,KAAMmZ,EAAKnZ,KACXsH,MAAOoxC,4BAAgBv/B,EAAK7R,QAC3B,KAAM,EAAG,CAAC,OAAQ,YACnB,MACHm6B,EAAQg2B,gBACJ71B,yBAAcC,gCAAoBC,cAAW,CAAEjkC,IAAK,GAAK,EACvD+jC,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOu0B,GAAkB14C,IACnF+jB,yBAAc0U,yBAAa8gB,GAAe,CAChDl2B,MAAO,yBACPrjC,IAAKggB,EAAMkuB,UACX/rC,KAAM6d,EAAMkuB,UACZjlC,OAAQ26B,EAAQ2U,YAAYtvC,OAC5BQ,MAAOoxC,4BAAgB76B,EAAMvW,OAC7BuxC,YAAaC,2BAAejW,GAAUpB,EAAQ+K,aAAa3J,EAAQpB,EAAQ2U,YAAav4B,EAAMkuB,WAAY,CAAC,UAC1G,KAAM,EAAG,CAAC,OAAQ,SAAU,QAAS,kBACtC,MACJhH,yBAAa6yB,GAAe,CAC1B12B,MAAO,yBACP55B,MAAOoxC,4BAAgB,CAAEnyC,KAAMy7B,mBAAO01B,GAAc,EAAI,OACxD7e,YAAalX,EAAO,KAAOA,EAAO,GAAKmX,2BAAgBjW,GAAiBpB,EAAQwI,cAAcxI,EAAQ2U,aAAe,CAAC,WACrH,KAAM,EAAG,CAAC,eACqB5a,IAAjCiG,EAAQ2U,YAAYt0B,UAChB8f,yBAAcC,gCAAoB,MAAO,CACxChkC,IAAK,EACLqjC,MAAO,2BACP55B,MAAOoxC,4BAAgB1W,mBAAO61B,IAC9Bhf,YAAalX,EAAO,KAAOA,EAAO,GAAKmX,2BAAejW,GAAUpB,EAAQmR,kBAAkB/P,EAAQpB,EAAQ2U,aAAc,CAAC,WACxH,KAAM,KACTF,gCAAoB,IAAI,IAC3B,KACHA,gCAAoB,IAAI,S,UCzGhC,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMjV,GAAa,CAAEC,MAAO,wBACtBC,GAAa,CAAC,QAAS,SAAU,UACjCC,GAAa,CAAEvjC,IAAK,GACpBwjC,GAAa,CAAC,KAAM,KAAM,KAAM,MAChCgC,GAAa,CAAC,KAAM,KAAM,KAAM,MAChCC,GAAa,CAAC,KAAM,KAAM,KAAM,MAChCC,GAAa,CAAC,KAAM,KAAM,KAAM,MAWhCg0B,GAAc,CAClBC,cAAc,GAGYl2B,oCAAiB,IACxCi2B,GACHh2B,OAAQ,qBACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,GAEZ4hB,eAAgB,CACdz3D,KAAMsgD,QACNzK,UAAU,GAEZ/D,gBAAiB,CACf9xC,KAAMm2C,SACNN,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,GAIR,YAAEl1B,GAAgBiT,eAAYvT,KAE9Bm4C,EAAW1gC,sBAAS,IAAM7Y,KAAK+M,IAAIvN,EAAM+rC,YAAY90C,MAAM,GAAI+I,EAAM+rC,YAAYhvC,IAAI,KACrFi9C,EAAY3gC,sBAAS,IAAM7Y,KAAK+M,IAAIvN,EAAM+rC,YAAY90C,MAAM,GAAI+I,EAAM+rC,YAAYhvC,IAAI,KAEtFmvD,EAAiB7yC,sBAAS,KAC9B,MAAMq0C,EAAW,CACf,CACElN,QAASz2C,GAAoBk+B,MAC7BhrC,MAAO,CACLf,KAAM8D,EAAM+rC,YAAY90C,MAAM,GAAKiL,EAAYhP,MAAQ,KACvDiJ,IAAK6D,EAAM+rC,YAAY90C,MAAM,GAAKiL,EAAYhP,MAAQ,OAG1D,CACEstD,QAASz2C,GAAoBo+B,IAC7BlrC,MAAO,CACLf,KAAM8D,EAAM+rC,YAAYhvC,IAAI,GAAKmF,EAAYhP,MAAQ,KACrDiJ,IAAK6D,EAAM+rC,YAAYhvC,IAAI,GAAKmF,EAAYhP,MAAQ,QAK1D,GAAI8M,EAAM+rC,YAAY97B,OAASjQ,EAAM+rC,YAAYh8B,OAAQ,CACvD,MAAM49C,EAAe3tD,EAAM+rC,YAAY97B,OAASjQ,EAAM+rC,YAAYh8B,OAElE29C,EAASv8D,KAAK,CACZqvD,QAASz2C,GAAoBmY,EAC7BjlB,MAAO,CACLf,KAAMyxD,EAAY,GAAKzrD,EAAYhP,MAAQ,KAC3CiJ,IAAKwxD,EAAY,GAAKzrD,EAAYhP,MAAQ,aAI3C,GAAI8M,EAAM+rC,YAAY77B,MAAO,CAChC,MAAO09C,EAAcC,GAAgB7tD,EAAM+rC,YAAY77B,MACvDw9C,EAASv8D,KAAK,CACZqvD,QAASz2C,GAAoBq+B,GAC7BnrC,MAAO,CACLf,KAAM0xD,EAAa,GAAK1rD,EAAYhP,MAAQ,KAC5CiJ,IAAKyxD,EAAa,GAAK1rD,EAAYhP,MAAQ,QAG/Cw6D,EAASv8D,KAAK,CACZqvD,QAASz2C,GAAoBs+B,GAC7BprC,MAAO,CACLf,KAAM2xD,EAAa,GAAK3rD,EAAYhP,MAAQ,KAC5CiJ,IAAK0xD,EAAa,GAAK3rD,EAAYhP,MAAQ,QAKjD,OAAOw6D,IAGT,MAAO,CAACr2B,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC1DQ,EAAQg2B,gBACJ71B,yBAAcC,gCAAoBC,cAAW,CAAEjkC,IAAK,GAAK,EACvD+jC,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOu0B,GAAkB14C,IACnF+jB,yBAAc0U,yBAAa8gB,GAAe,CAChDl2B,MAAO,yBACPrjC,IAAKggB,EAAMgtC,QACXvjD,MAAOoxC,4BAAgB76B,EAAMvW,OAC7BuxC,YAAaC,2BAAejW,GAAUpB,EAAQqQ,gBAAgBjP,EAAQpB,EAAQ2U,YAAav4B,EAAMgtC,SAAU,CAAC,UAC3G,KAAM,EAAG,CAAC,QAAS,kBACpB,OACHjpB,yBAAcC,gCAAoB,MAAO,CACxC98B,MAAOi9B,mBAAOoiB,IAAa,EAC3Bp/C,OAAQg9B,mBAAOqiB,IAAc,EAC7BpO,OAAQxU,EAAQ2U,YAAYzzC,MAC5BqzC,SAAU,UACV1uC,MAAOoxC,4BAAgB,CAAEoB,UAAW,SAAS9X,mBAAOz1B,SACnD,CACAk1B,EAAQ2U,YAAY97B,OAChBsnB,yBAAcC,gCAAoB,IAAKT,GAAY,CAClDa,gCAAoB,OAAQ,CAC1Bf,MAAO,cACPpM,GAAI2M,EAAQ2U,YAAY90C,MAAM,GAC9ByzB,GAAI0M,EAAQ2U,YAAY90C,MAAM,GAC9B0zB,GAAIyM,EAAQ2U,YAAY97B,MAAM,GAC9B2a,GAAIwM,EAAQ2U,YAAY97B,MAAM,IAC7B,KAAM,EAAG+mB,IACZY,gCAAoB,OAAQ,CAC1Bf,MAAO,cACPpM,GAAI2M,EAAQ2U,YAAYhvC,IAAI,GAC5B2tB,GAAI0M,EAAQ2U,YAAYhvC,IAAI,GAC5B4tB,GAAIyM,EAAQ2U,YAAY97B,MAAM,GAC9B2a,GAAIwM,EAAQ2U,YAAY97B,MAAM,IAC7B,KAAM,EAAG+oB,OAEd6S,gCAAoB,IAAI,GAC3BzU,EAAQ2U,YAAY77B,OAChBqnB,wBAAW,GAAOC,gCAAoBC,cAAW,CAAEjkC,IAAK,GAAKkkC,wBAAYN,EAAQ2U,YAAY77B,MAAO,CAACrU,EAAMwE,KAClGk3B,yBAAcC,gCAAoB,IAAK,CAAEhkC,IAAK6M,GAAS,CAClD,IAAVA,GACIk3B,yBAAcC,gCAAoB,OAAQ,CACzChkC,IAAK,EACLqjC,MAAO,cACPpM,GAAI2M,EAAQ2U,YAAY90C,MAAM,GAC9ByzB,GAAI0M,EAAQ2U,YAAY90C,MAAM,GAC9B0zB,GAAI9uB,EAAK,GACT+uB,GAAI/uB,EAAK,IACR,KAAM,EAAGo9B,KACZ4S,gCAAoB,IAAI,GACjB,IAAVxrC,GACIk3B,yBAAcC,gCAAoB,OAAQ,CACzChkC,IAAK,EACLqjC,MAAO,cACPpM,GAAI2M,EAAQ2U,YAAYhvC,IAAI,GAC5B2tB,GAAI0M,EAAQ2U,YAAYhvC,IAAI,GAC5B4tB,GAAI9uB,EAAK,GACT+uB,GAAI/uB,EAAK,IACR,KAAM,EAAGq9B,KACZ2S,gCAAoB,IAAI,OAE5B,MACJA,gCAAoB,IAAI,IAC3B,GAAI/U,MACN,KACH+U,gCAAoB,IAAI,S,UClKhC,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMjV,GAAa,CAAEC,MAAO,yBActBq2B,GAAc,CAClBC,cAAc,GAGYl2B,oCAAiB,IACxCi2B,GACHh2B,OAAQ,sBACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,GAEZ4hB,eAAgB,CACdz3D,KAAMsgD,QACNzK,UAAU,GAEZ5L,cAAe,CACbjqC,KAAMm2C,SACNN,UAAU,GAEZrJ,aAAc,CACZxsC,KAAMm2C,SACNN,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,GAIR,YAAEl1B,GAAgBiT,eAAYvT,KAE9BwpC,EAAe/xB,sBAAS,IAAMrZ,EAAM+rC,YAAYtuC,QAAQ/C,OAAS,GAEjE2yD,EAAah0C,sBAAS,KAAOrZ,EAAM+rC,YAAYrxC,MAAQ0wC,EAAal4C,OAASgP,EAAYhP,OACzFo6D,EAAcj0C,sBAAS,IAAMrZ,EAAM+rC,YAAYpxC,OAASuH,EAAYhP,QAEpE,eAAEg5D,EAAF,YAAkBG,GAAgBK,GAAiBW,EAAYC,GAErE,MAAO,CAACj2B,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,EAC1DW,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAO00B,GAAev9C,IAChFyoB,yBAAc0U,yBAAa6gB,GAAY,CAC7Cj2B,MAAO,sBACPrjC,IAAKsb,EAAKnZ,KACVA,KAAMmZ,EAAKnZ,KACXsH,MAAOoxC,4BAAgBv/B,EAAK7R,QAC3B,KAAM,EAAG,CAAC,OAAQ,YACnB,MACHm6B,EAAQg2B,gBACJ71B,yBAAcC,gCAAoBC,cAAW,CAAEjkC,IAAK,GAAK,EACvD+jC,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOu0B,GAAkB14C,IACnF+jB,yBAAc0U,yBAAa8gB,GAAe,CAChDl2B,MAAO,yBACPrjC,IAAKggB,EAAMkuB,UACX/rC,KAAM6d,EAAMkuB,UACZjlC,OAAQ26B,EAAQ2U,YAAYtvC,OAC5BQ,MAAOoxC,4BAAgB76B,EAAMvW,OAC7BuxC,YAAaC,2BAAejW,GAAUpB,EAAQ+K,aAAa3J,EAAQpB,EAAQ2U,YAAav4B,EAAMkuB,WAAY,CAAC,UAC1G,KAAM,EAAG,CAAC,OAAQ,SAAU,QAAS,kBACtC,MACJhH,yBAAa6yB,GAAe,CAC1B12B,MAAO,yBACP55B,MAAOoxC,4BAAgB,CAAEnyC,KAAMy7B,mBAAO01B,GAAc,EAAI,OACxD7e,YAAalX,EAAO,KAAOA,EAAO,GAAKmX,2BAAgBjW,GAAiBpB,EAAQwI,cAAcxI,EAAQ2U,aAAe,CAAC,WACrH,KAAM,EAAG,CAAC,WACZ,KACHF,gCAAoB,IAAI,SClFhC,MAAM,GAAc,GAEL,UCFf,MAAMjV,GAAa,CAAEC,MAAO,0BAgBtBq2B,GAAc,CAClBC,cAAc,GAGYl2B,oCAAiB,IACxCi2B,GACHh2B,OAAQ,uBACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,GAEZ4hB,eAAgB,CACdz3D,KAAMsgD,QACNzK,UAAU,GAEZ5L,cAAe,CACbjqC,KAAMm2C,SACNN,UAAU,GAEZrJ,aAAc,CACZxsC,KAAMm2C,SACNN,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,GAIR,YAAEl1B,GAAgBiT,eAAYvT,KAE9ByrD,EAAah0C,sBAAS,IAAMrZ,EAAM+rC,YAAYrxC,MAAQwH,EAAYhP,OAClEo6D,EAAcj0C,sBAAS,IAAMrZ,EAAM+rC,YAAYpxC,OAASuH,EAAYhP,QACpE,eAAEg5D,EAAF,YAAkBG,GAAgBK,GAAiBW,EAAYC,GAE/DQ,EAAez0C,sBAAS,IAAM,CAAC,QAAS,SAAS7a,SAASwB,EAAM+rC,YAAYp2C,OAElF,MAAO,CAAC0hC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,EAC1DW,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAO00B,GAAev9C,IAChFyoB,yBAAc0U,yBAAa6gB,GAAY,CAC7Cj2B,MAAO,sBACPrjC,IAAKsb,EAAKnZ,KACVA,KAAMmZ,EAAKnZ,KACXsH,MAAOoxC,4BAAgBv/B,EAAK7R,QAC3B,KAAM,EAAG,CAAC,OAAQ,YACnB,MACHm6B,EAAQg2B,gBACJ71B,yBAAcC,gCAAoBC,cAAW,CAAEjkC,IAAK,GAAK,EACvD+jC,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOu0B,GAAkB14C,IACnF+jB,yBAAc0U,yBAAa8gB,GAAe,CAChDl2B,MAAO,yBACPrjC,IAAKggB,EAAMkuB,UACX/rC,KAAM6d,EAAMkuB,UACZjlC,OAAQ26B,EAAQ2U,YAAYtvC,OAC5BQ,MAAOoxC,4BAAgB76B,EAAMvW,OAC7BuxC,YAAaC,2BAAejW,GAAUpB,EAAQ+K,aAAa3J,EAAQpB,EAAQ2U,YAAav4B,EAAMkuB,WAAY,CAAC,UAC1G,KAAM,EAAG,CAAC,OAAQ,SAAU,QAAS,kBACtC,MACF/J,mBAAOm2B,GAOLjiB,gCAAoB,IAAI,IANvBtU,yBAAc0U,yBAAashB,GAAe,CACzC/5D,IAAK,EACLqjC,MAAO,yBACP55B,MAAOoxC,4BAAgB,CAAEnyC,KAAMy7B,mBAAO01B,GAAc,EAAI,OACxD7e,YAAalX,EAAO,KAAOA,EAAO,GAAKmX,2BAAgBjW,GAAiBpB,EAAQwI,cAAcxI,EAAQ2U,aAAe,CAAC,WACrH,KAAM,EAAG,CAAC,YAEhB,KACHF,gCAAoB,IAAI,SCtFhC,MAAM,GAAc,GAEL,U,yBCAA,QACb,MAAMvoC,EAAc3F,KAEd,mBAAE8W,GAAuBW,KAEzB24C,EAAU,CAACxqD,EAA2BnK,KAC1C,MAAM40D,EAAa,8EACnB,GAAkB,QAAd50D,EAAKzD,OAAmBq4D,EAAW9oC,KAAK9rB,EAAKyf,QAE/C,OADAqB,GAAA,KAAQsU,MAAM,gBACP,EAET,GAAkB,UAAdp1B,EAAKzD,OAAqByD,EAAKyf,OAEjC,OADAqB,GAAA,KAAQsU,MAAM,aACP,EAET,MAAMxuB,EAAQ,CAAE5G,QAIhB,OAHAkK,EAAYnC,cAAc,CAAEnF,GAAIuH,EAAcvH,GAAIgE,UAClDyU,KAEO,GAGHw5C,EAAc1qD,IAClBD,EAAYjC,mBAAmB,CAAErF,GAAIuH,EAAcvH,GAAIsF,SAAU,SACjEmT,KAGF,MAAO,CACLs5C,UACAE,eC/BJ,MACMr3B,GAAa,CAAC,QACdE,GAAa,CAAED,MAAO,QAWAI,oCAAiB,CAC3CC,OAAQ,cACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,GAEZpyC,KAAM,CACJzD,KAAM7E,OACN06C,UAAU,GAEZkd,eAAgB,CACd/yD,KAAMm2C,SACNN,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIR/uB,EAAYzG,IACZ0B,EAAc3F,KACd,YAAEuE,GAAgBiT,eAAY9M,IAC9B,OAAEtM,GAAWoZ,eAAY7R,IACzB,WAAE2qD,GAAeC,KACjBvzD,EAAS0e,sBAAS,IAAiC,SAA3BrZ,EAAM+rC,YAAYp2C,KAAkB,EAAIqK,EAAM+rC,YAAYpxC,QAElFwzD,EAAcjuD,IAClB,MAAMkuD,EAAcryD,EAAO7I,MAAMoN,UAAUzE,GAAQA,EAAKG,KAAOkE,IAC1C,IAAjBkuD,IACF/lD,EAAU7E,uBAAuB,IACjCF,EAAY3C,iBAAiBytD,KAIjC,MAAO,CAAC/2B,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,eACP55B,MAAOoxC,4BAAgB,CAAElyC,IAAKw7B,mBAAOh9B,GAAUg9B,mBAAOz1B,GAAe,GAAK,QACzE,CACsB,QAAtBk1B,EAAQh+B,KAAKzD,MACT4hC,yBAAcC,gCAAoB,IAAK,CACtChkC,IAAK,EACLqjC,MAAO,OACP2C,KAAMpC,EAAQh+B,KAAKyf,OACnBA,OAAQ,UACPgf,6BAAiBT,EAAQh+B,KAAKyf,QAAS,EAAG+d,MAC5CW,yBAAcC,gCAAoB,IAAK,CACtChkC,IAAK,EACLqjC,MAAO,OACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiB21B,EAAW/2B,EAAQh+B,KAAKyf,UAC5E,SAAWgf,6BAAiBT,EAAQh+B,KAAKyf,QAAS,IACzD+e,gCAAoB,MAAOd,GAAY,CACrCc,gCAAoB,MAAO,CACzBf,MAAO,MACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBpB,EAAQsxB,mBAC5D,MACHhuB,yBAAa/C,mBAAO,SAAU,CAAEhiC,KAAM,aACtCiiC,gCAAoB,MAAO,CACzBf,MAAO,MACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAOs2B,EAAPt2B,CAAmBP,EAAQ2U,eAC/E,SAEJ,O,UC3EL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMnV,GAAa,CACjBpjC,IAAK,EACLqjC,MAAO,mBAkBmBI,oCAAiB,CAC3CC,OAAQ,QACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,GAEZ6iB,WAAY,CACV14D,KAAMsgD,QACNzK,UAAU,GAEZ8iB,SAAU,CACR34D,KAAMsgD,QACNzK,UAAU,GAEZhI,qBAAsB,CACpB7tC,KAAMsgD,QACNzK,UAAU,GAEZid,cAAe,CACb9yD,KAAMsgD,QACNzK,UAAU,GAEZ5L,cAAe,CACbjqC,KAAMm2C,SACNN,UAAU,GAEZrJ,aAAc,CACZxsC,KAAMm2C,SACNN,UAAU,GAEZ/D,gBAAiB,CACf9xC,KAAMm2C,SACNN,UAAU,GAEZjD,kBAAmB,CACjB5yC,KAAMm2C,SACNN,UAAU,GAEZkd,eAAgB,CACd/yD,KAAMm2C,SACNN,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,GAIR,YAAEl1B,EAAF,aAAeS,GAAiBwS,eAAYvT,MAC5C,mBAAElD,GAAuByW,eAAYxX,KAErC4wD,EAA0Bl1C,sBAAS,KACvC,MAAMuvC,EAAiB,CACrB,CAAC92C,GAAa+2C,OAAQ2F,GACtB,CAAC18C,GAAai3C,MAAO0F,GACrB,CAAC38C,GAAam3C,OAAQyF,GACtB,CAAC58C,GAAaq3C,MAAOwF,GACrB,CAAC78C,GAAay3C,OAAQqF,GACtB,CAAC98C,GAAau3C,OAAQwF,GACtB,CAAC/8C,GAAa23C,OAAQoF,GACtB,CAAC/8C,GAAa63C,OAAQkF,GACtB,CAAC/8C,GAAa+3C,OAAQgF,IAExB,OAAOjG,EAAe5oD,EAAM+rC,YAAYp2C,OAAS,OAG7Cm5D,EAA8Bz1C,sBAAS,KAC3C,MAAM01C,EAAY,GAClB,IAAK,IAAIp+D,EAAI,EAAGA,EAAI+N,EAAmBxL,MAAMrC,OAAQF,IAAK,CACxD,MAAMyN,EAAQM,EAAmBxL,MAAMvC,GAAGuN,WAAWG,IAAIxC,GAAQA,EAAK4C,MAClEL,EAAMI,SAASwB,EAAM+rC,YAAY/vC,KAAK+yD,EAAU59D,KAAKR,GAE3D,OAAOo+D,IAGHtyD,EAAS4c,sBAAS,IAAM,WAAYrZ,EAAM+rC,YAAc/rC,EAAM+rC,YAAYtvC,OAAS,GACnF9B,EAAS0e,sBAAS,IAAM,WAAYrZ,EAAM+rC,YAAc/rC,EAAM+rC,YAAYpxC,OAAS,GAEzF,MAAO,CAAC08B,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,UAAW,CAAE,eAAgBtX,EAAQqxB,gBAAkBrxB,EAAQk3B,YACvFrxD,MAAOoxC,4BAAgB,CACrBlyC,IAAKi7B,EAAQ2U,YAAY5vC,IAAMw7B,mBAAOz1B,GAAe,KACrDhG,KAAMk7B,EAAQ2U,YAAY7vC,KAAOy7B,mBAAOz1B,GAAe,KACvDutC,UAAW,UAAU9X,mBAAOl7B,SAC5BuyD,gBAAiB,GAAG53B,EAAQ2U,YAAYrxC,MAAQi9B,mBAAOz1B,GAAe,OAAOy1B,mBAAOh9B,GAAUg9B,mBAAOz1B,GAAe,SAErH,CACAk1B,EAAQi3B,YACJ92B,yBAAc0U,yBAAake,qCAAyBxyB,mBAAO42B,IAA2B,CACrF/6D,IAAK,EACLu4C,YAAa3U,EAAQ2U,YACrBqhB,gBAAiBh2B,EAAQ2U,YAAY7wB,OAASkc,EAAQoM,uBAAyBpM,EAAQqxB,eACvF7oB,cAAexI,EAAQwI,cACvBuC,aAAc/K,EAAQ+K,aACtBsF,gBAAiBrQ,EAAQqQ,gBACzBc,kBAAmBnR,EAAQmR,mBAC1B,KAAM,EAAG,CAAC,cAAe,iBAAkB,gBAAiB,eAAgB,kBAAmB,uBAClGsD,gCAAoB,IAAI,GACF,gBAAzBlU,mBAAOh1B,IAAmCg1B,mBAAOm3B,GAA6Bj+D,QAC1E0mC,yBAAcC,gCAAoB,MAAOZ,GAAY,EACnDW,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOm3B,GAA+BzuD,IAChGk3B,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,aACPrjC,IAAK6M,GACJw3B,6BAAiBx3B,EAAQ,GAAI,KAC9B,SAENwrC,gCAAoB,IAAI,GAC3BzU,EAAQk3B,UAAYl3B,EAAQ2U,YAAY3yC,MACpCm+B,yBAAc0U,yBAAagjB,GAAa,CACvCz7D,IAAK,EACLu4C,YAAa3U,EAAQ2U,YACrB3yC,KAAMg+B,EAAQ2U,YAAY3yC,KAC1BsvD,eAAgBtxB,EAAQsxB,eACxBla,YAAalX,EAAO,KAAOA,EAAO,GAAKmX,2BAAe,OAAU,CAAC,WAChE,KAAM,EAAG,CAAC,cAAe,OAAQ,oBACpC5C,gCAAoB,IAAI,IAC3B,O,UC1IL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,U,4ECLf,MACMjV,GAAa,CAAC,OAYQK,oCAAiB,CAC3CC,OAAQ,mBACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIR9F,EAASjY,sBAAS,IAAMrZ,EAAM+rC,YAAYza,SAC1C,YAAEkY,GAAgBqF,GAAiBvd,GAEnCoC,EAAQra,sBAAS,IAAMrZ,EAAM+rC,YAAYrY,OACzCh3B,EAAQ2c,sBAAS,IAAMrZ,EAAM+rC,YAAYrvC,QACzC,UAAE+sC,GAAcqF,GAAepb,EAAOh3B,GAEtCm3B,EAAOxa,sBAAS,IAAMrZ,EAAM+rC,YAAYlY,OACxC,UAAEqX,EAAF,YAAaC,GAAgBa,GAAanY,GAE1CD,EAAUva,sBAAS,IAAMrZ,EAAM+rC,YAAYnY,UAC3C,OAAEh4B,GAAWmzC,GAAUnb,GAE7B,MAAO,CAACyD,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,qBACP55B,MAAOoxC,4BAAgB,CACrBlyC,IAAKi7B,EAAQ2U,YAAY5vC,IAAM,KAC/BD,KAAMk7B,EAAQ2U,YAAY7vC,KAAO,KACjCxB,MAAO08B,EAAQ2U,YAAYrxC,MAAQ,KACnCC,OAAQy8B,EAAQ2U,YAAYpxC,OAAS,QAEtC,CACDi9B,gCAAoB,MAAO,CACzBf,MAAO,iBACP55B,MAAOoxC,4BAAgB,CAAEoB,UAAW,UAAUrY,EAAQ2U,YAAYtvC,gBACjE,CACDm7B,gCAAoB,MAAO,CACzBf,MAAO,kBACP55B,MAAOoxC,4BAAgB,CACrBzyC,OAAQ+7B,mBAAO6R,GAAe,eAAe7R,mBAAO6R,MAAkB,GACtEiG,UAAW9X,mBAAO8R,MAEnB,CACD/O,yBAAamV,GAAc,CAAE9D,YAAa3U,EAAQ2U,aAAe,KAAM,EAAG,CAAC,gBAC3EnU,gCAAoB,MAAO,CACzBf,MAAO,gBACP55B,MAAOoxC,4BAAgB,CAAE/B,SAAU3U,mBAAOuT,GAAWjuC,SACpD,CACD26B,gCAAoB,MAAO,CACzB9mB,IAAKsmB,EAAQ2U,YAAYj7B,IACzBw9B,WAAW,EACXrxC,MAAOoxC,4BAAgB,CACrBlyC,IAAKw7B,mBAAOwT,GAAahvC,IACzBD,KAAMy7B,mBAAOwT,GAAajvC,KAC1BxB,MAAOi9B,mBAAOwT,GAAazwC,MAC3BC,OAAQg9B,mBAAOwT,GAAaxwC,OAC5BiB,OAAQ+7B,mBAAO/7B,KAEjB2yC,IAAK,IACJ,KAAM,GAAI3X,IACZQ,EAAQ2U,YAAYgE,WAChBxY,yBAAcC,gCAAoB,MAAO,CACxChkC,IAAK,EACLqjC,MAAO,aACP55B,MAAOoxC,4BAAgB,CACzB9wC,gBAAiB65B,EAAQ2U,YAAYgE,UAAUz3C,MAC/CkE,QAAS46B,EAAQ2U,YAAYgE,UAAUvzC,WAEpC,KAAM,IACTqvC,gCAAoB,IAAI,IAC3B,IACF,IACF,IACF,O,UCxFL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMjV,GAAa,CAAC,aASQK,oCAAiB,CAC3CC,OAAQ,kBACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIR9F,EAASjY,sBAAS,IAAMrZ,EAAM+rC,YAAYza,SAC1C,YAAEkY,GAAgBqF,GAAiBvd,GAEnC49B,EAAS71C,sBAAS,KAAM,CAC5B,gBAAmBrZ,EAAM+rC,YAAY0M,YAAc,GAAnC,KAChB,yBAA4DtnB,IAArCnxB,EAAM+rC,YAAYxY,eAA+B,EAAIvzB,EAAM+rC,YAAYxY,gBAA1E,QAGtB,MAAO,CAAC8D,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,oBACP55B,MAAOoxC,4BAAgB,CACrBlyC,IAAKi7B,EAAQ2U,YAAY5vC,IAAM,KAC/BD,KAAMk7B,EAAQ2U,YAAY7vC,KAAO,KACjCxB,MAAO08B,EAAQ2U,YAAYrxC,MAAQ,KACnCC,OAAQy8B,EAAQ2U,YAAYpxC,OAAS,QAEtC,CACDi9B,gCAAoB,MAAO,CACzBf,MAAO,iBACP55B,MAAOoxC,4BAAgB,CAAEoB,UAAW,UAAUrY,EAAQ2U,YAAYtvC,gBACjE,CACDm7B,gCAAoB,MAAO,CACzBf,MAAO,kBACP55B,MAAOoxC,4BAAgB,CACrB3zC,MAAO08B,EAAQ2U,YAAY30B,SAAW,OAASggB,EAAQ2U,YAAYrxC,MAAQ,KAC3EC,OAAQy8B,EAAQ2U,YAAY30B,SAAWggB,EAAQ2U,YAAYpxC,OAAS,KAAO,OAC3E4C,gBAAiB65B,EAAQ2U,YAAYzvC,KACrCE,QAAS46B,EAAQ2U,YAAYvvC,QAC7B27C,WAAYxgB,mBAAO6R,GACnB7sC,WAAYy6B,EAAQ2U,YAAYpvC,WAChCy7C,eAAgBhhB,EAAQ2U,YAAY5uC,WAAa,GAAK,KACtD7E,MAAO8+B,EAAQ2U,YAAYjvC,aAC3Bu7C,WAAYjhB,EAAQ2U,YAAYlvC,gBAChCy7C,YAAalhB,EAAQ2U,YAAY30B,SAAW,cAAgB,mBAE7D,CACDsjB,yBAAa6d,GAAgB,CAC3B79C,MAAO08B,EAAQ2U,YAAYrxC,MAC3BC,OAAQy8B,EAAQ2U,YAAYpxC,OAC5B8C,QAAS25B,EAAQ2U,YAAYtuC,SAC5B,KAAM,EAAG,CAAC,QAAS,SAAU,YAChCm6B,gCAAoB,MAAO,CACzBf,MAAO,0BACP55B,MAAOoxC,4BAAgB1W,mBAAOu3B,IAC9B5Y,UAAWlf,EAAQ2U,YAAYnvC,SAC9B,KAAM,GAAIg6B,KACZ,IACF,IACF,O,UCtEL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMA,GAAa,CAAC,QAAS,UACvBE,GAAa,CAAEtjC,IAAK,GACpBujC,GAAa,CAAC,aACdC,GAAa,CAAC,IAAK,OAAQ,SAAU,eAAgB,oBACrDgC,GAAa,CAAC,aAWQ/B,oCAAiB,CAC3CC,OAAQ,mBACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIR35B,EAAU4b,sBAAS,IAAMrZ,EAAM+rC,YAAYtuC,UAC3C,aAAE2tC,EAAF,aAAgBC,EAAhB,aAA8BC,GAAiBG,GAAkBhuC,GAEjE6zB,EAASjY,sBAAS,IAAMrZ,EAAM+rC,YAAYza,SAC1C,YAAEkY,GAAgBqF,GAAiBvd,GAEnCoC,EAAQra,sBAAS,IAAMrZ,EAAM+rC,YAAYrY,OACzCh3B,EAAQ2c,sBAAS,IAAMrZ,EAAM+rC,YAAYrvC,QACzC,UAAE+sC,GAAcqF,GAAepb,EAAOh3B,GAEtCgB,EAAO2b,sBAAoB,KAC/B,MAAMu/B,EAAyB,CAC7Bh8C,QAAS,GACTC,gBAAiB,OACjBC,aAAc,OACdpE,MAAO,UAET,OAAKsH,EAAM+rC,YAAYruC,KAEhBsC,EAAM+rC,YAAYruC,KAFWk7C,IAKtC,MAAO,CAACvhB,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,qBACP55B,MAAOoxC,4BAAgB,CACrBlyC,IAAKi7B,EAAQ2U,YAAY5vC,IAAM,KAC/BD,KAAMk7B,EAAQ2U,YAAY7vC,KAAO,KACjCxB,MAAO08B,EAAQ2U,YAAYrxC,MAAQ,KACnCC,OAAQy8B,EAAQ2U,YAAYpxC,OAAS,QAEtC,CACDi9B,gCAAoB,MAAO,CACzBf,MAAO,iBACP55B,MAAOoxC,4BAAgB,CAAEoB,UAAW,UAAUrY,EAAQ2U,YAAYtvC,gBACjE,CACDm7B,gCAAoB,MAAO,CACzBf,MAAO,kBACP55B,MAAOoxC,4BAAgB,CACrB7xC,QAAS46B,EAAQ2U,YAAYvvC,QAC7BZ,OAAQ+7B,mBAAO6R,GAAe,eAAe7R,mBAAO6R,MAAkB,GACtEiG,UAAW9X,mBAAO8R,GAClBnxC,MAAOq/B,mBAAOj6B,GAAMZ,aACpBu7C,WAAY1gB,mBAAOj6B,GAAMb,mBAE1B,EACA06B,yBAAcC,gCAAoB,MAAO,CACxCmU,SAAU,UACVjxC,MAAO08B,EAAQ2U,YAAYrxC,MAC3BC,OAAQy8B,EAAQ2U,YAAYpxC,QAC3B,CACAy8B,EAAQ2U,YAAYoN,UAChB5hB,yBAAcC,gCAAoB,OAAQV,GAAY,CACrD4D,yBAAa0e,GAAc,CACzBp9C,GAAI,iBAAiBo7B,EAAQ2U,YAAY/vC,GACzCrG,KAAMyhC,EAAQ2U,YAAYoN,SAASxjD,KACnCi9B,OAAQwE,EAAQ2U,YAAYoN,SAAS7gD,MAAM,GAC3Cu6B,OAAQuE,EAAQ2U,YAAYoN,SAAS7gD,MAAM,GAC3CmE,OAAQ26B,EAAQ2U,YAAYoN,SAAS18C,QACpC,KAAM,EAAG,CAAC,KAAM,OAAQ,SAAU,SAAU,cAEjDovC,gCAAoB,IAAI,GAC5BjU,gCAAoB,IAAK,CACvB6X,UAAW,SAASrY,EAAQ2U,YAAYrxC,MAAQ08B,EAAQ2U,YAAY3vC,QAAQ,OAAOg7B,EAAQ2U,YAAYpxC,OAASy8B,EAAQ2U,YAAY3vC,QAAQ,0CAC3I,CACDw7B,gCAAoB,OAAQ,CAC1B,gBAAiB,qBACjB,iBAAkB,OAClB,oBAAqB,IACrBplC,EAAG4kC,EAAQ2U,YAAY1vC,KACvBC,KAAM86B,EAAQ2U,YAAYoN,SAAW,sBAAsB/hB,EAAQ2U,YAAY/vC,MAAQo7B,EAAQ2U,YAAYzvC,KAC3GsvC,OAAQjU,mBAAO2T,GACf,eAAgB3T,mBAAOyT,GACvB,mBAA6C,WAAzBzT,mBAAO0T,GAA6B,OAAS,OAChE,KAAM,EAAGrU,KACX,EAAGD,KACL,EAAGH,KACNgB,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,aAAc/W,mBAAOj6B,GAAMhF,SAClD,CACDk/B,gCAAoB,MAAO,CACzBf,MAAO,qBACPyf,UAAW3e,mBAAOj6B,GAAMd,SACvB,KAAM,EAAGo8B,KACX,IACF,IACF,IACF,O,UClHL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMpC,GAAa,CAAC,QAAS,UACvBE,GAAa,CAAC,IAAK,SAAU,eAAgB,mBAAoB,eAAgB,cAU3DG,oCAAiB,CAC3CC,OAAQ,kBACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIR9F,EAASjY,sBAAS,IAAMrZ,EAAM+rC,YAAYza,SAC1C,YAAEkY,GAAgBqF,GAAiBvd,GAEnCyoB,EAAW1gC,sBAAS,KACxB,MAAM3e,EAAQ8F,KAAK69B,IAAIr+B,EAAM+rC,YAAY90C,MAAM,GAAK+I,EAAM+rC,YAAYhvC,IAAI,IAC1E,OAAOrC,EAAQ,GAAK,GAAKA,IAErBs/C,EAAY3gC,sBAAS,KACzB,MAAM1e,EAAS6F,KAAK69B,IAAIr+B,EAAM+rC,YAAY90C,MAAM,GAAK+I,EAAM+rC,YAAYhvC,IAAI,IAC3E,OAAOpC,EAAS,GAAK,GAAKA,IAGtBs/C,EAAgB5gC,sBAAS,IAAkC,WAA5BrZ,EAAM+rC,YAAY9uC,MAAqB,QAAU,QAEhFZ,EAAOgd,sBAAS,IACbvJ,GAAmB9P,EAAM+rC,cAGlC,MAAO,CAAC1U,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,oBACP55B,MAAOoxC,4BAAgB,CACrBlyC,IAAKi7B,EAAQ2U,YAAY5vC,IAAM,KAC/BD,KAAMk7B,EAAQ2U,YAAY7vC,KAAO,QAElC,CACD07B,gCAAoB,MAAO,CACzBf,MAAO,kBACP55B,MAAOoxC,4BAAgB,CAAEzyC,OAAQ+7B,mBAAO6R,GAAe,eAAe7R,mBAAO6R,MAAkB,MAC9F,EACAjS,yBAAcC,gCAAoB,MAAO,CACxCmU,SAAU,UACVjxC,MAAOi9B,mBAAOoiB,GACdp/C,OAAQg9B,mBAAOqiB,IACd,CACDpiB,gCAAoB,OAAQ,KAAM,CAC/BR,EAAQ2U,YAAY/uC,OAAO,IACvBu6B,yBAAc0U,yBAAaiO,GAAiB,CAC3C1mD,IAAK,EACLwI,GAAIo7B,EAAQ2U,YAAY/vC,GACxBmb,SAAU,QACVxhB,KAAMyhC,EAAQ2U,YAAY/uC,OAAO,GACjC1E,MAAO8+B,EAAQ2U,YAAYzzC,MAC3BmwC,SAAUrR,EAAQ2U,YAAYrxC,OAC7B,KAAM,EAAG,CAAC,KAAM,OAAQ,QAAS,cACpCmxC,gCAAoB,IAAI,GAC3BzU,EAAQ2U,YAAY/uC,OAAO,IACvBu6B,yBAAc0U,yBAAaiO,GAAiB,CAC3C1mD,IAAK,EACLwI,GAAIo7B,EAAQ2U,YAAY/vC,GACxBmb,SAAU,MACVxhB,KAAMyhC,EAAQ2U,YAAY/uC,OAAO,GACjC1E,MAAO8+B,EAAQ2U,YAAYzzC,MAC3BmwC,SAAUrR,EAAQ2U,YAAYrxC,OAC7B,KAAM,EAAG,CAAC,KAAM,OAAQ,QAAS,cACpCmxC,gCAAoB,IAAI,KAE9BjU,gCAAoB,OAAQ,CAC1BplC,EAAGmlC,mBAAOt7B,GACVuvC,OAAQxU,EAAQ2U,YAAYzzC,MAC5B,eAAgB8+B,EAAQ2U,YAAYrxC,MACpC,mBAAoBi9B,mBAAOsiB,GAC3B39C,KAAM,OACN,eAAgB86B,EAAQ2U,YAAY/uC,OAAO,GAAK,QAAQo6B,EAAQ2U,YAAY/vC,MAAMo7B,EAAQ2U,YAAY/uC,OAAO,YAAc,GAC3H,aAAco6B,EAAQ2U,YAAY/uC,OAAO,GAAK,QAAQo6B,EAAQ2U,YAAY/vC,MAAMo7B,EAAQ2U,YAAY/uC,OAAO,UAAY,IACtH,KAAM,EAAG85B,KACX,EAAGF,MACL,IACF,O,UC3FL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCGaK,gCAAiB,CAC3CC,OAAQ,mBACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,IAGZrU,MAAMC,GAIR,MAAMgjB,EAAaC,oBAAO/e,KAAwB9N,iBAAI,GAEhD2hC,EAAgB91C,sBAAS,IAAM+gC,EAAWlnD,MAAQ,GAClDk8D,EAAO/1C,sBAAS,IAAM81C,EAAcj8D,MAAQ,EAAIknD,EAAWlnD,MAAQ,GAEzE,MAAO,CAACmkC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,qBACP55B,MAAOoxC,4BAAgB,CACrBlyC,IAAKi7B,EAAQ2U,YAAY5vC,IAAM,KAC/BD,KAAMk7B,EAAQ2U,YAAY7vC,KAAO,KACjCxB,MAAO08B,EAAQ2U,YAAYrxC,MAAQ,KACnCC,OAAQy8B,EAAQ2U,YAAYpxC,OAAS,QAEtC,CACDi9B,gCAAoB,MAAO,CACzBf,MAAO,iBACP55B,MAAOoxC,4BAAgB,CAAEoB,UAAW,UAAUrY,EAAQ2U,YAAYtvC,gBACjE,CACDm7B,gCAAoB,MAAO,CACzBf,MAAO,kBACP55B,MAAOoxC,4BAAgB,CACrB9wC,gBAAiB65B,EAAQ2U,YAAYzvC,QAEtC,CACDo+B,yBAAa6d,GAAgB,CAC3B79C,MAAO08B,EAAQ2U,YAAYrxC,MAC3BC,OAAQy8B,EAAQ2U,YAAYpxC,OAC5B8C,QAAS25B,EAAQ2U,YAAYtuC,SAC5B,KAAM,EAAG,CAAC,QAAS,SAAU,YAChCi9B,yBAAa6gB,GAAO,CAClB7gD,MAAO08B,EAAQ2U,YAAYrxC,MAAQi9B,mBAAOy3B,GAC1Cz0D,OAAQy8B,EAAQ2U,YAAYpxC,OAASg9B,mBAAOy3B,GAC5Cz5D,KAAMyhC,EAAQ2U,YAAYr2B,UAC1BrlB,KAAM+mC,EAAQ2U,YAAY17C,KAC1B0lB,QAASqhB,EAAQ2U,YAAYh2B,QAC7B1Y,WAAY+5B,EAAQ2U,YAAY1uC,WAChCsY,UAAWyhB,EAAQ2U,YAAYp2B,UAC/BE,QAASuhB,EAAQ2U,YAAY17C,KAAKwlB,QAClCsf,OAAQiC,EAAQ2U,YAAY5W,QAAU,GACtCl4B,MAAOoxC,4BAAgB,CAAE+gB,KAAM,EAAIz3B,mBAAOy3B,MACzC,KAAM,EAAG,CAAC,QAAS,SAAU,OAAQ,OAAQ,UAAW,aAAc,YAAa,UAAW,SAAU,WAC1G,IACF,IACF,O,UC7DL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMx4B,GAAa,CAAC,SACdE,GAAa,CAAC,UAAW,WACzBC,GAAa,CAAC,aASQE,oCAAiB,CAC3CC,OAAQ,cACRl3B,MAAO,CACP3P,KAAM,CACJsF,KAAMc,MACN+0C,UAAU,GAEZ9wC,MAAO,CACL/E,KAAM41C,OACNC,UAAU,GAEZv0B,cAAe,CACbthB,KAAM41C,OACNC,UAAU,GAEZ50B,UAAW,CACTjhB,KAAMc,MACN+0C,UAAU,GAEZ/tC,QAAS,CACP9H,KAAM7E,OACN06C,UAAU,GAEZpuC,MAAO,CACLzH,KAAM7E,QAERmhB,SAAU,CACRtc,KAAMsgD,QACNhe,SAAS,IAGXd,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIRylB,EAAcrvB,iBAAc,IAC5BsvB,EAAazjC,sBAAS,IAAMwjC,EAAY3pD,MAAM6pD,OAAO,CAACC,EAAGC,IAAMD,EAAIC,IAEzExgB,mBAAM,CACJ,IAAMz8B,EAAM4W,UACZ,IAAM5W,EAAMtF,OACX,KACDmiD,EAAY3pD,MAAQ8M,EAAM4W,UAAUvY,IAAIxC,GAAQA,EAAOmE,EAAMtF,QAC5D,CAAEqhD,WAAW,IAEhB,MAAM/2C,EAAQqU,sBAAS,IAAMrZ,EAAM3P,OAC7B,UAAEwrD,GAAcuB,GAAap4C,GAE7B5H,EAAQic,sBAAS,IAAMrZ,EAAM5C,QAC7B,cAAE0+C,GAAkBc,GAAiBx/C,GAE3C,MAAO,CAACi6B,EAAUC,KAAe,cAC/B,OAAQC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,eACP55B,MAAOoxC,4BAAgB,CAAE3zC,MAAOi9B,mBAAOmlB,GAAc,QACpD,CACDllB,gCAAoB,QAAS,CAC3Bf,MAAO6X,4BAAgB,CACrB,MAAS/W,mBAAOv6B,GAChB,uBAAcu6B,mBAAOv6B,UAArB,aAAc,EAAeyZ,UAC7B,uBAAc8gB,mBAAOv6B,UAArB,aAAc,EAAe0Z,UAC7B,uBAAc6gB,mBAAOv6B,UAArB,aAAc,EAAe2Z,UAC7B,uBAAc4gB,mBAAOv6B,UAArB,aAAc,EAAe4Z,YAE/B/Z,MAAOoxC,4BAAgB,2BAAiB1W,mBAAOv6B,UAAxB,aAAiB,EAAe9E,4BAA4Bq/B,mBAAOmkB,GAAe,yBAAyBnkB,mBAAOmkB,GAAe,OACvJ,CACDlkB,gCAAoB,WAAY,KAAM,EACnCL,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYmlB,EAAY3pD,MAAO,CAACwH,EAAO2F,KACrFk3B,yBAAcC,gCAAoB,MAAO,CAC/CkpB,KAAM,IACNltD,IAAK6M,EACL3F,MAAOA,GACN,KAAM,EAAGk8B,MACV,QAENgB,gCAAoB,QAAS,KAAM,EAChCL,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYN,EAAQ/mC,KAAM,CAACkmB,EAAUknC,KACnFlmB,yBAAcC,gCAAoB,KAAM,CAC9ChkC,IAAKiqD,EACLxgD,MAAOoxC,4BAAgB,CAAE1zC,OAAQy8B,EAAQngB,cAAgB,QACxD,EACAsgB,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYnhB,EAAU,CAAC0f,EAAMynB,IAC5EtP,6BAAiB7W,yBAAcC,gCAAoB,KAAM,CAC9DX,MAAO,OACP55B,MAAOoxC,4BAAgB,CACzBsS,YAAavpB,EAAQ35B,QAAQR,MAC7B2jD,YAAaxpB,EAAQ35B,QAAQnF,MAC7BuoD,YAAazpB,EAAQ35B,QAAQ/C,MAAQ,QAClCi9B,mBAAO6jB,GAAP7jB,CAAqB1B,EAAKh5B,SAE3BzJ,IAAKyiC,EAAKj6B,GACVya,QAASwf,EAAKxf,QACdD,QAASyf,EAAKzf,SACb,CACDohB,gCAAoB,MAAO,CACzBf,MAAO,YACP55B,MAAOoxC,4BAAgB,CAAET,UAAYxW,EAAQngB,cAAgB,EAAK,OAClEq/B,UAAW3e,mBAAOikB,GAAPjkB,CAAmB1B,EAAKv4B,OAClC,KAAM,GAAIq5B,KACZ,GAAID,KAAc,CACnB,CAACoqB,YAASvpB,mBAAOkkB,GAAWr9C,SAAS,GAAGi/C,KAAYC,SAEpD,OACH,KACD,SAEL,IACF,O,UCtHL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACM9mB,GAAa,CAAEC,MAAO,mBAQAI,oCAAiB,CAC3CC,OAAQ,mBACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,IAGZrU,MAAMC,GAIR,MAAO,CAACC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,qBACP55B,MAAOoxC,4BAAgB,CACrBlyC,IAAKi7B,EAAQ2U,YAAY5vC,IAAM,KAC/BD,KAAMk7B,EAAQ2U,YAAY7vC,KAAO,KACjCxB,MAAO08B,EAAQ2U,YAAYrxC,MAAQ,QAEpC,CACDk9B,gCAAoB,MAAO,CACzBf,MAAO,iBACP55B,MAAOoxC,4BAAgB,CAAEoB,UAAW,UAAUrY,EAAQ2U,YAAYtvC,gBACjE,CACDm7B,gCAAoB,MAAOhB,GAAY,CACrC8D,yBAAa20B,GAAa,CACxBh/D,KAAM+mC,EAAQ2U,YAAY17C,KAC1BqK,MAAO08B,EAAQ2U,YAAYrxC,MAC3Buc,cAAemgB,EAAQ2U,YAAY90B,cACnCL,UAAWwgB,EAAQ2U,YAAYn1B,UAC/BnZ,QAAS25B,EAAQ2U,YAAYtuC,QAC7BL,MAAOg6B,EAAQ2U,YAAY3uC,OAC1B,KAAM,EAAG,CAAC,OAAQ,QAAS,gBAAiB,YAAa,UAAW,aAExE,IACF,O,UC1CL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMw5B,GAAa,CAAEC,MAAO,mBACtBC,GAAa,CAAC,QAAS,SAAU,SAAU,gBAC3CC,GAAa,CAAC,aACdC,GAAa,CAAC,KAMQC,oCAAiB,CAC3CC,OAAQ,mBACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,IAGZrU,MAAMC,GAIR,MAAO,CAACC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,qBACP55B,MAAOoxC,4BAAgB,CACrBlyC,IAAKi7B,EAAQ2U,YAAY5vC,IAAM,KAC/BD,KAAMk7B,EAAQ2U,YAAY7vC,KAAO,KACjCxB,MAAO08B,EAAQ2U,YAAYrxC,MAAQ,KACnCC,OAAQy8B,EAAQ2U,YAAYpxC,OAAS,QAEtC,CACDi9B,gCAAoB,MAAO,CACzBf,MAAO,iBACP55B,MAAOoxC,4BAAgB,CAAEoB,UAAW,UAAUrY,EAAQ2U,YAAYtvC,gBACjE,CACDm7B,gCAAoB,MAAOhB,GAAY,EACpCW,yBAAcC,gCAAoB,MAAO,CACxCmU,SAAU,UACVjxC,MAAO08B,EAAQ2U,YAAYrxC,MAC3BC,OAAQy8B,EAAQ2U,YAAYpxC,OAC5BixC,OAAQxU,EAAQ2U,YAAYzzC,MAC5B,eAAgB8+B,EAAQ2U,YAAY7zB,YACpC5b,KAAM,OACN,iBAAkB,QAClB,kBAAmB,SAClB,CACDs7B,gCAAoB,IAAK,CACvB6X,UAAW,SAASrY,EAAQ2U,YAAYrxC,MAAQ08B,EAAQ2U,YAAY3vC,QAAQ,OAAOg7B,EAAQ2U,YAAYpxC,OAASy8B,EAAQ2U,YAAY3vC,QAAQ,0CAC3I,CACDw7B,gCAAoB,OAAQ,CAC1BplC,EAAG4kC,EAAQ2U,YAAY1vC,MACtB,KAAM,EAAG26B,KACX,EAAGD,KACL,EAAGD,QAEP,IACF,O,UCtDL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCDaG,gCAAiB,CAC3CC,OAAQ,mBACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,IAGZrU,MAAMC,GAIR,MAAO,CAACC,EAAUC,KAChB,MAAM2vB,EAAyB7sB,8BAAkB,eAEjD,OAAQ7C,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,qBACP55B,MAAOoxC,4BAAgB,CACrBlyC,IAAKi7B,EAAQ2U,YAAY5vC,IAAM,KAC/BD,KAAMk7B,EAAQ2U,YAAY7vC,KAAO,KACjCxB,MAAO08B,EAAQ2U,YAAYrxC,MAAQ,KACnCC,OAAQy8B,EAAQ2U,YAAYpxC,OAAS,QAEtC,CACDi9B,gCAAoB,MAAO,CACzBf,MAAO,iBACP55B,MAAOoxC,4BAAgB,CAAEoB,UAAW,UAAUrY,EAAQ2U,YAAYtvC,gBACjE,CACDm7B,gCAAoB,MAAO,CACzBf,MAAO,kBACP55B,MAAOoxC,4BAAgB,CAAEuc,gBAAiB,OAAOxzB,EAAQ2U,YAAYoX,aACpE,CACDzoB,yBAAausB,EAAwB,CAAEpwB,MAAO,UAC7C,IACF,IACF,O,UCpCL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMD,GAAa,CAAEC,MAAO,mBAMAI,oCAAiB,CAC3CC,OAAQ,mBACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIR+wB,EAAgB9uC,sBAAS,IACtB7Y,KAAKC,IAAIT,EAAM+rC,YAAYrxC,MAAOsF,EAAM+rC,YAAYpxC,QAAU,MAGvE,MAAO,CAAC08B,EAAUC,KAChB,MAAM6vB,EAA8B/sB,8BAAkB,oBAEtD,OAAQ7C,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,qBACP55B,MAAOoxC,4BAAgB,CACrBlyC,IAAKi7B,EAAQ2U,YAAY5vC,IAAM,KAC/BD,KAAMk7B,EAAQ2U,YAAY7vC,KAAO,KACjCxB,MAAO08B,EAAQ2U,YAAYrxC,MAAQ,KACnCC,OAAQy8B,EAAQ2U,YAAYpxC,OAAS,QAEtC,CACDi9B,gCAAoB,MAAO,CACzBf,MAAO,iBACP55B,MAAOoxC,4BAAgB,CAAEoB,UAAW,UAAUrY,EAAQ2U,YAAYtvC,gBACjE,CACDm7B,gCAAoB,MAAOhB,GAAY,CACrC8D,yBAAaysB,EAA6B,CACxCtwB,MAAO,aACP55B,MAAOoxC,4BAAgB,CACrB7d,SAAUmH,mBAAOwwB,GACjB7vD,MAAO8+B,EAAQ2U,YAAYzzC,SAE5B,KAAM,EAAG,CAAC,aAEd,IACF,O,UChDL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCSa2+B,gCAAiB,CAC3CC,OAAQ,mBACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,GAEZgd,aAAc,CACZ7yD,KAAM41C,OACNC,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIRuxB,EAA0BtvC,sBAAS,KACvC,MAAMuvC,EAAiB,CACrB,CAAC92C,GAAa+2C,OAAQyG,GACtB,CAACx9C,GAAai3C,MAAOwG,GACrB,CAACz9C,GAAam3C,OAAQuG,GACtB,CAAC19C,GAAaq3C,MAAOsG,GACrB,CAAC39C,GAAau3C,OAAQqG,GACtB,CAAC59C,GAAay3C,OAAQoG,GACtB,CAAC79C,GAAa23C,OAAQmG,GACtB,CAAC99C,GAAa63C,OAAQkG,GACtB,CAAC/9C,GAAa+3C,OAAQiG,IAExB,OAAOlH,EAAe5oD,EAAM+rC,YAAYp2C,OAAS,OAGnD,MAAO,CAAC0hC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,eAAgB,gBAAgBtX,EAAQ2U,YAAY/vC,KAC5EiB,MAAOoxC,4BAAgB,CACrB6b,OAAQ9yB,EAAQoxB,gBAEjB,EACAjxB,yBAAc0U,yBAAake,qCAAyBxyB,mBAAOgxB,IAA2B,CACrF5c,YAAa3U,EAAQ2U,YACrBlzB,OAAQ,aACP,KAAM,EAAG,CAAC,kBACZ,OC1DL,MAAM,GAAc,GAEL,UCFf,MACM+d,GAAa,CACjBpjC,IAAK,EACLqjC,MAAO,eAcmBI,oCAAiB,CAC3CC,OAAQ,QACRl3B,MAAO,CACPH,MAAO,CACLlK,KAAM7E,OACN06C,UAAU,GAEZ/wC,KAAM,CACJ9E,KAAM41C,OACNC,UAAU,GAEZrQ,QAAS,CACPxlC,KAAMsgD,QACNhe,SAAS,IAGXd,MAAMC,GAER,MAAMp3B,EAAQo3B,GAIR,cAAEt5B,GAAkBqX,eAAYxX,KAEhCT,EAAamc,sBAAS,IAAMrZ,EAAMH,MAAM3C,aACxC,gBAAEstD,GAAoBO,GAAwB7tD,GAE9C6G,EAAQsV,sBAAS,IAAMrZ,EAAMvF,KAAOmX,IAG1C,OAFAm+C,qBAAQz0B,GAAqBv3B,GAEtB,CAACszB,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,kBACP55B,MAAOoxC,4BAAgB,CACrB3zC,MAAO08B,EAAQ38B,KAAO,KACtBE,OAAQy8B,EAAQ38B,KAAOk9B,mBAAO75B,GAAiB,QAEhD,CACAs5B,EAAQ+D,SACJ5D,yBAAcC,gCAAoB,MAAO,CACxChkC,IAAK,EACLqjC,MAAO,WACP55B,MAAOoxC,4BAAgB,CACzB3zC,MAAOi9B,mBAAO/lB,IAAiB,KAC/BjX,OAAQg9B,mBAAO/lB,IAAiB+lB,mBAAO75B,GAAiB,KACxD2xC,UAAW,SAAS9X,mBAAO5zB,SAExB,CACD6zB,gCAAoB,MAAO,CACzBf,MAAO,aACP55B,MAAOoxC,4BAAgB1W,mBAAO6yB,KAC7B,KAAM,IACRjzB,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYN,EAAQv3B,MAAM5D,SAAU,CAAC4E,EAASR,KAC5Fk3B,yBAAc0U,yBAAa+jB,GAAkB,CACnDx8D,IAAKqN,EAAQ7E,GACb+vC,YAAalrC,EACb2nD,aAAcnoD,EAAQ,GACrB,KAAM,EAAG,CAAC,cAAe,mBAC1B,OACH,KACFk3B,yBAAcC,gCAAoB,MAAOZ,GAAY,aACzD,O,UC3EL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMiC,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,eACtBC,GAAa,CAAED,MAAO,QACtBE,GAAa,CAAC,WACdC,GAAa,CACjBxjC,IAAK,EACLqjC,MAAO,WAEHmC,GAA2BH,GAAa,IAAmBjB,gCAAoB,MAAO,KAAM,OAAQ,IACpGqB,GAAa,CAAEpC,MAAO,QAqBAI,oCAAiB,CAC3CC,OAAQ,aACRgB,MAAO,CAAC,SACRf,MAAMC,GAAS,KAAEe,IAEsB,MAEzC,MAAM83B,EAAe,QAAOC,QAItB,cAAE3sD,GAAkB4R,eAAYvT,MAChC,OAAE7F,EAAF,aAAUiC,GAAiBmX,eAAYxX,KAEvChI,EAAO63B,iBAAa,OACpB2iC,EAAU3iC,iBAAI,IACdttB,EAAUstB,iBAAI,IAEpBttB,EAAQhN,OAAQ,UAAA6I,EAAO7I,MAAMgD,KAAK2F,GAAQA,EAAKG,KAAOgC,EAAa9K,MAAM8I,WAAzD,eAA8DA,KAAM,GAEpF,MAAMo0D,EAAgB/2C,sBAAS,IACxBnZ,EAAQhN,OAEN6I,EAAO7I,MAAMgD,KAAK2F,GAAQA,EAAKG,KAAOkE,EAAQhN,QAF1B,MAKvBm9D,EAAkB,CACtB,CAAE78D,IAAK,MAAOY,MAAO,QACrB,CAAEZ,IAAK,QAASY,MAAO,WAGnB,QAAE25D,GAAYG,KAEpB/qC,uBAAU,KAAK,MACb,UAAI5f,EAAcrQ,aAAlB,OAAI,EAAqBkG,OACe,QAAlCmK,EAAcrQ,MAAMkG,KAAKzD,KAAgBw6D,EAAQj9D,MAAQqQ,EAAcrQ,MAAMkG,KAAKyf,OAC3C,UAAlCtV,EAAcrQ,MAAMkG,KAAKzD,OAAkBuK,EAAQhN,MAAQqQ,EAAcrQ,MAAMkG,KAAKyf,QAE7FljB,EAAKzC,MAAQqQ,EAAcrQ,MAAMkG,KAAKzD,QAI1C,MAAM26D,EAAO,KACX,MAAMl3D,EAAuB,CAC3BzD,KAAMA,EAAKzC,MACX2lB,OAAuB,QAAfljB,EAAKzC,MAAkBi9D,EAAQj9D,MAAQgN,EAAQhN,OAEzD,GAAIqQ,EAAcrQ,MAAO,CACvB,MAAMq9D,EAAUxC,EAAQxqD,EAAcrQ,MAAOkG,GACzCm3D,EAASp4B,EAAK,SACbg4B,EAAQj9D,MAAQ,KAIzB,MAAO,CAACmkC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,EACpCS,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAY24B,EAAOG,GAC9D54B,gCAAoB,MAAO,CAChCf,MAAO6X,4BAAgB,CAAC,MAAO,CAAE,OAAU/4C,EAAKzC,QAAUs9D,EAAIh9D,OAC9DA,IAAKg9D,EAAIh9D,IACT+kC,QAAUC,GAAiB7iC,EAAKzC,MAAQs9D,EAAIh9D,KAC3CqkC,6BAAiB24B,EAAIp8D,OAAQ,GAAI2iC,KAClC,OAEU,QAAfphC,EAAKzC,OACDqkC,yBAAc0U,yBAAatU,mBAAO,SAAQ,CACzCnkC,IAAK,EACLqjC,MAAO,QACP3jC,MAAOi9D,EAAQj9D,MACf,iBAAkBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkB23B,EAASj9D,MAAQslC,GAChFi4B,YAAa,aACZ,KAAM,EAAG,CAAC,WACb5kB,gCAAoB,IAAI,GACZ,UAAfl2C,EAAKzC,OACDqkC,yBAAc0U,yBAAatU,mBAAO,SAAS,CAC1CnkC,IAAK,EACLqjC,MAAO,QACP3jC,MAAOgN,EAAQhN,MACf,iBAAkBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkBt4B,EAAShN,MAAQslC,IAC/E,CACDP,QAAS2C,qBAAS,IAAM,EACrBrD,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAO57B,GAAS,CAAC8D,EAAOQ,KAClFk3B,yBAAc0U,yBAAatU,mBAAOs4B,GAAe,CACvDz8D,IAAKqM,EAAM7D,GACX9I,MAAO2M,EAAM7D,GACb00D,SAAU/4B,mBAAO35B,GAAchC,KAAO6D,EAAM7D,IAC3C,CACDi8B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,OAASjD,6BAAiBx3B,EAAQ,GAAI,KAEzD06B,EAAG,GACF,KAAM,CAAC,QAAS,eACjB,QAENA,EAAG,GACF,EAAG,CAAC,WACP8Q,gCAAoB,IAAI,GACZ,UAAfl2C,EAAKzC,OAAqBykC,mBAAOy4B,IAC7B74B,yBAAcC,gCAAoB,MAAOR,GAAY,CACpDgC,GACA0B,yBAAai2B,GAAgB,CAC3B95B,MAAO,YACPh3B,MAAO83B,mBAAOy4B,GACd31D,KAAM,KACL,KAAM,EAAG,CAAC,aAEfoxC,gCAAoB,IAAI,GAC5BjU,gCAAoB,MAAOqB,GAAY,CACrCyB,yBAAa/C,mBAAO,SAAS,CAC3BY,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBL,EAAK,UAC1Dl7B,MAAO,CAAC,eAAe,SACtB,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3BhiC,KAAM,UACN4iC,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiB83B,MACpD,CACDr4B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,Y,UCxJX,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMnE,GAAa,CAAEC,MAAO,YACtBC,GAAa,CACjBtjC,IAAK,EACLqjC,MAAO,aA4CmBI,oCAAiB,CAC3CC,OAAQ,QACRC,MAAMC,GAER,MAAM/uB,EAAYzG,KACZ,oBACJC,EADI,qBAEJE,EAFI,gBAGJD,EAHI,oBAIJE,EAJI,gBAKJK,EALI,aAMJE,EANI,UAOJC,EAPI,gBAQJY,EARI,gBASJX,EATI,YAUJP,EAVI,kBAWJiB,GACEgS,eAAY9M,IACV,aAAErK,GAAiBmX,eAAYxX,MAC/B,aAAE6K,EAAF,cAAgBE,GAAkByM,eAAY5M,KAE9Co1B,EAAcnQ,mBACd0U,EAAiB1U,iBAA0B,IAE3CojC,EAAoBpjC,kBAAI,GACxBk7B,EAAiB,IAAMkI,EAAkB19D,OAAQ,EAEvDupC,mBAAM36B,EAAiB,KACrBuG,EAAU3E,wBAAwB,MAGpC,MAAM4K,EAAckf,iBAAkB,IAChCqjC,EAAsB,KAC1BviD,EAAYpb,MAAQ8K,EAAa9K,MAAQgM,KAAKG,MAAMH,KAAKC,UAAUnB,EAAa9K,MAAM+I,WAAa,IAErG2wD,yBAAYiE,GAEZ,MAAMn1B,EAAYlO,oBACZ,aAAEuP,EAAF,eAAgBL,GAAmBo0B,GAAgBp1B,GAEzDq1B,GAAmBr1B,GAEnB,MAAM,eAAEoC,EAAF,sBAAkBF,EAAlB,uBAAyCC,EAAzC,qBAAiEE,GAAyBizB,GAAkB1iD,EAAaqvB,IAEzH,YAAEiJ,GAAgBqqB,GAAe3iD,EAAa4zB,EAAgBhgC,IAC9D,gBAAEulC,GAAoBypB,GAAmB5iD,IACzC,cAAEi4B,GAAkB4qB,GAAiB7iD,EAAas4B,IAClD,aAAEzE,EAAF,kBAAgBsD,GAAsB2rB,GAAgB9iD,EAAa4zB,EAAgBhgC,IACnF,cAAE09B,GAAkByxB,GAAiB/iD,EAAaqvB,IAClD,kBAAE4K,GAAsB+oB,GAAqBhjD,EAAapM,IAE1D,iBAAEua,GAAqB0D,MACvB,kBAAE9E,GAAsBe,MACxB,aAAEG,GAAiB2D,MACnB,wBAAEX,GAA4Be,MAC9B,iBAAE3f,GAAqBof,KAI7BoD,uBAAU,KACJthB,EAAoB3O,MAAMrC,QAC5BooD,sBAAS,IAAM5wC,EAAU7E,uBAAuB,OAKpD,MAAM+tD,EAAwB9lD,IACxB5J,EAAoB3O,MAAMrC,QAAQwX,EAAU7E,uBAAuB,IAElEkF,EAAcxV,MACd6pC,EAAatxB,GADQsyB,EAAqBtyB,GAG1CpJ,EAAgBnP,OAAOmV,EAAUjE,oBAAmB,GACrDjB,EAAkBjQ,OAAOmV,EAAUjD,qBAAqB,MAC5Do2B,MAIFpY,yBAAY,KACNjgB,EAAkBjQ,OAAOmV,EAAUjD,qBAAqB,QAI9D,MAAMosD,EAAwB,KACxBnvD,EAAgBnP,OAAOmV,EAAUjE,oBAAmB,KAIpD,YAAEub,GAAgBY,KAClBkxC,EAAsB38C,sBAAS6K,EAAa,IAAK,CAAE3K,SAAS,EAAMJ,UAAU,IAC5E88C,EAA2B58C,sBAASnU,EAAkB,IAAK,CAAEqU,SAAS,EAAMJ,UAAU,IAEtF+8C,EAA0BlmD,IAC9BA,EAAEuW,iBAGExZ,EAAatV,MACXuY,EAAEmmD,OAAS,EAAGH,EAAoB,KAC7BhmD,EAAEmmD,OAAS,GAAGH,EAAoB,KAIvChmD,EAAEmmD,OAAS,EAAGF,EAAyB1nD,GAAK6P,MACvCpO,EAAEmmD,OAAS,GAAGF,EAAyB1nD,GAAK4P,KAKnDkgB,EAAc,KAClBzxB,EAAU7D,eAAehC,EAAUtP,SAI/B,iCAAE+1C,IAAqC4oB,GAA6Bl0B,GAEpEgR,GAAe,IACZ,CACL,CACEjxC,KAAM,KACNssD,QAAS,WACTxJ,QAASjkC,GAEX,CACE7e,KAAM,KACNssD,QAAS,WACTxJ,QAAS/jC,GAEX,CACE/e,KAAM,KACNssD,QAASxnD,EAAUtP,MAAQ,IAAM,GACjCstD,QAAS1mB,GAEX,CACEp8B,KAAM,MACN8iD,QAAS,IAAMn4C,EAAU9D,gBAAgBhC,EAAarP,MAAQ,EAAI,IAClEgX,SAAU,CACR,CACExM,KAAM,IACNssD,QAAgC,IAAvBznD,EAAarP,MAAc,IAAM,GAC1CstD,QAAS,IAAMn4C,EAAU9D,gBAAgB,IAE3C,CACE7G,KAAM,IACNssD,QAAgC,KAAvBznD,EAAarP,MAAe,IAAM,GAC3CstD,QAAS,IAAMn4C,EAAU9D,gBAAgB,KAE3C,CACE7G,KAAM,IACNssD,QAAgC,KAAvBznD,EAAarP,MAAe,IAAM,GAC3CstD,QAAS,IAAMn4C,EAAU9D,gBAAgB,KAE3C,CACE7G,KAAM,IACNssD,QAAgC,MAAvBznD,EAAarP,MAAgB,IAAM,GAC5CstD,QAAS,IAAMn4C,EAAU9D,gBAAgB,QAI/C,CACE7G,KAAM0F,EAAgBlQ,MAAQ,SAAW,SACzCstD,QAAS,KACFp9C,EAAgBlQ,MAChBmV,EAAUhD,qBAAoB,GADPgD,EAAUhD,qBAAoB,KAI9D,CACE3H,KAAM,QACN8iD,QAASnlC,GAEX,CAAEolC,SAAS,GACX,CACE/iD,KAAM,QACNssD,QAAS,KACTxJ,QAASjhC,IAOf,OAFAwwC,qBAAQz0B,GAAqBp5B,GAEtB,CAACm1B,EAAUC,KAChB,MAAMkY,EAAyBrB,8BAAkB,eAC3CD,EAA2BC,8BAAkB,iBAEnD,OAAOC,6BAAiB7W,yBAAcC,gCAAoB,MAAO,CAC/DX,MAAO,SACP8B,QAAS,YACTnL,IAAKkO,EACLo2B,QAASx6B,EAAO,KAAOA,EAAO,GAAKkB,GAAUm5B,EAAuBn5B,IACpEgW,YAAalX,EAAO,KAAOA,EAAO,GAAKkB,GAAU+4B,EAAqB/4B,KACrE,CACAb,mBAAOl1B,IACH80B,yBAAc0U,yBAAa8lB,GAAwB,CAClDv+D,IAAK,EACLw+D,UAAW16B,EAAO,KAAOA,EAAO,GAAKjnC,GAAQsnC,mBAAOsR,GAAPtR,CAAyCtnC,OAExFw7C,gCAAoB,IAAI,GAC5BjU,gCAAoB,MAAO,CACzBf,MAAO,mBACP55B,MAAOoxC,4BAAgB,CACrB3zC,MAAOi9B,mBAAO+E,GAAgBhiC,MAAQi9B,mBAAOz1B,GAAe,KAC5DvH,OAAQg9B,mBAAO+E,GAAgB/hC,OAASg9B,mBAAOz1B,GAAe,KAC9DhG,KAAMy7B,mBAAO+E,GAAgBxgC,KAAO,KACpCC,IAAKw7B,mBAAO+E,GAAgBvgC,IAAM,QAEnC,CACDy7B,gCAAoB,MAAOhB,GAAY,EACpCW,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYwK,EAAehvC,MAAO,CAAC4b,EAAMzO,KACvFk3B,yBAAc0U,yBAAagmB,GAAe,CAChDz+D,IAAK6M,EACL1K,KAAMmZ,EAAKnZ,KACXivC,KAAM91B,EAAK81B,KACX/zC,OAAQie,EAAKje,OACbqR,YAAay1B,mBAAOz1B,IACnB,KAAM,EAAG,CAAC,OAAQ,OAAQ,SAAU,kBACrC,MACHy1B,mBAAO91B,GAAqBhR,OAAS,GACjC0mC,yBAAc0U,yBAAaimB,GAAoB,CAC9C1+D,IAAK,EACL8a,YAAaA,EAAYpb,MACzBuyC,kBAAmB9N,mBAAO8N,IACzB,KAAM,EAAG,CAAC,cAAe,uBAC5BoG,gCAAoB,IAAI,IAC3BtU,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYppB,EAAYpb,MAAQ2N,GAC/EutC,6BAAiB7W,yBAAc0U,yBAAakmB,GAAS,CAC1D3+D,IAAKqN,EAAQ7E,GACb+vC,YAAalrC,EACbwtD,WAAY12B,mBAAO91B,GAAqBrD,SAASqC,EAAQ7E,IACzDsyD,SAAU32B,mBAAO71B,KAAqBjB,EAAQ7E,GAC9CwnC,qBAAsB7L,mBAAO51B,KAA0BlB,EAAQ7E,GAC/DysD,cAAe9wB,mBAAO91B,GAAqBhR,OAAS,EACpD+uC,cAAejI,mBAAOiI,GACtBuC,aAAcxK,mBAAOwK,GACrBumB,eAAgBA,EAChBjhB,gBAAiB9P,mBAAO8P,GACxBc,kBAAmB5Q,mBAAO4Q,IACzB,KAAM,EAAG,CAAC,cAAe,aAAc,WAAY,uBAAwB,gBAAiB,gBAAiB,eAAgB,kBAAmB,uBAAwB,CACzK,CAAC2Y,YAASvpB,mBAAO31B,GAAqBxD,SAASqC,EAAQ7E,QAEvD,MACJ0+B,yBAAa03B,MAEfx6B,gCAAoB,MAAO,CACzBf,MAAO,WACP8B,QAAS,cACTnL,IAAKmQ,EACL1gC,MAAOoxC,4BAAgB,CAAEoB,UAAW,SAAS9X,mBAAOz1B,SACnD,CACAy1B,mBAAOiG,IACHrG,yBAAc0U,yBAAaomB,GAAgB,CAC1C7+D,IAAK,EACL2I,IAAKw7B,mBAAOmG,GAAgB3hC,IAC5BD,KAAMy7B,mBAAOmG,GAAgB5hC,KAC7BxB,MAAOi9B,mBAAOmG,GAAgBpjC,MAC9BC,OAAQg9B,mBAAOmG,GAAgBnjC,OAC/B2jC,SAAU3G,mBAAOkG,IAChB,KAAM,EAAG,CAAC,MAAO,OAAQ,QAAS,SAAU,cAC/CgO,gCAAoB,IAAI,IAC3BtU,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYppB,EAAYpb,MAAO,CAAC2N,EAASR,IACxF+tC,6BAAiB7W,yBAAc0U,yBAAaqmB,GAAiB,CAClE9+D,IAAKqN,EAAQ7E,GACb+vC,YAAalrC,EACb2nD,aAAcnoD,EAAQ,EACtBooD,cAAe9wB,mBAAO91B,GAAqBhR,OAAS,EACpD01C,cAAe5O,mBAAO4O,GACtBmiB,eAAgBA,GACf,KAAM,EAAG,CAAC,cAAe,eAAgB,gBAAiB,mBAAoB,CAC/E,CAACxH,YAASvpB,mBAAO31B,GAAqBxD,SAASqC,EAAQ7E,QAEvD,OACH,IACF,GACF27B,mBAAOjvB,IACH6uB,yBAAcC,gCAAoB,MAAOV,KAC1C+U,gCAAoB,IAAI,GAC3BlU,mBAAOn1B,IACH+0B,yBAAc0U,yBAAasmB,GAAO,CACjC/+D,IAAK,EACLkpC,eAAgB/E,mBAAO+E,IACtB,KAAM,EAAG,CAAC,oBACbmP,gCAAoB,IAAI,GAC5BnR,yBAAa/C,mBAAO,SAAQ,CAC1BwD,QAASy1B,EAAkB19D,MAC3B,mBAAoBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkBo4B,EAAmB19D,MAAQslC,GAC5Fg6B,OAAQ,KACRC,SAAU,GACV/3D,MAAO,IACPg4D,eAAgB,IACf,CACDz6B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAai4B,GAAY,CACvBv3B,QAAS9D,EAAO,KAAOA,EAAO,GAAMkB,GAAiBo4B,EAAkB19D,OAAQ,OAGnF6nC,EAAG,GACF,EAAG,CAAC,aACN,KAAM,CACP,CAACyU,EAAwBb,IACzB,CAACT,EAA0BsjB,S,UCvV/B,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,U,yBCLf,MACM56B,GAAa,CAAEC,MAAO,wBACtBC,GAAa,CAAED,MAAO,iBACtBE,GAAa,CACjB4U,SAAU,UACVjxC,MAAO,KACPC,OAAQ,MAEJq8B,GAAa,CAAC,aACdgC,GAAa,CAAC,OAAQ,SAAU,KAMV/B,oCAAiB,CAC3CC,OAAQ,qBACRl3B,MAAO,CACP8zB,MAAO,CACLn+B,KAAM7E,OACN06C,UAAU,IAGZrU,MAAMC,GAIR,MAAO,CAACC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,EACpCS,yBAAcC,gCAAoB,MAAOT,GAAY,CACpDa,gCAAoB,IAAK,CACvB6X,UAAW,SAAS,GAAKrY,EAAQtD,MAAM13B,QAAQ,OAAO,GAAKg7B,EAAQtD,MAAM13B,QAAQ,0CAChF,CACDw7B,gCAAoB,OAAQ,CAC1Bf,MAAO6X,4BAAgB,CAAC,aAAc,CAAE,SAAYtX,EAAQtD,MAAM9f,YAClE,gBAAiB,qBACjB,iBAAkB,OAClB,oBAAqB,IACrB1X,KAAM86B,EAAQtD,MAAM9f,SAAW,OAAS,cACxC43B,OAAQxU,EAAQtD,MAAM9f,SAAW,cAAgB,OACjD,eAAgB,IAChBxhB,EAAG4kC,EAAQtD,MAAMz3B,MAChB,KAAM,GAAI28B,KACZ,EAAGhC,e,UCzCd,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMJ,GAAa,CAAEC,MAAO,cACtBC,GAAa,CAAED,MAAO,iBACtBE,GAAa,CAAEF,MAAO,cAMAI,oCAAiB,CAC3CC,OAAQ,YACRgB,MAAO,CAAC,UACRf,MAAMC,GAAS,KAAEe,IAMnB,MAAMy6B,EAAe9+B,IACnBqE,EAAK,SAAUrE,IAGjB,MAAO,CAACuD,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,EAC1DW,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAO9jB,IAAchY,IAC/E07B,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,WACPrjC,IAAKqI,EAAKlG,MACT,CACDiiC,gCAAoB,MAAOd,GAAYe,6BAAiBh8B,EAAKlG,MAAO,GACpEiiC,gCAAoB,MAAOb,GAAY,EACpCQ,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAY77B,EAAKqO,SAAU,CAAC4pB,EAAOzzB,KACjFk3B,yBAAc0U,yBAAa4mB,GAAoB,CACrDh8B,MAAO,aACPrjC,IAAK6M,EACLyzB,MAAOA,EACPyE,QAAUC,GAAiBo6B,EAAY9+B,IACtC,KAAM,EAAG,CAAC,QAAS,cACpB,YAGN,Y,UCtCR,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCSR,MAAMg/B,GAA0B,CACrC,CACEn9D,KAAM,KACNuU,SAAU,CACR,CAAE7N,KAAM,gBAAiBY,MAAO,QAASD,OAAQ,CAAC,GAAI,KACtD,CAAEX,KAAM,gBAAiBY,MAAO,SAAUD,OAAQ,CAAC,GAAI,KACvD,CAAEX,KAAM,gBAAiBY,MAAO,QAASD,OAAQ,CAAC,GAAI,UACtD,CAAEX,KAAM,gBAAiBY,MAAO,SAAUD,OAAQ,CAAC,GAAI,UACvD,CAAEX,KAAM,gBAAiBY,MAAO,QAASD,OAAQ,CAAC,GAAI,UAG1D,CACErH,KAAM,QACNuU,SAAU,CACR,CAAE7N,KAAM,uBAAwBY,MAAO,QAASD,OAAQ,CAAC,GAAI,SAAU2a,UAAU,GACjF,CAAEtb,KAAM,qBAAsBY,MAAO,QAASD,OAAQ,CAAC,GAAI,SAAU4a,SAAS,GAC9E,CAAEvb,KAAM,0BAA2BY,MAAO,QAASD,OAAQ,CAAC,GAAI,SAAU6a,SAAS,MC7BnF+e,GAAa,CAAEC,MAAO,aACtBC,GAAa,CAAED,MAAO,iBACtBE,GAAa,CAAEF,MAAO,aACtBG,GAAa,CAAC,WACdgC,GAAa,CACjB2S,SAAU,UACVjxC,MAAO,KACPC,OAAQ,MAEJs+B,GAAa,CAAC,IAAK,mBAAoB,eAAgB,cAOjChC,oCAAiB,CAC3CC,OAAQ,WACRgB,MAAO,CAAC,UACRf,MAAMC,GAAS,KAAEe,IAMnB,MAAM46B,EAAcjkD,IAClBqpB,EAAK,SAAUrpB,IAGjB,MAAO,CAACuoB,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,EAC1DW,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOm7B,IAAY,CAACj3D,EAAMlL,KACpF4mC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,WACPrjC,IAAKqI,EAAKlG,MACT,CACDiiC,gCAAoB,MAAOd,GAAYe,6BAAiBh8B,EAAKlG,MAAO,GACpEiiC,gCAAoB,MAAOb,GAAY,EACpCQ,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAY77B,EAAKqO,SAAU,CAAC4E,EAAMjd,KAChF0lC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,YACPrjC,IAAK3B,GACJ,CACD+lC,gCAAoB,MAAO,CACzBf,MAAO,eACP0B,QAAUC,GAAiBu6B,EAAWjkD,IACrC,EACAyoB,yBAAcC,gCAAoB,MAAOwB,GAAY,CACpDpB,gCAAoB,OAAQ,KAAM,CAC/B9oB,EAAK9R,OAAO,IACRu6B,yBAAc0U,yBAAaiO,GAAiB,CAC3C1mD,IAAK,EACLqjC,MAAO,cACP76B,GAAI,eAAerL,KAAKkB,IACxBslB,SAAU,QACVxhB,KAAMmZ,EAAK9R,OAAO,GAClB1E,MAAO,eACPmwC,SAAU,GACT,KAAM,EAAG,CAAC,KAAM,UACnBoD,gCAAoB,IAAI,GAC3B/8B,EAAK9R,OAAO,IACRu6B,yBAAc0U,yBAAaiO,GAAiB,CAC3C1mD,IAAK,EACLqjC,MAAO,cACP76B,GAAI,eAAerL,KAAKkB,IACxBslB,SAAU,MACVxhB,KAAMmZ,EAAK9R,OAAO,GAClB1E,MAAO,eACPmwC,SAAU,GACT,KAAM,EAAG,CAAC,KAAM,UACnBoD,gCAAoB,IAAI,KAE9BjU,gCAAoB,OAAQ,CAC1Bf,MAAO,YACPrkC,EAAGsc,EAAKzS,KACRuvC,OAAQ,eACRtvC,KAAM,OACN,eAAgB,IAChB,mBAAmC,UAAfwS,EAAK7R,MAAoB,OAAS,OACtD,eAAgB6R,EAAK9R,OAAO,GAAK,oBAAuBrM,KAAKkB,KAAOid,EAAK9R,OAAO,YAAc,GAC9F,aAAc8R,EAAK9R,OAAO,GAAK,oBAAuBrM,KAAKkB,KAAOid,EAAK9R,OAAO,UAAY,IACzF,KAAM,EAAGi8B,QAEb,EAAGjC,QAEN,YAGN,Y,UCtFR,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMJ,GAAa,CAAEC,MAAO,cACtBC,GAAa,CAAC,WAKQG,oCAAiB,CAC3CC,OAAQ,YACRgB,MAAO,CAAC,UACRf,MAAMC,GAAS,KAAEe,IAMnB,MAAM66B,EAA+B,CAAC,MAAO,gBAAiB,OAAQ,OAAQ,UAAW,MAAO,QAE1FC,EAAezyB,IACnBrI,EAAK,SAAUqI,IAGjB,MAAO,CAACnJ,EAAUC,KAChB,MAAM47B,EAA2B94B,8BAAkB,iBAC7C+4B,EAAgC/4B,8BAAkB,sBAClDg5B,EAA0Bh5B,8BAAkB,gBAC5Ci5B,EAAmCj5B,8BAAkB,yBACrDk5B,EAA+Bl5B,8BAAkB,qBACjDm5B,EAA2Bn5B,8BAAkB,iBAC7Co5B,EAA8Bp5B,8BAAkB,oBAEtD,OAAQ7C,yBAAcC,gCAAoB,KAAMZ,GAAY,EACzDW,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAYs7B,EAAW,CAACxyB,EAAOngC,IAC1Eu3B,gCAAoB,KAAM,CAC/Bf,MAAO,aACPrjC,IAAK6M,GACJ,CACDu3B,gCAAoB,MAAO,CACzBf,MAAO,gBACP0B,QAAUC,GAAiBy6B,EAAYzyB,IACtC,CACU,SAAVA,GACIjJ,yBAAc0U,yBAAainB,EAA0B,CACpD1/D,IAAK,EACLiH,KAAM,QAEG,QAAV+lC,GACEjJ,yBAAc0U,yBAAaknB,EAA+B,CACzD3/D,IAAK,EACLiH,KAAM,QAEG,QAAV+lC,GACEjJ,yBAAc0U,yBAAamnB,EAAyB,CACnD5/D,IAAK,EACLiH,KAAM,QAEG,kBAAV+lC,GACEjJ,yBAAc0U,yBAAaonB,EAAkC,CAC5D7/D,IAAK,EACLiH,KAAM,QAEG,SAAV+lC,GACEjJ,yBAAc0U,yBAAaqnB,EAA8B,CACxD9/D,IAAK,EACLiH,KAAM,QAEG,SAAV+lC,GACEjJ,yBAAc0U,yBAAasnB,EAA0B,CACpD//D,IAAK,EACLiH,KAAM,QAEG,YAAV+lC,GACEjJ,yBAAc0U,yBAAaunB,EAA6B,CACvDhgE,IAAK,EACLiH,KAAM,QAERoxC,gCAAoB,IAAI,IACvC,EAAG/U,OAEN,W,UC5ER,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,U,yBCLf,MAAM+B,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,mBACtBC,GAAa,CAAED,MAAO,SACtBE,GAAa,CAAEF,MAAO,OACtBG,GAAa,CAAC,gBACdgC,GAAa,CACjBxlC,IAAK,EACLqjC,MAAO,UAEHoC,GAAa,CAAEpC,MAAO,OACtBqC,GAA2BL,GAAa,IAAmBjB,gCAAoB,MAAO,CAC1Ff,MAAO,QACP55B,MAAO,CAAC,KAAO,MACd,OAAQ,IACLk8B,GAAa,CAAEtC,MAAO,OACtBuC,GAA2BP,GAAa,IAAmBjB,gCAAoB,MAAO,CAC1Ff,MAAO,QACP55B,MAAO,CAAC,KAAO,MACd,OAAQ,IACLo8B,GAAc,CAAExC,MAAO,QAeDI,oCAAiB,CAC3CC,OAAQ,iBACRgB,MAAO,CAAC,SAAU,SAClBf,MAAMC,GAAS,KAAEe,IAOnB,MAAMqkB,EAAUhvB,iBAAc,IACxBimC,EAAYjmC,iBAAI,GAChBkmC,EAAYlmC,iBAAI,GAChBmmC,EAAWnmC,kBAAI,GAEfomC,EAAmB,KACvB,IAAKpX,EAAQtpD,MAAMrC,OAAQ,OAC3B,MAAOwlB,EAAKC,GAAOkmC,EAAQtpD,MAC3BilC,EAAK,SAAU,CAAE9hB,MAAKC,SAGlBu9C,EAAoB,IACpBJ,EAAUvgE,MAAQ,GAAKugE,EAAUvgE,MAAQ,IACzCwgE,EAAUxgE,MAAQ,GAAKwgE,EAAUxgE,MAAQ,GADWgnB,GAAA,KAAQC,QAAQ,oBAExEge,EAAK,SAAU,CAAE9hB,IAAKo9C,EAAUvgE,MAAOojB,IAAKo9C,EAAUxgE,aACtDygE,EAASzgE,OAAQ,IAGbg0B,EAAQ,KACZiR,EAAK,SACLw7B,EAASzgE,OAAQ,GAGnB,MAAO,CAACmkC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrCc,gCAAoB,MAAOb,GAAY,MAAQc,6BAAiB2kB,EAAQtpD,MAAMrC,OAAS,GAAG2rD,EAAQtpD,MAAM,QAAQspD,EAAQtpD,MAAM,KAAO,IAAK,GAC1I0kC,gCAAoB,MAAO,CACzBf,MAAO,QACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBm7B,EAASzgE,OAASygE,EAASzgE,QAC/E2kC,6BAAiB87B,EAASzgE,MAAQ,KAAO,OAAQ,KAEpDygE,EAASzgE,OAuBNqkC,yBAAcC,gCAAoB,MAAOwB,GAAY,CACpDpB,gCAAoB,MAAOqB,GAAY,CACrCC,GACAwB,yBAAa/C,mBAAO,SAAc,CAChCl3B,IAAK,EACL8M,IAAK,GACLra,MAAOugE,EAAUvgE,MACjB,iBAAkBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkBi7B,EAAWvgE,MAAQslC,GAClFv7B,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEf26B,gCAAoB,MAAOuB,GAAY,CACrCC,GACAsB,yBAAa/C,mBAAO,SAAc,CAChCl3B,IAAK,EACL8M,IAAK,GACLra,MAAOwgE,EAAUxgE,MACjB,iBAAkBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkBk7B,EAAWxgE,MAAQslC,GAClFv7B,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEf26B,gCAAoB,MAAOyB,GAAa,CACtCqB,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,MACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBtR,MACpD,CACD+Q,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,MACPlhC,KAAM,UACN4iC,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBq7B,MACpD,CACD57B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,UA7DRxD,yBAAcC,gCAAoB,QAAS,CAC1ChkC,IAAK,EACLu0D,aAAczwB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBgkB,EAAQtpD,MAAQ,IAC1EqlC,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBo7B,MACpD,CACDh8B,gCAAoB,QAAS,KAAM,EAChCL,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAY,GAAKrhB,GAC5DuhB,gCAAoB,KAAM,CAAEpkC,IAAK6iB,GAAO,EAC5CkhB,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAY,GAAKphB,GAC5DshB,gCAAoB,KAAM,CAC/BkpB,aAAetoB,GAAiBgkB,EAAQtpD,MAAQ,CAACmjB,EAAKC,GACtD9iB,IAAK8iB,GACJ,CACDshB,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,OAAQ,CAAE,OAAU8N,EAAQtpD,MAAMrC,QAAUwlB,GAAOmmC,EAAQtpD,MAAM,IAAMojB,GAAOkmC,EAAQtpD,MAAM,OACnH,KAAM,IACR,GAAI8jC,KACL,QAEJ,QAEL,W,UC/FX,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMJ,GAAa,CAAEC,MAAO,eACtBC,GAAa,CAAED,MAAO,QACtBE,GAAa,CAAC,WACdC,GAAa,CAAEH,MAAO,QACtBmC,GAAa,CAAEnC,MAAO,QAgBAI,oCAAiB,CAC3CC,OAAQ,aACRgB,MAAO,CAAC,cAAe,cAAe,SACtCf,MAAMC,GAAS,KAAEe,IAQnB,MAAMxiC,EAAO63B,iBAAa,SAEpBsmC,EAAWtmC,iBAAI,iHACfumC,EAAWvmC,iBAAI,kEAEf6iC,EAAkB,CACtB,CAAE78D,IAAK,QAASY,MAAO,MACvB,CAAEZ,IAAK,QAASY,MAAO,OAGnB4/D,EAAc,KAClB,IAAKF,EAAS5gE,MAAO,OAAOgnB,GAAA,KAAQsU,MAAM,eAC1C2J,EAAK,cAAe27B,EAAS5gE,QAGzB+gE,EAAc,KAClB,IAAKF,EAAS7gE,MAAO,OAAOgnB,GAAA,KAAQsU,MAAM,eAC1C2J,EAAK,cAAe47B,EAAS7gE,QAG/B,MAAO,CAACmkC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,EACpCS,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAY24B,EAAOG,GAC9D54B,gCAAoB,MAAO,CAChCf,MAAO6X,4BAAgB,CAAC,MAAO,CAAE,OAAU/4C,EAAKzC,QAAUs9D,EAAIh9D,OAC9DA,IAAKg9D,EAAIh9D,IACT+kC,QAAUC,GAAiB7iC,EAAKzC,MAAQs9D,EAAIh9D,KAC3CqkC,6BAAiB24B,EAAIp8D,OAAQ,GAAI2iC,KAClC,OAEU,UAAfphC,EAAKzC,OACDqkC,yBAAcC,gCAAoBC,cAAW,CAAEjkC,IAAK,GAAK,CACxDknC,yBAAa/C,mBAAO,SAAQ,CAC1BzkC,MAAO4gE,EAAS5gE,MAChB,iBAAkBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkBs7B,EAAU5gE,MAAQslC,GACjFi4B,YAAa,gCACZ,KAAM,EAAG,CAAC,UACb74B,gCAAoB,MAAOZ,GAAY,CACrC0D,yBAAa/C,mBAAO,SAAS,CAC3BY,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBL,EAAK,UAC1Dl7B,MAAO,CAAC,eAAe,SACtB,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3BhiC,KAAM,UACN4iC,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBw7B,MACpD,CACD/7B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,OAGN,KACH8Q,gCAAoB,IAAI,GACZ,UAAfl2C,EAAKzC,OACDqkC,yBAAcC,gCAAoBC,cAAW,CAAEjkC,IAAK,GAAK,CACxDknC,yBAAa/C,mBAAO,SAAQ,CAC1BzkC,MAAO6gE,EAAS7gE,MAChB,iBAAkBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkBu7B,EAAU7gE,MAAQslC,GACjFi4B,YAAa,gCACZ,KAAM,EAAG,CAAC,UACb74B,gCAAoB,MAAOoB,GAAY,CACrC0B,yBAAa/C,mBAAO,SAAS,CAC3BY,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBL,EAAK,UAC1Dl7B,MAAO,CAAC,eAAe,SACtB,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3BhiC,KAAM,UACN4iC,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBy7B,MACpD,CACDh8B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,OAGN,KACH8Q,gCAAoB,IAAI,S,UCrHhC,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,U,aCNfqoB,QAAaC,cAAgB,GCFtB,MAAMC,GAAe,CAC1B,CACEhgE,MAAO,OACP6jB,MAAO,8SAET,CACE7jB,MAAO,QACP6jB,MAAO,uFAET,CACE7jB,MAAO,QACP6jB,MAAO,6IAET,CACE7jB,MAAO,MACP6jB,MAAO,+KAET,CACE7jB,MAAO,SACP6jB,MAAO,yIAET,CACE7jB,MAAO,SACP6jB,MAAO,gIAET,CACE7jB,MAAO,QACP6jB,MAAO,mGAET,CACE7jB,MAAO,OACP6jB,MAAO,oCAET,CACE7jB,MAAO,QACP6jB,MAAO,0DAET,CACE7jB,MAAO,QACP6jB,MAAO,qCAET,CACE7jB,MAAO,QACP6jB,MAAO,gEAET,CACE7jB,MAAO,SACP6jB,MAAO,2EAET,CACE7jB,MAAO,WACP6jB,MAAO,kCAET,CACE7jB,MAAO,OACP6jB,MAAO,kDAET,CACE7jB,MAAO,SACP6jB,MAAO,yDAET,CACE7jB,MAAO,OACP6jB,MAAO,sFAET,CACE7jB,MAAO,OACP6jB,MAAO,iEAET,CACE7jB,MAAO,OACP6jB,MAAO,6IAIEo8C,GAAc,CACzB,CACE1+D,KAAM,YACNvB,MAAO,KACP8V,SAAU,CACR,CAAE+N,MAAO,UACT,CAAEA,MAAO,QACT,CAAEA,MAAO,QACT,CAAEA,MAAO,KACT,CAAEA,MAAO,KACT,CAAEA,MAAO,WACT,CAAEA,MAAO,SACT,CAAEA,MAAO,KACT,CAAEA,MAAO,KACT,CAAEA,MAAO,KACT,CAAEA,MAAO,aACT,CAAEA,MAAO,UACT,CAAEA,MAAO,UACT,CAAEA,MAAO,SACT,CAAEA,MAAO,SACT,CAAEA,MAAO,YACT,CAAEA,MAAO,SACT,CAAEA,MAAO,WACT,CAAEA,MAAO,YACT,CAAEA,MAAO,aACT,CAAEA,MAAO,SACT,CAAEA,MAAO,OACT,CAAEA,MAAO,OACT,CAAEA,MAAO,OACT,CAAEA,MAAO,OACT,CAAEA,MAAO,oBACT,CAAEA,MAAO,MACT,CAAEA,MAAO,MACT,CAAEA,MAAO,UACT,CAAEA,MAAO,MACT,CAAEA,MAAO,OACT,CAAEA,MAAO,YACT,CAAEA,MAAO,QACT,CAAEA,MAAO,YACT,CAAEA,MAAO,YACT,CAAEA,MAAO,SACT,CAAEA,MAAO,SACT,CAAEA,MAAO,WACT,CAAEA,MAAO,aACT,CAAEA,MAAO,WACT,CAAEA,MAAO,WACT,CAAEA,MAAO,QACT,CAAEA,MAAO,eACT,CAAEA,MAAO,SACT,CAAEA,MAAO,SACT,CAAEA,MAAO,UACT,CAAEA,MAAO,cACT,CAAEA,MAAO,aACT,CAAEA,MAAO,SACT,CAAEA,MAAO,UACT,CAAEA,MAAO,WACT,CAAEA,MAAO,UACT,CAAEA,MAAO,UACT,CAAEA,MAAO,WACT,CAAEA,MAAO,cACT,CAAEA,MAAO,SACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,QACT,CAAEA,MAAO,eACT,CAAEA,MAAO,UACT,CAAEA,MAAO,UACT,CAAEA,MAAO,aACT,CAAEA,MAAO,YACT,CAAEA,MAAO,UACT,CAAEA,MAAO,aACT,CAAEA,MAAO,SACT,CAAEA,MAAO,KACT,CAAEA,MAAO,KACT,CAAEA,MAAO,KACT,CAAEA,MAAO,OAGb,CACEtiB,KAAM,QACNvB,MAAO,KACP8V,SAAU,CACR,CAAE+N,MAAO,gBACT,CAAEA,MAAO,kBACT,CAAEA,MAAO,oCACT,CAAEA,MAAO,aACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,SACT,CAAEA,MAAO,SACT,CAAEA,MAAO,SACT,CAAEA,MAAO,iBACT,CAAEA,MAAO,cACT,CAAEA,MAAO,4BACT,CAAEA,MAAO,cACT,CAAEA,MAAO,aACT,CAAEA,MAAO,qDACT,CAAEA,MAAO,mDACT,CAAEA,MAAO,sDACT,CAAEA,MAAO,YACT,CAAEA,MAAO,cACT,CAAEA,MAAO,cACT,CAAEA,MAAO,cACT,CAAEA,MAAO,cACT,CAAEA,MAAO,YACT,CAAEA,MAAO,YACT,CAAEA,MAAO,kBACT,CAAEA,MAAO,iBACT,CAAEA,MAAO,iBACT,CAAEA,MAAO,uBACT,CAAEA,MAAO,0BAGb,CACEtiB,KAAM,WACNvB,MAAO,KACP8V,SAAU,CACR,CAAE+N,MAAO,SACT,CAAEA,MAAO,QACT,CAAEA,MAAO,SACT,CAAEA,MAAO,SACT,CAAEA,MAAO,SACT,CAAEA,MAAO,SACT,CAAEA,MAAO,SACT,CAAEA,MAAO,SACT,CAAEA,MAAO,SACT,CAAEA,MAAO,SACT,CAAEA,MAAO,SACT,CAAEA,MAAO,UACT,CAAEA,MAAO,UACT,CAAEA,MAAO,UACT,CAAEA,MAAO,UACT,CAAEA,MAAO,UACT,CAAEA,MAAO,UACT,CAAEA,MAAO,YACT,CAAEA,MAAO,YACT,CAAEA,MAAO,YACT,CAAEA,MAAO,YACT,CAAEA,MAAO,YACT,CAAEA,MAAO,cAGb,CACEtiB,KAAM,QACNvB,MAAO,OACP8V,SAAU,CACR,CAAE+N,MAAO,WACT,CAAEA,MAAO,UACT,CAAEA,MAAO,WACT,CAAEA,MAAO,WACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,UACT,CAAEA,MAAO,SACT,CAAEA,MAAO,cACT,CAAEA,MAAO,UACT,CAAEA,MAAO,WACT,CAAEA,MAAO,YACT,CAAEA,MAAO,QACT,CAAEA,MAAO,QACT,CAAEA,MAAO,QACT,CAAEA,MAAO,aACT,CAAEA,MAAO,QACT,CAAEA,MAAO,SACT,CAAEA,MAAO,WACT,CAAEA,MAAO,SACT,CAAEA,MAAO,aACT,CAAEA,MAAO,YACT,CAAEA,MAAO,SACT,CAAEA,MAAO,SACT,CAAEA,MAAO,WACT,CAAEA,MAAO,aACT,CAAEA,MAAO,WACT,CAAEA,MAAO,SACT,CAAEA,MAAO,cACT,CAAEA,MAAO,WACT,CAAEA,MAAO,UACT,CAAEA,MAAO,WACT,CAAEA,MAAO,WACT,CAAEA,MAAO,aACT,CAAEA,MAAO,UACT,CAAEA,MAAO,SACT,CAAEA,MAAO,WACT,CAAEA,MAAO,UACT,CAAEA,MAAO,WACT,CAAEA,MAAO,YACT,CAAEA,MAAO,QACT,CAAEA,MAAO,QACT,CAAEA,MAAO,QACT,CAAEA,MAAO,aACT,CAAEA,MAAO,QACT,CAAEA,MAAO,SACT,CAAEA,MAAO,WACT,CAAEA,MAAO,SACT,CAAEA,MAAO,aACT,CAAEA,MAAO,SACT,CAAEA,MAAO,SACT,CAAEA,MAAO,SACT,CAAEA,MAAO,cC1QT2e,GAAa,CAAC,QAAS,UACvBE,GAAa,CAAC,aACdC,GAAa,CAAC,KAMQE,oCAAiB,CAC3CC,OAAQ,iBACRl3B,MAAO,CACPiY,MAAO,CACLtiB,KAAMw2B,OACNqf,UAAU,GAEZ9wC,MAAO,CACL/E,KAAM41C,OACNC,UAAU,GAEZ7wC,OAAQ,CACNhF,KAAM41C,OACNC,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIRk9B,EAAM9mC,iBAAI,CAAEjD,EAAG,EAAGC,EAAG,EAAGzS,EAAG,EAAGC,EAAG,IACjCu8C,EAAQ/mC,iBAAI,IAElBiP,mBAAM,IAAMz8B,EAAMiY,MAAO,KACvB,MAAMu8C,EAAK,IAAIC,QAAOz0D,EAAMiY,OAC5Bs8C,EAAMrhE,MAAQshE,EAAGD,MAAM,IACvBD,EAAIphE,MAAQshE,EAAGF,IAAI,KAClB,CAAEvY,WAAW,IAEhB,MAAMh4C,EAAQsV,sBAAS,KACrB,MAAMq7C,EAAOJ,EAAIphE,MAAM6kB,EAAI,GACrB48C,EAAOL,EAAIphE,MAAM8kB,EAAI,GAE3B,OAAI08C,EAAO10D,EAAMtF,OAASi6D,EAAO30D,EAAMrF,OACjC+5D,EAAOC,EAAO30D,EAAMtF,MAAQsF,EAAMrF,OAAeqF,EAAMtF,MAAQg6D,EAC5D10D,EAAMrF,OAASg6D,EAEjB,IAGT,MAAO,CAACt9B,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,kBACP8U,SAAU,UACVjxC,MAAO45D,EAAIphE,MAAM6kB,EAAI,GACrBpd,OAAQ25D,EAAIphE,MAAM8kB,EAAI,GACtB4zB,OAAQ,OACR,eAAgB,IAChBtvC,KAAM,OACN,iBAAkB,QAClB,kBAAmB,SAClB,CACDs7B,gCAAoB,IAAK,CACvB6X,UAAW,SAAS9X,mBAAO5zB,OAAW4zB,mBAAO5zB,yCAC7C,mBAAoB,SACnB,CACD6zB,gCAAoB,OAAQ,CAAEplC,EAAG+hE,EAAMrhE,OAAS,KAAM,EAAG6jC,KACxD,EAAGD,KACL,EAAGF,Q,UClER,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMA,GAAa,CAAC,aAMQK,oCAAiB,CAC3CC,OAAQ,gBACRl3B,MAAO,CACPiY,MAAO,CACLtiB,KAAMw2B,OACNqf,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIRjK,EAAM9T,sBAAS,KACnB,MAAMm7C,EAAK,IAAIC,QAAOz0D,EAAMiY,OAC5B,OAAOu8C,EAAGrnC,IAAI,CACZynC,QAAS,GACTC,QAAS,OAIb,MAAO,CAACx9B,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,iBACPyf,UAAW3e,mBAAOxK,IACjB,KAAM,EAAGyJ,QChCd,MAAM,GAAc,GAEL,UCFf,MACMA,GAAa,CAAEC,MAAO,gBACtBC,GAAa,CAAED,MAAO,aACtBE,GAAa,CAAEF,MAAO,QACtBG,GAAa,CAAEH,MAAO,cACtBmC,GAAa,CAAEnC,MAAO,WACtBoC,GAAa,CACjBzlC,IAAK,EACLqjC,MAAO,eAEHqC,GAAa,CACjB1lC,IAAK,EACLqjC,MAAO,mBAEHsC,GAAa,CAAEtC,MAAO,SACtBuC,GAAa,CAAEvC,MAAO,QACtBwC,GAAc,CAAC,WACfC,GAAc,CAAEzC,MAAO,WACvB0C,GAAc,CAClB/lC,IAAK,EACLqjC,MAAO,UAEH4C,GAAc,CAAE5C,MAAO,eACvB6rB,GAAc,CAAC,WACfC,GAAc,CAAE9rB,MAAO,eACvB+rB,GAAc,CAAC,WACfC,GAAc,CAClBrvD,IAAK,EACLqjC,MAAO,WAEHisB,GAAc,CAAEjsB,MAAO,iBACvBksB,GAAc,CAAC,WACfC,GAAc,CAAEnsB,MAAO,UA2BDI,oCAAiB,CAC3CC,OAAQ,QACRl3B,MAAO,CACP9M,MAAO,CACLyC,KAAMw2B,OACN8L,QAAS,KAGXC,MAAO,CAAC,SAAU,SAClBf,MAAMC,GAAS,KAAEe,IAKnB,MAAMn4B,EAAQo3B,EAER09B,EAAW,QAAMA,SAEjBzE,EAAc,CAClB,CAAEj8D,MAAO,OAAQlB,MAAO,UACxB,CAAEkB,MAAO,OAAQlB,MAAO,YAOpB6hE,EAAcX,GACdY,EAAaX,GAEbp8C,EAAQuV,iBAAI,IACZ7qB,EAAe6qB,iBAA0B,UACzCynC,EAAcznC,mBAEd0nC,EAAoB1nC,iBAAI6mC,GAAY,GAAG1+D,MACvCw/D,EAAa97C,sBAAS,KAC1B,MAAM+7C,EAAiBf,GAAYn+D,KAAK2F,GAAQA,EAAKlG,OAASu/D,EAAkBhiE,OAChF,OAAqB,OAAdkiE,QAAc,IAAdA,OAAA,EAAAA,EAAgBlrD,WAAY,KAGrCiZ,uBAAU,KACJnjB,EAAM9M,QAAO+kB,EAAM/kB,MAAQ8M,EAAM9M,SAGvC,MAAMiV,EAAS,KACb,IAAK8P,EAAM/kB,MAAO,OAAOgnB,GAAA,KAAQsU,MAAM,UAEvC,MAAMgmC,EAAK,IAAIC,QAAOx8C,EAAM/kB,OACtBqhE,EAAQC,EAAGD,MAAM,IACjBD,EAAME,EAAGF,IAAI,IAEnBn8B,EAAK,SAAU,CACblgB,MAAOA,EAAM/kB,MACbmJ,KAAMk4D,EACNx8C,EAAGu8C,EAAIv8C,EAAI,GACXC,EAAGs8C,EAAIt8C,EAAI,MAITq9C,EAAgBp9C,IACfg9C,EAAY/hE,QACjB+hE,EAAY/hE,MAAMqkB,QAClBzc,SAASg8C,YAAY,cAAc,EAAO7+B,KAG5C,MAAO,CAACof,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrCc,gCAAoB,MAAOb,GAAY,CACrCa,gCAAoB,MAAOZ,GAAY,CACrC0D,yBAAa/C,mBAAOm9B,GAAW,CAC7B5hE,MAAO+kB,EAAM/kB,MACb,iBAAkBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkBvgB,EAAO/kB,MAAQslC,GAC9Ei4B,YAAa,cACb93B,QAAS,cACTnL,IAAKynC,GACJ,KAAM,EAAG,CAAC,YAEfr9B,gCAAoB,MAAOoB,GAAY,CACnC/gB,EAAM/kB,OAEHqkC,yBAAcC,gCAAoB,MAAO0B,GAAY,CACpDwB,yBAAa46B,GAAgB,CAC3B56D,MAAO,IACPC,OAAQ,IACRsd,MAAOA,EAAM/kB,OACZ,KAAM,EAAG,CAAC,cANdqkC,yBAAcC,gCAAoB,MAAOyB,GAAY,aAU9DrB,gCAAoB,MAAOuB,GAAY,CACrCvB,gCAAoB,MAAOwB,GAAY,EACpC7B,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAY24B,EAAOG,GAC9D54B,gCAAoB,MAAO,CAChCf,MAAO6X,4BAAgB,CAAC,MAAO,CAAE,OAAU8hB,EAAIt9D,QAAUyP,EAAazP,SACtEM,IAAKg9D,EAAIt9D,MACTqlC,QAAUC,GAAiB71B,EAAazP,MAAQs9D,EAAIt9D,OACnD2kC,6BAAiB24B,EAAIp8D,OAAQ,GAAIilC,KAClC,OAENzB,gCAAoB,MAAO0B,GAAa,CACd,WAAvB32B,EAAazP,OACTqkC,yBAAcC,gCAAoB,MAAO+B,GAAa,CACrD3B,gCAAoB,MAAO6B,GAAa,EACrClC,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOq9B,GAAc7iB,IAC/E5a,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,aAAc,CAAE,OAAUwmB,EAAkBhiE,QAAUi/C,EAAMx8C,QACpFnC,IAAK2+C,EAAMx8C,KACX4iC,QAAUC,GAAiB08B,EAAkBhiE,MAAQi/C,EAAMx8C,MAC1DkiC,6BAAiBsa,EAAM/9C,OAAQ,GAAIsuD,MACpC,QAEN9qB,gCAAoB,MAAO+qB,GAAa,EACrCprB,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOw9B,GAAct5D,IAC/E07B,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,cACPrjC,IAAKqI,EAAKoc,MACVsgB,QAAUC,GAAiB68B,EAAax5D,EAAKoc,QAC5C,CACDyiB,yBAAa66B,GAAe,CAC1Bt9C,MAAOpc,EAAKoc,OACX,KAAM,EAAG,CAAC,WACZ,EAAG2qC,MACJ,YAGPrrB,yBAAcC,gCAAoB,MAAOqrB,GAAa,EACpDtrB,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOo9B,GAAel5D,IAChF07B,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,eACPrjC,IAAKqI,EAAKzH,OACT,CACDwjC,gCAAoB,MAAOkrB,GAAajrB,6BAAiBh8B,EAAKzH,OAAQ,GACtEwjC,gCAAoB,MAAO,CACzBf,MAAO,uBACP0B,QAAUC,GAAiBvgB,EAAM/kB,MAAO2I,EAAKoc,OAC5C,CACDyiB,yBAAa46B,GAAgB,CAC3B56D,MAAO,IACPC,OAAQ,GACRsd,MAAOpc,EAAKoc,OACX,KAAM,EAAG,CAAC,WACZ,EAAG8qC,QAEN,eAKhBnrB,gCAAoB,MAAOorB,GAAa,CACtCtoB,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,MACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBL,EAAK,WACzD,CACDF,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,MACPlhC,KAAM,UACN4iC,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBrwB,MACpD,CACD8vB,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,Y,UC/NX,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMnE,GAAa,CAAEC,MAAO,eACtBC,GAAa,CAAED,MAAO,gBACtBE,GAAa,CAAEF,MAAO,uBACtBG,GAAa,CAAEH,MAAO,0BACtBmC,GAAa,CAAEnC,MAAO,iBACtBoC,GAAa,CAAEpC,MAAO,wBACtBqC,GAAa,CAAC,WACdC,GAAa,CAAEtC,MAAO,QA0BAI,oCAAiB,CAC3CC,OAAQ,QACRC,MAAMC,GAER,MAAM/uB,EAAYzG,KACZ,gBAAEa,GAAoB0S,eAAY9M,IAClC,QAAEf,EAAF,QAAWC,GAAY4N,eAAYhO,MAEnC,KAAE0N,EAAF,KAAQI,GAASG,MAEjB,YACJuK,EADI,yBAEJC,EAFI,YAGJC,EAHI,sBAIJJ,GACEc,KAEEi1C,EAAwB,CAAC,IAAK,IAAK,IAAK,GAAI,IAC5CC,EAAqBjoC,kBAAI,GAEzBkoC,EAA0BxiE,IAC9B0sB,EAAyB1sB,GACzBuiE,EAAmBviE,OAAQ,IAGvB,mBACJqiB,EADI,mBAEJC,EAFI,mBAGJY,EAHI,mBAIJ0B,EAJI,mBAKJK,EALI,mBAMJC,GACEU,KAEE68C,EAAsB9mC,IAC1B,MAAMtL,EAAYsL,EAAM,GACnBtL,GACLjS,GAAgBiS,GAAWvX,KAAKwX,GAAWjO,EAAmBiO,KAG1DoyC,EAAmBpoC,kBAAI,GACvBqoC,EAAkBroC,kBAAI,GACtBsoC,EAAmBtoC,kBAAI,GACvBuoC,EAAwBvoC,kBAAI,GAC5BwoC,EAAoBxoC,kBAAI,GACxByoC,EAAqBzoC,kBAAI,GACzB0oC,EAAwB1oC,kBAAI,GAG5B2oC,EAAW,CAAC/+C,GAAW,KAC3B/O,EAAU3D,mBAAmB,CAC3B/O,KAAM,OACNyhB,cAKEg/C,EAAatiC,IACjBzrB,EAAU3D,mBAAmB,CAC3B/O,KAAM,QACNtF,KAAMyjC,IAER8hC,EAAiB1iE,OAAQ,GAIrBmjE,EAAYvnD,IAChBzG,EAAU3D,mBAAmB,CAC3B/O,KAAM,OACNtF,KAAMye,IAER+mD,EAAgB3iE,OAAQ,GAG1B,MAAO,CAACmkC,EAAUC,KAChB,MAAMg/B,EAAsBl8B,8BAAkB,YACxCm8B,EAAsBn8B,8BAAkB,YACxCo8B,EAA0Bp8B,8BAAkB,gBAC5Cq8B,EAAkCr8B,8BAAkB,wBACpDs8B,EAAkCt8B,8BAAkB,wBACpDu8B,EAAsBv8B,8BAAkB,YACxCw8B,EAAyBx8B,8BAAkB,eAC3Cy8B,EAA+Bz8B,8BAAkB,qBACjD08B,EAA4B18B,8BAAkB,kBAC9C28B,EAAiC38B,8BAAkB,uBACnD48B,EAA6B58B,8BAAkB,mBAC/C68B,EAAyB78B,8BAAkB,eAC3C88B,EAA0B98B,8BAAkB,gBAC5C+8B,EAAuB/8B,8BAAkB,aACzCg9B,EAAsBh9B,8BAAkB,YACxCi9B,EAA4Bj9B,8BAAkB,kBAEpD,OAAQ7C,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrC4D,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,MACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa47B,EAAqB,CAChCz/B,MAAO6X,4BAAgB,CAAC,eAAgB,CAAE,SAAY/W,mBAAOrwB,MAC7DixB,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAO1iB,EAAP0iB,KACpD,KAAM,EAAG,CAAC,YAEfoD,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,MACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa67B,EAAqB,CAChC1/B,MAAO6X,4BAAgB,CAAC,eAAgB,CAAE,SAAY/W,mBAAOpwB,MAC7DgxB,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAO9iB,EAAP8iB,KACpD,KAAM,EAAG,CAAC,YAEfoD,EAAG,GACF,EAAG,CAAC,sBAETnD,gCAAoB,MAAOb,GAAY,CACrC2D,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,iBAAM,CACtBhD,gCAAoB,MAAOZ,GAAY,CACrC0D,yBAAa87B,EAAyB,CACpC3/B,MAAO6X,4BAAgB,CAAC,OAAQ,CAAE,OAA4C,UAAlC,6BAAOjsC,UAAP,eAAyB9M,SACrE4iC,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiB29B,MACpD,KAAM,EAAG,CAAC,UACbz7B,yBAAa/C,mBAAO,SAAU,CAC5Bh5B,QAAS,QACTw8B,QAAS+6B,EAAsBhjE,MAC/B,mBAAoBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkB09B,EAAuBhjE,MAAQslC,IAC/F,CACD57B,QAASg+B,qBAAS,IAAM,CACtBhD,gCAAoB,MAAO,CACzBf,MAAO,iBACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAK,KAAQ6+B,IAAYD,EAAsBhjE,OAAQ,KACpF,CACDwnC,yBAAa+7B,GACb37B,6BAAiB,YAEnBlD,gCAAoB,MAAO,CACzBf,MAAO,iBACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAK,KAAQ6+B,GAAS,GAAOD,EAAsBhjE,OAAQ,KACxF,CACDwnC,yBAAag8B,GACb57B,6BAAiB,cAGrB7C,QAAS2C,qBAAS,IAAM,CACtBF,yBAAai8B,EAAqB,CAAE9/B,MAAO,YAE7CkE,EAAG,GACF,EAAG,CAAC,iBAGXA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAaG,GAAW,CACtBjC,SAAUtB,EAAO,KAAOA,EAAO,GAAKzI,GAAS8mC,EAAmB9mC,KAC/D,CACDoJ,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAak8B,EAAwB,CAAE//B,MAAO,mBAEhDkE,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,IAELL,yBAAa/C,mBAAO,SAAU,CAC5Bh5B,QAAS,QACTw8B,QAASy6B,EAAiB1iE,MAC1B,mBAAoBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkBo9B,EAAkB1iE,MAAQslC,IAC1F,CACD57B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAa68B,GAAW,CACtBC,SAAUlgC,EAAO,KAAOA,EAAO,GAAKxD,GAASsiC,EAAUtiC,QAG3DmE,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,iBAAM,CACtBF,yBAAam8B,EAA8B,CACzChgC,MAAO6X,4BAAgB,CAAC,eAAgB,CAAE,OAA4C,WAAlC,6BAAOjsC,UAAP,eAAyB9M,UAC5E,KAAM,EAAG,CAAC,aAEfolC,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,GACF,EAAG,CAAC,YACPL,yBAAa/C,mBAAO,SAAU,CAC5Bh5B,QAAS,QACTw8B,QAAS06B,EAAgB3iE,MACzB,mBAAoBokC,EAAO,MAAQA,EAAO,IAAOkB,GAAkBq9B,EAAiB3iE,MAAQslC,IAC3F,CACD57B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAa+8B,GAAU,CACrBD,SAAUlgC,EAAO,KAAOA,EAAO,GAAKxoB,GAAQunD,EAASvnD,QAGzDmpB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,iBAAM,CACtBF,yBAAao8B,EAA2B,CACtCjgC,MAAO6X,4BAAgB,CAAC,eAAgB,CAAE,OAA4C,UAAlC,6BAAOjsC,UAAP,eAAyB9M,UAC5E,KAAM,EAAG,CAAC,aAEfolC,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,GACF,EAAG,CAAC,YACPL,yBAAa/C,mBAAO,SAAU,CAC5Bh5B,QAAS,QACTw8B,QAAS26B,EAAiB5iE,MAC1B,mBAAoBokC,EAAO,MAAQA,EAAO,IAAOkB,GAAkBs9B,EAAkB5iE,MAAQslC,IAC5F,CACD57B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAag9B,GAAW,CACtBF,SAAUlgC,EAAO,MAAQA,EAAO,IAAMkJ,IAAW7I,mBAAOniB,EAAPmiB,CAA2B6I,GAAQs1B,EAAiB5iE,OAAQ,QAGjH+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaq8B,EAAgC,CAAElgC,MAAO,mBAExDkE,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,GACF,EAAG,CAAC,YACPL,yBAAa/C,mBAAO,SAAU,CAC5Bh5B,QAAS,QACTw8B,QAAS46B,EAAsB7iE,MAC/B,mBAAoBokC,EAAO,MAAQA,EAAO,IAAOkB,GAAkBu9B,EAAuB7iE,MAAQslC,IACjG,CACD57B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAai9B,GAAgB,CAC3Bv8B,QAAS9D,EAAO,MAAQA,EAAO,IAAOkB,GAAiBu9B,EAAsB7iE,OAAQ,GACrF0kE,SAAUtgC,EAAO,MAAQA,EAAO,IAAM,EAAGjhB,MAAKC,UAAYqhB,mBAAOvhB,EAAPuhB,CAA2BthB,EAAKC,GAAMy/C,EAAsB7iE,OAAQ,QAGlI+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAas8B,EAA4B,CAAEngC,MAAO,mBAEpDkE,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,GACF,EAAG,CAAC,YACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAau8B,EAAwB,CACnCpgC,MAAO,eACP0B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBy9B,EAAmB/iE,OAAQ,OAGtF6nC,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5Bh5B,QAAS,QACTw8B,QAAS66B,EAAkB9iE,MAC3B,mBAAoBokC,EAAO,MAAQA,EAAO,IAAOkB,GAAkBw9B,EAAmB9iE,MAAQslC,IAC7F,CACD57B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAam9B,GAAY,CACvBz8B,QAAS9D,EAAO,MAAQA,EAAO,IAAOkB,GAAiBw9B,EAAkB9iE,OAAQ,GACjF4kE,cAAexgC,EAAO,MAAQA,EAAO,IAAMxmB,IAAS6mB,mBAAOxf,EAAPwf,CAA2B7mB,GAAMklD,EAAkB9iE,OAAQ,IAC/G6kE,cAAezgC,EAAO,MAAQA,EAAO,IAAMxmB,IAAS6mB,mBAAOvf,EAAPuf,CAA2B7mB,GAAMklD,EAAkB9iE,OAAQ,QAGnH+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,SACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaw8B,EAAyB,CAAErgC,MAAO,mBAEjDkE,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,GACF,EAAG,CAAC,cAETnD,gCAAoB,MAAOoB,GAAY,CACrC0B,yBAAay8B,EAAsB,CACjCtgC,MAAO,6BACP0B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBb,mBAAOhY,EAAPgY,CAAoB,QAE7E+C,yBAAa/C,mBAAO,SAAU,CAC5Bh5B,QAAS,QACTw8B,QAASs6B,EAAmBviE,MAC5B,mBAAoBokC,EAAO,MAAQA,EAAO,IAAOkB,GAAkBi9B,EAAoBviE,MAAQslC,IAC9F,CACD57B,QAASg+B,qBAAS,IAAM,CACtBhD,gCAAoB,MAAOqB,GAAY,EACpC1B,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAY89B,EAAwB35D,GAC/E+7B,gCAAoB,MAAO,CAChCf,MAAO,cACPrjC,IAAKqI,EACL08B,QAAUC,GAAiBk9B,EAAuB75D,IACjDg8B,6BAAiBh8B,GAAQ,IAAK,EAAGq9B,KAClC,SAGRjB,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,OAAQuB,GAAYtB,6BAAiBF,mBAAOlY,IAAyB,KAE3Fsb,EAAG,GACF,EAAG,CAAC,YACPL,yBAAa08B,EAAqB,CAChCvgC,MAAO,6BACP0B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBb,mBAAOhY,EAAPgY,CAAoB,QAE7E+C,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa28B,EAA2B,CACtCxgC,MAAO,wCACP0B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBb,mBAAO9X,EAAP8X,QAG3DoD,EAAG,GACF,EAAG,CAAC,sBAETL,yBAAa/C,mBAAO,SAAQ,CAC1BwD,QAAS86B,EAAmB/iE,MAC5B,mBAAoBokC,EAAO,MAAQA,EAAO,IAAOkB,GAAkBy9B,EAAoB/iE,MAAQslC,GAC/Fg6B,OAAQ,KACRC,SAAU,GACV/3D,MAAO,IACPg4D,eAAgB,IACf,CACDz6B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAas9B,GAAa,CACxB58B,QAAS9D,EAAO,MAAQA,EAAO,IAAOkB,GAAiBy9B,EAAmB/iE,OAAQ,GAClFwlD,SAAUphB,EAAO,MAAQA,EAAO,IAAMjnC,IAAUsnC,mBAAO7f,EAAP6f,CAA2BtnC,GAAO4lE,EAAmB/iE,OAAQ,QAGjH6nC,EAAG,GACF,EAAG,CAAC,kB,UC3ZX,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCJA,QACb,MAAM,OAAEh/B,GAAWoZ,eAAYxX,KAEzBs6D,EAAQzqC,iBAAmB,MAC3B0qC,EAAkB1qC,iBAAI,IAEtB2qC,EAAY,KACZp8D,EAAO7I,MAAMrC,OAASqnE,EAAgBhlE,MACxC+kE,EAAM/kE,MAAQoiB,WAAW,KACvB4iD,EAAgBhlE,MAAQglE,EAAgBhlE,MAAQ,GAChDilE,KACC,KAEAD,EAAgBhlE,MAAQ,MAS/B,OANAiwB,uBAAUg1C,GAEV/0C,yBAAY,KACN60C,EAAM/kE,OAAO2zD,aAAaoR,EAAM/kE,SAG/B,CACLglE,oB,wBCxBJ,MACMthC,GAAa,CAAEC,MAAO,eACtBC,GAAa,CAAC,WASQG,oCAAiB,CAC3CC,OAAQ,aACRgB,MAAO,CAAC,UACRf,MAAMC,GAAS,KAAEe,IAMnB,MAAM,QAAE36B,GAAY2X,eAAYxX,KAE1By6D,EAAuBv4D,IAC3Bs4B,EAAK,SAAUt4B,IAGjB,MAAO,CAACw3B,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,EAC1DW,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOn6B,GAAWqC,IAC5E03B,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,cACPrjC,IAAKqM,EAAM7D,GACXu8B,QAAUC,GAAiB4/B,EAAoBv4D,IAC9C,CACD66B,yBAAai2B,GAAgB,CAC3B95B,MAAO,YACPh3B,MAAOA,EACPpF,KAAM,KACL,KAAM,EAAG,CAAC,WACZ,EAAGq8B,MACJ,Y,UCrCR,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMF,GAAa,CAAEC,MAAO,aACtBC,GAAa,CAAED,MAAO,cACtBE,GAAa,CAAC,eACdC,GAAa,CAAEH,MAAO,eAiBAI,oCAAiB,CAC3CC,OAAQ,QACRC,MAAMC,GAER,MAAM/uB,EAAYzG,IACZ0B,EAAc3F,IACdmiB,EAAgBvX,KACdtF,oBAAqBmW,EAAvB,gBAA6ChX,GAAoB+S,eAAY9M,IAC7E,OAAEtM,EAAF,WAAU8B,GAAesX,eAAY7R,IACrC,aAAEkF,EAAF,cAAgBC,GAAkB0M,eAAY2K,IAE9C,gBAAEo4C,GAAoBG,KAEtBp1D,EAAsBoW,sBAAS,IAAM,IAAID,EAAqBlmB,MAAO2K,EAAW3K,QAEhFolE,EAA6B9qC,kBAAI,IAEjC,UACJ1T,EADI,WAEJC,EAFI,YAGJK,EAHI,sBAIJC,EAJI,kBAKJE,EALI,YAMJta,EANI,SAOJwa,EAPI,eAQJC,EARI,WASJE,GACEmF,KAGEw4C,EAAoBl4D,IACxBgI,EAAU7E,uBAAuB,IAE7B3F,EAAW3K,QAAUmN,GACzBiD,EAAY3C,iBAAiBN,IAIzBm4D,EAA4B,CAAC/sD,EAAepL,KAChD,MAAM6/C,EAAkBj9C,EAAoB/P,MAAMrC,OAAS,EAE3D,IAAIqvD,IAAmBj9C,EAAoB/P,MAAMsL,SAAS6B,IAAuB,IAAboL,EAAEkyC,OAGtE,GAAIn1C,EAAatV,MACf,GAAI2K,EAAW3K,QAAUmN,EAAO,CAC9B,IAAK6/C,EAAiB,OAEtB,MAAMvlC,EAAyB1X,EAAoB/P,MAAM0I,OAAOC,GAAQA,IAASwE,GACjFgI,EAAUnD,0BAA0ByV,GACpC49C,EAAiBt1D,EAAoB/P,MAAM,SAG3C,GAAI+P,EAAoB/P,MAAMsL,SAAS6B,GAAQ,CAC7C,MAAMsa,EAAyB1X,EAAoB/P,MAAM0I,OAAOC,GAAQA,IAASwE,GACjFgI,EAAUnD,0BAA0ByV,OAEjC,CACH,MAAMA,EAAyB,IAAI1X,EAAoB/P,MAAOmN,GAC9DgI,EAAUnD,0BAA0ByV,GACpC49C,EAAiBl4D,QAKlB,GAAIoI,EAAcvV,MAAO,CAC5B,GAAI2K,EAAW3K,QAAUmN,IAAU6/C,EAAiB,OAEpD,IAAIuY,EAAWj4D,KAAKC,OAAOwC,EAAoB/P,OAC3CwN,EAAWL,EAEXA,EAAQo4D,IACV/3D,EAAWF,KAAK+M,OAAOtK,EAAoB/P,OAC3CulE,EAAWp4D,GAGb,MAAMsa,EAAyB,GAC/B,IAAK,IAAIhqB,EAAI8nE,EAAU9nE,GAAK+P,EAAU/P,IAAKgqB,EAAuBxpB,KAAKR,GACvE0X,EAAUnD,0BAA0ByV,GACpC49C,EAAiBl4D,QAIjBgI,EAAUnD,0BAA0B,IACpCqzD,EAAiBl4D,IAKf6D,EAAsBqT,IACtBnV,EAAgBlP,QAAUqkB,IAC9BlP,EAAUnE,mBAAmBqT,GAExBA,GAAOlP,EAAUnD,0BAA0B,MAI5CwzD,EAAiBC,IACrB,MAAM,SAAEp4D,EAAF,SAAYsa,GAAa89C,EAC/B/9C,EAAWra,EAAUsa,KAGjB,eAAEyE,EAAF,wBAAkBC,GAA4Be,KAE9Cs4C,EAAyB,IACtB,CACL,CACEl7D,KAAM,KACNssD,QAAS,WACTxJ,QAASzmC,GAEX,CACErc,KAAM,KACNssD,QAAS,WACTxJ,QAAS9lC,GAEX,CACEhd,KAAM,OACNssD,QAAS,QACTxJ,QAASpmC,GAEX,CACE1c,KAAM,QACNssD,QAAS,KACTxJ,QAASjhC,IAKTs5C,EAA4B,IACzB,CACL,CACEn7D,KAAM,KACNssD,QAAS,WACTxJ,QAAS/lC,GAEX,CACE/c,KAAM,KACNssD,QAAS,WACTxJ,QAAS1mC,GAEX,CACEpc,KAAM,KACNssD,QAAS,WACTxJ,QAASzmC,GAEX,CACErc,KAAM,KACNssD,QAAS,WACTxJ,QAAS9lC,GAEX,CAAE+lC,SAAS,GACX,CACE/iD,KAAM,OACNssD,QAAS,QACTxJ,QAASpmC,GAEX,CACE1c,KAAM,OACNssD,QAAS,WACTxJ,QAASjmC,GAEX,CACE7c,KAAM,OACNssD,QAAS,SACTxJ,QAAS,IAAMvgD,KAEjB,CAAEwgD,SAAS,GACX,CACE/iD,KAAM,QACNssD,QAAS,aACTxJ,QAASlhC,IAKf,MAAO,CAAC+X,EAAUC,KAChB,MAAM8/B,EAAsBh9B,8BAAkB,YACxCu8B,EAAsBv8B,8BAAkB,YACxCoV,EAAyBrB,8BAAkB,eAC3CD,EAA2BC,8BAAkB,iBAEnD,OAAOC,6BAAiB7W,yBAAcC,gCAAoB,MAAO,CAC/DX,MAAO,aACP2X,YAAalX,EAAO,KAAOA,EAAO,GAAK,IAAMpzB,GAAmB,KAC/D,CACD0zB,gCAAoB,MAAOhB,GAAY,CACrCgB,gCAAoB,MAAO,CACzBf,MAAO,MACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAOvd,EAAPud,KACpD,CACD+C,yBAAa08B,EAAqB,CAAEvgC,MAAO,SAC3CiE,6BAAiB,WAEnBJ,yBAAa/C,mBAAO,SAAU,CAC5Bh5B,QAAS,QACTs8B,UAAW,aACXE,QAASm9B,EAA2BplE,MACpC,mBAAoBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkB8/B,EAA4BplE,MAAQslC,IACpG,CACD57B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAao+B,GAAY,CACvBtB,SAAUlgC,EAAO,KAAOA,EAAO,GAAKz3B,IAAW83B,mBAAOtd,EAAPsd,CAA8B93B,GAAQy4D,EAA2BplE,OAAQ,QAG5H+kC,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,MAAOd,GAAY,CACrC4D,yBAAai8B,OAGjB57B,EAAG,GACF,EAAG,CAAC,cAETL,yBAAa/C,mBAAOohC,MAAY,CAC9BliC,MAAO,iBACPmiC,WAAYrhC,mBAAO57B,GACnBwC,UAAW,IACX06D,QAAQ,EACRC,kBAAmB,GACnBC,QAAS,KACTC,MAAOV,EACPW,QAAS,MACR,CACDx9D,KAAM++B,qBAAS,EAAG/5B,UAASR,WAAY,CACrC+tC,6BAAiB7W,yBAAcC,gCAAoB,MAAO,CACxDX,MAAO6X,4BAAgB,CAAC,iBAAkB,CACxC,OAAU/W,mBAAO95B,KAAgBwC,EACjC,SAAYs3B,mBAAO10B,GAAqBzE,SAAS6B,MAEnDmuC,YAAahW,GAAUggC,EAA0BhgC,EAAQn4B,IACxD,CACDu3B,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,QAAS,CAAE,cAAeruC,GAAS,OAC1Dw3B,6BAAiBF,mBAAOxuB,EAAPwuB,CAAkBt3B,EAAQ,EAAG,IAAK,GACtDq6B,yBAAai2B,GAAgB,CAC3B95B,MAAO,YACPh3B,MAAOgB,EACPpG,KAAM,IACN0gC,QAAS96B,EAAQs3B,mBAAOugC,IACvB,KAAM,EAAG,CAAC,QAAS,aACrB,GAAInhC,KAAc,CACnB,CAACyY,EAAwBqpB,OAG7B99B,EAAG,GACF,EAAG,CAAC,eACPnD,gCAAoB,MAAOZ,GAAY,OAASa,6BAAiBF,mBAAO95B,GAAc,GAAK,MAAQg6B,6BAAiBF,mBAAO57B,GAAQlL,QAAS,IAC3I,KAAM,CACP,CAACq9C,EAA0B,IAAMhqC,GAAmB,IACpD,CAACsrC,EAAwBopB,S,WC3Q7B,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,U,yBCLA,QACb,MAAMvwD,EAAYzG,KACZ,cAAEkB,EAAF,kBAAiBK,GAAsBgS,eAAY9M,GAEnDixD,EAAsB,KACtBn2D,EAAkBjQ,MAAOmV,EAAUjD,qBAAqB,MAE1DiD,EAAUjD,qBAAqB,CAC7B5L,KAAMsJ,EAAc5P,MAAMsG,KAC1BC,GAAIqJ,EAAc5P,MAAMuG,GACxBC,UAAWoJ,EAAc5P,MAAMwG,UAC/BC,cAAemJ,EAAc5P,MAAMyG,cACnCrB,MAAOwK,EAAc5P,MAAMoF,MAC3BC,UAAWuK,EAAc5P,MAAMqF,UAC/BE,SAAUqK,EAAc5P,MAAMuF,SAC9BD,SAAUsK,EAAc5P,MAAMsF,SAC9BE,MAAOoK,EAAc5P,MAAMwF,SAKjC,MAAO,CACL4gE,wB,yBCtBJ,MAAMzgC,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,mBACtBC,GAAa,CAAED,MAAO,OACtBE,GAA2B8B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IAUnGg6B,oCAAiB,CAC3CC,OAAQ,iBACRC,MAAMC,GAER,MAAM9zB,EAAc3F,KACd,cAAE4F,GAAkB4R,eAAYvT,KAEhCpF,EAAUgxB,iBAAY,GAE5BiP,mBAAMl5B,EAAe,KACdA,EAAcrQ,QACnBsJ,EAAQtJ,MAAQ,YAAaqQ,EAAcrQ,YAAyCi+B,IAAhC5tB,EAAcrQ,MAAMsJ,QAAwB+G,EAAcrQ,MAAMsJ,QAAU,IAC7H,CAAE+8D,MAAM,EAAMxd,WAAW,IAE5B,MAAM,mBAAEtnC,GAAuBW,KAEzBokD,EAAiBtmE,IACrB,IAAKqQ,EAAcrQ,MAAO,OAC1B,MAAM8M,EAAQ,CAAExD,QAAStJ,GACzBoQ,EAAYnC,cAAc,CAAEnF,GAAIuH,EAAcrQ,MAAM8I,GAAIgE,UACxDyU,KAGF,MAAO,CAAC4iB,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrCC,GACA2D,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,SACPp2B,IAAK,EACL8M,IAAK,EACLsP,KAAM,GACN3pB,MAAOsJ,EAAQtJ,MACf0lC,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAASsmE,EAActmE,KAC1D,KAAM,EAAG,CAAC,OAAQ,kB,UC5C3B,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,U,yBCLf,MACM0jC,GAAa,CAAEC,MAAO,eAKAI,oCAAiB,CAC3CC,OAAQ,cACRl3B,MAAO,CACP1H,MAAO,CACL3C,KAAMw2B,OACNqf,UAAU,IAGZrU,MAAMC,GAIR,MAAO,CAACC,EAAUC,KAChB,MAAMmiC,EAAwBr/B,8BAAkB,cAEhD,OAAQ7C,yBAAc0U,yBAAatU,mBAAO,SAAS,CAAEd,MAAO,aAAe,CACzEoB,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,MAAOhB,GAAY,CACrCgB,gCAAoB,MAAO,CACzBf,MAAO,UACP55B,MAAOoxC,4BAAgB,CAAE9wC,gBAAiB65B,EAAQ9+B,SACjD,KAAM,KAEXoiC,yBAAa++B,EAAuB,CAAE5iC,MAAO,qBAE/CkE,EAAG,Q,UC5BP,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCFa9D,gCAAiB,CAC3CC,OAAQ,aACRl3B,MAAO,CACPvF,KAAM,CACJ9E,KAAM41C,OACNtT,QAAS,GAEXyhC,MAAO,CACL/jE,KAAMw2B,OACN8L,QAAS,QAEX0hC,KAAM,CACJhkE,KAAMw2B,OACN8L,QAAS,YAGXd,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIRwiC,EAAkB,GAElBC,EAAmB,CAACH,EAAeC,EAAcl/D,KACrD,MAAMI,EAASC,SAASC,cAAc,UACtCF,EAAOH,MAAQG,EAAOF,OAAgB,EAAPF,EAC/B,MAAMO,EAAMH,EAAOI,WAAW,MAE9B,OAAKD,GAELA,EAAIG,UAAYu+D,EAChB1+D,EAAI8+D,SAAS,EAAG,EAAGj/D,EAAOH,MAAOG,EAAOF,QACxCK,EAAIG,UAAYw+D,EAChB3+D,EAAI8+D,SAAS,EAAG,EAAGr/D,EAAMA,GACzBO,EAAI++D,UAAUt/D,EAAMA,GACpBO,EAAI8+D,SAAS,EAAG,EAAGr/D,EAAMA,GAClBI,EAAOm/D,aARG,MAWbC,EAAgB,CAACP,EAAeC,EAAcl/D,KAClD,MAAMjH,EAAMkmE,EAAQ,IAAMC,EAAO,IAAMl/D,EACvC,GAAIm/D,EAAgBpmE,GAAM,OAAOomE,EAAgBpmE,GAEjD,MAAM0mE,EAAaL,EAAiBH,EAAOC,EAAMl/D,GAEjD,OADAm/D,EAAgBpmE,GAAO0mE,EAChBA,GAGHC,EAAU9gD,sBAAS,KACvB,MAAM6gD,EAAaD,EAAcj6D,EAAM05D,MAAO15D,EAAM25D,KAAM35D,EAAMvF,MAChE,MAAO,CAAEmwD,gBAAiB,OAAOsP,QAGnC,MAAO,CAAC7iC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,eACP55B,MAAOoxC,4BAAgB1W,mBAAOwiC,KAC7B,KAAM,O,UC1DX,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMthC,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,SACtBC,GAAa,CAAED,MAAO,yBACtBE,GAA2B8B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,gBAAkB,MAAO,IACxHG,GAAa,CACjBD,IAS0BE,oCAAiB,CAC3CC,OAAQ,QACRl3B,MAAO,CACP9M,MAAO,CACLyC,KAAM7E,OACN06C,UAAU,IAGZtT,MAAO,CAAC,eACRf,MAAMC,GAAS,KAAEe,IAInB,MAAMn4B,EAAQo3B,EAMR9+B,EAAQ+gB,sBAAS,IAAMrZ,EAAM9M,OAE7By/B,EAAgBtZ,sBAAS,KAC7B,MAAM+gD,EAAU,CAAC9hE,EAAMpF,MAAMH,EAAGuF,EAAMpF,MAAMmnE,EAAG/hE,EAAMpF,MAAM+pD,GAAGnhD,KAAK,KACnE,MAAO,kCAAkCs+D,kBAAwBA,gBAG7DE,EAAW9sC,mBACX8K,EAAgB7sB,IAEpB,GADAA,EAAEuW,kBACGs4C,EAASpnE,MAAO,OACrB,MAAMqnE,EAAiBD,EAASpnE,MAAMge,YAChCspD,EAAUF,EAASpnE,MAAM+qC,wBAAwB/hC,KAAOnI,OAAO0mE,YAC/Dv+D,EAAOuP,EAAEyxB,MAAQs9B,EACvB,IAAIxd,EAEUA,EAAV9gD,EAAO,EAAO,EACTA,EAAOq+D,EAAoB,EAC3B/5D,KAAKkf,MAAa,IAAPxjB,EAAaq+D,GAAkB,IAE/CjiE,EAAMpF,MAAM8pD,IAAMA,GACpB7kB,EAAK,cAAe,CAClBplC,EAAGuF,EAAMpF,MAAMH,EACfsnE,EAAG/hE,EAAMpF,MAAMmnE,EACfpd,EAAG3kD,EAAMpF,MAAM+pD,EACfD,EAAGA,KAKH0d,EAAuB,KAC3B3mE,OAAOsvB,oBAAoB,YAAaiV,GACxCvkC,OAAOsvB,oBAAoB,UAAWq3C,IAElCC,EAAmBlvD,IACvB6sB,EAAa7sB,GACb1X,OAAO2d,iBAAiB,YAAa4mB,GACrCvkC,OAAO2d,iBAAiB,UAAWgpD,IAIrC,OAFAt3C,yBAAYs3C,GAEL,CAACrjC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrC4D,yBAAakgC,MAEfhjC,gCAAoB,MAAO,CACzBf,MAAO,iBACP55B,MAAOoxC,4BAAgB,CAAEnxC,WAAYy6B,mBAAOhF,MAC3C,KAAM,GACTiF,gCAAoB,MAAO,CACzBf,MAAO,kBACP8B,QAAS,WACTnL,IAAK8sC,EACL9rB,YAAalX,EAAO,KAAOA,EAAO,GAAKkB,GAAUmiC,EAAgBniC,KAChE,CACDZ,gCAAoB,MAAO,CACzBf,MAAO,gBACP55B,MAAOoxC,4BAAgB,CAAEnyC,KAAwB,IAAlBy7B,mBAAOr/B,GAAO0kD,EAAU,OACtDhmB,GAAY,IACd,W,UC1FP,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAM6B,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,OACtBC,GAA2B+B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,cAAgB,MAAO,IACtHE,GAAa,CACjBD,IAO0BG,oCAAiB,CAC3CC,OAAQ,MACRl3B,MAAO,CACP9M,MAAO,CACLyC,KAAM7E,OACN06C,UAAU,GAEZqvB,IAAK,CACHllE,KAAM41C,OACNC,UAAU,IAGZtT,MAAO,CAAC,eACRf,MAAMC,GAAS,KAAEe,IAInB,MAAMn4B,EAAQo3B,EAMR0jC,EAASttC,iBAAI,GACbutC,EAAgBvtC,iBAAI,IAEpBl1B,EAAQ+gB,sBAAS,KACrB,MAAM2hD,EAAOj8D,IAAUiB,EAAM9M,OAAO+nE,QAEpC,OADmB,IAAfj7D,EAAM66D,MAAYG,EAAKhjD,EAAIhY,EAAM66D,KAC9BG,IAGHE,EAAc7hD,sBAAS,IACL,IAAlB/gB,EAAMpF,MAAM8kB,GAAmC,UAAxB+iD,EAAc7nE,MAA0B,OAC5C,IAAhBoF,EAAMpF,MAAM8kB,EAAU,IAAM,KAGrCykB,mBAAM,IAAMz8B,EAAM9M,MAAO,KACvB,MAAM8nE,EAAOj8D,IAAUiB,EAAM9M,OAAO+nE,QAC9BjjD,EAAe,IAAXgjD,EAAK/oE,EAAU+N,EAAM66D,IAAMG,EAAKhjD,EAChC,IAANA,GAAWA,EAAI8iD,EAAO5nE,MAAQ,IAAG6nE,EAAc7nE,MAAQ,SACjD,IAAN8kB,GAAWA,EAAI8iD,EAAO5nE,MAAQ,IAAG6nE,EAAc7nE,MAAQ,QAC3D4nE,EAAO5nE,MAAQ8kB,IAGjB,MAAMmjD,EAAS3tC,mBACT8K,EAAgB7sB,IAEpB,GADAA,EAAEuW,kBACGm5C,EAAOjoE,MAAO,OAEnB,MAAMqnE,EAAiBY,EAAOjoE,MAAMge,YAC9BspD,EAAUW,EAAOjoE,MAAM+qC,wBAAwB/hC,KAAOnI,OAAO0mE,YAC7Dv+D,EAAOuP,EAAEyxB,MAAQs9B,EACvB,IAAIxiD,EAAGojD,EAEHl/D,EAAO,EAAG8b,EAAI,EACT9b,EAAOq+D,EAAgBviD,EAAI,KAElCojD,EAAiB,IAAPl/D,EAAaq+D,EACvBviD,EAAI,IAAMojD,EAAU,MAEH,IAAfp7D,EAAM66D,KAAcviE,EAAMpF,MAAM8kB,IAAMA,GACxCmgB,EAAK,cAAe,CAClBngB,IACA3lB,EAAGiG,EAAMpF,MAAMb,EACfJ,EAAGqG,EAAMpF,MAAMjB,EACf+qD,EAAG1kD,EAAMpF,MAAM8pD,KAKf0d,EAAuB,KAC3B3mE,OAAOsvB,oBAAoB,YAAaiV,GACxCvkC,OAAOsvB,oBAAoB,UAAWq3C,IAElCC,EAAmBlvD,IACvB6sB,EAAa7sB,GACb1X,OAAO2d,iBAAiB,YAAa4mB,GACrCvkC,OAAO2d,iBAAiB,UAAWgpD,IAIrC,OAFAt3C,yBAAYs3C,GAEL,CAACrjC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAO,CACzBf,MAAO,gBACP8B,QAAS,SACTnL,IAAK2tC,EACL3sB,YAAalX,EAAO,KAAOA,EAAO,GAAKkB,GAAUmiC,EAAgBniC,KAChE,CACDZ,gCAAoB,MAAO,CACzBf,MAAO,cACP55B,MAAOoxC,4BAAgB,CAAEnyC,KAAMy7B,mBAAOujC,MACrCnkC,GAAY,IACd,W,UCtGP,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAM8B,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAA2BiC,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,oBAAsB,MAAO,IAC5HC,GAA2B+B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,oBAAsB,MAAO,IAC5HE,GAA2B8B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,qBAAuB,MAAO,IAC7HG,GAAa,CACjBD,IAQ0BE,oCAAiB,CAC3CC,OAAQ,aACRl3B,MAAO,CACP9M,MAAO,CACLyC,KAAM7E,OACN06C,UAAU,GAEZqvB,IAAK,CACHllE,KAAM41C,OACNC,UAAU,IAGZtT,MAAO,CAAC,eACRf,MAAMC,GAAS,KAAEe,IAInB,MAAMn4B,EAAQo3B,EAMR9+B,EAAQ+gB,sBAAS,KACrB,MAAMgiD,EAAOt8D,IAAUiB,EAAM9M,OAAOooE,QAEpC,OADmB,IAAft7D,EAAM66D,MAAYQ,EAAKrjD,EAAIhY,EAAM66D,KAC9BQ,IAGHhpC,EAAUhZ,sBAAS,IAAM,OAAO/gB,EAAMpF,MAAM8kB,iBAC5CujD,EAAaliD,sBAAS,KAAyB,IAAhB/gB,EAAMpF,MAAMq+B,EAAW,EAAK,IAAM,KACjE2pC,EAAc7hD,sBAAS,IAAsB,IAAhB/gB,EAAMpF,MAAMjB,EAAU,KAEnDupE,EAAkB1mD,uBAAS,SAAS2mD,GACxCtjC,EAAK,cAAesjC,KACnB,GAAI,CAAEzmD,SAAS,EAAMJ,UAAU,IAE5B8mD,EAAgBluC,mBAChB8K,EAAgB7sB,IAEpB,GADAA,EAAEuW,kBACG05C,EAAcxoE,MAAO,OAE1B,MAAMqnE,EAAiBmB,EAAcxoE,MAAMge,YACrCyqD,EAAkBD,EAAcxoE,MAAMke,aACtCopD,EAAUkB,EAAcxoE,MAAM+qC,wBAAwB/hC,KAAOnI,OAAO0mE,YACpEmB,EAAUF,EAAcxoE,MAAM+qC,wBAAwB9hC,IAAMpI,OAAO8nE,YACnE3/D,EAAO4/D,mBAAMrwD,EAAEyxB,MAAQs9B,EAAS,EAAGD,GACnCp+D,EAAM2/D,mBAAMrwD,EAAE2xB,MAAQw+B,EAAS,EAAGD,GAClCI,EAAa7/D,EAAOq+D,EACpByB,EAASF,oBAAQ3/D,EAAMw/D,EAAmB,EAAG,EAAG,GAEtDH,EAAgB,CACdxjD,EAAG1f,EAAMpF,MAAM8kB,EACf/lB,EAAG8pE,EACHxqC,EAAGyqC,EACHhf,EAAG1kD,EAAMpF,MAAM8pD,KAKb0d,EAAuB,KAC3B3mE,OAAOsvB,oBAAoB,YAAaiV,GACxCvkC,OAAOsvB,oBAAoB,UAAWq3C,IAElCC,EAAmBlvD,IACvB6sB,EAAa7sB,GACb1X,OAAO2d,iBAAiB,YAAa4mB,GACrCvkC,OAAO2d,iBAAiB,UAAWgpD,IAIrC,OAFAt3C,yBAAYs3C,GAEL,CAACrjC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,aACP8B,QAAS,gBACTnL,IAAKkuC,EACLz+D,MAAOoxC,4BAAgB,CAAEnxC,WAAYy6B,mBAAOtF,KAC5Cmc,YAAalX,EAAO,KAAOA,EAAO,GAAKkB,GAAUmiC,EAAgBniC,KAChE,CACD5B,GACAE,GACAc,gCAAoB,MAAO,CACzBf,MAAO,qBACP55B,MAAOoxC,4BAAgB,CACrBlyC,IAAKw7B,mBAAO4jC,GACZr/D,KAAMy7B,mBAAOujC,MAEdlkC,GAAY,IACd,Q,UClGL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMJ,GAAa,CAAEC,MAAO,kBACtBC,GAAa,CAAC,SAMQG,oCAAiB,CAC3CC,OAAQ,gBACRl3B,MAAO,CACP9M,MAAO,CACLyC,KAAM7E,OACN06C,UAAU,IAGZtT,MAAO,CAAC,eACRf,MAAMC,GAAS,KAAEe,IAInB,MAAMn4B,EAAQo3B,EAMR6kC,EAAM5iD,sBAAS,KACnB,IAAI6iD,EAAO,GAGX,OAFuBA,EAAnBl8D,EAAM9M,MAAM8pD,EAAI,EAAUj+C,IAAUiB,EAAM9M,OAAOipE,eAAet6C,cACxD9iB,IAAUiB,EAAM9M,OAAOm8B,cAAcxN,cAC1Cq6C,EAAKzrD,QAAQ,IAAK,MAGrB4lC,EAAe5qC,IACnB,MAAMvY,EAASuY,EAAEoN,OAA4B3lB,MACzCA,EAAMrC,QAAU,GAAGsnC,EAAK,cAAep5B,IAAU7L,GAAOkpE,UAG9D,MAAO,CAAC/kC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,QAAS,CAC3Bf,MAAO,gBACP3jC,MAAOykC,mBAAOskC,GACd5f,QAAS/kB,EAAO,KAAOA,EAAO,GAAKkB,GAAU6d,EAAY7d,KACxD,KAAM,GAAI1B,U,UC1CjB,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMF,GAAa,CAAEC,MAAO,gBACtBC,GAAa,CAAED,MAAO,0BACtBE,GAAa,CAAEF,MAAO,mBACtBG,GAAa,CAAEH,MAAO,qBACtBmC,GAAa,CAAEnC,MAAO,kBACtBoC,GAAa,CAAEpC,MAAO,mBACtBqC,GAAa,CAAErC,MAAO,qBACtBsC,GAAa,CAAEtC,MAAO,gBACtBuC,GAAa,CAAEvC,MAAO,kBACtBwC,GAAc,CAAC,WACfC,GAAc,CAAEzC,MAAO,2BACvB0C,GAAc,CAAC,WACfE,GAAc,CAAE5C,MAAO,kBACvB6rB,GAAc,CAAC,WACfC,GAAc,CAClBnvD,IAAK,EACLqjC,MAAO,uBAEH+rB,GAAc,CAAE/rB,MAAO,kBACvBgsB,GAAc,CAAC,WAgBO5rB,oCAAiB,CAC3CC,OAAQ,QACRl3B,MAAO,CACPg5D,WAAY,CACVrjE,KAAMw2B,OACN8L,QAAS,YAGXC,MAAO,CAAC,qBACRf,MAAMC,GAAS,KAAEe,IAInB,MAAMn4B,EAAQo3B,EAMRilC,EAAgB,gBAEhBC,EAAoB,CACxB,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,YAGRnjB,EAAW,CAACojB,EAAoBC,EAAkB3/C,KACtD,MAAM4/C,EAAc19D,IAAUw9D,GAAYH,QACpCM,EAAY39D,IAAUy9D,GAAUJ,QAEhCO,GAASD,EAAU3pE,EAAI0pE,EAAY1pE,GAAK8pB,EACxC+/C,GAASF,EAAUrC,EAAIoC,EAAYpC,GAAKx9C,EACxCggD,GAASH,EAAUzf,EAAIwf,EAAYxf,GAAKpgC,EACxCigD,EAAmB,GAEzB,IAAK,IAAInsE,EAAI,EAAGA,EAAIksB,EAAMlsB,IAAK,CAC7B,MAAMgiC,EAAgB5zB,IAAU,CAC9BhM,EAAG0pE,EAAY1pE,EAAI4pE,EAAQhsE,EAC3B0pE,EAAGoC,EAAYpC,EAAIuC,EAAQjsE,EAC3BssD,EAAGwf,EAAYxf,EAAI4f,EAAQlsE,IAC1Bkf,cACHitD,EAAiB3rE,KAAKwhC,GAExB,OAAOmqC,GAGHC,EAAkB,KACtB,MAAMC,EAAe,GACrB,IAAK,MAAM1kE,KAASgkE,EAClBU,EAAa7rE,KAAKgoD,EAAS7gD,EAAM,GAAIA,EAAM,GAAI,IAEjD,OAAO0kE,GAGHjiB,EAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAClHkiB,EAAiB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAErHpC,EAAMrtC,kBAAK,GACX0vC,EAAe1vC,iBAAc,IAE7Bl1B,EAAQ+gB,sBAAS,CACrBvmB,MACE,OAAOiM,IAAUiB,EAAMg5D,YAAYoD,SAErC1f,IAAI/sC,GACF,MAAMwtD,EAAa,QAAQ,CAACxtD,EAAK5c,EAAG4c,EAAK0qD,EAAG1qD,EAAKstC,EAAGttC,EAAKqtC,GAAGlhD,KAAK,QACjEq8B,EAAK,oBAAqBglC,MAIxBH,EAAeD,IAEfK,EAAe/jD,sBAAS,IACrB,QAAQ,CAAC/gB,EAAMpF,MAAMH,EAAGuF,EAAMpF,MAAMmnE,EAAG/hE,EAAMpF,MAAM+pD,EAAG3kD,EAAMpF,MAAM8pD,GAAGlhD,KAAK,SAG7EuhE,EAAqBC,IACzBzC,EAAI3nE,MAAQ6L,IAAUu+D,GAAarC,QAAQjjD,EAC3CmgB,EAAK,oBAAqBmlC,IAItBC,EAA0B7oD,uBAAS,WACvC,MAAMwa,EAASnwB,IAAUzG,EAAMpF,OAAO2c,cACtC,IAAKqtD,EAAahqE,MAAMsL,SAAS0wB,GAAS,CACxCguC,EAAahqE,MAAQ,CAACg8B,KAAWguC,EAAahqE,OAE9C,MAAMsqE,EAAY,GACdN,EAAahqE,MAAMrC,OAAS2sE,IAC9BN,EAAahqE,MAAQgqE,EAAahqE,MAAMe,MAAM,EAAGupE,OAGpD,IAAK,CAAE5oD,UAAU,IAEpBuO,uBAAU,KACR,MAAMs6C,EAAoB33D,aAAaC,QAAQs2D,GAC3CoB,IAAmBP,EAAahqE,MAAQgM,KAAKG,MAAMo+D,MAGzDhhC,mBAAMygC,EAAc,KAClB,MAAMO,EAAoBv+D,KAAKC,UAAU+9D,EAAahqE,OACtD4S,aAAa43D,QAAQrB,EAAeoB,KAGtC,MAAME,EAAezqE,IACf,MAAOA,GACT2nE,EAAI3nE,MAAQA,EAAM8kB,EAClB1f,EAAMpF,MAAQ6L,IAAU7L,GAAOkpE,UAG/BvB,EAAI3nE,MAAQ6L,IAAU7L,GAAO+nE,QAAQjjD,EACrC1f,EAAMpF,MAAQA,GAGhBqqE,KAKIK,EAAiB,KACrB,MAAMC,EAAwB,eAAgB9pE,OAE1C8pE,EAAuBC,IACtBC,KAIDD,EAAoB,KACxB5jD,GAAA,KAAQq2C,QAAQ,iBAGhB,MAAMyN,EAAa,IAAKjqE,OAAekqE,WACvCD,EAAW9jC,OAAOluB,KAAMta,IACtB,MAAMwsE,EAASn/D,IAAUrN,EAAOysE,SAChCtD,EAAI3nE,MAAQgrE,EAAOjD,QAAQjjD,EAC3B1f,EAAMpF,MAAQgrE,EAAO9B,QAErBmB,MACCvjD,MAAM,KACPE,GAAA,KAAQq2C,QAAQ,aAKdwN,EAAmB,KACvB,MAAMK,EAAgCtjE,SAASwc,cAAc,WAC7D,IAAK8mD,EAAW,OAEhB,MAAMC,EAAUvjE,SAASC,cAAc,OACvCsjE,EAAQphE,MAAMqhE,QAAU,sFACxBxjE,SAASyQ,KAAKI,YAAY0yD,GAE1B,MAAME,EAAgBzjE,SAASC,cAAc,OAC7CwjE,EAActhE,MAAMqhE,QAAU,iHAC9BD,EAAQ1yD,YAAY4yD,GAEpB,MAAM,KAAEriE,EAAF,IAAQC,EAAR,MAAazB,EAAb,OAAoBC,GAAWyjE,EAAUngC,wBAEzCriC,EAAU7F,KACVA,EAAK2vB,SAA0C,kBAA/B3vB,EAAK2vB,QAAQ7D,kBAC7B9rB,EAAKyoE,YAAazoE,EAAKyoE,UAAUC,SAAS,YAIhDC,gBAASN,EAAW,CAAExiE,SAAQyyB,aAAc,GAAI3zB,QAAOC,SAAQmhC,YAAaphC,EAAOqhC,aAAcphC,EAAQgkE,WAAY,IAAK3yD,KAAK0vB,IAC7HA,EAAUz+B,MAAMqhE,QAAU,4BAA4BniE,cAAgBD,0BACtEmiE,EAAQphE,MAAMwK,OAAS,UACvB42D,EAAQ1yD,YAAY+vB,GAEpB,MAAM1gC,EAAM0gC,EAAUzgC,WAAW,MACjC,IAAKD,EAAK,OAEV,IAAIoiE,EAAe,GACnB,MAAMv4B,EAAmBp5B,IACvB,MAAM8e,EAAI9e,EAAE8e,EACNC,EAAI/e,EAAE+e,EAEN4V,EAAS7V,EAAIruB,EACbmkC,EAAS7V,EAAIruB,GAEZpJ,EAAGsnE,EAAGpd,EAAGD,GAAKhiD,EAAIW,aAAaykC,EAAQC,EAAQ,EAAG,GAAGhwC,KAC5D+sE,EAAe,QAAQrqE,MAAMsnE,MAAMpd,OAAOD,EAAI,KAAK4hB,QAAQ,MAE3DL,EAActhE,MAAMf,KAAOquB,EAAI,GAAK,KACpCg0C,EAActhE,MAAMd,IAAMquB,EAAI,GAAK,KACnC+zC,EAActhE,MAAMM,gBAAkB6/D,GAElCyB,EAAmB,KACvBzB,EAAe,GACfmB,EAActhE,MAAMf,KAAO,SAC3BqiE,EAActhE,MAAMd,IAAM,SAC1BoiE,EAActhE,MAAMM,gBAAkB,IAElCuhE,EAAmBrzD,IACvB,GAAI2xD,GAA6B,IAAb3xD,EAAEkyC,OAAc,CAClC,MAAMugB,EAASn/D,IAAUq+D,GACzBvC,EAAI3nE,MAAQgrE,EAAOjD,QAAQjjD,EAC3B1f,EAAMpF,MAAQgrE,EAAO9B,QAErBmB,IAEFziE,SAASyQ,KAAKM,YAAYwyD,GAE1B3iC,EAAUrY,oBAAoB,YAAawhB,GAC3CnJ,EAAUrY,oBAAoB,aAAcw7C,GAC5C9qE,OAAOsvB,oBAAoB,YAAay7C,IAG1CpjC,EAAUhqB,iBAAiB,YAAamzB,GACxCnJ,EAAUhqB,iBAAiB,aAAcmtD,GACzC9qE,OAAO2d,iBAAiB,YAAaotD,KACpC9kD,MAAM,KACPE,GAAA,KAAQsU,MAAM,aACd1zB,SAASyQ,KAAKM,YAAYwyD,MAI9B,MAAO,CAAChnC,EAAUC,KAChB,MAAMynC,EAAwB3kC,8BAAkB,cAEhD,OAAQ7C,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrC4D,yBAAaskC,GAAY,CACvB9rE,MAAOykC,mBAAOr/B,GACduiE,IAAKA,EAAI3nE,MACT+rE,cAAe3nC,EAAO,KAAOA,EAAO,GAAKpkC,GAASyqE,EAAYzqE,KAC7D,KAAM,EAAG,CAAC,QAAS,UAExB0kC,gCAAoB,MAAOb,GAAY,CACrCa,gCAAoB,MAAOZ,GAAY,CACrCY,gCAAoB,MAAO,CACzBf,MAAO,uBACP55B,MAAOoxC,4BAAgB,CAAEnxC,WAAYy6B,mBAAOylC,MAC3C,KAAM,GACT1iC,yBAAakgC,MAEfhjC,gCAAoB,MAAOoB,GAAY,CACrCpB,gCAAoB,MAAOqB,GAAY,CACrCyB,yBAAawkC,GAAK,CAChBhsE,MAAOykC,mBAAOr/B,GACduiE,IAAKA,EAAI3nE,MACT+rE,cAAe3nC,EAAO,KAAOA,EAAO,GAAKpkC,GAASyqE,EAAYzqE,KAC7D,KAAM,EAAG,CAAC,QAAS,UAExB0kC,gCAAoB,MAAOsB,GAAY,CACrCwB,yBAAaykC,GAAO,CAClBjsE,MAAOykC,mBAAOr/B,GACd2mE,cAAe3nC,EAAO,KAAOA,EAAO,GAAKpkC,GAASyqE,EAAYzqE,KAC7D,KAAM,EAAG,CAAC,gBAInB0kC,gCAAoB,MAAOuB,GAAY,CACrCuB,yBAAa0kC,GAAe,CAC1BvoC,MAAO,QACP3jC,MAAOykC,mBAAOr/B,GACd2mE,cAAe3nC,EAAO,KAAOA,EAAO,GAAKpkC,GAASyqE,EAAYzqE,KAC7D,KAAM,EAAG,CAAC,UACb0kC,gCAAoB,MAAO,CACzBf,MAAO,QACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBolC,MACpD,CACDljC,yBAAaqkC,KAEfnnC,gCAAoB,MAAO,CACzBf,MAAO,cACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiB6kC,EAAkB,eACtE,CACD3iC,yBAAakgC,QAGjBhjC,gCAAoB,MAAOwB,GAAY,EACpC7B,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAYqjB,EAAcxoD,GACrEqlC,gCAAoB,MAAO,CAChCf,MAAO,uBACPrjC,IAAKjB,EACL0K,MAAOoxC,4BAAgB,CAAEnxC,WAAY3K,IACrCgmC,QAAUC,GAAiB6kC,EAAkB9qE,IAC5C,KAAM,GAAI8mC,KACX,OAENzB,gCAAoB,MAAO0B,GAAa,EACrC/B,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOqlC,GAAe,CAAC1mD,EAAKjW,KACtFk3B,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,sBACPrjC,IAAK6M,GACJ,EACAk3B,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYphB,EAAM/jB,IAChEglC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,wBACPrjC,IAAKjB,EACL0K,MAAOoxC,4BAAgB,CAAEnxC,WAAY3K,IACrCgmC,QAAUC,GAAiB6kC,EAAkB9qE,IAC5C,KAAM,GAAIgnC,MACX,UAEJ,QAEN3B,gCAAoB,MAAO6B,GAAa,EACrClC,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAYulC,EAAiB1qE,GACxEqlC,gCAAoB,MAAO,CAChCpkC,IAAKjB,EACLskC,MAAO,uBACP55B,MAAOoxC,4BAAgB,CAAEnxC,WAAY3K,IACrCgmC,QAAUC,GAAiB6kC,EAAkB9qE,IAC5C,KAAM,GAAImwD,KACX,OAELwa,EAAahqE,MAAMrC,QACf0mC,yBAAcC,gCAAoB,MAAOmrB,GAAa,UACvD9W,gCAAoB,IAAI,GAC5BjU,gCAAoB,MAAOgrB,GAAa,EACrCrrB,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYwlC,EAAahqE,MAAQX,IAC/EglC,yBAAcC,gCAAoB,MAAO,CAC/ChkC,IAAKjB,EACLskC,MAAO,6BACP0B,QAAUC,GAAiB6kC,EAAkB9qE,IAC5C,CACDqlC,gCAAoB,MAAO,CACzBf,MAAO,+BACP55B,MAAOoxC,4BAAgB,CAAEnxC,WAAY3K,KACpC,KAAM,IACR,EAAGswD,MACJ,c,UC5WV,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMhqB,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,mBACtBC,GAAa,CACjBtjC,IAAK,EACLqjC,MAAO,OAEHE,GAA2B8B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IACzH+5B,GAAa,CACjBH,MAAO,iBACP55B,MAAO,CAAC,KAAO,MAEX+7B,GAAa,CAAEnC,MAAO,OACtBoC,GAA2BJ,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IACzHi8B,GAAa,CAAErC,MAAO,OACtBsC,GAA2BN,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IACzHm8B,GAAa,CAAEvC,MAAO,OACtBwC,GAA4BR,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IAiBpGg6B,oCAAiB,CAC3CC,OAAQ,iBACRl3B,MAAO,CACPq/D,MAAO,CACL1pE,KAAMsgD,QACNhe,SAAS,IAGXd,MAAMC,GAER,MAAM64B,EAAe,QAAOC,OAItB5sD,EAAc3F,KACd,cAAE4F,GAAkB4R,eAAYvT,KAEhCnE,EAAU+vB,mBACV8xC,EAAa9xC,kBAAI,GAEvBiP,mBAAMl5B,EAAe,KACdA,EAAcrQ,QACnBuK,EAAQvK,MAAQ,YAAaqQ,EAAcrQ,MAAQqQ,EAAcrQ,MAAMuK,aAAU0zB,EACjFmuC,EAAWpsE,QAAUuK,EAAQvK,QAC5B,CAAEqmE,MAAM,EAAMxd,WAAW,IAE5B,MAAM,mBAAEtnC,GAAuBW,KAEzBmqD,EAAiBC,IACrB,IAAKj8D,EAAcrQ,MAAO,OAC1B,MAAM8M,EAAQ,CAAEvC,QAAS,IAAKA,EAAQvK,SAAUssE,IAChDl8D,EAAYnC,cAAc,CAAEnF,GAAIuH,EAAcrQ,MAAM8I,GAAIgE,UACxDyU,KAGIgrD,EAAiBC,IACrB,GAAKn8D,EAAcrQ,MAAnB,CACA,GAAIwsE,EAAS,CACX,MAAMC,EAA8B,CAAEjlE,MAAO,EAAGpC,MAAO,OAAQ2E,MAAO,SACtEqG,EAAYnC,cAAc,CAAEnF,GAAIuH,EAAcrQ,MAAM8I,GAAIgE,MAAO,CAAEvC,QAASkiE,UAG1Er8D,EAAYjC,mBAAmB,CAAErF,GAAIuH,EAAcrQ,MAAM8I,GAAIsF,SAAU,YAEzEmT,MAGF,MAAO,CAAC4iB,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CACzDQ,EAAQioC,MAUNxzB,gCAAoB,IAAI,IATvBtU,yBAAcC,gCAAoB,MAAOV,GAAY,CACpDC,GACAa,gCAAoB,MAAOZ,GAAY,CACrC0D,yBAAa/C,mBAAO,SAAS,CAC3B+nC,QAASJ,EAAWpsE,MACpB0lC,SAAUtB,EAAO,KAAOA,EAAO,GAAKooC,GAAWD,EAAcC,KAC5D,KAAM,EAAG,CAAC,iBAIpBJ,EAAWpsE,OAASuK,EAAQvK,OACxBqkC,yBAAcC,gCAAoBC,cAAW,CAAEjkC,IAAK,GAAK,CACxDokC,gCAAoB,MAAOoB,GAAY,CACrCC,GACAyB,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACf/J,MAAOuK,EAAQvK,MAAM+J,MACrB27B,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAASqsE,EAAc,CAAEtiE,MAAO/J,MACnE,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,SAAW,CACrD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,IAELL,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,UAAY,CACtD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,YAETnD,gCAAoB,MAAOsB,GAAY,CACrCC,GACAuB,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAYv7D,EAAQvK,MAAMoF,MAC1B,sBAAuBg/B,EAAO,KAAOA,EAAO,GAAKpkC,GAASqsE,EAAc,CAAEjnE,MAAOpF,MAChF,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamlC,GAAa,CACxBvnE,MAAOmF,EAAQvK,MAAMoF,OAAS,OAC9B2E,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEf89B,EAAG,MAGPnD,gCAAoB,MAAOwB,GAAY,CACrCC,GACAqB,yBAAa/C,mBAAO,SAAc,CAChCzkC,MAAOuK,EAAQvK,MAAMwH,MACrBk+B,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAASqsE,EAAc,CAAE7kE,MAAOxH,KACpE+J,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,aAEd,KACH4uC,gCAAoB,IAAI,S,UC/IhC,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMhT,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,kBACtBC,GAAa,CAAED,MAAO,OACtBE,GAA2B8B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IACzH+5B,GAAa,CACjBH,MAAO,iBACP55B,MAAO,CAAC,KAAO,MAEX+7B,GAAa,CAAEnC,MAAO,OACtBoC,GAA2BJ,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IACzHi8B,GAAa,CAAErC,MAAO,OACtBsC,GAA2BN,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IACzHm8B,GAAa,CAAEvC,MAAO,OACtBwC,GAA4BR,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IAC1Hq8B,GAAc,CAAEzC,MAAO,OACvB0C,GAA4BV,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IAiBpGg6B,oCAAiB,CAC3CC,OAAQ,gBACRC,MAAMC,GAER,MAAM9zB,EAAc3F,KACd,cAAE4F,GAAkB4R,eAAYvT,KAEhC0vB,EAAS9D,mBACTsyC,EAAYtyC,kBAAI,GAEtBiP,mBAAMl5B,EAAe,KACdA,EAAcrQ,QACnBo+B,EAAOp+B,MAAQ,WAAYqQ,EAAcrQ,MAAQqQ,EAAcrQ,MAAMo+B,YAASH,EAC9E2uC,EAAU5sE,QAAUo+B,EAAOp+B,QAC1B,CAAEqmE,MAAM,EAAMxd,WAAW,IAE5B,MAAM,mBAAEtnC,GAAuBW,KAEzB2qD,EAAgBC,IACpB,IAAKz8D,EAAcrQ,QAAUo+B,EAAOp+B,MAAO,OAC3C,MAAM+sE,EAAU,IAAK3uC,EAAOp+B,SAAU8sE,GACtC18D,EAAYnC,cAAc,CAAEnF,GAAIuH,EAAcrQ,MAAM8I,GAAIgE,MAAO,CAAEsxB,OAAQ2uC,KACzExrD,KAGIyrD,EAAgBR,IACpB,GAAKn8D,EAAcrQ,MAAnB,CACA,GAAIwsE,EAAS,CACX,MAAMO,EAA4B,CAAEjoD,EAAG,EAAGuZ,EAAG,EAAGG,KAAM,EAAGp5B,MAAO,QAChEgL,EAAYnC,cAAc,CAAEnF,GAAIuH,EAAcrQ,MAAM8I,GAAIgE,MAAO,CAAEsxB,OAAQ2uC,UAGzE38D,EAAYjC,mBAAmB,CAAErF,GAAIuH,EAAcrQ,MAAM8I,GAAIsF,SAAU,WAEzEmT,MAGF,MAAO,CAAC4iB,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrCC,GACAa,gCAAoB,MAAOZ,GAAY,CACrC0D,yBAAa/C,mBAAO,SAAS,CAC3B+nC,QAASI,EAAU5sE,MACnB0lC,SAAUtB,EAAO,KAAOA,EAAO,GAAKooC,GAAWQ,EAAaR,KAC3D,KAAM,EAAG,CAAC,gBAGhBI,EAAU5sE,OAASo+B,EAAOp+B,OACtBqkC,yBAAcC,gCAAoBC,cAAW,CAAEjkC,IAAK,GAAK,CACxDokC,gCAAoB,MAAOoB,GAAY,CACrCC,GACAyB,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,SACPp2B,KAAM,GACN8M,IAAK,GACLsP,KAAM,EACN3pB,MAAOo+B,EAAOp+B,MAAM8kB,EACpB4gB,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAAS6sE,EAAa,CAAE/nD,EAAG9kB,MAC9D,KAAM,EAAG,CAAC,YAEf0kC,gCAAoB,MAAOsB,GAAY,CACrCC,GACAuB,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,SACPp2B,KAAM,GACN8M,IAAK,GACLsP,KAAM,EACN3pB,MAAOo+B,EAAOp+B,MAAMq+B,EACpBqH,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAAS6sE,EAAa,CAAExuC,EAAGr+B,MAC9D,KAAM,EAAG,CAAC,YAEf0kC,gCAAoB,MAAOwB,GAAY,CACrCC,GACAqB,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,SACPp2B,IAAK,EACL8M,IAAK,GACLsP,KAAM,EACN3pB,MAAOo+B,EAAOp+B,MAAMw+B,KACpBkH,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAAS6sE,EAAa,CAAEruC,KAAMx+B,MACjE,KAAM,EAAG,CAAC,YAEf0kC,gCAAoB,MAAO0B,GAAa,CACtCC,GACAmB,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAY1nC,EAAOp+B,MAAMoF,MACzB,sBAAuBg/B,EAAO,KAAOA,EAAO,GAAKpkC,GAAS6sE,EAAa,CAAEznE,MAAOpF,MAC/E,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamlC,GAAa,CACxBvnE,MAAOg5B,EAAOp+B,MAAMoF,MACpB2E,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEf89B,EAAG,OAGN,KACH8Q,gCAAoB,IAAI,S,UCnIhC,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMjV,GAAa,CAAEC,MAAO,oBAKAI,oCAAiB,CAC3CC,OAAQ,kBACRl3B,MAAO,CACP1H,MAAO,CACL3C,KAAMw2B,OACNqf,UAAU,IAGZrU,MAAMC,GAIR,MAAO,CAACC,EAAUC,KACRC,yBAAc0U,yBAAatU,mBAAO,SAAS,CAAEd,MAAO,kBAAoB,CAC9EoB,QAAS2C,qBAAS,IAAM,CACtBnC,wBAAYpB,EAAKqB,OAAQ,WACzBd,gCAAoB,MAAOhB,GAAY,CACrCgB,gCAAoB,MAAO,CACzBf,MAAO,2BACP55B,MAAOoxC,4BAAgB,CAAE9wC,gBAAiB65B,EAAQ9+B,SACjD,KAAM,OAGbyiC,EAAG,Q,UC1BP,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCJa9D,gCAAiB,CAC3CC,OAAQ,iBACRl3B,MAAO,CACP0/D,QAAS,CACP/pE,KAAMsgD,QACNhe,SAAS,IAGXd,MAAMC,GAIR,MAAO,CAACC,EAAUC,KACRC,yBAAcC,gCAAoB,SAAU,CAClDX,MAAO6X,4BAAgB,CAAC,kBAAmB,CAAE,QAAWtX,EAAQsoC,YAC/D,CACDjnC,wBAAYpB,EAAKqB,OAAQ,YACxB,O,UCfL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,U,UCPR7B,MAAM,yB,iDAAXW,gCAEM,MAFN,GAEM,CADJiB,wBAAapB,SAAA,kBAAAlG,GAAA,K,UCDjB,MAAM,GAAS,GAKT,GAA2B,KAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAE1E,UCLf,MAAM0H,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,oBACtBC,GAAa,CAAED,MAAO,gBACtBE,GAAa,CAAC,WACdC,GAAa,CAAEH,MAAO,gBACtBmC,GAAa,CAAEnC,MAAO,QACtBoC,GAAa,CAAEpC,MAAO,OACtBqC,GAAa,CAAErC,MAAO,aACtBsC,GAAa,CAAC,WACdC,GAA2BP,GAAa,IAAmBjB,gCAAoB,OAAQ,KAAM,MAAO,IACpGyB,GAAc,CAClBD,IAEIE,GAA4BT,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,MAAO,IACvHs8B,GAAc,CAAE1C,MAAO,aACvB4C,GAAc,CAAC,WACfipB,GAA4B7pB,GAAa,IAAmBjB,gCAAoB,OAAQ,KAAM,MAAO,IACrG+qB,GAAc,CAClBD,IAEIE,GAAc,CAAE/rB,MAAO,OACvBgsB,GAA4BhqB,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,QAAS,IACzH6lD,GAAc,CAAEjsB,MAAO,OACvBksB,GAA4BlqB,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,QAAS,IACzH+lD,GAAc,CAAEnsB,MAAO,OACvBosB,GAA4BpqB,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,QAAS,IACzHimD,GAAc,CAAErsB,MAAO,OACvBspC,GAA4BtnC,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IAC1HmjE,GAAc,CAAEvpC,MAAO,OACvBwpC,GAA4BxnC,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,UAAW,IA8BrGg6B,oCAAiB,CAC3CC,OAAQ,iBACRC,MAAMC,GAER,MAAQkpC,MAAOC,EAAYC,OAAQC,GAA7B,SACEC,SAAUC,EAAgBzQ,OAAQD,GAApC,QACA2Q,EAAa,QAAMN,MACnBO,EAAc,QAAOP,MAIrBQ,EAAe,CACnB,CACE1sE,MAAO,MACP6I,MAAO,CACLuzB,SAAU,OACVkrB,WAAY,KAEdzL,IAAK,CACH,CAAEt2B,QAAS,SACX,CAAEA,QAAS,QACX,CAAEA,QAAS,WAAYzmB,MAAO,QAC9B,CAAEymB,QAAS,QAASzmB,MAAO,YAG/B,CACEkB,MAAO,MACP6I,MAAO,CACLuzB,SAAU,OACVkrB,WAAY,KAEdzL,IAAK,CACH,CAAEt2B,QAAS,SACX,CAAEA,QAAS,QACX,CAAEA,QAAS,WAAYzmB,MAAO,QAC9B,CAAEymB,QAAS,QAASzmB,MAAO,YAG/B,CACEkB,MAAO,KACP6I,MAAO,CACLuzB,SAAU,QAEZyf,IAAK,CACH,CAAEt2B,QAAS,SACX,CAAEA,QAAS,WAAYzmB,MAAO,UAGlC,CACEkB,MAAO,QACP6I,MAAO,CACLuzB,SAAU,QAEZyf,IAAK,CACH,CAAEt2B,QAAS,SACX,CAAEA,QAAS,WAAYzmB,MAAO,UAGlC,CACEkB,MAAO,OACP6I,MAAO,CACLuzB,SAAU,OACVmrB,UAAW,UAEb1L,IAAK,CACH,CAAEt2B,QAAS,SACX,CAAEA,QAAS,WAAYzmB,MAAO,QAC9B,CAAEymB,QAAS,QAGf,CACEvlB,MAAO,OACP6I,MAAO,CACLuzB,SAAU,OACVirB,eAAgB,aAElBxL,IAAK,CACH,CAAEt2B,QAAS,SACX,CAAEA,QAAS,WAAYzmB,MAAO,QAC9B,CAAEymB,QAAS,gBAKXtR,EAAYzG,IACZ0B,EAAc3F,KACd,cAAE4F,EAAF,gBAAiBzB,EAAjB,cAAkCgB,EAAlC,eAAiDJ,EAAjD,kBAAiES,GAAsBgS,eAAY9M,IAEnG,mBAAEoM,GAAuBW,MACzB,oBAAEkkD,GAAwByH,KAE1B5/D,EAAiBnB,IACrBsD,EAAYnC,cAAc,CAAEnF,GAAI8F,EAAgB5O,MAAO8M,UACvDyU,KAGIusD,EAAyBxzC,kBAAI,GAC7ByzC,EAA0BzzC,kBAAI,GAE9B0zC,EAA4B1zC,iBAAI,CAAC,OAAQ,SAAU,WACnD2zC,EAA6B3zC,iBAAI,CAAC,UAAW,cAAe,cAAe,cAAe,cAAe,gBAEzGlxB,EAAOkxB,iBAAY,QACnB7wB,EAAa6wB,mBACbrwB,EAAYqwB,mBACZirB,EAAajrB,mBACb+F,EAAiB/F,mBAEvBiP,mBAAMl5B,EAAe,KACdA,EAAcrQ,OAAsC,SAA7BqQ,EAAcrQ,MAAMyC,OAEhD2G,EAAKpJ,MAAQqQ,EAAcrQ,MAAMoJ,MAAQ,OACzCK,EAAWzJ,MAAQqQ,EAAcrQ,MAAMyJ,YAAc,IACrDQ,EAAUjK,MAAQqQ,EAAcrQ,MAAMiK,WAAa,EACnDs7C,EAAWvlD,MAAQqQ,EAAcrQ,MAAMulD,YAAc,EACrDllB,EAAergC,WAA+Ci+B,IAAvC5tB,EAAcrQ,MAAMqgC,eAA+B,EAAIhwB,EAAcrQ,MAAMqgC,iBACjG,CAAEgmC,MAAM,EAAMxd,WAAW,IAE5B,MAAMqlB,EAAkB,CACtB,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAChE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAChE,OAAQ,OAAQ,OAAQ,QAAS,QAAS,SAEtCC,EAAoB,CAAC,GAAK,EAAK,KAAM,IAAK,IAAK,IAAK,IAAK,EAAK,IAAK,GACnEC,EAAmB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAC5CC,EAAoB,CAAC,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,KACpDC,EAAwB,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAG3DC,EAAoBvuE,IACxBiO,EAAc,CAAExE,WAAYzJ,KAIxBwuE,EAAwBxuE,IAC5BiO,EAAc,CAAEoyB,eAAgBrgC,KAI5ByuE,EAAmBzuE,IACvBiO,EAAc,CAAEhE,UAAWjK,KAIvB0uE,EAAoB1uE,IACxBiO,EAAc,CAAEs3C,WAAYvlD,KAIxB2uE,EAAc3uE,IAClBiO,EAAc,CAAE7E,KAAMpJ,KAIlB4uE,EAAsB,CAACnoD,EAAiBzmB,KAC5CihD,GAAQhc,KAAK+b,GAAcmD,kBAAmB,CAAEhsC,OAAQ,CAAEsO,UAASzmB,YAI/D6uE,EAA4B12D,IAChC8oC,GAAQhc,KAAK+b,GAAcmD,kBAAmB,CAAEhsC,YAI5CjS,EAAOo0B,iBAAI,IACXw0C,EAAqBx0C,kBAAI,GAE/BiP,mBAAM35B,EAAe,IAAMk/D,EAAmB9uE,OAAQ,GAEtD,MAAM+uE,EAAkB,KACtB7oE,EAAKlG,MAAQ4P,EAAc5P,MAAMkG,KACjC4oE,EAAmB9uE,OAAQ,GAEvBgvE,EAAc9oE,IAClB,GAAIA,EAAM,CACR,MAAM40D,EAAa,8EACnB,IAAKA,EAAW9oC,KAAK9rB,GAAO,OAAO8gB,GAAA,KAAQsU,MAAM,eAEnDszC,EAAoB,OAAQ1oE,GAC5B4oE,EAAmB9uE,OAAQ,GAG7B,MAAO,CAACmkC,EAAUC,KAChB,MAAMk/B,EAA0Bp8B,8BAAkB,gBAC5C+nC,EAAyB/nC,8BAAkB,eAC3CgoC,EAAsBhoC,8BAAkB,YACxCioC,EAA2BjoC,8BAAkB,iBAC7CkoC,EAA0BloC,8BAAkB,gBAC5CmoC,EAA4BnoC,8BAAkB,kBAC9CooC,EAA+BpoC,8BAAkB,qBACjDqoC,EAA+BroC,8BAAkB,qBACjDsoC,EAAsBtoC,8BAAkB,YACxCuoC,EAAuBvoC,8BAAkB,aACzCwoC,EAAwBxoC,8BAAkB,cAC1CyoC,EAA6BzoC,8BAAkB,mBAC/C0oC,EAAyB1oC,8BAAkB,eAC3C2oC,EAA+B3oC,8BAAkB,qBACjD4oC,GAAiC5oC,8BAAkB,uBACnD6oC,GAAgC7oC,8BAAkB,sBAClD8oC,GAAsB9oC,8BAAkB,YACxCu8B,GAAsBv8B,8BAAkB,YACxC+oC,GAA6B/oC,8BAAkB,mBAC/CgpC,GAA4BhpC,8BAAkB,kBAC9CipC,GAA6BjpC,8BAAkB,mBAC/CkpC,GAA2BlpC,8BAAkB,iBAC7CmpC,GAA6CnpC,8BAAkB,mCAC/DopC,GAA2BppC,8BAAkB,iBAEnD,OAAQ7C,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,EACpCS,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAYopC,EAAejlE,GACtE+7B,gCAAoB,MAAO,CAChCf,MAAO,oBACPrjC,IAAKqI,EAAKzH,MACV6I,MAAOoxC,4BAAgBxyC,EAAKoB,OAC5Bs7B,QAAUC,GAAiBupC,EAAyBlmE,EAAKo0C,MACxDpY,6BAAiBh8B,EAAKzH,OAAQ,GAAI2iC,KACnC,OAEN2D,yBAAa/C,mBAAO,UACpB+C,yBAAa/C,mBAAOipC,GAAa,CAC/B6C,QAAS,GACT5sC,MAAO,OACN,CACDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,cACP55B,MAAO,CAAC,KAAO,KACf/J,MAAOykC,mBAAO70B,GAAerK,SAC7BmgC,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAAS4uE,EAAoB,WAAY5uE,KAC5E,CACDwwE,WAAY9oC,qBAAS,IAAM,CACzBF,yBAAa87B,KAEfv+B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAOgpC,GAAiB,CAAEvsE,MAAO,QAAU,CACtD6jC,QAAS2C,qBAAS,IAAM,EACrBrD,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOj1B,GAAkBlH,IACnF+7B,yBAAc0U,yBAAatU,mBAAOs4B,GAAe,CACvDz8D,IAAKgI,EAAKtI,MACVA,MAAOsI,EAAKtI,OACX,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,OAAQ,CAC1B36B,MAAOoxC,4BAAgB,CAAEgK,WAAY78C,EAAKtI,SACzC2kC,6BAAiBr8B,EAAKpH,OAAQ,KAEnC2mC,EAAG,GACF,KAAM,CAAC,YACR,QAENA,EAAG,IAELL,yBAAa/C,mBAAOgpC,GAAiB,CAAEvsE,MAAO,QAAU,CACtD6jC,QAAS2C,qBAAS,IAAM,EACrBrD,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOtjC,GAAamH,IAC9E+7B,yBAAc0U,yBAAatU,mBAAOs4B,GAAe,CACvDz8D,IAAKgI,EAAKtI,MACVA,MAAOsI,EAAKtI,OACX,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,OAAQ,KAAMC,6BAAiBr8B,EAAKpH,OAAQ,KAElE2mC,EAAG,GACF,KAAM,CAAC,YACR,QAENA,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,UACPL,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACf/J,MAAOykC,mBAAO70B,GAAetK,SAC7BogC,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAAS4uE,EAAoB,WAAY5uE,KAC5E,CACDwwE,WAAY9oC,qBAAS,IAAM,CACzBF,yBAAaynC,KAEflqC,QAAS2C,qBAAS,IAAM,EACrBrD,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAY0pC,EAAkB5oE,GACzEkiC,yBAAa/C,mBAAOs4B,GAAe,CACxCz8D,IAAKgF,EACLtF,MAAOsF,GACN,CACDy/B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiBjD,6BAAiBr/B,GAAW,KAE/CuiC,EAAG,GACF,KAAM,CAAC,WACR,OAENA,EAAG,GACF,EAAG,CAAC,YAETA,EAAG,IAELL,yBAAa/C,mBAAOkpC,GAAc,CAAEhqC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAYrhC,mBAAO70B,GAAexK,MAClC,sBAAuBg/B,EAAO,KAAOA,EAAO,GAAKpkC,GAAS4uE,EAAoB,QAAS5uE,KACtF,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaipC,GAAiB,CAC5BrrE,MAAOq/B,mBAAO70B,GAAexK,MAC7B2E,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa0nC,KAEfrnC,EAAG,GACF,EAAG,CAAC,YAETA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,IAELL,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAYrhC,mBAAO70B,GAAevK,UAClC,sBAAuB++B,EAAO,KAAOA,EAAO,GAAKpkC,GAAS4uE,EAAoB,YAAa5uE,KAC1F,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaipC,GAAiB,CAC5BrrE,MAAOq/B,mBAAO70B,GAAevK,UAC7B0E,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa2nC,KAEftnC,EAAG,GACF,EAAG,CAAC,YAETA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,IAELL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,gBACP55B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBspC,EAAoB,kBACxE,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa87B,GACb17B,6BAAiB,OAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,gBACP55B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBspC,EAAoB,qBACxE,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa87B,GACb17B,6BAAiB,OAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,IAELL,yBAAakpC,GAAqB,CAAE/sC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,MACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,QAAS/nC,mBAAO70B,GAAetJ,KAC/B++B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBspC,EAAoB,UACxE,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa4nC,KAEfvnC,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,MACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,QAAS/nC,mBAAO70B,GAAerJ,GAC/B8+B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBspC,EAAoB,QACxE,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa6nC,KAEfxnC,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,QAAS/nC,mBAAO70B,GAAepJ,UAC/B6+B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBspC,EAAoB,eACxE,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa8nC,KAEfznC,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,QAAS/nC,mBAAO70B,GAAenJ,cAC/B4+B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBspC,EAAoB,mBACxE,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa+nC,KAEf1nC,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,IAELL,yBAAakpC,GAAqB,CAAE/sC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,MACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,QAAS/nC,mBAAO70B,GAAelJ,YAC/B2+B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBspC,EAAoB,iBAC1E,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,MACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,QAAS/nC,mBAAO70B,GAAejJ,UAC/B0+B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBspC,EAAoB,eAC1E,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,QAAS/nC,mBAAO70B,GAAehJ,KAC/By+B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBspC,EAAoB,UAC1E,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAagoC,KAEf3nC,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,MACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,QAAS/nC,mBAAO70B,GAAe7I,WAC/Bs+B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBspC,EAAoB,gBAC1E,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaioC,KAEf5nC,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,IAELL,yBAAakpC,GAAqB,CAAE/sC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBspC,EAAoB,WAC1E,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAakoC,KAEf7nC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,UAAW/nC,mBAAOx0B,GAClBo1B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBb,mBAAO2hC,EAAP3hC,KACtD,CACDM,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamoC,KAEf9nC,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BsD,UAAW,cACXt8B,QAAS,QACTw8B,QAAS6mC,EAAmB9uE,MAC5B,mBAAoBokC,EAAO,MAAQA,EAAO,IAAOkB,GAAkBwpC,EAAoB9uE,MAAQslC,IAC9F,CACD57B,QAASg+B,qBAAS,IAAM,CACtBhD,gCAAoB,MAAOZ,GAAY,CACrC0D,yBAAa/C,mBAAO,SAAQ,CAC1BzkC,MAAOkG,EAAKlG,MACZ,iBAAkBokC,EAAO,MAAQA,EAAO,IAAOkB,GAAkBp/B,EAAMlG,MAAQslC,GAC/Ei4B,YAAa,UACZ,KAAM,EAAG,CAAC,UACb74B,gCAAoB,MAAOoB,GAAY,CACrC0B,yBAAa/C,mBAAO,SAAS,CAC3Bl9B,KAAM,QACNi2D,UAAW/4B,mBAAO70B,GAAe1J,KACjCm/B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiB0pC,KACvDjlE,MAAO,CAAC,eAAe,QACtB,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,GACF,EAAG,CAAC,aACPL,yBAAa/C,mBAAO,SAAS,CAC3Bl9B,KAAM,QACN9E,KAAM,UACN4iC,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiB0pC,EAAW9oE,EAAKlG,SACtE,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,UAKX9C,QAAS2C,qBAAS,IAAM,CACtBF,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,UAAW/nC,mBAAO70B,GAAe1J,KACjCm/B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBypC,MACtD,CACDhqC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaooC,KAEf/nC,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,IAELL,yBAAa/C,mBAAO,UACpB+C,yBAAa/C,mBAAO4oC,GAAa,CAC/B1pC,MAAO,MACP,eAAgB,QAChB3jC,MAAOykC,mBAAO70B,GAAepK,MAC7BkgC,SAAUtB,EAAO,MAAQA,EAAO,IAAM7rB,GAAKq2D,EAAoB,QAASr2D,EAAEoN,OAAO3lB,SAChF,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO8oC,GAAc,CAChCvtE,MAAO,OACP+J,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaqoC,KAEfhoC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,MACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO8oC,GAAc,CAChCvtE,MAAO,SACP+J,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAasoC,MAEfjoC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO8oC,GAAc,CAChCvtE,MAAO,QACP+J,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAauoC,MAEfloC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,GACF,EAAG,CAAC,UACPnD,gCAAoB,MAAOqB,GAAY,CACrCyB,yBAAa/C,mBAAOkpC,GAAc,CAAE5jE,MAAO,CAAC,KAAO,OAAS,CAC1Dg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3BhiC,KAAMgiC,mBAAO70B,GAAe/I,WAAa,UAAY,UACrDkD,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBspC,EAAoB,gBAC1E,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAawoC,MAEfnoC,EAAG,GACF,EAAG,CAAC,WAETA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5Bh5B,QAAS,QACTw8B,QAAS6lC,EAAuB9tE,MAChC,mBAAoBokC,EAAO,MAAQA,EAAO,IAAOkB,GAAkBwoC,EAAwB9tE,MAAQslC,IAClG,CACD57B,QAASg+B,qBAAS,IAAM,CACtBhD,gCAAoB,MAAOsB,GAAY,EACpC3B,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYwpC,EAA0BhuE,MAAQ2I,IAC5F07B,yBAAcC,gCAAoB,KAAM,CAC9CX,MAAO,OACPrjC,IAAKqI,EACLoB,MAAOoxC,4BAAgB,CAAE6D,cAAer2C,IACxC08B,QAAUC,GAAiBspC,EAAoB,aAAcjmE,IAC5D,EACA07B,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAY,EAAIlkC,GAC3DokC,gCAAoB,KAAM,CAC/Bf,MAAO,YACPrjC,IAAKA,GACJ6lC,KACD,MACH,GAAIF,MACL,UAGRlB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAAEd,MAAO,eAAiB,CACrDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAai8B,MAEf57B,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,IAELzB,GACAoB,yBAAa/C,mBAAOkpC,GAAc,CAAE5jE,MAAO,CAAC,KAAO,OAAS,CAC1Dg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,MACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3BhiC,KAAMgiC,mBAAO70B,GAAe9I,YAAc,UAAY,UACtDiD,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBspC,EAAoB,iBAC1E,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAayoC,MAEfpoC,EAAG,GACF,EAAG,CAAC,WAETA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5Bh5B,QAAS,QACTw8B,QAAS8lC,EAAwB/tE,MACjC,mBAAoBokC,EAAO,MAAQA,EAAO,IAAOkB,GAAkByoC,EAAyB/tE,MAAQslC,IACnG,CACD57B,QAASg+B,qBAAS,IAAM,CACtBhD,gCAAoB,MAAO2B,GAAa,EACrChC,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYypC,EAA2BjuE,MAAQ2I,IAC7F07B,yBAAcC,gCAAoB,KAAM,CAC9CX,MAAO,OACPrjC,IAAKqI,EACLoB,MAAOoxC,4BAAgB,CAAE6D,cAAer2C,IACxC08B,QAAUC,GAAiBspC,EAAoB,cAAejmE,IAC7D,EACA07B,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAY,EAAIlkC,GAC3DokC,gCAAoB,KAAM,CAC/Bf,MAAO,YACPrjC,IAAKA,GACJmvD,KACD,MACH,GAAIlpB,MACL,UAGRxB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAAEd,MAAO,eAAiB,CACrDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAai8B,MAEf57B,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,MAGPL,yBAAa/C,mBAAOkpC,GAAc,CAAEhqC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBspC,EAAoB,SAAU,QACpF,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa0oC,MAEfroC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBspC,EAAoB,SAAU,QACpF,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa2oC,MAEftoC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,IAELL,yBAAa/C,mBAAO,UACpBC,gCAAoB,MAAOgrB,GAAa,CACtCC,GACAnoB,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACf/J,MAAOyJ,EAAWzJ,MAClB0lC,SAAUtB,EAAO,MAAQA,EAAO,IAAMpkC,GAASuuE,EAAiBvuE,KAC/D,CACDwwE,WAAY9oC,qBAAS,IAAM,CACzBF,yBAAa4oC,MAEfrrC,QAAS2C,qBAAS,IAAM,EACrBrD,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAY2pC,EAAoBxlE,GAC3E6+B,yBAAa/C,mBAAOs4B,GAAe,CACxCz8D,IAAKqI,EACL3I,MAAO2I,GACN,CACDo8B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiBjD,6BAAiBh8B,GAAQ,IAAK,KAEjDk/B,EAAG,GACF,KAAM,CAAC,WACR,OAENA,EAAG,GACF,EAAG,CAAC,YAETnD,gCAAoB,MAAOkrB,GAAa,CACtCC,GACAroB,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACf/J,MAAOqgC,EAAergC,MACtB0lC,SAAUtB,EAAO,MAAQA,EAAO,IAAMpkC,GAASwuE,EAAqBxuE,KACnE,CACDwwE,WAAY9oC,qBAAS,IAAM,CACzBF,yBAAa6oC,MAEftrC,QAAS2C,qBAAS,IAAM,EACrBrD,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAY8pC,EAAwB3lE,GAC/E6+B,yBAAa/C,mBAAOs4B,GAAe,CACxCz8D,IAAKqI,EACL3I,MAAO2I,GACN,CACDo8B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiBjD,6BAAiBh8B,GAAQ,KAAM,KAElDk/B,EAAG,GACF,KAAM,CAAC,WACR,OAENA,EAAG,GACF,EAAG,CAAC,YAETnD,gCAAoB,MAAOorB,GAAa,CACtCC,GACAvoB,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACf/J,MAAOiK,EAAUjK,MACjB0lC,SAAUtB,EAAO,MAAQA,EAAO,IAAMpkC,GAASyuE,EAAgBzuE,KAC9D,CACDwwE,WAAY9oC,qBAAS,IAAM,CACzBF,yBAAa8oC,MAEfvrC,QAAS2C,qBAAS,IAAM,EACrBrD,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAY4pC,EAAmBzlE,GAC1E6+B,yBAAa/C,mBAAOs4B,GAAe,CACxCz8D,IAAKqI,EACL3I,MAAO2I,GACN,CACDo8B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiBjD,6BAAiBh8B,GAAQ,KAAM,KAElDk/B,EAAG,GACF,KAAM,CAAC,WACR,OAENA,EAAG,GACF,EAAG,CAAC,YAETnD,gCAAoB,MAAOsrB,GAAa,CACtCid,GACAzlC,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACf/J,MAAOulD,EAAWvlD,MAClB0lC,SAAUtB,EAAO,MAAQA,EAAO,IAAMpkC,GAAS0uE,EAAiB1uE,KAC/D,CACDwwE,WAAY9oC,qBAAS,IAAM,CACzBF,yBAAa2oC,MAEfprC,QAAS2C,qBAAS,IAAM,EACrBrD,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAY6pC,EAAoB1lE,GAC3E6+B,yBAAa/C,mBAAOs4B,GAAe,CACxCz8D,IAAKqI,EACL3I,MAAO2I,GACN,CACDo8B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiBjD,6BAAiBh8B,GAAQ,KAAM,KAElDk/B,EAAG,GACF,KAAM,CAAC,WACR,OAENA,EAAG,GACF,EAAG,CAAC,YAETnD,gCAAoB,MAAOwoC,GAAa,CACtCC,GACA3lC,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAY18D,EAAKpJ,MACjB,sBAAuBokC,EAAO,MAAQA,EAAO,IAAMpkC,GAAS2uE,EAAW3uE,KACtE,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamlC,GAAa,CACxBvnE,MAAOgE,EAAKpJ,MACZ+J,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEf89B,EAAG,MAGPL,yBAAa/C,mBAAO,UACpB+C,yBAAa6d,IACb7d,yBAAa/C,mBAAO,UACpB+C,yBAAaopC,IACbppC,yBAAa/C,mBAAO,UACpB+C,yBAAaqpC,U,UCnjCjB,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMntC,GAAa,CAAEC,MAAO,gBAYAI,oCAAiB,CAC3CC,OAAQ,cACRC,MAAMC,GAER,MAAM9zB,EAAc3F,KACd,cAAE4F,GAAkB4R,eAAYvT,KAEhC8xB,EAAQlG,kBAAI,GACZ9wB,EAAQ8wB,kBAAI,GAElBiP,mBAAMl5B,EAAe,MACfA,EAAcrQ,OAAuC,UAA7BqQ,EAAcrQ,MAAMyC,MAAiD,UAA7B4N,EAAcrQ,MAAMyC,OACtF+9B,EAAMxgC,QAAUqQ,EAAcrQ,MAAMwgC,MACpCh3B,EAAMxJ,QAAUqQ,EAAcrQ,MAAMwJ,QAErC,CAAE68D,MAAM,EAAMxd,WAAW,IAE5B,MAAM,mBAAEtnC,GAAuBW,KAEzB4uD,EAAcC,IACb1gE,EAAcrQ,QACnBoQ,EAAYnC,cAAc,CAAEnF,GAAIuH,EAAcrQ,MAAM8I,GAAIgE,MAAOikE,IAC/DxvD,MAGF,MAAO,CAAC4iB,EAAUC,KAChB,MAAM4sC,EAAgC9pC,8BAAkB,sBAClD+pC,EAAkC/pC,8BAAkB,wBAE1D,OAAQ7C,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3D8D,yBAAakpC,GAAqB,CAAE/sC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,QAAShjE,EAAMxJ,MACfqlC,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBwrC,EAAW,CAAEtnE,OAAQA,EAAMxJ,UAC/E,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAawpC,GACbppC,6BAAiB,WAEnBC,EAAG,GACF,EAAG,CAAC,YACPL,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,QAAShsC,EAAMxgC,MACfqlC,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBwrC,EAAW,CAAEtwC,OAAQA,EAAMxgC,UAC/E,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaypC,GACbrpC,6BAAiB,WAEnBC,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,U,UCjET,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMlC,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,kBACtBC,GAAa,CAAED,MAAO,OACtBE,GAA2B8B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IACzH+5B,GAAa,CACjBH,MAAO,iBACP55B,MAAO,CAAC,KAAO,MAEX+7B,GAAa,CACjBxlC,IAAK,EACLqjC,MAAO,UAEHoC,GAAa,CAAEpC,MAAO,QAqBAI,oCAAiB,CAC3CC,OAAQ,gBACRC,MAAMC,GAER,MAAMgtC,EAAiC,CACrC,CAAEhwE,MAAO,KAAMZ,IAAK,OAAQykC,QAAS,EAAG/kC,MAAO,EAAGmxE,KAAM,KAAM92D,IAAK,GAAIsP,KAAM,GAC7E,CAAEzoB,MAAO,KAAMZ,IAAK,aAAcykC,QAAS,IAAK/kC,MAAO,IAAKmxE,KAAM,IAAK92D,IAAK,IAAKsP,KAAM,GACvF,CAAEzoB,MAAO,MAAOZ,IAAK,WAAYykC,QAAS,IAAK/kC,MAAO,IAAKmxE,KAAM,IAAK92D,IAAK,IAAKsP,KAAM,GACtF,CAAEzoB,MAAO,KAAMZ,IAAK,YAAaykC,QAAS,EAAG/kC,MAAO,EAAGmxE,KAAM,IAAK92D,IAAK,IAAKsP,KAAM,GAClF,CAAEzoB,MAAO,MAAOZ,IAAK,WAAYykC,QAAS,IAAK/kC,MAAO,IAAKmxE,KAAM,IAAK92D,IAAK,IAAKsP,KAAM,GACtF,CAAEzoB,MAAO,KAAMZ,IAAK,aAAcykC,QAAS,EAAG/kC,MAAO,EAAGmxE,KAAM,MAAO92D,IAAK,IAAKsP,KAAM,IACrF,CAAEzoB,MAAO,OAAQZ,IAAK,UAAWykC,QAAS,IAAK/kC,MAAO,IAAKmxE,KAAM,IAAK92D,IAAK,IAAKsP,KAAM,IAGlFvZ,EAAc3F,KACd,cAAE4F,EAAF,gBAAiBzB,GAAoBqT,eAAYvT,KAEjD0iE,EAAgB92C,iBAAoBtuB,KAAKG,MAAMH,KAAKC,UAAUilE,KAC9DG,EAAa/2C,kBAAI,IAEjB,mBAAE/Y,GAAuBW,KAE/BqnB,mBAAMl5B,EAAe,KACnB,IAAKA,EAAcrQ,OAAsC,UAA7BqQ,EAAcrQ,MAAMyC,KAAkB,OAElE,MAAMi+B,EAAUrwB,EAAcrQ,MAAM0gC,QAChCA,GACF0wC,EAAcpxE,MAAQkxE,EAAe/lE,IAAIxC,QACbs1B,IAAtByC,EAAQ/3B,EAAKrI,KAA2B,IAAKqI,EAAM3I,MAAOiH,SAASy5B,EAAQ/3B,EAAKrI,OAC7EqI,GAET0oE,EAAWrxE,OAAQ,IAGnBoxE,EAAcpxE,MAAQgM,KAAKG,MAAMH,KAAKC,UAAUilE,IAChDG,EAAWrxE,OAAQ,IAEpB,CAAEqmE,MAAM,EAAMxd,WAAW,IAG5B,MAAMyoB,EAAe,CAAC5oE,EAAsB1I,KAC1C,MAAMuxE,EAAiBlhE,EAAcrQ,MAE/BwxE,EAAgBD,EAAe7wC,SAAW,GAC1CA,EAAU,IAAK8wC,EAAe,CAAC9oE,EAAOpI,KAAM,GAAGN,IAAQ0I,EAAOyoE,QACpE/gE,EAAYnC,cAAc,CAAEnF,GAAI8F,EAAgB5O,MAAO8M,MAAO,CAAE4zB,aAChEnf,KAGIkwD,EAAiBjF,IAChBn8D,EAAcrQ,QACfwsE,EACFp8D,EAAYnC,cAAc,CAAEnF,GAAIuH,EAAcrQ,MAAM8I,GAAIgE,MAAO,CAAE4zB,QAAS,MAG1EtwB,EAAYjC,mBAAmB,CAAErF,GAAIuH,EAAcrQ,MAAM8I,GAAIsF,SAAU,YAEzEmT,MAGF,MAAO,CAAC4iB,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrCC,GACAa,gCAAoB,MAAOZ,GAAY,CACrC0D,yBAAa/C,mBAAO,SAAS,CAC3B+nC,QAAS6E,EAAWrxE,MACpB0lC,SAAUtB,EAAO,KAAOA,EAAO,GAAKooC,GAAWiF,EAAcjF,KAC5D,KAAM,EAAG,CAAC,gBAGhB6E,EAAWrxE,OACPqkC,yBAAcC,gCAAoB,MAAOwB,GAAY,EACnDzB,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAY4sC,EAAcpxE,MAAQ0I,IAChF27B,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,cACPrjC,IAAKoI,EAAOpI,KACX,CACDokC,gCAAoB,MAAOqB,GAAYpB,6BAAiBj8B,EAAOxH,OAAQ,GACvEsmC,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,gBACPtpB,IAAK3R,EAAO2R,IACZ9M,IAAK,EACLoc,KAAMjhB,EAAOihB,KACb3pB,MAAO0I,EAAO1I,MACd0lC,SAAU1lC,GAASsxE,EAAa5oE,EAAQ1I,IACvC,KAAM,EAAG,CAAC,MAAO,OAAQ,QAAS,iBAErC,SAEN24C,gCAAoB,IAAI,S,UCxHhC,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMhT,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,sBACtBC,GAAa,CAAED,MAAO,OACtBE,GAA2B8B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,aAAc,IAC7H+5B,GAAa,CACjBH,MAAO,iBACP55B,MAAO,CAAC,KAAO,MAEX+7B,GAAa,CACjBnC,MAAO,MACP55B,MAAO,CAAC,aAAa,SAEjBg8B,GAA2BJ,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IACzHi8B,GAAa,CAAErC,MAAO,OACtBsC,GAA2BN,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IAiBnGg6B,oCAAiB,CAC3CC,OAAQ,mBACRC,MAAMC,GAER,MAAMwtC,EAAmB,CAAEtsE,MAAO,cAAekE,QAAS,IAEpD8G,EAAc3F,KACd,cAAE4F,EAAF,gBAAiBzB,GAAoBqT,eAAYvT,KAEjDmuC,EAAYviB,iBAA2Bo3C,GACvCC,EAAer3C,kBAAI,IAEnB,mBAAE/Y,GAAuBW,KAE/BqnB,mBAAMl5B,EAAe,KACdA,EAAcrQ,OAAsC,UAA7BqQ,EAAcrQ,MAAMyC,OAE5C4N,EAAcrQ,MAAM68C,WACtBA,EAAU78C,MAAQqQ,EAAcrQ,MAAM68C,UACtC80B,EAAa3xE,OAAQ,GAElB2xE,EAAa3xE,OAAQ,IACzB,CAAEqmE,MAAM,EAAMxd,WAAW,IAE5B,MAAM+oB,EAAmBpF,IAClBn8D,EAAcrQ,QACfwsE,EACFp8D,EAAYnC,cAAc,CAAEnF,GAAIuH,EAAcrQ,MAAM8I,GAAIgE,MAAO,CAAE+vC,UAAW60B,KAG5EthE,EAAYjC,mBAAmB,CAAErF,GAAIuH,EAAcrQ,MAAM8I,GAAIsF,SAAU,cAEzEmT,MAGIswD,EAAmBC,IACvB,MAAMC,EAAe,IAAKl1B,EAAU78C,SAAU8xE,GAC9C1hE,EAAYnC,cAAc,CAAEnF,GAAI8F,EAAgB5O,MAAO8M,MAAO,CAAE+vC,UAAWk1B,KAC3ExwD,KAGF,MAAO,CAAC4iB,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrCC,GACAa,gCAAoB,MAAOZ,GAAY,CACrC0D,yBAAa/C,mBAAO,SAAS,CAC3B+nC,QAASmF,EAAa3xE,MACtB0lC,SAAUtB,EAAO,KAAOA,EAAO,GAAKooC,GAAWoF,EAAgBpF,KAC9D,KAAM,EAAG,CAAC,gBAGhBmF,EAAa3xE,OACTqkC,yBAAcC,gCAAoBC,cAAW,CAAEjkC,IAAK,GAAK,CACxDokC,gCAAoB,MAAOoB,GAAY,CACrCC,GACAyB,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAYjpB,EAAU78C,MAAMoF,MAC5B,sBAAuBg/B,EAAO,KAAOA,EAAO,GAAKpkC,GAAS6xE,EAAgB,CAAEzsE,MAAOpF,MAClF,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamlC,GAAa,CACxBvnE,MAAOy3C,EAAU78C,MAAMoF,MACvB2E,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEf89B,EAAG,MAGPnD,gCAAoB,MAAOsB,GAAY,CACrCC,GACAuB,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,iBACPtpB,IAAK,EACL9M,IAAK,EACLoc,KAAM,IACN3pB,MAAO68C,EAAU78C,MAAMsJ,QACvBo8B,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAAS6xE,EAAgB,CAAEvoE,QAAStJ,MACvE,KAAM,EAAG,CAAC,OAAQ,aAEtB,KACH24C,gCAAoB,IAAI,S,UChHhC,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMhT,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,qBACtBC,GAAa,CAAED,MAAO,QACtBE,GAA2B8B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,SAAW,QAAS,IACnHG,GAAa,CAAEH,MAAO,cACtBmC,GAAa,CAAC,WACdC,GAAa,CACjBzlC,IAAK,EACLqjC,MAAO,SAuBmBI,oCAAiB,CAC3CC,OAAQ,kBACRC,MAAMC,GAER,MAAMypC,EAAc,QAAOP,MAErB4E,EAAuBx7B,GACvBy7B,EAAmB,CACvB,CACE/wE,MAAO,UACP8V,SAAU,CACR,CAAE1W,IAAK,MAAO4xE,MAAO,KAGzB,CACEhxE,MAAO,UACP8V,SAAU,CACR,CAAE1W,IAAK,MAAO4xE,MAAO,KACrB,CAAE5xE,IAAK,MAAO4xE,MAAO,EAAI,GACzB,CAAE5xE,IAAK,MAAO4xE,MAAO,EAAI,GACzB,CAAE5xE,IAAK,MAAO4xE,MAAO,EAAI,KAG7B,CACEhxE,MAAO,UACP8V,SAAU,CACR,CAAE1W,IAAK,MAAO4xE,MAAO,EAAI,GACzB,CAAE5xE,IAAK,MAAO4xE,MAAO,EAAI,GACzB,CAAE5xE,IAAK,MAAO4xE,MAAO,IACrB,CAAE5xE,IAAK,MAAO4xE,MAAO,MAGzB,CACEl7D,SAAU,CACR,CAAE1W,IAAK,OAAQ4xE,MAAO,EAAI,IAC1B,CAAE5xE,IAAK,QAAS4xE,MAAO,SAKvB/8D,EAAYzG,IACZ0B,EAAc3F,KACd,cAAE4F,EAAF,gBAAiBzB,GAAoBqT,eAAY9M,IACjD,aAAErK,GAAiBmX,eAAY7R,GAE/B+hE,EAAqB9hE,EAErB+hE,EAAmB93C,kBAAI,IAEvB,mBAAE/Y,GAAuBW,KAGzBmwD,EAAY,KAChBl9D,EAAUxD,yBAAyB/C,EAAgB5O,OACnDoyE,EAAiBpyE,OAAQ,GAIrBsyE,EAAgC,KACpC,MAAMf,EAAiBlhE,EAAcrQ,MAG/B+d,EAAWwzD,EAAe/pE,MAC1ByW,EAAYszD,EAAe9pE,OAC3B8qE,EAAUhB,EAAevoE,KACzBwpE,EAASjB,EAAetoE,IACxBwpE,EAAwDlB,EAAe5wC,KAAO4wC,EAAe5wC,KAAK3kB,MAAQ,CAAC,CAAC,EAAG,GAAI,CAAC,IAAK,MAEzH8vC,EAAc/tC,IAAa00D,EAAgB,GAAG,GAAKA,EAAgB,GAAG,IAAM,KAC5EC,EAAez0D,IAAcw0D,EAAgB,GAAG,GAAKA,EAAgB,GAAG,IAAM,KAC9EtoC,EAAaooC,EAAUzmB,GAAe2mB,EAAgB,GAAG,GAAK,KAC9DroC,EAAYooC,EAASE,GAAgBD,EAAgB,GAAG,GAAK,KAEnE,MAAO,CACLA,kBACA3mB,cACA4mB,eACAvoC,aACAC,cAKEuoC,EAAkB,CAAC/xC,EAAesxC,EAAQ,KAC9C,MAAMX,EAAiBlhE,EAAcrQ,OAE/B,gBACJyyE,EADI,YAEJ3mB,EAFI,aAGJ4mB,EAHI,WAIJvoC,EAJI,UAKJC,GACEkoC,IAGJ,GAAIJ,EAAO,CACT,MAAMU,EAAaF,EAAe5mB,EAE5Bv+C,EAAM,EACN8M,EAAM,IACZ,IAAI2B,EAEJ,GAAI42D,EAAaV,EAAO,CACtB,MAAMW,GAAa,EAAIX,EAAQU,GAAc,EAAK,IAClD52D,EAAQ,CAAC,CAACzO,EAAKslE,GAAW,CAACx4D,EAAKA,EAAMw4D,QAEnC,CACH,MAAMA,GAAa,EAAID,EAAaV,GAAS,EAAK,IAClDl2D,EAAQ,CAAC,CAAC62D,EAAUtlE,GAAM,CAAC8M,EAAMw4D,EAAUx4D,IAE7CjK,EAAYnC,cAAc,CACxBnF,GAAI8F,EAAgB5O,MACpB8M,MAAO,CACL6zB,KAAM,IAAK4wC,EAAe5wC,KAAMC,QAAO5kB,SACvChT,KAAMmhC,EAAa2hB,GAAe9vC,EAAM,GAAG,GAAK,KAChD/S,IAAKmhC,EAAYsoC,GAAgB12D,EAAM,GAAG,GAAK,KAC/CxU,MAAOskD,GAAe9vC,EAAM,GAAG,GAAKA,EAAM,GAAG,IAAM,IACnDvU,OAAQirE,GAAgB12D,EAAM,GAAG,GAAKA,EAAM,GAAG,IAAM,YAMzD5L,EAAYnC,cAAc,CACxBnF,GAAI8F,EAAgB5O,MACpB8M,MAAO,CACL6zB,KAAM,IAAK4wC,EAAe5wC,KAAMC,QAAO5kB,MAAOy2D,MAIpDJ,IACA9wD,KAIIuxD,EAAgBn3C,IACpB,MAAMtL,EAAYsL,EAAM,GACnBtL,IACLjS,GAAgBiS,GAAWvX,KAAKwX,IAC9B,MAAMxjB,EAAQ,CAAE8Q,IAAK0S,GACrBlgB,EAAYnC,cAAc,CAAEnF,GAAI8F,EAAgB5O,MAAO8M,YAEzDyU,MAIIwxD,EAAa,KACjB,MAAMxB,EAAiBlhE,EAAcrQ,MAErC,GAAIuxE,EAAe5wC,KAAM,CACvB,MAAM,YACJmrB,EADI,aAEJ4mB,EAFI,WAGJvoC,EAHI,UAIJC,GACEkoC,IAEJliE,EAAYnC,cAAc,CACxBnF,GAAI8F,EAAgB5O,MACpB8M,MAAO,CACL9D,KAAMmhC,EACNlhC,IAAKmhC,EACL5iC,MAAOskD,EACPrkD,OAAQirE,KAKdtiE,EAAYjC,mBAAmB,CAC7BrF,GAAI8F,EAAgB5O,MACpBoO,SAAU,CAAC,OAAQ,UAAW,OAAQ,SAAU,UAAW,eAE7DmT,KAIIyxD,EAAqB,KACzB,MAAMzB,EAAiBlhE,EAAcrQ,MAE/BgK,EAA8B,IAC/Bc,EAAa9K,MAAMgK,WACtBvH,KAAM,QACN+8B,MAAO+xC,EAAe3zD,IACtB25C,UAAW,SAEbnnD,EAAYvD,YAAY,CAAE7C,eAC1BuX,KAGF,MAAO,CAAC4iB,EAAUC,KAChB,MAAM6uC,EAA2B/rC,8BAAkB,iBAC7Cu8B,EAAsBv8B,8BAAkB,YACxCgsC,EAA2BhsC,8BAAkB,iBAC7CisC,EAAsBjsC,8BAAkB,YACxCksC,EAAuBlsC,8BAAkB,aAE/C,OAAQ7C,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAO,CACzBf,MAAO,eACP55B,MAAOoxC,4BAAgB,CAAEuc,gBAAiB,OAAOjzB,mBAAO0tC,GAAoBv0D,UAC3E,KAAM,GACT4pB,yBAAa6rC,IACb7rC,yBAAa/C,mBAAOkpC,GAAc,CAAEhqC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiB+sC,MACpD,CACDttC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAayrC,EAA0B,CAAEtvC,MAAO,aAChDiE,6BAAiB,WAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAU,CAC5Bh5B,QAAS,QACTw8B,QAASmqC,EAAiBpyE,MAC1B,mBAAoBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkB8sC,EAAkBpyE,MAAQslC,IAC1F,CACD57B,QAASg+B,qBAAS,IAAM,CACtBhD,gCAAoB,MAAOd,GAAY,CACrCC,GACAa,gCAAoB,MAAOZ,GAAY,EACpCO,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOutC,GAAuB,CAACrpE,EAAMrI,KAC/F+jC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,kBACPrjC,IAAKA,EACL+kC,QAAUC,GAAiBqtC,EAAgBryE,IAC1C,CACDokC,gCAAoB,MAAO,CACzBf,MAAO,QACP55B,MAAOoxC,4BAAgB,CAAE/B,SAAUzwC,EAAKoB,SACvC,KAAM,IACR,EAAG+7B,MACJ,SAELzB,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAYytC,EAAmBxvE,IACzE4hC,yBAAcC,gCAAoBC,cAAW,CACnDjkC,IAAKmC,EAAKvB,OACT,CACAuB,EAAKvB,OACDmjC,yBAAcC,gCAAoB,MAAOyB,GAAY,IAAMpB,6BAAiBliC,EAAKvB,OAAS,IAAK,IAChGy3C,gCAAoB,IAAI,GAC5BnR,yBAAa/C,mBAAOkpC,GAAc,CAAEhqC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,EACrBrD,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAY/hC,EAAKuU,SAAWrO,IAC1E07B,yBAAc0U,yBAAatU,mBAAO,SAAS,CACjD16B,MAAO,CAAC,KAAO,KACfzJ,IAAKqI,EAAKrI,IACV+kC,QAAUC,GAAiBqtC,EAAgB,OAAQhqE,EAAKupE,QACvD,CACDntC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiBjD,6BAAiBh8B,EAAKrI,KAAM,KAE/CunC,EAAG,GACF,KAAM,CAAC,cACR,QAENA,EAAG,GACF,OACF,MACD,SAGR9C,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,aACP55B,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAai8B,KAEf57B,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,IAELL,yBAAa/C,mBAAO,UACpB+C,yBAAa8rC,IACb9rC,yBAAa/C,mBAAO,UACpB+C,yBAAa+rC,IACb/rC,yBAAa/C,mBAAO,UACpB+C,yBAAa6d,IACb7d,yBAAa/C,mBAAO,UACpB+C,yBAAaopC,IACbppC,yBAAa/C,mBAAO,UACpB+C,yBAAaG,GAAW,CACtBjC,SAAUtB,EAAO,KAAOA,EAAO,GAAKzI,GAASm3C,EAAan3C,KACzD,CACDoJ,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAAEd,MAAO,kBAAoB,CACxDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa0rC,EAA0B,CAAEvvC,MAAO,aAChDiE,6BAAiB,WAEnBC,EAAG,MAGPA,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,iBACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBytC,MACpD,CACDhuC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa2rC,EAAqB,CAAExvC,MAAO,aAC3CiE,6BAAiB,WAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,iBACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiB0tC,MACpD,CACDjuC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa4rC,EAAsB,CAAEzvC,MAAO,aAC5CiE,6BAAiB,WAEnBC,EAAG,U,UC7VT,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMlC,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,qBACtBC,GAAa,CAAED,MAAO,SACtBE,GAA2B8B,GAAa,IAAmBjB,gCAAoB,OAAQ,KAAM,UAAW,IACxGZ,GAAa,CAAEH,MAAO,cACtBmC,GAAa,CAAEnC,MAAO,cACtBoC,GAAa,CAAEpC,MAAO,OACtBqC,GAA2BL,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,MAAO,IACtHk8B,GAAa,CAAEtC,MAAO,OACtBuC,GAA2BP,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IACzHo8B,GAAc,CAAExC,MAAO,OACvByC,GAA4BT,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IAC1Hs8B,GAAc,CAClB/lC,IAAK,EACLqjC,MAAO,OAEH4C,GAA4BZ,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IAiCpGg6B,oCAAiB,CAC3CC,OAAQ,kBACRC,MAAMC,GAER,MAAQkpC,MAAOC,EAAYC,OAAQC,GAA7B,SACEC,SAAUC,EAAgBzQ,OAAQD,GAApC,QACA2Q,EAAa,QAAMN,MACnBO,EAAc,QAAOP,MAErBj4D,EAAYzG,IACZ0B,EAAc3F,KACd,cAAE4F,EAAF,gBAAiBzB,EAAjB,cAAkCgB,EAAlC,eAAiDJ,EAAjD,kBAAiES,GAAsBgS,eAAY9M,GAEnGq+D,EAAqBnjE,EAErBjH,EAAOkxB,iBAAY,QACnB2rB,EAAW3rB,iBAAmB,CAClC73B,KAAM,SACN8G,OAAQ,EACRnE,MAAO,CAAC,OAAQ,UAEZquE,EAAWn5C,iBAAI,QACftyB,EAAYsyB,iBAAI,UAEtBiP,mBAAMl5B,EAAe,KAAK,QACnBA,EAAcrQ,OAAsC,UAA7BqQ,EAAcrQ,MAAMyC,OAEhD2G,EAAKpJ,MAAQqQ,EAAcrQ,MAAMoJ,MAAQ,OACzC68C,EAASjmD,MAAQqQ,EAAcrQ,MAAMimD,UAAY,CAAExjD,KAAM,SAAU8G,OAAQ,EAAGnE,MAAO,CAACgE,EAAKpJ,MAAO,SAClGyzE,EAASzzE,MAAQqQ,EAAcrQ,MAAMimD,SAAW,WAAa,OAC7Dj+C,EAAUhI,OAAQ,UAAAqQ,EAAcrQ,aAAd,mBAAqBwK,YAArB,eAA2BhF,QAAS,WACrD,CAAE6gE,MAAM,EAAMxd,WAAW,IAE5B,MAAM,mBAAEtnC,GAAuBW,MACzB,oBAAEkkD,GAAwByH,KAE1B5/D,EAAiBnB,IACrBsD,EAAYnC,cAAc,CAAEnF,GAAI8F,EAAgB5O,MAAO8M,UACvDyU,KAIImyD,EAAkBjxE,IACT,SAATA,GACF2N,EAAYjC,mBAAmB,CAAErF,GAAI8F,EAAgB5O,MAAOoO,SAAU,aACtEmT,KAEGtT,EAAc,CAAEg4C,SAAUA,EAASjmD,SAIpC2zE,EAAkBC,IACtB,IAAK3tB,EAASjmD,MAAO,OACrB,MAAM6zE,EAA2B,IAAK5tB,EAASjmD,SAAU4zE,GACzD3lE,EAAc,CAAEg4C,SAAU4tB,KAItBlF,EAAc3uE,IAClBiO,EAAc,CAAE7E,KAAMpJ,KAIlB8zE,EAAelzC,IACnB,MAAM,MAAEp5B,EAAF,OAASC,GAAW4I,EAAcrQ,MAClC8M,EAAkC,CACtC5D,QAAS03B,EAAM13B,QACfC,KAAMy3B,EAAMz3B,KACZ0X,QAAS+f,EAAM/f,SAEjB,GAAI+f,EAAMhgB,YAAa,CACrB9T,EAAM8T,YAAcggB,EAAMhgB,YAC1B9T,EAAM5D,QAAU,CAAC1B,EAAOC,GAExB,MAAMmZ,EAAc/B,GAAoB+hB,EAAMhgB,aAC1C,aAAcA,GAChB9T,EAAM3D,KAAOyX,EAAYzB,QAAQ3X,EAAOC,EAAQmZ,EAAY5B,cAC5DlS,EAAMyX,SAAW3D,EAAY5B,cAE1BlS,EAAM3D,KAAOyX,EAAYzB,QAAQ3X,EAAOC,QAG7CqF,EAAM8T,iBAAcqd,EACpBnxB,EAAMyX,cAAW0Z,EAEnBhwB,EAAcnB,IAGVinE,EAAmBvuE,IACvB,MAAM+rE,EAAiBlhE,EAAcrQ,MAE/B0lD,EAAyB,CAC7Bh8C,QAAS,GACTC,gBAAiB,OACjBC,aAAc,OACdpE,MAAO,UAEHogD,EAAQ2rB,EAAe/mE,MAAQk7C,EACrCz3C,EAAc,CAAEzD,KAAM,IAAKo7C,EAAOpgD,YAG9B0oE,EAAkB,CACtB,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAChE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAChE,OAAQ,OAAQ,OAAQ,QAAS,QAAS,SAGtCU,EAAsB,CAACnoD,EAAiBzmB,KAC5CihD,GAAQhc,KAAK+b,GAAcmD,kBAAmB,CAAEhsC,OAAQ,CAAEsO,UAASzmB,YAGrE,MAAO,CAACmkC,EAAUC,KAAe,MAC/B,MAAMq/B,EAAsBv8B,8BAAkB,YACxCo8B,EAA0Bp8B,8BAAkB,gBAC5C+nC,EAAyB/nC,8BAAkB,eAC3CgoC,EAAsBhoC,8BAAkB,YACxCioC,EAA2BjoC,8BAAkB,iBAC7CkoC,EAA0BloC,8BAAkB,gBAC5CmoC,EAA4BnoC,8BAAkB,kBAC9CooC,EAA+BpoC,8BAAkB,qBACjDqoC,EAA+BroC,8BAAkB,qBACjDwoC,EAAwBxoC,8BAAkB,cAC1CyoC,EAA6BzoC,8BAAkB,mBAC/C2oC,EAA+B3oC,8BAAkB,qBACjD4oC,EAAiC5oC,8BAAkB,uBACnD6oC,EAAgC7oC,8BAAkB,sBAClD8sC,EAAiC9sC,8BAAkB,uBACnD+sC,EAAoC/sC,8BAAkB,0BACtDgtC,EAAoChtC,8BAAkB,0BAE5D,OAAQ7C,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrCC,GACA2D,yBAAai8B,KAEf/+B,gCAAoB,MAAOZ,GAAY,EACpCO,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAO9jB,IAAchY,IAC/E07B,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,WACPrjC,IAAKqI,EAAKlG,MACT,CACDiiC,gCAAoB,MAAOoB,GAAY,EACpCzB,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAY77B,EAAKqO,SAAU,CAAC4pB,EAAOzzB,KACjFk3B,yBAAc0U,yBAAa4mB,GAAoB,CACrDh8B,MAAO,aACPrjC,IAAK6M,EACLyzB,MAAOA,EACPyE,QAAUC,GAAiBwuC,EAAYlzC,IACtC,KAAM,EAAG,CAAC,QAAS,cACpB,YAGN,QAEN8D,gCAAoB,MAAOqB,GAAY,CACrCyB,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,MACf/J,MAAOyzE,EAASzzE,MAChB0lC,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAAS0zE,EAAe1zE,KAC3D,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,QAAU,CACpD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,IAELL,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,YAAc,CACxD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,UACP7B,GACoB,SAAnBytC,EAASzzE,OACLqkC,yBAAc0U,yBAAatU,mBAAO,SAAU,CAC3CnkC,IAAK,EACLmL,QAAS,SACR,CACD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAY18D,EAAKpJ,MACjB,sBAAuBokC,EAAO,KAAOA,EAAO,GAAKpkC,GAAS2uE,EAAW3uE,KACpE,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamlC,GAAa,CACxBvnE,MAAOgE,EAAKpJ,MACZ+J,MAAO,CAAC,KAAO,OACd,KAAM,EAAG,CAAC,YAEf89B,EAAG,MAEJxD,yBAAc0U,yBAAatU,mBAAO,SAAS,CAC1CnkC,IAAK,EACLyJ,MAAO,CAAC,KAAO,MACf/J,MAAOimD,EAASjmD,MAAMyC,KACtBijC,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAAS2zE,EAAe,CAAElxE,KAAMzC,MACnE,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,UAAY,CACtD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,IAELL,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,UAAY,CACtD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,aAEO,aAAnB4rC,EAASzzE,OACLqkC,yBAAcC,gCAAoBC,cAAW,CAAEjkC,IAAK,GAAK,CACxDokC,gCAAoB,MAAOuB,GAAY,CACrCC,GACAsB,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAY7f,EAASjmD,MAAMoF,MAAM,GACjC,sBAAuBg/B,EAAO,KAAOA,EAAO,GAAKpkC,GAAS2zE,EAAe,CAAEvuE,MAAO,CAACpF,EAAOimD,EAASjmD,MAAMoF,MAAM,QAC9G,KAAM,EAAG,CAAC,iBAEf2/B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamlC,GAAa,CACxBvnE,MAAO6gD,EAASjmD,MAAMoF,MAAM,GAC5B2E,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEf89B,EAAG,MAGPnD,gCAAoB,MAAOyB,GAAa,CACtCC,GACAoB,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAY7f,EAASjmD,MAAMoF,MAAM,GACjC,sBAAuBg/B,EAAO,KAAOA,EAAO,GAAKpkC,GAAS2zE,EAAe,CAAEvuE,MAAO,CAAC6gD,EAASjmD,MAAMoF,MAAM,GAAIpF,OAC3G,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamlC,GAAa,CACxBvnE,MAAO6gD,EAASjmD,MAAMoF,MAAM,GAC5B2E,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEf89B,EAAG,MAGkB,WAAxBoe,EAASjmD,MAAMyC,MACX4hC,yBAAcC,gCAAoB,MAAO+B,GAAa,CACrDE,GACAiB,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,SACPp2B,IAAK,EACL8M,IAAK,IACLsP,KAAM,GACN3pB,MAAOimD,EAASjmD,MAAMuJ,OACtBm8B,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAAS2zE,EAAe,CAAEpqE,OAAQvJ,MACrE,KAAM,EAAG,CAAC,aAEf24C,gCAAoB,IAAI,IAC3B,KACHA,gCAAoB,IAAI,GAC5BnR,yBAAa6rC,IACb7rC,yBAAa/C,mBAAO,UACpB,QAAC,EAAAA,mBAAO+uC,GAAoBhpE,YAA5B,OAAC,EAAiCd,SAC7B26B,yBAAcC,gCAAoBC,cAAW,CAAEjkC,IAAK,GAAK,CACxDknC,yBAAa/C,mBAAOipC,GAAa,CAC/B6C,QAAS,GACT5sC,MAAO,OACN,CACDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,cACP55B,MAAO,CAAC,KAAO,KACf/J,MAAOykC,mBAAO70B,GAAerK,SAC7BmgC,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAAS4uE,EAAoB,WAAY5uE,KAC5E,CACDwwE,WAAY9oC,qBAAS,IAAM,CACzBF,yBAAa87B,KAEfv+B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAOgpC,GAAiB,CAAEvsE,MAAO,QAAU,CACtD6jC,QAAS2C,qBAAS,IAAM,EACrBrD,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOj1B,GAAkBlH,IACnF+7B,yBAAc0U,yBAAatU,mBAAOs4B,GAAe,CACvDz8D,IAAKgI,EAAKtI,MACVA,MAAOsI,EAAKtI,OACX,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,OAAQ,CAC1B36B,MAAOoxC,4BAAgB,CAAEgK,WAAY78C,EAAKtI,SACzC2kC,6BAAiBr8B,EAAKpH,OAAQ,KAEnC2mC,EAAG,GACF,KAAM,CAAC,YACR,QAENA,EAAG,IAELL,yBAAa/C,mBAAOgpC,GAAiB,CAAEvsE,MAAO,QAAU,CACtD6jC,QAAS2C,qBAAS,IAAM,EACrBrD,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOtjC,GAAamH,IAC9E+7B,yBAAc0U,yBAAatU,mBAAOs4B,GAAe,CACvDz8D,IAAKgI,EAAKtI,MACVA,MAAOsI,EAAKtI,OACX,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,OAAQ,KAAMC,6BAAiBr8B,EAAKpH,OAAQ,KAElE2mC,EAAG,GACF,KAAM,CAAC,YACR,QAENA,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,UACPL,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACf/J,MAAOykC,mBAAO70B,GAAetK,SAC7BogC,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAAS4uE,EAAoB,WAAY5uE,KAC5E,CACDwwE,WAAY9oC,qBAAS,IAAM,CACzBF,yBAAaynC,KAEflqC,QAAS2C,qBAAS,IAAM,EACrBrD,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAY0pC,EAAkB5oE,GACzEkiC,yBAAa/C,mBAAOs4B,GAAe,CACxCz8D,IAAKgF,EACLtF,MAAOsF,GACN,CACDy/B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiBjD,6BAAiBr/B,GAAW,KAE/CuiC,EAAG,GACF,KAAM,CAAC,WACR,OAENA,EAAG,GACF,EAAG,CAAC,YAETA,EAAG,IAELL,yBAAa/C,mBAAOkpC,GAAc,CAAEhqC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAYrhC,mBAAO70B,GAAexK,MAClC,sBAAuBg/B,EAAO,KAAOA,EAAO,GAAKpkC,GAAS4uE,EAAoB,QAAS5uE,KACtF,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaipC,GAAiB,CAC5BrrE,MAAOq/B,mBAAO70B,GAAexK,MAC7B2E,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa0nC,KAEfrnC,EAAG,GACF,EAAG,CAAC,YAETA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,IAELL,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAYrhC,mBAAO70B,GAAevK,UAClC,sBAAuB++B,EAAO,KAAOA,EAAO,GAAKpkC,GAAS4uE,EAAoB,YAAa5uE,KAC1F,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaipC,GAAiB,CAC5BrrE,MAAOq/B,mBAAO70B,GAAevK,UAC7B0E,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa2nC,KAEftnC,EAAG,GACF,EAAG,CAAC,YAETA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,IAELL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,gBACP55B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBspC,EAAoB,kBAC1E,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa87B,GACb17B,6BAAiB,OAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,gBACP55B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBspC,EAAoB,qBAC1E,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa87B,GACb17B,6BAAiB,OAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,IAELL,yBAAakpC,GAAqB,CAAE/sC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,MACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,QAAS/nC,mBAAO70B,GAAetJ,KAC/B++B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBspC,EAAoB,UAC1E,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa4nC,KAEfvnC,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,MACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,QAAS/nC,mBAAO70B,GAAerJ,GAC/B8+B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBspC,EAAoB,QAC1E,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa6nC,KAEfxnC,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,QAAS/nC,mBAAO70B,GAAepJ,UAC/B6+B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBspC,EAAoB,eAC1E,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa8nC,KAEfznC,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,QAAS/nC,mBAAO70B,GAAenJ,cAC/B4+B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBspC,EAAoB,mBAC1E,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa+nC,KAEf1nC,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,IAELL,yBAAakpC,GAAqB,CAAE/sC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBspC,EAAoB,WAC1E,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAakoC,KAEf7nC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,UAAW/nC,mBAAOx0B,GAClBo1B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBb,mBAAO2hC,EAAP3hC,KACtD,CACDM,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamoC,KAEf9nC,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,IAELL,yBAAa/C,mBAAO,UACpB+C,yBAAa/C,mBAAO4oC,GAAa,CAC/B1pC,MAAO,MACP,eAAgB,QAChB3jC,MAAOykC,mBAAO70B,GAAepK,MAC7BkgC,SAAUtB,EAAO,MAAQA,EAAO,IAAM7rB,GAAKq2D,EAAoB,QAASr2D,EAAEoN,OAAO3lB,SAChF,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO8oC,GAAc,CAChCvtE,MAAO,OACP+J,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaqoC,KAEfhoC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,MACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO8oC,GAAc,CAChCvtE,MAAO,SACP+J,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAasoC,KAEfjoC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO8oC,GAAc,CAChCvtE,MAAO,QACP+J,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAauoC,KAEfloC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,GACF,EAAG,CAAC,UACPL,yBAAa/C,mBAAO4oC,GAAa,CAC/B1pC,MAAO,MACP,eAAgB,QAChB3jC,MAAOgI,EAAUhI,MACjB0lC,SAAUtB,EAAO,MAAQA,EAAO,IAAM7rB,GAAKw7D,EAAgBx7D,EAAEoN,OAAO3lB,SACnE,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO8oC,GAAc,CAChCvtE,MAAO,MACP+J,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAawsC,KAEfnsC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,MACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO8oC,GAAc,CAChCvtE,MAAO,SACP+J,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaysC,KAEfpsC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO8oC,GAAc,CAChCvtE,MAAO,SACP+J,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa0sC,KAEfrsC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,GACF,EAAG,CAAC,UACPL,yBAAa/C,mBAAO,WACnB,KACHkU,gCAAoB,IAAI,GAC5BnR,yBAAa6d,IACb7d,yBAAa/C,mBAAO,UACpB+C,yBAAaopC,IACbppC,yBAAa/C,mBAAO,UACpB+C,yBAAaqpC,U,UC1vBjB,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMlrC,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,oBACtBC,GAAa,CAAED,MAAO,OACtBE,GAA2B8B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IACzH+5B,GAAa,CAAEH,MAAO,OACtBmC,GAA2BH,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IACzHg8B,GAAa,CAAEpC,MAAO,OACtBqC,GAA2BL,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IACzHk8B,GAAa,CAAEtC,MAAO,OACtBuC,GAA2BP,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IACzHo8B,GAAc,CAAExC,MAAO,OACvByC,GAA4BT,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IAkBpGg6B,oCAAiB,CAC3CC,OAAQ,iBACRC,MAAMC,GAER,MAAM64B,EAAe,QAAOC,OAEtB5sD,EAAc3F,KACd,cAAE4F,GAAkB4R,eAAYvT,KAEhCylE,EAAoB9jE,GAEpB,mBAAEkR,GAAuBW,KAEzBkyD,EAActnE,IACbuD,EAAcrQ,QACnBoQ,EAAYnC,cAAc,CAAEnF,GAAIuH,EAAcrQ,MAAM8I,GAAIgE,UACxDyU,MAGF,MAAO,CAAC4iB,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrCC,GACA2D,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACf/J,MAAOykC,mBAAO0vC,GAAmBpqE,MACjC27B,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAASo0E,EAAW,CAAErqE,MAAO/J,MAChE,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,SAAW,CACrD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,IAELL,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,UAAY,CACtD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,YAETnD,gCAAoB,MAAOZ,GAAY,CACrCgC,GACA0B,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAYrhC,mBAAO0vC,GAAmB/uE,MACtC,sBAAuBg/B,EAAO,KAAOA,EAAO,GAAKpkC,GAASo0E,EAAW,CAAEhvE,MAAOpF,MAC7E,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamlC,GAAa,CACxBvnE,MAAOq/B,mBAAO0vC,GAAmB/uE,MACjC2E,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEf89B,EAAG,MAGPnD,gCAAoB,MAAOqB,GAAY,CACrCC,GACAwB,yBAAa/C,mBAAO,SAAc,CAChCzkC,MAAOykC,mBAAO0vC,GAAmB3sE,MACjCk+B,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAASo0E,EAAW,CAAE5sE,MAAOxH,KACjE+J,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEf26B,gCAAoB,MAAOuB,GAAY,CACrCC,GACAsB,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACf/J,MAAOykC,mBAAO0vC,GAAmBrqE,OAAO,GACxC47B,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAASo0E,EAAW,CAAEtqE,OAAQ,CAAC9J,EAA0BykC,mBAAO0vC,GAAmBrqE,OAAO,QAC7H,CACDi7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,IAAM,CAChD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,OAEnBC,EAAG,IAELL,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,SAAW,CACrD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,IAELL,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,OAAS,CACnD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,YAETnD,gCAAoB,MAAOyB,GAAa,CACtCC,GACAoB,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACf/J,MAAOykC,mBAAO0vC,GAAmBrqE,OAAO,GACxC47B,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAASo0E,EAAW,CAAEtqE,OAAQ,CAAC26B,mBAAO0vC,GAAmBrqE,OAAO,GAAI9J,OACvG,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,IAAM,CAChD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,OAEnBC,EAAG,IAELL,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,SAAW,CACrD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,IAELL,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,OAAS,CACnD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,YAETL,yBAAa/C,mBAAO,UACpB+C,yBAAaopC,U,UC9JjB,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,U,yBCLf,MACMltC,GAAa,CAAEC,MAAO,qBACtBC,GAAa,CAAED,MAAO,kBACtBE,GAAa,CAAEF,MAAO,aACtBG,GAAa,CAAC,KAAM,UAAW,WAC/BgC,GAAa,CAAEnC,MAAO,QACtBoC,GAAa,CAAEpC,MAAO,QACtBqC,GAAa,CAAErC,MAAO,SAUAI,oCAAiB,CAC3CC,OAAQ,kBACRl3B,MAAO,CACP3P,KAAM,CACJsF,KAAM7E,OACN06C,UAAU,IAGZtT,MAAO,CAAC,OAAQ,SAChBf,MAAMC,GAAS,KAAEe,IAKnB,MAAMn4B,EAAQo3B,EAMRmwC,EAAa,IACbC,EAAc,GAEdC,EAAgBj6C,iBAAI,CAAC,EAAG,IACxBk6C,EAAgBl6C,iBAAI,CAAE9yB,MAAO,EAAGC,OAAQ,IACxCgtE,EAAYn6C,iBAA6B,MAGzCo6C,EAAavuD,sBAAS,KAC1B,MAAM3e,EAAQ+sE,EAAcv0E,MAAM,GAAKq0E,EACjC5sE,EAAS8sE,EAAcv0E,MAAM,GAAKs0E,EACxC,MAAO,CACL,CAAE7xE,KAAM,IAAKsH,MAAO,CAACvC,MAAOA,EAAQ,OACpC,CAAE/E,KAAM,IAAKsH,MAAO,CAACd,IAAKxB,EAAS,KAAMD,MAAOA,EAAQ,OACxD,CAAE/E,KAAM,IAAKsH,MAAO,CAACtC,OAAQA,EAAS,OACtC,CAAEhF,KAAM,IAAKsH,MAAO,CAACf,KAAMxB,EAAQ,KAAMC,OAAQA,EAAS,UAKxDktE,EAAsBxuD,sBAAS,KACnC,MAAM3e,EAAQ+sE,EAAcv0E,MAAM,GAAKq0E,EACjC5sE,EAAS8sE,EAAcv0E,MAAM,GAAKs0E,EACxC,MAAO,CAAEtrE,KAAMxB,EAAQ,KAAMyB,IAAKxB,EAAS,QAIvCmtE,EAAW,KACf,MAAMC,EAAoB,IAEpB,OAAEnyD,EAAF,QAAUC,EAAV,OAAmBC,GAAW9V,EAAM3P,KACpCquD,EAAW9oC,EAAO/kB,OAClByb,EAAWwJ,EAAOjlB,OAExBk3E,EAAM52E,KAAK,CAAC,MAAO0kB,IACnB,IAAK,IAAI4nC,EAAW,EAAGA,EAAWiB,EAAUjB,IAAY,CACtD,MAAMpnC,EAAM,CAACT,EAAO6nC,IACpB,IAAK,IAAIC,EAAW,EAAGA,EAAWpxC,EAAUoxC,IAC1CrnC,EAAIllB,KAAK2kB,EAAO4nC,GAAUD,GAAY,IAExCsqB,EAAM52E,KAAKklB,GAGb,IAAK,IAAIonC,EAAW,EAAGA,EAAWiB,EAAW,EAAGjB,IAC9C,IAAK,IAAIC,EAAW,EAAGA,EAAWpxC,EAAW,EAAGoxC,IAAY,CAC1D,MAAMtlB,EAAWt9B,SAASwc,cAAc,SAASmmC,KAAYC,KACxDtlB,IACLA,EAASllC,MAAQ60E,EAAMtqB,GAAUC,GAAY,IAIjD+pB,EAAcv0E,MAAQ,CAACoZ,EAAW,EAAGoyC,EAAW,IAGlDv7B,uBAAU2kD,GAGV,MAAME,EAAc,KAClB,IAAKL,EAAUz0E,MAAO,OAEtB,MAAOuqD,EAAUC,GAAYiqB,EAAUz0E,MACjCklC,EAAWt9B,SAASwc,cAAc,SAASmmC,EAAW,KAAKC,KACjEtlB,GAAYA,EAAS7gB,SAGjB61B,EAAoB3hC,IACxB,MAAMjY,EAAMiY,EAAEjY,IAAIquB,cACdruB,IAAQwW,GAAK6Y,OAAOmlD,KAG1B7kD,uBAAU,KACRroB,SAAS4W,iBAAiB,UAAW07B,KAEvChqB,yBAAY,KACVtoB,SAASuoB,oBAAoB,UAAW+pB,KAI1C,MAAM66B,EAAe,KACnB,MAAO3xD,EAAKD,GAAOoxD,EAAcv0E,MAE3B0iB,EAAmB,GACnBC,EAAoB,GACpBC,EAAqB,GAG3B,IAAK,IAAI2nC,EAAW,EAAGA,EAAWpnC,EAAKonC,IAAY,CACjD,IAAIyqB,EAAa,KAAKzqB,EACtB,MAAM0qB,EAAgBrtE,SAASwc,cAAc,SAASmmC,OAClD0qB,GAAiBA,EAAcj1E,QAAOg1E,EAAaC,EAAcj1E,OACrE0iB,EAAOzkB,KAAK+2E,GAEd,IAAK,IAAIxqB,EAAW,EAAGA,EAAWpnC,EAAKonC,IAAY,CACjD,IAAI0qB,EAAc,KAAK1qB,EACvB,MAAMyqB,EAAgBrtE,SAASwc,cAAc,WAAWomC,GACpDyqB,GAAiBA,EAAcj1E,QAAOk1E,EAAcD,EAAcj1E,OACtE2iB,EAAQ1kB,KAAKi3E,GAGf,IAAK,IAAI1qB,EAAW,EAAGA,EAAWpnC,EAAKonC,IAAY,CACjD,MAAM2qB,EAAa,GACnB,IAAK,IAAI5qB,EAAW,EAAGA,EAAWpnC,EAAKonC,IAAY,CACjD,MAAM6qB,EAAgBxtE,SAASwc,cAAc,SAASmmC,KAAYC,KAClE,IAAIxqD,EAAQ,EACRo1E,GAAiBA,EAAcp1E,QAAao1E,EAAcp1E,QAC5DA,GAASo1E,EAAcp1E,OAEzBm1E,EAAWl3E,KAAK+B,GAElB4iB,EAAO3kB,KAAKk3E,GAGdlwC,EAAK,OAAQ,CAAEviB,SAAQC,UAASC,YAI5ByyD,EAAQ,KACZ,IAAK,IAAI9qB,EAAW,EAAGA,EAAW,GAAIA,IACpC,IAAK,IAAIC,EAAW,EAAGA,EAAW,EAAGA,IAAY,CAC/C,MAAMtlB,EAAWt9B,SAASwc,cAAc,SAASmmC,KAAYC,KACxDtlB,IACLA,EAASllC,MAAQ,MAMjBs1E,EAAc,CAAC/8D,EAAmBgyC,EAAkBC,KAGxD,GAFAjyC,EAAEuW,kBAEGvW,EAAES,cAAe,OAEtB,MAAM0X,EAAyBnY,EAAES,cAAcyX,MAAM,GAEjDC,GAA0D,WAAhCA,EAAuBC,MAAqD,eAAhCD,EAAuBjuB,MAC/FiuB,EAAuBG,YAAYrmB,IACjC,MAAMwO,EAAgBD,GAA2BvO,GACjD,GAA6B,kBAAlBwO,EAA4B,OAEvC,MAAMiwC,EAAYhwC,GAA0BzO,GAC5C,GAAIy+C,EAAW,CACb,MAAM4B,EAASN,EAAWtB,EAAUtrD,OAC9BotD,EAASP,EAAWvB,EAAU,GAAGtrD,OACvC,IAAK,IAAIF,EAAI8sD,EAAU9sD,EAAIotD,EAAQptD,IACjC,IAAK,IAAIkB,EAAI6rD,EAAU7rD,EAAIosD,EAAQpsD,IAAK,CACtC,MAAMumC,EAAWt9B,SAASwc,cAAc,SAAS3mB,KAAKkB,KACjDumC,IACLA,EAASllC,MAAQipD,EAAUxrD,EAAI8sD,GAAU5rD,EAAI6rD,SASnD+qB,EAAc,IAAMtwC,EAAK,SAGzBuwC,EAAqBj9D,IACzB,IAAIuxB,GAAc,EAElB,MAAMC,EAAaxxB,EAAEyxB,MACfC,EAAa1xB,EAAE2xB,MAEf4hB,EAAcyoB,EAAcv0E,MAAM,GAAKq0E,EACvC3B,EAAe6B,EAAcv0E,MAAM,GAAKs0E,EAE9C1sE,SAASyiC,YAAc9xB,IACrB,IAAKuxB,EAAa,OAElB,MAAMQ,EAAe/xB,EAAEyxB,MACjBO,EAAehyB,EAAE2xB,MAEjB7S,EAAIiT,EAAeP,EACnBzS,EAAIiT,EAAeN,EAEnBziC,EAAQskD,EAAcz0B,EACtB5vB,EAASirE,EAAep7C,EAE9Bk9C,EAAcx0E,MAAQ,CAAEwH,QAAOC,WAGjCG,SAAS4iC,UAAYjyB,IACnBuxB,GAAc,EACdliC,SAASyiC,YAAc,KACvBziC,SAAS4iC,UAAY,KAErB,MAAM+tB,EAAWhgD,EAAEyxB,MACbwuB,EAAWjgD,EAAE2xB,MAEnB,GAAIH,IAAewuB,GAAYtuB,IAAeuuB,EAAU,OAGxD,IAAIhxD,EAAQgtE,EAAcx0E,MAAMwH,MAC5BC,EAAS+sE,EAAcx0E,MAAMyH,OAC7BD,EAAQ6sE,EAA0B,GAAbA,IAAkB7sE,GAAiB6sE,EAAa7sE,EAAQ6sE,GAC7E5sE,EAAS6sE,EAA4B,GAAdA,IAAmB7sE,GAAmB6sE,EAAc7sE,EAAS6sE,GAExF,IAAInxD,EAAM7V,KAAKkf,MAAM/kB,EAAS6sE,GAC1BlxD,EAAM9V,KAAKkf,MAAMhlB,EAAQ6sE,GAEzBlxD,EAAM,IAAGA,EAAM,GACfC,EAAM,IAAGA,EAAM,GAEnBmxD,EAAcv0E,MAAQ,CAACojB,EAAKD,GAC5BqxD,EAAcx0E,MAAQ,CAAEwH,MAAO,EAAGC,OAAQ,KAI9C,MAAO,CAAC08B,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrCc,gCAAoB,MAAOb,GAAY,CACrCa,gCAAoB,MAAO,CACzBf,MAAO,aACP55B,MAAOoxC,4BAAgB,CACrB3zC,MAAOgtE,EAAcx0E,MAAMwH,MAAQ,KACnCC,OAAQ+sE,EAAcx0E,MAAMyH,OAAS,QAEtC,KAAM,IACR48B,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOiwC,GAAc94D,IAC/EyoB,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,aAAc5/B,EAAKnZ,OAC3CnC,IAAKsb,EAAKnZ,KACVsH,MAAOoxC,4BAAgBv/B,EAAK7R,QAC3B,KAAM,KACP,MACJ26B,gCAAoB,MAAO,CACzBf,MAAO,YACP55B,MAAOoxC,4BAAgB1W,mBAAOkwC,IAC9Br5B,YAAalX,EAAO,KAAOA,EAAO,GAAKmX,2BAAgBjW,GAAiBkwC,EAAkBlwC,GAAU,CAAC,WACpG,KAAM,MAEXZ,gCAAoB,QAAS,KAAM,CACjCA,gCAAoB,QAAS,KAAM,EAChCL,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAY,GAAK+lB,GAC5D7lB,gCAAoB,KAAM,CAAEpkC,IAAKiqD,GAAY,EACjDlmB,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAY,EAAIgmB,GAC3D9lB,gCAAoB,KAAM,CAC/BpkC,IAAKkqD,EACL7mB,MAAO6X,4BAAgB,CAAE,KAAsB,IAAbgP,GAAkBD,GAAYgqB,EAAcv0E,MAAM,IAAqB,IAAbuqD,GAAkBC,GAAY+pB,EAAcv0E,MAAM,MAC7I,CACD0kC,gCAAoB,QAAS,CAC3Bf,MAAO6X,4BAAgB,CAAC,OAAQ,CAAE,SAAY+O,GAAYgqB,EAAcv0E,MAAM,IAAMwqD,GAAY+pB,EAAcv0E,MAAM,MACpH8I,GAAI,QAAQyhD,EAAW,KAAKC,EAAW,IACvCirB,aAAc,MACdvsB,QAAU5jB,GAAiBmvC,EAAUz0E,MAAQ,CAACuqD,EAAW,EAAGC,EAAW,GACvEkrB,QAASpwC,GAAUgwC,EAAYhwC,EAAQilB,EAAW,EAAGC,EAAW,IAC/D,KAAM,GAAI1mB,KACZ,IACD,QAEJ,WAIVY,gCAAoB,MAAOoB,GAAY,CACrCpB,gCAAoB,MAAOqB,GAAY,CACrCyB,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,MACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiB+vC,MACpD,CACDtwC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,MAGPnD,gCAAoB,MAAOsB,GAAY,CACrCwB,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,MACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBiwC,MACpD,CACDxwC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3BhiC,KAAM,UACNkhC,MAAO,MACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiByvC,KACrDhrE,MAAO,CAAC,cAAc,SACrB,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,c,UClUb,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMlC,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,qBACtBC,GAAa,CAAED,MAAO,OACtBE,GAAa,CAAEF,MAAO,OACtBG,GAAa,CACjBxjC,IAAK,EACLqjC,MAAO,OAEHmC,GAAa,CACjBxlC,IAAK,EACLqjC,MAAO,OAEHoC,GAAa,CAAEpC,MAAO,OACtBqC,GAA2BL,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,OAAQ,IACvHk8B,GAAa,CAAEtC,MAAO,OACtBuC,GAA2BP,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IACzHo8B,GAAc,CAAExC,MAAO,OACvByC,GAA4BT,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IAC1Hs8B,GAAc,CAAEt8B,MAAO,CAAC,KAAO,MAC/Bw8B,GAAc,CAClB5C,MAAO,iBACP55B,MAAO,CAAC,KAAO,MAEXylD,GAAc,CAAC,WACfC,GAAc,CAAE9rB,MAAO,iBACvB+rB,GAAc,CAAC,UAAW,gBAuBJ3rB,oCAAiB,CAC3CC,OAAQ,QACRC,MAAMC,GAER,MAAMypC,EAAc,QAAOP,MACrBrQ,EAAe,QAAOC,OAEtB2Y,EAAoB,CACxB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACxD,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACxD,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACxD,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACxD,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACxD,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACxD,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACxD,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACxD,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACxD,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACxD,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACxD,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,YAGpDxgE,EAAYzG,IACZ0B,EAAc3F,KACd,cAAE4F,EAAF,gBAAiBzB,GAAoBqT,eAAY9M,IACjD,MAAEjL,GAAU+X,eAAY7R,GAExBwlE,EAAqBvlE,EAErBwlE,EAAyBv7C,kBAAI,GAC7Bw7C,EAAsBx7C,kBAAI,GAC1By7C,EAA6Bz7C,iBAAsB,EAAE,GAAI,KAEzD,mBAAE/Y,GAAuBW,KAEzB9Y,EAAOkxB,iBAAY,QAEnBnwB,EAAamwB,iBAAc,IAC3B7X,EAAY6X,iBAAI,IAChB2H,EAAS3H,iBAAI,IAEbmI,EAAanI,kBAAI,GACjBtX,EAAWsX,kBAAI,GACfvX,EAAWuX,kBAAI,GACfxX,EAAiBwX,kBAAI,GACrBrX,EAAQqX,kBAAI,GACZ07C,EAAY17C,kBAAI,GAEtBiP,mBAAMl5B,EAAe,KACnB,GAAKA,EAAcrQ,OAAsC,UAA7BqQ,EAAcrQ,MAAMyC,KAAhD,CAGA,GAFA2G,EAAKpJ,MAAQqQ,EAAcrQ,MAAMoJ,MAAQ,OAErCiH,EAAcrQ,MAAM6iB,QAAS,CAC/B,MACE4f,WAAYwzC,EACZjzD,SAAUkzD,EACVnzD,SAAUozD,EACVrzD,eAAgBszD,EAChBnzD,MAAOozD,EACPL,UAAWM,GACTjmE,EAAcrQ,MAAM6iB,aAEJob,IAAhBg4C,IAA2BxzC,EAAWziC,MAAQi2E,QAChCh4C,IAAdi4C,IAAyBlzD,EAAShjB,MAAQk2E,QAC5Bj4C,IAAdk4C,IAAyBpzD,EAAS/iB,MAAQm2E,QACtBl4C,IAApBm4C,IAA+BtzD,EAAe9iB,MAAQo2E,QAC3Cn4C,IAAXo4C,IAAsBpzD,EAAMjjB,MAAQq2E,QACrBp4C,IAAfq4C,IAA0BN,EAAUh2E,MAAQs2E,GAGlDnsE,EAAWnK,MAAQqQ,EAAcrQ,MAAMmK,WACvCsY,EAAUziB,MAAQqQ,EAAcrQ,MAAMyiB,WAAa,OACnDwf,EAAOjiC,MAAQqQ,EAAcrQ,MAAMiiC,QAAU,KAC5C,CAAEokC,MAAM,EAAMxd,WAAW,IAE5B,MAAM56C,EAAiBnB,IACrBsD,EAAYnC,cAAc,CAAEnF,GAAI8F,EAAgB5O,MAAO8M,UACvDyU,KAIIg1D,EAAcp5E,IAClB04E,EAAuB71E,OAAQ,EAC/BiO,EAAc,CAAE9Q,UAIZwxE,EAAc3uE,IAClBiO,EAAc,CAAE7E,KAAMpJ,KAIlBw2E,EAAiBC,IACrB,MAAMlF,EAAiBlhE,EAAcrQ,MAE/B02E,EAAa,IAAKnF,EAAe1uD,WAAY4zD,GACnDxoE,EAAc,CAAE4U,QAAS6zD,KAIrB3uB,EAAc,CAAC3iD,EAAe+H,KAClC,MAAML,EAAQ,CACZ3C,WAAYA,EAAWnK,MAAMmL,IAAI,CAAC9L,EAAG5B,IAAMA,IAAM0P,EAAQ/H,EAAQ/F,IAEnE4O,EAAcnB,IAIV6pE,EAAgB,KACpB,MAAM7pE,EAAQ,CACZ3C,WAAY,IAAIA,EAAWnK,MAAOkK,EAAMlK,MAAMmK,aAEhD8D,EAAcnB,IAIV8pE,EAAmB,CAAC9uB,EAAkB36C,KAC1C,MAAMhD,EAAa29C,EAAO/mD,MAAM,EAAGoM,EAAQ,GAC3Cc,EAAc,CAAE9D,eAChB2rE,EAAoB91E,OAAQ,GAIxB62E,EAAoB1pE,IACxB,MAAML,EAAQ,CACZ3C,WAAYA,EAAWnK,MAAM0I,OAAO,CAACrJ,EAAG5B,IAAMA,IAAM0P,IAEtDc,EAAcnB,IAIVm7C,EAAmBxlC,IACvBxU,EAAc,CAAEwU,eAIZq0D,EAAgB70C,IACpBh0B,EAAc,CAAEg0B,YAGZkmB,EAAiB,IAAM0tB,EAAuB71E,OAAQ,EAO5D,OALAihD,GAAQ3oC,GAAG0oC,GAAcoH,uBAAwBD,GACjDj4B,yBAAY,KACV+wB,GAAQmD,IAAIpD,GAAcoH,uBAAwBD,KAG7C,CAAChkB,EAAUC,KAChB,MAAM+C,EAAsBD,8BAAkB,YACxC6vC,EAA4B7vC,8BAAkB,kBAC9Cg9B,EAAsBh9B,8BAAkB,YAE9C,OAAQ7C,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3D8D,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,iBACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBuwC,EAAuB71E,OAAQ,IACnF,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaL,EAAqB,CAAExD,MAAO,aAC3CiE,6BAAiB,cAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,UACsB,SAAzCA,mBAAOmxC,GAAoBpzD,WACvB6hB,yBAAcC,gCAAoBC,cAAW,CAAEjkC,IAAK,GAAK,CACxDokC,gCAAoB,MAAOd,GAAY,CACrC4D,yBAAa/C,mBAAO,SAAW,CAC7BiB,SAAUtB,EAAO,KAAOA,EAAO,GAAK7rB,GAAKi+D,EAAc,CAAEzzD,SAAUxK,EAAEoN,OAAO6mD,WAC5EA,QAASzpD,EAAS/iB,MAClB+J,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,WAEnBC,EAAG,GACF,EAAG,CAAC,YACPL,yBAAa/C,mBAAO,SAAW,CAC7BiB,SAAUtB,EAAO,KAAOA,EAAO,GAAK7rB,GAAKi+D,EAAc,CAAExzD,UAAWzK,EAAEoN,OAAO6mD,WAC7EA,SAAUxpD,EAAShjB,MACnB+J,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,WAEnBC,EAAG,GACF,EAAG,CAAC,cAETnD,gCAAoB,MAAOb,GAAY,CACrC2D,yBAAa/C,mBAAO,SAAW,CAC7BiB,SAAUtB,EAAO,KAAOA,EAAO,GAAK7rB,GAAKi+D,EAAc,CAAE/zC,WAAYlqB,EAAEoN,OAAO6mD,WAC9EA,QAAS/pC,EAAWziC,OACnB,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,YAEnBC,EAAG,GACF,EAAG,CAAC,eAER,KACH8Q,gCAAoB,IAAI,GACc,QAAzClU,mBAAOmxC,GAAoBpzD,WACvB6hB,yBAAcC,gCAAoB,MAAOR,GAAY,CACpD0D,yBAAa/C,mBAAO,SAAW,CAC7BiB,SAAUtB,EAAO,KAAOA,EAAO,GAAK7rB,GAAKi+D,EAAc,CAAE1zD,eAAgBvK,EAAEoN,OAAO6mD,WAClFA,QAAS1pD,EAAe9iB,OACvB,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,WAEnBC,EAAG,GACF,EAAG,CAAC,YACPL,yBAAa/C,mBAAO,SAAW,CAC7BiB,SAAUtB,EAAO,KAAOA,EAAO,GAAK7rB,GAAKi+D,EAAc,CAAER,UAAWz9D,EAAEoN,OAAO6mD,WAC7EA,QAASwJ,EAAUh2E,OAClB,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,GACF,EAAG,CAAC,eAET8Q,gCAAoB,IAAI,GACc,QAAzClU,mBAAOmxC,GAAoBpzD,WACvB6hB,yBAAcC,gCAAoB,MAAOwB,GAAY,CACpD0B,yBAAa/C,mBAAO,SAAW,CAC7BiB,SAAUtB,EAAO,KAAOA,EAAO,GAAK7rB,GAAKi+D,EAAc,CAAEvzD,MAAO1K,EAAEoN,OAAO6mD,WACzEA,QAASvpD,EAAMjjB,OACd,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,WAEnBC,EAAG,GACF,EAAG,CAAC,eAET8Q,gCAAoB,IAAI,GAC5BnR,yBAAa/C,mBAAO,UACpBC,gCAAoB,MAAOqB,GAAY,CACrCC,GACAwB,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACf/J,MAAOiiC,EAAOjiC,MACd0lC,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAAS82E,EAAa92E,KACzD,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,IAAM,CAChD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,SAEnBC,EAAG,IAELL,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,OAAS,CACnD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,WAEnBC,EAAG,IAELL,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,UAAY,CACtD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,WAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,YAETL,yBAAa/C,mBAAO,UACpBC,gCAAoB,MAAOuB,GAAY,CACrCC,GACAsB,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAY18D,EAAKpJ,MACjB,sBAAuBokC,EAAO,KAAOA,EAAO,GAAKpkC,GAAS2uE,EAAW3uE,KACpE,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamlC,GAAa,CACxBvnE,MAAOgE,EAAKpJ,MACZ+J,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEf89B,EAAG,MAGPnD,gCAAoB,MAAOyB,GAAa,CACtCC,GACAoB,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAYrjD,EAAUziB,MACtB,sBAAuBokC,EAAO,KAAOA,EAAO,GAAKpkC,GAASioD,EAAgBjoD,KACzE,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamlC,GAAa,CACxBvnE,MAAOqd,EAAUziB,MACjB+J,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEf89B,EAAG,MAGPL,yBAAa/C,mBAAO,WACnBJ,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYr6B,EAAWnK,MAAO,CAACoF,EAAO+H,KACpFk3B,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,MACPrjC,IAAK6M,GACJ,CACDu3B,gCAAoB,MAAO2B,GAAa1B,6BAA2B,IAAVx3B,EAAc,QAAU,IAAK,GACtFq6B,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAY1gE,EACZ,sBAAuBpF,GAAS+nD,EAAY/nD,EAAOmN,IAClD,KAAM,EAAG,CAAC,aAAc,0BAE7B43B,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,MAAO6B,GAAa,CACtCiB,yBAAamlC,GAAa,CACxBvnE,MAAOA,EACP2E,MAAO,CAAC,MAAQ,SACf,KAAM,EAAG,CAAC,UACby9B,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,MACN,CACDyF,QAAS2C,qBAAS,IAAM,CACX,IAAVv6B,GACIk3B,yBAAcC,gCAAoB,MAAO,CACxChkC,IAAK,EACLqjC,MAAO,mBACP0B,QAASkW,2BAAgBjW,GAAiBuxC,EAAiB1pE,GAAS,CAAC,UACpE,CACDq6B,yBAAauvC,IACZ,EAAGvnB,KACN7W,gCAAoB,IAAI,KAE9B9Q,EAAG,GACF,KAAM,CAAC,wBAGdA,EAAG,GACF,UAEH,MACJL,yBAAa/C,mBAAOkpC,GAAc,CAAEhqC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5Bh5B,QAAS,QACTw8B,QAAS6tC,EAAoB91E,MAC7B,mBAAoBokC,EAAO,MAAQA,EAAO,IAAOkB,GAAkBwwC,EAAqB91E,MAAQslC,IAC/F,CACD57B,QAASg+B,qBAAS,IAAM,CACtBhD,gCAAoB,MAAO+qB,GAAa,EACrCprB,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAYmxC,EAAmB,CAAChtE,EAAMwE,IACjFu3B,gCAAoB,MAAO,CAChCf,MAAO,eACPrjC,IAAK6M,GACJ,EACAk3B,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAY77B,EAAM,CAACvD,EAAO4xE,KACxE3yC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,qBAAsB,CAAE,OAAUu6B,EAA2B/1E,MAAM,KAAOmN,GAAS6pE,GAAajB,EAA2B/1E,MAAM,MACzJM,IAAK8E,EACL2E,MAAOoxC,4BAAgB,CAAE9wC,gBAAiBjF,IAC1CigC,QAAUC,GAAiBsxC,EAAiBjuE,EAAMquE,GAClDppB,aAAetoB,GAAiBywC,EAA2B/1E,MAAQ,CAACmN,EAAO6pE,GAC3EniB,aAAczwB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBywC,EAA2B/1E,MAAQ,EAAE,GAAI,KACpG,KAAM,GAAI0vD,MACX,SAEJ,SAGR3qB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,aACP55B,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,YACPL,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,aACP65B,SAAUrzD,EAAWnK,MAAMrC,QAAU,GACrCoM,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBqxC,MACtD,CACD5xC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa08B,EAAqB,CAAEvgC,MAAO,aAC3CiE,6BAAiB,aAEnBC,EAAG,GACF,EAAG,CAAC,eAETA,EAAG,IAELL,yBAAa/C,mBAAO,UACpB+C,yBAAa6d,IACb7d,yBAAa/C,mBAAO,SAAQ,CAC1BwD,QAAS4tC,EAAuB71E,MAChC,mBAAoBokC,EAAO,MAAQA,EAAO,IAAOkB,GAAkBuwC,EAAwB71E,MAAQslC,GACnGg6B,OAAQ,KACRC,SAAU,GACVv3B,UAAU,EACVxgC,MAAO,IACPg4D,eAAgB,IACf,CACDz6B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAayvC,GAAiB,CAC5B95E,KAAMsnC,mBAAOmxC,GAAoBz4E,KACjC+qC,QAAS9D,EAAO,MAAQA,EAAO,IAAOkB,GAAiBuwC,EAAuB71E,OAAQ,GACtFk3E,OAAQ9yC,EAAO,MAAQA,EAAO,IAAMpkC,GAASu2E,EAAWv2E,KACvD,KAAM,EAAG,CAAC,WAEf6nC,EAAG,GACF,EAAG,CAAC,kB,UCpdX,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMlC,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,qBACtBC,GAAa,CAAED,MAAO,OACtBE,GAA2B8B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,OAAQ,IACvH+5B,GAAa,CACjBH,MAAO,YACP55B,MAAO,CAAC,KAAO,MAEX+7B,GAAa,CAAEnC,MAAO,cACtBoC,GAAa,CAAEpC,MAAO,OACtBqC,GAA2BL,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,OAAQ,IACvHk8B,GAAa,CACjBtC,MAAO,YACP55B,MAAO,CAAC,KAAO,MAEXm8B,GAAa,CAAEvC,MAAO,cACtBwC,GAAc,CAAExC,MAAO,oBACvByC,GAA4BT,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,WAAY,IAC5Hs8B,GAAc,CAClB1C,MAAO,iBACP55B,MAAO,CAAC,KAAO,MAEXw8B,GAAc,CAAE5C,MAAO,OACvB6rB,GAAc,CAAE7rB,MAAO,OACvB8rB,GAAc,CAAE9rB,MAAO,OACvB+rB,GAA4B/pB,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IA4BpGg6B,oCAAiB,CAC3CC,OAAQ,kBACRC,MAAMC,GAER,MAAQkpC,MAAOC,EAAYC,OAAQC,GAA7B,SACEC,SAAUC,EAAgBzQ,OAAQD,GAApC,QACA2Q,EAAa,QAAMN,MACnBO,EAAc,QAAOP,MAErBh9D,EAAc3F,KACd,cAAE4F,EAAF,gBAAiBzB,EAAiBiB,mBAAoBs6C,EAAtD,eAAqE36C,GAAmByS,eAAYvT,KACpGvE,EAAagc,sBAAS,IAAM/V,EAAYlG,MAAMC,YAE9C+jE,EAAkB,CACtB,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAG5DiJ,EAAY78C,iBAAI,CACpBh0B,MAAM,EACNC,IAAI,EACJC,WAAW,EACXC,eAAe,EACfrB,MAAO,OACPC,UAAW,GACXC,SAAU,OACVC,SAAU,OACVC,MAAO,SAGH0E,EAAQowB,mBACR88C,EAAW98C,kBAAI,GACfkxB,EAAWlxB,iBAAI,GACflhB,EAAWkhB,iBAAI,GACf+8C,EAAc/8C,iBAAI,GAClBg9C,EAAch9C,iBAAI,GAExBiP,mBAAMl5B,EAAe,KACdA,EAAcrQ,OAAsC,UAA7BqQ,EAAcrQ,MAAMyC,OAEhDyH,EAAMlK,MAAQqQ,EAAcrQ,MAAMkK,MAClCktE,EAASp3E,QAAUkK,EAAMlK,MAEzBwrD,EAASxrD,MAAQqQ,EAAcrQ,MAAM7C,KAAKQ,OAC1Cyb,EAASpZ,MAAQqQ,EAAcrQ,MAAM7C,KAAK,GAAGQ,OAE7C05E,EAAYr3E,MAAQqQ,EAAcrQ,MAAM7C,KAAKQ,OAC7C25E,EAAYt3E,MAAQqQ,EAAcrQ,MAAM7C,KAAK,GAAGQ,SAC/C,CAAE0oE,MAAM,EAAMxd,WAAW,IAE5B,MAAM,mBAAEtnC,GAAuBW,KAGzBq1D,EAAsB,KAC1B,IAAKlnE,EAAcrQ,OAAsC,UAA7BqQ,EAAcrQ,MAAMyC,KAAkB,OAElE,IAAI8nD,EAAW,EACXC,EAAW,EACf,GAAIL,EAAcnqD,MAAMrC,OAAQ,CAC9B,MAAM65E,EAAertB,EAAcnqD,MAAM,GACzCuqD,GAAYitB,EAAankE,MAAM,KAAK,GACpCm3C,GAAYgtB,EAAankE,MAAM,KAAK,GAEtC,MAAMtJ,EAAQsG,EAAcrQ,MAAM7C,KAAKotD,GAAUC,GAAUzgD,MAgBzDotE,EAAUn3E,MAdP+J,EAce,CAChBzD,OAAQyD,EAAMzD,KACdC,KAAMwD,EAAMxD,GACZC,YAAauD,EAAMvD,UACnBC,gBAAiBsD,EAAMtD,cACvBrB,MAAO2E,EAAM3E,OAAS,OACtBC,UAAW0E,EAAM1E,WAAa,GAC9BC,SAAUyE,EAAMzE,UAAY,OAC5BC,SAAUwE,EAAMxE,UAAY,OAC5BC,MAAOuE,EAAMvE,OAAS,QAtBN,CAChBc,MAAM,EACNC,IAAI,EACJC,WAAW,EACXC,eAAe,EACfrB,MAAO,OACPC,UAAW,GACXC,SAAU,OACVC,SAAU,OACVC,MAAO,SAkBbyqB,uBAAU,KACJk6B,EAAcnqD,MAAMrC,QAAQ45E,MAGlChuC,mBAAM4gB,EAAeotB,GAErB,MAAMtpE,EAAiBnB,IACrBsD,EAAYnC,cAAc,CAAEnF,GAAI8F,EAAgB5O,MAAO8M,UACvDyU,KAIIk2D,EAAmBC,IACvB,MAAMnG,EAAiBlhE,EAAcrQ,MAE/B7C,EAAsB6O,KAAKG,MAAMH,KAAKC,UAAUslE,EAAep0E,OAErE,IAAK,IAAIM,EAAI,EAAGA,EAAIN,EAAKQ,OAAQF,IAC/B,IAAK,IAAIkB,EAAI,EAAGA,EAAIxB,EAAKM,GAAGE,OAAQgB,IAClC,IAAKwrD,EAAcnqD,MAAMrC,QAAUwsD,EAAcnqD,MAAMsL,SAAS,GAAG7N,KAAKkB,KAAM,CAC5E,MAAMoL,EAAQ5M,EAAKM,GAAGkB,GAAGoL,OAAS,GAClC5M,EAAKM,GAAGkB,GAAGoL,MAAQ,IAAKA,KAAU2tE,GAIxCzpE,EAAc,CAAE9Q,SAChBo6E,KAIIxvB,EAAe4vB,IACnB,IAAKztE,EAAMlK,MAAO,OAClB,MAAM43E,EAAS,IAAK1tE,EAAMlK,SAAU23E,GACpC1pE,EAAc,CAAE/D,MAAO0tE,KAInBC,EAAerL,IACnB,GAAIA,EAAS,CACX,MAAM1/D,EAAQ,CACZ5C,MAAO,CACL9E,MAAO+E,EAAWnK,MAClB2jB,WAAW,EACXC,WAAW,EACXC,WAAW,EACXC,WAAW,IAGf7V,EAAcnB,QAGdsD,EAAYjC,mBAAmB,CAAErF,GAAI8F,EAAgB5O,MAAOoO,SAAU,UACtEmT,KAKEu2D,EAAe93E,IACnB,MAAMuxE,EAAiBlhE,EAAcrQ,MAC/BwrD,EAAW+lB,EAAep0E,KAAKQ,OAErC,GAAIqC,EAAQwrD,EAAU,CACpB,MAAMnoC,EAAwB,IAAI9f,MAAM6V,EAASpZ,OAAOoJ,KAAK,CAAEN,GAAIyF,eAAO,IAAK+U,QAAS,EAAGC,QAAS,EAAG/Y,KAAM,KACvGutE,EAA+B,IAAIx0E,MAAMvD,EAAQwrD,GAAUpiD,KAAKia,GAEhEkmC,EAA4Bv9C,KAAKG,MAAMH,KAAKC,UAAUslE,EAAep0E,OAC3EosD,EAAWtrD,QAAQ85E,GAEnB9pE,EAAc,CAAE9Q,KAAMosD,QAEnB,CACH,MAAMA,EAA4BgoB,EAAep0E,KAAK4D,MAAM,EAAGf,GAC/DiO,EAAc,CAAE9Q,KAAMosD,MAKpByuB,EAAeh4E,IACnB,MAAMuxE,EAAiBlhE,EAAcrQ,MAC/BoZ,EAAWm4D,EAAep0E,KAAK,GAAGQ,OAExC,IAAI4rD,EAAagoB,EAAep0E,KAC5BwsD,EAAc4nB,EAAe7tD,UAAUvY,IAAIxC,GAAQA,EAAO4oE,EAAe/pE,OAE7E,GAAIxH,EAAQoZ,EAAU,CACpBmwC,EAAaA,EAAWp+C,IAAIxC,IAC1B,MAAMmJ,EAAqB,IAAIvO,MAAMvD,EAAQoZ,GAAUhQ,KAAK,CAAEN,GAAIyF,eAAO,IAAK+U,QAAS,EAAGC,QAAS,EAAG/Y,KAAM,KAE5G,OADA7B,EAAK1K,QAAQ6T,GACNnJ,IAGT,MAAMsvE,EAA2B,IAAI10E,MAAMvD,EAAQoZ,GAAUhQ,KAAK,KAClEugD,EAAY1rD,QAAQg6E,QAGpB1uB,EAAaA,EAAWp+C,IAAIxC,GAAQA,EAAK5H,MAAM,EAAGf,IAClD2pD,EAAcA,EAAY5oD,MAAM,EAAGf,GAGrC,MAAMwH,EAAQmiD,EAAYE,OAAO,CAACC,EAAGC,IAAMD,EAAIC,GACzCrmC,EAAYimC,EAAYx+C,IAAIxC,GAAQA,EAAOnB,GAE3CsF,EAAQ,CACZtF,QACArK,KAAMosD,EACN7lC,aAEFzV,EAAcnB,IAGhB,MAAO,CAACq3B,EAAUC,KAChB,MAAMk/B,EAA0Bp8B,8BAAkB,gBAC5C+nC,EAAyB/nC,8BAAkB,eAC3CgoC,EAAsBhoC,8BAAkB,YACxCgxC,EAAsBhxC,8BAAkB,YACxCkoC,EAA0BloC,8BAAkB,gBAC5CmoC,EAA4BnoC,8BAAkB,kBAC9CooC,EAA+BpoC,8BAAkB,qBACjDqoC,EAA+BroC,8BAAkB,qBACjD2oC,EAA+B3oC,8BAAkB,qBACjD4oC,EAAiC5oC,8BAAkB,uBACnD6oC,EAAgC7oC,8BAAkB,sBAClD+8B,EAAuB/8B,8BAAkB,aACzCg9B,EAAsBh9B,8BAAkB,YAE9C,OAAQ7C,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3D8D,yBAAa/C,mBAAOipC,GAAa,CAC/B6C,QAAS,GACT5sC,MAAO,OACN,CACDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACf/J,MAAOm3E,EAAUn3E,MAAMuF,SACvBmgC,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAASy3E,EAAgB,CAAElyE,SAAUvF,MACxE,CACDwwE,WAAY9oC,qBAAS,IAAM,CACzBF,yBAAa87B,KAEfv+B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAOgpC,GAAiB,CAAEvsE,MAAO,QAAU,CACtD6jC,QAAS2C,qBAAS,IAAM,EACrBrD,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOj1B,GAAkBlH,IACnF+7B,yBAAc0U,yBAAatU,mBAAOs4B,GAAe,CACvDz8D,IAAKgI,EAAKtI,MACVA,MAAOsI,EAAKtI,OACX,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,OAAQ,CAC1B36B,MAAOoxC,4BAAgB,CAAEgK,WAAY78C,EAAKtI,SACzC2kC,6BAAiBr8B,EAAKpH,OAAQ,KAEnC2mC,EAAG,GACF,KAAM,CAAC,YACR,QAENA,EAAG,IAELL,yBAAa/C,mBAAOgpC,GAAiB,CAAEvsE,MAAO,QAAU,CACtD6jC,QAAS2C,qBAAS,IAAM,EACrBrD,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOtjC,GAAamH,IAC9E+7B,yBAAc0U,yBAAatU,mBAAOs4B,GAAe,CACvDz8D,IAAKgI,EAAKtI,MACVA,MAAOsI,EAAKtI,OACX,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,OAAQ,KAAMC,6BAAiBr8B,EAAKpH,OAAQ,KAElE2mC,EAAG,GACF,KAAM,CAAC,YACR,QAENA,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,UACPL,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACf/J,MAAOm3E,EAAUn3E,MAAMsF,SACvBogC,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAASy3E,EAAgB,CAAEnyE,SAAUtF,MACxE,CACDwwE,WAAY9oC,qBAAS,IAAM,CACzBF,yBAAaynC,KAEflqC,QAAS2C,qBAAS,IAAM,EACrBrD,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAY0pC,EAAkB5oE,GACzEkiC,yBAAa/C,mBAAOs4B,GAAe,CACxCz8D,IAAKgF,EACLtF,MAAOsF,GACN,CACDy/B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiBjD,6BAAiBr/B,GAAW,KAE/CuiC,EAAG,GACF,KAAM,CAAC,WACR,OAENA,EAAG,GACF,EAAG,CAAC,YAETA,EAAG,IAELL,yBAAa/C,mBAAOkpC,GAAc,CAAEhqC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAYqR,EAAUn3E,MAAMoF,MAC5B,sBAAuBg/B,EAAO,KAAOA,EAAO,GAAKpkC,GAASy3E,EAAgB,CAAEryE,MAAOpF,MAClF,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaipC,GAAiB,CAC5BrrE,MAAO+xE,EAAUn3E,MAAMoF,MACvB2E,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa0nC,KAEfrnC,EAAG,GACF,EAAG,CAAC,YAETA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,IAELL,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAYqR,EAAUn3E,MAAMqF,UAC5B,sBAAuB++B,EAAO,KAAOA,EAAO,GAAKpkC,GAASy3E,EAAgB,CAAEpyE,UAAWrF,MACtF,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,SACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaipC,GAAiB,CAC5BrrE,MAAO+xE,EAAUn3E,MAAMqF,UACvB0E,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa0wC,KAEfrwC,EAAG,GACF,EAAG,CAAC,YAETA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,MAGPA,EAAG,IAELL,yBAAakpC,GAAqB,CAAE/sC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,MACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,QAAS2K,EAAUn3E,MAAMsG,KACzB++B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBmyC,EAAgB,CAAEnxE,MAAO6wE,EAAUn3E,MAAMsG,SAC7F,CACDy+B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa4nC,KAEfvnC,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,MACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,QAAS2K,EAAUn3E,MAAMuG,GACzB8+B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBmyC,EAAgB,CAAElxE,IAAK4wE,EAAUn3E,MAAMuG,OAC3F,CACDw+B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa6nC,KAEfxnC,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,QAAS2K,EAAUn3E,MAAMwG,UACzB6+B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBmyC,EAAgB,CAAEjxE,WAAY2wE,EAAUn3E,MAAMwG,cAClG,CACDu+B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa8nC,KAEfznC,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,QAAS2K,EAAUn3E,MAAMyG,cACzB4+B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBmyC,EAAgB,CAAEhxE,eAAgB0wE,EAAUn3E,MAAMyG,kBACtG,CACDs+B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa+nC,KAEf1nC,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,IAELL,yBAAa/C,mBAAO4oC,GAAa,CAC/B1pC,MAAO,MACP,eAAgB,QAChB3jC,MAAOm3E,EAAUn3E,MAAMwF,MACvBkgC,SAAUtB,EAAO,KAAOA,EAAO,GAAK7rB,GAAKk/D,EAAgB,CAAEjyE,MAAO+S,EAAEoN,OAAO3lB,UAC1E,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO8oC,GAAc,CAChCvtE,MAAO,OACP+J,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaqoC,KAEfhoC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,MACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO8oC,GAAc,CAChCvtE,MAAO,SACP+J,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAasoC,KAEfjoC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO8oC,GAAc,CAChCvtE,MAAO,QACP+J,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAauoC,KAEfloC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,GACF,EAAG,CAAC,UACPL,yBAAa/C,mBAAO,UACpB+C,yBAAa6d,GAAgB,CAAE8mB,OAAO,IACtC3kC,yBAAa/C,mBAAO,UACpBC,gCAAoB,MAAOd,GAAY,CACrCC,GACAa,gCAAoB,MAAOZ,GAAY,CACrC0D,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,MACP65B,SAAUhS,EAASxrD,OAAS,EAC5BqlC,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBwyC,EAAYtsB,EAASxrD,MAAQ,KACjF,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAay8B,KAEfp8B,EAAG,GACF,EAAG,CAAC,aACPnD,gCAAoB,MAAOoB,GAAYnB,6BAAiB6mB,EAASxrD,OAAQ,GACzEwnC,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,MACP65B,SAAUhS,EAASxrD,OAAS,GAC5BqlC,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBwyC,EAAYtsB,EAASxrD,MAAQ,KACnF,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa08B,KAEfr8B,EAAG,GACF,EAAG,CAAC,iBAGXnD,gCAAoB,MAAOqB,GAAY,CACrCC,GACAtB,gCAAoB,MAAOuB,GAAY,CACrCuB,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,MACP65B,SAAUpkD,EAASpZ,OAAS,EAC5BqlC,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiB0yC,EAAY5+D,EAASpZ,MAAQ,KACnF,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAay8B,KAEfp8B,EAAG,GACF,EAAG,CAAC,aACPnD,gCAAoB,MAAOwB,GAAYvB,6BAAiBvrB,EAASpZ,OAAQ,GACzEwnC,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,MACP65B,SAAUpkD,EAASpZ,OAAS,GAC5BqlC,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiB0yC,EAAY5+D,EAASpZ,MAAQ,KACnF,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa08B,KAEfr8B,EAAG,GACF,EAAG,CAAC,iBAGXL,yBAAa/C,mBAAO,UACpBC,gCAAoB,MAAOyB,GAAa,CACtCC,GACA1B,gCAAoB,MAAO2B,GAAa,CACtCmB,yBAAa/C,mBAAO,SAAS,CAC3B+nC,QAAS4K,EAASp3E,MAClB0lC,SAAUtB,EAAO,MAAQA,EAAO,IAAMooC,GAAWqL,EAAYrL,KAC5D,KAAM,EAAG,CAAC,gBAGhBtiE,EAAMlK,OACFqkC,yBAAcC,gCAAoBC,cAAW,CAAEjkC,IAAK,GAAK,CACxDokC,gCAAoB,MAAO6B,GAAa,CACtCiB,yBAAa/C,mBAAO,SAAW,CAC7BiB,SAAUtB,EAAO,MAAQA,EAAO,IAAM7rB,GAAKwvC,EAAY,CAAEpkC,UAAWpL,EAAEoN,OAAO6mD,WAC7EA,QAAStiE,EAAMlK,MAAM2jB,UACrB5Z,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,SAEnBC,EAAG,GACF,EAAG,CAAC,YACPL,yBAAa/C,mBAAO,SAAW,CAC7BiB,SAAUtB,EAAO,MAAQA,EAAO,IAAM7rB,GAAKwvC,EAAY,CAAEnkC,UAAWrL,EAAEoN,OAAO6mD,WAC7EA,QAAStiE,EAAMlK,MAAM4jB,UACrB7Z,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,SAEnBC,EAAG,GACF,EAAG,CAAC,cAETnD,gCAAoB,MAAO8qB,GAAa,CACtChoB,yBAAa/C,mBAAO,SAAW,CAC7BiB,SAAUtB,EAAO,MAAQA,EAAO,IAAM7rB,GAAKwvC,EAAY,CAAElkC,UAAWtL,EAAEoN,OAAO6mD,WAC7EA,QAAStiE,EAAMlK,MAAM6jB,UACrB9Z,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,SAEnBC,EAAG,GACF,EAAG,CAAC,YACPL,yBAAa/C,mBAAO,SAAW,CAC7BiB,SAAUtB,EAAO,MAAQA,EAAO,IAAM7rB,GAAKwvC,EAAY,CAAEjkC,UAAWvL,EAAEoN,OAAO6mD,WAC7EA,QAAStiE,EAAMlK,MAAM8jB,UACrB/Z,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,GACF,EAAG,CAAC,cAETnD,gCAAoB,MAAO+qB,GAAa,CACtCC,GACAloB,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAY57D,EAAMlK,MAAMoF,MACxB,sBAAuBg/B,EAAO,MAAQA,EAAO,IAAMpkC,GAAS+nD,EAAY,CAAE3iD,MAAOpF,MAChF,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamlC,GAAa,CACxBvnE,MAAO8E,EAAMlK,MAAMoF,MACnB2E,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEf89B,EAAG,OAGN,KACH8Q,gCAAoB,IAAI,S,UC3qBhC,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMhT,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,qBACtBC,GAAa,CAAED,MAAO,OACtBE,GAAa,CAAEF,MAAO,OACtBG,GAA2B6B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,OAAQ,IACvH+7B,GAAa,CAAEnC,MAAO,OACtBoC,GAA2BJ,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,OAAQ,IAqBjGg6B,oCAAiB,CAC3CC,OAAQ,kBACRC,MAAMC,GAER,MAAM9zB,EAAc3F,KACd,cAAE4F,GAAkB4R,eAAYvT,KAEhCypE,EAAqB9nE,EAErB0yD,EAAqBzoC,kBAAI,IAEzB,mBAAE/Y,GAAuBW,KAEzBk2D,EAAetrE,IACduD,EAAcrQ,QACnBoQ,EAAYnC,cAAc,CAAEnF,GAAIuH,EAAcrQ,MAAM8I,GAAIgE,UACxDyU,MAGI82D,EAAmBl7E,IACvBi7E,EAAY,CACVjvE,KAAMhM,EAAKgM,KACX4b,MAAO5nB,EAAK4nB,MACZvd,MAAOrK,EAAK0nB,EACZpd,OAAQtK,EAAK2nB,EACb5b,QAAS,CAAC/L,EAAK0nB,EAAG1nB,EAAK2nB,MAIrB2pC,EAAkB,IAAMsU,EAAmB/iE,OAAQ,EAOzD,OALAihD,GAAQ3oC,GAAG0oC,GAAc0N,kBAAmBD,GAC5Cv+B,yBAAY,KACV+wB,GAAQmD,IAAIpD,GAAc0N,kBAAmBD,KAGxC,CAACtqB,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrC4D,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBy9B,EAAmB/iE,OAAQ,IAC/E,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,cAEnBC,EAAG,MAGPL,yBAAa/C,mBAAO,UACpBC,gCAAoB,MAAOb,GAAY,CACrCC,GACA0D,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAYrhC,mBAAO0zC,GAAoB/yE,MACvC,sBAAuBg/B,EAAO,KAAOA,EAAO,GAAKpkC,GAASo4E,EAAY,CAAEhzE,MAAOpF,MAC9E,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamlC,GAAa,CACxBvnE,MAAOq/B,mBAAO0zC,GAAoB/yE,MAClC2E,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEf89B,EAAG,MAGPnD,gCAAoB,MAAOoB,GAAY,CACrCC,GACAyB,yBAAa/C,mBAAO,SAAc,CAChCl3B,IAAK,EACL8M,IAAK,EACLra,MAAOykC,mBAAO0zC,GAAoBnzD,YAClC0gB,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAASo4E,EAAY,CAAEpzD,YAAahlB,KACxE+J,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEfy9B,yBAAa/C,mBAAO,SAAQ,CAC1BwD,QAAS86B,EAAmB/iE,MAC5B,mBAAoBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkBy9B,EAAoB/iE,MAAQslC,GAC7Fg6B,OAAQ,KACRC,SAAU,GACV/3D,MAAO,IACPg4D,eAAgB,IACf,CACDz6B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAas9B,GAAa,CACxB9kE,MAAOykC,mBAAO0zC,GAAoBpzD,MAClCmjB,QAAS9D,EAAO,KAAOA,EAAO,GAAMkB,GAAiBy9B,EAAmB/iE,OAAQ,GAChFwlD,SAAUphB,EAAO,KAAOA,EAAO,GAAKjnC,IAAUk7E,EAAgBl7E,GAAO4lE,EAAmB/iE,OAAQ,KAC/F,KAAM,EAAG,CAAC,YAEf6nC,EAAG,GACF,EAAG,CAAC,kB,UCtHX,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMlC,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,qBACtBC,GAA2B+B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,SAAW,UAAW,IACrHE,GAAa,CAAEF,MAAO,4BACtBG,GAAa,CAAEH,MAAO,oBACtBmC,GAAa,CAAEnC,MAAO,OAaAI,oCAAiB,CAC3CC,OAAQ,kBACRC,MAAMC,GAER,MAAM9zB,EAAc3F,KACd,cAAE4F,GAAkB4R,eAAYvT,KAEhC4pE,EAAqBjoE,GAErB,mBAAEkR,GAAuBW,KAEzBq2D,EAAezrE,IACduD,EAAcrQ,QACnBoQ,EAAYnC,cAAc,CAAEnF,GAAIuH,EAAcrQ,MAAM8I,GAAIgE,UACxDyU,MAIIi3D,EAAkB78C,IACtB,MAAMtL,EAAYsL,EAAM,GACnBtL,GACLjS,GAAgBiS,GAAWvX,KAAKwX,GAAWioD,EAAY,CAAEtoB,OAAQ3/B,MAGnE,MAAO,CAAC6T,EAAUC,KAChB,MAAM8/B,EAAsBh9B,8BAAkB,YAE9C,OAAQ7C,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DE,GACAc,gCAAoB,MAAOb,GAAY,CACrC2D,yBAAaG,GAAW,CACtBjC,SAAUtB,EAAO,KAAOA,EAAO,GAAKzI,GAAS68C,EAAe78C,KAC3D,CACDoJ,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,MAAOZ,GAAY,CACrCY,gCAAoB,MAAO,CACzBf,MAAO,UACP55B,MAAOoxC,4BAAgB,CAAEuc,gBAAiB,OAAOjzB,mBAAO6zC,GAAoBroB,aAC3E,CACDzoB,yBAAa08B,IACZ,OAGPr8B,EAAG,MAGPnD,gCAAoB,MAAOoB,GAAY,CACrC0B,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBizC,EAAY,CAAEtoB,OAAQ,OAC1E,CACDlrB,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,Y,UCrEX,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMlC,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,qBACtBC,GAAa,CAAED,MAAO,OACtBE,GAA2B8B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IACzH+5B,GAAa,CAAEH,MAAO,kBACtBmC,GAA2BH,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IACzHg8B,GAAa,CACjBpC,MAAO,iBACP55B,MAAO,CAAC,KAAO,MAEXi8B,GAAa,CAAErC,MAAO,kBACtBsC,GAA2BN,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IACzHm8B,GAAa,CACjBvC,MAAO,iBACP55B,MAAO,CAAC,KAAO,MAcWg6B,oCAAiB,CAC3CC,OAAQ,kBACRC,MAAMC,GAER,MAAM9zB,EAAc3F,KACd,cAAE4F,GAAkB4R,eAAYvT,KAEhC+pE,EAAqBpoE,GAErB,mBAAEkR,GAAuBW,KAEzBw2D,EAAe5rE,IACduD,EAAcrQ,QACnBoQ,EAAYnC,cAAc,CAAEnF,GAAIuH,EAAcrQ,MAAM8I,GAAIgE,UACxDyU,MAGF,MAAO,CAAC4iB,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrCC,GACA2D,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAYrhC,mBAAOg0C,GAAoBrzE,MACvC,sBAAuBg/B,EAAO,KAAOA,EAAO,GAAKpkC,GAAS04E,EAAY,CAAEtzE,MAAOpF,MAC9E,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamlC,GAAa,CACxBvnE,MAAOq/B,mBAAOg0C,GAAoBrzE,MAClC2E,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEf89B,EAAG,MAGPnD,gCAAoB,MAAOZ,GAAY,CACrCgC,GACApB,gCAAoB,MAAOqB,GAAY,CACrCyB,yBAAa/C,mBAAO,SAAS,CAC3B+nC,QAAS/nC,mBAAOg0C,GAAoBrzD,SACpCsgB,SAAUtB,EAAO,KAAOA,EAAO,GAAKooC,GAAWkM,EAAY,CAAEtzD,SAAUonD,MACtE,KAAM,EAAG,CAAC,gBAGjB9nC,gCAAoB,MAAOsB,GAAY,CACrCC,GACAvB,gCAAoB,MAAOwB,GAAY,CACrCsB,yBAAa/C,mBAAO,SAAS,CAC3B+nC,QAAS/nC,mBAAOg0C,GAAoBtzD,KACpCugB,SAAUtB,EAAO,KAAOA,EAAO,GAAKooC,GAAWkM,EAAY,CAAEvzD,KAAMqnD,MAClE,KAAM,EAAG,CAAC,sB,UC7ErB,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAM7mC,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,qBACtBC,GAAa,CAAED,MAAO,OACtBE,GAA2B8B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IACzH+5B,GAAa,CAAEH,MAAO,OACtBmC,GAA2BH,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IACzHg8B,GAAa,CAAEpC,MAAO,OACtBqC,GAA2BL,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IACzHk8B,GAAa,CAAEtC,MAAO,OACtBuC,GAA2BP,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IAwBnGg6B,oCAAiB,CAC3CC,OAAQ,kBACRC,MAAMC,GAER,MAAQopC,OAAQC,EAAaH,MAAOC,GAA9B,SACEG,SAAUC,EAAgBzQ,OAAQD,GAApC,QACA2Q,EAAa,QAAMN,MACnBO,EAAc,QAAOP,MAErBh9D,EAAc3F,KACd,cAAEmF,EAAF,eAAiBJ,EAAjB,kBAAiCW,GAAsB8R,eAAYvT,MAEnE,mBAAE6S,GAAuBW,KAEzBjU,EAAgB,CAACnF,EAAYgE,KACjCsD,EAAYnC,cAAc,CAAEnF,KAAIgE,UAChCyU,KAGI2sD,EAAkB,CACtB,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAChE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAChE,OAAQ,OAAQ,OAAQ,QAAS,QAAS,SAGtC9kE,EAAOkxB,iBAAI,QACX/vB,EAAU+vB,iBAAuB,CACrC9yB,MAAO,EACPpC,MAAO,OACP2E,MAAO,UAIH4kE,EAAc3uE,IAClB,IAAK,MAAMoL,KAAM+E,EAAkBnQ,MAAO,CAOxC,GALc,SAAZoL,EAAG3I,MACS,UAAZ2I,EAAG3I,MACS,UAAZ2I,EAAG3I,MACHwL,EAAc7C,EAAGtC,GAAI,CAAEM,KAAMpJ,IAEf,UAAZoL,EAAG3I,KAAkB,CACvB,MAAMtF,EAAsB6O,KAAKG,MAAMH,KAAKC,UAAUb,EAAGjO,OACzD,IAAK,IAAIM,EAAI,EAAGA,EAAIN,EAAKQ,OAAQF,IAC/B,IAAK,IAAIkB,EAAI,EAAGA,EAAIxB,EAAKM,GAAGE,OAAQgB,IAAK,CACvC,MAAMoL,EAAQ5M,EAAKM,GAAGkB,GAAGoL,OAAS,GAClC5M,EAAKM,GAAGkB,GAAGoL,MAAQ,IAAKA,EAAO1E,UAAWrF,GAG9CiO,EAAc7C,EAAGtC,GAAI,CAAE3L,SAGT,UAAZiO,EAAG3I,MAAkBwL,EAAc7C,EAAGtC,GAAI,CAAE1D,MAAOpF,IAEzDoJ,EAAKpJ,MAAQA,GAITqsE,EAAiBC,IAErB,IAAK,MAAMlhE,KAAM+E,EAAkBnQ,MAAO,CACxC,GACc,SAAZoL,EAAG3I,MACS,UAAZ2I,EAAG3I,MACS,UAAZ2I,EAAG3I,MACS,UAAZ2I,EAAG3I,MACS,UAAZ2I,EAAG3I,KACH,CACA,MAAM8H,EAAUa,EAAGb,SAAW,CAAE/C,MAAO,EAAGpC,MAAO,OAAQ2E,MAAO,SAC1D+C,EAAQ,CAAEvC,QAAS,IAAKA,KAAY+hE,IAC1Cr+D,EAAc7C,EAAGtC,GAAIgE,GAGP,SAAZ1B,EAAG3I,MAAiBwL,EAAc7C,EAAGtC,GAAIwjE,GAE/C/hE,EAAQvK,MAAQ,IAAKuK,EAAQvK,SAAUssE,IAInCqM,EAAkB,CAAClyD,EAAiBzmB,KACxC,IAAK,MAAMoL,KAAM+E,EAAkBnQ,MAAO,OAIxC,IAHgB,SAAZoL,EAAG3I,MAAgC,UAAZ2I,EAAG3I,MAAH,UAAuB2I,EAAGZ,YAA1B,OAAuB,EAASd,UACzDu3C,GAAQhc,KAAK+b,GAAcmD,kBAAmB,CAAEx+B,OAAQva,EAAGtC,GAAIqP,OAAQ,CAAEsO,UAASzmB,WAEpE,UAAZoL,EAAG3I,KAAkB,CACvB,MAAMtF,EAAsB6O,KAAKG,MAAMH,KAAKC,UAAUb,EAAGjO,OACzD,IAAK,IAAIM,EAAI,EAAGA,EAAIN,EAAKQ,OAAQF,IAC/B,IAAK,IAAIkB,EAAI,EAAGA,EAAIxB,EAAKM,GAAGE,OAAQgB,IAAK,CACvC,MAAMoL,EAAQ5M,EAAKM,GAAGkB,GAAGoL,OAAS,GAClC5M,EAAKM,GAAGkB,GAAGoL,MAAQ,IAAKA,EAAO,CAAC0c,GAAUzmB,GAG9CiO,EAAc7C,EAAGtC,GAAI,CAAE3L,SAET,UAAZiO,EAAG3I,MAAgC,UAAZgkB,GACzBxY,EAAc7C,EAAGtC,GAAI,CAAE1D,MAAOpF,MAKpC,MAAO,CAACmkC,EAAUC,KAChB,MAAMk/B,EAA0Bp8B,8BAAkB,gBAC5C+nC,EAAyB/nC,8BAAkB,eAC3CgoC,EAAsBhoC,8BAAkB,YACxCioC,EAA2BjoC,8BAAkB,iBAC7C2oC,EAA+B3oC,8BAAkB,qBACjD4oC,EAAiC5oC,8BAAkB,uBACnD6oC,EAAgC7oC,8BAAkB,sBAExD,OAAQ7C,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrCC,GACA2D,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAY18D,EAAKpJ,MACjB,sBAAuBokC,EAAO,KAAOA,EAAO,GAAKpkC,GAAS2uE,EAAW3uE,KACpE,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamlC,GAAa,CACxBvnE,MAAOgE,EAAKpJ,MACZ+J,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEf89B,EAAG,MAGPL,yBAAa/C,mBAAO,UACpBC,gCAAoB,MAAOZ,GAAY,CACrCgC,GACA0B,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACf/J,MAAOuK,EAAQvK,MAAM+J,MACrB27B,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAASqsE,EAAc,CAAEtiE,MAAO/J,MACnE,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,SAAW,CACrD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,IAELL,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,UAAY,CACtD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,YAETnD,gCAAoB,MAAOqB,GAAY,CACrCC,GACAwB,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAYv7D,EAAQvK,MAAMoF,MAC1B,sBAAuBg/B,EAAO,KAAOA,EAAO,GAAKpkC,GAASqsE,EAAc,CAAEjnE,MAAOpF,MAChF,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamlC,GAAa,CACxBvnE,MAAOmF,EAAQvK,MAAMoF,OAAS,OAC9B2E,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEf89B,EAAG,MAGPnD,gCAAoB,MAAOuB,GAAY,CACrCC,GACAsB,yBAAa/C,mBAAO,SAAc,CAChCzkC,MAAOuK,EAAQvK,MAAMwH,MACrBk+B,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAASqsE,EAAc,CAAE7kE,MAAOxH,KACpE+J,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEfy9B,yBAAa/C,mBAAO,UACpB+C,yBAAa/C,mBAAOipC,GAAa,CAC/B6C,QAAS,GACT5sC,MAAO,OACN,CACDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACf/J,MAAOykC,mBAAO70B,GAAerK,SAC7BmgC,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAAS24E,EAAgB,WAAY34E,KACxE,CACDwwE,WAAY9oC,qBAAS,IAAM,CACzBF,yBAAa87B,KAEfv+B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAOgpC,GAAiB,CAAEvsE,MAAO,QAAU,CACtD6jC,QAAS2C,qBAAS,IAAM,EACrBrD,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOj1B,GAAkBlH,IACnF+7B,yBAAc0U,yBAAatU,mBAAOs4B,GAAe,CACvDz8D,IAAKgI,EAAKtI,MACVA,MAAOsI,EAAKtI,OACX,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,OAAQ,CAC1B36B,MAAOoxC,4BAAgB,CAAEgK,WAAY78C,EAAKtI,SACzC2kC,6BAAiBr8B,EAAKpH,OAAQ,KAEnC2mC,EAAG,GACF,KAAM,CAAC,YACR,QAENA,EAAG,IAELL,yBAAa/C,mBAAOgpC,GAAiB,CAAEvsE,MAAO,QAAU,CACtD6jC,QAAS2C,qBAAS,IAAM,EACrBrD,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOtjC,GAAamH,IAC9E+7B,yBAAc0U,yBAAatU,mBAAOs4B,GAAe,CACvDz8D,IAAKgI,EAAKtI,MACVA,MAAOsI,EAAKtI,OACX,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,OAAQ,KAAMC,6BAAiBr8B,EAAKpH,OAAQ,KAElE2mC,EAAG,GACF,KAAM,CAAC,YACR,QAENA,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,UACPL,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACf/J,MAAOykC,mBAAO70B,GAAetK,SAC7BogC,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAAS24E,EAAgB,WAAY34E,KACxE,CACDwwE,WAAY9oC,qBAAS,IAAM,CACzBF,yBAAaynC,KAEflqC,QAAS2C,qBAAS,IAAM,EACrBrD,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAY0pC,EAAkB5oE,GACzEkiC,yBAAa/C,mBAAOs4B,GAAe,CACxCz8D,IAAKgF,EACLtF,MAAOsF,GACN,CACDy/B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiBjD,6BAAiBr/B,GAAW,KAE/CuiC,EAAG,GACF,KAAM,CAAC,WACR,OAENA,EAAG,GACF,EAAG,CAAC,YAETA,EAAG,IAELL,yBAAa/C,mBAAOkpC,GAAc,CAAEhqC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAYrhC,mBAAO70B,GAAexK,MAClC,sBAAuBg/B,EAAO,KAAOA,EAAO,GAAKpkC,GAAS24E,EAAgB,QAAS34E,KAClF,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaipC,GAAiB,CAC5BrrE,MAAOq/B,mBAAO70B,GAAexK,MAC7B2E,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa0nC,KAEfrnC,EAAG,GACF,EAAG,CAAC,YAETA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,IAELL,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAYrhC,mBAAO70B,GAAevK,UAClC,sBAAuB++B,EAAO,KAAOA,EAAO,GAAKpkC,GAAS24E,EAAgB,YAAa34E,KACtF,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaipC,GAAiB,CAC5BrrE,MAAOq/B,mBAAO70B,GAAevK,UAC7B0E,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa2nC,KAEftnC,EAAG,GACF,EAAG,CAAC,YAETA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,IAELL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,gBACP55B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBqzC,EAAgB,eAAgB,OACpF,CACD5zC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa87B,GACb17B,6BAAiB,OAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,gBACP55B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBqzC,EAAgB,kBAAmB,OACvF,CACD5zC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa87B,GACb17B,6BAAiB,OAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,IAELL,yBAAa/C,mBAAO4oC,GAAa,CAC/B1pC,MAAO,MACP,eAAgB,QAChB3jC,MAAOykC,mBAAO70B,GAAepK,MAC7BkgC,SAAUtB,EAAO,MAAQA,EAAO,IAAM7rB,GAAKogE,EAAgB,QAASpgE,EAAEoN,OAAO3lB,SAC5E,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO8oC,GAAc,CAChCvtE,MAAO,OACP+J,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaqoC,KAEfhoC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,MACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO8oC,GAAc,CAChCvtE,MAAO,SACP+J,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAasoC,KAEfjoC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO8oC,GAAc,CAChCvtE,MAAO,QACP+J,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAauoC,KAEfloC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,GACF,EAAG,CAAC,gB,UCrcX,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMnE,GAAa,CAAEC,MAAO,uBAmBAI,oCAAiB,CAC3CC,OAAQ,QACRC,MAAMC,GAER,MAAM00C,EAAW,CACf,CAACh6D,GAAai3C,MAAOgjB,GACrB,CAACj6D,GAAa+2C,OAAQmjB,GACtB,CAACl6D,GAAam3C,OAAQgjB,GACtB,CAACn6D,GAAaq3C,MAAO+iB,GACrB,CAACp6D,GAAau3C,OAAQ8iB,GACtB,CAACr6D,GAAay3C,OAAQ6iB,GACtB,CAACt6D,GAAa23C,OAAQ4iB,GACtB,CAACv6D,GAAa63C,OAAQ2iB,GACtB,CAACx6D,GAAa+3C,OAAQ0iB,KAGlB,oBAAE1qE,EAAF,kBAAuBwB,EAAvB,cAA0CE,EAA1C,qBAAyDxB,GAAyBoT,eAAYvT,KAE9F4qE,EAAwBnzD,sBAAS,KACrC,GAAIxX,EAAoB3O,MAAMrC,OAAS,EAAG,CACxC,IAAKkR,EAAqB7O,MAAO,OAAOu5E,GAExC,MAAMC,EAAqBrpE,EAAkBnQ,MAAMgD,KAAK2F,GAAQA,EAAKG,KAAO+F,EAAqB7O,OACjG,OAAOw5E,GAAsBZ,EAASY,EAAmB/2E,OAAiB,KAG5E,OAAO4N,EAAcrQ,OAAS44E,EAASvoE,EAAcrQ,MAAMyC,OAAiB,OAG9E,MAAO,CAAC0hC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,EAC1DW,yBAAc0U,yBAAake,qCAAyBxyB,mBAAO60C,YClDhE,MAAM,GAAc,GAEL,UCFf,MAAM3zC,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,0BACtBC,GAA2B+B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,SAAW,OAAQ,IAClHE,GAA2B8B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,SAAW,OAAQ,IAClHG,GAAa,CAAEH,MAAO,OACtBmC,GAA2BH,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,MAAO,IACtHg8B,GAAa,CACjBzlC,IAAK,EACLqjC,MAAO,OAEHqC,GAAa,CACjB1lC,IAAK,EACLyJ,MAAO,CAAC,KAAO,MAEXk8B,GAAa,CAAEtC,MAAO,OACtBuC,GAA2BP,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,MAAO,IAoBhGg6B,oCAAiB,CAC3CC,OAAQ,uBACRC,MAAMC,GAER,MAAMypC,EAAc,QAAOP,MAErBh9D,EAAc3F,KACd,cAAE4F,EAAF,gBAAiBzB,GAAoBqT,eAAYvT,KAEjD1F,EAAOsxB,iBAAI,GACXrxB,EAAMqxB,iBAAI,GACV9yB,EAAQ8yB,iBAAI,GACZ7yB,EAAS6yB,iBAAI,GACb/wB,EAAS+wB,iBAAI,GACbjxB,EAAaixB,kBAAI,GAEjBuV,EAAU1pB,sBAAS,IAClB9V,EAAcrQ,OACZytC,GAASp9B,EAAcrQ,MAAMyC,OADH,IAI7Bg3E,EAAmBtzD,sBAAS,KAAK,MACrC,MAAqC,UAA9B,UAAA9V,EAAcrQ,aAAd,eAAqByC,QAAoB4N,EAAcrQ,MAAMkkB,WAEhEw1D,EAAiBvzD,sBAAS,KAAK,MACnC,MAAqC,UAA9B,UAAA9V,EAAcrQ,aAAd,eAAqByC,OAAmB4N,EAAcrQ,MAAMkkB,WAGrEqlB,mBAAMl5B,EAAe,KACdA,EAAcrQ,QAEnBgJ,EAAKhJ,MAAQwsB,mBAAMnc,EAAcrQ,MAAMgJ,KAAM,GAC7CC,EAAIjJ,MAAQwsB,mBAAMnc,EAAcrQ,MAAMiJ,IAAK,GAE3CI,EAAWrJ,MAAQ,eAAgBqQ,EAAcrQ,SAAWqQ,EAAcrQ,MAAMqJ,WAE/C,SAA7BgH,EAAcrQ,MAAMyC,OACtB+E,EAAMxH,MAAQwsB,mBAAMnc,EAAcrQ,MAAMwH,MAAO,GAC/CC,EAAOzH,MAAQwsB,mBAAMnc,EAAcrQ,MAAMyH,OAAQ,GACjD8B,EAAOvJ,MAAQ,WAAYqQ,EAAcrQ,YAAwCi+B,IAA/B5tB,EAAcrQ,MAAMuJ,OAAuBijB,mBAAMnc,EAAcrQ,MAAMuJ,OAAQ,GAAK,KAErI,CAAE88D,MAAM,EAAMxd,WAAW,IAE5B,MAAM,aAAE99B,GAAiBoC,MACnB,qBAAE6oB,GAAyB6gB,MAE3B,mBAAEt1C,GAAuBW,KAGzBy3D,EAAc35E,IAClB,MAAM8M,EAAQ,CAAE9D,KAAMhJ,GACtBoQ,EAAYnC,cAAc,CAAEnF,GAAI8F,EAAgB5O,MAAO8M,UACvDyU,KAEIq4D,EAAa55E,IACjB,MAAM8M,EAAQ,CAAE7D,IAAKjJ,GACrBoQ,EAAYnC,cAAc,CAAEnF,GAAI8F,EAAgB5O,MAAO8M,UACvDyU,KAKIs4D,EAAsB,CAACryE,EAAeC,KAC1C,GAAI4I,EAAcrQ,OAAsC,UAA7BqQ,EAAcrQ,MAAMyC,MAAoB,gBAAiB4N,EAAcrQ,OAASqQ,EAAcrQ,MAAM4gB,YAAa,CAC1I,MAAMA,EAAc/B,GAAoBxO,EAAcrQ,MAAM4gB,aAE5D,IAAIzX,EAAO,GAIX,OAH+BA,EAA3B,aAAcyX,EAAoBA,EAAYzB,QAAQ3X,EAAOC,EAAQ4I,EAAcrQ,MAAMukB,UACjF3D,EAAYzB,QAAQ3X,EAAOC,GAEhC,CACLyB,QAAS,CAAC1B,EAAOC,GACjB0B,QAGJ,OAAO,MAEH2wE,EAAe95E,IACnB,IAAI8M,EAAQ,CAAEtF,MAAOxH,GACrB,MAAMs1C,EAAgBukC,EAAoB75E,EAAOyH,EAAOzH,OACpDs1C,IAAexoC,EAAQ,IAAKA,KAAUwoC,IAE1CllC,EAAYnC,cAAc,CAAEnF,GAAI8F,EAAgB5O,MAAO8M,UACvDyU,KAEIw4D,EAAgB/5E,IACpB,IAAI8M,EAAQ,CAAErF,OAAQzH,GACtB,MAAMs1C,EAAgBukC,EAAoBryE,EAAMxH,MAAOA,GACnDs1C,IAAexoC,EAAQ,IAAKA,KAAUwoC,IAE1CllC,EAAYnC,cAAc,CAAEnF,GAAI8F,EAAgB5O,MAAO8M,UACvDyU,KAEIy4D,EAAgBh6E,IACpB,MAAM8M,EAAQ,CAAEvD,OAAQvJ,GACxBoQ,EAAYnC,cAAc,CAAEnF,GAAI8F,EAAgB5O,MAAO8M,UACvDyU,KAII04D,EAAoBj6E,IACxB,MAAM8M,EAAQ,CAAEzD,WAAYrJ,GAC5BoQ,EAAYnC,cAAc,CAAEnF,GAAI8F,EAAgB5O,MAAO8M,UACvDyU,KAII24D,EAAkBzzD,IACtB,IAAI0zD,EAA0C,GAAhC7sE,KAAKijD,MAAMhnD,EAAOvJ,MAAQ,IACxB,MAAZymB,EAAiB0zD,GAAoB,GACpB,MAAZ1zD,IAAiB0zD,GAAoB,IAE1CA,GAAW,MAAKA,GAAW,KAC3BA,EAAU,MAAKA,EAAU,KAE7B,MAAMrtE,EAAQ,CAAEvD,OAAQ4wE,GACxB/pE,EAAYnC,cAAc,CAAEnF,GAAI8F,EAAgB5O,MAAO8M,UACvDyU,KAGF,MAAO,CAAC4iB,EAAUC,KAChB,MAAMg2C,EAA4BlzC,8BAAkB,kBAC9CmzC,EAAiCnzC,8BAAkB,uBACnDozC,EAA8BpzC,8BAAkB,oBAChDqzC,EAA4BrzC,8BAAkB,kBAC9CszC,EAA2BtzC,8BAAkB,iBAC7CuzC,EAAiCvzC,8BAAkB,uBACnDwzC,EAA4BxzC,8BAAkB,kBAC9CyzC,EAA0BzzC,8BAAkB,gBAC5C0zC,EAAmC1zC,8BAAkB,yBACrD2zC,EAA6B3zC,8BAAkB,mBAC/C4zC,EAAsB5zC,8BAAkB,YACxC6zC,EAAwB7zC,8BAAkB,cAC1C8zC,EAAwB9zC,8BAAkB,cAEhD,OAAQ7C,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DE,GACA4D,yBAAa/C,mBAAOkpC,GAAc,CAAEhqC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAO1Z,EAAP0Z,CAAqBA,mBAAOp0B,GAAiBo0B,mBAAOhuB,GAAsBuU,OAC9H,CACD+Z,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa4yC,EAA2B,CAAEz2C,MAAO,aACjDiE,6BAAiB,SAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAO1Z,EAAP0Z,CAAqBA,mBAAOp0B,GAAiBo0B,mBAAOhuB,GAAsBwU,UAC9H,CACD8Z,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa6yC,EAAgC,CAAE12C,MAAO,aACtDiE,6BAAiB,SAEnBC,EAAG,MAGPA,EAAG,IAELL,yBAAa/C,mBAAOkpC,GAAc,CAAEhqC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAO1Z,EAAP0Z,CAAqBA,mBAAOp0B,GAAiBo0B,mBAAOhuB,GAAsBiQ,MAC9H,CACDqe,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa8yC,EAA6B,CAAE32C,MAAO,aACnDiE,6BAAiB,SAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAO1Z,EAAP0Z,CAAqBA,mBAAOp0B,GAAiBo0B,mBAAOhuB,GAAsBkQ,QAC9H,CACDoe,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa+yC,EAA2B,CAAE52C,MAAO,aACjDiE,6BAAiB,SAEnBC,EAAG,MAGPA,EAAG,IAELL,yBAAa/C,mBAAO,UACpBZ,GACA2D,yBAAa/C,mBAAOkpC,GAAc,CAAEhqC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAOuR,EAAPvR,CAA6BA,mBAAO/tB,GAAsBmT,QAC9G,CACDkb,QAAS2C,qBAAS,IAAM,CACtBF,yBAAagzC,KAEf3yC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAOuR,EAAPvR,CAA6BA,mBAAO/tB,GAAsB2/B,cAC9G,CACDtR,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaizC,KAEf5yC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAOuR,EAAPvR,CAA6BA,mBAAO/tB,GAAsBoT,SAC9G,CACDib,QAAS2C,qBAAS,IAAM,CACtBF,yBAAakzC,KAEf7yC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,IAELL,yBAAa/C,mBAAOkpC,GAAc,CAAEhqC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAOuR,EAAPvR,CAA6BA,mBAAO/tB,GAAsBsU,OAC9G,CACD+Z,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamzC,KAEf9yC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAOuR,EAAPvR,CAA6BA,mBAAO/tB,GAAsB0/B,YAC9G,CACDrR,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaozC,KAEf/yC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAOuR,EAAPvR,CAA6BA,mBAAO/tB,GAAsBuU,UAC9G,CACD8Z,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaqzC,KAEfhzC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,IAELL,yBAAa/C,mBAAO,UACpBC,gCAAoB,MAAOZ,GAAY,CACrC0D,yBAAa/C,mBAAO,SAAc,CAChCtxB,OAAQ,MACRwW,KAAM,EACN3pB,MAAOgJ,EAAKhJ,MACZ0lC,SAAUtB,EAAO,MAAQA,EAAO,IAAMpkC,GAAS25E,EAAW35E,IAC1D+J,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,UACb+7B,GACA0B,yBAAa/C,mBAAO,SAAc,CAChCtxB,OAAQ,MACRwW,KAAM,EACN3pB,MAAOiJ,EAAIjJ,MACX0lC,SAAUtB,EAAO,MAAQA,EAAO,IAAMpkC,GAAS45E,EAAU55E,IACzD+J,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEkB,SAAhC06B,mBAAOp0B,GAAgB5N,MACnB4hC,yBAAcC,gCAAoB,MAAOyB,GAAY,CACpDyB,yBAAa/C,mBAAO,SAAc,CAChCtxB,OAAQ,MACR5F,IAAKk3B,mBAAOoL,GACZx1B,IAAK,KACLsP,KAAM,EACN6zC,SAAU/4B,mBAAOi1C,GACjB15E,MAAOwH,EAAMxH,MACb0lC,SAAUtB,EAAO,MAAQA,EAAO,IAAMpkC,GAAS85E,EAAY95E,IAC3D+J,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,MAAO,WAAY,UAC/B,CAAC,QAAS,QAAS,SAASuB,SAASm5B,mBAAOp0B,GAAgB5N,OACxD4hC,yBAAcC,gCAAoBC,cAAW,CAAEjkC,IAAK,GAAK,CACvD+I,EAAWrJ,OACPqkC,yBAAc0U,yBAAatU,mBAAO,SAAU,CAC3CnkC,IAAK,EACLwnC,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,WACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaszC,EAAqB,CAChC/wE,MAAO,CAAC,KAAO,KACf45B,MAAO,WACP0B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiB20C,GAAiB,QAG5EpyC,EAAG,GACF,EAAG,CAAC,sBACNxD,yBAAc0U,yBAAatU,mBAAO,SAAU,CAC3CnkC,IAAK,EACLwnC,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,SACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAauzC,EAAuB,CAClChxE,MAAO,CAAC,KAAO,KACf45B,MAAO,WACP0B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiB20C,GAAiB,QAG5EpyC,EAAG,GACF,EAAG,CAAC,sBACV,MACFxD,yBAAcC,gCAAoB,MAAO0B,KAC9CwB,yBAAa/C,mBAAO,SAAc,CAChCtxB,OAAQ,MACR5F,IAAKk3B,mBAAOoL,GACZx1B,IAAK,IACLsP,KAAM,EACN6zC,SAAU/4B,mBAAOg1C,IAAqD,UAAhCh1C,mBAAOp0B,GAAgB5N,KAC7DzC,MAAOyH,EAAOzH,MACd0lC,SAAUtB,EAAO,MAAQA,EAAO,IAAMpkC,GAAS+5E,EAAa/5E,IAC5D+J,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,MAAO,WAAY,aAElC4uC,gCAAoB,IAAI,GAC1B,CAAC,OAAQ,QAAS,SAASrtC,SAASm5B,mBAAOp0B,GAAgB5N,MAkCzDk2C,gCAAoB,IAAI,IAjCvBtU,yBAAcC,gCAAoBC,cAAW,CAAEjkC,IAAK,GAAK,CACxDknC,yBAAa/C,mBAAO,UACpBC,gCAAoB,MAAOuB,GAAY,CACrCuB,yBAAa/C,mBAAO,SAAc,CAChCtxB,OAAQ,MACR5F,KAAM,IACN8M,IAAK,IACLsP,KAAM,EACN3pB,MAAOuJ,EAAOvJ,MACd0lC,SAAUtB,EAAO,MAAQA,EAAO,IAAMpkC,GAASg6E,EAAah6E,IAC5D+J,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,UACbm8B,GACAxB,gCAAoB,MAAO,CACzBf,MAAO,WACP0B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiB40C,EAAe,MACtEnwE,MAAO,CAAC,KAAO,MACd,CACDy9B,yBAAawzC,GACbpzC,6BAAiB,WAEnBlD,gCAAoB,MAAO,CACzBf,MAAO,WACP0B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiB40C,EAAe,MACtEnwE,MAAO,CAAC,KAAO,MACd,CACDy9B,yBAAawzC,EAAuB,CAClCjxE,MAAOoxC,4BAAgB,CAAEoB,UAAW,qBACnC,KAAM,EAAG,CAAC,UACb3U,6BAAiB,cAGpB,W,UCjcX,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCRR,MAAMqzC,GAA6B,IAC7BC,GAA4B,QAC5BC,GAAyB,YAEzBC,GAAmB,CAC9B,CACE34E,KAAM,SACNlD,KAAM,KACNyX,SAAU,CACR,CAAEzX,KAAM,KAAMS,MAAO,YACrB,CAAET,KAAM,OAAQS,MAAO,gBACvB,CAAET,KAAM,OAAQS,MAAO,iBACvB,CAAET,KAAM,OAAQS,MAAO,cACvB,CAAET,KAAM,OAAQS,MAAO,kBAG3B,CACEyC,KAAM,OACNlD,KAAM,KACNyX,SAAU,CACR,CAAEzX,KAAM,KAAMS,MAAO,UACrB,CAAET,KAAM,OAAQS,MAAO,cACvB,CAAET,KAAM,SAAUS,MAAO,iBACzB,CAAET,KAAM,OAAQS,MAAO,cACvB,CAAET,KAAM,SAAUS,MAAO,iBACzB,CAAET,KAAM,OAAQS,MAAO,eACvB,CAAET,KAAM,SAAUS,MAAO,kBACzB,CAAET,KAAM,OAAQS,MAAO,YACvB,CAAET,KAAM,SAAUS,MAAO,eACzB,CAAET,KAAM,QAASS,MAAO,iBACxB,CAAET,KAAM,QAASS,MAAO,kBACxB,CAAET,KAAM,QAASS,MAAO,oBACxB,CAAET,KAAM,QAASS,MAAO,uBAG5B,CACEyC,KAAM,SACNlD,KAAM,KACNyX,SAAU,CACR,CAAEzX,KAAM,OAAQS,MAAO,YACvB,CAAET,KAAM,QAASS,MAAO,oBACxB,CAAET,KAAM,QAASS,MAAO,qBACxB,CAAET,KAAM,QAASS,MAAO,kBACxB,CAAET,KAAM,QAASS,MAAO,qBAG5B,CACEyC,KAAM,OACNlD,KAAM,KACNyX,SAAU,CACR,CAAEzX,KAAM,OAAQS,MAAO,UACvB,CAAET,KAAM,SAAUS,MAAO,cACzB,CAAET,KAAM,SAAUS,MAAO,cACzB,CAAET,KAAM,SAAUS,MAAO,eACzB,CAAET,KAAM,SAAUS,MAAO,cAG7B,CACEyC,KAAM,QACNlD,KAAM,KACNyX,SAAU,CACR,CAAEzX,KAAM,OAAQS,MAAO,eACvB,CAAET,KAAM,OAAQS,MAAO,eACvB,CAAET,KAAM,OAAQS,MAAO,gBACvB,CAAET,KAAM,OAAQS,MAAO,eAG3B,CACEyC,KAAM,OACNlD,KAAM,KACNyX,SAAU,CACR,CAAEzX,KAAM,SAAUS,MAAO,WACzB,CAAET,KAAM,SAAUS,MAAO,aAG7B,CACEyC,KAAM,OACNlD,KAAM,OACNyX,SAAU,CACR,CAAEzX,KAAM,SAAUS,MAAO,cACzB,CAAET,KAAM,SAAUS,MAAO,cACzB,CAAET,KAAM,SAAUS,MAAO,eACzB,CAAET,KAAM,SAAUS,MAAO,cAG7B,CACEyC,KAAM,aACNlD,KAAM,KACNyX,SAAU,CACR,CAAEzX,KAAM,OAAQS,MAAO,qBACvB,CAAET,KAAM,OAAQS,MAAO,uBAKhBq7E,GAAkB,CAC7B,CACE54E,KAAM,SACNlD,KAAM,KACNyX,SAAU,CACR,CAAEzX,KAAM,KAAMS,MAAO,aACrB,CAAET,KAAM,OAAQS,MAAO,iBACvB,CAAET,KAAM,OAAQS,MAAO,kBACvB,CAAET,KAAM,OAAQS,MAAO,eACvB,CAAET,KAAM,OAAQS,MAAO,mBAG3B,CACEyC,KAAM,OACNlD,KAAM,KACNyX,SAAU,CACR,CAAEzX,KAAM,KAAMS,MAAO,WACrB,CAAET,KAAM,OAAQS,MAAO,eACvB,CAAET,KAAM,SAAUS,MAAO,kBACzB,CAAET,KAAM,OAAQS,MAAO,eACvB,CAAET,KAAM,SAAUS,MAAO,kBACzB,CAAET,KAAM,OAAQS,MAAO,gBACvB,CAAET,KAAM,SAAUS,MAAO,mBACzB,CAAET,KAAM,OAAQS,MAAO,aACvB,CAAET,KAAM,SAAUS,MAAO,gBACzB,CAAET,KAAM,QAASS,MAAO,kBACxB,CAAET,KAAM,QAASS,MAAO,mBACxB,CAAET,KAAM,QAASS,MAAO,qBACxB,CAAET,KAAM,QAASS,MAAO,wBAG5B,CACEyC,KAAM,SACNlD,KAAM,KACNyX,SAAU,CACR,CAAEzX,KAAM,OAAQS,MAAO,aACvB,CAAET,KAAM,QAASS,MAAO,qBACxB,CAAET,KAAM,QAASS,MAAO,sBACxB,CAAET,KAAM,QAASS,MAAO,mBACxB,CAAET,KAAM,QAASS,MAAO,sBAG5B,CACEyC,KAAM,OACNlD,KAAM,KACNyX,SAAU,CACR,CAAEzX,KAAM,OAAQS,MAAO,WACvB,CAAET,KAAM,SAAUS,MAAO,eACzB,CAAET,KAAM,SAAUS,MAAO,eACzB,CAAET,KAAM,SAAUS,MAAO,gBACzB,CAAET,KAAM,SAAUS,MAAO,eAG7B,CACEyC,KAAM,QACNlD,KAAM,KACNyX,SAAU,CACR,CAAEzX,KAAM,OAAQS,MAAO,gBACvB,CAAET,KAAM,OAAQS,MAAO,gBACvB,CAAET,KAAM,OAAQS,MAAO,iBACvB,CAAET,KAAM,OAAQS,MAAO,gBAG3B,CACEyC,KAAM,OACNlD,KAAM,KACNyX,SAAU,CACR,CAAEzX,KAAM,SAAUS,MAAO,YACzB,CAAET,KAAM,SAAUS,MAAO,cAG7B,CACEyC,KAAM,OACNlD,KAAM,OACNyX,SAAU,CACR,CAAEzX,KAAM,SAAUS,MAAO,eACzB,CAAET,KAAM,SAAUS,MAAO,eACzB,CAAET,KAAM,SAAUS,MAAO,gBACzB,CAAET,KAAM,SAAUS,MAAO,eAG7B,CACEyC,KAAM,aACNlD,KAAM,KACNyX,SAAU,CACR,CAAEzX,KAAM,OAAQS,MAAO,sBACvB,CAAET,KAAM,OAAQS,MAAO,wBAKhBs7E,GAAuB,CAClC,CACE74E,KAAM,QACNlD,KAAM,KACNyX,SAAU,CACR,CAAEzX,KAAM,OAAQS,MAAO,UACvB,CAAET,KAAM,OAAQS,MAAO,UACvB,CAAET,KAAM,KAAMS,MAAO,aACrB,CAAET,KAAM,KAAMS,MAAO,SACrB,CAAET,KAAM,KAAMS,MAAO,UACrB,CAAET,KAAM,KAAMS,MAAO,QACrB,CAAET,KAAM,KAAMS,MAAO,WAGzB,CACEyC,KAAM,QACNlD,KAAM,KACNyX,SAAU,CACR,CAAEzX,KAAM,KAAMS,MAAO,UACrB,CAAET,KAAM,KAAMS,MAAO,SACrB,CAAET,KAAM,KAAMS,MAAO,SACrB,CAAET,KAAM,MAAOS,MAAO,cACtB,CAAET,KAAM,QAASS,MAAO,gBC7MxB2lC,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,2BACtBC,GAAa,CACjBtjC,IAAK,EACLqjC,MAAO,qBAEHE,GAAa,CAAEF,MAAO,QACtBG,GAAa,CAAC,WACdgC,GAAa,CAAEnC,MAAO,cACtBoC,GAAa,CAAEpC,MAAO,qBACtBqC,GAAa,CAAC,eAAgB,WAC9BC,GAAa,CACjB3lC,IAAK,EACLqjC,MAAO,QAEHuC,GAAa,CACjB5lC,IAAK,EACLqjC,MAAO,OAEHwC,GAAc,CAAExC,MAAO,oBACvByC,GAAc,CAAEzC,MAAO,SACvB0C,GAAc,CAAE1C,MAAO,QACvB4C,GAAc,CAAE5C,MAAO,WACvB6rB,GAAc,CAClBlvD,IAAK,EACLqjC,MAAO,WAEH8rB,GAAc,CAAE9rB,MAAO,eACvB+rB,GAA4B/pB,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IAC1H4lD,GAAc,CAAEhsB,MAAO,eACvBisB,GAA4BjqB,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IAC1H8lD,GAAc,CAAElsB,MAAO,eAkCDI,oCAAiB,CAC3CC,OAAQ,wBACRC,MAAMC,GAER,MAAM64B,EAAe,QAAOC,OAEtBue,EAA8C,GACpD,IAAK,MAAMC,KAAUJ,GACnB,IAAK,MAAM/vE,KAAamwE,EAAOxkE,SAC7BukE,EAAiBlwE,EAAUrL,OAASqL,EAAU9L,KAGlD,IAAK,MAAMi8E,KAAUH,GACnB,IAAK,MAAMhwE,KAAamwE,EAAOxkE,SAC7BukE,EAAiBlwE,EAAUrL,OAASqL,EAAU9L,KAGlD,IAAK,MAAMi8E,KAAUF,GACnB,IAAK,MAAMjwE,KAAamwE,EAAOxkE,SAC7BukE,EAAiBlwE,EAAUrL,OAASqL,EAAU9L,KAIlD,MAAMk8E,EAAkC,CAAC,KAAM,MAAO,aAEhDrrE,EAAc3F,KACd,cAAE4F,EAAF,gBAAiBzB,GAAoBqT,eAAYvT,MACjD,aAAE5D,EAAF,mBAAgBU,EAAhB,uBAAoCT,GAA2BkX,eAAY7R,GAE3E+sD,EAAkB,CACtB,CAAE78D,IAAK,KAAMY,MAAO,MACpB,CAAEZ,IAAK,MAAOY,MAAO,MACrB,CAAEZ,IAAK,YAAaY,MAAO,OAEvBw6E,EAAYphD,iBAAI,MAEtBiP,mBAAM,IAAM36B,EAAgB5O,MAAO,KACjC27E,EAAqB37E,OAAQ,IAG/B,MAAM47E,EAAwBthD,iBAAI,IAC5BqhD,EAAuBrhD,kBAAI,IAE3B,mBAAE/Y,GAAuBW,KAGzB25D,EAAoB11D,sBAAS,KACjC,MAAM01D,EAAoB,GAC1B,IAAK,IAAIp+E,EAAI,EAAGA,EAAI+N,EAAmBxL,MAAMrC,OAAQF,IAAK,CACxD,MAAMkL,EAAO6C,EAAmBxL,MAAMvC,GACtC,IAAK,IAAIkB,EAAI,EAAGA,EAAIgK,EAAKqC,WAAWrN,OAAQgB,IAAK,CAC/C,MAAM0M,EAAY1C,EAAKqC,WAAWrM,GAC5ByM,EAAKN,EAAa9K,MAAM+I,SAAS/F,KAAKoI,GAAMA,EAAGtC,KAAOuC,EAAUE,MACtE,IAAKH,EAAI,SAET,MAAM0wE,EAASzuC,GAAgBjiC,EAAG3I,MAC5Bs5E,EAAkBR,EAAiBlwE,EAAUmwE,QACnDK,EAAkB59E,KAAK,IAClBoN,EACH8B,MAAa,IAANxO,EAAUlB,EAAI,EAAI,GACzBq+E,SACAC,qBAIN,OAAOF,IAIHG,EAAyB71D,sBAAS,KACtC,MAAMnb,EAAaD,EAAuB/K,MACpCqL,EAAYL,EAAWtC,OAAOC,GAAQA,EAAK4C,OAASqD,EAAgB5O,OAC1E,OAAOqL,GAAa,KAIhB4wE,EAAmBnzE,IACvB,MAAMkC,EAAaD,EAAuB/K,MAAM0I,OAAOC,GAAQA,EAAKG,KAAOA,GAC3EsH,EAAYvD,YAAY,CAAE7B,eAC1BuW,KAIIikD,EAAiBC,IACrB,MAAM,SAAEp4D,EAAF,SAAYsa,GAAa89C,EAC/B,GAAI99C,IAAata,EAAU,OAE3B,MAAMrC,EAA6BgB,KAAKG,MAAMH,KAAKC,UAAUlB,EAAuB/K,QAC9EqL,EAAYL,EAAW2c,GAC7B3c,EAAWnM,OAAO8oB,EAAU,GAC5B3c,EAAWnM,OAAOwO,EAAU,EAAGhC,GAE/B+E,EAAYvD,YAAY,CAAE7B,eAC1BuW,KAII26D,EAAe,CAAC3wE,EAAciwE,EAAgBzqB,KAClD,MAAMorB,EAAQv0E,SAASwc,cAAc,qBAAqB7Y,gCAC1D,GAAI4wE,EAAO,CACT,MAAMC,EAAgB,GAAGjB,KAAyBK,IAClD5zE,SAASwjB,gBAAgBrhB,MAAMi+C,YAAY,qBAAyB+I,EAAH,MACjEorB,EAAM7Q,UAAU52D,IAAOymE,GAAH,WAAqCiB,GAEzD,MAAMC,EAAqB,KACzBz0E,SAASwjB,gBAAgBrhB,MAAMuyE,eAAe,sBAC9CH,EAAM7Q,UAAU39C,OAAUwtD,GAAH,WAAqCiB,IAE9DD,EAAM39D,iBAAiB,eAAgB69D,EAAoB,CAAEE,MAAM,MAKjEC,EAAiC,CAAC1zE,EAAYioD,KAClD,GAAIA,EAAW,KAAOA,EAAW,IAAM,OAEvC,MAAM/lD,EAAaD,EAAuB/K,MAAMmL,IAAIxC,GAC9CA,EAAKG,KAAOA,EAAW,IAAKH,EAAMooD,YAC/BpoD,GAETyH,EAAYvD,YAAY,CAAE7B,eAC1BuW,KAIIk7D,EAAgC,CAAC3zE,EAAY2C,KACjD,MAAMT,EAAaD,EAAuB/K,MAAMmL,IAAIxC,GAC9CA,EAAKG,KAAOA,EAAW,IAAKH,EAAM8C,WAC/B9C,GAETyH,EAAYvD,YAAY,CAAE7B,eAC1BuW,KAIIm7D,EAAyB,CAACj6E,EAAqB+4E,KACnD,MAAMxwE,EAAaD,EAAuB/K,MAAMmL,IAAIxC,GAC9CA,EAAKG,KAAO6zE,EAAkB38E,MAAc,IAAK2I,EAAMlG,OAAM+4E,UAC1D7yE,GAETyH,EAAYvD,YAAY,CAAE7B,eAC1B2wE,EAAqB37E,OAAQ,EAC7BuhB,IAEA,MAAMq7D,EAAgB7xE,EAAuB/K,MAAMgD,KAAK2F,GAAQA,EAAK4C,OAASqD,EAAgB5O,OACxF+wD,GAAwB,OAAb6rB,QAAa,IAAbA,OAAA,EAAAA,EAAe7rB,WAAYkqB,GAE5CiB,EAAattE,EAAgB5O,MAAOw7E,EAAQzqB,IAGxC4rB,EAAoBriD,iBAAI,IAExBuiD,EAAe,CAACp6E,EAAqB+4E,KACzC,GAAImB,EAAkB38E,MAEpB,YADA08E,EAAuBj6E,EAAM+4E,GAI/B,MAAMxwE,EAA6BgB,KAAKG,MAAMH,KAAKC,UAAUlB,EAAuB/K,QACpFgL,EAAW/M,KAAK,CACd6K,GAAIyF,eAAO,IACXhD,KAAMqD,EAAgB5O,MACtByC,OACA+4E,SACAzqB,SAAUkqB,GACVxvE,QAASyvE,KAEX9qE,EAAYvD,YAAY,CAAE7B,eAC1B2wE,EAAqB37E,OAAQ,EAC7BuhB,IAEA26D,EAAattE,EAAgB5O,MAAOw7E,EAAQP,KAIxC6B,EAAkBxiD,kBAAI,GACtByiD,EAA8B90C,IAC9BA,EACF7lB,WAAW,IAAM06D,EAAgB98E,OAAQ,EAAM,KAE5C88E,EAAgB98E,OAAQ,GAGzBg9E,EAAqBjvE,IACzB4tE,EAAqB37E,OAAQ,EAC7B28E,EAAkB38E,MAAQ+N,EAC1BgvE,GAA2B,IAGvB/xE,EAAa,CACjBiyE,GAAI7B,GACJ8B,IAAK7B,GACL8B,UAAW7B,IAGb,MAAO,CAACn3C,EAAUC,KAChB,MAAMg5C,EAAyBl2C,8BAAkB,eAC3Cm2C,EAAuBn2C,8BAAkB,aACzC6sB,EAAyB7sB,8BAAkB,eAC3C6vC,EAA4B7vC,8BAAkB,kBAEpD,OAAQ7C,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC1De,mBAAOp0B,IACHg0B,yBAAcC,gCAAoB,MAAOV,GAAY,CACpD4D,yBAAa/C,mBAAO,SAAU,CAC5Bh5B,QAAS,QACTw8B,QAAS0zC,EAAqB37E,MAC9B,mBAAoBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkBq2C,EAAsB37E,MAAQslC,GAC/Fg4C,gBAAiBl5C,EAAO,KAAOA,EAAO,GAAK6D,GAAW80C,EAA2B90C,KAChF,CACDv+B,QAASg+B,qBAAS,IAAM,CACtBhD,gCAAoB,MAAOb,GAAY,EACpCQ,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAY24B,EAAOG,GAC9D54B,gCAAoB,MAAO,CAChCf,MAAO6X,4BAAgB,CAAC,MAAO8hB,EAAIh9D,IAAK,CAAE,OAAUo7E,EAAU17E,QAAUs9D,EAAIh9D,OAC5EA,IAAKg9D,EAAIh9D,IACT+kC,QAAUC,GAAiBo2C,EAAU17E,MAAQs9D,EAAIh9D,KAChDqkC,6BAAiB24B,EAAIp8D,OAAQ,GAAI4iC,KAClC,QAELO,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAYi3C,EAAiBn7E,IACvE+jC,yBAAcC,gCAAoBC,cAAW,KAAM,CACxDm3C,EAAU17E,QAAUM,GAChB+jC,yBAAcC,gCAAoB,MAAO,CACxCX,MAAO6X,4BAAgB,CAAC,iBAAkBl7C,IAC1CA,IAAKA,GACJ,EACA+jC,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYx5B,EAAW1K,GAAOk7E,IAC5En3C,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,YACPrjC,IAAKk7E,EAAOj8E,MACX,CACDmlC,gCAAoB,MAAOoB,GAAYnB,6BAAiB62C,EAAOj8E,MAAQ,IAAK,GAC5EmlC,gCAAoB,MAAOqB,GAAY,EACpC1B,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYg3C,EAAOxkE,SAAWrO,IAC5E07B,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,YACPrjC,IAAKqI,EAAKpJ,KACVquD,aAAetoB,GAAiBs2C,EAAsB57E,MAAQ2I,EAAK3I,MACnE60D,aAAczwB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBs2C,EAAsB57E,MAAQ,IACxFqlC,QAAUC,GAAiBu3C,EAAav8E,EAAKqI,EAAK3I,QACjD,CACD0kC,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,gBAAiB,CAClD/W,mBAAO02C,IAAV,WACG12C,mBAAO02C,IAAV,OACAS,EAAsB57E,QAAU2I,EAAK3I,OAAS,GAAGykC,mBAAO02C,MAA0BxyE,EAAK3I,YAE1E2kC,6BAAiBh8B,EAAKpJ,MAAO,IAC/B,GAAIymC,MACL,YAGN,MACF82C,EAAgB98E,MAEd24C,gCAAoB,IAAI,IADvBtU,yBAAcC,gCAAoB,MAAO2B,MAE7C,IACH0S,gCAAoB,IAAI,IAC3B,MACD,OAEN5T,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,wBACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBq3C,EAAkB38E,MAAQ,KAC9E,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa41C,EAAwB,CAAErzE,MAAO,CAAC,eAAe,SAC9D69B,6BAAiB,YAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,gBAERxD,yBAAcC,gCAAoB,MAAO4B,GAAY,CACpDsB,yBAAa61C,EAAsB,CAAEtzE,MAAO,CAAC,eAAe,SAC5D69B,6BAAiB,oBAEvBJ,yBAAa/C,mBAAO,UACpB+C,yBAAa/C,mBAAOohC,MAAY,CAC9BliC,MAAO,qBACPmiC,WAAYrhC,mBAAOo3C,GACnBxwE,UAAW,IACX06D,QAAQ,EACRC,kBAAmB,GACnBuX,OAAQ,oBACRrX,MAAOV,EACPW,QAAS,MACR,CACDx9D,KAAM++B,qBAAS,EAAG/5B,cAAH,cAAiB,CAC9B+2B,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,gBAAiB,CAAC7tC,EAAQlL,KAAM,CAAE,QAAU,6BAAO4N,UAAP,eAAuBvH,MAAO6E,EAAQpC,UACzG,CACDm5B,gCAAoB,MAAOyB,GAAa,CACtCzB,gCAAoB,MAAO0B,GAAazB,6BAAiBh3B,EAAQR,OAAQ,GACzEu3B,gCAAoB,MAAO2B,GAAa,IAAM1B,6BAAiBh3B,EAAQmuE,QAAU,IAAMn3C,6BAAiBh3B,EAAQouE,iBAAkB,GAClIr3C,gCAAoB,MAAO6B,GAAa,CACtCiB,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,MACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAausB,EAAwB,CACnCpwB,MAAO,cACP0B,QAAUC,GAAiB42C,EAAavuE,EAAQpC,KAAMoC,EAAQ6tE,OAAQ7tE,EAAQojD,WAC7E,KAAM,EAAG,CAAC,cAEflpB,EAAG,GACF,KAAM,CAAC,oBACVL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,MACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAauvC,EAA2B,CACtCpzC,MAAO,cACP0B,QAAUC,GAAiB22C,EAAgBtuE,EAAQ7E,KAClD,KAAM,EAAG,CAAC,cAEf++B,EAAG,GACF,KAAM,CAAC,yBAGb,6BAAOm0C,GAAwB,UAA/B,eAAmCzwE,QAASoC,EAAQpC,MAChD84B,yBAAcC,gCAAoB,MAAOkrB,GAAa,CACrDhoB,yBAAa/C,mBAAO,SAAU,CAAE16B,MAAO,CAAC,OAAS,YACjD26B,gCAAoB,MAAO+qB,GAAa,CACtCC,GACAloB,yBAAa/C,mBAAO,SAAc,CAChCl3B,IAAK,IACL8M,IAAK,IACLsP,KAAM,IACN3pB,MAAO2N,EAAQojD,SACfrrB,SAAU1lC,GAASw8E,EAA+B7uE,EAAQ7E,GAAI9I,GAC9D+J,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,QAAS,eAExB26B,gCAAoB,MAAOirB,GAAa,CACtCC,GACApoB,yBAAa/C,mBAAO,SAAS,CAC3BzkC,MAAO2N,EAAQlC,QACfi6B,SAAU1lC,GAASy8E,EAA8B9uE,EAAQ7E,GAAI9I,GAC7D+J,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,SAAW,CACrD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,IAELL,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,YAAc,CACxD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,aAEnBC,EAAG,IAELL,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,QAAU,CACpD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,YAEnBC,EAAG,MAGPA,EAAG,GACF,KAAM,CAAC,QAAS,eAErBnD,gCAAoB,MAAOmrB,GAAa,CACtCroB,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAAUC,GAAiB03C,EAAkBrvE,EAAQ7E,KACpD,CACDi8B,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,GACF,KAAM,CAAC,iBAGd8Q,gCAAoB,IAAI,IAC3B,MAEL9Q,EAAG,GACF,EAAG,CAAC,qB,UClcX,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCDR,MAAM21C,GAA+B,CAC1C,CACExzE,WAAY,UACZI,UAAW,UACX7E,SAAU,kBACVuiD,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,YAElE,CACE99C,WAAY,UACZI,UAAW,UACX7E,SAAU,kBACVuiD,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,YAElE,CACE99C,WAAY,UACZI,UAAW,UACX7E,SAAU,kBACVuiD,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,YAElE,CACE99C,WAAY,UACZI,UAAW,UACX7E,SAAU,kBACVuiD,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,YAElE,CACE99C,WAAY,UACZI,UAAW,UACX7E,SAAU,kBACVuiD,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,YAElE,CACE99C,WAAY,UACZI,UAAW,UACX7E,SAAU,kBACVuiD,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,YAElE,CACE99C,WAAY,UACZI,UAAW,UACX7E,SAAU,kBACVuiD,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,YAElE,CACE99C,WAAY,UACZI,UAAW,UACX7E,SAAU,kBACVuiD,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,YAElE,CACE99C,WAAY,UACZI,UAAW,UACX7E,SAAU,kBACVuiD,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,YAElE,CACE99C,WAAY,UACZI,UAAW,UACX7E,SAAU,kBACVuiD,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,YAElE,CACE99C,WAAY,UACZI,UAAW,UACX7E,SAAU,kBACVuiD,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,YAElE,CACE99C,WAAY,UACZI,UAAW,UACX7E,SAAU,kBACVuiD,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,YAElE,CACE99C,WAAY,UACZI,UAAW,UACX7E,SAAU,kBACVuiD,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,YAElE,CACE99C,WAAY,UACZI,UAAW,UACX7E,SAAU,kBACVuiD,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,aCnFrD,YACb,MAAM13C,EAAc3F,KACd,OAAE5B,EAAF,aAAUiC,EAAV,MAAwBZ,GAAU+X,eAAY7R,IAE9C,mBAAEmR,GAAuBW,KAGzBu7D,EAAqB9wE,IACzB,MAAMm7C,EAAmB,GACzB,IAAK,MAAM18C,KAAMuB,EAAM5D,SAAU,CAC/B,GAAgB,UAAZqC,EAAG3I,MAAsD,IAAlCoJ,IAAUT,EAAGhC,MAAM8yB,WAAkB,CAC9D,MAAM92B,EAAQyG,IAAUT,EAAGhC,MAAMuT,cAC5BmrC,EAAOx8C,SAASlG,IAAQ0iD,EAAO7pD,KAAKmH,GAE3C,GAAgB,SAAZgG,EAAG3I,MAAmB2I,EAAGhC,MAA0C,IAAlCyC,IAAUT,EAAGhC,MAAM8yB,WAAkB,CACxE,MAAM92B,EAAQyG,IAAUT,EAAGhC,MAAMuT,cAC5BmrC,EAAOx8C,SAASlG,IAAQ0iD,EAAO7pD,KAAKmH,GAE3C,GAAgB,UAAZgG,EAAG3I,MAAoB2I,EAAGlB,OAAkD,IAAzC2B,IAAUT,EAAGlB,MAAM9E,OAAO82B,WAAkB,CACjF,MAAM92B,EAAQyG,IAAUT,EAAGlB,MAAM9E,OAAOuX,cACnCmrC,EAAOx8C,SAASlG,IAAQ0iD,EAAO7pD,KAAKmH,GAE3C,GAAgB,UAAZgG,EAAG3I,MAAoB2I,EAAGhC,MAA0C,IAAlCyC,IAAUT,EAAGhC,MAAM8yB,WAAkB,CACzE,MAAM92B,EAAQyG,IAAUT,EAAGhC,MAAMuT,cAC5BmrC,EAAOx8C,SAASlG,IAAQ0iD,EAAO7pD,KAAKmH,GAE3C,GAAgB,SAAZgG,EAAG3I,MAAsD,IAAnCoJ,IAAUT,EAAGhG,OAAO82B,WAAkB,CAC9D,MAAM92B,EAAQyG,IAAUT,EAAGhG,OAAOuX,cAC7BmrC,EAAOx8C,SAASlG,IAAQ0iD,EAAO7pD,KAAKmH,GAE3C,GAAgB,UAAZgG,EAAG3I,MAAuD,IAAnCoJ,IAAUT,EAAGhG,OAAO82B,WAAkB,CAC/D,MAAM92B,EAAQyG,IAAUT,EAAGhG,OAAOuX,cAC7BmrC,EAAOx8C,SAASlG,IAAQ0iD,EAAO7pD,KAAKmH,IAG7C,OAAO0iD,GAIH41B,EAA2B,CAAC/wE,EAAcgxE,KAC9C,MAAMC,EAAYH,EAAkB9wE,GAC9BkxE,EAAgB,GAEtB,GAAID,EAAUjgF,OAASggF,EAAUhgF,OAAQ,CACvC,MAAMmkC,EAAYj2B,IAAU8xE,EAAU,IAAI77C,UAAU87C,EAAUjgF,OAASggF,EAAUhgF,OAAS,IACpFmgF,EAAch8C,EAAU32B,IAAIxC,GAAQA,EAAKwzB,eAAep7B,MAAM,GACpE48E,EAAU1/E,QAAQ6/E,GAEpB,IAAK,IAAIrgF,EAAI,EAAGA,EAAImgF,EAAUjgF,OAAQF,IACpCogF,EAAcD,EAAUngF,IAAMkgF,EAAUlgF,GAG1C,OAAOogF,GAIHE,EAAgB,CAACpxE,EAAczC,KACnC,MAAM8zE,EAAWN,EAAyB/wE,EAAOzC,EAAM49C,QAElDn7C,EAAM3C,YAAwC,UAA1B2C,EAAM3C,WAAWvH,OACxCkK,EAAM3C,WAAa,CACjBvH,KAAM,QACN2C,MAAO8E,EAAMF,aAGjB,IAAK,MAAMoB,KAAMuB,EAAM5D,SAAU,CAU/B,GATgB,UAAZqC,EAAG3I,OACL2I,EAAGhC,KAAO40E,EAASnyE,IAAUT,EAAGhC,MAAMuT,gBAAkBvR,EAAGhC,KACvDgC,EAAG66C,iBAAiB76C,EAAG66C,UAEb,SAAZ76C,EAAG3I,OACD2I,EAAGhC,OAAMgC,EAAGhC,KAAO40E,EAASnyE,IAAUT,EAAGhC,MAAMuT,gBAAkBvR,EAAGhC,MACxEgC,EAAGxB,aAAeM,EAAME,UACxBgB,EAAGzB,gBAAkBO,EAAM3E,UAEb,UAAZ6F,EAAG3I,KAAkB,CACnB2I,EAAGlB,QAAOkB,EAAGlB,MAAM9E,MAAQ44E,EAASnyE,IAAUT,EAAGlB,MAAM9E,OAAOuX,gBAAkBvR,EAAGlB,MAAM9E,OAC7F,IAAK,MAAMie,KAAYjY,EAAGjO,KACxB,IAAK,MAAM4lC,KAAQ1f,EACb0f,EAAKh5B,QACPg5B,EAAKh5B,MAAM3E,MAAQ8E,EAAME,UACzB24B,EAAKh5B,MAAMxE,SAAW2E,EAAM3E,UAKpB,UAAZ6F,EAAG3I,OACL2I,EAAGjB,WAAa,CAAC6zE,EAASnyE,IAAUT,EAAGjB,WAAW,IAAIwS,kBAAmBvR,EACzEA,EAAGqX,UAAYvY,EAAME,WAEP,SAAZgB,EAAG3I,OAAiB2I,EAAGhG,MAAQ44E,EAASnyE,IAAUT,EAAGhG,OAAOuX,gBAAkBvR,EAAGhG,OACrE,UAAZgG,EAAG3I,OAAkB2I,EAAGhG,MAAQ44E,EAASnyE,IAAUT,EAAGhG,OAAOuX,gBAAkBvR,EAAGhG,OACtE,UAAZgG,EAAG3I,OAAkB2I,EAAGhG,MAAQ8E,EAAME,aAKxC6zE,EAAiC/zE,IACrC,MAAMkd,EAAkBpb,KAAKG,MAAMH,KAAKC,UAAUnB,EAAa9K,QAC/D+9E,EAAc32D,EAAUld,GACxBkG,EAAYvD,YAAY,CACtB7C,WAAYod,EAASpd,WACrBjB,SAAUqe,EAASre,WAErBwY,KAII28D,EAA+Bh0E,IACnC,MAAMwb,EAAqB1Z,KAAKG,MAAMH,KAAKC,UAAUpD,EAAO7I,QAC5D,IAAK,MAAM2M,KAAS+Y,EAClBq4D,EAAcpxE,EAAOzC,GAEvBkG,EAAY/D,SAAS,CACnBhC,gBAAiBH,EAAMF,WACvBG,WAAYD,EAAM49C,OAAO,GACzB19C,UAAWF,EAAME,UACjBhD,SAAU8C,EAAM3E,WAElB6K,EAAY3D,UAAUiZ,GACtBnE,KAII48D,EAAwB,KAC5B,MAAMz4D,EAAqB1Z,KAAKG,MAAMH,KAAKC,UAAUpD,EAAO7I,SACtD,WAAEmK,EAAF,gBAAcE,EAAd,UAA+BD,EAA/B,SAA0ChD,GAAa8C,EAAMlK,MAEnE,IAAK,MAAM2M,KAAS+Y,EAAW,CACxB/Y,EAAM3C,YAAwC,UAA1B2C,EAAM3C,WAAWvH,OACxCkK,EAAM3C,WAAa,CACjBvH,KAAM,QACN2C,MAAOiF,IAIX,IAAK,MAAMe,KAAMuB,EAAM5D,SACrB,GAAgB,UAAZqC,EAAG3I,KAAkB2I,EAAGhC,KAAOe,OAC9B,GAAgB,SAAZiB,EAAG3I,KAAiB2I,EAAGhG,MAAQ+E,OACnC,GAAgB,SAAZiB,EAAG3I,KACV2I,EAAGxB,aAAeQ,EAClBgB,EAAGzB,gBAAkBvC,EACjBgE,EAAGhC,OAAMgC,EAAGhC,KAAOe,QAEpB,GAAgB,UAAZiB,EAAG3I,KAAkB,CACxB2I,EAAGlB,QAAOkB,EAAGlB,MAAM9E,MAAQ+E,GAC/B,IAAK,MAAMkZ,KAAYjY,EAAGjO,KACxB,IAAK,MAAM4lC,KAAQ1f,EACb0f,EAAKh5B,QACPg5B,EAAKh5B,MAAM3E,MAAQgF,EACnB24B,EAAKh5B,MAAMxE,SAAW6B,OAKT,UAAZgE,EAAG3I,MACV2I,EAAGjB,WAAa,CAACA,GACjBiB,EAAGqX,UAAYrY,GAEI,UAAZgB,EAAG3I,KAAkB2I,EAAGhG,MAAQgF,EACpB,UAAZgB,EAAG3I,OAAkB2I,EAAGhG,MAAQ+E,GAG7CiG,EAAY3D,UAAUiZ,GACtBnE,KAGF,MAAO,CACL08D,gCACAC,8BACAC,0BC9KJ,MAAMx4C,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,sBACtBC,GAA2B+B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,SAAW,QAAS,IACnHE,GAAa,CAAEF,MAAO,OACtBG,GAA2B6B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,MAAO,IACtH+7B,GAAa,CACjBxlC,IAAK,EACLqjC,MAAO,4BAEHoC,GAAa,CAAEpC,MAAO,oBACtBqC,GAAa,CACjB1lC,IAAK,EACLqjC,MAAO,+BAEHsC,GAAa,CAAEtC,MAAO,OACtBuC,GAA2BP,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IACzHo8B,GAAc,CAAExC,MAAO,OACvByC,GAA4BT,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IAC1Hs8B,GAAc,CAClB/lC,IAAK,EACLqjC,MAAO,OAEH4C,GAA4BZ,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IAC1HylD,GAAc,CAAE7rB,MAAO,OACvB8rB,GAAc,CAAE9rB,MAAO,OACvB+rB,GAA4B/pB,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IAC1H4lD,GAA4BhqB,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,SAAW,QAAS,IACpHisB,GAAc,CAAEjsB,MAAO,OACvBksB,GAA4BlqB,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,OAAQ,IACxH+lD,GAAc,CAAEnsB,MAAO,OACvBosB,GAA4BpqB,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IAC1HimD,GAAc,CAAErsB,MAAO,OACvBspC,GAA4BtnC,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,SAAU,IAC1HmjE,GAAc,CAAEvpC,MAAO,OACvBwpC,GAA4BxnC,GAAa,IAAmBjB,gCAAoB,MAAO,CAAE36B,MAAO,CAAC,KAAO,MAAQ,QAAS,IACzHq0E,GAAc,CAAEz6C,MAAO,OACvB06C,GAA4B14C,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,SAAW,QAAS,IACpH26C,GAAc,CAAE36C,MAAO,cACvB46C,GAAc,CAAE56C,MAAO,sBACvB66C,GAAc,CAAE76C,MAAO,UACvB86C,GAAc,CAAE96C,MAAO,QACvB+6C,GAAc,CAAC,WACfC,GAAc,CAAC,WAuBO56C,oCAAiB,CAC3CC,OAAQ,mBACRC,MAAMC,GAER,MAAQspC,SAAUC,EAAgBzQ,OAAQD,GAApC,QAEA3sD,EAAc3F,KACd,eAAE+E,GAAmByS,eAAYvT,MACjC,OAAE7F,EAAF,aAAUiC,EAAV,cAAwBF,EAAxB,MAAuCV,GAAU+X,eAAY7R,GAE7DpG,EAAamc,sBAAS,IACrBrb,EAAa9K,MAAMgK,WAMjBc,EAAa9K,MAAMgK,WALjB,CACLvH,KAAM,QACNzC,MAAO,UAMP,mBAAEuhB,GAAuBW,MACzB,8BACJ+7D,EADI,4BAEJC,EAFI,sBAGJC,GACES,KAGEC,EAAwBp8E,IAC5B,GAAa,UAATA,EAAkB,CACpB,MAAMq8E,EAAiC,IAClC90E,EAAWhK,MACdyC,KAAM,QACN2C,MAAO4E,EAAWhK,MAAMoF,OAAS,QAEnCgL,EAAYvD,YAAY,CAAE7C,WAAY80E,SAEnC,GAAa,UAATr8E,EAAkB,CACzB,MAAMq8E,EAAiC,IAClC90E,EAAWhK,MACdyC,KAAM,QACN+8B,MAAOx1B,EAAWhK,MAAMw/B,OAAS,GACjC+3B,UAAWvtD,EAAWhK,MAAMu3D,WAAa,SAE3CnnD,EAAYvD,YAAY,CAAE7C,WAAY80E,QAEnC,CACH,MAAMA,EAAiC,IAClC90E,EAAWhK,MACdyC,KAAM,WACNg1D,aAAcztD,EAAWhK,MAAMy3D,cAAgB,SAC/Ch4B,cAAez1B,EAAWhK,MAAMy/B,eAAiB,CAAC,OAAQ,QAC1D+3B,eAAgBxtD,EAAWhK,MAAMw3D,gBAAkB,GAErDpnD,EAAYvD,YAAY,CAAE7C,WAAY80E,IAExCv9D,KAIIw9D,EAAoBjyE,IACxBsD,EAAYvD,YAAY,CAAE7C,WAAY,IAAKA,EAAWhK,SAAU8M,KAChEyU,KAIIy9D,EAAyBrjD,IAC7B,MAAMtL,EAAYsL,EAAM,GACnBtL,GACLjS,GAAgBiS,GAAWvX,KAAKwX,GAAWyuD,EAAiB,CAAEv/C,MAAOlP,MAIjE2uD,EAA0B,KAC9B,MAAMv5D,EAAY7c,EAAO7I,MAAMmL,IAAIwB,IAC1B,IACFA,EACH3C,WAAYc,EAAa9K,MAAMgK,cAGnCoG,EAAY3D,UAAUiZ,GACtBnE,KAIIwmC,EAAez7C,IACnB8D,EAAY/D,SAASC,IAIjB4yE,EAAuBl/E,IAC3BoQ,EAAY5D,iBAAiBxM,IAG/B,MAAO,CAACmkC,EAAUC,KAChB,MAAM8/B,EAAsBh9B,8BAAkB,YAE9C,OAAQ7C,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DE,GACAc,gCAAoB,MAAOb,GAAY,CACrC2D,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,MACf/J,MAAOykC,mBAAOz6B,GAAYvH,KAC1BijC,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAAS6+E,EAAqB7+E,KACjE,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,SAAW,CACrD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,IAELL,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,SAAW,CACrD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,IAELL,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,YAAc,CACxD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,UACP/D,GAC6B,UAA5BW,mBAAOz6B,GAAYvH,MACf4hC,yBAAc0U,yBAAatU,mBAAO,SAAU,CAC3CnkC,IAAK,EACLmL,QAAS,SACR,CACD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAYrhC,mBAAOz6B,GAAY5E,MAC/B,sBAAuBg/B,EAAO,KAAOA,EAAO,GAAKh/B,GAAS25E,EAAiB,CAAE35E,YAC5E,KAAM,EAAG,CAAC,iBAEf2/B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamlC,GAAa,CACxBvnE,MAAOq/B,mBAAOz6B,GAAY5E,OAAS,OACnC2E,MAAO,CAAC,KAAO,OACd,KAAM,EAAG,CAAC,YAEf89B,EAAG,KAEwB,UAA5BpD,mBAAOz6B,GAAYvH,MACjB4hC,yBAAc0U,yBAAatU,mBAAO,SAAS,CAC1CnkC,IAAK,EACLyJ,MAAO,CAAC,KAAO,MACf/J,MAAOykC,mBAAOz6B,GAAYutD,WAAa,QACvC7xB,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAAS++E,EAAiB,CAAExnB,UAAWv3D,MAC1E,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,WAAa,CACvD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,IAELL,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,UAAY,CACtD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,IAELL,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,SAAW,CACrD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,YACNxD,yBAAc0U,yBAAatU,mBAAO,SAAS,CAC1CnkC,IAAK,EACLyJ,MAAO,CAAC,KAAO,MACf/J,MAAOykC,mBAAOz6B,GAAYytD,aAC1B/xB,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAAS++E,EAAiB,CAAEtnB,aAAcz3D,MAC7E,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,UAAY,CACtD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,IAELL,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,UAAY,CACtD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,aAEc,UAA5BpD,mBAAOz6B,GAAYvH,MACf4hC,yBAAcC,gCAAoB,MAAOwB,GAAY,CACpD0B,yBAAaG,GAAW,CACtBjC,SAAUtB,EAAO,KAAOA,EAAO,GAAKzI,GAASqjD,EAAsBrjD,KAClE,CACDoJ,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,MAAOqB,GAAY,CACrCrB,gCAAoB,MAAO,CACzBf,MAAO,UACP55B,MAAOoxC,4BAAgB,CAAEuc,gBAAiB,OAAOjzB,mBAAOz6B,GAAYw1B,YACnE,CACDgI,yBAAa08B,IACZ,OAGPr8B,EAAG,OAGP8Q,gCAAoB,IAAI,GACC,aAA5BlU,mBAAOz6B,GAAYvH,MACf4hC,yBAAcC,gCAAoB,MAAO0B,GAAY,CACpDtB,gCAAoB,MAAOuB,GAAY,CACrCC,GACAsB,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAYrhC,mBAAOz6B,GAAYy1B,cAAe,GAC9C,sBAAuB2E,EAAO,KAAOA,EAAO,GAAKpkC,GAAS++E,EAAiB,CAAEt/C,cAAe,CAACz/B,EAAOykC,mBAAOz6B,GAAYy1B,cAAe,QACrI,KAAM,EAAG,CAAC,iBAEfsF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamlC,GAAa,CACxBvnE,MAAOq/B,mBAAOz6B,GAAYy1B,cAAe,GACzC11B,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEf89B,EAAG,MAGPnD,gCAAoB,MAAOyB,GAAa,CACtCC,GACAoB,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAYrhC,mBAAOz6B,GAAYy1B,cAAe,GAC9C,sBAAuB2E,EAAO,KAAOA,EAAO,GAAKpkC,GAAS++E,EAAiB,CAAEt/C,cAAe,CAACgF,mBAAOz6B,GAAYy1B,cAAe,GAAIz/B,OAClI,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamlC,GAAa,CACxBvnE,MAAOq/B,mBAAOz6B,GAAYy1B,cAAe,GACzC11B,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEf89B,EAAG,MAG8B,WAApCpD,mBAAOz6B,GAAYytD,cACfpzB,yBAAcC,gCAAoB,MAAO+B,GAAa,CACrDE,GACAiB,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,SACPp2B,IAAK,EACL8M,IAAK,IACLsP,KAAM,GACN3pB,MAAOykC,mBAAOz6B,GAAYwtD,eAC1B9xB,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAAS++E,EAAiB,CAAEvnB,eAAgBx3D,MAC/E,KAAM,EAAG,CAAC,aAEf24C,gCAAoB,IAAI,MAE9BA,gCAAoB,IAAI,GAC5BjU,gCAAoB,MAAO8qB,GAAa,CACtChoB,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiB25C,MACpD,CACDl6C,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,aAEnBC,EAAG,MAGPL,yBAAa/C,mBAAO,UACpBC,gCAAoB,MAAO+qB,GAAa,CACtCC,GACAloB,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACf/J,MAAOykC,mBAAO75B,GACd86B,SAAUtB,EAAO,KAAOA,EAAO,GAAKpkC,GAASk/E,EAAoBl/E,KAChE,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,OAAU,CACpD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,eAEnBC,EAAG,GACF,EAAG,CAAC,UACPL,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,MAAS,CACnD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,gBAEnBC,EAAG,GACF,EAAG,CAAC,UACPL,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,KAAQ,CAClD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,cAEnBC,EAAG,GACF,EAAG,CAAC,UACPL,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,WAAc,CACxD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,gBAEnBC,EAAG,GACF,EAAG,CAAC,YAETA,EAAG,GACF,EAAG,CAAC,YAETL,yBAAa/C,mBAAO,UACpBkrB,GACAjrB,gCAAoB,MAAOkrB,GAAa,CACtCC,GACAroB,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACf/J,MAAOykC,mBAAOv6B,GAAO9C,SACrBs+B,SAAUtB,EAAO,MAAQA,EAAO,IAAMpkC,GAAS+nD,EAAY,CAAE3gD,SAAUpH,MACtE,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAOgpC,GAAiB,CAAEvsE,MAAO,QAAU,CACtD6jC,QAAS2C,qBAAS,IAAM,EACrBrD,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOj1B,GAAkBlH,IACnF+7B,yBAAc0U,yBAAatU,mBAAOs4B,GAAe,CACvDz8D,IAAKgI,EAAKtI,MACVA,MAAOsI,EAAKtI,OACX,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,OAAQ,CAC1B36B,MAAOoxC,4BAAgB,CAAEgK,WAAY78C,EAAKtI,SACzC2kC,6BAAiBr8B,EAAKpH,OAAQ,KAEnC2mC,EAAG,GACF,KAAM,CAAC,YACR,QAENA,EAAG,IAELL,yBAAa/C,mBAAOgpC,GAAiB,CAAEvsE,MAAO,QAAU,CACtD6jC,QAAS2C,qBAAS,IAAM,EACrBrD,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOtjC,GAAamH,IAC9E+7B,yBAAc0U,yBAAatU,mBAAOs4B,GAAe,CACvDz8D,IAAKgI,EAAKtI,MACVA,MAAOsI,EAAKtI,OACX,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,OAAQ,KAAMC,6BAAiBr8B,EAAKpH,OAAQ,KAElE2mC,EAAG,GACF,KAAM,CAAC,YACR,QAENA,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,YAETnD,gCAAoB,MAAOorB,GAAa,CACtCC,GACAvoB,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAYrhC,mBAAOv6B,GAAOE,UAC1B,sBAAuBg6B,EAAO,MAAQA,EAAO,IAAMpkC,GAAS+nD,EAAY,CAAE39C,UAAWpK,MACpF,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamlC,GAAa,CACxBvnE,MAAOq/B,mBAAOv6B,GAAOE,UACrBL,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEf89B,EAAG,MAGPnD,gCAAoB,MAAOsrB,GAAa,CACtCid,GACAzlC,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAYrhC,mBAAOv6B,GAAOG,gBAC1B,sBAAuB+5B,EAAO,MAAQA,EAAO,IAAMpkC,GAAS+nD,EAAY,CAAE19C,gBAAiBrK,MAC1F,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamlC,GAAa,CACxBvnE,MAAOq/B,mBAAOv6B,GAAOG,gBACrBN,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEf89B,EAAG,MAGPnD,gCAAoB,MAAOwoC,GAAa,CACtCC,GACA3lC,yBAAa/C,mBAAO,SAAU,CAAEh5B,QAAS,SAAW,CAClD/B,QAASg+B,qBAAS,IAAM,CACtBF,yBAAaklC,GAAa,CACxB5G,WAAYrhC,mBAAOv6B,GAAOC,WAC1B,sBAAuBi6B,EAAO,MAAQA,EAAO,IAAMpkC,GAAS+nD,EAAY,CAAE59C,WAAYnK,MACrF,KAAM,EAAG,CAAC,iBAEf+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamlC,GAAa,CACxBvnE,MAAOq/B,mBAAOv6B,GAAOC,WACrBJ,MAAO,CAAC,KAAO,MACd,KAAM,EAAG,CAAC,YAEf89B,EAAG,MAGPnD,gCAAoB,MAAO05C,GAAa,CACtC52C,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBb,mBAAO05C,EAAP15C,KACtD,CACDM,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,aAEnBC,EAAG,MAGPL,yBAAa/C,mBAAO,UACpB45C,GACA35C,gCAAoB,MAAO45C,GAAa,EACrCj6C,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAO+4C,IAAgB,CAAC70E,EAAMwE,KACxFk3B,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,aACPrjC,IAAK6M,EACLpD,MAAOoxC,4BAAgB,CACvB9wC,gBAAiB1B,EAAKqB,WACtBm7C,WAAYx8C,EAAKpD,YAEhB,CACDm/B,gCAAoB,MAAO65C,GAAa,CACtC75C,gCAAoB,MAAO,CACzBf,MAAO,OACP55B,MAAOoxC,4BAAgB,CAAE/1C,MAAOuD,EAAKyB,aACpC,QAAS,GACZs6B,gCAAoB,MAAO85C,GAAa,EACrCn6C,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAY77B,EAAKm/C,OAAQ,CAAC1iD,EAAO+H,KAC/Ek3B,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,cACPrjC,IAAK6M,EACLpD,MAAOoxC,4BAAgB,CAAE9wC,gBAAiBjF,KACzC,KAAM,KACP,QAENs/B,gCAAoB,MAAO+5C,GAAa,CACtC/5C,gCAAoB,MAAO,CACzBf,MAAO,MACP0B,QAAUC,GAAiBb,mBAAOw5C,EAAPx5C,CAAsC97B,IAChE,KAAM,EAAG+1E,IACZh6C,gCAAoB,MAAO,CACzBf,MAAO,MACP0B,QAAUC,GAAiBb,mBAAOy5C,EAAPz5C,CAAoC97B,IAC9D,OAAQ,EAAGg2E,SAGjB,KACD,c,UCphBV,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMj7C,GAAa,CAAEC,MAAO,yBACtBC,GAAa,CAAED,MAAO,kBACtBE,GAAa,CAAC,WACdC,GAAa,CAAEH,MAAO,kBAgBAI,oCAAiB,CAC3CC,OAAQ,sBACRC,MAAMC,GAER,MAAM9zB,EAAc3F,KACd,OAAE5B,EAAF,aAAUiC,GAAiBmX,eAAY7R,GAEvC+uE,EAAqBh5D,sBAAS,IAAMrb,EAAa9K,MAAMo/E,aAAe,UAEtEp0E,EAA2B,CAC/B,CAAE9J,MAAO,IAAKlB,MAAO,MACrB,CAAEkB,MAAO,OAAQlB,MAAO,QACxB,CAAEkB,MAAO,OAAQlB,MAAO,UACxB,CAAEkB,MAAO,OAAQlB,MAAO,YAGpB,mBAAEuhB,GAAuBW,KAGzBm9D,EAAqBn/E,IACrBA,IAASi/E,EAAmBn/E,QAChCoQ,EAAYvD,YAAY,CAAEuyE,YAAal/E,IACvCqhB,MAII+9D,EAAgB,KACpB,MAAM55D,EAAY7c,EAAO7I,MAAMmL,IAAIwB,IAC1B,IACFA,EACHyyE,YAAat0E,EAAa9K,MAAMo/E,eAGpChvE,EAAY3D,UAAUiZ,GACtBnE,KAGF,MAAO,CAAC4iB,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,EACpCS,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAYx5B,EAAarC,GACpE+7B,gCAAoB,MAAO,CAChCf,MAAO6X,4BAAgB,CAAC,iBAAkB,CAAE,OAAU/W,mBAAO06C,KAAwBx2E,EAAK3I,SAC1FM,IAAKqI,EAAKzH,MACVmkC,QAAUC,GAAiB+5C,EAAkB12E,EAAK3I,QACjD,CACD0kC,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,kBAAmB7yC,EAAK3I,SAC/C,KAAM,GACT0kC,gCAAoB,MAAOZ,GAAYa,6BAAiBh8B,EAAKzH,OAAQ,IACpE,GAAI2iC,KACL,OAEN2D,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,MAAQ,QAChBs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBg6C,MACpD,CACDv6C,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,WAEnBC,EAAG,U,UC7ET,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCDA,QACb,MAAMz3B,EAAc3F,KACd,oBAAEkE,EAAF,kBAAuBwB,GAAsB8R,eAAYvT,MACzD,aAAE5D,GAAiBmX,eAAY7R,IAE/B,mBAAEmR,GAAuBW,KAMzBq9D,EAAsB94D,IAC1B,MAAM,KAAE1L,EAAF,KAAQC,EAAR,KAAcC,EAAd,KAAoBC,GAASC,GAAoBhL,EAAkBnQ,OACnEob,EAA4BpP,KAAKG,MAAMH,KAAKC,UAAUnB,EAAa9K,MAAM+I,WAGzEy2E,EAAuB,GAC7B,IAAK,MAAMC,KAAiBtvE,EAAkBnQ,MAC5C,GAAIy/E,EAAcljE,UAAYijE,EAAqBC,EAAcljE,SAAU,CACzE,MAAMmjE,EAAgBvvE,EAAkBnQ,MAAM0I,OAAOC,GAAQA,EAAK4T,UAAYkjE,EAAcljE,SAC5FijE,EAAqBC,EAAcljE,SAAWpB,GAAoBukE,GAKtE,GAAIj5D,IAAY/P,EAAqBmT,KACnCzO,EAAYK,QAAQ9N,IAClB,GAAIgB,EAAoB3O,MAAMsL,SAASqC,EAAQ7E,IAC7C,GAAK6E,EAAQ4O,QAaR,CACH,MAAMP,EAAQwjE,EAAqB7xE,EAAQ4O,SACrC+hB,EAAStiB,EAAMjB,KAAOA,EAC5BpN,EAAQ3E,KAAO2E,EAAQ3E,KAAOs1B,OAf9B,GAAI,WAAY3wB,GAAWA,EAAQpE,OAAQ,CACzC,MAAM,QAAEqR,GAAYL,GAAqB,CACvCvR,KAAM2E,EAAQ3E,KACdC,IAAK0E,EAAQ1E,IACbzB,MAAOmG,EAAQnG,MACfC,OAAQkG,EAAQlG,OAChB8B,OAAQoE,EAAQpE,SAElBoE,EAAQ3E,KAAO+R,EAAOH,OAEnBjN,EAAQ3E,KAAO+R,SAUvB,GAAI0L,IAAY/P,EAAqBoT,MACxC1O,EAAYK,QAAQ9N,IAClB,GAAIgB,EAAoB3O,MAAMsL,SAASqC,EAAQ7E,IAC7C,GAAK6E,EAAQ4O,QAcR,CACH,MAAMP,EAAQwjE,EAAqB7xE,EAAQ4O,SACrC+hB,EAAStiB,EAAMhB,KAAOA,EAC5BrN,EAAQ3E,KAAO2E,EAAQ3E,KAAOs1B,MAjBV,CACpB,MAAMwO,EAA2B,SAAjBn/B,EAAQlL,KAAkB6K,KAAK+M,IAAI1M,EAAQ5J,MAAM,GAAI4J,EAAQ9D,IAAI,IAAM8D,EAAQnG,MAC/F,GAAI,WAAYmG,GAAWA,EAAQpE,OAAQ,CACzC,MAAM,QAAEqR,GAAYL,GAAqB,CACvCvR,KAAM2E,EAAQ3E,KACdC,IAAK0E,EAAQ1E,IACbzB,MAAOmG,EAAQnG,MACfC,OAAQkG,EAAQlG,OAChB8B,OAAQoE,EAAQpE,SAElBoE,EAAQ3E,KAAOgS,EAAO8xB,EAAUlyB,OAE7BjN,EAAQ3E,KAAOgS,EAAO8xB,UAU9B,GAAIrmB,IAAY/P,EAAqBsU,IACxC5P,EAAYK,QAAQ9N,IAClB,GAAIgB,EAAoB3O,MAAMsL,SAASqC,EAAQ7E,IAC7C,GAAK6E,EAAQ4O,QAaR,CACH,MAAMP,EAAQwjE,EAAqB7xE,EAAQ4O,SACrC+hB,EAAStiB,EAAMf,KAAOA,EAC5BtN,EAAQ1E,IAAM0E,EAAQ1E,IAAMq1B,OAf5B,GAAI,WAAY3wB,GAAWA,EAAQpE,OAAQ,CACzC,MAAM,QAAEsR,GAAYN,GAAqB,CACvCvR,KAAM2E,EAAQ3E,KACdC,IAAK0E,EAAQ1E,IACbzB,MAAOmG,EAAQnG,MACfC,OAAQkG,EAAQlG,OAChB8B,OAAQoE,EAAQpE,SAElBoE,EAAQ1E,IAAMgS,EAAOJ,OAElBlN,EAAQ1E,IAAMgS,SAUtB,GAAIwL,IAAY/P,EAAqBuU,OACxC7P,EAAYK,QAAQ9N,IAClB,GAAIgB,EAAoB3O,MAAMsL,SAASqC,EAAQ7E,IAC7C,GAAK6E,EAAQ4O,QAcR,CACH,MAAMP,EAAQwjE,EAAqB7xE,EAAQ4O,SACrC+hB,EAAStiB,EAAMd,KAAOA,EAC5BvN,EAAQ1E,IAAM0E,EAAQ1E,IAAMq1B,MAjBR,CACpB,MAAMyO,EAA4B,SAAjBp/B,EAAQlL,KAAkB6K,KAAK+M,IAAI1M,EAAQ5J,MAAM,GAAI4J,EAAQ9D,IAAI,IAAM8D,EAAQlG,OAChG,GAAI,WAAYkG,GAAWA,EAAQpE,OAAQ,CACzC,MAAM,QAAEsR,GAAYN,GAAqB,CACvCvR,KAAM2E,EAAQ3E,KACdC,IAAK0E,EAAQ1E,IACbzB,MAAOmG,EAAQnG,MACfC,OAAQkG,EAAQlG,OAChB8B,OAAQoE,EAAQpE,SAElBoE,EAAQ1E,IAAMiS,EAAO6xB,EAAWlyB,OAE7BlN,EAAQ1E,IAAMiS,EAAO6xB,UAU7B,GAAItmB,IAAY/P,EAAqB2/B,WAAY,CACpD,MAAMspC,GAAoB5kE,EAAOC,GAAQ,EACzCI,EAAYK,QAAQ9N,IAClB,GAAIgB,EAAoB3O,MAAMsL,SAASqC,EAAQ7E,IAC7C,GAAK6E,EAAQ4O,QAIR,CACH,MAAMP,EAAQwjE,EAAqB7xE,EAAQ4O,SACrCqjE,GAAU5jE,EAAMhB,KAAOgB,EAAMjB,MAAQ,EACrCujB,EAASshD,EAASD,EACxBhyE,EAAQ3E,KAAO2E,EAAQ3E,KAAOs1B,MARV,CACpB,MAAMwO,EAA2B,SAAjBn/B,EAAQlL,KAAkB6K,KAAK+M,IAAI1M,EAAQ5J,MAAM,GAAI4J,EAAQ9D,IAAI,IAAM8D,EAAQnG,MAC/FmG,EAAQ3E,KAAO22E,EAAmB7yC,EAAU,UAW/C,GAAIrmB,IAAY/P,EAAqB0/B,SAAU,CAClD,MAAMypC,GAAkB5kE,EAAOC,GAAQ,EACvCE,EAAYK,QAAQ9N,IAClB,GAAIgB,EAAoB3O,MAAMsL,SAASqC,EAAQ7E,IAC7C,GAAK6E,EAAQ4O,QAIR,CACH,MAAMP,EAAQwjE,EAAqB7xE,EAAQ4O,SACrCqjE,GAAU5jE,EAAMd,KAAOc,EAAMf,MAAQ,EACrCqjB,EAASshD,EAASC,EACxBlyE,EAAQ1E,IAAM0E,EAAQ1E,IAAMq1B,MARR,CACpB,MAAMyO,EAA4B,SAAjBp/B,EAAQlL,KAAkB6K,KAAK+M,IAAI1M,EAAQ5J,MAAM,GAAI4J,EAAQ9D,IAAI,IAAM8D,EAAQlG,OAChGkG,EAAQ1E,IAAM42E,EAAiB9yC,EAAW,KAYlD38B,EAAYvD,YAAY,CAAE9D,SAAUqS,IACpCmG,KAGF,MAAO,CACLg+D,uBCtIW,QACb,MAAMnvE,EAAc3F,KACd,oBAAEkE,EAAF,kBAAuBwB,GAAsB8R,eAAYvT,MACzD,aAAE5D,GAAiBmX,eAAY7R,IAE/B,mBAAEmR,GAAuBW,KAEzB49D,EAAmB35D,sBAAS,KAChC,IAAI45D,EAAQ,EACZ,MAAMC,EAAwB,GAC9B,IAAK,MAAM50E,KAAM+E,EAAkBnQ,MAC5BoL,EAAGmR,QACEyjE,EAAY10E,SAASF,EAAGmR,WAChCyjE,EAAY/hF,KAAKmN,EAAGmR,SACpBwjE,GAAS,GAHMA,GAAS,EAM5B,OAAOA,IAGHE,EAA2B,KAC/B,MAAM,KAAEllE,EAAF,KAAQC,GAASG,GAAoBhL,EAAkBnQ,OACvDkgF,EAAwCl0E,KAAKG,MAAMH,KAAKC,UAAUkE,EAAkBnQ,QACpF+nB,EAA+B/b,KAAKG,MAAMH,KAAKC,UAAUnB,EAAa9K,MAAM+I,WAG5Eo3E,EAAkC,GACxC,IAAIC,EAAyB,GAC7B,IAAK,MAAMh1E,KAAM80E,EACf,GAAK90E,EAAGmR,QAIH,CACH,MAAM8jE,EAAUD,EAAUp9E,KAAK2F,GAAQA,EAAK4T,UAAYnR,EAAGmR,SACtD8jE,EAEHD,EAAYA,EAAUj1E,IAAIxC,GAAQA,EAAK4T,UAAYnR,EAAGmR,QAAU,IAAK5T,EAAMsC,IAAK,IAAItC,EAAKsC,IAAKG,IAAQzC,GAF1Fy3E,EAAUniF,KAAK,CAAEse,QAASnR,EAAGmR,QAAStR,IAAK,CAACG,SAN3C,CACf,MAAM,KAAE2P,EAAF,KAAQC,GAASF,GAAgB1P,GACvC+0E,EAAiBliF,KAAK,CAAEsP,IAAKwN,EAAMV,IAAKW,EAAM5P,OAUlD,MAAMk1E,EAAyC,GAC/C,IAAK,MAAMC,KAAaH,EAAW,CACjC,MAAM,KAAErlE,EAAF,KAAQC,GAASG,GAAoBolE,EAAUt1E,KACrDq1E,EAAkBriF,KAAK,CAAEsP,IAAKwN,EAAMV,IAAKW,EAAM/P,IAAKs1E,EAAUt1E,MAIhE,MAAMu1E,EAAe,IAAIL,KAAqBG,GAC9CE,EAAKC,KAAK,CAACC,EAAOC,IAAUD,EAAMnzE,IAAMozE,EAAMpzE,KAI9C,IAAIq8C,EAAa,EACjB,IAAK,MAAMjhD,KAAQ63E,EAAM,CACvB,MAAMh5E,EAAQmB,EAAK0R,IAAM1R,EAAK4E,IAC9Bq8C,GAAcpiD,EAEhB,MAAMgmD,GAASxyC,EAAOD,EAAQ6uC,IAAe42B,EAAK7iF,OAAS,GAMrDijF,EAAsC,GAEtCC,EAAYL,EAAK,GACvB,IAAIM,EAAmB,CAAEvzE,IAAKszE,EAAUtzE,IAAK8M,IAAKwmE,EAAUxmE,KAE5D,GAAI,OAAQwmE,EACVD,EAAkB3iF,KAAK,CAAEkE,IAAK0+E,EAAUtzE,IAAKnC,GAAIy1E,EAAUz1E,UAG3D,IAAK,MAAMA,KAAMy1E,EAAU51E,IAAK,CAC9B,MAAQ8P,KAAM5Y,GAAQ2Y,GAAgB1P,GACtCw1E,EAAkB3iF,KAAK,CAAEkE,MAAKiJ,OAIlC,IAAK,IAAI3N,EAAI,EAAGA,EAAI+iF,EAAK7iF,OAAQF,IAAK,CACpC,MAAMkL,EAAO63E,EAAK/iF,GACZsjF,EAAYD,EAAQzmE,IAAMymE,EAAQvzE,IAClCyzE,EAAaF,EAAQvzE,IAAMwzE,EAAYvzB,EACvCyzB,EAAet4E,EAAK0R,IAAM1R,EAAK4E,IAGrC,GAFAuzE,EAAU,CAAEvzE,IAAKyzE,EAAY3mE,IAAK2mE,EAAaC,GAE3C,OAAQt4E,EACVi4E,EAAkB3iF,KAAK,CAAEkE,IAAK6+E,EAAY51E,GAAIzC,EAAKyC,UAGnD,IAAK,MAAMA,KAAMzC,EAAKsC,IAAK,CACzB,MAAM,KAAE8P,GAASD,GAAgB1P,GAC3BkzB,EAASvjB,EAAOpS,EAAK4E,IAC3BqzE,EAAkB3iF,KAAK,CAAEkE,IAAK6+E,EAAa1iD,EAAQlzB,QAOzD,IAAK,MAAMuC,KAAWoa,EACpB,GAAKpZ,EAAoB3O,MAAMsL,SAASqC,EAAQ7E,IAEhD,IAAK,MAAMo4E,KAAcN,EACvB,GAAIM,EAAW91E,GAAGtC,KAAO6E,EAAQ7E,GAC/B,GAAI,WAAY6E,GAAWA,EAAQpE,OAAQ,CACzC,MAAM,QAAEqR,GAAYL,GAAqB,CACvCvR,KAAM2E,EAAQ3E,KACdC,IAAK0E,EAAQ1E,IACbzB,MAAOmG,EAAQnG,MACfC,OAAQkG,EAAQlG,OAChB8B,OAAQoE,EAAQpE,SAElBoE,EAAQ3E,KAAOk4E,EAAW/+E,IAAMyY,OAE7BjN,EAAQ3E,KAAOk4E,EAAW/+E,IAKrCiO,EAAYvD,YAAY,CAAE9D,SAAUgf,IACpCxG,KAII4/D,EAAyB,KAC7B,MAAM,KAAElmE,EAAF,KAAQC,GAASC,GAAoBhL,EAAkBnQ,OACvDkgF,EAAwCl0E,KAAKG,MAAMH,KAAKC,UAAUkE,EAAkBnQ,QACpF+nB,EAA+B/b,KAAKG,MAAMH,KAAKC,UAAUnB,EAAa9K,MAAM+I,WAE5Eo3E,EAAkC,GACxC,IAAIC,EAAyB,GAC7B,IAAK,MAAMh1E,KAAM80E,EACf,GAAK90E,EAAGmR,QAIH,CACH,MAAM8jE,EAAUD,EAAUp9E,KAAK2F,GAAQA,EAAK4T,UAAYnR,EAAGmR,SACtD8jE,EAEHD,EAAYA,EAAUj1E,IAAIxC,GAAQA,EAAK4T,UAAYnR,EAAGmR,QAAU,IAAK5T,EAAMsC,IAAK,IAAItC,EAAKsC,IAAKG,IAAQzC,GAF1Fy3E,EAAUniF,KAAK,CAAEse,QAASnR,EAAGmR,QAAStR,IAAK,CAACG,SAN3C,CACf,MAAM,KAAE6P,EAAF,KAAQC,GAASJ,GAAgB1P,GACvC+0E,EAAiBliF,KAAK,CAAEsP,IAAK0N,EAAMZ,IAAKa,EAAM9P,OAUlD,MAAMk1E,EAAyC,GAC/C,IAAK,MAAMC,KAAaH,EAAW,CACjC,MAAM,KAAEnlE,EAAF,KAAQC,GAASC,GAAoBolE,EAAUt1E,KACrDq1E,EAAkBriF,KAAK,CAAEsP,IAAK0N,EAAMZ,IAAKa,EAAMjQ,IAAKs1E,EAAUt1E,MAGhE,MAAMu1E,EAAe,IAAIL,KAAqBG,GAC9CE,EAAKC,KAAK,CAACC,EAAOC,IAAUD,EAAMnzE,IAAMozE,EAAMpzE,KAE9C,IAAI6zE,EAAc,EAClB,IAAK,MAAMz4E,KAAQ63E,EAAM,CACvB,MAAM/4E,EAASkB,EAAK0R,IAAM1R,EAAK4E,IAC/B6zE,GAAe35E,EAEjB,MAAM+lD,GAAStyC,EAAOD,EAAQmmE,IAAgBZ,EAAK7iF,OAAS,GAEtDijF,EAAsC,GAEtCC,EAAYL,EAAK,GACvB,IAAIM,EAAmB,CAAEvzE,IAAKszE,EAAUtzE,IAAK8M,IAAKwmE,EAAUxmE,KAE5D,GAAI,OAAQwmE,EACVD,EAAkB3iF,KAAK,CAAEkE,IAAK0+E,EAAUtzE,IAAKnC,GAAIy1E,EAAUz1E,UAG3D,IAAK,MAAMA,KAAMy1E,EAAU51E,IAAK,CAC9B,MAAQgQ,KAAM9Y,GAAQ2Y,GAAgB1P,GACtCw1E,EAAkB3iF,KAAK,CAAEkE,MAAKiJ,OAIlC,IAAK,IAAI3N,EAAI,EAAGA,EAAI+iF,EAAK7iF,OAAQF,IAAK,CACpC,MAAMkL,EAAO63E,EAAK/iF,GACZ4jF,EAAaP,EAAQzmE,IAAMymE,EAAQvzE,IACnCyzE,EAAaF,EAAQvzE,IAAM8zE,EAAa7zB,EACxC8zB,EAAgB34E,EAAK0R,IAAM1R,EAAK4E,IAGtC,GAFAuzE,EAAU,CAAEvzE,IAAKyzE,EAAY3mE,IAAK2mE,EAAaM,GAE3C,OAAQ34E,EACVi4E,EAAkB3iF,KAAK,CAAEkE,IAAK6+E,EAAY51E,GAAIzC,EAAKyC,UAGnD,IAAK,MAAMA,KAAMzC,EAAKsC,IAAK,CACzB,MAAM,KAAEgQ,GAASH,GAAgB1P,GAC3BkzB,EAASrjB,EAAOtS,EAAK4E,IAC3BqzE,EAAkB3iF,KAAK,CAAEkE,IAAK6+E,EAAa1iD,EAAQlzB,QAKzD,IAAK,MAAMuC,KAAWoa,EACpB,GAAKpZ,EAAoB3O,MAAMsL,SAASqC,EAAQ7E,IAEhD,IAAK,MAAMo4E,KAAcN,EACvB,GAAIM,EAAW91E,GAAGtC,KAAO6E,EAAQ7E,GAC/B,GAAI,WAAY6E,GAAWA,EAAQpE,OAAQ,CACzC,MAAM,QAAEsR,GAAYN,GAAqB,CACvCvR,KAAM2E,EAAQ3E,KACdC,IAAK0E,EAAQ1E,IACbzB,MAAOmG,EAAQnG,MACfC,OAAQkG,EAAQlG,OAChB8B,OAAQoE,EAAQpE,SAElBoE,EAAQ1E,IAAMi4E,EAAW/+E,IAAM0Y,OAE5BlN,EAAQ1E,IAAMi4E,EAAW/+E,IAKpCiO,EAAYvD,YAAY,CAAE9D,SAAUgf,IACpCxG,KAGF,MAAO,CACLu+D,mBACAG,2BACAkB,2BC/PJ,MACMz9C,GAAa,CAAEC,MAAO,wBAcAI,oCAAiB,CAC3CC,OAAQ,qBACRC,MAAMC,GAER,MAAMypC,EAAc,QAAOP,OAErB,WAAEhlD,EAAF,gBAAcI,EAAd,kBAA+BM,GAAsBgE,MACrD,mBAAEyyD,GAAuBgC,MACzB,qBAAEvrC,GAAyB6gB,MAC3B,iBAAEipB,EAAF,yBAAoBG,EAApB,uBAA8CkB,GAA2BK,KAKzEC,EAAgBh7D,IAChB2B,EAAWpoB,MAAOu/E,EAAmB94D,GACpCuvB,EAAqBvvB,IAG5B,MAAO,CAAC0d,EAAUC,KAChB,MAAMo2C,EAA2BtzC,8BAAkB,iBAC7C0zC,EAAmC1zC,8BAAkB,yBACrDwzC,EAA4BxzC,8BAAkB,kBAC9CyzC,EAA0BzzC,8BAAkB,gBAC5CuzC,EAAiCvzC,8BAAkB,uBACnD2zC,EAA6B3zC,8BAAkB,mBAC/Cw6C,EAAuBx6C,8BAAkB,aACzCy6C,EAAyBz6C,8BAAkB,eAEjD,OAAQ7C,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3D8D,yBAAa/C,mBAAOkpC,GAAc,CAAEhqC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBm8C,EAAah9C,mBAAO/tB,GAAsBmT,QAC9F,CACDkb,QAAS2C,qBAAS,IAAM,CACtBF,yBAAagzC,KAEf3yC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBm8C,EAAah9C,mBAAO/tB,GAAsB2/B,cAC9F,CACDtR,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaozC,KAEf/yC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBm8C,EAAah9C,mBAAO/tB,GAAsBoT,SAC9F,CACDib,QAAS2C,qBAAS,IAAM,CACtBF,yBAAakzC,KAEf7yC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,IAELL,yBAAa/C,mBAAOkpC,GAAc,CAAEhqC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBm8C,EAAah9C,mBAAO/tB,GAAsBsU,OAC9F,CACD+Z,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamzC,KAEf9yC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBm8C,EAAah9C,mBAAO/tB,GAAsB0/B,YAC9F,CACDrR,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaizC,KAEf5yC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBm8C,EAAah9C,mBAAO/tB,GAAsBuU,UAC9F,CACD8Z,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaqzC,KAEfhzC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,IAEJpD,mBAAOq7C,GAAoB,GACvBz7C,yBAAc0U,yBAAatU,mBAAOkpC,GAAc,CAC/CrtE,IAAK,EACLqjC,MAAO,OACN,CACDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAOw7C,EAAPx7C,KACpD,CACDM,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,YAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAO08C,EAAP18C,KACpD,CACDM,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,YAEnBC,EAAG,MAGPA,EAAG,KAEL8Q,gCAAoB,IAAI,GAC5BnR,yBAAa/C,mBAAO,UACpB+C,yBAAa/C,mBAAOkpC,GAAc,CAAEhqC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B+4B,UAAW/4B,mBAAOrc,GAClBid,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAOjc,EAAPic,IACrD16B,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAak6C,EAAsB,CAAE33E,MAAO,CAAC,eAAe,SAC5D69B,6BAAiB,QAEnBC,EAAG,GACF,EAAG,CAAC,aACPL,yBAAa/C,mBAAO,SAAS,CAC3B+4B,SAAU/4B,mBAAOrc,GACjBid,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAO3b,EAAP2b,IACrD16B,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAam6C,EAAwB,CAAE53E,MAAO,CAAC,eAAe,SAC9D69B,6BAAiB,UAEnBC,EAAG,GACF,EAAG,CAAC,eAETA,EAAG,U,UCtNT,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCRR,MAAMs5B,GAAc,CACzB,CACE7gE,IAAK,SACLY,MAAO,KACP8V,SAAU,CACR,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC5I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClD,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACtJ,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACtJ,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACtJ,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAG1J,CACE1W,IAAK,SACLY,MAAO,KACP8V,SAAU,CACR,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/F,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/F,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/F,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC1F,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/F,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAG1D,CACE1W,IAAK,OACLY,MAAO,KACP8V,SAAU,CACR,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACrF,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/F,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChF,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnH,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7H,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAGtD,CACE1W,IAAK,QACLY,MAAO,KACP8V,SAAU,CACR,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACxH,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACxH,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnH,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7H,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAGjD,CACE1W,IAAK,QACLY,MAAO,KACP8V,SAAU,CACR,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChF,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OCnDhF0sB,GAAa,CAAEC,MAAO,gBACtBC,GAAa,CAAED,MAAO,QACtBE,GAAa,CAAC,WACdC,GAAa,CAAEH,MAAO,QACtBmC,GAAa,CAAC,WACdC,GAAa,CAAEpC,MAAO,UAOAI,oCAAiB,CAC3CC,OAAQ,cACRC,MAAMC,GAER,MAAM89B,EAAoB1nC,iBAAI6mC,GAAY,GAAG7gE,KACvC2hE,EAAa97C,sBAAS,KAC1B,MAAM+7C,EAAiBf,GAAYn+D,KAAK2F,GAAQA,EAAKrI,MAAQ0hE,EAAkBhiE,OAC/E,OAAqB,OAAdkiE,QAAc,IAAdA,OAAA,EAAAA,EAAgBlrD,WAAY,KAG/B4qE,EAAgB5hF,IACpBihD,GAAQhc,KAAK+b,GAAcmD,kBAAmB,CAAEhsC,OAAQ,CAAEsO,QAAS,SAAUzmB,YAG/E,MAAO,CAACmkC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,EACpCS,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAO08B,IAAex4D,IAChF07B,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,MAAO,CAAE,OAAUwmB,EAAkBhiE,QAAU2I,EAAKrI,OAC5EA,IAAKqI,EAAKrI,IACV+kC,QAAUC,GAAiB08B,EAAkBhiE,MAAQ2I,EAAKrI,KACzDqkC,6BAAiBh8B,EAAKzH,OAAQ,GAAI2iC,MACnC,QAENa,gCAAoB,MAAOZ,GAAY,EACpCO,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOw9B,GAAa,CAACt5D,EAAMwE,KACrFk3B,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,cACPrjC,IAAK6M,EACLk4B,QAAUC,GAAiBs8C,EAAaj5E,IACvC,CACD+7B,gCAAoB,MAAOqB,GAAYpB,6BAAiBh8B,GAAO,IAC9D,EAAGm9B,MACJ,c,UC5CV,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMpC,GAAa,CAAEC,MAAO,WACtBC,GAAa,CAAED,MAAO,QACtBE,GAAa,CAAC,WACdC,GAAa,CAAEH,MAAO,WAqBAI,oCAAiB,CAC3CC,OAAQ,QACRC,MAAMC,GAER,MAAM/uB,EAAYzG,KACZ,oBAAEC,EAAF,cAAuB0B,EAAvB,aAAsCZ,GAAiBwS,eAAY9M,GAEnE0sE,EAAc17D,sBAAwB,KAAK,MAC/C,MAAkC,UAA9B,UAAA9V,EAAcrQ,aAAd,eAAqByC,MAChB,CACL,CAAEvB,MAAO,KAAMlB,MAAOgB,EAAc8gF,UACpC,CAAE5gF,MAAO,KAAMlB,MAAOgB,EAAc+gF,QACpC,CAAE7gF,MAAO,KAAMlB,MAAOgB,EAAcghF,aACpC,CAAE9gF,MAAO,KAAMlB,MAAOgB,EAAcihF,eAGjC,CACL,CAAE/gF,MAAO,KAAMlB,MAAOgB,EAAc8gF,UACpC,CAAE5gF,MAAO,KAAMlB,MAAOgB,EAAcghF,aACpC,CAAE9gF,MAAO,KAAMlB,MAAOgB,EAAcihF,iBAGlCC,EAAY,CAChB,CAAEhhF,MAAO,KAAMlB,MAAOgB,EAAc0O,cACpC,CAAExO,MAAO,KAAMlB,MAAOgB,EAAcmhF,iBACpC,CAAEjhF,MAAO,KAAMlB,MAAOgB,EAAcihF,eAEhCG,EAAkB,CACtB,CAAElhF,MAAO,KAAMlB,MAAOgB,EAAc8gF,UACpC,CAAE5gF,MAAO,KAAMlB,MAAOgB,EAAcqhF,iBAGhC3wE,EAAmB1R,IACvBmV,EAAUzD,gBAAgB1R,IAGtBsiF,EAAcn8D,sBAAS,IACtBxX,EAAoB3O,MAAMrC,OACtBgR,EAAoB3O,MAAMrC,OAAS,EAAUykF,EAC/CP,EAAY7hF,MAF2BkiF,GAKhD34C,mBAAM+4C,EAAa,KACjB,MAAMC,EAAoCD,EAAYtiF,MAAMmL,IAAImyD,GAAOA,EAAIt9D,OACtEuiF,EAAiBj3E,SAASmE,EAAazP,QAC1CmV,EAAUzD,gBAAgB6wE,EAAiB,MAI/C,MAAMjJ,EAAwBnzD,sBAAS,KACrC,MAAMyyD,EAAW,CACf,CAAC53E,EAAc8gF,UAAWU,GAC1B,CAACxhF,EAAcghF,aAAcS,GAC7B,CAACzhF,EAAcihF,cAAeS,GAC9B,CAAC1hF,EAAc0O,cAAeizE,GAC9B,CAAC3hF,EAAcmhF,iBAAkBS,GACjC,CAAC5hF,EAAcqhF,gBAAiBQ,GAChC,CAAC7hF,EAAc+gF,QAASe,IAE1B,OAAOlK,EAASnpE,EAAazP,QAAU,OAGzC,MAAO,CAACmkC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,EACpCS,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAO69C,GAAehlB,IAChFj5B,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,MAAO,CAAE,OAAU8hB,EAAIt9D,QAAUykC,mBAAOh1B,MAChEnP,IAAKg9D,EAAIt9D,MACTqlC,QAAUC,GAAiB5zB,EAAgB4rD,EAAIt9D,QAC9C2kC,6BAAiB24B,EAAIp8D,OAAQ,GAAI2iC,MAClC,QAENa,gCAAoB,MAAOZ,GAAY,EACpCO,yBAAc0U,yBAAake,qCAAyBxyB,mBAAO60C,c,UChGlE,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACM51C,GAAa,CAAEC,MAAO,UACtBC,GAAa,CAAC,SAOQG,oCAAiB,CAC3CC,OAAQ,QACRl3B,MAAO,CACPrF,OAAQ,CACNhF,KAAM41C,OACNC,UAAU,IAGZtT,MAAO,CAAC,iBACRf,MAAMC,GAAS,KAAEe,IAInB,MAAMn4B,EAAQo3B,EAMR9zB,EAAc3F,KACd,aAAEK,GAAiBmX,eAAY7R,GAE/ByvB,EAAS1Z,sBAAS,kBAAM,UAAArb,EAAa9K,aAAb,eAAoB6/B,SAAU,KAEtDsjB,EAAe5qC,IACnB,MAAMvY,EAASuY,EAAEoN,OAA+B3lB,MAChDoQ,EAAYvD,YAAY,CAAEgzB,OAAQ7/B,KAG9B+iF,EAAUxqE,IACd,IAAIuxB,GAAc,EAClB,MAAMG,EAAa1xB,EAAE2xB,MACfwoC,EAAe5lE,EAAMrF,OAE3BG,SAASyiC,YAAc9xB,IACrB,IAAKuxB,EAAa,OAElB,MAAMS,EAAehyB,EAAE2xB,MAEjBiI,EAAQ5H,EAAeN,EAC7B,IAAI+4C,GAAa7wC,EAAQugC,EAErBsQ,EAAY,KAAIA,EAAY,IAC5BA,EAAY,MAAKA,EAAY,KAEjC/9C,EAAK,gBAAiB+9C,IAGxBp7E,SAAS4iC,UAAY,KACnBV,GAAc,EACdliC,SAASyiC,YAAc,KACvBziC,SAAS4iC,UAAY,OAIzB,MAAO,CAACrG,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAO,CACzBf,MAAO,iBACP2X,YAAalX,EAAO,KAAOA,EAAO,GAAKkB,GAAUy9C,EAAOz9C,KACvD,KAAM,IACTZ,gCAAoB,WAAY,CAC9B1kC,MAAOykC,mBAAO5E,GACd09B,YAAa,YACbpU,QAAS/kB,EAAO,KAAOA,EAAO,GAAKkB,GAAU6d,EAAY7d,KACxD,KAAM,GAAI1B,U,UCvEjB,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAM+B,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CACjBpjC,IAAK,EACLqjC,MAAO,mBAEHC,GAAa,CAAED,MAAO,QACtBE,GAA2B8B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,WAAa,MAAO,IACnHG,GAAa,CAAEH,MAAO,QAGAI,oCAAiB,CAC3CC,OAAQ,iBACRl3B,MAAO,CACPm2E,QAAS,CACPxgF,KAAMsgD,QACNhe,SAAS,GAEXm+C,IAAK,CACHzgF,KAAMw2B,OACN8L,QAAS,KAGXd,MAAMC,GAIR,MAAO,CAACC,EAAUC,IACRF,EAAQ++C,SACX5+C,yBAAcC,gCAAoB,MAAOZ,GAAY,CACpDgB,gCAAoB,MAAOd,GAAY,CACrCC,GACAa,gCAAoB,MAAOZ,GAAYa,6BAAiBT,EAAQg/C,KAAM,QAG1EvqC,gCAAoB,IAAI,M,UC/B9B,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMhT,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,qBACtBC,GAAa,CAAED,MAAO,mBACtBE,GAAa,CAAEF,MAAO,WACtBG,GAAa,CAAEH,MAAO,OACtBmC,GAA2BH,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,SAAW,SAAU,IACpHoC,GAAa,CAAEpC,MAAO,OACtBqC,GAA2BL,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,SAAW,SAAU,IACpHsC,GAAa,CACjB3lC,IAAK,EACLqjC,MAAO,OAEHuC,GAAa,CAAC,cACdC,GAAc,CAAExC,MAAO,OACvByC,GAA4BT,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,SAAW,SAAU,IACrH0C,GAAc,CAAE1C,MAAO,OACvB4C,GAA4BZ,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,SAAW,WAAY,IACvH6rB,GAAc,CAAE7rB,MAAO,eACvB8rB,GAAc,CAAE9rB,MAAO,QAiBDI,oCAAiB,CAC3CC,OAAQ,cACRgB,MAAO,CAAC,SACRf,MAAMC,GAAS,KAAEe,IAInB,MAAQmoC,MAAOC,EAAYC,OAAQC,GAA7B,SAIA,OAAE1kE,EAAF,aAAUiC,GAAiBmX,eAAYxX,KAEvC04E,EAAqB7oD,mBACrB8oD,EAAY9oD,iBAAkC,OAC9Cte,EAAQse,iBAAsB,CAAC,EAAGzxB,EAAO7I,MAAMrC,SAC/Cy4B,EAASkE,iBAAoB,QAC7BG,EAAUH,iBAAI,GACdI,EAAgBJ,kBAAI,GAEpB+oD,EAAel9D,sBAAS,IACJ,QAApBi9D,EAAUpjF,MAAwB6I,EAAO7I,MACrB,YAApBojF,EAAUpjF,MAA4B,CAAC8K,EAAa9K,OACjD6I,EAAO7I,MAAM0I,OAAO,CAACC,EAAMwE,KAChC,MAAOI,EAAK8M,GAAO2B,EAAMhc,MACzB,OAAOmN,GAASI,EAAM,GAAKJ,GAASkN,EAAM,MAIxC,YAAEkgB,EAAF,UAAeF,GAAcqM,KAE7B48C,EAAW,KACVH,EAAmBnjF,OACxBu6B,EAAY4oD,EAAmBnjF,MAAOo2B,EAAOp2B,MAAOy6B,EAAQz6B,MAAO06B,EAAc16B,QAGnF,MAAO,CAACmkC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrCc,gCAAoB,MAAO,CACzBf,MAAO,aACP8B,QAAS,qBACTnL,IAAK6oD,GACJ,EACA9+C,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAO4+C,GAAgB12E,IACjF03B,yBAAc0U,yBAAa0kB,GAAgB,CACjD95B,MAAO,YACPrjC,IAAKqM,EAAM7D,GACX6D,MAAOA,EACPpF,KAAM,MACL,KAAM,EAAG,CAAC,YACX,OACH,OAELm9B,gCAAoB,MAAOb,GAAY,CACrCa,gCAAoB,MAAOZ,GAAY,CACrCgC,GACA0B,yBAAa/C,mBAAO4oC,GAAa,CAC/B1pC,MAAO,cACP3jC,MAAOo2B,EAAOp2B,MACd,iBAAkBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkBlP,EAAQp2B,MAAQslC,IAC9E,CACDP,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO8oC,GAAc,CAChCxjE,MAAO,CAAC,MAAQ,OAChB/J,MAAO,QACN,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,IAELL,yBAAa/C,mBAAO8oC,GAAc,CAChCxjE,MAAO,CAAC,MAAQ,OAChB/J,MAAO,OACN,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,SAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,YAETnD,gCAAoB,MAAOqB,GAAY,CACrCC,GACAwB,yBAAa/C,mBAAO4oC,GAAa,CAC/B1pC,MAAO,cACP3jC,MAAOojF,EAAUpjF,MACjB,iBAAkBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkB89C,EAAWpjF,MAAQslC,IACjF,CACDP,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO8oC,GAAc,CAChCxjE,MAAO,CAAC,MAAQ,UAChB/J,MAAO,OACN,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,IAELL,yBAAa/C,mBAAO8oC,GAAc,CAChCxjE,MAAO,CAAC,MAAQ,UAChB/J,MAAO,WACN,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,SAEnBC,EAAG,IAELL,yBAAa/C,mBAAO8oC,GAAc,CAChCxjE,MAAO,CAAC,MAAQ,UAChB/J,MAAO,UACN,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,SAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,YAEY,WAApBu7C,EAAUpjF,OACNqkC,yBAAcC,gCAAoB,MAAO2B,GAAY,CACpDvB,gCAAoB,MAAO,CACzBf,MAAO,QACP,aAAc,IAAI3nB,EAAMhc,MAAM,QAAQgc,EAAMhc,MAAM,OACjD,SAAU,EAAGkmC,IAChBsB,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,cACP3nB,MAAO,GACPzO,IAAK,EACL8M,IAAKoqB,mBAAO57B,GAAQlL,OACpBgsB,KAAM,EACN3pB,MAAOgc,EAAMhc,MACb,iBAAkBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkBtpB,EAAOhc,MAAQslC,IAC7E,KAAM,EAAG,CAAC,MAAO,aAEtBqT,gCAAoB,IAAI,GAC5BjU,gCAAoB,MAAOyB,GAAa,CACtCC,GACAoB,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,cACPp2B,IAAK,EACL8M,IAAK,EACLsP,KAAM,GACN3pB,MAAOy6B,EAAQz6B,MACf,iBAAkBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkB7K,EAASz6B,MAAQslC,IAC/E,KAAM,EAAG,CAAC,OAAQ,YAEvBZ,gCAAoB,MAAO2B,GAAa,CACtCE,GACA7B,gCAAoB,MAAO8qB,GAAa,CACtChoB,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,0EACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B+nC,QAAS9xC,EAAc16B,MACvB,mBAAoBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkB5K,EAAe16B,MAAQslC,IACvF,KAAM,EAAG,CAAC,cAEfuC,EAAG,GACF,EAAG,CAAC,0BAIbnD,gCAAoB,MAAO+qB,GAAa,CACtCjoB,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,aACPlhC,KAAM,UACN4iC,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBg+C,MACpD,CACDv+C,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,YACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBL,EAAK,WACzD,CACDF,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,MAGPL,yBAAa+7C,GAAgB,CAC3BN,QAASx+C,mBAAOpK,GAChB6oD,IAAK,WACJ,KAAM,EAAG,CAAC,kB,UCnOjB,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMx/C,GAAa,CAAEC,MAAO,sBACtBC,GAAa,CAAED,MAAO,WACtBE,GAAa,CAAEF,MAAO,QASAI,oCAAiB,CAC3CC,OAAQ,aACRgB,MAAO,CAAC,SACRf,MAAMC,GAAS,KAAEe,IAMnB,MAAM,OAAEp8B,GAAWoZ,eAAYxX,MACzB,WAAEqxB,GAAe4K,KAEvB,MAAO,CAACvC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrCc,gCAAoB,MAAO,KAAMC,6BAAiBF,mBAAO57B,IAAU,KAErE67B,gCAAoB,MAAOb,GAAY,CACrC2D,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,aACPlhC,KAAM,UACN4iC,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAO3I,EAAP2I,KACpD,CACDM,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,aAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,YACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBL,EAAK,WACzD,CACDF,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,Y,UC5CX,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCFf,MAAM27C,GAAe,KACnB,MAAMC,EAAS77E,SAASC,cAAc,UAUtC,OATA47E,EAAO15E,MAAMvC,MAAQ,IACrBi8E,EAAO15E,MAAMtC,OAAS,IACtBg8E,EAAO15E,MAAMka,SAAW,WACxBw/D,EAAO15E,MAAMwmC,MAAQ,IACrBkzC,EAAO15E,MAAMd,IAAM,IACnBw6E,EAAO15E,MAAMs5B,OAAS,IAEtBz7B,SAASyQ,KAAKI,YAAYgrE,GAEnBA,GAGHC,GAAe,CAACrhF,EAAeshF,EAAwBp8E,KAC3D,MAAMq8E,EAAU,kBAEhB,IAAI75E,EAAQ,GACZ,MAAM85E,EAAcj8E,SAASi8E,YAC7B,GAAIA,EACF,IAAK,MAAMC,KAAcD,EACvB,GAAKC,EAAWC,SAEhB,IAAK,MAAMC,KAAQF,EAAWC,SAC5Bh6E,GAASi6E,EAAK5Y,QAKpB,MAAM,MAAE5jE,EAAF,OAASC,EAAT,OAAiBw4B,GAAW14B,EAC5B08E,EAAO,wDAGLl6E,yJAOUvC,EAAQ,EAAIy4B,OAAYx4B,EAAS,EAAIw4B,6BACnCA,gEAMd5nB,EAAO,SAAWsrE,EAAUvgC,UAAY,UAE9C/gD,EAAI2kC,OACJ3kC,EAAI6hF,MAAM,SACNN,wBAEEK,YACA5rE,sBAGNhW,EAAI2xB,SAGOmwD,GAAQ,CAACR,EAAwBp8E,KAC5C,MAAMk8E,EAASD,KACTY,EAAsBX,EAAOY,cAEnC,IAAKZ,EAAOa,kBAAoBF,EAAqB,OACrDV,GAAaD,EAAOa,gBAAiBX,EAAWp8E,GAEhD,MAAMg9E,EAAmB,KACvBH,EAAoB//D,QACpB+/D,EAAoBD,SAGhBK,EAAmB,KACvBf,EAAOtzD,oBAAoB,OAAQo0D,GACnCH,EAAoBj0D,oBAAoB,aAAcq0D,GACtD58E,SAASyQ,KAAKM,YAAY8qE,IAG5BA,EAAOjlE,iBAAiB,OAAQ+lE,GAChCH,EAAoB5lE,iBAAiB,aAAcgmE,IClF/C7+C,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,qBACtBC,GAAa,CAAED,MAAO,mBACtBE,GAAa,CAAEF,MAAO,WACtBG,GAAa,CAAEH,MAAO,OACtBmC,GAA2BH,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,SAAW,SAAU,IACpHoC,GAAa,CAAEpC,MAAO,OACtBqC,GAA2BL,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,SAAW,SAAU,IACpHsC,GAAa,CAAEtC,MAAO,OACtBuC,GAA2BP,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,SAAW,SAAU,IACpHwC,GAAc,CAAExC,MAAO,eACvByC,GAA4BT,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,OAAS,4CAA6C,IACtJ0C,GAAc,CAAE1C,MAAO,QAeDI,oCAAiB,CAC3CC,OAAQ,YACRgB,MAAO,CAAC,SACRf,MAAMC,GAAS,KAAEe,IAInB,MAAQmoC,MAAOC,EAAYC,OAAQC,GAA7B,QACAxQ,EAAe,QAAOC,QAItB,OAAEn0D,EAAF,aAAUiC,EAAV,cAAwBF,GAAkBqX,eAAYxX,KAEtDg6E,EAAmBnqD,mBACnB8oD,EAAY9oD,iBAAuB,OACnCylD,EAAQzlD,iBAAI,GACZoqD,EAAUpqD,kBAAI,GAEdqqD,EAAS,KACb,IAAKF,EAAiBzkF,MAAO,OAC7B,MAAM4kF,EAAW,CACfp9E,MAAO,KACPC,OAA4B,QAApB27E,EAAUpjF,MAAkB,KAAO4K,EAAc5K,MAAQ+/E,EAAM//E,MAAQ,KAAO4K,EAAc5K,MACpGigC,OAAQykD,EAAQ1kF,MAAQ,GAAK,GAE/BmkF,GAAMM,EAAiBzkF,MAAO4kF,IAGhC,MAAO,CAACzgD,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrCc,gCAAoB,MAAO,CACzBf,MAAO,aACP8B,QAAS,mBACTnL,IAAKmqD,GACJ,CACoB,YAApBrB,EAAUpjF,OACNqkC,yBAAc0U,yBAAa0kB,GAAgB,CAC1Cn9D,IAAK,EACLqjC,MAAO,YACPh3B,MAAO83B,mBAAO35B,GACdvD,KAAM,MACL,KAAM,EAAG,CAAC,YACZ88B,wBAAW,GAAOC,gCAAoBC,cAAW,CAAEjkC,IAAK,GAAKkkC,wBAAYC,mBAAO57B,GAAS,CAAC8D,EAAOQ,KACxFk3B,yBAAc0U,yBAAa0kB,GAAgB,CACjD95B,MAAO6X,4BAAgB,CAAC,YAAa,CAAE,cAAeruC,EAAQ,GAAK4yE,EAAM//E,QAAU,KACnFM,IAAKqM,EAAM7D,GACX6D,MAAOA,EACPpF,KAAM,MACL,KAAM,EAAG,CAAC,QAAS,YACpB,OACP,OAELm9B,gCAAoB,MAAOb,GAAY,CACrCa,gCAAoB,MAAOZ,GAAY,CACrCgC,GACA0B,yBAAa/C,mBAAO4oC,GAAa,CAC/B1pC,MAAO,cACP3jC,MAAOojF,EAAUpjF,MACjB,iBAAkBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkB89C,EAAWpjF,MAAQslC,IACjF,CACDP,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO8oC,GAAc,CAChCxjE,MAAO,CAAC,MAAQ,OAChB/J,MAAO,OACN,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,WAEnBC,EAAG,IAELL,yBAAa/C,mBAAO8oC,GAAc,CAChCxjE,MAAO,CAAC,MAAQ,OAChB/J,MAAO,WACN,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,WAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,YAETnD,gCAAoB,MAAOqB,GAAY,CACrCC,GACAwB,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,cACP3jC,MAAO+/E,EAAM//E,MACb,iBAAkBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkBy6C,EAAO//E,MAAQslC,IAC7E,CACDP,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,GAAK,CAC/C+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,OAEnBC,EAAG,IAELL,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,GAAK,CAC/C+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,OAEnBC,EAAG,IAELL,yBAAa/C,mBAAOs4B,GAAe,CAAE/8D,MAAO,GAAK,CAC/C+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,OAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,YAETnD,gCAAoB,MAAOuB,GAAY,CACrCC,GACAxB,gCAAoB,MAAOyB,GAAa,CACtCqB,yBAAa/C,mBAAO,SAAS,CAC3B+nC,QAASkY,EAAQ1kF,MACjB,mBAAoBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkBo/C,EAAS1kF,MAAQslC,IACjF,KAAM,EAAG,CAAC,gBAGjBc,KAEF1B,gCAAoB,MAAO2B,GAAa,CACtCmB,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,aACPlhC,KAAM,UACN4iC,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBq/C,MACpD,CACD5/C,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,iBAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,YACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBL,EAAK,WACzD,CACDF,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,Y,UCxKX,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMlC,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,sBACtBC,GAAa,CAAED,MAAO,WACtBE,GAAa,CAAEF,MAAO,OACtBG,GAA2B6B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,SAAW,SAAU,IACpHmC,GAAa,CACjBxlC,IAAK,EACLqjC,MAAO,OAEHoC,GAAa,CAAC,cACdC,GAAa,CAAErC,MAAO,OACtBsC,GAA2BN,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,SAAW,WAAY,IACtHuC,GAAa,CAAEvC,MAAO,eACtBwC,GAAc,CAAExC,MAAO,QAeDI,oCAAiB,CAC3CC,OAAQ,aACRgB,MAAO,CAAC,SACRf,MAAMC,GAAS,KAAEe,IAInB,MAAQmoC,MAAOC,EAAYC,OAAQC,GAA7B,SAIA,OAAE1kE,EAAF,aAAUiC,GAAiBmX,eAAYxX,MAEvC,WAAEo0B,EAAF,UAAcxE,GAAcqM,KAE5B08C,EAAY9oD,iBAAkC,OAC9Cte,EAAQse,iBAAsB,CAAC,EAAGzxB,EAAO7I,MAAMrC,SAC/CmhC,EAAkBxE,kBAAI,GAEtBlU,EAAiBD,sBAAS,IACN,QAApBi9D,EAAUpjF,MAAwB6I,EAAO7I,MACrB,YAApBojF,EAAUpjF,MAA4B,CAAC8K,EAAa9K,OACjD6I,EAAO7I,MAAM0I,OAAO,CAACC,EAAMwE,KAChC,MAAOI,EAAK8M,GAAO2B,EAAMhc,MACzB,OAAOmN,GAASI,EAAM,GAAKJ,GAASkN,EAAM,KAI9C,MAAO,CAAC8pB,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrCc,gCAAoB,MAAOb,GAAY,CACrCC,GACA0D,yBAAa/C,mBAAO4oC,GAAa,CAC/B1pC,MAAO,cACP3jC,MAAOojF,EAAUpjF,MACjB,iBAAkBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkB89C,EAAWpjF,MAAQslC,IACjF,CACDP,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO8oC,GAAc,CAChCxjE,MAAO,CAAC,MAAQ,UAChB/J,MAAO,OACN,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,IAELL,yBAAa/C,mBAAO8oC,GAAc,CAChCxjE,MAAO,CAAC,MAAQ,UAChB/J,MAAO,WACN,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,SAEnBC,EAAG,IAELL,yBAAa/C,mBAAO8oC,GAAc,CAChCxjE,MAAO,CAAC,MAAQ,UAChB/J,MAAO,UACN,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,SAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,YAEY,WAApBu7C,EAAUpjF,OACNqkC,yBAAcC,gCAAoB,MAAOwB,GAAY,CACpDpB,gCAAoB,MAAO,CACzBf,MAAO,QACP,aAAc,IAAI3nB,EAAMhc,MAAM,QAAQgc,EAAMhc,MAAM,OACjD,SAAU,EAAG+lC,IAChByB,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,cACP3nB,MAAO,GACPzO,IAAK,EACL8M,IAAKoqB,mBAAO57B,GAAQlL,OACpBgsB,KAAM,EACN3pB,MAAOgc,EAAMhc,MACb,iBAAkBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkBtpB,EAAOhc,MAAQslC,IAC7E,KAAM,EAAG,CAAC,MAAO,aAEtBqT,gCAAoB,IAAI,GAC5BjU,gCAAoB,MAAOsB,GAAY,CACrCC,GACAvB,gCAAoB,MAAOwB,GAAY,CACrCsB,yBAAa/C,mBAAO,SAAS,CAC3B+nC,QAAS1tC,EAAgB9+B,MACzB,mBAAoBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkBxG,EAAiB9+B,MAAQslC,IACzF,KAAM,EAAG,CAAC,kBAInBZ,gCAAoB,MAAOyB,GAAa,CACtCqB,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,aACPlhC,KAAM,UACN4iC,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAO5F,EAAP4F,CAAmBA,mBAAOre,GAAiB0Y,EAAgB9+B,SAC/G,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,aAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,YACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBL,EAAK,WACzD,CACDF,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,MAGPL,yBAAa+7C,GAAgB,CAC3BN,QAASx+C,mBAAOpK,GAChB6oD,IAAK,WACJ,KAAM,EAAG,CAAC,kB,UClJjB,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMv9C,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,wBACtBC,GAAa,CAAED,MAAO,WACtBE,GAAa,CAAEF,MAAO,OACtBG,GAA2B6B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,SAAW,SAAU,IACpHmC,GAAa,CACjBxlC,IAAK,EACLqjC,MAAO,OAEHoC,GAAa,CAAC,cACdC,GAA2BL,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,OAAS,6CAA8C,IACtJsC,GAAa,CAAEtC,MAAO,QAaAI,oCAAiB,CAC3CC,OAAQ,qBACRgB,MAAO,CAAC,SACRf,MAAMC,GAAS,KAAEe,IAInB,MAAQmoC,MAAOC,EAAYC,OAAQC,GAA7B,SAIA,OAAE1kE,EAAF,aAAUiC,GAAiBmX,eAAYxX,MAEvC,mBAAE8wB,GAAuBmL,KAEzB08C,EAAY9oD,iBAAkC,OAC9Cte,EAAQse,iBAAsB,CAAC,EAAGzxB,EAAO7I,MAAMrC,SAE/CyoB,EAAiBD,sBAAS,IACN,QAApBi9D,EAAUpjF,MAAwB6I,EAAO7I,MACrB,YAApBojF,EAAUpjF,MAA4B,CAAC8K,EAAa9K,OACjD6I,EAAO7I,MAAM0I,OAAO,CAACC,EAAMwE,KAChC,MAAOI,EAAK8M,GAAO2B,EAAMhc,MACzB,OAAOmN,GAASI,EAAM,GAAKJ,GAASkN,EAAM,KAI9C,MAAO,CAAC8pB,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrCc,gCAAoB,MAAOb,GAAY,CACrCC,GACA0D,yBAAa/C,mBAAO4oC,GAAa,CAC/B1pC,MAAO,cACP3jC,MAAOojF,EAAUpjF,MACjB,iBAAkBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkB89C,EAAWpjF,MAAQslC,IACjF,CACDP,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO8oC,GAAc,CAChCxjE,MAAO,CAAC,MAAQ,UAChB/J,MAAO,OACN,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,IAELL,yBAAa/C,mBAAO8oC,GAAc,CAChCxjE,MAAO,CAAC,MAAQ,UAChB/J,MAAO,WACN,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,SAEnBC,EAAG,IAELL,yBAAa/C,mBAAO8oC,GAAc,CAChCxjE,MAAO,CAAC,MAAQ,UAChB/J,MAAO,UACN,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,SAEnBC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,YAEY,WAApBu7C,EAAUpjF,OACNqkC,yBAAcC,gCAAoB,MAAOwB,GAAY,CACpDpB,gCAAoB,MAAO,CACzBf,MAAO,QACP,aAAc,IAAI3nB,EAAMhc,MAAM,QAAQgc,EAAMhc,MAAM,OACjD,SAAU,EAAG+lC,IAChByB,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,cACP3nB,MAAO,GACPzO,IAAK,EACL8M,IAAKoqB,mBAAO57B,GAAQlL,OACpBgsB,KAAM,EACN3pB,MAAOgc,EAAMhc,MACb,iBAAkBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkBtpB,EAAOhc,MAAQslC,IAC7E,KAAM,EAAG,CAAC,MAAO,aAEtBqT,gCAAoB,IAAI,GAC5B3S,KAEFtB,gCAAoB,MAAOuB,GAAY,CACrCuB,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,aACPlhC,KAAM,UACN4iC,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAOlJ,EAAPkJ,CAA2BA,mBAAOre,MACtF,CACD2e,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,mBAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,YACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBL,EAAK,WACzD,CACDF,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,QAEnBC,EAAG,Y,UC/HX,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMnE,GAAa,CAAEC,MAAO,iBACtBC,GAAa,CAAED,MAAO,QACtBE,GAAa,CAAC,WACdC,GAAa,CAAEH,MAAO,WAmBAI,oCAAiB,CAC3CC,OAAQ,QACRC,MAAMC,GAER,MAAM/uB,EAAYzG,KACZ,gBAAEsB,GAAoBiS,eAAY9M,GAElClD,EAAqBkD,EAAUlD,mBAE/BkrD,EAAkB,CACtB,CAAE78D,IAAK,SAAUY,MAAO,gBACxB,CAAEZ,IAAK,OAAQY,MAAO,WACtB,CAAEZ,IAAK,QAASY,MAAO,QACvB,CAAEZ,IAAK,OAAQY,MAAO,WACtB,CAAEZ,IAAK,MAAOY,MAAO,gBAGjB2jF,EAAyB1+D,sBAAS,KACtC,MAAM2+D,EAAY,CAChB,MAASC,GACT,KAAQC,GACR,IAAOC,GACP,KAAQC,GACR,OAAUC,IAEZ,OAAOL,EAAU90E,EAAgBhQ,QAAU,OAG7C,MAAO,CAACmkC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,EACpCS,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAY24B,EAAOG,GAC9D54B,gCAAoB,MAAO,CAChCf,MAAO6X,4BAAgB,CAAC,MAAO,CAAE,OAAU8hB,EAAIh9D,MAAQmkC,mBAAOz0B,MAC9D1P,IAAKg9D,EAAIh9D,IACT+kC,QAAUC,GAAiBb,mBAAOxyB,EAAPwyB,CAA2B64B,EAAIh9D,MACzDqkC,6BAAiB24B,EAAIp8D,OAAQ,GAAI2iC,KAClC,OAENa,gCAAoB,MAAOZ,GAAY,EACpCO,yBAAc0U,yBAAake,qCAAyBxyB,mBAAOogD,IAA0B,CACpF38C,QAAS9D,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAOxyB,EAAPwyB,CAA2B,MAC/E,KAAM,a,UC9Df,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMf,GAAa,CAAEC,MAAO,SACtBC,GAAa,CAAED,MAAO,WAKAI,oCAAiB,CAC3CC,OAAQ,gBACRl3B,MAAO,CACPtF,MAAO,CACL/E,KAAM41C,OACNC,UAAU,GAEZ7wC,OAAQ,CACNhF,KAAM41C,OACNC,UAAU,GAEZtvC,KAAM,CACJvG,KAAM41C,OACNtT,QAAS,IAEX97B,IAAK,CACHxG,KAAM41C,OACNtT,QAAS,IAEXzF,MAAO,CACL78B,KAAMw2B,OACN8L,QAAS,IAEXqgD,SAAU,CACR3iF,KAAMsgD,QACNhe,SAAS,IAGXC,MAAO,CAAC,SACRf,MAAMC,GAAS,KAAEe,IAInB,MAAMn4B,EAAQo3B,EAMR7M,EAAIiD,iBAAI,GACRhD,EAAIgD,iBAAI,GAEdrK,uBAAU,KACJnjB,EAAM9D,MAAQ,EAAGquB,EAAEr3B,MAAQ8M,EAAM9D,KAChCquB,EAAEr3B,MAAQ4H,SAASyQ,KAAK2F,YAAclR,EAAM9D,KAAO8D,EAAMtF,MAE1DsF,EAAM7D,KAAO,EAAGquB,EAAEt3B,MAAQ8M,EAAM7D,IAC/BquB,EAAEt3B,MAAQ4H,SAASyQ,KAAK6F,aAAepR,EAAM7D,IAAM6D,EAAMrF,SAGhE,MAAM6rC,EAAa/6B,IACjB,IAAKzL,EAAMs4E,SAAU,OAErB,IAAIt7C,GAAc,EAElB,MAAMu7C,EAAcz9E,SAASyQ,KAAK2F,YAC5BE,EAAetW,SAASyQ,KAAK6F,aAE7B6rB,EAAaxxB,EAAEyxB,MACfC,EAAa1xB,EAAE2xB,MAEfC,EAAa9S,EAAEr3B,MACfoqC,EAAY9S,EAAEt3B,MAEpB4H,SAASyiC,YAAc9xB,IACrB,IAAKuxB,EAAa,OAElB,MAAMoI,EAAQ35B,EAAEyxB,MAAQD,EAClBoI,EAAQ55B,EAAE2xB,MAAQD,EAExB,IAAIjhC,EAAOmhC,EAAa+H,EACpBjpC,EAAMmhC,EAAY+H,EAElBnpC,EAAO,IAAGA,EAAO,GACjBC,EAAM,IAAGA,EAAM,GACfD,EAAO8D,EAAMtF,MAAQ69E,IAAar8E,EAAOq8E,EAAcv4E,EAAMtF,OAC7DyB,EAAM6D,EAAMrF,OAASyW,IAAcjV,EAAMiV,EAAepR,EAAMrF,QAElE4vB,EAAEr3B,MAAQgJ,EACVsuB,EAAEt3B,MAAQiJ,GAEZrB,SAAS4iC,UAAY,KACnBV,GAAc,EAEdliC,SAASyiC,YAAc,KACvBziC,SAAS4iC,UAAY,OAIzB,MAAO,CAACrG,EAAUC,KAChB,MAAMkhD,EAAuBp+C,8BAAkB,aAE/C,OAAQ7C,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,iBACP55B,MAAOoxC,4BAAgB,CACrB3zC,MAAO08B,EAAQ18B,MAAQ,KACvBC,OAAQy8B,EAAQz8B,OAAS,KACzBuB,KAAMquB,EAAEr3B,MAAQ,KAChBiJ,IAAKquB,EAAEt3B,MAAQ,QAEhB,CACAkkC,EAAQ5E,OACJ+E,yBAAcC,gCAAoBC,cAAW,CAAEjkC,IAAK,GAAK,CACxDokC,gCAAoB,MAAO,CACzBf,MAAO,SACP2X,YAAalX,EAAO,KAAOA,EAAO,GAAKkB,GAAUgO,EAAUhO,KAC1D,CACDZ,gCAAoB,MAAOhB,GAAYiB,6BAAiBT,EAAQ5E,OAAQ,GACxEoF,gCAAoB,MAAO,CACzBf,MAAO,YACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBL,EAAK,WACzD,CACDuC,yBAAa89C,MAEd,IACH5gD,gCAAoB,MAAOd,GAAY,CACrC2B,wBAAYpB,EAAKqB,OAAQ,cAE1B,MACFnB,yBAAcC,gCAAoB,MAAO,CACxChkC,IAAK,EACLqjC,MAAO,UACP2X,YAAalX,EAAO,KAAOA,EAAO,GAAKkB,GAAUgO,EAAUhO,KAC1D,CACDC,wBAAYpB,EAAKqB,OAAQ,YACxB,MACN,O,UClIL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMG,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CACjBpjC,IAAK,EACLqjC,MAAO,WAEHC,GAAa,CAAED,MAAO,QACtBE,GAAa,CACjBvjC,IAAK,EACLqjC,MAAO,aAEHG,GAAa,CAAEH,MAAO,gBACtBmC,GAAa,CACjBxlC,IAAK,EACLqjC,MAAO,aAEHoC,GAA2BJ,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,eAAiB,MAAO,IACvHqC,GAAa,CAAC,UAAW,cACzBC,GAAa,CAAC,KAAM,QAAS,SAAU,aACvCC,GAAa,CACjB5lC,IAAK,EACLqjC,MAAO,QAEHwC,GAAc,CAAExC,MAAO,SACvByC,GAAc,CAAC,UAAW,cAC1BC,GAAc,CAAC,KAAM,QAAS,SAAU,aACxCE,GAAc,CAClBjmC,IAAK,EACLqjC,MAAO,QAEH6rB,GAAc,CAAE7rB,MAAO,SAqBDI,oCAAiB,CAC3CC,OAAQ,cACRC,MAAMC,GAER,MAAM9zB,EAAc3F,IACd0K,EAAYzG,KACZ,aAAE5D,GAAiBmX,eAAY7R,IAC/B,cAAEC,EAAF,gBAAiBzB,EAAjB,oBAAkCD,EAAlC,qBAAuDE,EAAvD,oBAA6EC,GAAwBmT,eAAY9M,IAEjH,aAAE4V,GAAiBoC,KAEnBpkB,EAAWod,sBAAwB,KACvC,MAAMo/D,EAA2B,GAEjC,IAAK,MAAMn6E,KAAMN,EAAa9K,MAAM+I,SAClC,GAAIqC,EAAGmR,QAAS,CACd,MAAMipE,EAAWD,EAAUA,EAAU5nF,OAAS,GAE1C6nF,GAA8B,UAAlBA,EAAS/iF,MAAoB+iF,EAAS18E,IAAM08E,EAAS18E,KAAOsC,EAAGmR,QAC7EipE,EAASz8E,SAAS9K,KAAKmN,GAEpBm6E,EAAUtnF,KAAK,CAAEwE,KAAM,QAASqG,GAAIsC,EAAGmR,QAASxT,SAAU,CAACqC,UAE7Dm6E,EAAUtnF,KAAKmN,GAGtB,OAAOm6E,IAGHE,EAAgB,CAAC98E,EAAqBG,KAC1C,GAAI8F,EAAgB5O,QAAU8I,EAAI,OAClC,GAAIgG,EAAoB9O,MAAMsL,SAASxC,GAAK,OAE5C,MAAM48E,EAAS/8E,EAAKI,SAASoC,IAAIC,GAAMA,EAAGtC,IAC1CqM,EAAU7E,uBAAuBo1E,GACjCvwE,EAAU5E,mBAAmBzH,GAC7Bi9C,sBAAS,IAAM5wC,EAAU3E,wBAAwB1H,KAG7C68E,EAAY78E,IACZ8F,EAAgB5O,QAAU8I,IAC1BgG,EAAoB9O,MAAMsL,SAASxC,IAEvCqM,EAAU7E,uBAAuB,CAACxH,MAG9B88E,EAAe98E,IACfgG,EAAoB9O,MAAMsL,SAASxC,GACrCqM,EAAU1E,uBAAuB3B,EAAoB9O,MAAM0I,OAAOC,GAAQA,IAASG,IAEhFqM,EAAU1E,uBAAuB,IAAI3B,EAAoB9O,MAAO8I,IAEjE6F,EAAoB3O,MAAMsL,SAASxC,IAAKqM,EAAU7E,uBAAuB,KAGzEu1E,EAAU,KACd,MAAMC,EAAuBh7E,EAAa9K,MAAM+I,SAASoC,IAAIxC,GAAQA,EAAKG,IACpEi9E,EAA0Bj3E,EAAoB9O,MAAM0I,OAAOC,IAASm9E,EAAqBx6E,SAAS3C,IACxGwM,EAAU1E,uBAAuBs1E,IAE7BC,EAAU,KACd,MAAMF,EAAuBh7E,EAAa9K,MAAM+I,SAASoC,IAAIxC,GAAQA,EAAKG,IAC1EqM,EAAU1E,uBAAuB,IAAI3B,EAAoB9O,SAAU8lF,IAC/Dn3E,EAAoB3O,MAAMrC,QAAQwX,EAAU7E,uBAAuB,KAGnE21E,EAAc3rD,iBAAI,IAElB4rD,EAAkB,CAAC3tE,EAA+BzP,KACtD,MAAMvJ,EAAQgZ,EAAEoN,OAA4B3lB,MAC5CoQ,EAAYnC,cAAc,CAAEnF,KAAIgE,MAAO,CAAEvN,UACzC0mF,EAAYjmF,MAAQ,IAGhBmmF,EAAar9E,IACjBm9E,EAAYjmF,MAAQ8I,EACpBi9C,sBAAS,KACP,MAAM7gB,EAAWt9B,SAASwc,cAAc,UAAUtb,GAClDo8B,EAAS7gB,WAIP2P,EAAQ,KACZ7e,EAAUhD,qBAAoB,IAGhC,MAAO,CAACgyB,EAAUC,KAChB,MAAMq/B,EAAsBv8B,8BAAkB,YACxCk/C,EAAoBl/C,8BAAkB,UACtCm/C,EAA8Bn/C,8BAAkB,oBAChDo/C,EAA6Bp/C,8BAAkB,mBAErD,OAAQ7C,yBAAc0U,yBAAawtC,GAAe,CAChD5iD,MAAO,eACPn8B,MAAO,IACPC,OAAQ,IACR63B,MAAO,MAAMmF,mBAAO91B,GAAqBhR,UAAU8mC,mBAAO35B,GAAc/B,SAASpL,UACjFqL,MAAO,IACPC,IAAK,GACLi/B,QAAS9D,EAAO,KAAOA,EAAO,GAAMkB,GAAiBtR,MACpD,CACD+Q,QAAS2C,qBAAS,IAAM,CACrBjD,mBAAO17B,GAAUpL,QACb0mC,yBAAcC,gCAAoB,MAAOZ,GAAY,CACpDgB,gCAAoB,MAAOd,GAAY,CACrC4D,yBAAa/C,mBAAO,SAAS,CAC3Bl9B,KAAM,QACNwC,MAAO,CAAC,eAAe,OACvBs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBugD,MACpD,CACD9gD,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3Bl9B,KAAM,QACN89B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiB0gD,MACpD,CACDjhD,QAAS2C,qBAAS,IAAM,CACtBE,6BAAiB,UAEnBC,EAAG,MAGNpD,mBAAOp0B,IACHg0B,yBAAcC,gCAAoB,MAAOT,GAAY,CACpD2D,yBAAai8B,EAAqB,CAChC9/B,MAAO,WACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAO1Z,EAAP0Z,CAAqBA,mBAAOp0B,GAAiBo0B,mBAAOhuB,GAAsBiQ,OAEjI8gB,yBAAa4+C,EAAmB,CAC9BziD,MAAO,WACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAO1Z,EAAP0Z,CAAqBA,mBAAOp0B,GAAiBo0B,mBAAOhuB,GAAsBkQ,YAGnIgyB,gCAAoB,IAAI,MAE9BA,gCAAoB,IAAI,GAC5BjU,gCAAoB,MAAOZ,GAAY,EACpCO,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAO17B,GAAYJ,IAC7E07B,yBAAcC,gCAAoBC,cAAW,CACnDjkC,IAAKqI,EAAKG,IACT,CACc,UAAdH,EAAKlG,MACD4hC,yBAAcC,gCAAoB,MAAOwB,GAAY,CACpDC,IACC1B,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAY77B,EAAKI,SAAWw3E,IAC1El8C,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,OAAQ,CACxC,OAAU/W,mBAAO91B,GAAqBrD,SAASi1E,EAAUz3E,IACzD,eAAgB27B,mBAAO51B,GAAsBvD,SAASi1E,EAAUz3E,OAExDxI,IAAKigF,EAAUz3E,GACfu8B,QAAUC,GAAiBmgD,EAAc98E,EAAM43E,EAAUz3E,IACzDk9C,WAAa1gB,GAAiB6gD,EAAU5F,EAAUz3E,KACjD,CACAm9E,EAAYjmF,QAAUugF,EAAUz3E,IAC5Bu7B,yBAAcC,gCAAoB,QAAS,CAC1ChkC,IAAK,EACLwI,GAAI,SAASy3E,EAAUz3E,GACvB9I,MAAOugF,EAAUhhF,MAAQklC,mBAAO4I,IAAiBkzC,EAAU99E,MAC3DkhC,MAAO,QACPlhC,KAAM,OACN0jD,OAAQ7gB,GAAU4gD,EAAgB5gD,EAAQi7C,EAAUz3E,IACpD09E,UAAWC,sBAAUnhD,GAAU4gD,EAAgB5gD,EAAQi7C,EAAUz3E,IAAK,CAAC,WACtE,KAAM,GAAIm9B,MACZ5B,yBAAcC,gCAAoB,MAAO4B,GAAYvB,6BAAiB47C,EAAUhhF,MAAQklC,mBAAO4I,IAAiBkzC,EAAU99E,OAAQ,IACvIiiC,gCAAoB,MAAOyB,GAAa,CACrC1B,mBAAO31B,GAAqBxD,SAASi1E,EAAUz3E,KAC3Cu7B,yBAAc0U,yBAAastC,EAA6B,CACvD/lF,IAAK,EACLyJ,MAAO,CAAC,YAAY,QACpBs7B,QAASkW,2BAAgBjW,GAAiBsgD,EAAYrF,EAAUz3E,IAAM,CAAC,UACtE,KAAM,EAAG,CAAC,cACZu7B,yBAAc0U,yBAAautC,EAA4B,CACtDhmF,IAAK,EACLyJ,MAAO,CAAC,YAAY,QACpBs7B,QAASkW,2BAAgBjW,GAAiBsgD,EAAYrF,EAAUz3E,IAAM,CAAC,UACtE,KAAM,EAAG,CAAC,gBAElB,GAAIk9B,MACL,UAEL3B,yBAAcC,gCAAoB,MAAO,CACxChkC,IAAK,EACLqjC,MAAO6X,4BAAgB,CAAC,OAAQ,CAAE,OAAU/W,mBAAO91B,GAAqBrD,SAAS3C,EAAKG,OACtFu8B,QAAUC,GAAiBqgD,EAASh9E,EAAKG,IACzCk9C,WAAa1gB,GAAiB6gD,EAAUx9E,EAAKG,KAC5C,CACAm9E,EAAYjmF,QAAU2I,EAAKG,IACvBu7B,yBAAcC,gCAAoB,QAAS,CAC1ChkC,IAAK,EACLwI,GAAI,SAASH,EAAKG,GAClB9I,MAAO2I,EAAKpJ,MAAQklC,mBAAO4I,IAAiB1kC,EAAKlG,MACjDkhC,MAAO,QACPlhC,KAAM,OACN0jD,OAAQ7gB,GAAU4gD,EAAgB5gD,EAAQ38B,EAAKG,IAC/C09E,UAAWC,sBAAUnhD,GAAU4gD,EAAgB5gD,EAAQ38B,EAAKG,IAAK,CAAC,WACjE,KAAM,GAAIu9B,MACZhC,yBAAcC,gCAAoB,MAAOiC,GAAa5B,6BAAiBh8B,EAAKpJ,MAAQklC,mBAAO4I,IAAiB1kC,EAAKlG,OAAQ,IAC9HiiC,gCAAoB,MAAO8qB,GAAa,CACrC/qB,mBAAO31B,GAAqBxD,SAAS3C,EAAKG,KACtCu7B,yBAAc0U,yBAAastC,EAA6B,CACvD/lF,IAAK,EACLyJ,MAAO,CAAC,YAAY,QACpBs7B,QAASkW,2BAAgBjW,GAAiBsgD,EAAYj9E,EAAKG,IAAM,CAAC,UACjE,KAAM,EAAG,CAAC,cACZu7B,yBAAc0U,yBAAautC,EAA4B,CACtDhmF,IAAK,EACLyJ,MAAO,CAAC,YAAY,QACpBs7B,QAASkW,2BAAgBjW,GAAiBsgD,EAAYj9E,EAAKG,IAAM,CAAC,UACjE,KAAM,EAAG,CAAC,gBAElB,GAAIs9B,MACV,MACD,UAGRyB,EAAG,GACF,EAAG,CAAC,c,UC3QT,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMnE,GAAa,CAAEC,MAAO,iBACtBC,GAAa,CAAED,MAAO,kBACtBE,GAAa,CAAEF,MAAO,yBAmBAI,oCAAiB,CAC3CC,OAAQ,QACRC,MAAMC,GAER,MAAM/uB,EAAYzG,KACZ,gBAAEsB,EAAF,gBAAmBE,GAAoB+R,eAAY9M,GACnDuxE,EAAoB,IAAMvxE,EAAUlD,mBAAmB,IAEvD00E,EAAersD,iBAAI,IAKzB,OAHAssD,KACAC,KAEO,CAAC1iD,EAAUC,KACRC,yBAAcC,gCAAoBC,cAAW,KAAM,CACzDG,gCAAoB,MAAOhB,GAAY,CACrC8D,yBAAas/C,GAAc,CAAEnjD,MAAO,kBACpCe,gCAAoB,MAAOd,GAAY,CACrC4D,yBAAau/C,GAAY,CAAEpjD,MAAO,wBAClCe,gCAAoB,MAAOb,GAAY,CACrC2D,yBAAaw/C,GAAY,CAAErjD,MAAO,eAClC6D,yBAAay/C,GAAQ,CACnBtjD,MAAO,cACP55B,MAAOoxC,4BAAgB,CAAE1zC,OAAQ,eAAek/E,EAAa3mF,MAAQ,WACpE,KAAM,EAAG,CAAC,UACbwnC,yBAAa0/C,GAAQ,CACnBvjD,MAAO,gBACPl8B,OAAQk/E,EAAa3mF,MACrB,kBAAmBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkBqhD,EAAc3mF,MAAQslC,GACtFv7B,MAAOoxC,4BAAgB,CAAE1zC,OAAWk/E,EAAa3mF,MAAhB,QAChC,KAAM,EAAG,CAAC,SAAU,YAEzBwnC,yBAAa2/C,GAAS,CAAExjD,MAAO,6BAGlCc,mBAAOv0B,IACHm0B,yBAAc0U,yBAAaquC,GAAa,CAAE9mF,IAAK,KAChDq4C,gCAAoB,IAAI,GAC5BnR,yBAAa/C,mBAAO,SAAQ,CAC1BwD,UAAWxD,mBAAOz0B,GAClBsvD,OAAQ,KACRC,SAAU,GACVv3B,UAAU,EACVxgC,MAAO,IACPg4D,eAAgB,GAChB6nB,SAAUjjD,EAAO,KAAOA,EAAO,GAAMkB,GAAiBohD,MACrD,CACD3hD,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa8/C,MAEfz/C,EAAG,GACF,EAAG,CAAC,aACN,Q,UCvEL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCCA,QACb,MAAMz3B,EAAc3F,KACd,OAAE5B,EAAF,WAAU8B,EAAV,mBAAsBa,GAAuByW,eAAY7R,GAGzDm3E,EAAiBjtD,iBAAI,GAGrBktD,EAAcltD,kBAAI,GAGlBmtD,EAAuBntD,iBAAI3vB,EAAW3K,OAGtCk8E,EAAe,KAEnB,GAAIsL,EAAYxnF,MAAO,OAEvB,MAAM,WAAEgL,EAAF,SAAcW,GAAaH,EAAmBxL,MAAMunF,EAAevnF,OACzEunF,EAAevnF,OAAS,EAGxBwnF,EAAYxnF,OAAQ,EAEpB,IAAI0nF,EAAoB,EAGxB,IAAK,MAAMr8E,KAAaL,EAAY,CAClC,MAAMmxE,EAA4Bv0E,SAASwc,cAAc,mBAAmB/Y,EAAUE,+BACtF,IAAK4wE,EAAO,CACVuL,GAAqB,EACrB,SAGF,MAAMtL,EAAgB,GAAGjB,KAAyB9vE,EAAUmwE,SAG5DW,EAAMpyE,MAAMuyE,eAAe,sBAC3B,IAAK,MAAMqL,KAAaxL,EAAM7Q,WACuB,IAA/Cqc,EAAUlkF,QAAQ03E,KAAgCgB,EAAM7Q,UAAU39C,OAAOg6D,EAAcxM,GAAH,YAI1FgB,EAAMpyE,MAAMi+C,YAAY,qBAAyB38C,EAAU0lD,SAAb,MAC9CorB,EAAM7Q,UAAU52D,IAAI0nE,EAAkBjB,GAAH,YAGnC,MAAMkB,EAAqB,KACF,QAAnBhxE,EAAU5I,OACZ05E,EAAMpyE,MAAMuyE,eAAe,sBAC3BH,EAAM7Q,UAAU39C,OAAOyuD,EAAkBjB,GAAH,aAIxCuM,GAAqB,EACjBA,IAAsB18E,EAAWrN,SACnC6pF,EAAYxnF,OAAQ,EAChB2L,GAAUuwE,MAGlBC,EAAM39D,iBAAiB,eAAgB69D,EAAoB,CAAEE,MAAM,MAKjEqL,EAAkB,KACtBL,EAAevnF,OAAS,EACxB,MAAM,WAAEgL,GAAeQ,EAAmBxL,MAAMunF,EAAevnF,OAE/D,IAAK,MAAMqL,KAAaL,EAAY,CAClC,MAAMmxE,EAA4Bv0E,SAASwc,cAAc,mBAAmB/Y,EAAUE,+BACtF,GAAK4wE,EAAL,CAEAA,EAAMpyE,MAAMuyE,eAAe,sBAC3B,IAAK,MAAMqL,KAAaxL,EAAM7Q,WACuB,IAA/Cqc,EAAUlkF,QAAQ03E,KAAgCgB,EAAM7Q,UAAU39C,OAAOg6D,EAAcxM,GAAH,aAKxFnwE,EAAWud,MAAM5f,GAAsB,cAAdA,EAAKlG,OAAuBolF,KAIrDC,EAAgBxtD,iBAAI,GACpBytD,EAAgB,KAChBD,EAAc9nF,QAChBgoF,cAAcF,EAAc9nF,OAC5B8nF,EAAc9nF,MAAQ,IAG1BkwB,yBAAY63D,GAEZ,MAAME,EAAkBrmE,uBAAS,SAASzK,GACxC6P,GAAA,KAAQq2C,QAAQlmD,KACf,IAAM,CAAE2K,SAAS,EAAMJ,UAAU,IAM9BmmE,EAAW,KACXr8E,EAAmBxL,MAAMrC,QAAU4pF,EAAevnF,MAAQ,EAC5D4nF,IAEOj9E,EAAW3K,MAAQ,GAC1BoQ,EAAY3C,iBAAiB9C,EAAW3K,MAAQ,GAC5C2K,EAAW3K,MAAQynF,EAAqBznF,OAC1CunF,EAAevnF,MAAQ,EACvBynF,EAAqBznF,MAAQ2K,EAAW3K,OAErCunF,EAAevnF,MAAQwL,EAAmBxL,MAAMrC,QAGrDsqF,EAAgB,WAElBT,EAAYxnF,OAAQ,GAEhBkoF,EAAW,KACX18E,EAAmBxL,MAAMrC,QAAU4pF,EAAevnF,MAAQwL,EAAmBxL,MAAMrC,OACrFu+E,IAEOvxE,EAAW3K,MAAQ6I,EAAO7I,MAAMrC,OAAS,GAChDyS,EAAY3C,iBAAiB9C,EAAW3K,MAAQ,GAChDunF,EAAevnF,MAAQ,EACvBwnF,EAAYxnF,OAAQ,IAGpBioF,EAAgB,YAChBF,IACAP,EAAYxnF,OAAQ,IAKlBmoF,EAAW,KACfJ,IACA/gE,GAAA,KAAQq2C,QAAQ,UAChByqB,EAAc9nF,MAAQooF,YAAYF,EAAU,OAIxCG,EAAqBzmE,uBAAS,SAASrJ,GACvCA,EAAEmmD,OAAS,EAAGmpB,IACTtvE,EAAEmmD,OAAS,GAAGwpB,MACtB,IAAK,CAAEpmE,SAAS,EAAMJ,UAAU,IAG7B4mE,EAAYhuD,iBAAsC,MAElDiuD,EAAsBhwE,IAC1B+vE,EAAUtoF,MAAQ,CAChBq3B,EAAG9e,EAAE62B,eAAe,GAAGpF,MACvB1S,EAAG/e,EAAE62B,eAAe,GAAGlF,QAGrBs+C,EAAoBjwE,IACxB,IAAK+vE,EAAUtoF,MAAO,OAEtB,MAAM4a,EAAUtN,KAAK69B,IAAIm9C,EAAUtoF,MAAMq3B,EAAI9e,EAAE62B,eAAe,GAAGpF,OAC3DnvB,EAAUtC,EAAE62B,eAAe,GAAGlF,MAAQo+C,EAAUtoF,MAAMs3B,EAEvDhqB,KAAK69B,IAAItwB,GAAWD,GAAWtN,KAAK69B,IAAItwB,GAAW,KACtDytE,EAAUtoF,MAAQ,KAEd6a,EAAU,EAAGgtE,IACZK,MAKH75D,EAAmB9V,IACvB,MAAMjY,EAAMiY,EAAEjY,IAAIquB,cAEdruB,IAAQwW,GAAK4P,IAAMpmB,IAAQwW,GAAK+S,MAAQvpB,IAAQwW,GAAK+W,OAAQg6D,IAE/DvnF,IAAQwW,GAAK6P,MACbrmB,IAAQwW,GAAKgT,OACbxpB,IAAQwW,GAAK8X,OACbtuB,IAAQwW,GAAK6Y,OACbrvB,IAAQwW,GAAKgX,UACbo6D,KAGJj4D,uBAAU,IAAMroB,SAAS4W,iBAAiB,UAAW6P,IACrD6B,yBAAY,IAAMtoB,SAASuoB,oBAAoB,UAAW9B,IAG1D,MAAMo6D,EAAgB,KACpBr4E,EAAY3C,iBAAiB9C,EAAW3K,MAAQ,GAChDunF,EAAevnF,MAAQ,GAEnB0oF,EAAgB,KACpBt4E,EAAY3C,iBAAiB9C,EAAW3K,MAAQ,GAChDunF,EAAevnF,MAAQ,GAInB2oF,EAAoBx7E,IACxBiD,EAAY3C,iBAAiBN,GAC7Bo6E,EAAevnF,MAAQ,GAEnB4oF,EAAiB9/E,IACrB,MAAMqE,EAAQtE,EAAO7I,MAAMoN,UAAUT,GAASA,EAAM7D,KAAOA,IAC5C,IAAXqE,IACFiD,EAAY3C,iBAAiBN,GAC7Bo6E,EAAevnF,MAAQ,IAI3B,MAAO,CACL8nF,gBACAK,WACAJ,gBACAM,qBACAE,qBACAC,mBACAC,gBACAC,gBACAC,mBACAC,gBACAf,WACAK,WACAX,mBCpOYsB,OACd,MAAMz4E,EAAc3F,KACd,cAAEG,GAAkBqX,eAAY7R,GAEhC04E,EAAaxuD,iBAAI,GACjByuD,EAAczuD,iBAAI,GAGlB0uD,EAAsB,KAC1B,MAAMC,GAAsB,OAAPJ,QAAO,IAAPA,OAAA,EAAAA,EAAS7oF,QAAS4H,SAASyQ,KAC1C6wE,EAAWD,EAAajrE,YACxBmrE,EAAYF,EAAa/qE,aAC/B,IAAI1W,EAAOC,EAEP0hF,EAAYD,IAAat+E,EAAc5K,OACzCwH,EAAQ0hF,EACRzhF,EAAS0hF,GAEFA,EAAYD,EAAWt+E,EAAc5K,OAC5CwH,EAAQ0hF,EACRzhF,EAASyhF,EAAWt+E,EAAc5K,QAGlCwH,EAAQ2hF,EAAYv+E,EAAc5K,MAClCyH,EAAS0hF,GAEXL,EAAW9oF,MAAQwH,EACnBuhF,EAAY/oF,MAAQyH,GAWtB,OARAwoB,uBAAU,KACR+4D,IACAnoF,OAAO2d,iBAAiB,SAAUwqE,KAEpC94D,yBAAY,KACVrvB,OAAOsvB,oBAAoB,SAAU64D,KAGhC,CACLF,aACAC,gBCxCW,QACb,MAAMK,EAAkB9uD,kBAAI,GACtB+uD,EAAU/uD,kBAAI,IAEd,cAAEhO,GAAkBc,KAEpBk8D,EAAyB,KAC7BF,EAAgBppF,MAAQ6rB,MACnBu9D,EAAgBppF,OAASqpF,EAAQrpF,OAAOssB,IAE7C+8D,EAAQrpF,OAAQ,GAGlBiwB,uBAAU,KACRm5D,EAAgBppF,MAAQ6rB,KACxBjkB,SAAS4W,iBAAiB,mBAAoB8qE,GAC9C1hF,SAAS4W,iBAAiB,yBAA0B8qE,KAEtDp5D,yBAAY,KACVtoB,SAASuoB,oBAAoB,mBAAoBm5D,GACjD1hF,SAASuoB,oBAAoB,yBAA0Bm5D,KAGzD,MAAMC,EAAuB,KACtBH,EAAgBppF,QACrBqpF,EAAQrpF,OAAQ,EAChByrB,OAGF,MAAO,CACL29D,kBACAG,yBC1BwBxlD,gCAAiB,CAC3CC,OAAQ,qBACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,IAGZrU,MAAMC,GAIR,MAAO,CAACC,EAAUC,KACRC,yBAAc0U,yBAAayjB,GAAkB,CACnD74B,MAAO,uBACPkV,YAAa3U,EAAQ2U,aACpB,KAAM,EAAG,CAAC,oBCtBf,MAAM,GAAc,GAEL,UCFf,MACMnV,GAAa,CAAEC,MAAO,mBAWAI,oCAAiB,CAC3CC,OAAQ,qBACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,IAGZrU,MAAMC,GAER,MAIM,aAAEp5B,GAAiBmX,eAAYxX,KAE/BoG,EAAQs2C,oBAAO/e,KAAwB9N,iBAAI,GAC3CttB,EAAUm6C,oBAAO9e,KAAqB/N,iBAAI,IAE1C/U,EAAiBY,sBAAS,IAAMrb,EAAa9K,MAAM8I,KAAOkE,EAAQhN,OAExE,MAAO,CAACmkC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,uBACP55B,MAAOoxC,4BAAgB,CACrBlyC,IAAKi7B,EAAQ2U,YAAY5vC,IAAM,KAC/BD,KAAMk7B,EAAQ2U,YAAY7vC,KAAO,KACjCxB,MAAO08B,EAAQ2U,YAAYrxC,MAAQ,KACnCC,OAAQy8B,EAAQ2U,YAAYpxC,OAAS,QAEtC,CACDi9B,gCAAoB,MAAO,CACzBf,MAAO,iBACP55B,MAAOoxC,4BAAgB,CAAEoB,UAAW,UAAUrY,EAAQ2U,YAAYtvC,gBACjE,CACDm7B,gCAAoB,MAAOhB,GAAY,CACpCe,mBAAOlf,IACH8e,yBAAc0U,yBAAa+b,GAAa,CACvCx0D,IAAK,EACLkH,MAAO08B,EAAQ2U,YAAYrxC,MAC3BC,OAAQy8B,EAAQ2U,YAAYpxC,OAC5BmW,IAAKsmB,EAAQ2U,YAAYj7B,IACzBqyC,OAAQ/rB,EAAQ2U,YAAYoX,OAC5Bp/C,MAAO4zB,mBAAO5zB,IACb,KAAM,EAAG,CAAC,QAAS,SAAU,MAAO,SAAU,WACjD8nC,gCAAoB,IAAI,MAE7B,IACF,O,UCzDL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMjV,GAAa,CAAEC,MAAO,mBAYAI,oCAAiB,CAC3CC,OAAQ,qBACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,GAIR,cAAEt5B,EAAF,aAAiBE,GAAiBmX,eAAYxX,KAE9CoG,EAAQs2C,oBAAO/e,KAAwB9N,iBAAI,GAC3CttB,EAAUm6C,oBAAO9e,KAAqB/N,iBAAI,IAE1C/U,EAAiBY,sBAAS,IAAMrb,EAAa9K,MAAM8I,KAAOkE,EAAQhN,OAElEi1D,EAAgB9uC,sBAAS,IACtB7Y,KAAKC,IAAIT,EAAM+rC,YAAYrxC,MAAOsF,EAAM+rC,YAAYpxC,QAAU,MAEjEytD,EAAsB/uC,sBAAS,KACnC,MAAMyiB,EAAclqB,GACdmqB,EAAenqB,GAAgB9T,EAAc5K,MAE7Cm1D,EAAa,IAAMtkD,EAAM7Q,MACzBo1D,EAAc,GAAKvkD,EAAM7Q,MAEzB8sC,EAAUhgC,EAAM+rC,YAAYrxC,MAC5BulC,EAAWjgC,EAAM+rC,YAAYpxC,OAC7BmlC,EAAS9/B,EAAM+rC,YAAY7vC,KAC3B6jC,EAAQ//B,EAAM+rC,YAAY5vC,IAEhC,IAAID,EAAO,EACPC,EAAM8jC,EAKV,OAHIH,EAASuoB,GAAcvsB,IAAa5/B,EAAO8jC,EAAUqoB,GACrDtoB,EAAQE,EAAWqoB,GAAevsB,IAAc5/B,GAAOmsD,GAEpD,CACLpsD,KAAMA,EAAO,KACbC,IAAKA,EAAM,QAITugF,EAAiBlvD,mBACjB03B,EAAS,KACRw3B,EAAexpF,OACpBwpF,EAAexpF,MAAMgyD,UAGvB,MAAO,CAAC7tB,EAAUC,KAChB,MAAM6vB,EAA8B/sB,8BAAkB,oBAEtD,OAAQ7C,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,uBACP55B,MAAOoxC,4BAAgB,CACrBlyC,IAAKi7B,EAAQ2U,YAAY5vC,IAAM,KAC/BD,KAAMk7B,EAAQ2U,YAAY7vC,KAAO,KACjCxB,MAAO08B,EAAQ2U,YAAYrxC,MAAQ,KACnCC,OAAQy8B,EAAQ2U,YAAYpxC,OAAS,QAEtC,CACDi9B,gCAAoB,MAAO,CACzBf,MAAO,iBACP55B,MAAOoxC,4BAAgB,CAAEoB,UAAW,UAAUrY,EAAQ2U,YAAYtvC,gBACjE,CACDm7B,gCAAoB,MAAOhB,GAAY,CACrC8D,yBAAaysB,EAA6B,CACxCtwB,MAAO,aACP55B,MAAOoxC,4BAAgB,CACrB7d,SAAUmH,mBAAOwwB,GACjB7vD,MAAO8+B,EAAQ2U,YAAYzzC,QAE7BigC,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiB0sB,MACpD,KAAM,EAAG,CAAC,UACZvtB,mBAAOlf,IACH8e,yBAAc0U,yBAAasc,GAAa,CACvC/0D,IAAK,EACLqjC,MAAO,eACP8B,QAAS,iBACTnL,IAAKkvD,EACLz/E,MAAOoxC,4BAAgB,IAAK1W,mBAAOywB,KACnCt3C,IAAKsmB,EAAQ2U,YAAYj7B,IACzBuH,KAAM+e,EAAQ2U,YAAY1zB,KAC1BC,SAAU8e,EAAQ2U,YAAYzzB,SAC9BvU,MAAO4zB,mBAAO5zB,IACb,KAAM,EAAG,CAAC,QAAS,MAAO,OAAQ,WAAY,WACjD8nC,gCAAoB,IAAI,MAE7B,IACF,O,UCxGL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMjV,GAAa,CAAC,KAAM,SAkBEK,oCAAiB,CAC3CC,OAAQ,gBACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,GAEZgd,aAAc,CACZ7yD,KAAM41C,OACNC,UAAU,GAEZivC,eAAgB,CACd9kF,KAAM41C,OACNC,UAAU,GAEZswC,cAAe,CACbnmF,KAAMm2C,SACNN,UAAU,GAEZixC,qBAAsB,CACpB9mF,KAAMm2C,SACNN,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIRuxB,EAA0BtvC,sBAAS,KACvC,MAAMuvC,EAAiB,CACrB,CAAC92C,GAAa+2C,OAAQyG,GACtB,CAACx9C,GAAai3C,MAAOwG,GACrB,CAACz9C,GAAam3C,OAAQuG,GACtB,CAAC19C,GAAaq3C,MAAOsG,GACrB,CAAC39C,GAAau3C,OAAQszB,GACtB,CAAC7qE,GAAay3C,OAAQoG,GACtB,CAAC79C,GAAa23C,OAAQmG,GACtB,CAAC99C,GAAa63C,OAAQizB,GACtB,CAAC9qE,GAAa+3C,OAAQgzB,IAExB,OAAOj0B,EAAe5oD,EAAM+rC,YAAYp2C,OAAS,QAG7C,mBAAE+I,EAAF,MAAsBtB,GAAU+X,eAAYxX,KAG5Cm/E,EAAoBzjE,sBAAS,KAEjC,MAAM0jE,EAA0Br+E,EAAmBxL,MAAMoN,UAAUzE,IACjE,MAAMuC,EAAQvC,EAAKqC,WAAWG,IAAIxC,GAAQA,EAAK4C,MAC/C,OAAOL,EAAMI,SAASwB,EAAM+rC,YAAY/vC,MAI1C,IAAiC,IAA7B+gF,EAAgC,OAAO,EAI3C,GAAIA,EAA0B/8E,EAAMy6E,eAAgB,OAAO,EAI3D,MAAMuC,EAAiBt+E,EAAmBxL,MAAM6pF,GAAyB7+E,WAAWhI,KAAK2F,GAAQA,EAAK4C,OAASuB,EAAM+rC,YAAY/vC,IACjI,MAA6B,QAAX,OAAdghF,QAAc,IAAdA,OAAA,EAAAA,EAAgBrnF,QAKhBsnF,EAAW,KACf,MAAM7jF,EAAO4G,EAAM+rC,YAAY3yC,KAC1BA,IAEa,QAAdA,EAAKzD,MACPqK,EAAMy8E,uBACN1oF,OAAOmmC,KAAK9gC,EAAKyf,SAEI,UAAdzf,EAAKzD,MACZqK,EAAM87E,cAAc1iF,EAAKyf,UAI7B,MAAO,CAACwe,EAAUC,KAAe,MAC/B,OAAQC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,iBAAkB,CAAE,KAAQtX,EAAQ2U,YAAY3yC,QACxE4C,GAAI,kBAAkBo7B,EAAQ2U,YAAY/vC,GAC1CiB,MAAOoxC,4BAAgB,CACrB6b,OAAQ9yB,EAAQoxB,aAChBlwD,MAAOq/B,mBAAOv6B,GAAOE,UACrB+6C,WAAY1gB,mBAAOv6B,GAAO9C,SAC1B4iF,WAAYvlD,mBAAOmlD,GAAqB,SAAW,YAErDtqD,OAAO,UAAA4E,EAAQ2U,YAAY3yC,YAApB,eAA0Byf,SAAU,GAC3C0f,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBykD,MACpD,EACA1lD,yBAAc0U,yBAAake,qCAAyBxyB,mBAAOgxB,IAA2B,CAAE5c,YAAa3U,EAAQ2U,aAAe,KAAM,EAAG,CAAC,kBACtI,GAAInV,Q,UCjHT,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCMaK,gCAAiB,CAC3CC,OAAQ,cACRl3B,MAAO,CACPH,MAAO,CACLlK,KAAM7E,OACN06C,UAAU,GAEZznC,MAAO,CACLpO,KAAM41C,OACNC,UAAU,GAEZivC,eAAgB,CACd9kF,KAAM41C,OACNC,UAAU,GAEZswC,cAAe,CACbnmF,KAAMm2C,SACNN,UAAU,GAEZixC,qBAAsB,CACpB9mF,KAAMm2C,SACNN,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,GAIR,cAAEt5B,GAAkBqX,eAAYxX,KAEhCT,EAAamc,sBAAS,IAAMrZ,EAAMH,MAAM3C,aACxC,gBAAEstD,GAAoBO,GAAwB7tD,GAE9CgD,EAAUmZ,sBAAS,IAAMrZ,EAAMH,MAAM7D,IAG3C,OAFA+zD,qBAAQx0B,GAAkBr7B,GAEnB,CAACm3B,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,eACP55B,MAAOoxC,4BAAgB,CACrB3zC,MAAOi9B,mBAAO/lB,IAAiB,KAC/BjX,OAAQg9B,mBAAO/lB,IAAiB+lB,mBAAO75B,GAAiB,KACxD2xC,UAAW,SAASrY,EAAQrzB,YAE7B,CACD6zB,gCAAoB,MAAO,CACzBf,MAAO,aACP55B,MAAOoxC,4BAAgB,IAAK1W,mBAAO6yB,MAClC,KAAM,IACRjzB,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYN,EAAQv3B,MAAM5D,SAAU,CAAC4E,EAASR,KAC5Fk3B,yBAAc0U,yBAAakxC,GAAe,CAChD3pF,IAAKqN,EAAQ7E,GACb+vC,YAAalrC,EACb2nD,aAAcnoD,EAAQ,EACtBo6E,eAAgBrjD,EAAQqjD,eACxBqB,cAAe1kD,EAAQ0kD,cACvBW,qBAAsBrlD,EAAQqlD,sBAC7B,KAAM,EAAG,CAAC,cAAe,eAAgB,iBAAkB,gBAAiB,2BAC7E,OACH,O,UCrEL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACM7lD,GAAa,CAAEC,MAAO,qBAWAI,oCAAiB,CAC3CC,OAAQ,kBACRl3B,MAAO,CACPg8E,WAAY,CACVrmF,KAAM41C,OACNC,UAAU,GAEZywC,YAAa,CACXtmF,KAAM41C,OACNC,UAAU,GAEZivC,eAAgB,CACd9kF,KAAM41C,OACNC,UAAU,GAEZswC,cAAe,CACbnmF,KAAMm2C,SACNN,UAAU,GAEZixC,qBAAsB,CACpB9mF,KAAMm2C,SACNN,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,GAIR,OAAEr7B,EAAF,WAAU8B,EAAV,aAAsBG,GAAiBmX,eAAYxX,KAEnDoG,EAAQsV,sBAAS,IAAMrZ,EAAMg8E,WAAapqE,IAGhD,OAFAm+C,qBAAQz0B,GAAqBv3B,GAEtB,CAACszB,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,EAC1DW,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAO57B,GAAS,CAAC8D,EAAOQ,KAAS,MACnG,OAAQk3B,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CACvB,aACA,iBAAgB7uC,EAAMyyE,aAAe,UACrC,CACE,QAAWjyE,IAAUs3B,mBAAO95B,GAC5B,OAAUwC,EAAQs3B,mBAAO95B,GACzB,MAASwC,EAAQs3B,mBAAO95B,GACxB,MAASwC,IAAUs3B,mBAAO95B,GAAc,GAAKwC,IAAUs3B,mBAAO95B,GAAc,IAAMgC,EAAMyyE,cAAgB36C,mBAAO35B,GAAcs0E,eAG/H9+E,IAAKqM,EAAM7D,IACV,CACAwE,KAAK69B,IAAI1G,mBAAO95B,GAAcwC,GAAS,GAAvC,UAA4CR,EAAM3B,kBAAlD,OAA4C,EAAkBrN,QAC1D0mC,yBAAcC,gCAAoB,MAAO,CACxChkC,IAAK,EACLqjC,MAAO,gBACP55B,MAAOoxC,4BAAgB,CAC3B3zC,MAAO08B,EAAQ4kD,WAAa,KAC5BrhF,OAAQy8B,EAAQ6kD,YAAc,QAEzB,CACDvhD,yBAAa0iD,GAAa,CACxBv9E,MAAOA,EACPkE,MAAO4zB,mBAAO5zB,GACd02E,eAAgBrjD,EAAQqjD,eACxBqB,cAAe1kD,EAAQ0kD,cACvBW,qBAAsBrlD,EAAQqlD,sBAC7B,KAAM,EAAG,CAAC,QAAS,QAAS,iBAAkB,gBAAiB,0BACjE,IACH5wC,gCAAoB,IAAI,IAC3B,KACD,Y,UC/ER,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMjV,GAAa,CAAEC,MAAO,oBACtBC,GAAa,CAAED,MAAO,iBACtBE,GAAa,CAAEF,MAAO,4BACtBG,GAAa,CAAC,WAUQC,oCAAiB,CAC3CC,OAAQ,kBACRl3B,MAAO,CACP67E,iBAAkB,CAChBlmF,KAAMm2C,SACNN,UAAU,IAGZtT,MAAO,CAAC,SACRf,MAAMC,GAAS,KAAEe,IAInB,MAAMn4B,EAAQo3B,GAMR,OAAEr7B,EAAF,WAAU8B,GAAesX,eAAYxX,MAErC,gBAAEu6D,GAAoBG,KAEtBglB,EAAah9E,IACjBL,EAAM67E,iBAAiBx7E,GACvB83B,EAAK,UAGP,MAAO,CAACd,EAAUC,KAChB,MAAMgmD,EAAiCljD,8BAAkB,uBAEzD,OAAQ7C,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrC4D,yBAAa4iD,EAAgC,CAC3CzmD,MAAO,OACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBL,EAAK,cAG9DP,gCAAoB,MAAOb,GAAY,EACpCQ,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAO57B,GAAS,CAAC8D,EAAOQ,KAClFk3B,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,YAAa,CAAE,OAAUruC,IAAUs3B,mBAAO95B,MAClErK,IAAKqM,EAAM7D,GACXu8B,QAAUC,GAAiB6kD,EAAUh9E,IACpC,CACDq6B,yBAAai2B,GAAgB,CAC3B9wD,MAAOA,EACPpF,KAAM,IACN0gC,QAAS96B,EAAQs3B,mBAAOugC,IACvB,KAAM,EAAG,CAAC,QAAS,aACrB,GAAIlhC,MACL,c,UC9DV,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMJ,GAAa,CACjBpjC,IAAK,EACLqjC,MAAO,cAMmBI,oCAAiB,CAC3CC,OAAQ,eACRl3B,MAAO,CACP1H,MAAO,CACL3C,KAAMw2B,OACN8L,QAAS,WAEXslD,MAAO,CACL5nF,KAAMw2B,OACN8L,QAAS,OAEXulD,WAAY,CACV7nF,KAAMsgD,QACNhe,SAAS,GAEXwlD,QAAS,CACP9nF,KAAM41C,OACNtT,QAAS,GAEXylD,SAAU,CACR/nF,KAAM41C,OACNtT,QAAS,IAEX0lD,WAAY,CACVhoF,KAAM41C,OACNtT,QAAS,KAGXC,MAAO,CAAC,OACRf,MAAMC,GAAS,OAAE+e,EAAF,KAAUhe,IAI3B,MAAMn4B,EAAQo3B,EAMd,IAAIp8B,EAAuC,KAC3C,MAAM4iF,EAAkBpwD,mBAClBkO,EAAYlO,mBAElB,IAAIwmD,EAAU,CACZzpD,EAAG,EACHC,EAAG,GAEDwS,GAAc,EACd6gD,EAAW,EACXC,GAAiB,EAGrB,MAAMC,EAAQvwD,iBAAI,CAChBjD,EAAG,EACHC,EAAG,IAICwzD,EAAgBxwD,kBAAI,GAGpBsO,EAActO,iBAAI,GAClBuO,EAAevO,iBAAI,GAEnB2Y,EAAa9sB,sBAAS,IAAMqiB,EAAUxoC,MAAQ4oC,EAAY5oC,MAAQwoC,EAAUxoC,MAAMwH,MAAQ,GAC1F0rC,EAAc/sB,sBAAS,IAAMqiB,EAAUxoC,MAAQ6oC,EAAa7oC,MAAQwoC,EAAUxoC,MAAMyH,OAAS,GAE7FsjF,EAAmB,KAClBL,EAAgB1qF,QACrB4oC,EAAY5oC,MAAQ0qF,EAAgB1qF,MAAMge,YAC1C6qB,EAAa7oC,MAAQ0qF,EAAgB1qF,MAAMke,eAEvCurB,EAAiB,IAAIC,eAAeqhD,GAC1C96D,uBAAU,KACJy6D,EAAgB1qF,OAAOypC,EAAeE,QAAQ+gD,EAAgB1qF,SAEpEkwB,yBAAY,KACNw6D,EAAgB1qF,OAAOypC,EAAeG,UAAU8gD,EAAgB1qF,SAItE,MAAMgrF,EAAa,KACZxiD,EAAUxoC,OAAU0qF,EAAgB1qF,QAEzC8H,EAAM0gC,EAAUxoC,MAAM+H,WAAW,MAC5BD,IAEL0gC,EAAUxoC,MAAMwH,MAAQkjF,EAAgB1qF,MAAMge,YAC9CwqB,EAAUxoC,MAAMyH,OAASijF,EAAgB1qF,MAAMke,aAE/CpW,EAAImjF,QAAU,QACdnjF,EAAIojF,SAAW,WAEjBj7D,uBAAU+6D,GAGV,MAAMG,EAAY,KACXrjF,IACe,SAAhBgF,EAAMu9E,OACRviF,EAAIsjF,yBAA2B,MAC/BtjF,EAAIujF,YAAc,IAEK,QAAhBv+E,EAAMu9E,QACbviF,EAAIsjF,yBAA2B,cAC/BtjF,EAAIujF,YAAc,KAGtB9hD,mBAAM,IAAMz8B,EAAMu9E,MAAOc,GAGzB,MAAMG,EAAO,CAACC,EAAcC,EAAcxrE,KACxC,IAAKlY,EAAK,OAEV,MAAM2jF,EAAW3K,EAAQzpD,EACnBq0D,EAAW5K,EAAQxpD,EAEzBxvB,EAAIkY,UAAYA,EAChBlY,EAAI6jF,YAAc7+E,EAAM1H,MACxB0C,EAAI8jF,YACJ9jF,EAAIo2B,OAAOutD,EAAUC,GACrB5jF,EAAI+jF,OAAON,EAAMC,GACjB1jF,EAAI4wC,SACJ5wC,EAAIgkF,aAIAC,EAAQ,CAACR,EAAcC,KAC3B,IAAK1jF,IAAQ0gC,EAAUxoC,MAAO,OAC9B,MAAMyrF,EAAW3K,EAAQzpD,EACnBq0D,EAAW5K,EAAQxpD,EAEnBhe,EAASxM,EAAM29E,WAAa,EAE5BuB,EAAY1yE,EAAShM,KAAK6M,IAAI7M,KAAKoM,MAAM8xE,EAAOE,IAAaH,EAAOE,KACpEQ,EAAY3yE,EAAShM,KAAK2M,IAAI3M,KAAKoM,MAAM8xE,EAAOE,IAAaH,EAAOE,KACpES,EAA+B,CAACT,EAAWO,EAAWN,EAAWO,GACjEE,EAA+B,CAACV,EAAWO,EAAWN,EAAWO,GACjEG,EAA+B,CAACb,EAAOS,EAAWR,EAAOS,GACzDI,EAA+B,CAACd,EAAOS,EAAWR,EAAOS,GAE/DnkF,EAAIs1D,OACJt1D,EAAI8jF,YACJ9jF,EAAIwkF,IAAIf,EAAMC,EAAMlyE,EAAQ,EAAa,EAAVhM,KAAKqM,IACpC7R,EAAI64B,OACJ74B,EAAIO,UAAU,EAAG,EAAGmgC,EAAUxoC,MAAMwH,MAAOghC,EAAUxoC,MAAMyH,QAC3DK,EAAIykF,UAEJzkF,EAAIs1D,OACJt1D,EAAI8jF,YACJ9jF,EAAIo2B,UAAUguD,GACdpkF,EAAI+jF,UAAUO,GACdtkF,EAAI+jF,UAAUQ,GACdvkF,EAAI+jF,UAAUM,GACdrkF,EAAIgkF,YACJhkF,EAAI64B,OACJ74B,EAAIO,UAAU,EAAG,EAAGmgC,EAAUxoC,MAAMwH,MAAOghC,EAAUxoC,MAAMyH,QAC3DK,EAAIykF,WAIAC,EAAc,CAACjB,EAAcC,KACjC,MAAMC,EAAW3K,EAAQzpD,EACnBq0D,EAAW5K,EAAQxpD,EACzB,OAAOhqB,KAAKiM,MAAMgyE,EAAOE,IAAaF,EAAOE,IAAaD,EAAOE,IAAaF,EAAOE,KAIjFe,EAAe,CAAC1tF,EAAWkB,KAC/B,MAAMysF,EAAO,GACPC,EAAO,GACPC,EAAW9/E,EAAMy9E,QACjB9vC,EAAW,EACXpc,EAAIt/B,EAAIkB,EACd,IAAI+f,EAMJ,OAJeA,EAAXqe,GAAKsuD,EAAkBC,EAClBvuD,GAAKquD,EAAkBjyC,EACfmyC,EAAWvuD,EAAIquD,EAAOE,GAEhB,IAAnBhC,EAA6B5qE,EACd,EAAZA,EAAgB,EAAoB,EAAhB4qE,EAAoB,GAI3CiC,EAAa,CAACx1D,EAAWC,KAC7B,MAAMlkB,GAAO,IAAIX,MAAOC,UAExB,GAAoB,QAAhB5F,EAAMu9E,MAAiB,CACzB,MAAMtrF,EAAIytF,EAAYn1D,EAAGC,GACnBr3B,EAAImT,EAAOu3E,EACX3qE,EAAYysE,EAAa1tF,EAAGkB,GAElCqrF,EAAKj0D,EAAGC,EAAGtX,GACX4qE,EAAgB5qE,MAEO,SAAhBlT,EAAMu9E,MAAkBiB,EAAKj0D,EAAGC,EAAGxqB,EAAM09E,UAC7CuB,EAAM10D,EAAGC,GAEdwpD,EAAU,CAAEzpD,IAAGC,KACfqzD,GAAW,IAAIl4E,MAAOC,WAIlBo6E,EAA0Bv0E,IAC9B,IAAKiwB,EAAUxoC,MAAO,MAAO,CAAC,EAAG,GACjC,MAAM+sF,EAAQx0E,aAAa42B,WAAa52B,EAAIA,EAAE62B,eAAe,GACvD49C,EAAaxkD,EAAUxoC,MAAM+qC,wBAC7B1T,EAAI01D,EAAM/iD,MAAQgjD,EAAW31D,EAC7BC,EAAIy1D,EAAM7iD,MAAQ8iD,EAAW11D,EACnC,MAAO,CAACD,EAAGC,IAKPs0C,EAAmBrzD,IACvB,MAAO20B,EAAQC,GAAU2/C,EAAuBv0E,GAC1C8e,EAAI6V,EAAS+F,EAAWjzC,MACxBs3B,EAAI6V,EAAS+F,EAAYlzC,MAE/B8pC,GAAc,EACdg3C,EAAU,CAAEzpD,IAAGC,KACfqzD,GAAW,IAAIl4E,MAAOC,UAEhB6F,aAAa42B,aACjB07C,EAAM7qF,MAAQ,CAAEq3B,EAAG6V,EAAQ5V,EAAG6V,GAC9B29C,EAAc9qF,OAAQ,IAKpB2xC,EAAmBp5B,IACvB,MAAO20B,EAAQC,GAAU2/C,EAAuBv0E,GAC1C8e,EAAI6V,EAAS+F,EAAWjzC,MACxBs3B,EAAI6V,EAAS+F,EAAYlzC,MAE/B6qF,EAAM7qF,MAAQ,CAAEq3B,EAAG6V,EAAQ5V,EAAG6V,GAE1BrD,GAAa+iD,EAAWx1D,EAAGC,IAI3B8a,EAAgB,KACftI,IACLA,GAAc,EACd7E,EAAK,SAIDgoD,EAAc,KACbnlF,GAAQ0gC,EAAUxoC,QACvB8H,EAAIO,UAAU,EAAG,EAAGmgC,EAAUxoC,MAAMwH,MAAOghC,EAAUxoC,MAAMyH,QAC3Dw9B,EAAK,SAID7mB,EAAkB,KAAK,MAC3B,iBAAOoqB,EAAUxoC,aAAjB,aAAO,EAAiB8mE,aAIpBomB,EAAmBC,IACvB,GAAKrlF,GAAQ0gC,EAAUxoC,QAEvB8H,EAAIO,UAAU,EAAG,EAAGmgC,EAAUxoC,MAAMwH,MAAOghC,EAAUxoC,MAAMyH,QAEvD0lF,GAAc,CAChBrlF,EAAIsjF,yBAA2B,cAC/BtjF,EAAIujF,YAAc,EAElB,MAAMxtE,EAAM,IAAIuvE,MAChBvvE,EAAID,IAAMuvE,EACVtvE,EAAIC,OAAS,KACXhW,EAAKulF,UAAUxvE,EAAK,EAAG,GACvBstE,OAWN,OANAloC,EAAO,CACLgqC,cACA7uE,kBACA8uE,oBAGK,CAAC/oD,EAAUC,KAChB,MAAMkpD,EAAuBpmD,8BAAkB,aACzCioC,EAA2BjoC,8BAAkB,iBAEnD,OAAQ7C,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,gBACP8B,QAAS,kBACTnL,IAAKowD,GACJ,CACAxmD,EAAQomD,YACJjmD,yBAAcC,gCAAoB,MAAOZ,KAC1CiV,gCAAoB,IAAI,GAC5BjU,gCAAoB,SAAU,CAC5Bf,MAAO,SACP8B,QAAS,YACTnL,IAAKkO,EACLz+B,MAAOoxC,4BAAgB,CACrB3zC,MAAOohC,EAAY5oC,MAAQ,KAC3ByH,OAAQohC,EAAa7oC,MAAQ,OAE/Bs7C,YAAalX,EAAO,KAAOA,EAAO,GAAKkB,GAAUsmC,EAAgBtmC,IACjE6uB,YAAa/vB,EAAO,KAAOA,EAAO,GAAKkB,GAAUqM,EAAgBrM,IACjEioD,UAAWnpD,EAAO,KAAOA,EAAO,GAAMkB,GAAiB8M,KACvDsK,aAActY,EAAO,KAAOA,EAAO,GAAKkB,GAAUsmC,EAAgBtmC,IAClEkoD,YAAappD,EAAO,KAAOA,EAAO,GAAKkB,GAAUqM,EAAgBrM,IACjEmoD,WAAYrpD,EAAO,KAAOA,EAAO,GAAMkB,IAAiB8M,IAAiB04C,EAAc9qF,OAAQ,IAC/F60D,aAAczwB,EAAO,KAAOA,EAAO,GAAMkB,IAAiB8M,IAAiB04C,EAAc9qF,OAAQ,IACjG4tD,aAAcxpB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBwlD,EAAc9qF,OAAQ,IAC/E,KAAM,IACR8qF,EAAc9qF,OACVqkC,yBAAcC,gCAAoBC,cAAW,CAAEjkC,IAAK,GAAK,CACrC,WAAlB4jC,EAAQmmD,OACJhmD,yBAAcC,gCAAoB,MAAO,CACxChkC,IAAK,EACLqjC,MAAO,SACP55B,MAAOoxC,4BAAgB,CAC7BnyC,KAAM6hF,EAAM7qF,MAAMq3B,EAAI6M,EAAQumD,WAAa,EAAI,KAC/CxhF,IAAK4hF,EAAM7qF,MAAMs3B,EAAI4M,EAAQumD,WAAa,EAAI,KAC9CjjF,MAAO08B,EAAQumD,WAAa,KAC5BhjF,OAAQy8B,EAAQumD,WAAa,QAEtB,KAAM,IACT9xC,gCAAoB,IAAI,GACT,QAAlBzU,EAAQmmD,OACJhmD,yBAAcC,gCAAoB,MAAO,CACxChkC,IAAK,EACLqjC,MAAO,MACP55B,MAAOoxC,4BAAgB,CAC7BnyC,KAAM6hF,EAAM7qF,MAAMq3B,EAAI6M,EAAQqmD,QAAU,EAAI,KAC5CthF,IAAK4hF,EAAM7qF,MAAMs3B,EAAsB,EAAlB4M,EAAQqmD,QAAcrmD,EAAQqmD,QAAU,EAAI,KACjEnlF,MAAO8+B,EAAQ9+B,SAER,CACkB,QAAlB8+B,EAAQmmD,OACJhmD,yBAAc0U,yBAAau0C,EAAsB,CAChDhtF,IAAK,EACLqjC,MAAO,OACPp8B,KAAwB,EAAlB28B,EAAQqmD,SACb,KAAM,EAAG,CAAC,UACb5xC,gCAAoB,IAAI,IAC3B,IACHA,gCAAoB,IAAI,GACT,SAAlBzU,EAAQmmD,OACJhmD,yBAAcC,gCAAoB,MAAO,CACxChkC,IAAK,EACLqjC,MAAO,MACP55B,MAAOoxC,4BAAgB,CAC7BnyC,KAAM6hF,EAAM7qF,MAAMq3B,EAAI6M,EAAQsmD,SAAW,EAAI,KAC7CvhF,IAAK4hF,EAAM7qF,MAAMs3B,EAAI,KACrBlyB,MAAO8+B,EAAQ9+B,SAER,CACkB,SAAlB8+B,EAAQmmD,OACJhmD,yBAAc0U,yBAAao2B,EAA0B,CACpD7uE,IAAK,EACLqjC,MAAO,OACPp8B,KAAyB,IAAnB28B,EAAQsmD,UACb,KAAM,EAAG,CAAC,UACb7xC,gCAAoB,IAAI,IAC3B,IACHA,gCAAoB,IAAI,IAC3B,KACHA,gCAAoB,IAAI,IAC3B,S,UCrXL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMhT,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,sBACtBC,GAAa,CAAED,MAAO,gBACtBE,GAAa,CAAEF,MAAO,QACtBG,GAA2B6B,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,SAAW,SAAU,IACpHmC,GAAa,CAAEnC,MAAO,QACtBoC,GAA2BJ,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,SAAW,SAAU,IACpHqC,GAAa,CAAErC,MAAO,QACtBsC,GAA2BN,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,SAAW,SAAU,IACpHuC,GAAa,CAAEvC,MAAO,UACtBwC,GAAc,CAAC,WAkBOpC,oCAAiB,CAC3CC,OAAQ,mBACRl3B,MAAO,CACPg8E,WAAY,CACVrmF,KAAM41C,OACNC,UAAU,GAEZywC,YAAa,CACXtmF,KAAM41C,OACNC,UAAU,GAEZtvC,KAAM,CACJvG,KAAM41C,OACNtT,SAAU,GAEZ97B,IAAK,CACHxG,KAAM41C,OACNtT,SAAU,IAGZC,MAAO,CAAC,SACRf,MAAMC,GAAS,KAAEe,IAInB,MAAMyoD,EAAqB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAMzH,aAAE5iF,GAAiBmX,eAAYxX,KAE/BigF,EAAkBpwD,mBAClBqzD,EAAoBrzD,iBAAI,WACxBszD,EAAoBtzD,iBAAuB,OAC3CgwD,EAAahwD,kBAAI,GACjBuzD,EAAkBvzD,iBAA4B,IAE9CiwD,EAAUjwD,iBAAI,GACdkwD,EAAWlwD,iBAAI,IACfmwD,EAAanwD,iBAAI,IAEjBwzD,EAAezD,IACfuD,EAAkB5tF,QAAUqqF,EAC9BwD,EAAgB7tF,MAAQ6tF,EAAgB7tF,QAAUqqF,EAAQ,GAAKA,GAG3DwD,EAAgB7tF,QAAO6tF,EAAgB7tF,MAAQ,IACnD4tF,EAAkB5tF,MAAQqqF,IAKxB4C,EAAc,KAClBvC,EAAgB1qF,MAAOitF,eAInBxiB,EAAerlE,IACa,WAA5BwoF,EAAkB5tF,QAAoB4tF,EAAkB5tF,MAAQ,OACpE2tF,EAAkB3tF,MAAQoF,GAItB2oF,EAAoB,KACxB9oD,EAAK,UAIPsE,mBAAMz+B,EAAc,KAClBkJ,EAAGF,iBAAiBk6E,MAAM,MAAMC,OAAOnjF,EAAa9K,MAAM8I,IAAIsM,UAAU0D,KAAKo1E,IAC3E,MAAMC,EAAaD,EAAI,GACvBxD,EAAgB1qF,MAAOktF,iBAA0B,OAAViB,QAAU,IAAVA,OAAA,EAAAA,EAAY79D,UAAW,OAE/D,CAAEu4B,WAAW,IAGhB,MAAMulC,EAAmB,KACvB,MAAM99D,EAAUo6D,EAAgB1qF,MAAOoe,kBACvCpK,EAAGF,iBAAiBk6E,MAAM,MAAMC,OAAOnjF,EAAa9K,MAAM8I,IAAIsM,UAAU0D,KAAKo1E,IAC3E,MAAMC,EAAaD,EAAI,GACnBC,EAAYn6E,EAAGF,iBAAiBmB,OAAOk5E,EAAY,CAAE79D,YACpDtc,EAAGF,iBAAiBY,IAAI,CAAE5L,GAAIgC,EAAa9K,MAAM8I,GAAIwnB,eAI9D,MAAO,CAAC6T,EAAUC,KAChB,MAAMkpD,EAAuBpmD,8BAAkB,aACzCioC,EAA2BjoC,8BAAkB,iBAC7CmnD,EAAuBnnD,8BAAkB,aACzConD,EAAuBpnD,8BAAkB,aACzCgxC,EAAsBhxC,8BAAkB,YACxCo+C,EAAuBp+C,8BAAkB,aAE/C,OAAQ7C,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAO,CACzBf,MAAO,qBACP55B,MAAOoxC,4BAAgB,CACrB3zC,MAAO08B,EAAQ4kD,WAAa,KAC5BrhF,OAAQy8B,EAAQ6kD,YAAc,QAE/B,CACDvhD,yBAAa+mD,GAAc,CACzB9oD,QAAS,kBACTnL,IAAKowD,EACLtlF,MAAOuoF,EAAkB3tF,MACzBsqF,WAAYA,EAAWtqF,MACvBqqF,MAAOuD,EAAkB5tF,MACzBuqF,QAASA,EAAQvqF,MACjBwqF,SAAUA,EAASxqF,MACnByqF,WAAYA,EAAWzqF,MACvBkmE,MAAO9hC,EAAO,KAAOA,EAAO,GAAMkB,GAAiB8oD,MAClD,KAAM,EAAG,CAAC,QAAS,aAAc,QAAS,UAAW,WAAY,gBACnE,GACH5mD,yBAAa++C,GAAe,CAC1B5iD,MAAO,cACPn8B,MAAO,IACPC,OAAQ,GACRuB,KAAMk7B,EAAQl7B,KACdC,IAAKi7B,EAAQj7B,IACbm8E,SAAoC,KAA1ByI,EAAgB7tF,OACzB,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,MAAO,CACzBf,MAAO,QACP2X,YAAalX,EAAO,MAAQA,EAAO,IAAMmX,2BAAe,OAAU,CAAC,WAClE,CACD7W,gCAAoB,MAAOd,GAAY,CACrC4D,yBAAa/C,mBAAO,SAAU,CAC5Bh5B,QAAS,QACTw8B,QAAmC,QAA1B4lD,EAAgB7tF,OACxB,CACD0J,QAASg+B,qBAAS,IAAM,CACtBhD,gCAAoB,MAAOb,GAAY,CACrCC,GACA0D,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,cACPp2B,IAAK,EACL8M,IAAK,GACLsP,KAAM,EACN3pB,MAAOuqF,EAAQvqF,MACf,iBAAkBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkBilD,EAASvqF,MAAQslC,IAC/E,KAAM,EAAG,CAAC,cAGjBP,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,MACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,MAAO,CAAE,OAAsC,QAA5BoyC,EAAkB5tF,SAC7DqlC,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBwoD,EAAY,SAChE,CACDtmD,yBAAa8lD,EAAsB,CAAE3pD,MAAO,UAC3C,KAELkE,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,GACF,EAAG,CAAC,YACPL,yBAAa/C,mBAAO,SAAU,CAC5Bh5B,QAAS,QACTw8B,QAAmC,SAA1B4lD,EAAgB7tF,OACxB,CACD0J,QAASg+B,qBAAS,IAAM,CACtBhD,gCAAoB,MAAOoB,GAAY,CACrCC,GACAyB,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,cACPp2B,IAAK,GACL8M,IAAK,GACLsP,KAAM,EACN3pB,MAAOwqF,EAASxqF,MAChB,iBAAkBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkBklD,EAAUxqF,MAAQslC,IAChF,KAAM,EAAG,CAAC,cAGjBP,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,MAAO,CAAE,OAAsC,SAA5BoyC,EAAkB5tF,SAC7DqlC,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBwoD,EAAY,UAChE,CACDtmD,yBAAa2nC,EAA0B,CAAExrC,MAAO,UAC/C,KAELkE,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,GACF,EAAG,CAAC,YACPL,yBAAa/C,mBAAO,SAAU,CAC5Bh5B,QAAS,QACTw8B,QAAmC,WAA1B4lD,EAAgB7tF,OACxB,CACD0J,QAASg+B,qBAAS,IAAM,CACtBhD,gCAAoB,MAAOsB,GAAY,CACrCC,GACAuB,yBAAa/C,mBAAO,SAAS,CAC3Bd,MAAO,cACPp2B,IAAK,GACL8M,IAAK,IACLsP,KAAM,GACN3pB,MAAOyqF,EAAWzqF,MAClB,iBAAkBokC,EAAO,KAAOA,EAAO,GAAMkB,GAAkBmlD,EAAYzqF,MAAQslC,IAClF,KAAM,EAAG,CAAC,cAGjBP,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,MAAO,CAAE,OAAsC,WAA5BoyC,EAAkB5tF,SAC7DqlC,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBwoD,EAAY,YAChE,CACDtmD,yBAAa6mD,EAAsB,CAAE1qD,MAAO,UAC3C,KAELkE,EAAG,GACF,EAAG,CAAC,sBAETA,EAAG,GACF,EAAG,CAAC,YACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,MAAO,CACzBf,MAAO,MACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiB2nD,MACpD,CACDzlD,yBAAa8mD,EAAsB,CAAE3qD,MAAO,aAGhDkE,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,MACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,MAAO,CAAE,OAAU8uC,EAAWtqF,SACtDqlC,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBglD,EAAWtqF,OAASsqF,EAAWtqF,QACnF,CACDwnC,yBAAa0wC,EAAqB,CAAEv0C,MAAO,UAC1C,KAELkE,EAAG,GACF,EAAG,CAAC,oBACPnD,gCAAoB,MAAOwB,GAAY,EACpC7B,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAYkpD,EAAqBtoF,GAC5Es/B,gCAAoB,MAAO,CAChCf,MAAO6X,4BAAgB,CAAC,QAAS,CAAE,OAAUp2C,IAAUuoF,EAAkB3tF,SACzEM,IAAK8E,EACL2E,MAAOoxC,4BAAgB,CAAE9wC,gBAAiBjF,IAC1CigC,QAAUC,GAAiBmlC,EAAYrlE,IACtC,KAAM,GAAI+gC,KACX,SAGRqB,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,MAAO,CACzBf,MAAO,MACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiByoD,MACpD,CACDvmD,yBAAa89C,EAAsB,CAAE3hD,MAAO,aAGhDkE,EAAG,GACF,EAAG,CAAC,qBACN,MAELA,EAAG,GACF,EAAG,CAAC,OAAQ,MAAO,mB,UCjU1B,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMlC,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,UACtBC,GAAa,CAAED,MAAO,WACtBE,GAAa,CAAEF,MAAO,SACtBG,GAAa,CAAC,QAAS,YACvBgC,GAA2BH,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,SAAW,KAAM,IAChHoC,GAAa,CAAEpC,MAAO,SACtBqC,GAAa,CAAC,QAAS,YAQDjC,oCAAiB,CAC3CC,OAAQ,iBACRl3B,MAAO,CACP9D,KAAM,CACJvG,KAAM41C,OACNtT,QAAS,GAEX97B,IAAK,CACHxG,KAAM41C,OACNtT,QAAS,IAGXC,MAAO,CAAC,SACRf,MAAMC,GAAS,KAAEe,IAQnB,MAAM8/B,EAAQzqC,iBAAmB,MAC3Bk0D,EAAWl0D,kBAAI,GACfm0D,EAAcn0D,kBAAI,GAClBlnB,EAAOknB,iBAAI,GACXo0D,EAASvoE,sBAAS,IAAM7Y,KAAKijD,MAAMn9C,EAAKpT,MAAQ,KAChDmwD,EAAShqC,sBAAS,IAAM/S,EAAKpT,MAAQ,IAErC2uF,EAAgBxoE,sBAAS,KACrBsoE,EAAYzuF,OAASwuF,EAASxuF,OAGlC4uF,EAAa,KACb7pB,EAAM/kE,OAAOgoF,cAAcjjB,EAAM/kE,QAGvCkwB,yBAAY0+D,GAEZ,MAAM78B,EAAQ,KACZ68B,IACAJ,EAASxuF,OAAQ,GAGb6uF,EAAQ,KACZD,IACAJ,EAASxuF,OAAQ,EAEbyuF,EAAYzuF,MAAOoT,EAAKpT,MAAQ,IAC/BoT,EAAKpT,MAAQ,GAGd+D,EAAQ,KACZ6qF,IAEIH,EAAYzuF,MACd+kE,EAAM/kE,MAAQooF,YAAY,KACxBh1E,EAAKpT,MAAQoT,EAAKpT,MAAQ,EAEtBoT,EAAKpT,OAAS,GAAG6uF,KACpB,KAGH9pB,EAAM/kE,MAAQooF,YAAY,KACxBh1E,EAAKpT,MAAQoT,EAAKpT,MAAQ,EAEtBoT,EAAKpT,MAAQ,MAAO+xD,KACvB,KAGLy8B,EAASxuF,OAAQ,GAGbgyD,EAAS,KACTw8B,EAASxuF,MAAO+xD,IACfhuD,KAGD+qF,EAAkB,KACtBL,EAAYzuF,OAASyuF,EAAYzuF,MACjC6uF,KAGIE,EAAa,CAACx2E,EAA+B9V,KACjD,MAAMyiC,EAAW3sB,EAAEoN,OACnB,IAAI3lB,EAAQklC,EAASllC,MACrB,MAAMgvF,EAAW,UAAUh9D,KAAKhyB,GAC5BgvF,GACW,WAATvsF,IAAsBzC,GAAS,KAAIA,EAAQ,MAC/CoT,EAAKpT,MAAiB,WAATyC,EAA8B,IAARzC,EAAamwD,EAAOnwD,OAAWA,EAAuB,GAAf0uF,EAAO1uF,OAE9EklC,EAASllC,MAA4BiW,EAAX,WAATxT,EAA8BisF,EAAO1uF,MAAsBmwD,EAAOnwD,MAAtB,IAGpE,MAAO,CAACmkC,EAAUC,KAChB,MAAMkhD,EAAuBp+C,8BAAkB,aAE/C,OAAQ7C,yBAAc0U,yBAAawtC,GAAe,CAChD5iD,MAAO,kBACPn8B,MAAO,IACPC,OAAQ,IACRuB,KAAMk7B,EAAQl7B,KACdC,IAAKi7B,EAAQj7B,KACZ,CACD87B,QAAS2C,qBAAS,IAAM,CACtBhD,gCAAoB,MAAOhB,GAAY,CACrCgB,gCAAoB,OAAQ,CAC1Bf,MAAO,WACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiB0sB,MACpDrtB,6BAAiB6pD,EAASxuF,MAAQ,KAAO,MAAO,GACnD0kC,gCAAoB,OAAQ,CAC1Bf,MAAO,WACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBupD,MACpD,MACHnqD,gCAAoB,OAAQ,CAC1Bf,MAAO6X,4BAAgB,CAAC,WAAY,CAAE,OAAUizC,EAAYzuF,SAC5DqlC,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBwpD,MACpD,MAAO,KAEZpqD,gCAAoB,MAAOd,GAAY,CACrCc,gCAAoB,MAAOb,GAAY,CACrCa,gCAAoB,QAAS,CAC3BjiC,KAAM,OACNzC,MAAOykC,mBAAOxuB,EAAPwuB,CAAkBA,mBAAOiqD,GAAS,GACzCO,UAAW,EACXzxB,SAAU/4B,mBAAOkqD,GACjBrzC,YAAalX,EAAO,KAAOA,EAAO,GAAKmX,2BAAe,OAAU,CAAC,UACjE4K,OAAQ/hB,EAAO,KAAOA,EAAO,GAAKkB,GAAUypD,EAAWzpD,EAAQ,WAC/DkhD,UAAW,CACTpiD,EAAO,KAAOA,EAAO,GAAKmX,2BAAe,OAAU,CAAC,UACpDnX,EAAO,KAAOA,EAAO,GAAKqiD,sBAAUlrC,2BAAejW,GAAUypD,EAAWzpD,EAAQ,UAAW,CAAC,SAAU,CAAC,aAExG,KAAM,GAAIxB,MAEfgC,GACApB,gCAAoB,MAAOqB,GAAY,CACrCrB,gCAAoB,QAAS,CAC3BjiC,KAAM,OACNzC,MAAOykC,mBAAOxuB,EAAPwuB,CAAkBA,mBAAO0rB,GAAS,GACzC8+B,UAAW,EACXzxB,SAAU/4B,mBAAOkqD,GACjBrzC,YAAalX,EAAO,KAAOA,EAAO,GAAKmX,2BAAe,OAAU,CAAC,UACjE4K,OAAQ/hB,EAAO,KAAOA,EAAO,GAAKkB,GAAUypD,EAAWzpD,EAAQ,WAC/DkhD,UAAW,CACTpiD,EAAO,KAAOA,EAAO,GAAKmX,2BAAe,OAAU,CAAC,UACpDnX,EAAO,MAAQA,EAAO,IAAMqiD,sBAAUlrC,2BAAejW,GAAUypD,EAAWzpD,EAAQ,UAAW,CAAC,SAAU,CAAC,aAE1G,KAAM,GAAIU,QAGjBtB,gCAAoB,MAAO,CACzBf,MAAO,YACP0B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBL,EAAK,WAC3D,CACDuC,yBAAa89C,EAAsB,CAAE3hD,MAAO,aAGhDkE,EAAG,GACF,EAAG,CAAC,OAAQ,Y,UCzKjB,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMnE,GAAa,CAAEC,MAAO,cACtBC,GAAa,CAAED,MAAO,WAmBAI,oCAAiB,CAC3CC,OAAQ,WACRl3B,MAAO,CACPoiF,eAAgB,CACdzsF,KAAMm2C,SACNN,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,GAIR,OAAEr7B,EAAF,WAAU8B,GAAesX,eAAYxX,MAErC,cACJq9E,EADI,SAEJK,EAFI,cAGJJ,EAHI,mBAIJM,EAJI,mBAKJE,EALI,iBAMJC,EANI,cAOJC,EAPI,cAQJC,EARI,iBASJC,EATI,cAUJC,EAVI,SAWJf,EAXI,SAYJK,EAZI,eAaJX,GACE4H,MAEE,WAAErG,EAAF,YAAcC,GAAgBqG,MAC9B,cAAE9iE,GAAkBc,MACpB,gBAAEg8D,EAAF,qBAAmBG,GAAyB8F,KAE5CC,EAAoBh1D,kBAAI,GACxBi1D,EAA0Bj1D,kBAAI,GAC9Bk1D,EAAgBl1D,kBAAI,GACpBm1D,EAA6Bn1D,kBAAI,GACjCo1D,EAAWp1D,kBAAI,GAEfmhB,EAAe,IACZ,CACL,CACEjxC,KAAM,MACNssD,QAAS,MACT1lD,QAASzG,EAAW3K,OAAS,EAC7BstD,QAAS,IAAMm7B,KAEjB,CACEj+E,KAAM,MACNssD,QAAS,MACT1lD,QAASzG,EAAW3K,OAAS6I,EAAO7I,MAAMrC,OAAS,EACnD2vD,QAAS,IAAMo7B,KAEjB,CACEl+E,KAAM,MACN4G,QAA8B,IAArBzG,EAAW3K,MACpBstD,QAAS,IAAMq7B,EAAiB,IAElC,CACEn+E,KAAM,OACN4G,QAASzG,EAAW3K,QAAU6I,EAAO7I,MAAMrC,OAAS,EACpD2vD,QAAS,IAAMq7B,EAAiB9/E,EAAO7I,MAAMrC,OAAS,IAExD,CAAE4vD,SAAS,GACX,CACE/iD,KAAM,QACN8iD,QAAS,IAAMgiC,EAAkBtvF,OAAQ,GAE3C,CACEwK,KAAM,UACN8iD,QAAS,IAAMmiC,EAA2BzvF,OAAQ,GAEpD,CACEwK,KAAM,OACN8iD,QAAS,IAAMiiC,EAAwBvvF,OAAQ,GAEjD,CACEwK,KAAM,QACN8iD,QAAS,IAAMxgD,EAAMoiF,eAAe,cAEtC,CAAE3hC,SAAS,GACX,CACE/iD,KAAMs9E,EAAc9nF,MAAQ,SAAW,OACvCstD,QAASw6B,EAAc9nF,MAAQ+nF,EAAgBI,GAEjD,CACE39E,KAAM,OACNssD,QAAS,MACTxJ,QAAShhC,IAKf,MAAO,CAAC6X,EAAUC,KAChB,MAAMurD,EAAyBzoD,8BAAkB,eAC3C0oD,EAA0B1oD,8BAAkB,gBAC5ComD,EAAuBpmD,8BAAkB,aACzC2oD,EAAuB3oD,8BAAkB,aACzC4oD,EAAgC5oD,8BAAkB,sBAClD6oD,EAA0B7oD,8BAAkB,gBAC5C8oD,EAA8B9oD,8BAAkB,oBAChD+oD,EAA+B/oD,8BAAkB,qBACjDgpD,EAAuBhpD,8BAAkB,aACzCoV,EAAyBrB,8BAAkB,eAEjD,OAAQ5W,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,YAAa,CAAE,YAAak0C,EAAS1vF,UAC5D,CACDk7C,4BAAgB1T,yBAAa2oD,GAAiB,CAC5CrH,WAAYrkD,mBAAOqkD,GACnBC,YAAatkD,mBAAOskD,GACpBxB,eAAgB9iD,mBAAO8iD,GACvBqB,cAAenkD,mBAAOmkD,GACtBW,qBAAsB9kD,mBAAO8kD,GAC7B3qB,QAASx6B,EAAO,KAAOA,EAAO,GAAKkB,GAAUb,mBAAO4jD,EAAP5jD,CAA2Ba,IACxEoX,aAActY,EAAO,KAAOA,EAAO,GAAKkB,GAAUb,mBAAO8jD,EAAP9jD,CAA2Ba,IAC7EmoD,WAAYrpD,EAAO,KAAOA,EAAO,GAAKkB,GAAUb,mBAAO+jD,EAAP/jD,CAAyBa,KACxE,KAAM,EAAG,CAAC,aAAc,cAAe,iBAAkB,gBAAiB,yBAA0B,CACrG,CAACgX,EAAwBb,KAE1Bg0C,EAA2BzvF,OACvBqkC,yBAAc0U,yBAAaq3C,GAAiB,CAC3C9vF,IAAK,EACLqoF,iBAAkBlkD,mBAAOkkD,GACzBzgD,QAAS9D,EAAO,KAAOA,EAAO,GAAMkB,GAAiBmqD,EAA2BzvF,OAAQ,IACvF,KAAM,EAAG,CAAC,sBACb24C,gCAAoB,IAAI,GAC3B42C,EAAwBvvF,OACpBqkC,yBAAc0U,yBAAas3C,GAAkB,CAC5C/vF,IAAK,EACLwoF,WAAYrkD,mBAAOqkD,GACnBC,YAAatkD,mBAAOskD,GACpB7gD,QAAS9D,EAAO,KAAOA,EAAO,GAAMkB,GAAiBiqD,EAAwBvvF,OAAQ,IACpF,KAAM,EAAG,CAAC,aAAc,iBAC3B24C,gCAAoB,IAAI,GAC3B62C,EAAcxvF,OACVqkC,yBAAc0U,yBAAau3C,GAAgB,CAC1ChwF,IAAK,EACL4nC,QAAS9D,EAAO,KAAOA,EAAO,GAAMkB,GAAiBkqD,EAAcxvF,OAAQ,MAE7E24C,gCAAoB,IAAI,GAC5BjU,gCAAoB,MAAOhB,GAAY,CACrC8D,yBAAamoD,EAAwB,CACnChsD,MAAO,WACPz5B,MAAO,WACPd,KAAM,CAAC,OAAQ,QACfi8B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAOojD,EAAPpjD,MAEvD+C,yBAAaooD,EAAyB,CACpCjsD,MAAO,WACPz5B,MAAO,WACPd,KAAM,CAAC,OAAQ,QACfi8B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAOyjD,EAAPzjD,QAGzDC,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,cAAe,CAAE,QAAW8zC,EAAkBtvF,SACtE60D,aAAczwB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBgqD,EAAkBtvF,OAAQ,GACtF4tD,aAAcxpB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBgqD,EAAkBtvF,OAAQ,IACrF,CACD0kC,gCAAoB,MAAOd,GAAY,CACrCc,gCAAoB,MAAO,CACzBf,MAAO,uBACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBmqD,EAA2BzvF,OAAQ,IACvF,OAAS2kC,6BAAiBF,mBAAO95B,GAAc,GAAK,MAAQg6B,6BAAiBF,mBAAO57B,GAAQlL,QAAS,GACxG6pC,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa8lD,EAAsB,CACjC3pD,MAAO,WACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBiqD,EAAwBvvF,OAAQ,OAGzF6nC,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaqoD,EAAsB,CACjClsD,MAAO6X,4BAAgB,CAAC,WAAY,CAAE,OAAUk0C,EAAS1vF,SACzDqlC,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBoqD,EAAS1vF,OAAS0vF,EAAS1vF,QACjF,KAAM,EAAG,CAAC,YAEf6nC,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,OACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAasoD,EAA+B,CAC1CnsD,MAAO6X,4BAAgB,CAAC,WAAY,CAAE,OAAUg0C,EAAcxvF,SAC9DqlC,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBkqD,EAAcxvF,OAASwvF,EAAcxvF,QAC3F,KAAM,EAAG,CAAC,YAEf6nC,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,SACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAauoD,EAAyB,CACpCpsD,MAAO,WACP0B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBpB,EAAQgrD,eAAe,kBAGlFrnD,EAAG,GACF,EAAG,CAAC,oBACPL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAOmF,mBAAO2kD,GAAmB,OAAS,QACzC,CACDrkD,QAAS2C,qBAAS,IAAM,CACrBjD,mBAAO2kD,IACH/kD,yBAAc0U,yBAAai3C,EAA6B,CACvD1vF,IAAK,EACLqjC,MAAO,WACP0B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBb,mBAAO8kD,EAAP9kD,QAExDJ,yBAAc0U,yBAAak3C,EAA8B,CACxD3vF,IAAK,EACLqjC,MAAO,WACP0B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBb,mBAAOvZ,GAAPuZ,SAG/DoD,EAAG,GACF,EAAG,CAAC,kBAAmB,UAC1BL,yBAAa/C,mBAAO,SAAU,CAC5BqD,gBAAiB,EACjBs8B,gBAAiB,GACjB9kC,MAAO,QACN,CACDyF,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa0oD,EAAsB,CACjCvsD,MAAO,WACP0B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBb,mBAAOnY,EAAPmY,QAG3DoD,EAAG,GACF,EAAG,CAAC,uBAER,KACF,O,UCjRL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMlC,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,kBACtBC,GAAa,CAAED,MAAO,WACtBE,GAA2B8B,GAAa,IAAmBjB,gCAAoB,OAAQ,KAAM,QAAS,IACtGZ,GAA2B6B,GAAa,IAAmBjB,gCAAoB,OAAQ,KAAM,MAAO,IACpGoB,GAA2BH,GAAa,IAAmBjB,gCAAoB,OAAQ,KAAM,OAAQ,IACrGqB,GAA2BJ,GAAa,IAAmBjB,gCAAoB,OAAQ,KAAM,OAAQ,IACrGsB,GAA2BL,GAAa,IAAmBjB,gCAAoB,OAAQ,KAAM,QAAS,IACtGuB,GAAa,CAAEtC,MAAO,WACtBuC,GAAa,CAAC,WACdC,GAAc,CAAExC,MAAO,UACvByC,GAAc,CAAEzC,MAAO,UACvB0C,GAA4BV,GAAa,IAAmBjB,gCAAoB,OAAQ,KAAM,SAAU,IACxG6B,GAAc,CAAC,aACfipB,GAAc,CAAE7rB,MAAO,gBAqBDI,oCAAiB,CAC3CC,OAAQ,gBACRl3B,MAAO,CACPoiF,eAAgB,CACdzsF,KAAMm2C,SACNN,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,GAIR,OAAEr7B,EAAF,WAAU8B,EAAV,cAAsBC,EAAtB,aAAqCE,GAAiBmX,eAAYxX,KAElE8lF,EAAmBj2D,mBACnBk2D,EAAgBl2D,mBAChBi1D,EAA0Bj1D,kBAAI,GAC9Bk1D,EAAgBl1D,kBAAI,GACpBo1D,EAAWp1D,kBAAI,IAEf,mBACJ+tD,EADI,mBAEJE,EAFI,iBAGJC,EAHI,cAIJC,EAJI,cAKJC,EALI,iBAMJC,EANI,cAOJC,EAPI,eAQJrB,GACE4H,MAEE,WAAErG,EAAF,YAAcC,GAAgBqG,GAAamB,IAC3C,cAAEjkE,GAAkBc,MACpB,gBAAE43C,GAAoBG,MACtB,gBAAEikB,EAAF,qBAAmBG,GAAyB8F,KAE5CoB,EAAiBn2D,iBAAI,IACrBo2D,EAAqBvqE,sBAAS,IAC3B9I,GAAqBvS,EAAa9K,MAAM6/B,QAAU,QAGrD8wD,EAA8Bp4E,IAC7Bi4E,EAAcxwF,OACnBwwF,EAAcxwF,MAAM4wF,SAASr4E,EAAEmmD,OAAQ,IAGnCmyB,EAAqBvzD,IACrBA,EAAW,IAAMA,EAAW,KAChCmzD,EAAezwF,MAAQs9B,IAGzBiM,mBAAM5+B,EAAY,KAChBo7C,sBAAS,KACP,IAAKyqC,EAAcxwF,MAAO,OAE1B,MAAM8wF,EAAyCN,EAAcxwF,MAAMokB,cAAc,qBACjF,IAAK0sE,EAAoB,OAEzB,MAAMtpF,EAAQgpF,EAAcxwF,MAAMirC,YAC5B8lD,EAAaD,EAAmBC,WACtCP,EAAcxwF,MAAMgxF,SAAS,CAAEhoF,KAAM+nF,EAAavpF,EAAQ,EAAGypF,SAAU,eAI3E,MAAMx1C,EAAe,IACZ,CACL,CACEjxC,KAAM,MACNssD,QAAS,MACT1lD,QAASzG,EAAW3K,OAAS,EAC7BstD,QAAS,IAAMm7B,KAEjB,CACEj+E,KAAM,MACNssD,QAAS,MACT1lD,QAASzG,EAAW3K,OAAS6I,EAAO7I,MAAMrC,OAAS,EACnD2vD,QAAS,IAAMo7B,KAEjB,CACEl+E,KAAM,MACN4G,QAA8B,IAArBzG,EAAW3K,MACpBstD,QAAS,IAAMq7B,EAAiB,IAElC,CACEn+E,KAAM,OACN4G,QAASzG,EAAW3K,QAAU6I,EAAO7I,MAAMrC,OAAS,EACpD2vD,QAAS,IAAMq7B,EAAiB9/E,EAAO7I,MAAMrC,OAAS,IAExD,CAAE4vD,SAAS,GACX,CACE/iD,KAAM,OACN8iD,QAAS,IAAMiiC,EAAwBvvF,OAAQ,GAEjD,CACEwK,KAAM,OACN8iD,QAAS,IAAMxgD,EAAMoiF,eAAe,SAEtC,CAAE3hC,SAAS,GACX,CACE/iD,KAAM,OACNssD,QAAS,MACTxJ,QAAShhC,IAKf,MAAO,CAAC6X,EAAUC,KAChB,MAAM2rD,EAA0B7oD,8BAAkB,gBAC5ComD,EAAuBpmD,8BAAkB,aACzC2oD,EAAuB3oD,8BAAkB,aACzC4oD,EAAgC5oD,8BAAkB,sBAClD8oD,EAA8B9oD,8BAAkB,oBAChDgpD,EAAuBhpD,8BAAkB,aACzC+8B,EAAuB/8B,8BAAkB,aACzCg9B,EAAsBh9B,8BAAkB,YACxCoV,EAAyBrB,8BAAkB,eAEjD,OAAQ5W,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrCc,gCAAoB,MAAO,CACzBf,MAAO,WACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBpB,EAAQgrD,eAAe,UAC3E,CACD1nD,yBAAauoD,EAAyB,CAAEpsD,MAAO,cAC/CE,KAEFa,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,WAAY,CAAE,OAAU+zC,EAAwBvvF,SACxEqlC,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBiqD,EAAwBvvF,OAASuvF,EAAwBvvF,QAC7G,CACDwnC,yBAAa8lD,EAAsB,CAAE3pD,MAAO,cAC5CG,IACC,GACHY,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,WAAY,CAAE,OAAUk0C,EAAS1vF,SACzDqlC,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBoqD,EAAS1vF,OAAS0vF,EAAS1vF,QAC/E,CACDwnC,yBAAaqoD,EAAsB,CAAElsD,MAAO,cAC5CmC,IACC,GACHpB,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,WAAY,CAAE,OAAUg0C,EAAcxvF,SAC9DqlC,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBkqD,EAAcxvF,OAASwvF,EAAcxvF,QACzF,CACDwnC,yBAAasoD,EAA+B,CAAEnsD,MAAO,cACrDoC,IACC,GACHrB,gCAAoB,MAAO,CACzBf,MAAO,WACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAK,IAAMK,mBAAO2kD,GAAmB3kD,mBAAO8kD,EAAP9kD,GAAiCA,mBAAOvZ,GAAPuZ,KACnG,CACAA,mBAAO2kD,IACH/kD,yBAAc0U,yBAAai3C,EAA6B,CACvD1vF,IAAK,EACLqjC,MAAO,gBAERU,yBAAc0U,yBAAai3C,EAA6B,CACvD1vF,IAAK,EACLqjC,MAAO,eAEbe,gCAAoB,OAAQ,KAAMC,6BAAiBF,mBAAO2kD,GAAmB,OAAS,MAAO,KAE/F5hD,yBAAa/C,mBAAO,SAAU,CAAEd,MAAO,YACvCe,gCAAoB,MAAO,CACzBf,MAAO,WACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAOnY,EAAPmY,KACpD,CACD+C,yBAAa0oD,EAAsB,CAAEvsD,MAAO,cAC5CqC,OAGJtB,gCAAoB,MAAOuB,GAAY,CACrCvB,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,kBAAmB,CAAE,YAAak0C,EAAS1vF,SACnEylC,QAAS,mBACTnL,IAAKi2D,GACJ,CACDr1C,4BAAgB1T,yBAAa2oD,GAAiB,CAC5CrH,WAAYrkD,mBAAOqkD,GACnBC,YAAatkD,mBAAOskD,GACpBxB,eAAgB9iD,mBAAO8iD,GACvBqB,cAAenkD,mBAAOmkD,GACtBW,qBAAsB9kD,mBAAO8kD,GAC7B3qB,QAASx6B,EAAO,KAAOA,EAAO,GAAKkB,GAAUb,mBAAO4jD,EAAP5jD,CAA2Ba,IACxEoX,aAActY,EAAO,KAAOA,EAAO,GAAKkB,GAAUb,mBAAO8jD,EAAP9jD,CAA2Ba,IAC7EmoD,WAAYrpD,EAAO,KAAOA,EAAO,GAAKkB,GAAUb,mBAAO+jD,EAAP/jD,CAAyBa,KACxE,KAAM,EAAG,CAAC,aAAc,cAAe,iBAAkB,gBAAiB,yBAA0B,CACrG,CAACgX,EAAwBb,KAE1B8zC,EAAwBvvF,OACpBqkC,yBAAc0U,yBAAas3C,GAAkB,CAC5C/vF,IAAK,EACLwoF,WAAYrkD,mBAAOqkD,GACnBC,YAAatkD,mBAAOskD,GACpB//E,MAAO,IACPC,KAAM,IACNi/B,QAAS9D,EAAO,KAAOA,EAAO,GAAMkB,GAAiBiqD,EAAwBvvF,OAAQ,IACpF,KAAM,EAAG,CAAC,aAAc,iBAC3B24C,gCAAoB,IAAI,GAC3B62C,EAAcxvF,OACVqkC,yBAAc0U,yBAAau3C,GAAgB,CAC1ChwF,IAAK,EACL0I,KAAM,GACNk/B,QAAS9D,EAAO,MAAQA,EAAO,IAAOkB,GAAiBkqD,EAAcxvF,OAAQ,MAE/E24C,gCAAoB,IAAI,IAC3B,GACHjU,gCAAoB,MAAO,CACzBf,MAAO,aACP8B,QAAS,gBACTnL,IAAKk2D,EACL5xB,QAASx6B,EAAO,MAAQA,EAAO,IAAMmX,2BAAejW,GAAUqrD,EAA2BrrD,GAAS,CAAC,cAClG,EACAjB,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAO57B,GAAS,CAAC8D,EAAOQ,KAClFk3B,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CAAC,YAAa,CAAE,OAAUruC,IAAUs3B,mBAAO95B,MAClErK,IAAKqM,EAAM7D,GACXu8B,QAAUC,GAAiBb,mBAAOkkD,EAAPlkD,CAAyBt3B,IACnD,CACDq6B,yBAAai2B,GAAgB,CAC3B9wD,MAAOA,EACPpF,KAAM,IAAMk9B,mBAAO75B,GACnBq9B,QAAS96B,EAAQs3B,mBAAOugC,IACvB,KAAM,EAAG,CAAC,QAAS,OAAQ,aAC7B,GAAI9+B,MACL,OACH,OAELxB,gCAAoB,MAAOyB,GAAa,CACtCzB,gCAAoB,MAAO0B,GAAa,CACtCC,GACA3B,gCAAoB,OAAQ,KAAM,KAAOC,6BAAiBF,mBAAO95B,GAAc,GAAK,MAAQg6B,6BAAiBF,mBAAO57B,GAAQlL,QAAS,KAEvI+mC,gCAAoB,MAAO,CACzBf,MAAO,iBACP55B,MAAOoxC,4BAAgB,CAAE7d,SAAUmzD,EAAezwF,MAAQ,OAC1DojD,UAAW3e,mBAAOisD,IACjB,KAAM,GAAInqD,IACb7B,gCAAoB,MAAO8qB,GAAa,CACtC9qB,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,YAAa,CAAE,QAAoC,KAAzBi1C,EAAezwF,SACjEqlC,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBurD,EAAkBJ,EAAezwF,MAAQ,KAC/F,CACDwnC,yBAAay8B,IACZ,GACHv/B,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,YAAa,CAAE,QAAoC,KAAzBi1C,EAAezwF,SACjEqlC,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBurD,EAAkBJ,EAAezwF,MAAQ,KAC/F,CACDwnC,yBAAa08B,IACZ,a,UC5RX,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMxgC,GAAa,CAAEC,MAAO,iBAUAI,oCAAiB,CAC3CC,OAAQ,QACRC,MAAMC,GAER,MAAMgtD,EAAW52D,iBAA0B,QAErC40D,EAAkBhvF,IACtBgxF,EAASlxF,MAAQE,IAGb,cAAEosB,GAAkBc,KAGpBiB,EAAmB9V,IACvB,MAAMjY,EAAMiY,EAAEjY,IAAIquB,cACdruB,IAAQwW,GAAKq6E,KAAK7kE,KAMxB,OAHA2D,uBAAU,IAAMroB,SAAS4W,iBAAiB,UAAW6P,IACrD6B,yBAAY,IAAMtoB,SAASuoB,oBAAoB,UAAW9B,IAEnD,CAAC8V,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CACvC,SAAnBwtD,EAASlxF,OACLqkC,yBAAc0U,yBAAaq4C,GAAU,CACpC9wF,IAAK,EACL4uF,eAAgBA,KAEE,cAAnBgC,EAASlxF,OACPqkC,yBAAc0U,yBAAas4C,GAAe,CACzC/wF,IAAK,EACL4uF,eAAgBA,KAElBv2C,gCAAoB,IAAI,S,UCzClC,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCSa5U,gCAAiB,CAC3CC,OAAQ,wBACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,GAEZgd,aAAc,CACZ7yD,KAAM41C,OACNC,UAAU,GAEZjF,cAAe,CACb5wC,KAAMm2C,SACNN,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIRuxB,EAA0BtvC,sBAAS,KACvC,MAAMuvC,EAAiB,CACrB,CAAC92C,GAAa+2C,OAAQC,GACtB,CAACh3C,GAAai3C,MAAOC,GACrB,CAACl3C,GAAam3C,OAAQC,GACtB,CAACp3C,GAAaq3C,MAAOC,GACrB,CAACt3C,GAAau3C,OAAQC,GACtB,CAACx3C,GAAay3C,OAAQC,GACtB,CAAC13C,GAAa23C,OAAQC,GACtB,CAAC53C,GAAa63C,OAAQC,GACtB,CAAC93C,GAAa+3C,OAAQC,IAExB,OAAOlB,EAAe5oD,EAAM+rC,YAAYp2C,OAAS,OAGnD,MAAO,CAAC0hC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,0BACP55B,MAAOoxC,4BAAgB,CACrB6b,OAAQ9yB,EAAQoxB,gBAEjB,EACAjxB,yBAAc0U,yBAAake,qCAAyBxyB,mBAAOgxB,IAA2B,CACrF5c,YAAa3U,EAAQ2U,YACrBxF,cAAenP,EAAQmP,cACvBoI,aAAc,IAAM,MACnB,KAAM,EAAG,CAAC,cAAe,gBAAiB,mBAC5C,OC/DL,MAAM,GAAc,GAEL,UCOa1X,gCAAiB,CAC3CC,OAAQ,gBACRl3B,MAAO,CACP+rC,YAAa,CACXp2C,KAAM7E,OACN06C,UAAU,GAEZ6iB,WAAY,CACV14D,KAAMsgD,QACNzK,UAAU,GAEZtpC,YAAa,CACXvM,KAAM41C,OACNC,UAAU,GAEZrJ,aAAc,CACZxsC,KAAMm2C,SACNN,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIR36B,EAAS4c,sBAAS,IAAM,WAAYrZ,EAAM+rC,YAAc/rC,EAAM+rC,YAAYtvC,OAAS,GAEnF4wD,EAAah0C,sBAAS,IAAMrZ,EAAM+rC,YAAYrxC,MAAQsF,EAAMkC,aAC5DorD,EAAcj0C,sBAAS,IAAMrZ,EAAM+rC,YAAYpxC,OAASqF,EAAMkC,cAC9D,YACJmqD,EACAH,eAAgBs4B,EAFZ,0BAGJr4B,GACEO,GAAiBW,EAAYC,GAE3BpB,EAA4C,SAA3BlsD,EAAM+rC,YAAYp2C,MAA8C,UAA3BqK,EAAM+rC,YAAYp2C,KAAmBw2D,EAA4Bq4B,EAE7H,MAAO,CAACntD,EAAUC,KACRC,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,iBACP55B,MAAOoxC,4BAAgB,CACrBlyC,IAAKi7B,EAAQ2U,YAAY5vC,IAAMi7B,EAAQl1B,YAAc,KACrDhG,KAAMk7B,EAAQ2U,YAAY7vC,KAAOk7B,EAAQl1B,YAAc,KACvDutC,UAAW,UAAU9X,mBAAOl7B,SAC5BuyD,gBAAiB,GAAG53B,EAAQ2U,YAAYrxC,MAAQ08B,EAAQl1B,YAAc,OAAOk1B,EAAQ2U,YAAYpxC,OAASy8B,EAAQl1B,YAAc,SAEjI,CACAk1B,EAAQi3B,YACJ92B,yBAAcC,gCAAoBC,cAAW,CAAEjkC,IAAK,GAAK,EACvD+jC,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAO00B,GAAev9C,IAChFyoB,yBAAc0U,yBAAa6gB,GAAY,CAC7Cj2B,MAAO,sBACPrjC,IAAKsb,EAAKnZ,KACVA,KAAMmZ,EAAKnZ,KACXsH,MAAOoxC,4BAAgBv/B,EAAK7R,QAC3B,KAAM,EAAG,CAAC,OAAQ,YACnB,OACHs6B,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAOu0B,GAAkB14C,IACnF+jB,yBAAc0U,yBAAa8gB,GAAe,CAChDl2B,MAAO,yBACPrjC,IAAKggB,EAAMkuB,UACX/rC,KAAM6d,EAAMkuB,UACZjlC,OAAQ26B,EAAQ2U,YAAYtvC,OAC5BQ,MAAOoxC,4BAAgB76B,EAAMvW,OAC7B2yC,aAAcnB,2BAAejW,GAAUpB,EAAQ+K,aAAa3J,EAAQpB,EAAQ2U,YAAav4B,EAAMkuB,WAAY,CAAC,UAC3G,KAAM,EAAG,CAAC,OAAQ,SAAU,QAAS,mBACtC,OACH,KACHmK,gCAAoB,IAAI,IAC3B,O,UC5EL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMjV,GAAa,CAAEC,MAAO,qBACtBC,GAAa,CAAC,WACdC,GAAa,CAAEF,MAAO,SAWAI,oCAAiB,CAC3CC,OAAQ,mBACRC,MAAMC,GAER,MAAM9zB,EAAc3F,KACd,OAAE5B,EAAF,WAAU8B,GAAesX,eAAY7R,IAErC,WAAEsX,GAAemF,MAEjB,gBAAEm4C,GAAoBG,KACtBE,EAAoBl4D,IACxBiD,EAAY3C,iBAAiBN,IAIzBq4D,EAAiBC,IACrB,MAAM,SAAEp4D,EAAF,SAAYsa,GAAa89C,EAC/B/9C,EAAWra,EAAUsa,IAGvB,MAAO,CAACwc,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3D8D,yBAAa/C,mBAAOohC,MAAY,CAC9BliC,MAAO,iBACPmiC,WAAYrhC,mBAAO57B,GACnBwC,UAAW,IACX06D,QAAQ,EACRC,kBAAmB,GACnBC,QAAS,KACTE,QAAS,KACTorB,kBAAkB,EAClBC,MAAO,IACPtrB,MAAOV,GACN,CACD78D,KAAM++B,qBAAS,EAAG/5B,UAASR,WAAY,CACrCu3B,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,iBAAkB,CAAE,OAAU/W,mBAAO95B,KAAgBwC,KAC7Ek4B,QAAUC,GAAiB+/B,EAAiBl4D,IAC3C,CACDu3B,gCAAoB,MAAOb,GAAYc,6BAAiBx3B,EAAQ,GAAI,GACpEq6B,yBAAai2B,GAAgB,CAC3B95B,MAAO,YACPh3B,MAAOgB,EACPpG,KAAM,IACN0gC,QAAS96B,EAAQs3B,mBAAOugC,IACvB,KAAM,EAAG,CAAC,QAAS,aACrB,GAAIphC,MAETiE,EAAG,GACF,EAAG,CAAC,qB,UC5DX,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMnE,GAAa,CAAEC,MAAO,iBACtBC,GAAa,CAAED,MAAO,UACtBE,GAAa,CAAC,SACdC,GAAa,CAAEH,MAAO,WAeAI,oCAAiB,CAC3CC,OAAQ,eACRC,MAAMC,GAER,MAAMypC,EAAc,QAAOP,MAErBh9D,EAAc3F,KACd,cAAEG,EAAF,aAAiBE,GAAiBmX,eAAY7R,IAE9C,YAAE8W,EAAF,kBAAeG,EAAf,YAAkCta,GAAiB8f,MACnD,kBAAE7I,EAAF,mBAAqB3B,EAArB,mBAAyCiC,GAAuBsB,KAEhE6rE,EAAoB,KACxB,MAAMjqF,EAAQ,IACRC,EAAS,GAEfuc,EAAkB,CAChBhb,MAAO0V,GAAgBlX,GAAS,EAChCyB,KAAMyV,GAAgB9T,EAAc5K,MAAQyH,GAAU,EACtDD,QACAC,UACC,CAAEiC,QAAS,kBAGV+4D,EAAsB9mC,IACrBA,GAAUA,EAAM,IACrBvd,GAAgBud,EAAM,IAAI7iB,KAAKwX,GAAWjO,EAAmBiO,KAGzDohE,EAAsBjvF,IAC1B,MAAMkvF,EAAwB,CAC5BzoF,QAAS,CAAC,IAAK,KACfC,KAAM,qCAEFqjB,EAAuB,CAC3BtjB,QAAS,CAAC,IAAK,KACfC,KAAM,uDAEFy3B,EAAQ,CAAE+wD,SAAQnlE,SAElBjlB,EAAO,IAEb+c,EAAmB,CACjBtb,MAAO0V,GAAgBnX,GAAQ,EAC/B0B,KAAMyV,GAAgB9T,EAAc5K,MAAQuH,GAAQ,EACpDC,MAAOD,EACPE,OAAQF,GACPq5B,EAAMn+B,KAGLo9B,EAAS1Z,sBAAS,kBAAM,UAAArb,EAAa9K,aAAb,eAAoB6/B,SAAU,KAEtD+xD,EAAmBr5E,IACvB,MAAMvY,EAASuY,EAAEoN,OAA+B3lB,MAChDoQ,EAAYvD,YAAY,CAAEgzB,OAAQ7/B,KAGpC,MAAO,CAACmkC,EAAUC,KAChB,MAAM8/B,EAAsBh9B,8BAAkB,YACxC2qD,EAAsB3qD,8BAAkB,YACxC4qD,EAAwB5qD,8BAAkB,cAC1Co8B,EAA0Bp8B,8BAAkB,gBAC5Cw8B,EAAyBx8B,8BAAkB,eAC3C6qD,EAAwB7qD,8BAAkB,cAC1C8qD,EAAuB9qD,8BAAkB,aAE/C,OAAQ7C,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrCc,gCAAoB,WAAY,CAC9B1kC,MAAOykC,mBAAO5E,GACd09B,YAAa,YACbpU,QAAS/kB,EAAO,KAAOA,EAAO,GAAKkB,GAAUssD,EAAgBtsD,KAC5D,KAAM,GAAIzB,MAEfa,gCAAoB,MAAOZ,GAAY,CACrC0D,yBAAa/C,mBAAOkpC,GAAc,CAAEhqC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAOvd,EAAPud,KACpD,CACDM,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa08B,EAAqB,CAAEvgC,MAAO,SAC3CiE,6BAAiB,WAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAOpd,EAAPod,KACpD,CACDM,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaqqD,EAAqB,CAAEluD,MAAO,SAC3CiE,6BAAiB,SAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAO13B,EAAP03B,KACpD,CACDM,QAAS2C,qBAAS,IAAM,CACtBF,yBAAasqD,EAAuB,CAAEnuD,MAAO,SAC7CiE,6BAAiB,SAEnBC,EAAG,MAGPA,EAAG,IAELL,yBAAa/C,mBAAOkpC,GAAc,CAAEhqC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBmsD,MACpD,CACD1sD,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa87B,EAAyB,CAAE3/B,MAAO,SAC/CiE,6BAAiB,SAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAAE16B,MAAO,CAAC,KAAO,MAAQ,CACpDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaG,GAAW,CACtBjC,SAAUtB,EAAO,KAAOA,EAAO,GAAKzI,GAAS8mC,EAAmB9mC,KAC/D,CACDoJ,QAAS2C,qBAAS,IAAM,CACtBF,yBAAak8B,EAAwB,CAAE//B,MAAO,SAC9CiE,6BAAiB,SAEnBC,EAAG,MAGPA,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBosD,EAAmB,YACvE,CACD3sD,QAAS2C,qBAAS,IAAM,CACtBF,yBAAauqD,EAAuB,CAAEpuD,MAAO,SAC7CiE,6BAAiB,SAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBosD,EAAmB,WACvE,CACD3sD,QAAS2C,qBAAS,IAAM,CACtBF,yBAAawqD,EAAsB,CAAEruD,MAAO,SAC5CiE,6BAAiB,SAEnBC,EAAG,MAGPA,EAAG,MAGPL,yBAAayqD,U,UChLjB,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MAAMtsD,GAAenlC,IAAMolC,yBAAa,mBAAmBplC,EAAEA,IAAIqlC,0BAAcrlC,GACzEkjC,GAAa,CAAEC,MAAO,mBACtBC,GAAa,CAAED,MAAO,QACtBE,GAAa,CAAC,WACdC,GAAa,CAAEH,MAAO,WACtBmC,GAAa,CACjBxlC,IAAK,EACLqjC,MAAO,SAEHoC,GAAa,CAAEpC,MAAO,aACtBqC,GAA2BL,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,SAAW,SAAU,IACpHsC,GAAa,CAAEtC,MAAO,UACtBuC,GAAa,CAAC,WACdC,GAAc,CAAExC,MAAO,aACvByC,GAA4BT,GAAa,IAAmBjB,gCAAoB,MAAO,CAAEf,MAAO,SAAW,QAAS,IACpH0C,GAAc,CAAE1C,MAAO,UACvB4C,GAAc,CAAC,WACfipB,GAAc,CAClBlvD,IAAK,EACLqjC,MAAO,UA4BmBI,oCAAiB,CAC3CC,OAAQ,iBACRC,MAAMC,GAER,MAAQkpC,MAAOC,EAAYC,OAAQC,GAA7B,QACAI,EAAc,QAAOP,MAErBtlB,EAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAE/K3yC,EAAYzG,IACZ0B,EAAc3F,KACd,cAAE4F,EAAF,gBAAiBzB,EAAjB,cAAkCgB,GAAkBqS,eAAY9M,IAEhE,mBAAEoM,GAAuBW,KAEzBjU,EAAgB,CAACnF,EAAYgE,KACjCsD,EAAYnC,cAAc,CAAEnF,KAAIgE,UAChCyU,KAGI47C,EAAkB,CACtB,CAAE78D,IAAK,QAASY,MAAO,MACvB,CAAEZ,IAAK,SAAUY,MAAO,OAEpBw6E,EAAYphD,iBAAI,WAEhB,aAAEvP,GAAiBoC,MACnB,qBAAE6oB,GAAyB6gB,MAC3B,oBAAExxC,GAAwBQ,MAC1B,cAAE/X,GAAkBob,KAEpBC,EAAc,KAClB,MAAMxb,EAAsB3B,KAAKG,MAAMH,KAAKC,UAAUoE,EAAcrQ,QACpEqlB,EAAoB,CAAC1X,KAGjBihE,EAAsB,CAACnoD,EAAiBzmB,KAC5CihD,GAAQhc,KAAK+b,GAAcmD,kBAAmB,CAAEhsC,OAAQ,CAAEsO,UAASzmB,YAG/DkyF,EAAmB9sF,IAAiB,MACxC,GAAKiL,EAAcrQ,MAAnB,CAIA,IAHiC,SAA7BqQ,EAAcrQ,MAAMyC,MAAiD,UAA7B4N,EAAcrQ,MAAMyC,MAApB,UAAwC4N,EAAcrQ,MAAMwK,YAA5D,OAAwC,EAA0Bd,UAC5Gu3C,GAAQhc,KAAK+b,GAAcmD,kBAAmB,CAAEhsC,OAAQ,CAAEsO,QAAS,QAASzmB,MAAOoF,KAEpD,UAA7BiL,EAAcrQ,MAAMyC,KAAkB,CACxC,MAAMtF,EAAsB6O,KAAKG,MAAMH,KAAKC,UAAUoE,EAAcrQ,MAAM7C,OAC1E,IAAK,IAAIM,EAAI,EAAGA,EAAIN,EAAKQ,OAAQF,IAC/B,IAAK,IAAIkB,EAAI,EAAGA,EAAIxB,EAAKM,GAAGE,OAAQgB,IAAK,CACvC,MAAMoL,EAAQ5M,EAAKM,GAAGkB,GAAGoL,OAAS,GAClC5M,EAAKM,GAAGkB,GAAGoL,MAAQ,IAAKA,EAAO3E,SAGnC6I,EAAcW,EAAgB5O,MAAO,CAAE7C,SAER,UAA7BkT,EAAcrQ,MAAMyC,MACtBwL,EAAcW,EAAgB5O,MAAO,CAAEoF,YAIrCupE,EAAcvpE,IAClB,GAAKiL,EAAcrQ,MAAnB,CAOA,GAL+B,SAA7BqQ,EAAcrQ,MAAMyC,MACS,UAA7B4N,EAAcrQ,MAAMyC,MACS,UAA7B4N,EAAcrQ,MAAMyC,MACpBwL,EAAcW,EAAgB5O,MAAO,CAAEoJ,KAAMhE,IAEd,UAA7BiL,EAAcrQ,MAAMyC,KAAkB,CACxC,MAAMtF,EAAsB6O,KAAKG,MAAMH,KAAKC,UAAUoE,EAAcrQ,MAAM7C,OAC1E,IAAK,IAAIM,EAAI,EAAGA,EAAIN,EAAKQ,OAAQF,IAC/B,IAAK,IAAIkB,EAAI,EAAGA,EAAIxB,EAAKM,GAAGE,OAAQgB,IAAK,CACvC,MAAMoL,EAAQ5M,EAAKM,GAAGkB,GAAGoL,OAAS,GAClC5M,EAAKM,GAAGkB,GAAGoL,MAAQ,IAAKA,EAAO1E,UAAWD,GAG9C6I,EAAcW,EAAgB5O,MAAO,CAAE7C,SAGR,UAA7BkT,EAAcrQ,MAAMyC,MAAkBwL,EAAcW,EAAgB5O,MAAO,CAAEoF,YAGnF,MAAO,CAAC++B,EAAUC,KAChB,MAAMgrC,EAA0BloC,8BAAkB,gBAC5CmoC,EAA4BnoC,8BAAkB,kBAC9CooC,EAA+BpoC,8BAAkB,qBACjDqoC,EAA+BroC,8BAAkB,qBACjDo8B,EAA0Bp8B,8BAAkB,gBAC5C2oC,EAA+B3oC,8BAAkB,qBACjD4oC,EAAiC5oC,8BAAkB,uBACnD6oC,EAAgC7oC,8BAAkB,sBAClD2qD,EAAsB3qD,8BAAkB,YACxC4qD,EAAwB5qD,8BAAkB,cAC1CkzC,EAA4BlzC,8BAAkB,kBAC9CmzC,EAAiCnzC,8BAAkB,uBACnDozC,EAA8BpzC,8BAAkB,oBAChDqzC,EAA4BrzC,8BAAkB,kBAC9CszC,EAA2BtzC,8BAAkB,iBAC7CuzC,EAAiCvzC,8BAAkB,uBACnDwzC,EAA4BxzC,8BAAkB,kBAC9CyzC,EAA0BzzC,8BAAkB,gBAC5C0zC,EAAmC1zC,8BAAkB,yBACrD2zC,EAA6B3zC,8BAAkB,mBAErD,OAAQ7C,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,EACpCS,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAY24B,EAAOx0D,GAC9D+7B,gCAAoB,MAAO,CAChCf,MAAO6X,4BAAgB,CAAC,MAAO,CAAE,OAAUkgC,EAAU17E,QAAU2I,EAAKrI,OACpEA,IAAKqI,EAAKrI,IACV+kC,QAAUC,GAAiBo2C,EAAU17E,MAAQ2I,EAAKrI,KACjDqkC,6BAAiBh8B,EAAKzH,OAAQ,GAAI2iC,KACnC,OAENa,gCAAoB,MAAOZ,GAAY,CAChB,UAApB43C,EAAU17E,OACNqkC,yBAAcC,gCAAoB,MAAOwB,GAAY,CACpD0B,yBAAakpC,GAAqB,CAAE/sC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,QAAS/nC,mBAAO70B,GAAetJ,KAC/B++B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBspC,EAAoB,UACxE,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa4nC,KAEfvnC,EAAG,GACF,EAAG,CAAC,YACPL,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,QAAS/nC,mBAAO70B,GAAerJ,GAC/B8+B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBspC,EAAoB,QACxE,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa6nC,KAEfxnC,EAAG,GACF,EAAG,CAAC,YACPL,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,QAAS/nC,mBAAO70B,GAAepJ,UAC/B6+B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBspC,EAAoB,eACxE,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa8nC,KAEfznC,EAAG,GACF,EAAG,CAAC,YACPL,yBAAampC,GAAgB,CAC3B5mE,MAAO,CAAC,KAAO,KACfyiE,QAAS/nC,mBAAO70B,GAAenJ,cAC/B4+B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBspC,EAAoB,mBACxE,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa+nC,KAEf1nC,EAAG,GACF,EAAG,CAAC,cAETA,EAAG,IAELL,yBAAa/C,mBAAOkpC,GAAc,CAAEhqC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBspC,EAAoB,kBACxE,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa87B,GACb17B,6BAAiB,OAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBspC,EAAoB,qBACxE,CACD7pC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa87B,GACb17B,6BAAiB,OAEnBC,EAAG,MAGPA,EAAG,IAELL,yBAAa/C,mBAAO,SAAU,CAAE16B,MAAO,CAAC,OAAS,YACjDy9B,yBAAa/C,mBAAO4oC,GAAa,CAC/B1pC,MAAO,MACP,eAAgB,QAChB3jC,MAAOykC,mBAAO70B,GAAepK,MAC7BkgC,SAAUtB,EAAO,KAAOA,EAAO,GAAK7rB,GAAKq2D,EAAoB,QAASr2D,EAAEoN,OAAO3lB,SAC9E,CACD+kC,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO8oC,GAAc,CAChCvtE,MAAO,OACP+J,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaqoC,KAEfhoC,EAAG,IAELL,yBAAa/C,mBAAO8oC,GAAc,CAChCvtE,MAAO,SACP+J,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAasoC,KAEfjoC,EAAG,IAELL,yBAAa/C,mBAAO8oC,GAAc,CAChCvtE,MAAO,QACP+J,MAAO,CAAC,KAAO,MACd,CACDg7B,QAAS2C,qBAAS,IAAM,CACtBF,yBAAauoC,KAEfloC,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,UACPL,yBAAa/C,mBAAO,SAAU,CAAE16B,MAAO,CAAC,OAAS,YACjD26B,gCAAoB,MAAOqB,GAAY,CACrCC,GACAtB,gCAAoB,MAAOuB,GAAY,EACpC5B,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAYsjB,EAAS1iD,GAChEs/B,gCAAoB,MAAO,CAChCf,MAAO,QACPrjC,IAAK8E,EACLigC,QAAUC,GAAiB4sD,EAAgB9sF,IAC1C,CACDs/B,gCAAoB,MAAO,CACzBf,MAAO,cACP55B,MAAOoxC,4BAAgB,CAAE9wC,gBAAiBjF,KACzC,KAAM,IACR,EAAG8gC,KACJ,SAGRxB,gCAAoB,MAAOyB,GAAa,CACtCC,GACA1B,gCAAoB,MAAO2B,GAAa,EACrChC,yBAAcC,gCAAoBC,cAAW,KAAMC,wBAAYsjB,EAAS1iD,GAChEs/B,gCAAoB,MAAO,CAChCf,MAAO,QACPrjC,IAAK8E,EACLigC,QAAUC,GAAiBqpC,EAAWvpE,IACrC,CACDs/B,gCAAoB,MAAO,CACzBf,MAAO,cACP55B,MAAOoxC,4BAAgB,CAAE9wC,gBAAiBjF,KACzC,KAAM,IACR,EAAGmhC,KACJ,YAIVoS,gCAAoB,IAAI,GACP,WAApB+iC,EAAU17E,OACNqkC,yBAAcC,gCAAoB,MAAOkrB,GAAa,CACrDhoB,yBAAa/C,mBAAOkpC,GAAc,CAAEhqC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBnc,MACpD,CACD4b,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaqqD,EAAqB,CAAEluD,MAAO,SAC3CiE,6BAAiB,SAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAO32B,EAAP22B,KACpD,CACDM,QAAS2C,qBAAS,IAAM,CACtBF,yBAAasqD,EAAuB,CAAEnuD,MAAO,SAC7CiE,6BAAiB,SAEnBC,EAAG,MAGPA,EAAG,IAELL,yBAAa/C,mBAAO,SAAU,CAAE16B,MAAO,CAAC,OAAS,YACjDy9B,yBAAa/C,mBAAOkpC,GAAc,CAAEhqC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBb,mBAAO1Z,EAAP0Z,CAAqBA,mBAAOp0B,GAAiBo0B,mBAAOhuB,GAAsBuU,OAC9H,CACD+Z,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa4yC,EAA2B,CAAEz2C,MAAO,SACjDiE,6BAAiB,SAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBb,mBAAO1Z,EAAP0Z,CAAqBA,mBAAOp0B,GAAiBo0B,mBAAOhuB,GAAsBwU,UAChI,CACD8Z,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa6yC,EAAgC,CAAE12C,MAAO,SACtDiE,6BAAiB,SAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBb,mBAAO1Z,EAAP0Z,CAAqBA,mBAAOp0B,GAAiBo0B,mBAAOhuB,GAAsBiQ,MAChI,CACDqe,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa8yC,EAA6B,CAAE32C,MAAO,SACnDiE,6BAAiB,SAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBb,mBAAO1Z,EAAP0Z,CAAqBA,mBAAOp0B,GAAiBo0B,mBAAOhuB,GAAsBkQ,QAChI,CACDoe,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa+yC,EAA2B,CAAE52C,MAAO,SACjDiE,6BAAiB,SAEnBC,EAAG,MAGPA,EAAG,IAELL,yBAAa/C,mBAAO,SAAU,CAAE16B,MAAO,CAAC,OAAS,YACjDy9B,yBAAa/C,mBAAOkpC,GAAc,CAAEhqC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBb,mBAAOuR,EAAPvR,CAA6BA,mBAAO/tB,GAAsBmT,QAChH,CACDkb,QAAS2C,qBAAS,IAAM,CACtBF,yBAAagzC,EAA0B,CAAE72C,MAAO,SAChDiE,6BAAiB,UAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBb,mBAAOuR,EAAPvR,CAA6BA,mBAAO/tB,GAAsB2/B,cAChH,CACDtR,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaizC,EAAgC,CAAE92C,MAAO,SACtDiE,6BAAiB,WAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBb,mBAAOuR,EAAPvR,CAA6BA,mBAAO/tB,GAAsBoT,SAChH,CACDib,QAAS2C,qBAAS,IAAM,CACtBF,yBAAakzC,EAA2B,CAAE/2C,MAAO,SACjDiE,6BAAiB,UAEnBC,EAAG,MAGPA,EAAG,IAELL,yBAAa/C,mBAAOkpC,GAAc,CAAEhqC,MAAO,OAAS,CAClDoB,QAAS2C,qBAAS,IAAM,CACtBF,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBb,mBAAOuR,EAAPvR,CAA6BA,mBAAO/tB,GAAsBsU,OAChH,CACD+Z,QAAS2C,qBAAS,IAAM,CACtBF,yBAAamzC,EAAyB,CAAEh3C,MAAO,SAC/CiE,6BAAiB,UAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBb,mBAAOuR,EAAPvR,CAA6BA,mBAAO/tB,GAAsB0/B,YAChH,CACDrR,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaozC,EAAkC,CAAEj3C,MAAO,SACxDiE,6BAAiB,WAEnBC,EAAG,IAELL,yBAAa/C,mBAAO,SAAS,CAC3B16B,MAAO,CAAC,KAAO,KACfs7B,QAASjB,EAAO,MAAQA,EAAO,IAAOkB,GAAiBb,mBAAOuR,EAAPvR,CAA6BA,mBAAO/tB,GAAsBuU,UAChH,CACD8Z,QAAS2C,qBAAS,IAAM,CACtBF,yBAAaqzC,EAA4B,CAAEl3C,MAAO,SAClDiE,6BAAiB,UAEnBC,EAAG,MAGPA,EAAG,OAGP8Q,gCAAoB,IAAI,W,UCnclC,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMjV,GAAa,CAAEC,MAAO,wBACtBC,GAAa,CAAED,MAAO,WASAI,oCAAiB,CAC3CC,OAAQ,SACRl3B,MAAO,CACPqlF,WAAY,CACV1vF,KAAMm2C,SACNN,UAAU,IAGZrU,MAAMC,GAIR,MAAM,QAAE9vB,EAAF,QAAWC,GAAY4N,eAAYhO,MACnC,KAAE0N,EAAF,KAAQI,GAASG,KAEvB,MAAO,CAACiiB,EAAUC,KAChB,MAAMg/B,EAAsBl8B,8BAAkB,YACxCm8B,EAAsBn8B,8BAAkB,YACxCkrD,EAAwBlrD,8BAAkB,cAEhD,OAAQ7C,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3DgB,gCAAoB,MAAOd,GAAY,CACrCc,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,eAAgB,CAAE,SAAY/W,mBAAOrwB,MAC7DixB,QAASjB,EAAO,KAAOA,EAAO,GAAKmX,2BAAgBjW,GAAiBb,mBAAO1iB,EAAP0iB,GAAiB,CAAC,WACrF,CACD+C,yBAAa47B,GACbx7B,6BAAiB,QAChB,GACHlD,gCAAoB,MAAO,CACzBf,MAAO6X,4BAAgB,CAAC,eAAgB,CAAE,SAAY/W,mBAAOpwB,MAC7DgxB,QAASjB,EAAO,KAAOA,EAAO,GAAKmX,2BAAgBjW,GAAiBb,mBAAO9iB,EAAP8iB,GAAiB,CAAC,WACrF,CACD+C,yBAAa67B,GACbz7B,6BAAiB,QAChB,KAELlD,gCAAoB,MAAO,CACzBf,MAAO,OACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBpB,EAAQiuD,WAAW,aACvE,CACD3qD,yBAAa4qD,GACbxqD,6BAAiB,iB,UClDvB,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMlE,GAAa,CAAEC,MAAO,iBAqBAI,oCAAiB,CAC3CC,OAAQ,QACRl3B,MAAO,CACPqlF,WAAY,CACV1vF,KAAMm2C,SACNN,UAAU,IAGZrU,MAAMC,GAIR,MAAM9zB,EAAc3F,IACd0K,EAAYzG,KACZ,WAAE/D,EAAF,aAAcG,EAAd,cAA4BF,GAAkBqX,eAAY7R,IAC1D,oBAAEzB,EAAF,cAAuB0B,GAAkB4R,eAAY9M,GAErDk9E,EAAa/3D,mBAEb0U,EAAiB1U,iBAA0B,IAE3CtwB,EAAamc,sBAAS,IAAMrb,EAAa9K,MAAMgK,aAC/C,gBAAEstD,GAAoBO,GAAwB7tD,GAE9CgF,EAAcmX,sBAAS,KAC3B,IAAKksE,EAAWryF,MAAO,OAAO,EAC9B,MAAMsyF,EAAeD,EAAWryF,MAAMge,YAChCu0E,EAAgBF,EAAWryF,MAAMke,aAEjCs0E,EAAeD,EAAgBD,EACrC,OAAIE,GAAgB5nF,EAAc5K,OAAesyF,EAAe,IAAM5zE,IAC9D6zE,EAAgB,IAAM3nF,EAAc5K,MAAQ0e,KAGtDuR,uBAAU,KACJthB,EAAoB3O,MAAMrC,QAAQwX,EAAU7E,uBAAuB,IAC9C,IAArB3F,EAAW3K,OAAaoQ,EAAY3C,iBAAiB,KAG3D,MAAM+7B,EAAiBrjB,sBAAS,KAAM,CACpC3e,MAAOkX,GAAgB1P,EAAYhP,MAAQ,KAC3CyH,OAAQiX,GAAgB9T,EAAc5K,MAAQgP,EAAYhP,MAAQ,QAG9Dob,EAAckf,iBAAkB,IAChCqjC,EAAsB,KAC1BviD,EAAYpb,MAAQ8K,EAAa9K,MAAQgM,KAAKG,MAAMH,KAAKC,UAAUnB,EAAa9K,MAAM+I,WAAa,IAErG2wD,yBAAYiE,GAEZ,MAAM,YAAEjqB,GAAgBqqB,GAAe3iD,EAAa4zB,EAAgBhgC,IAC9D,aAAEigC,GAAiBivB,GAAgB9iD,EAAa4zB,EAAgBhgC,GAEhEqkC,EAAgB,CAAC96B,EAAe5K,EAAqB2lC,GAAY,KAChE3kC,EAAoB3O,MAAMsL,SAASqC,EAAQ7E,MAC9CqM,EAAU7E,uBAAuB,CAAC3C,EAAQ7E,KAC1CqM,EAAU5E,mBAAmB5C,EAAQ7E,KAEnCwqC,GAAWI,EAAYn7B,EAAG5K,IAG1B0wD,EAAuB,KAC3BlpD,EAAU7E,uBAAuB,KAGnC,MAAO,CAAC6zB,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,CAC3D8D,yBAAairD,GAAQ,CAAEN,WAAYjuD,EAAQiuD,YAAc,KAAM,EAAG,CAAC,eACnEztD,gCAAoB,MAAO,CACzBf,MAAO,UACP8B,QAAS,aACTnL,IAAK+3D,EACL31C,aAActY,EAAO,KAAOA,EAAO,GAAMkB,GAAiB+4B,MACzD,CACD35B,gCAAoB,MAAO,CACzBf,MAAO,mBACP55B,MAAOoxC,4BAAgB1W,mBAAO+E,KAC7B,CACD9E,gCAAoB,MAAO,CACzBf,MAAO,aACP55B,MAAOoxC,4BAAgB1W,mBAAO6yB,KAC7B,KAAM,IACRjzB,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYwK,EAAehvC,MAAO,CAAC4b,EAAMzO,KACvFk3B,yBAAc0U,yBAAagmB,GAAe,CAChDz+D,IAAK6M,EACL1K,KAAMmZ,EAAKnZ,KACXivC,KAAM91B,EAAK81B,KACX/zC,OAAQie,EAAKje,OACbqR,YAAay1B,mBAAOz1B,IACnB,KAAM,EAAG,CAAC,OAAQ,OAAQ,SAAU,kBACrC,OACHq1B,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYppB,EAAYpb,MAAQ2N,IAC9E02B,yBAAcC,gCAAoBC,cAAW,CACnDjkC,IAAKqN,EAAQ7E,IACZ,CACiB,SAAjB6E,EAAQlL,MACJ4hC,yBAAc0U,yBAAa25C,GAAe,CACzCpyF,IAAK,EACLu4C,YAAalrC,EACbwtD,WAAY12B,mBAAO91B,GAAqBrD,SAASqC,EAAQ7E,IACzDkG,YAAay1B,mBAAOz1B,GACpBigC,aAAcxK,mBAAOwK,IACpB,KAAM,EAAG,CAAC,cAAe,aAAc,cAAe,kBACzD0J,gCAAoB,IAAI,IAC3B,MACD,MACJjU,gCAAoB,MAAO,CACzBf,MAAO,WACP55B,MAAOoxC,4BAAgB,CAAEoB,UAAW,SAAS9X,mBAAOz1B,SACnD,EACAq1B,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYppB,EAAYpb,MAAO,CAAC2N,EAASR,KACvFk3B,yBAAc0U,yBAAa45C,GAAuB,CACxDryF,IAAKqN,EAAQ7E,GACb+vC,YAAalrC,EACb2nD,aAAcnoD,EAAQ,EACtBkmC,cAAeA,GACd,KAAM,EAAG,CAAC,cAAe,mBAC1B,OACH,IACF,IACF,KACH7L,yBAAaorD,IACZnuD,mBAAOp0B,IACHg0B,yBAAc0U,yBAAa85C,GAAgB,CAAEvyF,IAAK,KACnDq4C,gCAAoB,IAAI,S,UC/IhC,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMjV,GAAa,CAAEC,MAAO,UAWAI,oCAAiB,CAC3CC,OAAQ,eACRl3B,MAAO,CACPqlF,WAAY,CACV1vF,KAAMm2C,SACNN,UAAU,IAGZrU,MAAMC,GAIR,MAAM9zB,EAAc3F,KACd,OAAE5B,EAAF,WAAU8B,EAAV,aAAsBG,EAAtB,cAAoCF,GAAkBqX,eAAY7R,GAElE0iF,EAAcx4D,kBAAI,GAElBy4D,EAAaz4D,iBAAI,CAAE9yB,MAAO,EAAGC,OAAQ,IAE3CwoB,uBAAU,KACiB,IAArBtlB,EAAW3K,OAAaoQ,EAAY3C,iBAAiB,GAEzDslF,EAAW/yF,MAAQ,CACjBwH,MAAOI,SAASyQ,KAAK6F,aACrBzW,OAAQG,SAASyQ,KAAK2F,eAI1B,MAAMg1E,EAAY7sE,sBAAS,KACzB,MAAM8sE,EAAcF,EAAW/yF,MAAMyH,OAASsrF,EAAW/yF,MAAMwH,MAE/D,IAAIshF,EAAa,EACbC,EAAc,EAWlB,OATIkK,GAAeroF,EAAc5K,OAC/B8oF,EAAaiK,EAAW/yF,MAAMwH,MAC9BuhF,EAAcD,EAAal+E,EAAc5K,QAGzC+oF,EAAcgK,EAAW/yF,MAAMyH,OAC/BqhF,EAAaC,EAAcn+E,EAAc5K,OAGpC,CACLwH,MAAOshF,EACPrhF,OAAQshF,KAINT,EAAYhuD,iBAAsC,MAClDiuD,EAAsBhwE,IAC1B+vE,EAAUtoF,MAAQ,CAChBq3B,EAAG9e,EAAE62B,eAAe,GAAGpF,MACvB1S,EAAG/e,EAAE62B,eAAe,GAAGlF,QAGrBs+C,EAAoBjwE,IACxB,IAAK+vE,EAAUtoF,MAAO,OAEtB,MAAM6a,EAAUvN,KAAK69B,IAAIm9C,EAAUtoF,MAAMs3B,EAAI/e,EAAE62B,eAAe,GAAGlF,OAC3DtvB,EAAUrC,EAAE62B,eAAe,GAAGpF,MAAQs+C,EAAUtoF,MAAMq3B,EAEvD/pB,KAAK69B,IAAIvwB,GAAWC,GAAWvN,KAAK69B,IAAIvwB,GAAW,KACtD0tE,EAAUtoF,MAAQ,KAEd4a,EAAU,GAAKjQ,EAAW3K,MAAQ,GAAGoQ,EAAY3C,iBAAiB9C,EAAW3K,MAAQ,GACrF4a,EAAU,GAAKjQ,EAAW3K,MAAQ6I,EAAO7I,MAAMrC,OAAS,GAAGyS,EAAY3C,iBAAiB9C,EAAW3K,MAAQ,KAInH,MAAO,CAACmkC,EAAUC,KAChB,MAAMguD,EAAwBlrD,8BAAkB,cAEhD,OAAQ7C,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,gBACP55B,MAAOoxC,4BAAgB,CACrB3zC,MAAOurF,EAAW/yF,MAAMwH,MAAQ,KAChCC,OAAQsrF,EAAW/yF,MAAMyH,OAAS,KAClC80C,UAAW,6BAA6Bw2C,EAAW/yF,MAAMyH,eAE1D,CACDi9B,gCAAoB,MAAO,CACzBf,MAAO,oBACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBwtD,EAAY9yF,OAAS8yF,EAAY9yF,OACtF08C,aAActY,EAAO,KAAOA,EAAO,GAAKkB,GAAUijD,EAAmBjjD,IACrEmoD,WAAYrpD,EAAO,KAAOA,EAAO,GAAKkB,GAAUkjD,EAAiBljD,KAChE,EACAjB,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAO57B,GAAS,CAAC8D,EAAOQ,KAClFk3B,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO6X,4BAAgB,CACvB,aACA,iBAAgB7uC,EAAMyyE,aAAe,UACrC,CACE,QAAWjyE,IAAUs3B,mBAAO95B,GAC5B,OAAUwC,EAAQs3B,mBAAO95B,GACzB,MAASwC,EAAQs3B,mBAAO95B,GACxB,MAASwC,IAAUs3B,mBAAO95B,GAAc,GAAKwC,IAAUs3B,mBAAO95B,GAAc,IAAMgC,EAAMyyE,cAAgB36C,mBAAO35B,GAAcs0E,eAG/H9+E,IAAKqM,EAAM7D,IACV,CACAwE,KAAK69B,IAAI1G,mBAAO95B,GAAcwC,GAAS,GACnCk3B,yBAAcC,gCAAoB,MAAO,CACxChkC,IAAK,EACLqjC,MAAO,gBACP55B,MAAOoxC,4BAAgB,CAC3B3zC,MAAOi9B,mBAAOuuD,GAAWxrF,MAAQ,KACjCC,OAAQg9B,mBAAOuuD,GAAWvrF,OAAS,QAE9B,CACD+/B,yBAAai2B,GAAgB,CAC3B9wD,MAAOA,EACPpF,KAAMk9B,mBAAOuuD,GAAWxrF,OACvB,KAAM,EAAG,CAAC,QAAS,UACrB,IACHmxC,gCAAoB,IAAI,IAC3B,KACD,OACH,IACFm6C,EAAY9yF,OACRqkC,yBAAcC,gCAAoBC,cAAW,CAAEjkC,IAAK,GAAK,CACxDokC,gCAAoB,MAAOhB,GAAY,CACrCgB,gCAAoB,MAAO,CACzBf,MAAO,OACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBpB,EAAQiuD,WAAW,aACvE,CACD3qD,yBAAa4qD,GACbxqD,6BAAiB,aAGrBJ,yBAAayqD,GAAkB,CAAEtuD,MAAO,gBACvC,KACHgV,gCAAoB,IAAI,IAC3B,O,UC9IL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMjV,GAAa,CAAEC,MAAO,kBACtBC,GAAa,CAAED,MAAO,QAYAI,oCAAiB,CAC3CC,OAAQ,gBACRl3B,MAAO,CACPqlF,WAAY,CACV1vF,KAAMm2C,SACNN,UAAU,IAGZrU,MAAMC,GAIR,MAAM,OAAEr7B,GAAWoZ,eAAYxX,MACzB,gBAAEu6D,GAAoBG,KAEtB+tB,EAAY54D,mBACZ64D,EAAc74D,iBAAI,GAOxB,OALArK,uBAAU,KACHijE,EAAUlzF,QACfmzF,EAAYnzF,MAAQkzF,EAAUlzF,MAAMge,eAG/B,CAACmmB,EAAUC,KAChB,MAAM+C,EAAsBD,8BAAkB,YACxCksD,EAAgClsD,8BAAkB,sBAExD,OAAQ7C,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,iBACP8B,QAAS,YACTnL,IAAK44D,GACJ,CACDxuD,gCAAoB,MAAOhB,GAAY,EACpCW,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYC,mBAAO57B,GAAS,CAAC8D,EAAOQ,KAClFk3B,yBAAcC,gCAAoB,MAAO,CAC/CX,MAAO,iBACPrjC,IAAKqM,EAAM7D,IACV,CACD0+B,yBAAai2B,GAAgB,CAC3B9wD,MAAOA,EACPpF,KAAM4rF,EAAYnzF,MAAQ,GAC1BioC,QAAS96B,EAAQs3B,mBAAOugC,IACvB,KAAM,EAAG,CAAC,QAAS,OAAQ,gBAE9B,QAENtgC,gCAAoB,MAAOd,GAAY,CACrCc,gCAAoB,MAAO,CACzBf,MAAO,YACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBpB,EAAQiuD,WAAW,YACvE,CACD3qD,yBAAaL,EAAqB,CAAExD,MAAO,SAC3CiE,6BAAiB,SAEnBJ,yBAAa/C,mBAAO,SAAU,CAC5BhiC,KAAM,WACNsH,MAAO,CAAC,OAAS,UAEnB26B,gCAAoB,MAAO,CACzBf,MAAO,YACP0B,QAASjB,EAAO,KAAOA,EAAO,GAAMkB,GAAiBpB,EAAQiuD,WAAW,YACvE,CACD3qD,yBAAa4rD,EAA+B,CAAEzvD,MAAO,SACrDiE,6BAAiB,YAGpB,S,WC7EL,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCLf,MACMlE,GAAa,CAAEC,MAAO,UAUAI,oCAAiB,CAC3CC,OAAQ,QACRC,MAAMC,GAER,MAAMhkC,EAAOo6B,iBAAU,WAEjB63D,EAAckB,GAAgBnzF,EAAKF,MAAQqzF,EAE3CC,EAAmBntE,sBAAS,KAChC,MAAMotE,EAAe,CACnB,OAAUC,GACV,OAAUC,GACV,QAAWC,IAEb,OAAOH,EAAarzF,EAAKF,QAAU,OAGrC,MAAO,CAACmkC,EAAUC,KACRC,yBAAcC,gCAAoB,MAAOZ,GAAY,EAC1DW,yBAAc0U,yBAAake,qCAAyBxyB,mBAAO6uD,IAAoB,CAAEnB,WAAYA,W,UC3BlG,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCOapuD,gCAAiB,CAC3CC,OAAQ,MACRC,MAAMC,GAER,MAAMyvD,EAAQt9E,IAERlB,EAAYzG,IACZ4S,EAAgBrN,KAChB,WAAExF,GAAewT,eAAY9M,IAC7B,UAAEY,GAAckM,eAAYnM,KAuBlC,OApBEjV,OAAO+yF,eAAiB,KAAM,EAGhC3jE,uBAAU1d,gBACFD,IACNgP,EAAcuyE,uBACd1+E,EAAU1D,sBAIZ5Q,OAAO2d,iBAAiB,SAAU,KAChC,MAAMs1E,EAAclhF,aAAaC,QAAQT,GACnC2hF,EAA4BD,EAAc9nF,KAAKG,MAAM2nF,GAAe,GAE1EC,EAAgB91F,KAAKwQ,EAAWzO,OAEhC,MAAMg0F,EAAiBhoF,KAAKC,UAAU8nF,GACtCnhF,aAAa43D,QAAQp4D,EAA+B4hF,KAG/C,CAAC7vD,EAAUC,IACRK,mBAAO1uB,IACVsuB,yBAAc0U,yBAAak7C,GAAQ,CAAE3zF,IAAK,KAC1CmkC,mBAAOkvD,IACLtvD,yBAAc0U,yBAAam7C,GAAQ,CAAE5zF,IAAK,MAC1C+jC,yBAAc0U,yBAAao7C,GAAQ,CAAE7zF,IAAK,Q,UC/CnD,MAAM,GAAc,GAEL,U,aCFb8zF,gBAAS,oBAA4C,CACnDC,QACEC,QAAQC,IACN,uGAIJC,aACEF,QAAQC,IAAI,wCAEdE,SACEH,QAAQC,IAAI,6CAEdG,cACEJ,QAAQC,IAAI,gCAEdI,UACEL,QAAQC,IAAI,8CAEdK,UACEN,QAAQC,IAAI,kEAEdj5D,MAAMA,GACJg5D,QAAQh5D,MAAM,4CAA6CA,M,i+CCwF1D,MAAMu5D,GAAQ,CACnBC,YAAaC,GAAA,KACbC,mBAAoBC,GAAA,KACpBC,SAAUC,GAAA,KACVC,WAAYC,GAAA,KACZC,QAASC,GAAA,KACTC,WAAYC,GAAA,KACZC,YAAaC,GAAA,KACbC,eAAgBC,GAAA,KAChBC,SAAUC,GAAA,KACVC,gBAAiBC,GAAA,KACjBC,eAAgBC,GAAA,KAChBC,mBAAoBC,GAAA,KACpBC,qBAAsBC,GAAA,KACtBC,aAAcC,GAAA,KACdC,SAAUC,GAAA,KACVC,aAAcC,GAAA,KACdC,eAAgBC,GAAA,KAChBC,kBAAmBC,GAAA,KACnBC,kBAAmBC,GAAA,KACnBC,SAAUC,GAAA,KACVC,UAAWC,GAAA,KACXC,oBAAqBC,GAAA,KACrBC,UAAWtqB,GAAA,KACXuqB,YAAaC,GAAA,KACbC,SAAUC,GAAA,KACVC,SAAUC,GAAA,KACVC,cAAeC,GAAA,KACfC,aAAcC,GAAA,KACdC,cAAeC,GAAA,KACfC,eAAgBC,GAAA,KAChBC,gBAAiBC,GAAA,KACjBC,oBAAqBC,GAAA,KACrBC,sBAAuBC,GAAA,KACvBC,iBAAkBC,GAAA,KAClBC,eAAgBC,GAAA,KAChBC,kBAAmBC,GAAA,KACnBC,mBAAoBC,GAAA,KACpBC,oBAAqBC,GAAA,KACrBC,cAAeC,GAAA,KACfC,UAAWC,GAAA,KACXC,gBAAiBC,GAAA,KACjBC,YAAaC,GAAA,KACbC,SAAUC,GAAA,KACVC,cAAeC,GAAA,KACfC,YAAaC,GAAA,KACbC,gBAAiBC,GAAA,KACjBC,OAAQC,GAAA,KACRC,SAAUC,GAAA,KACVC,SAAUC,GAAA,KACVC,UAAWC,GAAA,KACXC,eAAgBC,GAAA,KAChBC,oBAAqBC,GAAA,KACrBC,eAAgBC,GAAA,KAChBC,WAAYC,GAAA,KACZC,oBAAqBC,GAAA,KACrBC,mBAAoBC,GAAA,KACpBC,sBAAuBC,GAAA,KACvBC,kBAAmBC,GAAA,KACnBC,cAAeC,GAAA,KACfC,iBAAkBC,GAAA,KAClBC,cAAeC,GAAA,KACfC,aAAcC,GAAA,KACdC,SAAUC,GAAA,KACVC,WAAYC,GAAA,KACZC,YAAaC,GAAA,KACbC,aAAcC,GAAA,KACdC,WAAYC,GAAA,KACZC,UAAWC,GAAA,KACXC,eAAgBC,GAAA,KAChBC,SAAUC,GAAA,KACVC,cAAeC,GAAA,KACfC,UAAWC,GAAA,KACXC,UAAWC,GAAA,KACXC,oBAAqBC,GAAA,KACrBC,kBAAmBC,GAAA,KACnBC,WAAYC,GAAA,KACZC,UAAWC,GAAA,KACXC,UAAWC,GAAA,KACXC,gBAAiBC,GAAA,KACjBC,oBAAqBC,GAAA,KACrBC,uBAAwBC,GAAA,KACxBC,uBAAwBC,GAAA,KACxBC,UAAWC,GAAA,KACXC,eAAgBC,GAAA,KAChBC,iBAAkBC,GAAA,KAClBC,gBAAiBC,GAAA,KACjBC,aAAcC,GAAA,KACdC,YAAaC,GAAA,KACbC,YAAaC,GAAA,KACbC,kBAAmBC,GAAA,KACnBC,iBAAkBC,GAAA,KAClBC,UAAWC,GAAA,KACXC,aAAcC,GAAA,KACdC,UAAWC,GAAA,KACXC,cAAeC,GAAA,KACfC,UAAWC,GAAA,KACXC,eAAgBC,GAAA,KAChBC,gBAAiBC,GAAA,KACjBC,gCAAiCC,GAAA,KACjCC,SAAUC,GAAA,KACVC,WAAYC,GAAA,KACZC,WAAYC,GAAA,KACZC,UAAWC,GAAA,KACXC,WAAYC,GAAA,KACZC,qBAAsBC,GAAA,KACtBC,qBAAsBC,GAAA,KACtBC,gBAAiBC,GAAA,KACjBC,gBAAiBC,GAAA,KACjBC,iBAAkBC,GAAA,KAClBC,mBAAoBC,GAAA,MAGP,QACbC,QAAQC,GACN,IAAK,MAAMpiG,KAAO1C,OAAOiX,KAAKggF,IAC5B6N,EAAIC,UAAUriG,EAAKu0F,GAAMv0F,MCrO/B,MACMojC,GAAa,CAAEC,MAAO,gBACtBC,GAAa,CAAC,WACdC,GAAa,CAAEF,MAAO,QACtBG,GAAa,CACjBxjC,IAAK,EACLqjC,MAAO,YAOmBI,oCAAiB,CAC3CC,OAAQ,cACRl3B,MAAO,CACP81F,MAAO,CACLngG,KAAMc,MACN+0C,UAAU,GAEZuqD,oBAAqB,CACnBpgG,KAAMm2C,SACNN,UAAU,IAGZrU,MAAMC,GAIR,MAAO,CAACC,EAAUC,KAChB,MAAM0+D,EAA0B57D,8BAAkB,gBAAgB,GAElE,OAAQ7C,yBAAcC,gCAAoB,KAAMZ,GAAY,EACzDW,wBAAW,GAAOC,gCAAoBC,cAAW,KAAMC,wBAAYN,EAAQ0+D,MAAO,CAACG,EAAM51F,KAChFk3B,yBAAcC,gCAAoBC,cAAW,CACnDjkC,IAAKyiG,EAAKv4F,MAAQ2C,GACjB,CACC41F,EAAKhsC,KA6BHpe,gCAAoB,IAAI,IA5BvBtU,yBAAcC,gCAAoB,KAAM,CACvChkC,IAAK,EACLqjC,MAAO6X,4BAAgB,CAAC,YAAa,CAAC,QAAWunD,EAAKx1C,QAAS,QAAWw1C,EAAK3xF,WAC/Ei0B,QAASkW,2BAAgBjW,GAAiBpB,EAAQ2+D,oBAAoBE,GAAQ,CAAC,UAC9E,CACCA,EAAKx1C,QAqBH5U,gCAAoB,IAAI,IApBvBtU,yBAAcC,gCAAoB,MAAO,CACxChkC,IAAK,EACLqjC,MAAO6X,4BAAgB,CAAC,oBAAqB,CACrD,eAAgBunD,EAAK/rF,SACrB,cAAe+rF,EAAKz1C,YAEX,CACD5oB,gCAAoB,OAAQb,GAAYc,6BAAiBo+D,EAAKv4F,MAAO,GACpEu4F,EAAKjsC,UAAYisC,EAAK/rF,UAClBqtB,yBAAcC,gCAAoB,OAAQR,GAAYa,6BAAiBo+D,EAAKjsC,SAAU,IACvFne,gCAAoB,IAAI,GAC3BoqD,EAAK/rF,UAAY+rF,EAAK/rF,SAASrZ,QAC3B0mC,yBAAc0U,yBAAa+pD,EAAyB,CACnDxiG,IAAK,EACLqjC,MAAO,WACPi/D,MAAOG,EAAK/rF,SACZ6rF,oBAAqB3+D,EAAQ2+D,qBAC5B,KAAM,EAAG,CAAC,QAAS,yBACtBlqD,gCAAoB,IAAI,IAC3B,KAEN,GAAI/U,MAEV,MACD,Y,UCjER,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,YAAY,qBAExD,UCCaG,gCAAiB,CAC3CC,OAAQ,QACRl3B,MAAO,CACP4kC,KAAM,CACJjvC,KAAM7E,OACN06C,UAAU,GAEZltC,GAAI,CACF3I,KAAM7E,OACN06C,UAAU,GAEZsqD,MAAO,CACLngG,KAAMc,MACN+0C,UAAU,GAEZ0qD,kBAAmB,CACjBvgG,KAAMm2C,SACNN,UAAU,IAGZrU,MAAMC,GAER,MAAMp3B,EAAQo3B,EAIRn6B,EAAQoc,sBAAS,KACrB,MAAM88E,EAAa,IACbC,EAAc,GACdC,EAAiB,GACjBC,EAAU,GAEV,EAAE/rE,EAAF,EAAKC,GAAMxqB,EAAM4kC,KACjB2xD,EAAYv2F,EAAM81F,MAAMl6F,OAAOq6F,KAAUA,EAAKx1C,SAAWw1C,EAAKhsC,OAAOp5D,OACrE2lG,EAAex2F,EAAM81F,MAAMl6F,OAAOq6F,GAAQA,EAAKx1C,SAAS5vD,OAExD4lG,EAAYN,EACZO,EAAaH,EAAYH,EAAcI,EAAeH,EAA2B,EAAVC,EAEvEjQ,EAAcvrF,SAASyQ,KAAK2F,YAC5BylF,EAAe77F,SAASyQ,KAAK6F,aAEnC,MAAO,CACLlV,KAAMmqF,GAAe97D,EAAIksE,EAAYlsE,EAAIksE,EAAYlsE,EACrDpuB,IAAKw6F,GAAgBnsE,EAAIksE,EAAalsE,EAAIksE,EAAalsE,KAIrDurE,EAAuBl6F,IACvBA,EAAKyI,SACLzI,EAAKqO,WAAarO,EAAK2kD,UACvB3kD,EAAK2kD,SAAS3kD,EAAK2kD,QAAQxgD,EAAM1B,IACrC0B,EAAMk2F,sBAGR,MAAO,CAAC7+D,EAAUC,KACRC,yBAAcC,gCAAoBC,cAAW,KAAM,CACzDG,gCAAoB,MAAO,CACzBf,MAAO,OACPo1B,cAAe30B,EAAO,KAAOA,EAAO,GAAKmX,2BAAgBjW,GAAiBpB,EAAQ8+D,oBAAsB,CAAC,aACzG1nD,YAAalX,EAAO,KAAOA,EAAO,GAAMkB,GAAiBpB,EAAQ8+D,sBAChE,KAAM,IACTt+D,gCAAoB,MAAO,CACzBf,MAAO,cACP55B,MAAOoxC,4BAAgB,CACvBnyC,KAAMy7B,mBAAO16B,GAAOf,KAAO,KAC3BC,IAAKw7B,mBAAO16B,GAAOd,IAAM,OAEzB8vD,cAAe30B,EAAO,KAAOA,EAAO,GAAKmX,2BAAe,OAAU,CAAC,cAClE,CACD/T,yBAAak8D,GAAa,CACxBd,MAAO1+D,EAAQ0+D,MACfC,oBAAqBA,GACpB,KAAM,EAAG,CAAC,WACZ,KACF,Q,UC/EL,MAAM,GAAc,GAEL,UCJf,MAAMc,GAA0B,0BAE1BC,GAAsB,CAACx4F,EAAiB2hF,EAAmB8W,KAC/D9W,EAAMhxC,kBACNgxC,EAAMj+D,iBAEN,MAAM8zE,EAAQiB,EAAQ7jG,MAAMoL,GAC5B,IAAKw3F,EAAO,OAEZ,IAAIxqF,EAAmC,KAGvC,MAAM4qF,EAAoB,KACpB5qF,IACFxQ,SAASyQ,KAAKM,YAAYP,GAC1BA,EAAY,MAEdhN,EAAGkgE,UAAU39C,OAAO,sBACpB/lB,SAASyQ,KAAK8X,oBAAoB,SAAU6yE,GAC5CniG,OAAOsvB,oBAAoB,SAAU6yE,IAIjCngF,EAAU,CACd6uB,KAAM,CAAEra,EAAG01D,EAAM11D,EAAGC,EAAGy1D,EAAMz1D,GAC7BlsB,KACAw3F,QACAI,qBAEF5qF,EAAYxQ,SAASC,cAAc,OACnC,MAAMi8F,EAAKC,yBAAYC,GAAsBnhF,EAAS,MACtDk3C,oBAAO+pC,EAAI1rF,GACXxQ,SAASyQ,KAAKI,YAAYL,GAG1BhN,EAAGkgE,UAAU52D,IAAI,sBAGjB9M,SAASyQ,KAAKmG,iBAAiB,SAAUwkF,GACzCniG,OAAO2d,iBAAiB,SAAUwkF,IAG9BiB,GAAkC,CACtCC,QAAQ94F,EAAiBy4F,GACvBz4F,EAAGu4F,IAA4B5W,GAAsB6W,GAAoBx4F,EAAI2hF,EAAO8W,GACpFz4F,EAAGoT,iBAAiB,cAAepT,EAAGu4F,MAGxCQ,UAAU/4F,GACJA,GAAMA,EAAGu4F,MACXv4F,EAAG+kB,oBAAoB,cAAe/kB,EAAGu4F,YAClCv4F,EAAGu4F,OAKDM,UCzDf,MAAMG,GAA4B,4BAE5BC,GAAgB,CAACj5F,EAAiB2hF,EAAmB8W,KACzD,MAAMv2C,EAAUu2C,EAAQ7jG,MAElBmJ,EAAO4jF,EAAMuX,eACbC,EAAiBp7F,EAAOA,EAAK1F,QAAQ2H,GAAM,GAAKA,EAAGmgE,SAASwhB,EAAMpnE,QAEnE4+E,GACLj3C,EAAQy/B,IAGJyX,GAAmC,CACvCN,QAAQ94F,EAAiBy4F,GACvBz4F,EAAGg5F,IAA8BrX,GAAsBsX,GAAcj5F,EAAI2hF,EAAO8W,GAChFzhF,WAAW,KACTxa,SAAS4W,iBAAiB,QAASpT,EAAGg5F,MACrC,IAGLD,UAAU/4F,GACJA,EAAGg5F,MACLx8F,SAASuoB,oBAAoB,QAAS/kB,EAAGg5F,YAClCh5F,EAAGg5F,OAKDI,UCzBA,IACb/B,QAAQC,GACNA,EAAI+B,UAAU,cAAeC,IAC7BhC,EAAI+B,UAAU,gBAAiBE,MCSnC,MAAMjC,GAAMkC,uBAAUC,IAEtBnC,GAAIoC,IAAIC,IACRrC,GAAIoC,IAAIE,IAERtC,GAAIoC,IAAIG,kBACRvC,GAAIwC,MAAM,S,yDCvBV,W,kCCAA,W,mCCAA,W,8HCAA,W,8HCAA,W,kCCAA,W,mCCAA,W,kCCAA,W,yDCAA,W,kCCAA,W,kCCAA,W,kCCAA,W,kCCAA,W,kCCAA,W,8HCAA,W,kCCAA,W,kCCAA,W,kCCAA,W,uGCAA,W,kCCAA,W,yDCAA,W,yDCAA,W,uGCAA,W,kCCAA,W,gFCAA,W,kCCAA,W","file":"js/app.000ee1e5.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!./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!./LatexStylePanel.vue?vue&type=style&index=0&id=79d8ab96&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=90ac59d8&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=8a7bb5f0&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=93e8361c&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./MoveablePanel.vue?vue&type=style&index=0&id=68252e2c&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=de815ffa&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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!./ChartDataEditor.vue?vue&type=style&index=0&id=1eab5a3a&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./ElementFilter.vue?vue&type=style&index=0&id=a99ef6ee&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./SlideToolbar.vue?vue&type=style&index=0&id=1e17bcc7&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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!./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!./ElementAnimationPanel.vue?vue&type=style&index=0&id=7a134147&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=76d3203e&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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!./WritingBoardTool.vue?vue&type=style&index=0&id=52a2a3a6&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=40c1ae3a&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./TextColorButton.vue?vue&type=style&index=0&id=c90c8a28&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/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=adfce55e&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!./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!./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!./BaseImageElement.vue?vue&type=style&index=0&id=c874e65e&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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!./ElementShadow.vue?vue&type=style&index=0&id=19c233fc&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=18d84242&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/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!./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!./ViewportBackground.vue?vue&type=style&index=0&id=61c4db4a&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./Header.vue?vue&type=style&index=0&id=8639f30e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=1f8d633e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ShapeElementOperate.vue?vue&type=style&index=0&id=fd38df18&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/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=cdb026e2&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=26f9c48a&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=a2ef535c&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./index.vue?vue&type=style&index=0&id=3f5170e8&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=1f8d633e&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!./ElementPositionPanel.vue?vue&type=style&index=0&id=08d61819&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ElementColorMask.vue?vue&type=style&index=0&id=7e9086fc&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ShapeItemThumbnail.vue?vue&type=style&index=0&id=09653543&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=f770d810&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=92a8f63e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./AudioStylePanel.vue?vue&type=style&index=0&id=1da06c97&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./LinkDialog.vue?vue&type=style&index=0&id=469f9b66&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=527855fb&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=c4273212&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./ShapePool.vue?vue&type=style&index=0&id=711a4fb1&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=0cc0995e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./App.vue?vue&type=style&index=0&id=685e8c72&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=17dcff2c&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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!./ExportPPTX.vue?vue&type=style&index=0&id=018847a8&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=0ca152b4&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./MultiPositionPanel.vue?vue&type=style&index=0&id=c88d31ba&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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!./ElementFlip.vue?vue&type=style&index=0&id=1b5a047e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./index.vue?vue&type=style&index=0&id=ed562e98&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./CountdownTimer.vue?vue&type=style&index=0&id=5a82de11&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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!./ElementToolbar.vue?vue&type=style&index=0&id=2633262b&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=49642f50&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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!./StaticTable.vue?vue&type=style&index=0&id=40e73d4e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=486128e0&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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!./ShapeStylePanel.vue?vue&type=style&index=0&id=43498c62&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./TableGenerator.vue?vue&type=style&index=0&id=8fd9f34c&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=76222f8e&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/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=3e9669a9&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=9be58c0a&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=963e3dfc&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=3d280c42&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./MobileThumbnails.vue?vue&type=style&index=0&id=e594aa30&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=097b396c&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=12300fd5&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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 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 { 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: readonly Mark[], markType: string, attr: string): string | null => {\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: readonly 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\ntype Align = 'left' | 'right' | 'center'\n\ninterface DefaultAttrs {\n color: string\n backcolor: string\n fontsize: string\n fontname: string\n align: Align\n}\nconst _defaultAttrs: DefaultAttrs = {\n color: '#000',\n backcolor: '',\n fontsize: '20px',\n fontname: '微软雅黑',\n align: 'left',\n}\nexport const getTextAttrs = (view: EditorView, attrs: Partial = {}) => {\n const defaultAttrs: DefaultAttrs = { ..._defaultAttrs, ...attrs }\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) as 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: '',\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, TextFormatPainter } 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 hiddenElementIdList: string[]\n canvasPercentage: number\n canvasScale: number\n canvasDragged: boolean\n thumbnailsFocus: boolean\n editorAreaFocus: boolean\n disableHotkeys: boolean\n gridLineSize: number\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 textFormatPainter: TextFormatPainter | null\n showSelectPanel: boolean\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 hiddenElementIdList: [], // 被隐藏的元素ID集合\n canvasPercentage: 90, // 画布可视区域百分比\n canvasScale: 1, // 画布缩放比例(基于宽度1000px)\n canvasDragged: false, // 画布被拖拽移动\n thumbnailsFocus: false, // 左侧导航缩略图区域聚焦\n editorAreaFocus: false, // 编辑区域聚焦\n disableHotkeys: false, // 禁用快捷键\n gridLineSize: 0, // 网格线尺寸(0表示不显示网格线)\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 textFormatPainter: null, // 文字格式刷\n showSelectPanel: false, // 打开选择面板\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 setHiddenElementIdList(hiddenElementIdList: string[]) {\n this.hiddenElementIdList = hiddenElementIdList\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 setGridLineSize(size: number) {\n this.gridLineSize = size\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 setTextFormatPainter(textFormatPainter: TextFormatPainter | null) {\n this.textFormatPainter = textFormatPainter\n },\n\n setSelectPanelState(show: boolean) {\n this.showSelectPanel = show\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 writingBoardImg {\n id: string\n dataURL: string\n}\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 public writingBoardImgs: Dexie.Table\n\n public constructor() {\n super(`${databaseNamePrefix}_${databaseId}_${new Date().getTime()}`)\n this.version(1).stores({\n snapshots: '++id',\n writingBoardImgs: '++id',\n })\n this.snapshots = this.table('snapshots')\n this.writingBoardImgs = this.table('writingBoardImgs')\n }\n}\n\nexport const db = new PPTistDB()","import { defineStore } from 'pinia'\nimport { IndexableTypeArray } from 'dexie'\nimport { db, Snapshot } from '@/utils/database'\n\nimport { useSlidesStore } from './slides'\nimport { useMainStore } from './main'\n\nexport interface ScreenState {\n snapshotCursor: number\n snapshotLength: number\n}\n\nexport const useSnapshotStore = defineStore('snapshot', {\n state: (): ScreenState => ({\n snapshotCursor: -1, // 历史快照指针\n snapshotLength: 0, // 历史快照长度\n }),\n\n getters: {\n canUndo(state) {\n return state.snapshotCursor > 0\n },\n canRedo(state) {\n return state.snapshotCursor < state.snapshotLength - 1\n },\n },\n\n actions: {\n setSnapshotCursor(cursor: number) {\n this.snapshotCursor = cursor\n },\n setSnapshotLength(length: number) {\n this.snapshotLength = length\n },\n\n async initSnapshotDatabase() {\n const slidesStore = useSlidesStore()\n \n const 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 { 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 vertical?: boolean\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\r\n\r\nexport interface TextFormatPainter {\r\n bold?: boolean\r\n em?: boolean\r\n underline?: boolean\r\n strikethrough?: boolean\r\n color?: string\r\n backcolor?: string\r\n fontsize?: string\r\n fontname?: string\r\n align?: 'left' | 'right' | 'center'\r\n}","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 ],\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 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, Slide } 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 * @param slides 页面列表\r\n */\r\nexport const createSlideIdMap = (slides: Slide[]) => {\r\n const slideIdMap = {}\r\n for (const slide of slides) {\r\n slideIdMap[slide.id] = nanoid(10)\r\n }\r\n return slideIdMap\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 { BarChartOptions, LineChartOptions, PieChartOptions } 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 CUT_ROUND_RECT = 'cutRoundRect',\n MESSAGE = 'message',\n ROUND_MESSAGE = 'roundMessage',\n L = 'L',\n RING_RECT = 'ringRect',\n PLUS = 'plus',\n TRIANGLE = 'triangle',\n PARALLELOGRAM_LEFT = 'parallelogramLeft',\n PARALLELOGRAM_RIGHT = 'parallelogramRight',\n TRAPEZOID = 'trapezoid',\n BULLET = 'bullet',\n INDICATOR = 'indicator',\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 * \n * name?: 元素名\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 name?: string\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 * \n * vertical?: 竖向文本\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 vertical?: boolean\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 * color: 蒙版颜色\n * \n * opacity: 蒙版透明度\n */\nexport interface ImageColorElementMask {\n color: string\n opacity: number\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 colorMask?: ImageColorElementMask\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 * \n * keypoint?: 关键点位置百分比\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 keypoint?: number\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 * cubic?: 三次曲线控制点位置([[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 = LineChartOptions & BarChartOptions & PieChartOptions\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 * cellMinHeight: 单元格最小高度\n * \n * data: 表格数据\n */\nexport interface PPTTableElement extends PPTBaseElement {\n type: 'table'\n outline: PPTElementOutline\n theme?: TableTheme\n colWidths: number[]\n cellMinHeight: 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}\n","// 非专业设计人士可以用该应用绘制基本形状:https://github.com/pipipi-pikachu/svgPathCreator\n\nimport { 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]: {\n editable: true,\n defaultValue: 0.125,\n range: [0, 0.5],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\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 },\n [ShapePathFormulasKeys.CUT_RECT_DIAGONAL]: {\n editable: true,\n defaultValue: 0.2,\n range: [0, 0.9],\n relative: 'right',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\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 },\n [ShapePathFormulasKeys.CUT_RECT_SINGLE]: {\n editable: true,\n defaultValue: 0.2,\n range: [0, 0.9],\n relative: 'right',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\n return `M 0 ${height} L 0 0 L ${width - radius} 0 L ${width} ${radius} L ${width} ${height} Z`\n }\n },\n [ShapePathFormulasKeys.CUT_RECT_SAMESIDE]: {\n editable: true,\n defaultValue: 0.2,\n range: [0, 0.5],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\n return `M 0 ${radius} L ${radius} 0 L ${width - radius} 0 L ${width} ${radius} L ${width} ${height} L 0 ${height} Z`\n }\n },\n [ShapePathFormulasKeys.ROUND_RECT_DIAGONAL]: {\n editable: true,\n defaultValue: 0.125,\n range: [0, 1],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\n return `M ${radius} 0 L ${width} 0 L ${width} ${height - radius} Q ${width} ${height} ${width - radius} ${height} L 0 ${height} L 0 ${radius} Q 0 0 ${radius} 0 Z`\n }\n },\n [ShapePathFormulasKeys.ROUND_RECT_SINGLE]: {\n editable: true,\n defaultValue: 0.125,\n range: [0, 1],\n relative: 'right',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\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 },\n [ShapePathFormulasKeys.ROUND_RECT_SAMESIDE]: {\n editable: true,\n defaultValue: 0.125,\n range: [0, 0.5],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\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 },\n [ShapePathFormulasKeys.CUT_ROUND_RECT]: {\n editable: true,\n defaultValue: 0.125,\n range: [0, 0.5],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\n return `M ${radius} 0 L ${width - radius} 0 L ${width} ${radius} L ${width} ${height} L 0 ${height} L 0 ${radius} Q 0 0 ${radius} 0 Z`\n }\n },\n [ShapePathFormulasKeys.MESSAGE]: {\n formula: (width: number, height: number) => {\n const arrowWidth = width * 0.2\n const arrowheight = height * 0.2\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 },\n [ShapePathFormulasKeys.ROUND_MESSAGE]: {\n formula: (width: number, height: number) => {\n const radius = Math.min(width, height) * 0.125\n const arrowWidth = width * 0.2\n const arrowheight = height * 0.2\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 },\n [ShapePathFormulasKeys.L]: {\n editable: true,\n defaultValue: 0.25,\n range: [0.1, 0.9],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const lineWidth = Math.min(width, height) * value\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 },\n [ShapePathFormulasKeys.RING_RECT]: {\n editable: true,\n defaultValue: 0.25,\n range: [0.1, 0.45],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const lineWidth = Math.min(width, height) * value\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 },\n [ShapePathFormulasKeys.PLUS]: {\n editable: true,\n defaultValue: 0.25,\n range: [0.1, 0.9],\n relative: 'center',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const lineWidth = Math.min(width, height) * value\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 [ShapePathFormulasKeys.TRIANGLE]: {\n editable: true,\n defaultValue: 0.5,\n range: [0, 1],\n relative: 'left',\n getBaseSize: (width: number, height: number) => width,\n formula: (width: number, height: number, value: number) => {\n const vertex = width * value\n return `M ${vertex} 0 L 0 ${height} L ${width} ${height} Z`\n }\n },\n [ShapePathFormulasKeys.PARALLELOGRAM_LEFT]: {\n editable: true,\n defaultValue: 0.25,\n range: [0, 0.9],\n relative: 'left',\n getBaseSize: (width: number, height: number) => width,\n formula: (width: number, height: number, value: number) => {\n const point = width * value\n return `M ${point} 0 L ${width} 0 L ${width - point} ${height} L 0 ${height} Z`\n }\n },\n [ShapePathFormulasKeys.PARALLELOGRAM_RIGHT]: {\n editable: true,\n defaultValue: 0.25,\n range: [0, 0.9],\n relative: 'right',\n getBaseSize: (width: number, height: number) => width,\n formula: (width: number, height: number, value: number) => {\n const point = width * value\n return `M 0 0 L ${width - point} 0 L ${width} ${height} L ${point} ${height} Z`\n }\n },\n [ShapePathFormulasKeys.TRAPEZOID]: {\n editable: true,\n defaultValue: 0.25,\n range: [0, 0.5],\n relative: 'left',\n getBaseSize: (width: number, height: number) => width,\n formula: (width: number, height: number, value: number) => {\n const point = width * value\n return `M ${point} 0 L ${width - point} 0 L ${width} ${height} L 0 ${height} Z`\n }\n },\n [ShapePathFormulasKeys.BULLET]: {\n editable: true,\n defaultValue: 0.2,\n range: [0, 1],\n relative: 'top',\n getBaseSize: (width: number, height: number) => height,\n formula: (width: number, height: number, value: number) => {\n const point = height * value\n return `M ${width / 2} 0 L 0 ${point} L 0 ${height} L ${width} ${height} L ${width} ${point} Z`\n }\n },\n [ShapePathFormulasKeys.INDICATOR]: {\n editable: true,\n defaultValue: 0.2,\n range: [0, 0.9],\n relative: 'right',\n getBaseSize: (width: number, height: number) => width,\n formula: (width: number, height: number, value: number) => {\n const point = width * value\n return `M ${width} ${height / 2} L ${width - point} 0 L 0 0 L ${point} ${height / 2} L 0 ${height} L ${width - point} ${height} Z`\n }\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 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 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 50 0 L 150 0 L 200 50 L 200 200 L 0 200 L 0 50 Q 0 0 50 0 Z',\n pathFormula: ShapePathFormulasKeys.CUT_ROUND_RECT,\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 viewBox: [200, 200],\n path: 'M 50 0 L 200 0 L 200 150 Q 200 200 150 200 L 0 200 L 0 50 Q 0 0 50 0 Z',\n pathFormula: ShapePathFormulasKeys.ROUND_RECT_DIAGONAL,\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 100 0 L 0 200 L 200 200 L 100 0 Z',\n pathFormula: ShapePathFormulasKeys.TRIANGLE,\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 70 20 L 0 160 Q 0 200 40 200 L 160 200 Q 200 200 200 160 L 130 20 Q 100 -20 70 20 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 pathFormula: ShapePathFormulasKeys.PARALLELOGRAM_LEFT,\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 pathFormula: ShapePathFormulasKeys.PARALLELOGRAM_RIGHT,\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 pathFormula: ShapePathFormulasKeys.TRAPEZOID,\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 50 L 0 200 L 200 200 L 200 50 L 100 0 Z',\n pathFormula: ShapePathFormulasKeys.BULLET,\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 pathFormula: ShapePathFormulasKeys.INDICATOR,\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 C 80 20 120 20 200 0 C 180 80 180 120 200 200 C 80 180 120 180 0 200 C 20 120 20 80 0 0 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 10 10 C 60 0 140 0 190 10 C 200 60 200 140 190 190 C 140 200 60 200 10 190 C 0 140 0 60 10 10 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 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 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 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 120 80 L 200 100 L 120 120 L 100 200 L 80 120 L 0 100 L 80 80 L 100 0 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 140 60 L 200 60 L 160 100 L 200 140 L 140 140 L 100 200 L 60 140 L 0 140 L 40 100 L 0 60 L 60 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 viewBox: [200, 200],\n path: 'M 200 0 C 80 40 80 160 200 200 C -60 200 -60 0 200 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 cellMinHeight: 36,\n })\n }\n \n /**\n * 创建文本元素\n * @param position 位置大小信息\n * @param content 文本内容\n */\n \n interface CreateTextData {\n content?: string\n vertical?: boolean\n }\n const createTextElement = (position: CommonElementPosition, data?: CreateTextData) => {\n const { left, top, width, height } = position\n const content = data?.content || ''\n const vertical = data?.vertical || false\n\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 vertical,\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\n const pathFormula = SHAPE_PATH_FORMULAS[data.pathFormula]\n if ('editable' in pathFormula) {\n newElement.path = pathFormula.formula(width, height, pathFormula.defaultValue)\n newElement.keypoint = pathFormula.defaultValue\n }\n else newElement.path = pathFormula.formula(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 { createSlideIdMap, 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 slideIdMap = createSlideIdMap(slides)\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\t\t\n // 若元素绑定了页面跳转链接\n if (element.link && element.link.type === 'slide') {\n\n // 待添加页面中包含该页面,则替换相关绑定关系\n if (slideIdMap[element.link.target]) {\n element.link.target = slideIdMap[element.link.target]\n }\n // 待添加页面中不包含该页面,则删除该元素绑定的页面跳转\n else delete element.link\n }\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: slideIdMap[slide.id],\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 }, { content: 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 // 拖拽调整幻灯片顺序同步数据\n const sortSlides = (newIndex: number, oldIndex: number) => {\n if (oldIndex === newIndex) return\n \n const _slides = JSON.parse(JSON.stringify(slides.value))\n const _slide = _slides[oldIndex]\n _slides.splice(oldIndex, 1)\n _slides.splice(newIndex, 0, _slide)\n slidesStore.setSlides(_slides)\n slidesStore.updateSlideIndex(newIndex)\n }\n\n return {\n resetSlides,\n updateSlideIndex,\n copySlide,\n pasteSlide,\n createSlide,\n createSlideByTemplate,\n copyAndPasteSlide,\n deleteSlide,\n cutSlide,\n selectAllSlide,\n sortSlides,\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 const { hiddenElementIdList } = storeToRefs(mainStore)\r\n\r\n // 将当前页面全部元素设置为被选择状态\r\n const selectAllElement = () => {\r\n const unlockedElements = currentSlide.value.elements.filter(el => !el.lock && !hiddenElementIdList.value.includes(el.id))\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}","import { AST, ElementAST, ElementAttribute } from './types'\nimport { voidTags } from './tags'\n\nexport const formatAttributes = (attributes: ElementAttribute[]) => {\n return attributes.reduce((attrs, attribute) => {\n const { key, value } = attribute\n if (value === null) return `${attrs} ${key}`\n if (key === 'style' && !value) return ''\n\n const quoteEscape = value.indexOf('\\'') !== -1\n const quote = quoteEscape ? '\"' : '\\''\n return `${attrs} ${key}=${quote}${value}${quote}`\n }, '')\n}\n\nexport const toHTML = (tree: AST[]) => {\n const htmlStrings: string[] = tree.map(node => {\n if (node.type === 'text') return node.content\n if (node.type === 'comment') return ``\n\n const { tagName, attributes, children } = node as ElementAST\n const isSelfClosing = voidTags.includes(tagName.toLowerCase())\n\n if (isSelfClosing) return `<${tagName}${formatAttributes(attributes)}>`\n return `<${tagName}${formatAttributes(attributes)}>${toHTML(children)}`\n })\n return htmlStrings.join('')\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\nconst INCH_PX_RATIO = 100\nconst PT_PX_RATIO = 0.75\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']) * PT_PX_RATIO\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 * PT_PX_RATIO }\n options.paraSpaceBefore = 0.1\n bulletFlag = false\n }\n if (bulletFlag && styleObj['list-type'] === 'ul') {\n options.bullet = { indent: 20 * PT_PX_RATIO }\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 / INCH_PX_RATIO * scale.x,\n y: point.y / INCH_PX_RATIO * scale.y,\n moveTo: true,\n }\n }\n else if (point.curve) {\n if (point.curve.type === 'cubic') {\n return {\n x: point.x / INCH_PX_RATIO * scale.x,\n y: point.y / INCH_PX_RATIO * scale.y,\n curve: {\n type: 'cubic',\n x1: (point.curve.x1 as number) / INCH_PX_RATIO * scale.x,\n y1: (point.curve.y1 as number) / INCH_PX_RATIO * scale.y,\n x2: (point.curve.x2 as number) / INCH_PX_RATIO * scale.x,\n y2: (point.curve.y2 as number) / INCH_PX_RATIO * scale.y,\n },\n }\n }\n else if (point.curve.type === 'quadratic') {\n return {\n x: point.x / INCH_PX_RATIO * scale.x,\n y: point.y / INCH_PX_RATIO * scale.y,\n curve: {\n type: 'quadratic',\n x1: (point.curve.x1 as number) / INCH_PX_RATIO * scale.x,\n y1: (point.curve.y1 as number) / INCH_PX_RATIO * scale.y,\n },\n }\n }\n }\n return {\n x: point.x / INCH_PX_RATIO * scale.x,\n y: point.y / INCH_PX_RATIO * 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 * PT_PX_RATIO,\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) * PT_PX_RATIO, \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 if (viewportRatio.value === 0.70710678) {\n pptx.defineLayout({ name: 'A3', width: 10, height: 7.0710678 })\n pptx.layout = 'A3'\n }\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 / INCH_PX_RATIO,\n y: el.top / INCH_PX_RATIO,\n w: el.width / INCH_PX_RATIO,\n h: el.height / INCH_PX_RATIO,\n fontSize: 20 * PT_PX_RATIO,\n fontFace: '微软雅黑',\n color: '#000000',\n valign: 'top',\n margin: 10 * PT_PX_RATIO,\n paraSpaceBefore: 5 * PT_PX_RATIO,\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 * PT_PX_RATIO\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 * PT_PX_RATIO\n if (el.vertical) options.vert = 'eaVert'\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 / INCH_PX_RATIO,\n y: el.top / INCH_PX_RATIO,\n w: el.width / INCH_PX_RATIO,\n h: el.height / INCH_PX_RATIO,\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) / INCH_PX_RATIO)\n const originH = el.height / ((endY - startY) / INCH_PX_RATIO)\n\n options.w = originW / INCH_PX_RATIO\n options.h = originH / INCH_PX_RATIO\n\n options.sizing = {\n type: 'crop',\n x: startX / INCH_PX_RATIO * originW / INCH_PX_RATIO,\n y: startY / INCH_PX_RATIO * originH / INCH_PX_RATIO,\n w: (endX - startX) / INCH_PX_RATIO * originW / INCH_PX_RATIO,\n h: (endY - startY) / INCH_PX_RATIO * originH / INCH_PX_RATIO,\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 / INCH_PX_RATIO,\n y: el.top / INCH_PX_RATIO,\n w: el.width / INCH_PX_RATIO,\n h: el.height / INCH_PX_RATIO,\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 / INCH_PX_RATIO,\n y: el.top / INCH_PX_RATIO,\n w: el.width / INCH_PX_RATIO,\n h: el.height / INCH_PX_RATIO,\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 / INCH_PX_RATIO,\n y: el.top / INCH_PX_RATIO,\n w: el.width / INCH_PX_RATIO,\n h: el.height / INCH_PX_RATIO,\n fontSize: 20 * PT_PX_RATIO,\n fontFace: '微软雅黑',\n color: '#000000',\n paraSpaceBefore: 5 * PT_PX_RATIO,\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 / INCH_PX_RATIO,\n y: el.top / INCH_PX_RATIO,\n w: (maxX - minX) / INCH_PX_RATIO,\n h: (maxY - minY) / INCH_PX_RATIO,\n line: {\n color: c.color, \n transparency: (1 - c.alpha) * 100,\n width: el.width * PT_PX_RATIO, \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 / INCH_PX_RATIO,\n y: el.top / INCH_PX_RATIO,\n w: el.width / INCH_PX_RATIO,\n h: el.height / INCH_PX_RATIO,\n chartColors: el.chartType === 'pie' ? chartColors : chartColors.slice(0, el.data.series.length),\n }\n\n if (el.fill) options.plotArea = { fill: { color: 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 * PT_PX_RATIO\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) * PT_PX_RATIO,\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 / INCH_PX_RATIO,\n y: el.top / INCH_PX_RATIO,\n w: el.width / INCH_PX_RATIO,\n h: el.height / INCH_PX_RATIO,\n colW: el.colWidths.map(item => el.width * item / INCH_PX_RATIO),\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 * PT_PX_RATIO,\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 / INCH_PX_RATIO,\n y: el.top / INCH_PX_RATIO,\n w: el.width / INCH_PX_RATIO,\n h: el.height / INCH_PX_RATIO,\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\n setTimeout(() => {\n pptx.writeFile({ fileName: `pptist.pptx` }).then(() => exporting.value = false).catch(() => {\n exporting.value = false\n message.error('导出失败')\n })\n }, 200)\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 { 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-cdb026e2\"),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\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=cdb026e2&lang=scss&scoped=true\"\n\nimport exportComponent 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-cdb026e2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, unref as _unref, withCtx as _withCtx, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-76222f8e\"),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__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"text\" }, \"文件\", -1))\nconst _hoisted_5 = { class: \"menu-item\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"text\" }, \"编辑\", -1))\nconst _hoisted_7 = { class: \"menu-item\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"text\" }, \"演示\", -1))\nconst _hoisted_9 = { class: \"menu-item\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"text\" }, \"帮助\", -1))\nconst _hoisted_11 = { class: \"right\" }\nconst _hoisted_12 = {\n href: \"https://github.com/pipipi-pikachu/PPTist\",\n target: \"_blank\"\n}\nconst _hoisted_13 = { 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'\nimport FileInput from '@/components/FileInput.vue'\nimport {\n Tooltip,\n Dropdown,\n Menu,\n Drawer,\n} from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst MenuItem = Menu.Item\n\nconst mainStore = useMainStore()\nconst { gridLineSize, showRuler, showSelectPanel } = 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.setGridLineSize(gridLineSize.value ? 0 : 50)\n}\n\nconst toggleRuler = () => {\n mainStore.setRulerState(!showRuler.value)\n}\n\nconst openSelectPanel = () => {\n if (!showSelectPanel.value) mainStore.setSelectPanelState(true)\n else mainStore.setSelectPanelState(false)\n}\n\nconst hotkeyDrawerVisible = ref(false)\n\nconst goLink = (url: string) => window.open(url)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconFolderClose = _resolveComponent(\"IconFolderClose\")!\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_IconGithub = _resolveComponent(\"IconGithub\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_unref(Dropdown), { trigger: ['click'] }, {\n overlay: _withCtx(() => [\n _createVNode(_unref(Menu), null, {\n default: _withCtx(() => [\n _createVNode(FileInput, {\n accept: \".pptist\",\n onChange: _cache[0] || (_cache[0] = files => _unref(importSpecificFile)(files))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(MenuItem), null, {\n default: _withCtx(() => [\n _createTextVNode(\"导入 pptist 文件\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_unref(MenuItem), {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_unref(setDialogForExport)('pptx')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"导出文件\")\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_IconFolderClose),\n _createTextVNode(),\n _hoisted_4\n ])\n ]),\n _: 1\n }),\n _createVNode(_unref(Dropdown), { trigger: ['click'] }, {\n overlay: _withCtx(() => [\n _createVNode(_unref(Menu), null, {\n default: _withCtx(() => [\n _createVNode(_unref(MenuItem), {\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_unref(undo)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"撤销\")\n ]),\n _: 1\n }),\n _createVNode(_unref(MenuItem), {\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_unref(redo)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"重做\")\n ]),\n _: 1\n }),\n _createVNode(_unref(MenuItem), {\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_unref(createSlide)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"添加页面\")\n ]),\n _: 1\n }),\n _createVNode(_unref(MenuItem), {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_unref(deleteSlide)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"删除页面\")\n ]),\n _: 1\n }),\n _createVNode(_unref(MenuItem), {\n onClick: _cache[6] || (_cache[6] = ($event: any) => (toggleGridLines()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(gridLineSize) ? '关闭网格线' : '打开网格线'), 1)\n ]),\n _: 1\n }),\n _createVNode(_unref(MenuItem), {\n onClick: _cache[7] || (_cache[7] = ($event: any) => (toggleRuler()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(showRuler) ? '关闭标尺' : '打开标尺'), 1)\n ]),\n _: 1\n }),\n _createVNode(_unref(MenuItem), {\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_unref(resetSlides)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"重置幻灯片\")\n ]),\n _: 1\n }),\n _createVNode(_unref(MenuItem), {\n onClick: _cache[9] || (_cache[9] = ($event: any) => (openSelectPanel()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(showSelectPanel) ? '关闭选择面板' : '打开选择面板'), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_component_IconEdit),\n _createTextVNode(),\n _hoisted_6\n ])\n ]),\n _: 1\n }),\n _createVNode(_unref(Dropdown), { trigger: ['click'] }, {\n overlay: _withCtx(() => [\n _createVNode(_unref(Menu), null, {\n default: _withCtx(() => [\n _createVNode(_unref(MenuItem), {\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_unref(enterScreeningFromStart)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"从头开始\")\n ]),\n _: 1\n }),\n _createVNode(_unref(MenuItem), {\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_unref(enterScreening)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"从当前页开始\")\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(_component_IconPpt),\n _createTextVNode(),\n _hoisted_8\n ])\n ]),\n _: 1\n }),\n _createVNode(_unref(Dropdown), { trigger: ['click'] }, {\n overlay: _withCtx(() => [\n _createVNode(_unref(Menu), null, {\n default: _withCtx(() => [\n _createVNode(_unref(MenuItem), {\n onClick: _cache[12] || (_cache[12] = ($event: any) => (goLink('https://github.com/pipipi-pikachu/PPTist/issues')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"意见反馈\")\n ]),\n _: 1\n }),\n _createVNode(_unref(MenuItem), {\n onClick: _cache[13] || (_cache[13] = ($event: any) => (goLink('https://github.com/pipipi-pikachu/PPTist/blob/master/doc/Q&A.md')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"常见问题\")\n ]),\n _: 1\n }),\n _createVNode(_unref(MenuItem), {\n onClick: _cache[14] || (_cache[14] = ($event: any) => (hotkeyDrawerVisible.value = true))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"快捷键\")\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_9, [\n _createVNode(_component_IconHelpcenter),\n _createTextVNode(),\n _hoisted_10\n ])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n title: \"导出\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"menu-item\",\n onClick: _cache[15] || (_cache[15] = ($event: any) => (_unref(setDialogForExport)('pptx')))\n }, [\n _createVNode(_component_IconShare, {\n size: \"18\",\n fill: \"#666\"\n })\n ])\n ]),\n _: 1\n }),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n title: \"幻灯片放映\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"menu-item\",\n onClick: _cache[16] || (_cache[16] = ($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_12, [\n _createElementVNode(\"div\", _hoisted_13, [\n _createVNode(_component_IconGithub, {\n size: \"18\",\n fill: \"#666\"\n })\n ])\n ])\n ]),\n _createVNode(_unref(Drawer), {\n width: \"320\",\n placement: \"right\",\n closable: false,\n visible: hotkeyDrawerVisible.value,\n onClose: _cache[17] || (_cache[17] = ($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=76222f8e&lang=scss&scoped=true\"\n\nimport exportComponent 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-76222f8e\"]])\n\nexport default __exports__","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 initViewportPosition = () => {\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 const setViewportPosition = (newValue: number, oldValue: number) => {\n if (!canvasRef.value) return\n const canvasWidth = canvasRef.value.clientWidth\n const canvasHeight = canvasRef.value.clientHeight\n\n const newViewportActualWidth = canvasWidth * (newValue / 100)\n const oldViewportActualWidth = canvasWidth * (oldValue / 100)\n const newViewportActualHeight = canvasHeight * (newValue / 100)\n const oldViewportActualHeight = canvasHeight * (oldValue / 100)\n\n if (canvasHeight / canvasWidth > viewportRatio.value) {\n mainStore.setCanvasScale(newViewportActualWidth / VIEWPORT_SIZE)\n }\n else {\n mainStore.setCanvasScale(newViewportActualHeight / (VIEWPORT_SIZE * viewportRatio.value))\n }\n viewportLeft.value = viewportLeft.value - (newViewportActualWidth - oldViewportActualWidth) / 2\n viewportTop.value = viewportTop.value - (newViewportActualHeight - oldViewportActualHeight) / 2\n }\n\n // 可视区域缩放或比例变化时,重置/更新可视区域的位置\n watch(canvasPercentage, setViewportPosition)\n watch(viewportRatio, initViewportPosition)\n\n // 画布拖拽状态改变(复原)时,重置可视区域的位置\n watch(canvasDragged, () => {\n if (!canvasDragged.value) initViewportPosition()\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(initViewportPosition)\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, hiddenElementIdList } = 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 && !hiddenElementIdList.value.includes(element.id)) 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 }, { content: 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 latex: '公式',\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 latex: 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 originTableCellMinHeight = element.type === 'table' ? element.cellMinHeight : 0\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 const pathFormula = SHAPE_PATH_FORMULAS[el.pathFormula]\n\n let path = ''\n if ('editable' in pathFormula) path = pathFormula.formula(width, height, el.keypoint!)\n else path = pathFormula.formula(width, height)\n\n return {\n ...el, left, top, width, height,\n viewBox: [width, height],\n path,\n }\n }\n if (el.type === 'table') {\n let cellMinHeight = originTableCellMinHeight + (height - elOriginHeight) / el.data.length\n cellMinHeight = cellMinHeight < 36 ? 36 : cellMinHeight\n\n if (cellMinHeight === originTableCellMinHeight) return { ...el, left, width }\n return {\n ...el, left, top, width, height,\n cellMinHeight: cellMinHeight < 36 ? 36 : cellMinHeight,\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}","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: '10px',\n style: 'inset(0 0 0 0 round 10px 10px 10px 10px)',\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 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 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 heptagon: {\n name: '七边形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(50% 0%, 90% 20%, 100% 60%, 75% 100%, 25% 100%, 0% 60%, 10% 20%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.5} 0 L ${width * 0.9} ${height * 0.2} L ${width} ${height * 0.6} L ${width * 0.75} ${height} L ${width * 0.25} ${height} L 0 ${height * 0.6} L ${width * 0.1} ${height * 0.2} Z`\n },\n },\n octagon: {\n name: '八边形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(30% 0%, 70% 0%, 100% 30%, 100% 70%, 70% 100%, 30% 100%, 0% 70%, 0% 30%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.3} 0 L ${width * 0.7} 0 L ${width} ${height * 0.3} L ${width} ${height * 0.7} L ${width * 0.7} ${height} L ${width * 0.3} ${height} L 0 ${height * 0.7} L 0 ${height * 0.3} Z`\n },\n },\n chevron: {\n name: 'V形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(75% 0%, 100% 50%, 75% 100%, 0% 100%, 25% 50%, 0% 0%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.75} 0 L ${width} ${height * 0.5} L ${width * 0.75} ${height} L 0 ${height} L ${width * 0.25} ${height * 0.5} L 0 0 Z`\n },\n },\n point: {\n name: '点',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(0% 0%, 75% 0%, 100% 50%, 75% 100%, 0% 100%)',\n createPath: (width: number, height: number) => {\n return `M 0 0 L ${width * 0.75} 0 L ${width} ${height * 0.5} L ${width * 0.75} ${height} L 0 ${height} Z`\n },\n },\n arrow: {\n name: '箭头',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(0% 20%, 60% 20%, 60% 0%, 100% 50%, 60% 100%, 60% 80%, 0% 80%)',\n createPath: (width: number, height: number) => {\n return `M 0 ${height * 0.2} L ${width * 0.6} ${height * 0.2} L ${width * 0.6} 0 L ${width} ${height * 0.5} L ${width * 0.6} ${height} L ${width * 0.6} ${height * 0.8} L 0 ${height * 0.8} 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 { 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 return {\n selectElement,\n }\n}\n","import { Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore, useKeyboardStore } 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 { shiftKeyState } = storeToRefs(useKeyboardStore())\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 let moveX = (currentPageX - startPageX) / canvasScale.value\n let moveY = (currentPageY - startPageY) / canvasScale.value\n\n if (shiftKeyState.value) {\n if (Math.abs(moveX) > Math.abs(moveY)) moveY = 0\n if (Math.abs(moveX) < Math.abs(moveY)) moveX = 0\n }\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 { useSlidesStore } from '@/store'\nimport { PPTElement, PPTShapeElement } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport { SHAPE_PATH_FORMULAS } from '@/configs/shapes'\n\ninterface ShapePathData {\n baseSize: number,\n originPos: number,\n min: number,\n max: number,\n relative: string,\n}\n\nexport default (\n elementList: Ref,\n canvasScale: Ref,\n) => {\n const slidesStore = useSlidesStore()\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const moveShapeKeypoint = (e: MouseEvent | TouchEvent, element: PPTShapeElement) => {\n const isTouchEvent = !(e instanceof MouseEvent)\n if (isTouchEvent && (!e.changedTouches || !e.changedTouches[0])) return\n\n let isMouseDown = true\n \n const startPageX = isTouchEvent ? e.changedTouches[0].pageX : e.pageX\n const startPageY = isTouchEvent ? e.changedTouches[0].pageY : e.pageY\n\n const pathFormula = SHAPE_PATH_FORMULAS[element.pathFormula!]\n let shapePathData: ShapePathData | null = null\n if ('editable' in pathFormula) {\n const baseSize = pathFormula.getBaseSize(element.width, element.height)\n const originPos = baseSize * element.keypoint!\n const [min, max] = pathFormula.range\n const relative = pathFormula.relative\n\n shapePathData = { baseSize, originPos, min, max, relative }\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 const moveX = (currentPageX - startPageX) / canvasScale.value\n const moveY = (currentPageY - startPageY) / canvasScale.value\n\n elementList.value = elementList.value.map(el => {\n if (el.id === element.id && shapePathData) {\n const { baseSize, originPos, min, max, relative } = shapePathData\n const shapeElement = el as PPTShapeElement\n\n let keypoint = 0\n\n if (relative === 'left') keypoint = (originPos + moveX) / baseSize\n if (relative === 'right') keypoint = (originPos - moveX) / baseSize\n if (relative === 'center') keypoint = (originPos - moveX * 2) / baseSize\n if (relative === 'top') keypoint = (originPos + moveY) / baseSize\n if (relative === 'bottom') keypoint = (originPos - moveY) / baseSize\n\n if (keypoint < min) keypoint = min\n if (keypoint > max) keypoint = max\n\n return {\n ...el,\n keypoint,\n path: pathFormula.formula(shapeElement.width, shapeElement.height, keypoint),\n }\n }\n return el\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 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 moveShapeKeypoint,\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, { vertical: creatingElement.value.vertical })\n }\n else if (type === 'shape') {\n const position = formatCreateSelection(selectionData)\n position && createShapeElement(position, creatingElement.value.data)\n }\n else if (type === 'line') {\n const position = formatCreateSelectionForLine(selectionData)\n position && createLineElement(position, creatingElement.value.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, createElementBlock as _createElementBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-963e3dfc\"),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 (__props.elementInfo.colorMask)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"color-mask\",\n style: _normalizeStyle({\n backgroundColor: __props.elementInfo.colorMask.color,\n opacity: __props.elementInfo.colorMask.opacity,\n })\n }, null, 4))\n : _createCommentVNode(\"\", true)\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=963e3dfc&lang=scss&scoped=true\"\n\nimport exportComponent 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-963e3dfc\"]])\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 { splitListItem, liftListItem, sinkListItem } from 'prosemirror-schema-list'\nimport { Schema } from 'prosemirror-model'\nimport { undo, redo } from 'prosemirror-history'\nimport { undoInputRule } from 'prosemirror-inputrules'\nimport { Command } from 'prosemirror-state'\nimport {\n toggleMark,\n selectParentNode,\n joinUp,\n joinDown,\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 { listItem as _listItem } from 'prosemirror-schema-list'\n\nconst orderedList: NodeSpec = {\n attrs: {\n order: {\n default: 1,\n },\n listStyleType: {\n default: '',\n },\n },\n content: 'list_item+',\n group: 'block',\n parseDOM: [\n { \n tag: 'ol', \n getAttrs: dom => {\n const order = ((dom as HTMLElement).hasAttribute('start') ? (dom as HTMLElement).getAttribute('start') : 1) || 1\n const attr = { order: +order }\n\n const { listStyleType } = (dom as HTMLElement).style\n if (listStyleType) attr['listStyleType'] = listStyleType\n\n return attr\n }\n }\n ],\n toDOM: (node: Node) => {\n const { order, listStyleType } = node.attrs\n let style = ''\n if (listStyleType) style += `list-style-type: ${listStyleType};`\n\n const attr = { style }\n if (order !== 1) attr['start'] = order\n\n\n return ['ol', attr, 0]\n },\n}\n\nconst bulletList: NodeSpec = {\n attrs: {\n listStyleType: {\n default: '',\n },\n },\n content: 'list_item+',\n group: 'block',\n parseDOM: [\n {\n tag: 'ul',\n getAttrs: dom => {\n const { listStyleType } = (dom as HTMLElement).style\n return listStyleType ? { listStyleType } : {}\n }\n }\n ],\n toDOM: (node: Node) => {\n const { listStyleType } = node.attrs\n let style = ''\n if (listStyleType) style += `list-style-type: ${listStyleType};`\n\n return ['ul', { style }, 0]\n },\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 tag: 'img',\n ignore: true,\n },\n {\n tag: 'pre',\n skip: true,\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\n// https://github.com/pipipi-pikachu/PPTist/issues/134\nconst { hard_break, ...otherNodes } = nodes\n\nexport default {\n ...otherNodes,\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 fontsize,\n fontname,\n forecolor,\n backcolor,\n subscript,\n superscript,\n strikethrough,\n underline,\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 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 { 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, listStyleType?: string) => {\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 && !listStyleType) {\n return liftListItem(itemType)(state, dispatch)\n }\n\n if (isList(parentList.node, schema) && listType.validContent(parentList.node.content)) {\n const { tr } = state\n if (listStyleType) {\n const nodeAttrs = {\n ...parentList.node.attrs,\n listStyleType: listStyleType,\n }\n tr.setNodeMarkup(parentList.pos, listType, nodeAttrs)\n }\n else tr.setNodeMarkup(parentList.pos, listType)\n\n if (dispatch) dispatch(tr)\n\n return false\n }\n }\n\n if (listStyleType) return wrapInList(listType, { listStyleType })(state, dispatch)\n return wrapInList(listType)(state, dispatch)\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 { unref as _unref, normalizeClass as _normalizeClass, 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, RichTextAction, 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\", \"mousedown\"],\n setup(__props, { expose, emit }: { emit: ({\n (event: 'update', payload: string): void\n (event: 'focus'): void\n (event: 'blur'): void\n (event: 'mousedown', payload: MouseEvent): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst mainStore = useMainStore()\nconst { handleElementId, textFormatPainter } = 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// 暴露 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 listStyleType = item.value || ''\n const { bullet_list: bulletList, list_item: listItem } = editorView.state.schema.nodes\n toggleList(bulletList, listItem, listStyleType)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'orderedList') {\n const listStyleType = item.value || ''\n const { ordered_list: orderedList, list_item: listItem } = editorView.state.schema.nodes\n toggleList(orderedList, listItem, listStyleType)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'clear') {\n autoSelectAll(editorView)\n const { $from, $to } = editorView.state.selection\n editorView.dispatch(editorView.state.tr.removeMark($from.pos, $to.pos))\n }\n else if (item.command === 'link') {\n const markType = editorView.state.schema.marks.link\n const { from, to } = editorView.state.selection\n const result = findNodesWithSameMark(editorView.state.doc, from, to, markType)\n if (result) {\n if (item.value) {\n const mark = editorView.state.schema.marks.link.create({ href: item.value, title: item.value })\n addMark(editorView, mark, { from: result.from.pos, to: result.to.pos + 1 })\n }\n else editorView.dispatch(editorView.state.tr.removeMark(result.from.pos, result.to.pos + 1, markType))\n }\n else if (markActive(editorView.state, markType)) {\n if (item.value) {\n const mark = editorView.state.schema.marks.link.create({ href: item.value, title: item.value })\n addMark(editorView, mark)\n }\n else toggleMark(markType)(editorView.state, editorView.dispatch)\n }\n else if (item.value) {\n autoSelectAll(editorView)\n toggleMark(markType, { href: item.value, title: item.value })(editorView.state, editorView.dispatch)\n }\n }\n else if (item.command === 'insert' && item.value) {\n editorView.dispatch(editorView.state.tr.insertText(item.value))\n }\n }\n\n editorView.focus()\n handleInput()\n handleClick()\n}\n\n// 鼠标抬起时,执行格式刷命令\nconst handleMouseup = () => {\n if (!textFormatPainter.value) return\n\n const actions: RichTextAction[] = [{ command: 'clear' }]\n for (const key of Object.keys(textFormatPainter.value)) {\n const command = key\n const value = textFormatPainter.value[key]\n if (value) actions.push({ command, value })\n }\n execCommand({ action: actions })\n mainStore.setTextFormatPainter(null)\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 mouseup: handleMouseup,\n },\n editable: () => props.editable,\n })\n if (props.autoFocus) editorView.focus()\n})\nonUnmounted(() => {\n editorView && editorView.destroy()\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: _normalizeClass([\"prosemirror-editor\", { 'format-painter': _unref(textFormatPainter) }]),\n ref_key: \"editorViewRef\",\n ref: editorViewRef,\n onMousedown: _cache[0] || (_cache[0] = $event => emit('mousedown', $event))\n }, null, 34))\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=76d3203e&lang=scss&scoped=true\"\n\nimport exportComponent 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-76d3203e\"]])\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-9be58c0a\"),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)\nconst realWidthCache = ref(-1)\n\nwatch(isScaling, () => {\n if (handleElementId.value !== props.elementInfo.id) return\n\n if (!isScaling.value) {\n if (!props.elementInfo.vertical && realHeightCache.value !== -1) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { height: realHeightCache.value },\n })\n realHeightCache.value = -1\n }\n if (props.elementInfo.vertical && realWidthCache.value !== -1) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { width: realWidthCache.value },\n })\n realWidthCache.value = -1\n }\n }\n})\n\nconst updateTextElementHeight = (entries: ResizeObserverEntry[]) => {\n const contentRect = entries[0].contentRect\n if (!elementRef.value) return\n\n const realHeight = contentRect.height + 20\n const realWidth = contentRect.width + 20\n\n if (!props.elementInfo.vertical && 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 if (props.elementInfo.vertical && props.elementInfo.width !== realWidth) {\n if (!isScaling.value) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { width: realWidth },\n })\n }\n else realWidthCache.value = realWidth\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 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 ref_key: \"elementRef\",\n ref: elementRef,\n style: _normalizeStyle({\n width: __props.elementInfo.vertical ? 'auto' : __props.elementInfo.width + 'px',\n height: __props.elementInfo.vertical ? __props.elementInfo.height + 'px' : 'auto',\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 writingMode: __props.elementInfo.vertical ? 'vertical-rl' : 'horizontal-tb',\n }),\n onMousedown: _cache[2] || (_cache[2] = $event => handleSelectElement($event)),\n onTouchstart: _cache[3] || (_cache[3] = $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 }, 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=9be58c0a&lang=scss&scoped=true\"\n\nimport exportComponent 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-9be58c0a\"]])\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-486128e0\"),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[3] || (_cache[3] = $event => handleSelectElement($event)),\n onTouchstart: _cache[4] || (_cache[4] = $event => handleSelectElement($event)),\n onDblclick: _cache[5] || (_cache[5] = ($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 }, 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=486128e0&lang=scss&scoped=true\"\n\nimport exportComponent 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-486128e0\"]])\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 tinycolor from 'tinycolor2'\nimport { BarChart, LineChart, PieChart } from 'chartist'\nimport { ChartData, ChartOptions, ChartType } from '@/types/slides'\nimport { injectKeySlideScale } from '@/types/injectKey'\n\nimport 'chartist/dist/index.css'\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: LineChart | BarChart | PieChart | undefined\n\nconst chartHeight = computed(() => {\n if (props.legend) return props.height - 20\n return props.height\n})\n\nconst getPieChartData = () => ({ ...props.data, series: props.data.series[0] })\n\nconst getOptions = () => {\n const propsOptopns = props.options || {}\n return {\n ...propsOptopns,\n width: props.width * slideScale.value,\n height: chartHeight.value * slideScale.value,\n }\n}\n\nconst renderChart = () => {\n if (!chartRef.value) return\n\n const options = getOptions()\n if (props.type === 'bar') chart = new BarChart(chartRef.value, props.data, options)\n if (props.type === 'line') chart = new LineChart(chartRef.value, props.data, options)\n if (props.type === 'pie') chart = new PieChart(chartRef.value, getPieChartData(), options)\n}\n\nconst updateChart = () => {\n if (!chart) {\n renderChart()\n return\n }\n const options = getOptions()\n const data = props.type === 'pie' ? getPieChartData() : props.data\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=1f8d633e&lang=scss&scoped=true\"\nimport \"./Chart.vue?vue&type=style&index=1&id=1f8d633e&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-1f8d633e\"]])\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-a2ef535c\"),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 cellMinHeight: {\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 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\", {\n key: rowIndex,\n style: _normalizeStyle({ height: __props.cellMinHeight + 'px' })\n }, [\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 style: _normalizeStyle({ minHeight: (__props.cellMinHeight - 4) + 'px' }),\n value: cell.text,\n onUpdateValue: value => _unref(handleInput)(value, rowIndex, colIndex),\n onInsertExcelData: value => insertExcelData(value, rowIndex, colIndex)\n }, null, 8, [\"class\", \"style\", \"value\", \"onUpdateValue\", \"onInsertExcelData\"]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"cell-text\",\n style: _normalizeStyle({ minHeight: (__props.cellMinHeight - 4) + 'px' }),\n innerHTML: _unref(formatText)(cell.text)\n }, null, 12, _hoisted_5))\n ], 46, _hoisted_4)), [\n [_vShow, !_unref(hideCells).includes(`${rowIndex}_${colIndex}`)],\n [_directive_contextmenu, (el) => contextmenus(el)]\n ])\n }), 128))\n ], 4))\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=a2ef535c&lang=scss&scoped=true\"\n\nimport exportComponent 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-a2ef535c\"]])\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-0b2b16da\"),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 cellMinHeight: __props.elementInfo.cellMinHeight,\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\", \"cellMinHeight\", \"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=0b2b16da&lang=scss&scoped=true\"\n\nimport exportComponent 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-0b2b16da\"]])\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 { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, normalizeClass as _normalizeClass, unref as _unref, normalizeStyle as _normalizeStyle, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-adfce55e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"load-error\"\n}\nconst _hoisted_2 = [\"src\", \"poster\"]\nconst _hoisted_3 = { class: \"bezel\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"controller-mask\" }, null, -1))\nconst _hoisted_5 = { class: \"controller\" }\nconst _hoisted_6 = { class: \"icons icons-left\" }\nconst _hoisted_7 = { class: \"icon-content\" }\nconst _hoisted_8 = { class: \"volume\" }\nconst _hoisted_9 = { class: \"icon-content\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_11 = [\n _hoisted_10\n]\nconst _hoisted_12 = { class: \"time\" }\nconst _hoisted_13 = { class: \"ptime\" }\nconst _hoisted_14 = { 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 = { class: \"icon-content\" }\nconst _hoisted_20 = { class: \"bar\" }\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_22 = [\n _hoisted_21\n]\n\nimport { computed, ref } from 'vue'\nimport useMSE from './useMSE'\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 loadError = ref(false)\nconst handleError = () => loadError.value = true\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 (loadError.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, \"视频加载失败\"))\n : _createCommentVNode(\"\", true),\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_2),\n _createElementVNode(\"div\", _hoisted_3, [\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_4,\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", {\n class: \"icon play-icon\",\n onClick: _cache[9] || (_cache[9] = ($event: any) => (toggle()))\n }, [\n _createElementVNode(\"span\", _hoisted_7, [\n (paused.value)\n ? (_openBlock(), _createBlock(_component_IconPlayOne, { key: 0 }))\n : (_openBlock(), _createBlock(_component_IconPause, { key: 1 }))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"div\", {\n class: \"icon volume-icon\",\n onClick: _cache[10] || (_cache[10] = ($event: any) => (toggleVolume()))\n }, [\n _createElementVNode(\"span\", _hoisted_9, [\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_11, 4)\n ], 512)\n ], 32)\n ]),\n _createElementVNode(\"span\", _hoisted_12, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_unref(ptime)), 1),\n _createTextVNode(\" / \"),\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 }, _toDisplayString(playbackRate.value === 1 ? '倍速' : (playbackRate.value + 'x')), 1),\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 }, [\n _createElementVNode(\"span\", _hoisted_19, \"循环\" + _toDisplayString(loop.value ? '开' : '关'), 1)\n ], 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_20, [\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_22, 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=adfce55e&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-adfce55e\"]])\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 = { class: \"dtime\" }\nconst _hoisted_12 = { class: \"bar\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_14 = [\n _hoisted_13\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 _createTextVNode(\" / \"),\n _createElementVNode(\"span\", _hoisted_11, _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_12, [\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_14, 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-aebac580\"),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, gridLineSize } = 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\n// 网格路径\nconst path = computed(() => {\n const maxX = VIEWPORT_SIZE\n const maxY = VIEWPORT_SIZE * viewportRatio.value\n\n let p = ''\n for (let i = 0; i <= Math.floor(maxY / gridLineSize.value); i++) {\n p += `M0 ${i * gridLineSize.value} L${maxX} ${i * gridLineSize.value} `\n }\n for (let i = 0; i <= Math.floor(maxX / gridLineSize.value); i++) {\n p += `M${i * gridLineSize.value} 0 L${i * gridLineSize.value} ${maxY} `\n }\n return p\n})\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=aebac580&lang=scss&scoped=true\"\n\nimport exportComponent 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-aebac580\"]])\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 { gridLineSize } = 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(gridLineSize))\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=61c4db4a&lang=scss&scoped=true\"\n\nimport exportComponent 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-61c4db4a\"]])\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-0f6bb088\"),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(20, (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), 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(20, (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), 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=0f6bb088&lang=scss&scoped=true\"\n\nimport exportComponent 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-0f6bb088\"]])\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 const verticalTextElementResizeHandlers = computed(() => {\n return [\n { direction: OperateResizeHandlers.TOP, style: {left: width.value / 2 + 'px'} },\n { direction: OperateResizeHandlers.BOTTOM, style: {left: width.value / 2 + 'px', top: height.value + '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 verticalTextElementResizeHandlers,\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, verticalTextElementResizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\r\nconst resizeHandlers = computed(() => props.elementInfo.vertical ? verticalTextElementResizeHandlers.value : textElementResizeHandlers.value)\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(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 \"./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, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-fd38df18\"),n=n(),_popScopeId(),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 { SHAPE_PATH_FORMULAS } from '@/configs/shapes'\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 moveShapeKeypoint: {\n type: Function as PropType<(e: MouseEvent, element: PPTShapeElement) => 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 keypointStyle = computed(() => {\n if (!props.elementInfo.pathFormula || !props.elementInfo.keypoint) return {}\n\n const pathFormula = SHAPE_PATH_FORMULAS[props.elementInfo.pathFormula]\n if ('editable' in pathFormula) {\n const keypointPos = pathFormula.getBaseSize(props.elementInfo.width, props.elementInfo.height) * props.elementInfo.keypoint\n if (pathFormula.relative === 'left') return { left: keypointPos * canvasScale.value + 'px' }\n if (pathFormula.relative === 'right') return { left: (props.elementInfo.width - keypointPos) * canvasScale.value + 'px' }\n if (pathFormula.relative === 'center') return { left: (props.elementInfo.width - keypointPos) / 2 * canvasScale.value + 'px' }\n if (pathFormula.relative === 'top') return { top: keypointPos * canvasScale.value + 'px' }\n if (pathFormula.relative === 'bottom') return { top: (props.elementInfo.height - keypointPos) * canvasScale.value + 'px' }\n }\n return {}\n})\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 (__props.elementInfo.keypoint !== undefined)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"operate-keypoint-handler\",\n style: _normalizeStyle(_unref(keypointStyle)),\n onMousedown: _cache[1] || (_cache[1] = _withModifiers($event => __props.moveShapeKeypoint($event, __props.elementInfo), [\"stop\"]))\n }, null, 36))\n : _createCommentVNode(\"\", true)\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\nimport \"./ShapeElementOperate.vue?vue&type=style&index=0&id=fd38df18&lang=scss&scoped=true\"\n\nimport exportComponent 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-fd38df18\"]])\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 { 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 \"./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 if (link.type === 'slide' && !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, createVNode as _createVNode, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-12300fd5\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"href\"]\nconst _hoisted_2 = { class: \"btns\" }\n\nimport { computed, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement, PPTElementLink } from '@/types/slides'\nimport useLink from '@/hooks/useLink'\n\nimport { Divider } from 'ant-design-vue'\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 mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { canvasScale } = storeToRefs(mainStore)\nconst { slides } = storeToRefs(slidesStore)\nconst { removeLink } = useLink()\nconst height = computed(() => props.elementInfo.type === 'line' ? 0 : props.elementInfo.height)\n\nconst turnTarget = (slideId: string) => {\n const targetIndex = slides.value.findIndex(item => item.id === slideId)\n if (targetIndex !== -1) {\n mainStore.setActiveElementIdList([])\n slidesStore.updateSlideIndex(targetIndex)\n }\n}\n\nreturn (_ctx: any,_cache: any) => {\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\", {\n key: 1,\n class: \"link\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (turnTarget(__props.link.target)))\n }, \"幻灯片页面 \" + _toDisplayString(__props.link.target), 1)),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (__props.openLinkDialog()))\n }, \"更换\"),\n _createVNode(_unref(Divider), { type: \"vertical\" }),\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[2] || (_cache[2] = ($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=12300fd5&lang=scss&scoped=true\"\n\nimport exportComponent 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-12300fd5\"]])\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-26f9c48a\"),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, PPTShapeElement } 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 moveShapeKeypoint: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTShapeElement) => 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 moveShapeKeypoint: __props.moveShapeKeypoint\n }, null, 8, [\"elementInfo\", \"handlerVisible\", \"rotateElement\", \"scaleElement\", \"dragLineElement\", \"moveShapeKeypoint\"]))\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=26f9c48a&lang=scss&scoped=true\"\n\nimport exportComponent 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-26f9c48a\"]])\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, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-c874e65e\"),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 (__props.elementInfo.colorMask)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"color-mask\",\n style: _normalizeStyle({\n backgroundColor: __props.elementInfo.colorMask.color,\n opacity: __props.elementInfo.colorMask.opacity,\n })\n }, null, 4))\n : _createCommentVNode(\"\", true)\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=c874e65e&lang=scss&scoped=true\"\n\nimport exportComponent 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-c874e65e\"]])\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-18d84242\"),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 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 width: __props.elementInfo.vertical ? 'auto' : __props.elementInfo.width + 'px',\n height: __props.elementInfo.vertical ? __props.elementInfo.height + 'px' : 'auto',\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 writingMode: __props.elementInfo.vertical ? 'vertical-rl' : 'horizontal-tb',\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=18d84242&lang=scss&scoped=true\"\n\nimport exportComponent 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-18d84242\"]])\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, normalizeStyle as _normalizeStyle, vShow as _vShow, withDirectives as _withDirectives, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-40e73d4e\"),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 cellMinHeight: {\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\", {\n key: rowIndex,\n style: _normalizeStyle({ height: __props.cellMinHeight + 'px' })\n }, [\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 style: _normalizeStyle({ minHeight: (__props.cellMinHeight - 4) + 'px' }),\n innerHTML: _unref(formatText)(cell.text)\n }, null, 12, _hoisted_3)\n ], 12, _hoisted_2)), [\n [_vShow, !_unref(hideCells).includes(`${rowIndex}_${colIndex}`)]\n ])\n }), 128))\n ], 4))\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=40e73d4e&lang=scss&scoped=true\"\n\nimport exportComponent 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-40e73d4e\"]])\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-6b8ce0be\"),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 cellMinHeight: __props.elementInfo.cellMinHeight,\n colWidths: __props.elementInfo.colWidths,\n outline: __props.elementInfo.outline,\n theme: __props.elementInfo.theme\n }, null, 8, [\"data\", \"width\", \"cellMinHeight\", \"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=6b8ce0be&lang=scss&scoped=true\"\n\nimport exportComponent 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-6b8ce0be\"]])\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-3f5170e8\"),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=3f5170e8&lang=scss&scoped=true\"\n\nimport exportComponent 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-3f5170e8\"]])\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, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-469f9b66\"),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\" }\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'\nimport {\n Button,\n Select,\n Input,\n} from 'ant-design-vue'\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\nconst SelectOption = Select.Option\n\n\n\nconst { handleElement } = storeToRefs(useMainStore())\nconst { slides, currentSlide } = storeToRefs(useSlidesStore())\n\nconst type = ref('web')\nconst address = ref('')\nconst slideId = ref('')\n\nslideId.value = slides.value.find(item => item.id !== currentSlide.value.id)?.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 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(_unref(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(_unref(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(_unref(SelectOption), {\n key: slide.id,\n value: slide.id,\n disabled: _unref(currentSlide).id === slide.id\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"幻灯片 \" + _toDisplayString(index + 1), 1)\n ]),\n _: 2\n }, 1032, [\"value\", \"disabled\"]))\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(_unref(Button), {\n onClick: _cache[2] || (_cache[2] = ($event: any) => (emit('close'))),\n style: {\"margin-right\":\"10px\"}\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"取消\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), {\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (save()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"确认\")\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=469f9b66&lang=scss&scoped=true\"\n\nimport exportComponent 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-469f9b66\"]])\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, vShow as _vShow, withDirectives as _withDirectives, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, withCtx as _withCtx, resolveDirective as _resolveDirective, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-17dcff2c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"operates\" }\nconst _hoisted_2 = {\n key: 1,\n class: \"drag-mask\"\n}\n\nimport { nextTick, onMounted, onUnmounted, 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 useMoveShapeKeypoint from './hooks/useMoveShapeKeypoint'\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'\nimport { Modal } from 'ant-design-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 hiddenElementIdList,\n editorAreaFocus,\n gridLineSize,\n showRuler,\n showSelectPanel,\n creatingElement,\n canvasScale,\n textFormatPainter,\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)\nconst { moveShapeKeypoint } = useMoveShapeKeypoint(elementList, canvasScale)\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) {\n nextTick(() => mainStore.setActiveElementIdList([]))\n }\n})\n\n// 点击画布的空白区域:清空焦点元素、设置画布焦点、清除文字选区、清空格式刷状态\nconst handleClickBlankArea = (e: MouseEvent) => {\n if (activeElementIdList.value.length) mainStore.setActiveElementIdList([])\n\n if (!spaceKeyState.value) updateMouseSelection(e)\n else dragViewport(e)\n\n if (!editorAreaFocus.value) mainStore.setEditorareaFocus(true)\n if (textFormatPainter.value) mainStore.setTextFormatPainter(null)\n removeAllRanges()\n}\n\n// 画布注销时清空格式刷状态\nonUnmounted(() => {\n if (textFormatPainter.value) mainStore.setTextFormatPainter(null)\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 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: showRuler.value ? '√' : '',\n handler: toggleRuler,\n },\n {\n text: '网格线',\n handler: () => mainStore.setGridLineSize(gridLineSize.value ? 0 : 50),\n children: [\n {\n text: '无',\n subText: gridLineSize.value === 0 ? '√' : '',\n handler: () => mainStore.setGridLineSize(0),\n },\n {\n text: '小',\n subText: gridLineSize.value === 25 ? '√' : '',\n handler: () => mainStore.setGridLineSize(25),\n },\n {\n text: '中',\n subText: gridLineSize.value === 50 ? '√' : '',\n handler: () => mainStore.setGridLineSize(50),\n },\n {\n text: '大',\n subText: gridLineSize.value === 100 ? '√' : '',\n handler: () => mainStore.setGridLineSize(100),\n },\n ],\n },\n {\n text: showSelectPanel.value ? '关闭选择面板' : '打开选择面板',\n handler: () => {\n if (!showSelectPanel.value) mainStore.setSelectPanelState(true)\n else mainStore.setSelectPanelState(false)\n },\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 _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 _withDirectives((_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 moveShapeKeypoint: _unref(moveShapeKeypoint)\n }, null, 8, [\"elementInfo\", \"isSelected\", \"isActive\", \"isActiveGroupElement\", \"isMultiSelect\", \"rotateElement\", \"scaleElement\", \"dragLineElement\", \"moveShapeKeypoint\"])), [\n [_vShow, !_unref(hiddenElementIdList).includes(element.id)]\n ])\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 _withDirectives((_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 [_vShow, !_unref(hiddenElementIdList).includes(element.id)]\n ])\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(_unref(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=17dcff2c&lang=scss&scoped=true\"\n\nimport exportComponent 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-17dcff2c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-09653543\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"shape-item-thumbnail\" }\nconst _hoisted_2 = { class: \"shape-content\" }\nconst _hoisted_3 = {\n overflow: \"visible\",\n width: \"18\",\n height: \"18\"\n}\nconst _hoisted_4 = [\"transform\"]\nconst _hoisted_5 = [\"fill\", \"stroke\", \"d\"]\n\nimport { PropType } from 'vue'\nimport { ShapePoolItem } from '@/configs/shapes'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ShapeItemThumbnail',\n props: {\n shape: {\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\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(), _createElementBlock(\"svg\", _hoisted_3, [\n _createElementVNode(\"g\", {\n transform: `scale(${18 / __props.shape.viewBox[0]}, ${18 / __props.shape.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n class: _normalizeClass([\"shape-path\", { 'outlined': __props.shape.outlined }]),\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n fill: __props.shape.outlined ? '#999' : 'transparent',\n stroke: __props.shape.outlined ? 'transparent' : '#999',\n \"stroke-width\": \"2\",\n d: __props.shape.path\n }, null, 10, _hoisted_5)\n ], 8, _hoisted_4)\n ]))\n ])\n ]))\n}\n}\n\n})","import script from \"./ShapeItemThumbnail.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ShapeItemThumbnail.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ShapeItemThumbnail.vue?vue&type=style&index=0&id=09653543&lang=scss&scoped=true\"\n\nimport exportComponent 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-09653543\"]])\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, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-711a4fb1\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"shape-pool\" }\nconst _hoisted_2 = { class: \"category-name\" }\nconst _hoisted_3 = { class: \"shape-list\" }\n\nimport { SHAPE_LIST, ShapePoolItem } from '@/configs/shapes'\nimport ShapeItemThumbnail from './ShapeItemThumbnail.vue'\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(), _createBlock(ShapeItemThumbnail, {\n class: \"shape-item\",\n key: index,\n shape: shape,\n onClick: ($event: any) => (selectShape(shape))\n }, null, 8, [\"shape\", \"onClick\"]))\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=711a4fb1&lang=scss&scoped=true\"\n\nimport exportComponent 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-711a4fb1\"]])\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, unref as _unref, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8fd9f34c\"),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\" }\n\nimport { ref } from 'vue'\nimport {\n InputNumber,\n Button,\n message,\n} 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 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(_unref(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(_unref(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(_unref(Button), {\n class: \"btn\",\n onClick: _cache[5] || (_cache[5] = ($event: any) => (close()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"取消\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), {\n class: \"btn\",\n type: \"primary\",\n onClick: _cache[6] || (_cache[6] = ($event: any) => (insertCustomTable()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"确认\")\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=8fd9f34c&lang=scss&scoped=true\"\n\nimport exportComponent 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-8fd9f34c\"]])\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, 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-4e5f883a\"),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 = { class: \"btns\" }\n\nimport { ref } from 'vue'\nimport {\n Button,\n Input,\n message,\n} 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 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(_unref(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(_unref(Button), {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emit('close'))),\n style: {\"margin-right\":\"10px\"}\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"取消\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), {\n type: \"primary\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (insertVideo()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"确认\")\n ]),\n _: 1\n })\n ])\n ], 64))\n : _createCommentVNode(\"\", true),\n (type.value === 'audio')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createVNode(_unref(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_5, [\n _createVNode(_unref(Button), {\n onClick: _cache[4] || (_cache[4] = ($event: any) => (emit('close'))),\n style: {\"margin-right\":\"10px\"}\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"取消\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), {\n type: \"primary\",\n onClick: _cache[5] || (_cache[5] = ($event: any) => (insertAudio()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"确认\")\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=4e5f883a&lang=scss&scoped=true\"\n\nimport exportComponent 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-4e5f883a\"]])\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 { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createTextVNode as _createTextVNode, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-097b396c\"),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\" }\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 {\n Button,\n Input,\n message,\n} from 'ant-design-vue'\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 TextArea = Input.TextArea\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 return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_unref(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(_unref(Button), {\n class: \"btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"取消\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), {\n class: \"btn\",\n type: \"primary\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (update()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"确定\")\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=097b396c&lang=scss&scoped=true\"\n\nimport exportComponent 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-097b396c\"]])\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, createTextVNode as _createTextVNode, 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-8a7bb5f0\"),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: \"handler-item group-btn\" }\nconst _hoisted_5 = { class: \"right-handler\" }\nconst _hoisted_6 = { class: \"viewport-size-preset\" }\nconst _hoisted_7 = [\"onClick\"]\nconst _hoisted_8 = { 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'\nimport FileInput from '@/components/FileInput.vue'\nimport {\n Tooltip,\n Popover,\n Modal,\n} from 'ant-design-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)\nconst textTypeSelectVisible = ref(false)\n\n// 绘制文字范围\nconst drawText = (vertical = false) => {\n mainStore.setCreatingElement({\n type: 'text',\n vertical,\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_IconNext = _resolveComponent(\"IconNext\")!\n const _component_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_IconTextRotationNone = _resolveComponent(\"IconTextRotationNone\")!\n const _component_IconTextRotationDown = _resolveComponent(\"IconTextRotationDown\")!\n const _component_IconDown = _resolveComponent(\"IconDown\")!\n const _component_IconPicture = _resolveComponent(\"IconPicture\")!\n const _component_IconGraphicDesign = _resolveComponent(\"IconGraphicDesign\")!\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\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_unref(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(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"插入文字\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_IconFontSize, {\n class: _normalizeClass([\"icon\", { 'active': _unref(creatingElement)?.type === 'text' }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (drawText()))\n }, null, 8, [\"class\"]),\n _createVNode(_unref(Popover), {\n trigger: \"click\",\n visible: textTypeSelectVisible.value,\n \"onUpdate:visible\": _cache[5] || (_cache[5] = ($event: any) => ((textTypeSelectVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"text-type-item\",\n onClick: _cache[3] || (_cache[3] = () => { drawText(); textTypeSelectVisible.value = false })\n }, [\n _createVNode(_component_IconTextRotationNone),\n _createTextVNode(\" 横向文本框\")\n ]),\n _createElementVNode(\"div\", {\n class: \"text-type-item\",\n onClick: _cache[4] || (_cache[4] = () => { drawText(true); textTypeSelectVisible.value = false })\n }, [\n _createVNode(_component_IconTextRotationDown),\n _createTextVNode(\" 竖向文本框\")\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_IconDown, { class: \"arrow\" })\n ]),\n _: 1\n }, 8, [\"visible\"])\n ])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(FileInput, {\n onChange: _cache[6] || (_cache[6] = files => insertImageElement(files))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Popover), {\n trigger: \"click\",\n visible: shapePoolVisible.value,\n \"onUpdate:visible\": _cache[8] || (_cache[8] = ($event: any) => ((shapePoolVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(ShapePool, {\n onSelect: _cache[7] || (_cache[7] = shape => drawShape(shape))\n })\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Popover), {\n trigger: \"click\",\n visible: linePoolVisible.value,\n \"onUpdate:visible\": _cache[10] || (_cache[10] = ($event: any) => ((linePoolVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(LinePool, {\n onSelect: _cache[9] || (_cache[9] = line => drawLine(line))\n })\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Popover), {\n trigger: \"click\",\n visible: chartPoolVisible.value,\n \"onUpdate:visible\": _cache[12] || (_cache[12] = ($event: any) => ((chartPoolVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(ChartPool, {\n onSelect: _cache[11] || (_cache[11] = chart => { _unref(createChartElement)(chart); chartPoolVisible.value = false })\n })\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Popover), {\n trigger: \"click\",\n visible: tableGeneratorVisible.value,\n \"onUpdate:visible\": _cache[15] || (_cache[15] = ($event: any) => ((tableGeneratorVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(TableGenerator, {\n onClose: _cache[13] || (_cache[13] = ($event: any) => (tableGeneratorVisible.value = false)),\n onInsert: _cache[14] || (_cache[14] = ({ row, col }) => { _unref(createTableElement)(row, col); tableGeneratorVisible.value = false })\n })\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(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[16] || (_cache[16] = ($event: any) => (latexEditorVisible.value = true))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(Popover), {\n trigger: \"click\",\n visible: mediaInputVisible.value,\n \"onUpdate:visible\": _cache[20] || (_cache[20] = ($event: any) => ((mediaInputVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(MediaInput, {\n onClose: _cache[17] || (_cache[17] = ($event: any) => (mediaInputVisible.value = false)),\n onInsertVideo: _cache[18] || (_cache[18] = src => { _unref(createVideoElement)(src); mediaInputVisible.value = false }),\n onInsertAudio: _cache[19] || (_cache[19] = src => { _unref(createAudioElement)(src); mediaInputVisible.value = false })\n })\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(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_5, [\n _createVNode(_component_IconMinus, {\n class: \"handler-item viewport-size\",\n onClick: _cache[21] || (_cache[21] = ($event: any) => (_unref(scaleCanvas)('-')))\n }),\n _createVNode(_unref(Popover), {\n trigger: \"click\",\n visible: canvasScaleVisible.value,\n \"onUpdate:visible\": _cache[22] || (_cache[22] = ($event: any) => ((canvasScaleVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_6, [\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_7)\n }), 64))\n ])\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_unref(canvasScalePercentage)), 1)\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_component_IconPlus, {\n class: \"handler-item viewport-size\",\n onClick: _cache[23] || (_cache[23] = ($event: any) => (_unref(scaleCanvas)('+')))\n }),\n _createVNode(_unref(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[24] || (_cache[24] = ($event: any) => (_unref(resetCanvas)()))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _createVNode(_unref(Modal), {\n visible: latexEditorVisible.value,\n \"onUpdate:visible\": _cache[27] || (_cache[27] = ($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[25] || (_cache[25] = ($event: any) => (latexEditorVisible.value = false)),\n onUpdate: _cache[26] || (_cache[26] = 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=8a7bb5f0&lang=scss&scoped=true\"\n\nimport exportComponent 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-8a7bb5f0\"]])\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-61d61c80\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"add-slide\" }\nconst _hoisted_2 = { class: \"select-btn\" }\nconst _hoisted_3 = [\"onMousedown\"]\nconst _hoisted_4 = { class: \"page-number\" }\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'\nimport { Popover } from 'ant-design-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 sortSlides,\n} = useSlideHandler()\n\n// 切换页面\nconst changeSlideIndex = (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 changeSlideIndex(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 changeSlideIndex(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 changeSlideIndex(index)\n }\n // 正常切换页面\n else {\n mainStore.updateSelectedSlidesIndex([])\n changeSlideIndex(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 sortSlides(newIndex, oldIndex)\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 _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 _createTextVNode(\"添加幻灯片\")\n ]),\n _createVNode(_unref(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_2, [\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_3)), [\n [_directive_contextmenu, contextmenusThumbnailItem]\n ])\n ]),\n _: 1\n }, 8, [\"modelValue\"]),\n _createElementVNode(\"div\", _hoisted_4, \"幻灯片 \" + _toDisplayString(_unref(slideIndex) + 1) + \" / \" + _toDisplayString(_unref(slides).length), 1)\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=61d61c80&lang=scss&scoped=true\"\n\nimport exportComponent 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-61d61c80\"]])\n\nexport default __exports__","import { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\n\nexport default () => {\n const mainStore = useMainStore()\n const { richTextAttrs, textFormatPainter } = storeToRefs(mainStore)\n\n const toggleFormatPainter = () => {\n if (textFormatPainter.value) mainStore.setTextFormatPainter(null)\n else {\n mainStore.setTextFormatPainter({\n bold: richTextAttrs.value.bold,\n em: richTextAttrs.value.em,\n underline: richTextAttrs.value.underline,\n strikethrough: richTextAttrs.value.strikethrough,\n color: richTextAttrs.value.color,\n backcolor: richTextAttrs.value.backcolor,\n fontname: richTextAttrs.value.fontname,\n fontsize: richTextAttrs.value.fontsize,\n align: richTextAttrs.value.align,\n })\n }\n }\n\n return {\n toggleFormatPainter,\n }\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-54aad0f0\"),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\nimport { Slider } from 'ant-design-vue'\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 return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createVNode(_unref(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=54aad0f0&lang=scss&scoped=true\"\n\nimport exportComponent 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-54aad0f0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, unref as _unref, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3b4a02d8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"color-block\" }\n\nimport { Button } from 'ant-design-vue'\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\n return (_openBlock(), _createBlock(_unref(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=3b4a02d8&lang=scss&scoped=true\"\n\nimport exportComponent 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-3b4a02d8\"]])\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-3d280c42\"),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 _createElementVNode(\"div\", {\n class: \"transparent\",\n onClick: _cache[5] || (_cache[5] = ($event: any) => (selectPresetColor('#00000000')))\n }, [\n _createVNode(Checkboard)\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=3d280c42&lang=scss&scoped=true\"\n\nimport exportComponent 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-3d280c42\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, 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-49642f50\"),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 = { 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))\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'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport {\n InputNumber,\n Popover,\n Select,\n Switch,\n} from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementOutline',\n props: {\n fixed: {\n type: Boolean,\n default: false,\n },\n},\n setup(__props) {\n\nconst SelectOption = Select.Option\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 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(_unref(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(_unref(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(_unref(SelectOption), { value: \"solid\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"实线边框\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"dashed\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"虚线边框\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _hoisted_8,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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_9, [\n _hoisted_10,\n _createVNode(_unref(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=49642f50&lang=scss&scoped=true\"\n\nimport exportComponent 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-49642f50\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, 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-19c233fc\"),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'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport {\n Popover,\n Slider,\n Switch,\n} from 'ant-design-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 return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_unref(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(_unref(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(_unref(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(_unref(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(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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=19c233fc&lang=scss&scoped=true\"\n\nimport exportComponent 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-19c233fc\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, unref as _unref, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-c90c8a28\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"text-color-block\" }\n\nimport { Button } from 'ant-design-vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'TextColorButton',\n props: {\n color: {\n type: String,\n required: true,\n },\n},\n setup(__props) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_unref(Button), { class: \"text-color-btn\" }, {\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"default\"),\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"text-color-block-content\",\n style: _normalizeStyle({ backgroundColor: __props.color })\n }, null, 4)\n ])\n ]),\n _: 3\n }))\n}\n}\n\n})","import script from \"./TextColorButton.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./TextColorButton.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./TextColorButton.vue?vue&type=style&index=0&id=c90c8a28&lang=scss&scoped=true\"\n\nimport exportComponent 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-c90c8a28\"]])\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 { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createBlock as _createBlock, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74237311\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"text-style-panel\" }\nconst _hoisted_2 = { class: \"preset-style\" }\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = { class: \"link-popover\" }\nconst _hoisted_5 = { class: \"btns\" }\nconst _hoisted_6 = { class: \"row\" }\nconst _hoisted_7 = { class: \"list-wrap\" }\nconst _hoisted_8 = [\"onClick\"]\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, null, -1))\nconst _hoisted_10 = [\n _hoisted_9\n]\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"1\"} }, null, -1))\nconst _hoisted_12 = { class: \"list-wrap\" }\nconst _hoisted_13 = [\"onClick\"]\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, null, -1))\nconst _hoisted_15 = [\n _hoisted_14\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 = { class: \"row\" }\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"字间距:\", -1))\nconst _hoisted_22 = { class: \"row\" }\nconst _hoisted_23 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"首行缩进:\", -1))\nconst _hoisted_24 = { class: \"row\" }\nconst _hoisted_25 = /*#__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 useTextFormatPainter from '@/hooks/useTextFormatPainter'\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'\nimport TextColorButton from '../common/TextColorButton.vue'\nimport CheckboxButton from '@/components/CheckboxButton.vue'\nimport CheckboxButtonGroup from '@/components/CheckboxButtonGroup.vue'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport {\n Divider,\n Button,\n Tooltip,\n Popover,\n Select,\n Radio,\n Input,\n message,\n} from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'TextStylePanel',\n setup(__props) {\n\nconst { Group: RadioGroup, Button: RadioButton } = Radio\nconst { OptGroup: SelectOptGroup, Option: SelectOption } = Select\nconst InputGroup = Input.Group\nconst ButtonGroup = Button.Group\n\n// 注意,存在一个未知原因的BUG,如果文本加粗后文本框高度增加,画布的可视区域定位会出现错误\n// 因此在执行预置样式命令时,将加粗命令放在尽可能靠前的位置,避免字号增大后再加粗\nconst presetStyles = [\n {\n label: '大标题',\n style: {\n fontSize: '26px',\n fontWeight: 700,\n },\n cmd: [\n { command: 'clear' },\n { command: 'bold' },\n { command: 'fontsize', value: '48px' },\n { command: 'align', value: 'center' },\n ],\n },\n {\n label: '小标题',\n style: {\n fontSize: '22px',\n fontWeight: 700,\n },\n cmd: [\n { command: 'clear' },\n { command: 'bold' },\n { command: 'fontsize', value: '36px' },\n { command: 'align', value: 'center' },\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 mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { handleElement, handleElementId, richTextAttrs, availableFonts, textFormatPainter } = storeToRefs(mainStore)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\nconst { toggleFormatPainter } = useTextFormatPainter()\n\nconst updateElement = (props: Partial) => {\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n}\n\nconst bulletListPanelVisible = ref(false)\nconst orderedListPanelVisible = ref(false)\n\nconst bulletListStyleTypeOption = ref(['disc', 'circle', 'square'])\nconst orderedListStyleTypeOption = ref(['decimal', 'lower-roman', 'upper-roman', 'lower-alpha', 'upper-alpha', 'lower-greek'])\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_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_IconAddText = _resolveComponent(\"IconAddText\")!\n const _component_IconText = _resolveComponent(\"IconText\")!\n const _component_IconHighLight = _resolveComponent(\"IconHighLight\")!\n const _component_IconTextBold = _resolveComponent(\"IconTextBold\")!\n const _component_IconTextItalic = _resolveComponent(\"IconTextItalic\")!\n const _component_IconTextUnderline = _resolveComponent(\"IconTextUnderline\")!\n const _component_IconStrikethrough = _resolveComponent(\"IconStrikethrough\")!\n const _component_IconCode = _resolveComponent(\"IconCode\")!\n const _component_IconQuote = _resolveComponent(\"IconQuote\")!\n const _component_IconFormat = _resolveComponent(\"IconFormat\")!\n const _component_IconFormatBrush = _resolveComponent(\"IconFormatBrush\")!\n const _component_IconLinkOne = _resolveComponent(\"IconLinkOne\")!\n const _component_IconAlignTextLeft = _resolveComponent(\"IconAlignTextLeft\")!\n const _component_IconAlignTextCenter = _resolveComponent(\"IconAlignTextCenter\")!\n const _component_IconAlignTextRight = _resolveComponent(\"IconAlignTextRight\")!\n const _component_IconList = _resolveComponent(\"IconList\")!\n const _component_IconDown = _resolveComponent(\"IconDown\")!\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(_unref(Divider)),\n _createVNode(_unref(InputGroup), {\n compact: \"\",\n class: \"row\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(Select), {\n class: \"font-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(_unref(SelectOptGroup), { label: \"系统字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(availableFonts), (font) => {\n return (_openBlock(), _createBlock(_unref(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(_unref(SelectOptGroup), { label: \"在线字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(WEB_FONTS), (font) => {\n return (_openBlock(), _createBlock(_unref(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(_unref(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(_unref(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(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"文字颜色\"\n }, {\n default: _withCtx(() => [\n _createVNode(TextColorButton, {\n color: _unref(richTextAttrs).color,\n style: {\"flex\":\"3\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconText)\n ]),\n _: 1\n }, 8, [\"color\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"文字高亮\"\n }, {\n default: _withCtx(() => [\n _createVNode(TextColorButton, {\n color: _unref(richTextAttrs).backcolor,\n style: {\"flex\":\"3\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconHighLight)\n ]),\n _: 1\n }, 8, [\"color\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"增大字号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\"+\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"减小字号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\"-\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"加粗\"\n }, {\n default: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"斜体\"\n }, {\n default: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"下划线\"\n }, {\n default: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"删除线\"\n }, {\n default: _withCtx(() => [\n _createVNode(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 ]),\n _: 1\n }),\n _createVNode(CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"上标\"\n }, {\n default: _withCtx(() => [\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _unref(richTextAttrs).superscript,\n onClick: _cache[10] || (_cache[10] = ($event: any) => (emitRichTextCommand('superscript')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"A²\")\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"下标\"\n }, {\n default: _withCtx(() => [\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _unref(richTextAttrs).subscript,\n onClick: _cache[11] || (_cache[11] = ($event: any) => (emitRichTextCommand('subscript')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"A₂\")\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"行内代码\"\n }, {\n default: _withCtx(() => [\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _unref(richTextAttrs).code,\n onClick: _cache[12] || (_cache[12] = ($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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"引用\"\n }, {\n default: _withCtx(() => [\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _unref(richTextAttrs).blockquote,\n onClick: _cache[13] || (_cache[13] = ($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 ]),\n _: 1\n }),\n _createVNode(CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"清除格式\"\n }, {\n default: _withCtx(() => [\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n onClick: _cache[14] || (_cache[14] = ($event: any) => (emitRichTextCommand('clear')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFormat)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"格式刷\"\n }, {\n default: _withCtx(() => [\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: !!_unref(textFormatPainter),\n onClick: _cache[15] || (_cache[15] = ($event: any) => (_unref(toggleFormatPainter)()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFormatBrush)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"超链接\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(Popover), {\n placement: \"bottomRight\",\n trigger: \"click\",\n visible: linkPopoverVisible.value,\n \"onUpdate:visible\": _cache[20] || (_cache[20] = ($event: any) => ((linkPopoverVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_unref(Input), {\n value: link.value,\n \"onUpdate:value\": _cache[16] || (_cache[16] = ($event: any) => ((link).value = $event)),\n placeholder: \"请输入超链接\"\n }, null, 8, [\"value\"]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_unref(Button), {\n size: \"small\",\n disabled: !_unref(richTextAttrs).link,\n onClick: _cache[17] || (_cache[17] = ($event: any) => (updateLink())),\n style: {\"margin-right\":\"5px\"}\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"移除\")\n ]),\n _: 1\n }, 8, [\"disabled\"]),\n _createVNode(_unref(Button), {\n size: \"small\",\n type: \"primary\",\n onClick: _cache[18] || (_cache[18] = ($event: any) => (updateLink(link.value)))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"确认\")\n ]),\n _: 1\n })\n ])\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: !!_unref(richTextAttrs).link,\n onClick: _cache[19] || (_cache[19] = ($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(_unref(Divider)),\n _createVNode(_unref(RadioGroup), {\n class: \"row\",\n \"button-style\": \"solid\",\n value: _unref(richTextAttrs).align,\n onChange: _cache[21] || (_cache[21] = e => emitRichTextCommand('align', e.target.value))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"左对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"右对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_unref(ButtonGroup), { style: {\"flex\":\"15\"} }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"项目符号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(Button), {\n type: _unref(richTextAttrs).bulletList ? 'primary' : 'default',\n style: {\"flex\":\"1\"},\n onClick: _cache[22] || (_cache[22] = ($event: any) => (emitRichTextCommand('bulletList')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconList)\n ]),\n _: 1\n }, 8, [\"type\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(Popover), {\n trigger: \"click\",\n visible: bulletListPanelVisible.value,\n \"onUpdate:visible\": _cache[23] || (_cache[23] = ($event: any) => ((bulletListPanelVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_7, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(bulletListStyleTypeOption.value, (item) => {\n return (_openBlock(), _createElementBlock(\"ul\", {\n class: \"list\",\n key: item,\n style: _normalizeStyle({ listStyleType: item }),\n onClick: ($event: any) => (emitRichTextCommand('bulletList', item))\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(3, (key) => {\n return _createElementVNode(\"li\", {\n class: \"list-item\",\n key: key\n }, _hoisted_10)\n }), 64))\n ], 12, _hoisted_8))\n }), 128))\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(Button), { class: \"popover-btn\" }, {\n default: _withCtx(() => [\n _createVNode(_component_IconDown)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]),\n _: 1\n }),\n _hoisted_11,\n _createVNode(_unref(ButtonGroup), { style: {\"flex\":\"15\"} }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"编号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(Button), {\n type: _unref(richTextAttrs).orderedList ? 'primary' : 'default',\n style: {\"flex\":\"1\"},\n onClick: _cache[24] || (_cache[24] = ($event: any) => (emitRichTextCommand('orderedList')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconOrderedList)\n ]),\n _: 1\n }, 8, [\"type\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(Popover), {\n trigger: \"click\",\n visible: orderedListPanelVisible.value,\n \"onUpdate:visible\": _cache[25] || (_cache[25] = ($event: any) => ((orderedListPanelVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_12, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(orderedListStyleTypeOption.value, (item) => {\n return (_openBlock(), _createElementBlock(\"ul\", {\n class: \"list\",\n key: item,\n style: _normalizeStyle({ listStyleType: item }),\n onClick: ($event: any) => (emitRichTextCommand('orderedList', item))\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(3, (key) => {\n return _createElementVNode(\"li\", {\n class: \"list-item\",\n key: key\n }, _hoisted_15)\n }), 64))\n ], 12, _hoisted_13))\n }), 128))\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(Button), { class: \"popover-btn\" }, {\n default: _withCtx(() => [\n _createVNode(_component_IconDown)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]),\n _: 1\n })\n ]),\n _createVNode(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"减小缩进\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(Button), {\n style: {\"flex\":\"1\"},\n onClick: _cache[26] || (_cache[26] = ($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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"增大缩进\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(Button), {\n style: {\"flex\":\"1\"},\n onClick: _cache[27] || (_cache[27] = ($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(_unref(Divider)),\n _createElementVNode(\"div\", _hoisted_16, [\n _hoisted_17,\n _createVNode(_unref(Select), {\n style: {\"flex\":\"3\"},\n value: lineHeight.value,\n onChange: _cache[28] || (_cache[28] = 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(_unref(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_18, [\n _hoisted_19,\n _createVNode(_unref(Select), {\n style: {\"flex\":\"3\"},\n value: paragraphSpace.value,\n onChange: _cache[29] || (_cache[29] = 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(_unref(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_20, [\n _hoisted_21,\n _createVNode(_unref(Select), {\n style: {\"flex\":\"3\"},\n value: wordSpace.value,\n onChange: _cache[30] || (_cache[30] = 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(_unref(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_22, [\n _hoisted_23,\n _createVNode(_unref(Select), {\n style: {\"flex\":\"3\"},\n value: textIndent.value,\n onChange: _cache[31] || (_cache[31] = 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(_unref(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_24, [\n _hoisted_25,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(ColorPicker, {\n modelValue: fill.value,\n \"onUpdate:modelValue\": _cache[32] || (_cache[32] = 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(_unref(Divider)),\n _createVNode(ElementOutline),\n _createVNode(_unref(Divider)),\n _createVNode(ElementShadow),\n _createVNode(_unref(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=74237311&lang=scss&scoped=true\"\n\nimport exportComponent 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-74237311\"]])\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-1b5a047e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-flip\" }\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\nimport CheckboxButton from '@/components/CheckboxButton.vue'\nimport CheckboxButtonGroup from '@/components/CheckboxButtonGroup.vue'\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_IconFlipHorizontally = _resolveComponent(\"IconFlipHorizontally\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(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 _createTextVNode(\" 垂直翻转\")\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(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 _createTextVNode(\" 水平翻转\")\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=1b5a047e&lang=scss&scoped=true\"\n\nimport exportComponent 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-1b5a047e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, 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-a99ef6ee\"),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\nimport { Slider, Switch } from 'ant-design-vue'\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 return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_unref(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(_unref(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=a99ef6ee&lang=scss&scoped=true\"\n\nimport exportComponent 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-a99ef6ee\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, 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-7e9086fc\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-color-mask\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"1\"} }, \"重新着色(蒙版):\", -1))\nconst _hoisted_4 = {\n class: \"switch-wrapper\",\n style: {\"flex\":\"1\"}\n}\nconst _hoisted_5 = {\n class: \"row\",\n style: {\"margin-top\":\"15px\"}\n}\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))\n\nimport { ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { ImageColorElementMask } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ColorButton from './ColorButton.vue'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport {\n Popover,\n Slider,\n Switch,\n} from 'ant-design-vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementColorMask',\n setup(__props) {\n\nconst defaultColorMask = { color: 'transparent', opacity: 0.3 }\n\nconst slidesStore = useSlidesStore()\nconst { handleElement, handleElementId } = storeToRefs(useMainStore())\n\nconst colorMask = ref(defaultColorMask)\nconst hasColorMask = ref(false)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nwatch(handleElement, () => {\n if (!handleElement.value || handleElement.value.type !== 'image') return\n\n if (handleElement.value.colorMask) {\n colorMask.value = handleElement.value.colorMask\n hasColorMask.value = true\n }\n else hasColorMask.value = false\n}, { deep: true, immediate: true })\n\nconst toggleColorMask = (checked: boolean) => {\n if (!handleElement.value) return\n if (checked) {\n slidesStore.updateElement({ id: handleElement.value.id, props: { colorMask: defaultColorMask } })\n }\n else {\n slidesStore.removeElementProps({ id: handleElement.value.id, propName: 'colorMask' })\n }\n addHistorySnapshot()\n}\n\nconst updateColorMask = (colorMaskProp: Partial) => {\n const newColorMask = { ...colorMask.value, ...colorMaskProp }\n slidesStore.updateElement({ id: handleElementId.value, props: { colorMask: newColorMask } })\n addHistorySnapshot()\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_unref(Switch), {\n checked: hasColorMask.value,\n onChange: _cache[0] || (_cache[0] = checked => toggleColorMask(checked as boolean))\n }, null, 8, [\"checked\"])\n ])\n ]),\n (hasColorMask.value)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_5, [\n _hoisted_6,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(ColorPicker, {\n modelValue: colorMask.value.color,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = value => updateColorMask({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: colorMask.value.color,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _hoisted_8,\n _createVNode(_unref(Slider), {\n class: \"opacity-slider\",\n max: 1,\n min: 0,\n step: 0.05,\n value: colorMask.value.opacity,\n onChange: _cache[2] || (_cache[2] = value => updateColorMask({ opacity: value as number }))\n }, null, 8, [\"step\", \"value\"])\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./ElementColorMask.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementColorMask.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementColorMask.vue?vue&type=style&index=0&id=7e9086fc&lang=scss&scoped=true\"\n\nimport exportComponent 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-7e9086fc\"]])\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-105f4640\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"image-style-panel\" }\nconst _hoisted_2 = { class: \"clip\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"按形状:\", -1))\nconst _hoisted_4 = { class: \"shape-clip\" }\nconst _hoisted_5 = [\"onClick\"]\nconst _hoisted_6 = {\n key: 0,\n class: \"title\"\n}\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'\nimport ElementColorMask from '../common/ElementColorMask.vue'\nimport FileInput from '@/components/FileInput.vue'\nimport {\n Divider,\n Button,\n Popover,\n} from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ImageStylePanel',\n setup(__props) {\n\nconst ButtonGroup = Button.Group\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', 'colorMask'],\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_IconDown = _resolveComponent(\"IconDown\")!\n const _component_IconTransform = _resolveComponent(\"IconTransform\")!\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(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\" 裁剪图片\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\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_5))\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_6, \"按\" + _toDisplayString(type.label) + \":\", 1))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(type.children, (item) => {\n return (_openBlock(), _createBlock(_unref(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(_unref(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(_unref(Divider)),\n _createVNode(ElementColorMask),\n _createVNode(_unref(Divider)),\n _createVNode(ElementFilter),\n _createVNode(_unref(Divider)),\n _createVNode(ElementOutline),\n _createVNode(_unref(Divider)),\n _createVNode(ElementShadow),\n _createVNode(_unref(Divider)),\n _createVNode(FileInput, {\n onChange: _cache[2] || (_cache[2] = files => replaceImage(files))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(Button), { class: \"full-width-btn\" }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTransform, { class: \"btn-icon\" }),\n _createTextVNode(\" 替换图片\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 重置样式\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 设为背景\")\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=105f4640&lang=scss&scoped=true\"\n\nimport exportComponent 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-105f4640\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createTextVNode as _createTextVNode, withCtx as _withCtx, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-43498c62\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"shape-style-panel\" }\nconst _hoisted_2 = { class: \"title\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"点击替换形状\", -1))\nconst _hoisted_4 = { class: \"shape-pool\" }\nconst _hoisted_5 = { class: \"shape-list\" }\nconst _hoisted_6 = { class: \"row\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"1\"} }, null, -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 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"渐变角度:\", -1))\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 { ShapePoolItem, SHAPE_LIST, SHAPE_PATH_FORMULAS } from '@/configs/shapes'\nimport emitter, { EmitterEvents } from '@/utils/emitter'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport useTextFormatPainter from '@/hooks/useTextFormatPainter'\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'\nimport TextColorButton from '../common/TextColorButton.vue'\nimport CheckboxButton from '@/components/CheckboxButton.vue'\nimport CheckboxButtonGroup from '@/components/CheckboxButtonGroup.vue'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport ShapeItemThumbnail from '@/views/Editor/CanvasTool/ShapeItemThumbnail.vue'\nimport {\n Divider,\n Button,\n Tooltip,\n Popover,\n Slider,\n Select,\n Radio,\n Input,\n} from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ShapeStylePanel',\n setup(__props) {\n\nconst { Group: RadioGroup, Button: RadioButton } = Radio\nconst { OptGroup: SelectOptGroup, Option: SelectOption } = Select\nconst InputGroup = Input.Group\nconst ButtonGroup = Button.Group\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { handleElement, handleElementId, richTextAttrs, availableFonts, textFormatPainter } = 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()\nconst { toggleFormatPainter } = useTextFormatPainter()\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\n// 修改形状\nconst changeShape = (shape: ShapePoolItem) => {\n const { width, height } = handleElement.value as PPTShapeElement\n const props: Partial = {\n viewBox: shape.viewBox,\n path: shape.path,\n special: shape.special,\n }\n if (shape.pathFormula) {\n props.pathFormula = shape.pathFormula\n props.viewBox = [width, height]\n\n const pathFormula = SHAPE_PATH_FORMULAS[shape.pathFormula]\n if ('editable' in pathFormula) {\n props.path = pathFormula.formula(width, height, pathFormula.defaultValue)\n props.keypoint = pathFormula.defaultValue\n }\n else props.path = pathFormula.formula(width, height)\n }\n else {\n props.pathFormula = undefined\n props.keypoint = undefined\n }\n updateElement(props)\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_IconDown = _resolveComponent(\"IconDown\")!\n const _component_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_IconAddText = _resolveComponent(\"IconAddText\")!\n const _component_IconText = _resolveComponent(\"IconText\")!\n const _component_IconHighLight = _resolveComponent(\"IconHighLight\")!\n const _component_IconTextBold = _resolveComponent(\"IconTextBold\")!\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_IconFormatBrush = _resolveComponent(\"IconFormatBrush\")!\n const _component_IconAlignTextLeft = _resolveComponent(\"IconAlignTextLeft\")!\n const _component_IconAlignTextCenter = _resolveComponent(\"IconAlignTextCenter\")!\n const _component_IconAlignTextRight = _resolveComponent(\"IconAlignTextRight\")!\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 _hoisted_3,\n _createVNode(_component_IconDown)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\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_5, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.children, (shape, index) => {\n return (_openBlock(), _createBlock(ShapeItemThumbnail, {\n class: \"shape-item\",\n key: index,\n shape: shape,\n onClick: ($event: any) => (changeShape(shape))\n }, null, 8, [\"shape\", \"onClick\"]))\n }), 128))\n ])\n ]))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_unref(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(_unref(SelectOption), { value: \"fill\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"纯色填充\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"gradient\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"渐变填充\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]),\n _hoisted_7,\n (fillType.value === 'fill')\n ? (_openBlock(), _createBlock(_unref(Popover), {\n key: 0,\n trigger: \"click\"\n }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(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(_unref(SelectOption), { value: \"linear\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"线性渐变\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"radial\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"径向渐变\")\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(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(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(_unref(Divider)),\n (_unref(handleShapeElement).text?.content)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createVNode(_unref(InputGroup), {\n compact: \"\",\n class: \"row\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(Select), {\n class: \"font-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(_unref(SelectOptGroup), { label: \"系统字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(availableFonts), (font) => {\n return (_openBlock(), _createBlock(_unref(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(_unref(SelectOptGroup), { label: \"在线字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(WEB_FONTS), (font) => {\n return (_openBlock(), _createBlock(_unref(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(_unref(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(_unref(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(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"文字颜色\"\n }, {\n default: _withCtx(() => [\n _createVNode(TextColorButton, {\n color: _unref(richTextAttrs).color,\n style: {\"flex\":\"3\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconText)\n ]),\n _: 1\n }, 8, [\"color\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"文字高亮\"\n }, {\n default: _withCtx(() => [\n _createVNode(TextColorButton, {\n color: _unref(richTextAttrs).backcolor,\n style: {\"flex\":\"3\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconHighLight)\n ]),\n _: 1\n }, 8, [\"color\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"增大字号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\"+\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"减小字号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\"-\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"加粗\"\n }, {\n default: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"斜体\"\n }, {\n default: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"下划线\"\n }, {\n default: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"删除线\"\n }, {\n default: _withCtx(() => [\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _unref(richTextAttrs).strikethrough,\n onClick: _cache[15] || (_cache[15] = ($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 ]),\n _: 1\n }),\n _createVNode(CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"清除格式\"\n }, {\n default: _withCtx(() => [\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n onClick: _cache[16] || (_cache[16] = ($event: any) => (emitRichTextCommand('clear')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFormat)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"格式刷\"\n }, {\n default: _withCtx(() => [\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: !!_unref(textFormatPainter),\n onClick: _cache[17] || (_cache[17] = ($event: any) => (_unref(toggleFormatPainter)()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFormatBrush)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_unref(Divider)),\n _createVNode(_unref(RadioGroup), {\n class: \"row\",\n \"button-style\": \"solid\",\n value: _unref(richTextAttrs).align,\n onChange: _cache[18] || (_cache[18] = e => emitRichTextCommand('align', e.target.value))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"左对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"右对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(RadioGroup), {\n class: \"row\",\n \"button-style\": \"solid\",\n value: textAlign.value,\n onChange: _cache[19] || (_cache[19] = e => updateTextAlign(e.target.value))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"顶对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"底对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Divider))\n ], 64))\n : _createCommentVNode(\"\", true),\n _createVNode(ElementOutline),\n _createVNode(_unref(Divider)),\n _createVNode(ElementShadow),\n _createVNode(_unref(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=43498c62&lang=scss&scoped=true\"\n\nimport exportComponent 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-43498c62\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, createTextVNode as _createTextVNode, 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-0ca152b4\"),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 = { 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))\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))\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'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport {\n InputNumber,\n Divider,\n Popover,\n Select,\n} from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LineStylePanel',\n setup(__props) {\n\nconst SelectOption = Select.Option\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 return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createVNode(_unref(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(_unref(SelectOption), { value: \"solid\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"实线\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"dashed\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"虚线\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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_6, [\n _hoisted_7,\n _createVNode(_unref(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_8, [\n _hoisted_9,\n _createVNode(_unref(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(_unref(SelectOption), { value: \"\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"无\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"arrow\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"箭头\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"dot\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"圆点\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createVNode(_unref(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(_unref(SelectOption), { value: \"\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"无\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"arrow\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"箭头\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"dot\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"圆点\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createVNode(_unref(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=0ca152b4&lang=scss&scoped=true\"\n\nimport exportComponent 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-0ca152b4\"]])\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, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1eab5a3a\"),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 = { class: \"right\" }\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\nimport { Button, Input } from 'ant-design-vue'\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 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(_unref(Button), {\n class: \"btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (clear()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"清空\")\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(_unref(Button), {\n class: \"btn\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (closeEditor()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"取消\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\"确认\")\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=1eab5a3a&lang=scss&scoped=true\"\n\nimport exportComponent 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-1eab5a3a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, unref as _unref, withCtx as _withCtx, createElementVNode as _createElementVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, toDisplayString as _toDisplayString, withModifiers as _withModifiers, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-73760920\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"chart-style-panel\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = { class: \"row\" }\nconst _hoisted_4 = {\n key: 1,\n class: \"row\"\n}\nconst _hoisted_5 = {\n key: 2,\n class: \"row\"\n}\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 = { style: {\"flex\":\"2\"} }\nconst _hoisted_13 = {\n class: \"color-btn-wrap\",\n style: {\"flex\":\"3\"}\n}\nconst _hoisted_14 = [\"onClick\"]\nconst _hoisted_15 = { class: \"preset-themes\" }\nconst _hoisted_16 = [\"onClick\", \"onMouseenter\"]\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'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport {\n Divider,\n Button,\n Tooltip,\n Popover,\n Select,\n Modal,\n Checkbox,\n} from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst ButtonGroup = Button.Group\nconst SelectOption = Select.Option\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\nreturn (_ctx: any,_cache: any) => {\n const _component_IconEdit = _resolveComponent(\"IconEdit\")!\n const _component_IconCloseSmall = _resolveComponent(\"IconCloseSmall\")!\n const _component_IconPlus = _resolveComponent(\"IconPlus\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_unref(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 _createTextVNode(\" 编辑图表数据 \")\n ]),\n _: 1\n }),\n _createVNode(_unref(Divider)),\n (_unref(handleChartElement).chartType === 'line')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_unref(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 _createTextVNode(\"面积图样式\")\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(_unref(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 _createTextVNode(\"散点图样式\")\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_unref(Checkbox), {\n onChange: _cache[3] || (_cache[3] = e => updateOptions({ lineSmooth: e.target.checked })),\n checked: lineSmooth.value\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"使用平滑曲线\")\n ]),\n _: 1\n }, 8, [\"checked\"])\n ])\n ], 64))\n : _createCommentVNode(\"\", true),\n (_unref(handleChartElement).chartType === 'bar')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(_unref(Checkbox), {\n onChange: _cache[4] || (_cache[4] = e => updateOptions({ horizontalBars: e.target.checked })),\n checked: horizontalBars.value\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"条形图样式\")\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(_unref(Checkbox), {\n onChange: _cache[5] || (_cache[5] = e => updateOptions({ stackBars: e.target.checked })),\n checked: stackBars.value\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"堆叠样式\")\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(handleChartElement).chartType === 'pie')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createVNode(_unref(Checkbox), {\n onChange: _cache[6] || (_cache[6] = e => updateOptions({ donut: e.target.checked })),\n checked: donut.value\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"环形图样式\")\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(Divider)),\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createVNode(_unref(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(_unref(SelectOption), { value: \"\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"不显示\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"top\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"显示在上方\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"bottom\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"显示在下方\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createVNode(_unref(Divider)),\n _createElementVNode(\"div\", _hoisted_8, [\n _hoisted_9,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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_10, [\n _hoisted_11,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(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_12, _toDisplayString(index === 0 ? '主题配色:' : ''), 1),\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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_13, [\n _createVNode(ColorButton, {\n color: color,\n style: {\"width\":\"100%\"}\n }, null, 8, [\"color\"]),\n _createVNode(_unref(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_14))\n : _createCommentVNode(\"\", true)\n ]),\n _: 2\n }, 1032, [\"mouseEnterDelay\"])\n ])\n ]),\n _: 2\n }, 1024)\n ]))\n }), 128)),\n _createVNode(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(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_15, [\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_16))\n }), 128))\n ])\n }), 64))\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(Button), {\n class: \"no-padding\",\n style: {\"flex\":\"2\"}\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"推荐主题\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_unref(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 _createTextVNode(\" 添加主题色 \")\n ]),\n _: 1\n }, 8, [\"disabled\"])\n ]),\n _: 1\n }),\n _createVNode(_unref(Divider)),\n _createVNode(ElementOutline),\n _createVNode(_unref(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=73760920&lang=scss&scoped=true\"\n\nimport exportComponent 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-73760920\"]])\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-79a422e5\"),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 = { class: \"row\" }\nconst _hoisted_15 = { class: \"row\" }\nconst _hoisted_16 = /*#__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'\nimport TextColorButton from '../common/TextColorButton.vue'\nimport CheckboxButton from '@/components/CheckboxButton.vue'\nimport CheckboxButtonGroup from '@/components/CheckboxButtonGroup.vue'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport {\n Divider,\n Button,\n Tooltip,\n Popover,\n Select,\n Switch,\n Checkbox,\n Radio,\n Input,\n} from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'TableStylePanel',\n setup(__props) {\n\nconst { Group: RadioGroup, Button: RadioButton } = Radio\nconst { OptGroup: SelectOptGroup, Option: SelectOption } = Select\nconst InputGroup = Input.Group\nconst ButtonGroup = Button.Group\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: '',\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: '',\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 || '',\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_IconAddText = _resolveComponent(\"IconAddText\")!\n const _component_IconText = _resolveComponent(\"IconText\")!\n const _component_IconFill = _resolveComponent(\"IconFill\")!\n const _component_IconTextBold = _resolveComponent(\"IconTextBold\")!\n const _component_IconTextItalic = _resolveComponent(\"IconTextItalic\")!\n const _component_IconTextUnderline = _resolveComponent(\"IconTextUnderline\")!\n const _component_IconStrikethrough = _resolveComponent(\"IconStrikethrough\")!\n const _component_IconAlignTextLeft = _resolveComponent(\"IconAlignTextLeft\")!\n const _component_IconAlignTextCenter = _resolveComponent(\"IconAlignTextCenter\")!\n const _component_IconAlignTextRight = _resolveComponent(\"IconAlignTextRight\")!\n const _component_IconMinus = _resolveComponent(\"IconMinus\")!\n const _component_IconPlus = _resolveComponent(\"IconPlus\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_unref(InputGroup), {\n compact: \"\",\n class: \"row\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(SelectOptGroup), { label: \"系统字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(availableFonts), (font) => {\n return (_openBlock(), _createBlock(_unref(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(_unref(SelectOptGroup), { label: \"在线字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(WEB_FONTS), (font) => {\n return (_openBlock(), _createBlock(_unref(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(_unref(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(_unref(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(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"文字颜色\"\n }, {\n default: _withCtx(() => [\n _createVNode(TextColorButton, {\n color: textAttrs.value.color,\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconText)\n ]),\n _: 1\n }, 8, [\"color\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"单元格填充\"\n }, {\n default: _withCtx(() => [\n _createVNode(TextColorButton, {\n color: textAttrs.value.backcolor,\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFill)\n ]),\n _: 1\n }, 8, [\"color\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"加粗\"\n }, {\n default: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"斜体\"\n }, {\n default: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"下划线\"\n }, {\n default: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"删除线\"\n }, {\n default: _withCtx(() => [\n _createVNode(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(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"左对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"右对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Divider)),\n _createVNode(ElementOutline, { fixed: true }),\n _createVNode(_unref(Divider)),\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_unref(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(_unref(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(_unref(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(_unref(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(_unref(Divider)),\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createElementVNode(\"div\", _hoisted_12, [\n _createVNode(_unref(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(_unref(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 _createTextVNode(\"标题行\")\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(_unref(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 _createTextVNode(\"汇总行\")\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createVNode(_unref(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 _createTextVNode(\"第一列\")\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(_unref(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 _createTextVNode(\"最后一列\")\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _createElementVNode(\"div\", _hoisted_15, [\n _hoisted_16,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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=79a422e5&lang=scss&scoped=true\"\n\nimport exportComponent 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-79a422e5\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createTextVNode as _createTextVNode, unref as _unref, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-79d8ab96\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"latex-style-panel\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = { class: \"row\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"颜色:\", -1))\nconst _hoisted_5 = { class: \"row\" }\nconst _hoisted_6 = /*#__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'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport {\n InputNumber,\n Divider,\n Button,\n Popover,\n Modal,\n} from 'ant-design-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 return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_unref(Button), {\n style: {\"flex\":\"1\"},\n onClick: _cache[0] || (_cache[0] = ($event: any) => (latexEditorVisible.value = true))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"编辑 LaTeX\")\n ]),\n _: 1\n })\n ]),\n _createVNode(_unref(Divider)),\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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_5, [\n _hoisted_6,\n _createVNode(_unref(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(_unref(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=79d8ab96&lang=scss&scoped=true\"\n\nimport exportComponent 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-79d8ab96\"]])\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-802e1e06\"),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\" }\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\nimport FileInput from '@/components/FileInput.vue'\nimport { Button } from 'ant-design-vue'\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\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _hoisted_2,\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(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(_unref(Button), {\n style: {\"flex\":\"1\"},\n onClick: _cache[1] || (_cache[1] = ($event: any) => (updateVideo({ poster: '' })))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"重置封面\")\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=802e1e06&lang=scss&scoped=true\"\n\nimport exportComponent 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-802e1e06\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, 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-1da06c97\"),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'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport { Popover, Switch } from 'ant-design-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 return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(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(_unref(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=1da06c97&lang=scss&scoped=true\"\n\nimport exportComponent 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-1da06c97\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createVNode as _createVNode, unref as _unref, withCtx as _withCtx, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, 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-de815ffa\"),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 = { 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))\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'\nimport TextColorButton from '../common/TextColorButton.vue'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport {\n InputNumber,\n Divider,\n Button,\n Tooltip,\n Popover,\n Select,\n Radio,\n Input,\n} from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MultiStylePanel',\n setup(__props) {\n\nconst { Button: RadioButton, Group: RadioGroup } = Radio\nconst { OptGroup: SelectOptGroup, Option: SelectOption } = Select\nconst InputGroup = Input.Group\nconst ButtonGroup = Button.Group\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_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_IconAddText = _resolveComponent(\"IconAddText\")!\n const _component_IconText = _resolveComponent(\"IconText\")!\n const _component_IconHighLight = _resolveComponent(\"IconHighLight\")!\n const _component_IconAlignTextLeft = _resolveComponent(\"IconAlignTextLeft\")!\n const _component_IconAlignTextCenter = _resolveComponent(\"IconAlignTextCenter\")!\n const _component_IconAlignTextRight = _resolveComponent(\"IconAlignTextRight\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(Divider)),\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(_unref(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(_unref(SelectOption), { value: \"solid\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"实线边框\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"dashed\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"虚线边框\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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_8, [\n _hoisted_9,\n _createVNode(_unref(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(_unref(Divider)),\n _createVNode(_unref(InputGroup), {\n compact: \"\",\n class: \"row\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(SelectOptGroup), { label: \"系统字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(availableFonts), (font) => {\n return (_openBlock(), _createBlock(_unref(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(_unref(SelectOptGroup), { label: \"在线字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(WEB_FONTS), (font) => {\n return (_openBlock(), _createBlock(_unref(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(_unref(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(_unref(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(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"文字颜色\"\n }, {\n default: _withCtx(() => [\n _createVNode(TextColorButton, {\n color: _unref(richTextAttrs).color,\n style: {\"flex\":\"3\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconText)\n ]),\n _: 1\n }, 8, [\"color\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"文字高亮\"\n }, {\n default: _withCtx(() => [\n _createVNode(TextColorButton, {\n color: _unref(richTextAttrs).backcolor,\n style: {\"flex\":\"3\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconHighLight)\n ]),\n _: 1\n }, 8, [\"color\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"增大字号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\"+\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"减小字号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\"-\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"左对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"右对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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=de815ffa&lang=scss&scoped=true\"\n\nimport exportComponent 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-de815ffa\"]])\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, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-08d61819\"),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__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"对齐:\", -1))\nconst _hoisted_4 = { class: \"row\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"1\"} }, null, -1))\nconst _hoisted_6 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_7 = {\n key: 1,\n style: {\"flex\":\"1\"}\n}\nconst _hoisted_8 = { class: \"row\" }\nconst _hoisted_9 = /*#__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 { SHAPE_PATH_FORMULAS } from '@/configs/shapes'\nimport useOrderElement from '@/hooks/useOrderElement'\nimport useAlignElementToCanvas from '@/hooks/useAlignElementToCanvas'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport {\n InputNumber,\n Divider,\n Button,\n Tooltip,\n} from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementPositionPanel',\n setup(__props) {\n\nconst ButtonGroup = Button.Group\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\nconst isHorizontalText = computed(() => {\n return handleElement.value?.type === 'text' && !handleElement.value.vertical\n})\nconst isVerticalText = computed(() => {\n return handleElement.value?.type === 'text' && handleElement.value.vertical\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// 设置元素宽度、高度、旋转角度\n// 对形状设置宽高时,需要检查是否需要更新形状路径\nconst updateShapePathData = (width: number, height: number) => {\n if (handleElement.value && handleElement.value.type === 'shape' && 'pathFormula' in handleElement.value && handleElement.value.pathFormula) {\n const pathFormula = SHAPE_PATH_FORMULAS[handleElement.value.pathFormula]\n\n let path = ''\n if ('editable' in pathFormula) path = pathFormula.formula(width, height, handleElement.value.keypoint!)\n else path = pathFormula.formula(width, height)\n\n return {\n viewBox: [width, height],\n path,\n }\n }\n return null\n}\nconst updateWidth = (value: number) => {\n let props = { width: value }\n const shapePathData = updateShapePathData(value, height.value)\n if (shapePathData) props = { ...props, ...shapePathData }\n\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n}\nconst updateHeight = (value: number) => {\n let props = { height: value }\n const shapePathData = updateShapePathData(width.value, value)\n if (shapePathData) props = { ...props, ...shapePathData }\n\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_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 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(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\" 置顶\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 置底\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\" 上移\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 下移\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_unref(Divider)),\n _hoisted_3,\n _createVNode(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"左对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"水平居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"右对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"上对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"垂直居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"下对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Divider)),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_unref(InputNumber), {\n prefix: \"水平:\",\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_5,\n _createVNode(_unref(InputNumber), {\n prefix: \"垂直:\",\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 (_unref(handleElement)!.type !== 'line')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createVNode(_unref(InputNumber), {\n prefix: \"宽度:\",\n min: _unref(minSize),\n max: 1500,\n step: 5,\n disabled: _unref(isVerticalText),\n value: width.value,\n onChange: _cache[12] || (_cache[12] = value => updateWidth(value as number)),\n style: {\"flex\":\"4\"}\n }, null, 8, [\"min\", \"disabled\", \"value\"]),\n (['image', 'shape', 'audio'].includes(_unref(handleElement)!.type))\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (fixedRatio.value)\n ? (_openBlock(), _createBlock(_unref(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(_unref(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_7)),\n _createVNode(_unref(InputNumber), {\n prefix: \"高度:\",\n min: _unref(minSize),\n max: 800,\n step: 5,\n disabled: _unref(isHorizontalText) || _unref(handleElement)!.type === 'table',\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 : _createCommentVNode(\"\", true),\n (!['line', 'video', 'audio'].includes(_unref(handleElement)!.type))\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createVNode(_unref(Divider)),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_unref(InputNumber), {\n prefix: \"旋转:\",\n min: -180,\n max: 180,\n step: 5,\n value: rotate.value,\n onChange: _cache[16] || (_cache[16] = value => updateRotate(value as number)),\n style: {\"flex\":\"8\"}\n }, null, 8, [\"value\"]),\n _hoisted_9,\n _createElementVNode(\"div\", {\n class: \"text-btn\",\n onClick: _cache[17] || (_cache[17] = ($event: any) => (updateRotate45('-'))),\n style: {\"flex\":\"5\"}\n }, [\n _createVNode(_component_IconRotate),\n _createTextVNode(\" -45°\")\n ]),\n _createElementVNode(\"div\", {\n class: \"text-btn\",\n onClick: _cache[18] || (_cache[18] = ($event: any) => (updateRotate45('+'))),\n style: {\"flex\":\"5\"}\n }, [\n _createVNode(_component_IconRotate, {\n style: _normalizeStyle({ transform: 'rotateY(180deg)' })\n }, null, 8, [\"style\"]),\n _createTextVNode(\" +45°\")\n ])\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=08d61819&lang=scss&scoped=true\"\n\nimport exportComponent 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-08d61819\"]])\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-7a134147\"),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 = {\n key: 1,\n class: \"tip\"\n}\nconst _hoisted_10 = { class: \"sequence-content\" }\nconst _hoisted_11 = { class: \"index\" }\nconst _hoisted_12 = { class: \"text\" }\nconst _hoisted_13 = { class: \"handler\" }\nconst _hoisted_14 = {\n key: 0,\n class: \"configs\"\n}\nconst _hoisted_15 = { class: \"config-item\" }\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"3\"} }, \"持续时长:\", -1))\nconst _hoisted_17 = { class: \"config-item\" }\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"3\"} }, \"触发方式:\", -1))\nconst _hoisted_19 = { class: \"config-item\" }\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'\nimport {\n InputNumber,\n Divider,\n Button,\n Tooltip,\n Popover,\n Select,\n} from 'ant-design-vue'\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 SelectOption = Select.Option\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_IconClick = _resolveComponent(\"IconClick\")!\n const _component_IconPlayOne = _resolveComponent(\"IconPlayOne\")!\n const _component_IconCloseSmall = _resolveComponent(\"IconCloseSmall\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(handleElement))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createVNode(_unref(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(_unref(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 _createTextVNode(\" 添加动画 \")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createVNode(_component_IconClick, { style: {\"margin-right\":\"5px\"} }),\n _createTextVNode(\" 选中画布中的元素添加动画\")\n ])),\n _createVNode(_unref(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_10, [\n _createElementVNode(\"div\", _hoisted_11, _toDisplayString(element.index), 1),\n _createElementVNode(\"div\", _hoisted_12, \"【\" + _toDisplayString(element.elType) + \"】\" + _toDisplayString(element.animationEffect), 1),\n _createElementVNode(\"div\", _hoisted_13, [\n _createVNode(_unref(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(_unref(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_14, [\n _createVNode(_unref(Divider), { style: {\"margin\":\"16px 0\"} }),\n _createElementVNode(\"div\", _hoisted_15, [\n _hoisted_16,\n _createVNode(_unref(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_17, [\n _hoisted_18,\n _createVNode(_unref(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(_unref(SelectOption), { value: \"click\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"主动触发\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"meantime\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"与上一动画同时\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"auto\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"上一动画之后\")\n ]),\n _: 1\n })\n ]),\n _: 2\n }, 1032, [\"value\", \"onChange\"])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n _createVNode(_unref(Button), {\n style: {\"flex\":\"1\"},\n onClick: ($event: any) => (openAnimationPool(element.id))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"更换动画\")\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=7a134147&lang=scss&scoped=true\"\n\nimport exportComponent 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-7a134147\"]])\n\nexport default __exports__","export interface PresetTheme {\r\n background: string\r\n fontColor: string\r\n fontname: string\r\n colors: string[]\r\n}\r\n\r\nexport const PRESET_THEMES: PresetTheme[] = [\r\n {\r\n background: '#ffffff',\r\n fontColor: '#333333',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#5b9bd5', '#ed7d31', '#a5a5a5', '#ffc000', '#4472c4', '#70ad47'],\r\n },\r\n {\r\n background: '#ffffff',\r\n fontColor: '#333333',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#83992a', '#3c9670', '#44709d', '#a23b32', '#d87728', '#deb340'],\r\n },\r\n {\r\n background: '#ffffff',\r\n fontColor: '#333333',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#e48312', '#bd582c', '#865640', '#9b8357', '#c2bc80', '#94a088'],\r\n },\r\n {\r\n background: '#ffffff',\r\n fontColor: '#333333',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#bdc8df', '#003fa9', '#f5ba00', '#ff7567', '#7676d9', '#923ffc'],\r\n },\r\n {\r\n background: '#ffffff',\r\n fontColor: '#333333',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#90c225', '#54a121', '#e6b91e', '#e86618', '#c42f19', '#918756'],\r\n },\r\n {\r\n background: '#ffffff',\r\n fontColor: '#333333',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#1cade4', '#2683c6', '#27ced7', '#42ba97', '#3e8853', '#62a39f'],\r\n },\r\n {\r\n background: '#e9efd6',\r\n fontColor: '#333333',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#a5300f', '#de7e18', '#9f8351', '#728653', '#92aa4c', '#6aac91'],\r\n },\r\n {\r\n background: '#17444e',\r\n fontColor: '#ffffff',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#b01513', '#ea6312', '#e6b729', '#6bab90', '#55839a', '#9e5d9d'],\r\n },\r\n {\r\n background: '#36234d',\r\n fontColor: '#ffffff',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#b31166', '#e33d6f', '#e45f3c', '#e9943a', '#9b6bf2', '#d63cd0'],\r\n },\r\n {\r\n background: '#247fad',\r\n fontColor: '#ffffff',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#052f61', '#a50e82', '#14967c', '#6a9e1f', '#e87d37', '#c62324'],\r\n },\r\n {\r\n background: '#103f55',\r\n fontColor: '#ffffff',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#40aebd', '#97e8d5', '#a1cf49', '#628f3e', '#f2df3a', '#fcb01c'],\r\n },\r\n {\r\n background: '#242367',\r\n fontColor: '#ffffff',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#ac3ec1', '#477bd1', '#46b298', '#90ba4c', '#dd9d31', '#e25345'],\r\n },\r\n {\r\n background: '#e4b75e',\r\n fontColor: '#333333',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#f0a22e', '#a5644e', '#b58b80', '#c3986d', '#a19574', '#c17529'],\r\n },\r\n {\r\n background: '#333333',\r\n fontColor: '#ffffff',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#bdc8df', '#003fa9', '#f5ba00', '#ff7567', '#7676d9', '#923ffc'],\r\n },\r\n]","import tinycolor from 'tinycolor2'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { Slide } from '@/types/slides'\nimport { PresetTheme } from '@/configs/theme'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default () => {\n const slidesStore = useSlidesStore()\n const { slides, currentSlide, theme } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 获取指定幻灯片内所有颜色(主要的)\n const getSlideAllColors = (slide: Slide) => {\n const colors: string[] = []\n for (const el of slide.elements) {\n if (el.type === 'shape' && tinycolor(el.fill).getAlpha() !== 0) {\n const color = tinycolor(el.fill).toRgbString()\n if (!colors.includes(color)) colors.push(color)\n }\n if (el.type === 'text' && el.fill && tinycolor(el.fill).getAlpha() !== 0) {\n const color = tinycolor(el.fill).toRgbString()\n if (!colors.includes(color)) colors.push(color)\n }\n if (el.type === 'table' && el.theme && tinycolor(el.theme.color).getAlpha() !== 0) {\n const color = tinycolor(el.theme.color).toRgbString()\n if (!colors.includes(color)) colors.push(color)\n }\n if (el.type === 'chart' && el.fill && tinycolor(el.fill).getAlpha() !== 0) {\n const color = tinycolor(el.fill).toRgbString()\n if (!colors.includes(color)) colors.push(color)\n }\n if (el.type === 'line' && tinycolor(el.color).getAlpha() !== 0) {\n const color = tinycolor(el.color).toRgbString()\n if (!colors.includes(color)) colors.push(color)\n }\n if (el.type === 'audio' && tinycolor(el.color).getAlpha() !== 0) {\n const color = tinycolor(el.color).toRgbString()\n if (!colors.includes(color)) colors.push(color)\n }\n }\n return colors\n }\n \n // 创建原颜色与新颜色的对应关系表\n const createSlideThemeColorMap = (slide: Slide, newColors: string[]): { [key: string]: string } => {\n const oldColors = getSlideAllColors(slide)\n const themeColorMap = {}\n \n if (oldColors.length > newColors.length) {\n const analogous = tinycolor(newColors[0]).analogous(oldColors.length - newColors.length + 10)\n const otherColors = analogous.map(item => item.toHexString()).slice(1)\n newColors.push(...otherColors)\n }\n for (let i = 0; i < oldColors.length; i++) {\n themeColorMap[oldColors[i]] = newColors[i]\n }\n \n return themeColorMap\n }\n \n // 设置幻灯片主题\n const setSlideTheme = (slide: Slide, theme: PresetTheme) => {\n const colorMap = createSlideThemeColorMap(slide, theme.colors)\n \n if (!slide.background || slide.background.type !== 'image') {\n slide.background = {\n type: 'solid',\n color: theme.background,\n }\n }\n for (const el of slide.elements) {\n if (el.type === 'shape') {\n el.fill = colorMap[tinycolor(el.fill).toRgbString()] || el.fill\n if (el.gradient) delete el.gradient\n }\n if (el.type === 'text') {\n if (el.fill) el.fill = colorMap[tinycolor(el.fill).toRgbString()] || el.fill\n el.defaultColor = theme.fontColor\n el.defaultFontName = theme.fontname\n }\n if (el.type === 'table') {\n if (el.theme) el.theme.color = colorMap[tinycolor(el.theme.color).toRgbString()] || el.theme.color\n for (const rowCells of el.data) {\n for (const cell of rowCells) {\n if (cell.style) {\n cell.style.color = theme.fontColor\n cell.style.fontname = theme.fontname\n }\n }\n }\n }\n if (el.type === 'chart') {\n el.themeColor = [colorMap[tinycolor(el.themeColor[0]).toRgbString()]] || el.themeColor\n el.gridColor = theme.fontColor\n }\n if (el.type === 'line') el.color = colorMap[tinycolor(el.color).toRgbString()] || el.color\n if (el.type === 'audio') el.color = colorMap[tinycolor(el.color).toRgbString()] || el.color\n if (el.type === 'latex') el.color = theme.fontColor\n }\n }\n \n // 应用预置主题(单页)\n const applyPresetThemeToSingleSlide = (theme: PresetTheme) => {\n const newSlide: Slide = JSON.parse(JSON.stringify(currentSlide.value))\n setSlideTheme(newSlide, theme)\n slidesStore.updateSlide({\n background: newSlide.background,\n elements: newSlide.elements,\n })\n addHistorySnapshot()\n }\n \n // 应用预置主题(全部)\n const applyPresetThemeToAllSlides = (theme: PresetTheme) => {\n const newSlides: Slide[] = JSON.parse(JSON.stringify(slides.value))\n for (const slide of newSlides) {\n setSlideTheme(slide, theme)\n }\n slidesStore.setTheme({\n backgroundColor: theme.background,\n themeColor: theme.colors[0],\n fontColor: theme.fontColor,\n fontName: theme.fontname,\n })\n slidesStore.setSlides(newSlides)\n addHistorySnapshot()\n }\n \n // 将当前主题配置应用到全部页面\n const applyThemeToAllSlides = () => {\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 type: 'solid',\n color: backgroundColor\n }\n }\n \n for (const el of slide.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 return {\n applyPresetThemeToSingleSlide,\n applyPresetThemeToAllSlides,\n applyThemeToAllSlides,\n }\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-93e8361c\"),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__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"1\"} }, null, -1))\nconst _hoisted_5 = {\n key: 0,\n class: \"background-image-wrapper\"\n}\nconst _hoisted_6 = { class: \"background-image\" }\nconst _hoisted_7 = {\n key: 1,\n class: \"background-gradient-wrapper\"\n}\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 = { class: \"row\" }\nconst _hoisted_15 = { class: \"row\" }\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"画布尺寸:\", -1))\nconst _hoisted_17 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"全局主题\", -1))\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 = { class: \"row\" }\nconst _hoisted_23 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"背景颜色:\", -1))\nconst _hoisted_24 = { class: \"row\" }\nconst _hoisted_25 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"主题色:\", -1))\nconst _hoisted_26 = { class: \"row\" }\nconst _hoisted_27 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"预置主题\", -1))\nconst _hoisted_28 = { class: \"theme-list\" }\nconst _hoisted_29 = { class: \"theme-item-content\" }\nconst _hoisted_30 = { class: \"colors\" }\nconst _hoisted_31 = { class: \"btns\" }\nconst _hoisted_32 = [\"onClick\"]\nconst _hoisted_33 = [\"onClick\"]\n\nimport { computed, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { SlideBackground, SlideTheme } from '@/types/slides'\nimport { PRESET_THEMES } from '@/configs/theme'\nimport { WEB_FONTS } from '@/configs/font'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport useSlideTheme from '@/hooks/useSlideTheme'\nimport { getImageDataURL } from '@/utils/image'\n\nimport ColorButton from './common/ColorButton.vue'\nimport FileInput from '@/components/FileInput.vue'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport {\n Divider,\n Button,\n Popover,\n Slider,\n Select,\n} from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'SlideDesignPanel',\n setup(__props) {\n\nconst { OptGroup: SelectOptGroup, Option: SelectOption } = Select\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()\nconst {\n applyPresetThemeToSingleSlide,\n applyPresetThemeToAllSlides,\n applyThemeToAllSlides,\n} = useSlideTheme()\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 updateViewportRatio = (value: number) => {\n slidesStore.setViewportRatio(value)\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconPlus = _resolveComponent(\"IconPlus\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _hoisted_2,\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_unref(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(_unref(SelectOption), { value: \"solid\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"纯色填充\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"image\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"图片填充\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"gradient\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"渐变填充\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]),\n _hoisted_4,\n (_unref(background).type === 'solid')\n ? (_openBlock(), _createBlock(_unref(Popover), {\n key: 0,\n trigger: \"click\"\n }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(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(_unref(SelectOption), { value: \"contain\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"缩放\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"repeat\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"拼贴\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"cover\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"缩放铺满\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]))\n : (_openBlock(), _createBlock(_unref(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(_unref(SelectOption), { value: \"linear\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"线性渐变\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"radial\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"径向渐变\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]))\n ]),\n (_unref(background).type === 'image')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createVNode(FileInput, {\n onChange: _cache[4] || (_cache[4] = files => uploadBackgroundImage(files))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_6, [\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_7, [\n _createElementVNode(\"div\", _hoisted_8, [\n _hoisted_9,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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_10, [\n _hoisted_11,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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_12, [\n _hoisted_13,\n _createVNode(_unref(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_14, [\n _createVNode(_unref(Button), {\n style: {\"flex\":\"1\"},\n onClick: _cache[8] || (_cache[8] = ($event: any) => (applyBackgroundAllSlide()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"应用背景到全部\")\n ]),\n _: 1\n })\n ]),\n _createVNode(_unref(Divider)),\n _createElementVNode(\"div\", _hoisted_15, [\n _hoisted_16,\n _createVNode(_unref(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(_unref(SelectOption), { value: 0.5625 }, {\n default: _withCtx(() => [\n _createTextVNode(\"宽屏 16 : 9\")\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_unref(SelectOption), { value: 0.625 }, {\n default: _withCtx(() => [\n _createTextVNode(\"宽屏 16 : 10\")\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_unref(SelectOption), { value: 0.75 }, {\n default: _withCtx(() => [\n _createTextVNode(\"标准 4 : 3\")\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_unref(SelectOption), { value: 0.70710678 }, {\n default: _withCtx(() => [\n _createTextVNode(\"纸张 A3 / A4\")\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createVNode(_unref(Divider)),\n _hoisted_17,\n _createElementVNode(\"div\", _hoisted_18, [\n _hoisted_19,\n _createVNode(_unref(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(_unref(SelectOptGroup), { label: \"系统字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(availableFonts), (font) => {\n return (_openBlock(), _createBlock(_unref(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(_unref(SelectOptGroup), { label: \"在线字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(WEB_FONTS), (font) => {\n return (_openBlock(), _createBlock(_unref(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_20, [\n _hoisted_21,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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_22, [\n _hoisted_23,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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_24, [\n _hoisted_25,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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\", _hoisted_26, [\n _createVNode(_unref(Button), {\n style: {\"flex\":\"1\"},\n onClick: _cache[14] || (_cache[14] = ($event: any) => (_unref(applyThemeToAllSlides)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"应用主题到全部\")\n ]),\n _: 1\n })\n ]),\n _createVNode(_unref(Divider)),\n _hoisted_27,\n _createElementVNode(\"div\", _hoisted_28, [\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({\n backgroundColor: item.background,\n fontFamily: item.fontname,\n })\n }, [\n _createElementVNode(\"div\", _hoisted_29, [\n _createElementVNode(\"div\", {\n class: \"text\",\n style: _normalizeStyle({ color: item.fontColor })\n }, \"文字 Aa\", 4),\n _createElementVNode(\"div\", _hoisted_30, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.colors, (color, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"color-block\",\n key: index,\n style: _normalizeStyle({ backgroundColor: color})\n }, null, 4))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_31, [\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: ($event: any) => (_unref(applyPresetThemeToSingleSlide)(item))\n }, \"应用\", 8, _hoisted_32),\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: ($event: any) => (_unref(applyPresetThemeToAllSlides)(item))\n }, \"应用全局\", 8, _hoisted_33)\n ])\n ])\n ], 4))\n }), 128))\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=93e8361c&lang=scss&scoped=true\"\n\nimport exportComponent 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-93e8361c\"]])\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, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-c4273212\"),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\" }\n\nimport { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { TurningMode } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport { Button } from 'ant-design-vue'\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 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(_unref(Button), {\n style: {\"width\":\"100%\"},\n onClick: _cache[0] || (_cache[0] = ($event: any) => (applyAllSlide()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"应用到全部\")\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=c4273212&lang=scss&scoped=true\"\n\nimport exportComponent 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-c4273212\"]])\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-c88d31ba\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"multi-position-panel\" }\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\nimport {\n Divider,\n Button,\n Tooltip,\n} from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MultiPositionPanel',\n setup(__props) {\n\nconst ButtonGroup = Button.Group\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_IconAlignHorizontally = _resolveComponent(\"IconAlignHorizontally\")!\n const _component_IconAlignRight = _resolveComponent(\"IconAlignRight\")!\n const _component_IconAlignTop = _resolveComponent(\"IconAlignTop\")!\n const _component_IconAlignVertically = _resolveComponent(\"IconAlignVertically\")!\n const _component_IconAlignBottom = _resolveComponent(\"IconAlignBottom\")!\n const _component_IconGroup = _resolveComponent(\"IconGroup\")!\n const _component_IconUngroup = _resolveComponent(\"IconUngroup\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"左对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"水平居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"右对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"上对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"垂直居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"下对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(ButtonGroup), {\n key: 0,\n class: \"row\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(Button), {\n style: {\"flex\":\"1\"},\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_unref(uniformHorizontalDisplay)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"水平均匀分布\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), {\n style: {\"flex\":\"1\"},\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_unref(uniformVerticalDisplay)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"垂直均匀分布\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(Divider)),\n _createVNode(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\"组合\")\n ]),\n _: 1\n }, 8, [\"disabled\"]),\n _createVNode(_unref(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 _createTextVNode(\"取消组合\")\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=c88d31ba&lang=scss&scoped=true\"\n\nimport exportComponent 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-c88d31ba\"]])\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 { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5a56d59c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"fullscreen-spin\"\n}\nconst _hoisted_2 = { class: \"spin\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"spinner\" }, null, -1))\nconst _hoisted_4 = { class: \"text\" }\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\n\n\nreturn (_ctx: any,_cache: any) => {\n return (__props.loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(__props.tip), 1)\n ])\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=5a56d59c&lang=scss&scoped=true\"\n\nimport exportComponent 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-5a56d59c\"]])\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, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-92a8f63e\"),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 = { class: \"row\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"导出范围:\", -1))\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: \"row\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"忽略在线字体:\", -1))\nconst _hoisted_14 = { class: \"config-item\" }\nconst _hoisted_15 = { class: \"btns\" }\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'\nimport FullscreenSpin from '@/components/FullscreenSpin.vue'\nimport {\n Button,\n Tooltip,\n Slider,\n Switch,\n Radio,\n} from 'ant-design-vue'\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\nconst { Group: RadioGroup, Button: RadioButton } = Radio\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 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(_unref(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(_unref(RadioButton), {\n style: {\"width\":\"50%\"},\n value: \"jpeg\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"JPEG\")\n ]),\n _: 1\n }),\n _createVNode(_unref(RadioButton), {\n style: {\"width\":\"50%\"},\n value: \"png\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"PNG\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createVNode(_unref(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(_unref(RadioButton), {\n style: {\"width\":\"33.33%\"},\n value: \"all\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"全部\")\n ]),\n _: 1\n }),\n _createVNode(_unref(RadioButton), {\n style: {\"width\":\"33.33%\"},\n value: \"current\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"当前页\")\n ]),\n _: 1\n }),\n _createVNode(_unref(RadioButton), {\n style: {\"width\":\"33.33%\"},\n value: \"custom\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"自定义\")\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(_unref(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_10, [\n _hoisted_11,\n _createVNode(_unref(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_12, [\n _hoisted_13,\n _createElementVNode(\"div\", _hoisted_14, [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"导出时默认忽略在线字体,若您在幻灯片中使用了在线字体,且希望导出后保留相关样式,可选择关闭【忽略在线字体】选项,但要注意这将会增加导出用时。\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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_15, [\n _createVNode(_unref(Button), {\n class: \"btn export\",\n type: \"primary\",\n onClick: _cache[5] || (_cache[5] = ($event: any) => (expImage()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"导出图片\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), {\n class: \"btn close\",\n onClick: _cache[6] || (_cache[6] = ($event: any) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"关闭\")\n ]),\n _: 1\n })\n ]),\n _createVNode(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=92a8f63e&lang=scss&scoped=true\"\n\nimport exportComponent 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-92a8f63e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, 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-0cc0995e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"export-json-dialog\" }\nconst _hoisted_2 = { class: \"preview\" }\nconst _hoisted_3 = { class: \"btns\" }\n\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useExport from '@/hooks/useExport'\n\nimport { Button } from 'ant-design-vue'\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 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(_unref(Button), {\n class: \"btn export\",\n type: \"primary\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_unref(exportJSON)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"导出 JSON\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), {\n class: \"btn close\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"关闭\")\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=0cc0995e&lang=scss&scoped=true\"\n\nimport exportComponent 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-0cc0995e\"]])\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 }\n\n const handleAfterprint = () => {\n iframe.removeEventListener('load', handleLoadIframe)\n iframeContentWindow.removeEventListener('afterprint', handleAfterprint)\n document.body.removeChild(iframe)\n }\n\n iframe.addEventListener('load', handleLoadIframe)\n iframeContentWindow.addEventListener('afterprint', handleAfterprint)\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, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-527855fb\"),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 = { class: \"row\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"每页数量:\", -1))\nconst _hoisted_8 = { class: \"row\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"边缘留白:\", -1))\nconst _hoisted_10 = { class: \"config-item\" }\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"tip\" }, \" 注意:若打印预览与实际样式不一致,请在弹出的打印窗口中勾选【背景图形】选项。 \", -1))\nconst _hoisted_12 = { class: \"btns\" }\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'\nimport {\n Button,\n Select,\n Switch,\n Radio,\n} from 'ant-design-vue'\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\nconst { Group: RadioGroup, Button: RadioButton } = Radio\nconst SelectOption = Select.Option\n\n\n\nconst { slides, currentSlide, viewportRatio } = 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' ? 1600 * viewportRatio.value * count.value : 1600 * viewportRatio.value,\n margin: padding.value ? 50 : 0,\n }\n print(pdfThumbnailsRef.value, pageSize)\n}\n\nreturn (_ctx: any,_cache: any) => {\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(_unref(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(_unref(RadioButton), {\n style: {\"width\":\"50%\"},\n value: \"all\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"全部幻灯片\")\n ]),\n _: 1\n }),\n _createVNode(_unref(RadioButton), {\n style: {\"width\":\"50%\"},\n value: \"current\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"当前幻灯片\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createVNode(_unref(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(_unref(SelectOption), { value: 1 }, {\n default: _withCtx(() => [\n _createTextVNode(\"1\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: 2 }, {\n default: _withCtx(() => [\n _createTextVNode(\"2\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: 3 }, {\n default: _withCtx(() => [\n _createTextVNode(\"3\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _hoisted_9,\n _createElementVNode(\"div\", _hoisted_10, [\n _createVNode(_unref(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_11\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _createVNode(_unref(Button), {\n class: \"btn export\",\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (expPDF()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"打印 / 导出 PDF\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), {\n class: \"btn close\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"关闭\")\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=527855fb&lang=scss&scoped=true\"\n\nimport exportComponent 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-527855fb\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, unref as _unref, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-018847a8\"),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 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_6 = [\"data-range\"]\nconst _hoisted_7 = { class: \"row\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"覆盖默认母版:\", -1))\nconst _hoisted_9 = { class: \"config-item\" }\nconst _hoisted_10 = { class: \"btns\" }\n\nimport { computed, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useExport from '@/hooks/useExport'\n\nimport FullscreenSpin from '@/components/FullscreenSpin.vue'\nimport {\n Button,\n Slider,\n Switch,\n Radio,\n} from 'ant-design-vue'\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\nconst { Group: RadioGroup, Button: RadioButton } = Radio\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 return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createVNode(_unref(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(_unref(RadioButton), {\n style: {\"width\":\"33.33%\"},\n value: \"all\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"全部\")\n ]),\n _: 1\n }),\n _createVNode(_unref(RadioButton), {\n style: {\"width\":\"33.33%\"},\n value: \"current\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"当前页\")\n ]),\n _: 1\n }),\n _createVNode(_unref(RadioButton), {\n style: {\"width\":\"33.33%\"},\n value: \"custom\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"自定义\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n (rangeType.value === 'custom')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", {\n class: \"title\",\n \"data-range\": `(${range.value[0]} ~ ${range.value[1]})`\n }, \"自定义范围:\", 8, _hoisted_6),\n _createVNode(_unref(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_7, [\n _hoisted_8,\n _createElementVNode(\"div\", _hoisted_9, [\n _createVNode(_unref(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_10, [\n _createVNode(_unref(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 _createTextVNode(\"导出 PPTX\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), {\n class: \"btn close\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"关闭\")\n ]),\n _: 1\n })\n ]),\n _createVNode(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=018847a8&lang=scss&scoped=true\"\n\nimport exportComponent 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-018847a8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, unref as _unref, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-40c1ae3a\"),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 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_6 = [\"data-range\"]\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"tip\" }, \" 提示:.pptist 是本应用的特有文件后缀,支持将该类型的文件导入回应用中。 \", -1))\nconst _hoisted_8 = { class: \"btns\" }\n\nimport { computed, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useExport from '@/hooks/useExport'\n\nimport {\n Button,\n Slider,\n Radio,\n} from 'ant-design-vue'\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\nconst { Group: RadioGroup, Button: RadioButton } = Radio\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 return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createVNode(_unref(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(_unref(RadioButton), {\n style: {\"width\":\"33.33%\"},\n value: \"all\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"全部\")\n ]),\n _: 1\n }),\n _createVNode(_unref(RadioButton), {\n style: {\"width\":\"33.33%\"},\n value: \"current\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"当前页\")\n ]),\n _: 1\n }),\n _createVNode(_unref(RadioButton), {\n style: {\"width\":\"33.33%\"},\n value: \"custom\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"自定义\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n (rangeType.value === 'custom')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", {\n class: \"title\",\n \"data-range\": `(${range.value[0]} ~ ${range.value[1]})`\n }, \"自定义范围:\", 8, _hoisted_6),\n _createVNode(_unref(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_7\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_unref(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 _createTextVNode(\"导出 .pptist 文件\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), {\n class: \"btn close\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"关闭\")\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=40c1ae3a&lang=scss&scoped=true\"\n\nimport exportComponent 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-40c1ae3a\"]])\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 { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, renderSlot as _renderSlot, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-68252e2c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"title\" }\nconst _hoisted_2 = { class: \"content\" }\n\nimport { onMounted, ref } from 'vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MoveablePanel',\n props: {\n width: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n left: {\n type: Number,\n default: 10,\n },\n top: {\n type: Number,\n default: 10,\n },\n title: {\n type: String,\n default: '',\n },\n moveable: {\n type: Boolean,\n default: 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 x = ref(0)\nconst y = ref(0)\n\nonMounted(() => {\n if (props.left >= 0) x.value = props.left\n else x.value = document.body.clientWidth + props.left - props.width\n\n if (props.top >= 0) y.value = props.top\n else y.value = document.body.clientHeight + props.top - props.height\n})\n\nconst startMove = (e: MouseEvent) => {\n if (!props.moveable) return\n\n let isMouseDown = true\n\n const windowWidth = document.body.clientWidth\n const clientHeight = document.body.clientHeight\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n\n const originLeft = x.value\n const originTop = y.value\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const moveX = e.pageX - startPageX\n const moveY = e.pageY - startPageY\n\n let left = originLeft + moveX\n let top = originTop + moveY\n\n if (left < 0) left = 0\n if (top < 0) top = 0\n if (left + props.width > windowWidth) left = windowWidth - props.width\n if (top + props.height > clientHeight) top = clientHeight - props.height\n\n x.value = left\n y.value = top\n }\n document.onmouseup = () => {\n isMouseDown = false\n\n document.onmousemove = null\n document.onmouseup = null\n }\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconClose = _resolveComponent(\"IconClose\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"moveable-panel\",\n style: _normalizeStyle({\n width: __props.width + 'px',\n height: __props.height + 'px',\n left: x.value + 'px',\n top: y.value + 'px',\n })\n }, [\n (__props.title)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", {\n class: \"header\",\n onMousedown: _cache[1] || (_cache[1] = $event => startMove($event))\n }, [\n _createElementVNode(\"div\", _hoisted_1, _toDisplayString(__props.title), 1),\n _createElementVNode(\"div\", {\n class: \"close-btn\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('close')))\n }, [\n _createVNode(_component_IconClose)\n ])\n ], 32),\n _createElementVNode(\"div\", _hoisted_2, [\n _renderSlot(_ctx.$slots, \"default\")\n ])\n ], 64))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"content\",\n onMousedown: _cache[2] || (_cache[2] = $event => startMove($event))\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ], 32))\n ], 4))\n}\n}\n\n})","import script from \"./MoveablePanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MoveablePanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MoveablePanel.vue?vue&type=style&index=0&id=68252e2c&lang=scss&scoped=true\"\n\nimport exportComponent 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-68252e2c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, withKeys as _withKeys, toDisplayString as _toDisplayString, withModifiers as _withModifiers, createBlock as _createBlock, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-64f9ccca\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"handler\"\n}\nconst _hoisted_2 = { class: \"btns\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"icon-btns\"\n}\nconst _hoisted_4 = { class: \"element-list\" }\nconst _hoisted_5 = {\n key: 0,\n class: \"group-els\"\n}\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"group-title\" }, \"组合\", -1))\nconst _hoisted_7 = [\"onClick\", \"onDblclick\"]\nconst _hoisted_8 = [\"id\", \"value\", \"onBlur\", \"onKeydown\"]\nconst _hoisted_9 = {\n key: 1,\n class: \"name\"\n}\nconst _hoisted_10 = { class: \"icons\" }\nconst _hoisted_11 = [\"onClick\", \"onDblclick\"]\nconst _hoisted_12 = [\"id\", \"value\", \"onBlur\", \"onKeydown\"]\nconst _hoisted_13 = {\n key: 1,\n class: \"name\"\n}\nconst _hoisted_14 = { class: \"icons\" }\n\nimport { computed, nextTick, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore, useMainStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport { ELEMENT_TYPE_ZH } from '@/configs/element'\nimport useOrderElement from '@/hooks/useOrderElement'\nimport { ElementOrderCommands } from '@/types/edit'\n\nimport MoveablePanel from '@/components/MoveablePanel.vue'\nimport { Button, Input } from 'ant-design-vue'\n\ninterface GroupElements {\n type: 'group'\n id: string\n elements: PPTElement[]\n}\ntype ElementItem = PPTElement | GroupElements\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'SelectPanel',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst mainStore = useMainStore()\nconst { currentSlide } = storeToRefs(slidesStore)\nconst { handleElement, handleElementId, activeElementIdList, activeGroupElementId, hiddenElementIdList } = storeToRefs(mainStore)\n\nconst { orderElement } = useOrderElement()\n\nconst elements = computed(() => {\n const _elements: ElementItem[] = []\n\n for (const el of currentSlide.value.elements) {\n if (el.groupId) {\n const lastItem = _elements[_elements.length - 1]\n\n if (lastItem && lastItem.type === 'group' && lastItem.id && lastItem.id === el.groupId) {\n lastItem.elements.push(el)\n }\n else _elements.push({ type: 'group', id: el.groupId, elements: [el] })\n }\n else _elements.push(el)\n }\n\n return _elements\n})\n\nconst selectGroupEl = (item: GroupElements, id: string) => {\n if (handleElementId.value === id) return\n if (hiddenElementIdList.value.includes(id)) return\n\n const idList = item.elements.map(el => el.id)\n mainStore.setActiveElementIdList(idList)\n mainStore.setHandleElementId(id)\n nextTick(() => mainStore.setActiveGroupElementId(id))\n}\n\nconst selectEl = (id: string) => {\n if (handleElementId.value === id) return\n if (hiddenElementIdList.value.includes(id)) return\n\n mainStore.setActiveElementIdList([id])\n}\n\nconst hideElement = (id: string) => {\n if (hiddenElementIdList.value.includes(id)) {\n mainStore.setHiddenElementIdList(hiddenElementIdList.value.filter(item => item !== id))\n }\n else mainStore.setHiddenElementIdList([...hiddenElementIdList.value, id])\n\n if (activeElementIdList.value.includes(id)) mainStore.setActiveElementIdList([])\n}\n\nconst showAll = () => {\n const currentSlideElIdList = currentSlide.value.elements.map(item => item.id)\n const needHiddenElementIdList = hiddenElementIdList.value.filter(item => !currentSlideElIdList.includes(item))\n mainStore.setHiddenElementIdList(needHiddenElementIdList)\n}\nconst hideAll = () => {\n const currentSlideElIdList = currentSlide.value.elements.map(item => item.id)\n mainStore.setHiddenElementIdList([...hiddenElementIdList.value, ...currentSlideElIdList])\n if (activeElementIdList.value.length) mainStore.setActiveElementIdList([])\n}\n\nconst editingElId = ref('')\n\nconst saveElementName = (e: FocusEvent | KeyboardEvent, id: string) => {\n const name = (e.target as HTMLInputElement).value\n slidesStore.updateElement({ id, props: { name } })\n editingElId.value = ''\n}\n\nconst enterEdit = (id: string) => {\n editingElId.value = id\n nextTick(() => {\n const inputRef = document.querySelector(`#input-${id}`) as HTMLInputElement\n inputRef.focus()\n })\n}\n\nconst close = () => {\n mainStore.setSelectPanelState(false)\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconDown = _resolveComponent(\"IconDown\")!\n const _component_IconUp = _resolveComponent(\"IconUp\")!\n const _component_IconPreviewClose = _resolveComponent(\"IconPreviewClose\")!\n const _component_IconPreviewOpen = _resolveComponent(\"IconPreviewOpen\")!\n\n return (_openBlock(), _createBlock(MoveablePanel, {\n class: \"select-panel\",\n width: 200,\n height: 360,\n title: `选择(${_unref(activeElementIdList).length}/${_unref(currentSlide).elements.length})`,\n left: -270,\n top: 90,\n onClose: _cache[4] || (_cache[4] = ($event: any) => (close()))\n }, {\n default: _withCtx(() => [\n (_unref(elements).length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_unref(Button), {\n size: \"small\",\n style: {\"margin-right\":\"5px\"},\n onClick: _cache[0] || (_cache[0] = ($event: any) => (showAll()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"全部显示\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), {\n size: \"small\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (hideAll()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"全部隐藏\")\n ]),\n _: 1\n })\n ]),\n (_unref(handleElement))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createVNode(_component_IconDown, {\n class: \"icon-btn\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_unref(orderElement)(_unref(handleElement)!, _unref(ElementOrderCommands).UP)))\n }),\n _createVNode(_component_IconUp, {\n class: \"icon-btn\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_unref(orderElement)(_unref(handleElement)!, _unref(ElementOrderCommands).DOWN)))\n })\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_4, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(elements), (item) => {\n return (_openBlock(), _createElementBlock(_Fragment, {\n key: item.id\n }, [\n (item.type === 'group')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _hoisted_6,\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.elements, (groupItem) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"item\", {\n 'active': _unref(activeElementIdList).includes(groupItem.id),\n 'group-active': _unref(activeGroupElementId).includes(groupItem.id),\n }]),\n key: groupItem.id,\n onClick: ($event: any) => (selectGroupEl(item, groupItem.id)),\n onDblclick: ($event: any) => (enterEdit(groupItem.id))\n }, [\n (editingElId.value === groupItem.id)\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n id: `input-${groupItem.id}`,\n value: groupItem.name || _unref(ELEMENT_TYPE_ZH)[groupItem.type],\n class: \"input\",\n type: \"text\",\n onBlur: $event => saveElementName($event, groupItem.id),\n onKeydown: _withKeys($event => saveElementName($event, groupItem.id), [\"enter\"])\n }, null, 40, _hoisted_8))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_9, _toDisplayString(groupItem.name || _unref(ELEMENT_TYPE_ZH)[groupItem.type]), 1)),\n _createElementVNode(\"div\", _hoisted_10, [\n (_unref(hiddenElementIdList).includes(groupItem.id))\n ? (_openBlock(), _createBlock(_component_IconPreviewClose, {\n key: 0,\n style: {\"font-size\":\"17px\"},\n onClick: _withModifiers(($event: any) => (hideElement(groupItem.id)), [\"stop\"])\n }, null, 8, [\"onClick\"]))\n : (_openBlock(), _createBlock(_component_IconPreviewOpen, {\n key: 1,\n style: {\"font-size\":\"17px\"},\n onClick: _withModifiers(($event: any) => (hideElement(groupItem.id)), [\"stop\"])\n }, null, 8, [\"onClick\"]))\n ])\n ], 42, _hoisted_7))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass([\"item\", { 'active': _unref(activeElementIdList).includes(item.id) }]),\n onClick: ($event: any) => (selectEl(item.id)),\n onDblclick: ($event: any) => (enterEdit(item.id))\n }, [\n (editingElId.value === item.id)\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n id: `input-${item.id}`,\n value: item.name || _unref(ELEMENT_TYPE_ZH)[item.type],\n class: \"input\",\n type: \"text\",\n onBlur: $event => saveElementName($event, item.id),\n onKeydown: _withKeys($event => saveElementName($event, item.id), [\"enter\"])\n }, null, 40, _hoisted_12))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_13, _toDisplayString(item.name || _unref(ELEMENT_TYPE_ZH)[item.type]), 1)),\n _createElementVNode(\"div\", _hoisted_14, [\n (_unref(hiddenElementIdList).includes(item.id))\n ? (_openBlock(), _createBlock(_component_IconPreviewClose, {\n key: 0,\n style: {\"font-size\":\"17px\"},\n onClick: _withModifiers(($event: any) => (hideElement(item.id)), [\"stop\"])\n }, null, 8, [\"onClick\"]))\n : (_openBlock(), _createBlock(_component_IconPreviewOpen, {\n key: 1,\n style: {\"font-size\":\"17px\"},\n onClick: _withModifiers(($event: any) => (hideElement(item.id)), [\"stop\"])\n }, null, 8, [\"onClick\"]))\n ])\n ], 42, _hoisted_11))\n ], 64))\n }), 128))\n ])\n ]),\n _: 1\n }, 8, [\"title\"]))\n}\n}\n\n})","import script from \"./SelectPanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./SelectPanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./SelectPanel.vue?vue&type=style&index=0&id=64f9ccca&lang=scss&scoped=true\"\n\nimport exportComponent 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-64f9ccca\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, Fragment as _Fragment, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-ed562e98\"),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'\nimport SelectPanel from './SelectPanel.vue'\nimport { Modal } from 'ant-design-vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst mainStore = useMainStore()\nconst { dialogForExport, showSelectPanel } = storeToRefs(mainStore)\nconst closeExportDialog = () => mainStore.setDialogForExport('')\n\nconst remarkHeight = ref(40)\n\nuseGlobalHotkey()\nusePasteEvent()\n\nreturn (_ctx: any,_cache: any) => {\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 (_unref(showSelectPanel))\n ? (_openBlock(), _createBlock(SelectPanel, { key: 0 }))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(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=ed562e98&lang=scss&scoped=true\"\n\nimport exportComponent 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-ed562e98\"]])\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 }\n else {\n throttleMassage('已经是第一页了')\n }\n inAnimation.value = false\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}\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, 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-3e9669a9\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"blackboard\"\n}\n\nimport { computed, onMounted, onUnmounted, PropType, ref, watch } from 'vue'\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 penSize: {\n type: Number,\n default: 6,\n },\n markSize: {\n type: Number,\n default: 24,\n },\n rubberSize: {\n type: Number,\n default: 80,\n },\n},\n emits: [\"end\"],\n setup(__props, { expose, emit }: { emit: ({\n (event: 'end'): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nlet ctx: CanvasRenderingContext2D | null = null\nconst writingBoardRef = ref()\nconst canvasRef = ref()\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 = props.rubberSize / 2\n\n const sinRadius = radius * Math.sin(Math.atan((posY - lastPosY) / (posX - lastPosX)))\n const cosRadius = radius * Math.cos(Math.atan((posY - lastPosY) / (posX - lastPosX)))\n const rectPoint1: [number, number] = [lastPosX + sinRadius, lastPosY - cosRadius]\n const rectPoint2: [number, number] = [lastPosX - sinRadius, lastPosY + cosRadius]\n const rectPoint3: [number, number] = [posX + sinRadius, posY - cosRadius]\n const rectPoint4: [number, number] = [posX - sinRadius, posY + cosRadius]\n\n ctx.save()\n ctx.beginPath()\n ctx.arc(posX, posY, radius, 0, Math.PI * 2)\n ctx.clip()\n ctx.clearRect(0, 0, canvasRef.value.width, canvasRef.value.height)\n ctx.restore()\n\n ctx.save()\n ctx.beginPath()\n ctx.moveTo(...rectPoint1)\n ctx.lineTo(...rectPoint3)\n ctx.lineTo(...rectPoint4)\n ctx.lineTo(...rectPoint2)\n ctx.closePath()\n ctx.clip()\n ctx.clearRect(0, 0, canvasRef.value.width, canvasRef.value.height)\n ctx.restore()\n}\n\n// 计算鼠标两次移动之间的距离\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 = props.penSize\n const minWidth = 3\n const v = s / t\n let lineWidth\n\n if (v <= minV) lineWidth = maxWidth\n else if (v >= maxV) lineWidth = minWidth\n else lineWidth = maxWidth - v / maxV * maxWidth\n\n if (lastLineWidth === -1) return lineWidth\n return lineWidth * 1 / 3 + lastLineWidth * 2 / 3\n}\n\n// 路径操作\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, props.markSize)\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 emit('end')\n}\n\n// 清空画布\nconst clearCanvas = () => {\n if (!ctx || !canvasRef.value) return\n ctx.clearRect(0, 0, canvasRef.value.width, canvasRef.value.height)\n emit('end')\n}\n\n// 获取 DataURL\nconst getImageDataURL = () => {\n return canvasRef.value?.toDataURL()\n}\n\n// 设置 DataURL(绘制图片到 canvas)\nconst setImageDataURL = (imageDataURL: string) => {\n if (!ctx || !canvasRef.value) return\n \n ctx.clearRect(0, 0, canvasRef.value.width, canvasRef.value.height)\n\n if (imageDataURL) {\n ctx.globalCompositeOperation = 'source-over'\n ctx.globalAlpha = 1\n\n const img = new Image()\n img.src = imageDataURL\n img.onload = () => {\n ctx!.drawImage(img, 0, 0)\n updateCtx()\n }\n }\n}\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 }, 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 - __props.rubberSize / 2 + 'px',\n top: mouse.value.y - __props.rubberSize / 2 + 'px',\n width: __props.rubberSize + 'px',\n height: __props.rubberSize + '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 - __props.penSize / 2 + 'px',\n top: mouse.value.y - __props.penSize * 6 + __props.penSize / 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: __props.penSize * 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 - __props.markSize / 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: __props.markSize * 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=3e9669a9&lang=scss&scoped=true\"\n\nimport exportComponent 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-3e9669a9\"]])\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, normalizeClass as _normalizeClass, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-52a2a3a6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"writing-board-tool\" }\nconst _hoisted_2 = { class: \"tool-content\" }\nconst _hoisted_3 = { class: \"size\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"墨迹粗细:\", -1))\nconst _hoisted_5 = { class: \"size\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"墨迹粗细:\", -1))\nconst _hoisted_7 = { class: \"size\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"橡皮大小:\", -1))\nconst _hoisted_9 = { class: \"colors\" }\nconst _hoisted_10 = [\"onClick\"]\n\nimport { ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { db } from '@/utils/database'\n\nimport WritingBoard from '@/components/WritingBoard.vue'\nimport MoveablePanel from '@/components/MoveablePanel.vue'\nimport {\n Tooltip,\n Popover,\n Slider,\n} from 'ant-design-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 left: {\n type: Number,\n default: -5,\n },\n top: {\n type: Number,\n default: -5,\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 { currentSlide } = storeToRefs(useSlidesStore())\n\nconst writingBoardRef = ref()\nconst writingBoardColor = ref('#e2534d')\nconst writingBoardModel = ref('pen')\nconst blackboard = ref(false)\nconst sizePopoverType = ref<'' | WritingBoardModel>('')\n\nconst penSize = ref(6)\nconst markSize = ref(24)\nconst rubberSize = ref(80)\n\nconst changeModel = (model: WritingBoardModel) => {\n if (writingBoardModel.value === model) {\n sizePopoverType.value = sizePopoverType.value === model ? '' : model\n }\n else {\n if (sizePopoverType.value) sizePopoverType.value = ''\n writingBoardModel.value = model\n }\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\n// 打开画笔工具或切换页面时,将数据库中存储的墨迹绘制到画布上\nwatch(currentSlide, () => {\n db.writingBoardImgs.where('id').equals(currentSlide.value.id).toArray().then(ret => {\n const currentImg = ret[0]\n writingBoardRef.value!.setImageDataURL(currentImg?.dataURL || '')\n })\n}, { immediate: true })\n\n// 每次绘制完成后将绘制完的图片更新到数据库\nconst hanldeWritingEnd = () => {\n const dataURL = writingBoardRef.value!.getImageDataURL()\n db.writingBoardImgs.where('id').equals(currentSlide.value.id).toArray().then(ret => {\n const currentImg = ret[0]\n if (currentImg) db.writingBoardImgs.update(currentImg, { dataURL })\n else db.writingBoardImgs.add({ id: currentSlide.value.id, dataURL })\n })\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconWrite = _resolveComponent(\"IconWrite\")!\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 penSize: penSize.value,\n markSize: markSize.value,\n rubberSize: rubberSize.value,\n onEnd: _cache[0] || (_cache[0] = ($event: any) => (hanldeWritingEnd()))\n }, null, 8, [\"color\", \"blackboard\", \"model\", \"penSize\", \"markSize\", \"rubberSize\"])\n ], 4),\n _createVNode(MoveablePanel, {\n class: \"tools-panel\",\n width: 520,\n height: 50,\n left: __props.left,\n top: __props.top,\n moveable: sizePopoverType.value === ''\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"tools\",\n onMousedown: _cache[10] || (_cache[10] = _withModifiers(() => {}, [\"stop\"]))\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_unref(Popover), {\n trigger: \"click\",\n visible: sizePopoverType.value === 'pen'\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createVNode(_unref(Slider), {\n class: \"size-slider\",\n min: 4,\n max: 10,\n step: 2,\n value: penSize.value,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((penSize).value = $event))\n }, null, 8, [\"value\"])\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(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[2] || (_cache[2] = ($event: any) => (changeModel('pen')))\n }, [\n _createVNode(_component_IconWrite, { class: \"icon\" })\n ], 2)\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_unref(Popover), {\n trigger: \"click\",\n visible: sizePopoverType.value === 'mark'\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_5, [\n _hoisted_6,\n _createVNode(_unref(Slider), {\n class: \"size-slider\",\n min: 16,\n max: 40,\n step: 4,\n value: markSize.value,\n \"onUpdate:value\": _cache[3] || (_cache[3] = ($event: any) => ((markSize).value = $event))\n }, null, 8, [\"value\"])\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(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[4] || (_cache[4] = ($event: any) => (changeModel('mark')))\n }, [\n _createVNode(_component_IconHighLight, { class: \"icon\" })\n ], 2)\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_unref(Popover), {\n trigger: \"click\",\n visible: sizePopoverType.value === 'eraser'\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_7, [\n _hoisted_8,\n _createVNode(_unref(Slider), {\n class: \"size-slider\",\n min: 20,\n max: 200,\n step: 20,\n value: rubberSize.value,\n \"onUpdate:value\": _cache[5] || (_cache[5] = ($event: any) => ((rubberSize).value = $event))\n }, null, 8, [\"value\"])\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(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[6] || (_cache[6] = ($event: any) => (changeModel('eraser')))\n }, [\n _createVNode(_component_IconErase, { class: \"icon\" })\n ], 2)\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: \"清除墨迹\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[7] || (_cache[7] = ($event: any) => (clearCanvas()))\n }, [\n _createVNode(_component_IconClear, { class: \"icon\" })\n ])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(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[8] || (_cache[8] = ($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_9, [\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_10)\n }), 64))\n ])\n ]),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: \"关闭画笔\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[9] || (_cache[9] = ($event: any) => (closeWritingBoard()))\n }, [\n _createVNode(_component_IconClose, { class: \"icon\" })\n ])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ], 32)\n ]),\n _: 1\n }, 8, [\"left\", \"top\", \"moveable\"])\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=52a2a3a6&lang=scss&scoped=true\"\n\nimport exportComponent 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-52a2a3a6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, unref as _unref, withModifiers as _withModifiers, withKeys as _withKeys, 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-5a82de11\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"header\" }\nconst _hoisted_2 = { class: \"content\" }\nconst _hoisted_3 = { class: \"timer\" }\nconst _hoisted_4 = [\"value\", \"disabled\"]\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"colon\" }, \":\", -1))\nconst _hoisted_6 = { class: \"timer\" }\nconst _hoisted_7 = [\"value\", \"disabled\"]\n\nimport { computed, onUnmounted, ref } from 'vue'\nimport { fillDigit } from '@/utils/common'\n\nimport MoveablePanel from '@/components/MoveablePanel.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'CountdownTimer',\n props: {\n left: {\n type: Number,\n default: 5,\n },\n top: {\n type: Number,\n default: 5,\n },\n},\n emits: [\"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\n\n\nconst timer = ref(null)\nconst inTiming = ref(false)\nconst isCountdown = ref(false)\nconst time = ref(0)\nconst minute = computed(() => Math.floor(time.value / 60))\nconst second = computed(() => time.value % 60)\n\nconst inputEditable = computed(() => {\n return !isCountdown.value || inTiming.value\n})\n\nconst clearTimer = () => {\n if (timer.value) clearInterval(timer.value)\n}\n\nonUnmounted(clearTimer)\n\nconst pause = () => {\n clearTimer()\n inTiming.value = false\n}\n\nconst reset = () => {\n clearTimer()\n inTiming.value = false\n \n if (isCountdown.value) time.value = 600\n else time.value = 0\n}\n\nconst start = () => {\n clearTimer()\n\n if (isCountdown.value) {\n timer.value = setInterval(() => {\n time.value = time.value - 1\n\n if (time.value <= 0) reset()\n }, 1000)\n }\n else {\n timer.value = setInterval(() => {\n time.value = time.value + 1\n\n if (time.value > 36000) pause()\n }, 1000)\n }\n\n inTiming.value = true\n}\n\nconst toggle = () => {\n if (inTiming.value) pause()\n else start()\n}\n\nconst toggleCountdown = () => {\n isCountdown.value = !isCountdown.value\n reset()\n}\n\nconst changeTime = (e: FocusEvent | KeyboardEvent, type: 'minute' | 'second') => {\n const inputRef = e.target as HTMLInputElement\n let value = inputRef.value\n const isNumber = /^(\\d)+$/.test(value)\n if (isNumber) {\n if (type === 'second' && +value >= 60) value = '59'\n time.value = type === 'minute' ? (+value * 60 + second.value) : (+value + minute.value * 60)\n }\n else inputRef.value = type === 'minute' ? fillDigit(minute.value, 2) : fillDigit(second.value, 2)\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconClose = _resolveComponent(\"IconClose\")!\n\n return (_openBlock(), _createBlock(MoveablePanel, {\n class: \"countdown-timer\",\n width: 180,\n height: 110,\n left: __props.left,\n top: __props.top\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"span\", {\n class: \"text-btn\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (toggle()))\n }, _toDisplayString(inTiming.value ? '暂停' : '开始'), 1),\n _createElementVNode(\"span\", {\n class: \"text-btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (reset()))\n }, \"重置\"),\n _createElementVNode(\"span\", {\n class: _normalizeClass([\"text-btn\", { 'active': isCountdown.value }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (toggleCountdown()))\n }, \"倒计时\", 2)\n ]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"input\", {\n type: \"text\",\n value: _unref(fillDigit)(_unref(minute), 2),\n maxlength: 3,\n disabled: _unref(inputEditable),\n onMousedown: _cache[3] || (_cache[3] = _withModifiers(() => {}, [\"stop\"])),\n onBlur: _cache[4] || (_cache[4] = $event => changeTime($event, 'minute')),\n onKeydown: [\n _cache[5] || (_cache[5] = _withModifiers(() => {}, [\"stop\"])),\n _cache[6] || (_cache[6] = _withKeys(_withModifiers($event => changeTime($event, 'minute'), [\"stop\"]), [\"enter\"]))\n ]\n }, null, 40, _hoisted_4)\n ]),\n _hoisted_5,\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"input\", {\n type: \"text\",\n value: _unref(fillDigit)(_unref(second), 2),\n maxlength: 3,\n disabled: _unref(inputEditable),\n onMousedown: _cache[7] || (_cache[7] = _withModifiers(() => {}, [\"stop\"])),\n onBlur: _cache[8] || (_cache[8] = $event => changeTime($event, 'second')),\n onKeydown: [\n _cache[9] || (_cache[9] = _withModifiers(() => {}, [\"stop\"])),\n _cache[10] || (_cache[10] = _withKeys(_withModifiers($event => changeTime($event, 'second'), [\"stop\"]), [\"enter\"]))\n ]\n }, null, 40, _hoisted_7)\n ])\n ]),\n _createElementVNode(\"div\", {\n class: \"close-btn\",\n onClick: _cache[11] || (_cache[11] = ($event: any) => (emit('close')))\n }, [\n _createVNode(_component_IconClose, { class: \"icon\" })\n ])\n ]),\n _: 1\n }, 8, [\"left\", \"top\"]))\n}\n}\n\n})","import script from \"./CountdownTimer.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./CountdownTimer.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./CountdownTimer.vue?vue&type=style&index=0&id=5a82de11&lang=scss&scoped=true\"\n\nimport exportComponent 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-5a82de11\"]])\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-90ac59d8\"),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'\nimport CountdownTimer from './CountdownTimer.vue'\nimport { Tooltip } from 'ant-design-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 timerlVisible = 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_IconMagic = _resolveComponent(\"IconMagic\")!\n const _component_IconStopwatchStart = _resolveComponent(\"IconStopwatchStart\")!\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 (timerlVisible.value)\n ? (_openBlock(), _createBlock(CountdownTimer, {\n key: 2,\n onClose: _cache[5] || (_cache[5] = ($event: any) => (timerlVisible.value = false))\n }))\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[6] || (_cache[6] = ($event: any) => (_unref(execPrev)()))\n }),\n _createVNode(_component_IconRightTwo, {\n class: \"tool-btn\",\n theme: \"two-tone\",\n fill: ['#111', '#fff'],\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_unref(execNext)()))\n })\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"tools-right\", { 'visible': rightToolsVisible.value }]),\n onMouseleave: _cache[16] || (_cache[16] = ($event: any) => (rightToolsVisible.value = false)),\n onMouseenter: _cache[17] || (_cache[17] = ($event: any) => (rightToolsVisible.value = true))\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: \"tool-btn page-number\",\n onClick: _cache[8] || (_cache[8] = ($event: any) => (slideThumbnailModelVisible.value = true))\n }, \"幻灯片 \" + _toDisplayString(_unref(slideIndex) + 1) + \" / \" + _toDisplayString(_unref(slides).length), 1),\n _createVNode(_unref(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[9] || (_cache[9] = ($event: any) => (writingBoardToolVisible.value = true))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(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[10] || (_cache[10] = ($event: any) => (laserPen.value = !laserPen.value))\n }, null, 8, [\"class\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: \"计时器\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconStopwatchStart, {\n class: _normalizeClass([\"tool-btn\", { 'active': timerlVisible.value }]),\n onClick: _cache[11] || (_cache[11] = ($event: any) => (timerlVisible.value = !timerlVisible.value))\n }, null, 8, [\"class\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(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[12] || (_cache[12] = ($event: any) => (__props.changeViewMode('presenter')))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(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[13] || (_cache[13] = ($event: any) => (_unref(manualExitFullscreen)()))\n }))\n : (_openBlock(), _createBlock(_component_IconFullScreenOne, {\n key: 1,\n class: \"tool-btn\",\n onClick: _cache[14] || (_cache[14] = ($event: any) => (_unref(enterFullscreen)()))\n }))\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\", \"title\"]),\n _createVNode(_unref(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[15] || (_cache[15] = ($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=90ac59d8&lang=scss&scoped=true\"\n\nimport exportComponent 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-90ac59d8\"]])\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-f770d810\"),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 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"结束放映\", -1))\nconst _hoisted_8 = { class: \"content\" }\nconst _hoisted_9 = [\"onClick\"]\nconst _hoisted_10 = { class: \"remark\" }\nconst _hoisted_11 = { class: \"header\" }\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"演讲者备注\", -1))\nconst _hoisted_13 = [\"innerHTML\"]\nconst _hoisted_14 = { 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'\nimport CountdownTimer from './CountdownTimer.vue'\nimport { Divider } from 'ant-design-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 timerlVisible = 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_IconStopwatchStart = _resolveComponent(\"IconStopwatchStart\")!\n const _component_IconOffScreenOne = _resolveComponent(\"IconOffScreenOne\")!\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: _normalizeClass([\"tool-btn\", { 'active': timerlVisible.value }]),\n onClick: _cache[3] || (_cache[3] = ($event: any) => (timerlVisible.value = !timerlVisible.value))\n }, [\n _createVNode(_component_IconStopwatchStart, { class: \"tool-icon\" }),\n _hoisted_6\n ], 2),\n _createElementVNode(\"div\", {\n class: \"tool-btn\",\n onClick: _cache[4] || (_cache[4] = () => _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(_unref(Divider), { class: \"divider\" }),\n _createElementVNode(\"div\", {\n class: \"tool-btn\",\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_unref(exitScreening)()))\n }, [\n _createVNode(_component_IconPower, { class: \"tool-icon\" }),\n _hoisted_7\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\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[6] || (_cache[6] = $event => _unref(mousewheelListener)($event)),\n onTouchstart: _cache[7] || (_cache[7] = $event => _unref(touchStartListener)($event)),\n onTouchend: _cache[8] || (_cache[8] = $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 left: -365,\n top: -155,\n onClose: _cache[9] || (_cache[9] = ($event: any) => (writingBoardToolVisible.value = false))\n }, null, 8, [\"slideWidth\", \"slideHeight\"]))\n : _createCommentVNode(\"\", true),\n (timerlVisible.value)\n ? (_openBlock(), _createBlock(CountdownTimer, {\n key: 1,\n left: 75,\n onClose: _cache[10] || (_cache[10] = ($event: any) => (timerlVisible.value = false))\n }))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"div\", {\n class: \"thumbnails\",\n ref_key: \"thumbnailsRef\",\n ref: thumbnailsRef,\n onWheel: _cache[11] || (_cache[11] = _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_9))\n }), 128))\n ], 544)\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"div\", _hoisted_11, [\n _hoisted_12,\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_13),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", {\n class: _normalizeClass(['scale-btn', { 'disable': remarkFontSize.value === 12 }]),\n onClick: _cache[12] || (_cache[12] = ($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[13] || (_cache[13] = ($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=f770d810&lang=scss&scoped=true\"\n\nimport exportComponent 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-f770d810\"]])\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, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createVNode as _createVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-e594aa30\"),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'\nimport useSlideHandler from '@/hooks/useSlideHandler'\n\nimport Draggable from 'vuedraggable'\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 { sortSlides } = useSlideHandler()\n\nconst { slidesLoadLimit } = useLoadSlides()\nconst changeSlideIndex = (index: number) => {\n slidesStore.updateSlideIndex(index)\n}\n\n// 拖拽调整顺序后进行数据的同步\nconst handleDragEnd = (eventData: { newIndex: number; oldIndex: number }) => {\n const { newIndex, oldIndex } = eventData\n sortSlides(newIndex, oldIndex)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\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 itemKey: \"id\",\n delayOnTouchOnly: true,\n delay: 800,\n onEnd: handleDragEnd\n }, {\n item: _withCtx(({ element, index }) => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"thumbnail-item\", { 'active': _unref(slideIndex) === index }]),\n onClick: ($event: any) => (changeSlideIndex(index))\n }, [\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(index + 1), 1),\n _createVNode(ThumbnailSlide, {\n class: \"thumbnail\",\n slide: element,\n size: 120,\n visible: index < _unref(slidesLoadLimit)\n }, null, 8, [\"slide\", \"visible\"])\n ], 10, _hoisted_2)\n ]),\n _: 1\n }, 8, [\"modelValue\"])\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=e594aa30&lang=scss&scoped=true\"\n\nimport exportComponent 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-e594aa30\"]])\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-1e17bcc7\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"slide-toolbar\" }\nconst _hoisted_2 = { class: \"remark\" }\nconst _hoisted_3 = [\"value\"]\nconst _hoisted_4 = { class: \"toolbar\" }\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'\nimport FileInput from '@/components/FileInput.vue'\nimport { Button } from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'SlideToolbar',\n setup(__props) {\n\nconst ButtonGroup = Button.Group\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 }, { content: '

新添加文本

' })\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_IconCopy = _resolveComponent(\"IconCopy\")!\n const _component_IconDelete = _resolveComponent(\"IconDelete\")!\n const _component_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_IconPicture = _resolveComponent(\"IconPicture\")!\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(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\" 新幻灯片\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 复制\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 删除\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\" 文字\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), { style: {\"flex\":\"1\"} }, {\n default: _withCtx(() => [\n _createVNode(FileInput, {\n onChange: _cache[5] || (_cache[5] = files => insertImageElement(files))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconPicture, { class: \"icon\" }),\n _createTextVNode(\"图片 \")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 矩形\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 圆形\")\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=1e17bcc7&lang=scss&scoped=true\"\n\nimport exportComponent 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-1e17bcc7\"]])\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-2633262b\"),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 = { class: \"row-block\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"文字颜色:\", -1))\nconst _hoisted_8 = { class: \"colors\" }\nconst _hoisted_9 = [\"onClick\"]\nconst _hoisted_10 = { class: \"row-block\" }\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"填充色:\", -1))\nconst _hoisted_12 = { class: \"colors\" }\nconst _hoisted_13 = [\"onClick\"]\nconst _hoisted_14 = {\n key: 1,\n class: \"common\"\n}\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\nimport CheckboxButton from '@/components/CheckboxButton.vue'\nimport CheckboxButtonGroup from '@/components/CheckboxButtonGroup.vue'\nimport {\n Divider,\n Button,\n Radio,\n} from 'ant-design-vue'\ninterface TabItem {\n key: 'style' | 'common'\n label: string\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementToolbar',\n setup(__props) {\n\nconst { Group: RadioGroup, Button: RadioButton } = Radio\nconst ButtonGroup = Button.Group\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_IconTextItalic = _resolveComponent(\"IconTextItalic\")!\n const _component_IconTextUnderline = _resolveComponent(\"IconTextUnderline\")!\n const _component_IconStrikethrough = _resolveComponent(\"IconStrikethrough\")!\n const _component_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_IconAlignTextLeft = _resolveComponent(\"IconAlignTextLeft\")!\n const _component_IconAlignTextCenter = _resolveComponent(\"IconAlignTextCenter\")!\n const _component_IconAlignTextRight = _resolveComponent(\"IconAlignTextRight\")!\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(CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(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(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(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(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(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\"+\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\"-\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_unref(Divider), { style: {\"margin\":\"20px 0\"} }),\n _createVNode(_unref(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(_unref(RadioButton), {\n value: \"left\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextLeft)\n ]),\n _: 1\n }),\n _createVNode(_unref(RadioButton), {\n value: \"center\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextCenter)\n ]),\n _: 1\n }),\n _createVNode(_unref(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(_unref(Divider), { style: {\"margin\":\"20px 0\"} }),\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createElementVNode(\"div\", _hoisted_8, [\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_9)\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createElementVNode(\"div\", _hoisted_12, [\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_13)\n }), 64))\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (activeTab.value === 'common')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n _createVNode(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\" 复制\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 删除\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_unref(Divider), { style: {\"margin\":\"20px 0\"} }),\n _createVNode(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\" 置顶\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 置底\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 上移\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 下移\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_unref(Divider), { style: {\"margin\":\"20px 0\"} }),\n _createVNode(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\" 左对齐\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 水平居中\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 右对齐\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\" 上对齐\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 垂直居中\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 下对齐\")\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=2633262b&lang=scss&scoped=true\"\n\nimport exportComponent 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-2633262b\"]])\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-8639f30e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mobile-editor-header\" }\nconst _hoisted_2 = { class: \"history\" }\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 _createTextVNode(\" 撤销\")\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 _createTextVNode(\" 重做\")\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 _createTextVNode(\" 退出编辑\")\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=8639f30e&lang=scss&scoped=true\"\n\nimport exportComponent 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-8639f30e\"]])\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\" }\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 _createTextVNode(\" 退出播放\")\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-1c8bce03\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"thumbnail-list\" }\nconst _hoisted_2 = { class: \"menu\" }\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'\nimport { Divider } from 'ant-design-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\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_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 - 20,\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 _createTextVNode(\" 编辑\")\n ]),\n _createVNode(_unref(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 _createTextVNode(\" 播放\")\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=1c8bce03&lang=scss&scoped=true\"\n\nimport exportComponent 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-1c8bce03\"]])\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 { deleteDiscardedDB } from '@/utils/database'\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(async () => {\n await deleteDiscardedDB()\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=685e8c72&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 Up,\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 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 TextRotationNone,\n TextRotationDown,\n FormatBrush,\n PreviewOpen,\n PreviewClose,\n StopwatchStart,\n} from '@icon-park/vue-next'\n\nexport const icons = {\n IconPlayOne: PlayOne,\n IconFullScreenPlay: FullScreenPlay,\n IconLock: Lock,\n IconUnlock: Unlock,\n IconPpt: Ppt,\n IconFormat: Format,\n IconPicture: Picture,\n IconFullScreen: FullScreen,\n IconList: List,\n IconOrderedList: OrderedList,\n IconHelpcenter: Helpcenter,\n IconFlipVertically: FlipVertically,\n IconFlipHorizontally: FlipHorizontally,\n IconFontSize: FontSize,\n IconCode: Code,\n IconTextBold: TextBold,\n IconTextItalic: TextItalic,\n IconTextUnderline: TextUnderline,\n IconStrikethrough: Strikethrough,\n IconEdit: Edit,\n IconQuote: Quote,\n IconBackgroundColor: BackgroundColor,\n IconGroup: Group,\n IconUngroup: Ungroup,\n IconBack: Back,\n IconNext: Next,\n IconFullwidth: Fullwidth,\n IconAlignTop: AlignTop,\n IconAlignLeft: AlignLeft,\n IconAlignRight: AlignRight,\n IconAlignBottom: AlignBottom,\n IconAlignVertically: AlignVertically,\n IconAlignHorizontally: AlignHorizontally,\n IconBringToFront: BringToFront,\n IconSendToBack: SendToBack,\n IconAlignTextLeft: AlignTextLeft,\n IconAlignTextRight: AlignTextRight,\n IconAlignTextCenter: AlignTextCenter,\n IconRowHeight: RowHeight,\n IconWrite: Write,\n IconInsertTable: InsertTable,\n IconAddText: AddText,\n IconFill: Fill,\n IconTailoring: Tailoring,\n IconEffects: Effects,\n IconColorFilter: ColorFilter,\n IconUp: Up,\n IconDown: Down,\n IconPlus: Plus,\n IconMinus: Minus,\n IconConnection: Connection,\n IconBringToFrontOne: BringToFrontOne,\n IconSentToBack: SentToBack,\n IconGithub: Github,\n IconChartProportion: ChartProportion,\n IconChartHistogram: ChartHistogram,\n IconChartHistogramOne: ChartHistogramOne,\n IconChartLineArea: ChartLineArea,\n IconChartRing: ChartRing,\n IconChartScatter: ChartScatter,\n IconChartLine: ChartLine,\n IconChartPie: ChartPie,\n IconText: Text,\n IconRotate: Rotate,\n IconLeftTwo: LeftTwo,\n IconRightTwo: RightTwo,\n IconPlatte: Platte,\n IconClose: Close,\n IconCloseSmall: CloseSmall,\n IconUndo: Undo,\n IconTransform: Transform,\n IconClick: Click,\n IconTheme: Theme,\n IconArrowCircleLeft: ArrowCircleLeft,\n IconGraphicDesign: GraphicDesign,\n IconLogout: Logout,\n IconErase: Erase,\n IconClear: Clear,\n IconFolderClose: FolderClose,\n IconAlignTextTopOne: AlignTextTopOne,\n IconAlignTextBottomOne: AlignTextBottomOne,\n IconAlignTextMiddleOne: AlignTextMiddleOne,\n IconPause: Pause,\n IconVolumeMute: VolumeMute,\n IconVolumeNotice: VolumeNotice,\n IconVolumeSmall: VolumeSmall,\n IconVideoTwo: VideoTwo,\n IconFormula: Formula,\n IconLinkOne: LinkOne,\n IconFullScreenOne: FullScreenOne,\n IconOffScreenOne: OffScreenOne,\n IconPower: Power,\n IconListView: ListView,\n IconMagic: Magic,\n IconHighLight: HighLight,\n IconShare: Share,\n IconIndentLeft: IndentLeft,\n IconIndentRight: IndentRight,\n IconVerticalSpacingBetweenItems: VerticalSpacingBetweenItems,\n IconCopy: Copy,\n IconDelete: Delete,\n IconSquare: Square,\n IconRound: Round,\n IconNeedle: Needle,\n IconTextRotationNone: TextRotationNone,\n IconTextRotationDown: TextRotationDown,\n IconFormatBrush: FormatBrush,\n IconPreviewOpen: PreviewOpen,\n IconPreviewClose: PreviewClose,\n IconStopwatchStart: StopwatchStart,\n}\n\nexport default {\n install(app: App) {\n for (const key of Object.keys(icons)) {\n app.component(key, icons[key])\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 Directive from '@/plugins/directive'\n\nconst app = createApp(App)\n\napp.use(Icon)\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!./FullscreenSpin.vue?vue&type=style&index=0&id=5a56d59c&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=1c8bce03&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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!./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!./index.vue?vue&type=style&index=0&id=0b2b16da&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=61d61c80&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=3b4a02d8&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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!./GridLines.vue?vue&type=style&index=0&id=aebac580&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./SelectPanel.vue?vue&type=style&index=0&id=64f9ccca&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=105f4640&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=4e5f883a&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=802e1e06&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=74237311&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/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=73760920&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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!./BaseTableElement.vue?vue&type=style&index=0&id=6b8ce0be&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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!./TableStylePanel.vue?vue&type=style&index=0&id=79a422e5&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=0f6bb088&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./ElementOpacity.vue?vue&type=style&index=0&id=54aad0f0&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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\""],"sourceRoot":""} \ No newline at end of file diff --git a/js/app.10debef6.js b/js/app.10debef6.js deleted file mode 100644 index 42c1ae3e..00000000 --- a/js/app.10debef6.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(e){function t(t){for(var c,a,r=t[0],i=t[1],s=t[2],u=0,b=[];u{const{empty:t}=e.state.selection;t&&Object(s["d"])(e.state,e.dispatch)},u=(e,t,l)=>{if(l)e.dispatch(e.state.tr.addMark(l.from,l.to,t));else{const{$from:l,$to:c}=e.state.selection;e.dispatch(e.state.tr.addMark(l.pos,c.pos,t))}},b=(e,t,l,c)=>{let n=t;const o=e=>e.type===c;let a=null,r=null,i=null;while(n<=l){const t=e.nodeAt(n);if(!t||!t.marks)return null;const l=t.marks.find(o);if(!l)return null;if(a&&l!==a)return null;r=r||t,a=a||l,i=t,n++}let s=t,d=l,u=0;n=t-1;while(n>u){const t=e.nodeAt(n),l=t&&t.marks.find(o);if(!l||l!==a)break;s=n,r=t,n--}n=l+1,u=e.nodeSize-2;while(nArray.isArray(e)&&e.indexOf(t.type)>-1||t.type===e,m=(e,t)=>{for(let l=e.depth;l>0;l--){const c=e.node(l);if(t(c))return{pos:l>0?e.before(l):0,start:e.start(l),depth:l,node:c}}},p=e=>t=>m(t.$from,e),f=e=>t=>p(t=>O(e,t))(t),j=(e,t)=>{const l=t.schema.nodes[e];return!!f(l)(t.selection)},v=e=>{var t,l;const{selection:c,doc:n}=e.state,{from:o}=c;let a=n.nodeAt(o)||n.nodeAt(o-1);return null!==(t=a)&&void 0!==t&&t.lastChild&&(a=a.lastChild),(null===(l=a)||void 0===l?void 0:l.marks)||[]},h=(e,t,l)=>{for(const c of e)if(c.type.name===t&&c.attrs[l])return c.attrs[l];return null},y=(e,t)=>{for(const l of e)if(l.type.name===t)return!0;return!1},g=(e,t)=>{const{from:l,$from:c,to:n,empty:o}=e.selection;return o?t.isInSet(e.storedMarks||c.marks()):e.doc.rangeHasMark(l,n,t)},x=(e,t)=>{const{selection:l,doc:c}=e.state,{from:n,to:o}=l;let a=!0,r="";return c.nodesBetween(n,o,e=>(a&&e.attrs[t]&&(a=!1,r=e.attrs[t]),a)),r},k={color:"#000",backcolor:"",fontsize:"20px",fontname:"微软雅黑",align:"left"},C=(e,t={})=>{const l={...k,...t},c=v(e),n=y(c,"strong"),o=y(c,"em"),a=y(c,"underline"),r=y(c,"strikethrough"),i=y(c,"superscript"),s=y(c,"subscript"),d=y(c,"code"),u=h(c,"forecolor","color")||l.color,b=h(c,"backcolor","backcolor")||l.backcolor,O=h(c,"fontsize","fontsize")||l.fontsize,m=h(c,"fontname","fontname")||l.fontname,p=h(c,"link","href")||"",f=x(e,"align")||l.align,g=j("bullet_list",e.state),C=j("ordered_list",e.state),N=j("blockquote",e.state);return{bold:n,em:o,underline:a,strikethrough:r,superscript:i,subscript:s,code:d,color:u,backcolor:b,fontsize:O,fontname:m,link:p,align:f,bulletList:g,orderedList:C,blockquote:N}},N=e=>{const t=v(e),l=h(t,"fontsize","fontsize")||k.fontsize;return parseInt(l)},E={bold:!1,em:!1,underline:!1,strikethrough:!1,superscript:!1,subscript:!1,code:!1,color:"#000",backcolor:"",fontsize:"20px",fontname:"微软雅黑",link:"",align:"left",bulletList:!1,orderedList:!1,blockquote:!1},w=e=>{if("string"!==typeof e)return!1;const t="Arial";if(e.toLowerCase()===t.toLowerCase())return!0;const l=100,c=100,n=100,o="a",a=document.createElement("canvas"),r=a.getContext("2d");if(!r)return!1;a.width=c,a.height=n,r.textAlign="center",r.fillStyle="black",r.textBaseline="middle";const i=e=>{r.clearRect(0,0,c,n),r.font=`${l}px ${e}, ${t}`,r.fillText(o,c/2,n/2);const a=r.getImageData(0,0,c,n).data;return[].slice.call(a).filter(e=>0!==e)};return i(t).join("")!==i(e).join("")};l("5b81");var V=l("66cb"),I=l.n(V),S=l("2ef0");const L=[{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"}}],B={themeColor:"#5b9bd5",fontColor:"#333",fontName:"Microsoft Yahei",backgroundColor:"#fff"},_=[{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}}"}}],T=Object(o["b"])("slides",{state:()=>({theme:B,slides:L,slideIndex:0,viewportRatio:.5625}),getters:{currentSlide(e){return e.slides[e.slideIndex]},currentSlideAnimations(e){const t=e.slides[e.slideIndex];if(null===t||void 0===t||!t.animations)return[];const l=t.elements,c=l.map(e=>e.id);return t.animations.filter(e=>c.includes(e.elId))},formatedAnimations(e){const t=e.slides[e.slideIndex];if(null===t||void 0===t||!t.animations)return[];const l=t.elements,c=l.map(e=>e.id),n=t.animations.filter(e=>c.includes(e.elId)),o=[];for(const a of n)if("click"!==a.trigger&&o.length){if("meantime"===a.trigger){const e=o[o.length-1];e.animations=e.animations.filter(e=>e.elId!==a.elId),e.animations.push(a),o[o.length-1]=e}else if("auto"===a.trigger){const e=o[o.length-1];e.autoNext=!0,o[o.length-1]=e,o.push({animations:[a],autoNext:!1})}}else o.push({animations:[a],autoNext:!1});return o},layouts(e){const{themeColor:t,fontColor:l,fontName:c,backgroundColor:n}=e.theme,o=I()(l).isDark()?"rgba(230, 230, 230, 0.5)":"rgba(180, 180, 180, 0.5)",a=JSON.stringify(_).replaceAll("{{themeColor}}",t).replaceAll("{{fontColor}}",l).replaceAll("{{fontName}}",c).replaceAll("{{backgroundColor}}",n).replaceAll("{{subColor}}",o);return JSON.parse(a)}},actions:{setTheme(e){this.theme={...this.theme,...e}},setViewportRatio(e){this.viewportRatio=e},setSlides(e){this.slides=e},addSlide(e){const t=Array.isArray(e)?e:[e],l=this.slideIndex+1;this.slides.splice(l,0,...t),this.slideIndex=l},updateSlide(e){const t=this.slideIndex;this.slides[t]={...this.slides[t],...e}},deleteSlide(e){const t=Array.isArray(e)?e:[e],l=[];for(let o=0;oe.id===t[o]);l.push(e)}let c=Math.min(...l);const n=this.slides.length-t.length-1;c>n&&(c=n),this.slideIndex=c,this.slides=this.slides.filter(e=>!t.includes(e.id))},updateSlideIndex(e){this.slideIndex=e},addElement(e){const t=Array.isArray(e)?e:[e],l=this.slides[this.slideIndex].elements,c=[...l,...t];this.slides[this.slideIndex].elements=c},deleteElement(e){const t=Array.isArray(e)?e:[e],l=this.slides[this.slideIndex].elements,c=l.filter(e=>!t.includes(e.id));this.slides[this.slideIndex].elements=c},updateElement(e){const{id:t,props:l}=e,c="string"===typeof t?[t]:t,n=this.slideIndex,o=this.slides[n],a=o.elements.map(e=>c.includes(e.id)?{...e,...l}:e);this.slides[n].elements=a},removeElementProps(e){const{id:t,propName:l}=e,c="string"===typeof l?[l]:l,n=this.slideIndex,o=this.slides[n],a=o.elements.map(e=>e.id===t?Object(S["omit"])(e,c):e);this.slides[n].elements=a}}}),M=Object(a["a"])("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"),D=M(10),z=Object(o["b"])("main",{state:()=>({activeElementIdList:[],handleElementId:"",activeGroupElementId:"",hiddenElementIdList:[],canvasPercentage:90,canvasScale:1,canvasDragged:!1,thumbnailsFocus:!1,editorAreaFocus:!1,disableHotkeys:!1,gridLineSize:0,showRuler:!1,creatingElement:null,availableFonts:r,toolbarState:c.SLIDE_DESIGN,clipingImageElementId:"",richTextAttrs:E,selectedTableCells:[],isScaling:!1,selectedSlidesIndex:[],dialogForExport:"",databaseId:D,textFormatPainter:null,showSelectPanel:!1}),getters:{activeElementList(e){const t=T(),l=t.currentSlide;return l&&l.elements?l.elements.filter(t=>e.activeElementIdList.includes(t.id)):[]},handleElement(e){const t=T(),l=t.currentSlide;return l&&l.elements&&l.elements.find(t=>e.handleElementId===t.id)||null}},actions:{setActiveElementIdList(e){1===e.length?this.handleElementId=e[0]:this.handleElementId="",this.activeElementIdList=e},setHandleElementId(e){this.handleElementId=e},setActiveGroupElementId(e){this.activeGroupElementId=e},setHiddenElementIdList(e){this.hiddenElementIdList=e},setCanvasPercentage(e){this.canvasPercentage=e},setCanvasScale(e){this.canvasScale=e},setCanvasDragged(e){this.canvasDragged=e},setThumbnailsFocus(e){this.thumbnailsFocus=e},setEditorareaFocus(e){this.editorAreaFocus=e},setDisableHotkeysState(e){this.disableHotkeys=e},setGridLineSize(e){this.gridLineSize=e},setRulerState(e){this.showRuler=e},setCreatingElement(e){this.creatingElement=e},setAvailableFonts(){this.availableFonts=r.filter(e=>w(e.value))},setToolbarState(e){this.toolbarState=e},setClipingImageElementId(e){this.clipingImageElementId=e},setRichtextAttrs(e){this.richTextAttrs=e},setSelectedTableCells(e){this.selectedTableCells=e},setScalingState(e){this.isScaling=e},updateSelectedSlidesIndex(e){this.selectedSlidesIndex=e},setDialogForExport(e){this.dialogForExport=e},setTextFormatPainter(e){this.textFormatPainter=e},setSelectPanelState(e){this.showSelectPanel=e}}});var F=l("fc11"),A=l("4dec");const $="PPTIST_DISCARDED_DB",R="PPTist",P=async()=>{const e=(new Date).getTime(),t=localStorage.getItem($),l=t?JSON.parse(t):[],c=await A["a"].getDatabaseNames(),n=c.filter(t=>{if(-1===t.indexOf(R))return!1;const[c,n,o]=t.split("_");return c!==R||!n||!o||(!!l.includes(n)||e-+o>=432e5)});for(const o of n)A["a"].delete(o);localStorage.removeItem($)};class H extends A["a"]{constructor(){super(`${R}_${D}_${(new Date).getTime()}`),Object(F["a"])(this,"snapshots",void 0),Object(F["a"])(this,"writingBoardImgs",void 0),this.version(1).stores({snapshots:"++id",writingBoardImgs:"++id"}),this.snapshots=this.table("snapshots"),this.writingBoardImgs=this.table("writingBoardImgs")}}const q=new H,U=Object(o["b"])("snapshot",{state:()=>({snapshotCursor:-1,snapshotLength:0}),getters:{canUndo(e){return e.snapshotCursor>0},canRedo(e){return e.snapshotCursor=0&&this.snapshotCursoro&&(l.push(t[0]),n--),n>=2&&q.snapshots.update(t[n-2],{index:e.slideIndex}),await q.snapshots.bulkDelete(l),this.setSnapshotCursor(n-1),this.setSnapshotLength(n)},async unDo(){if(this.snapshotCursor<=0)return;const e=T(),t=z(),l=this.snapshotCursor-1,c=await q.snapshots.orderBy("id").toArray(),n=c[l],{index:o,slides:a}=n,r=o>a.length-1?a.length-1:o;e.setSlides(a),e.updateSlideIndex(r),this.setSnapshotCursor(l),t.setActiveElementIdList([])},async reDo(){if(this.snapshotCursor>=this.snapshotLength-1)return;const e=T(),t=z(),l=this.snapshotCursor+1,c=await q.snapshots.orderBy("id").toArray(),n=c[l],{index:o,slides:a}=n,r=o>a.length-1?a.length-1:o;e.setSlides(a),e.updateSlideIndex(r),this.setSnapshotCursor(l),t.setActiveElementIdList([])}}}),G=Object(o["b"])("keyboard",{state:()=>({ctrlKeyState:!1,shiftKeyState:!1,spaceKeyState:!1}),getters:{ctrlOrShiftKeyActive(e){return e.ctrlKeyState||e.shiftKeyState}},actions:{setCtrlKeyState(e){this.ctrlKeyState=e},setShiftKeyState(e){this.shiftKeyState=e},setSpaceKeyState(e){this.spaceKeyState=e}}}),X=Object(o["b"])("screen",{state:()=>({screening:!1}),actions:{setScreening(e){this.screening=e}}}),Y=(e,t)=>Object(S["padStart"])(""+e,t,"0"),Z=()=>!navigator.userAgent.match(/(iPhone|iPod|iPad|Android|Mobile|BlackBerry|Symbian|Windows Phone)/i);l("cd17");var W,J,K,Q,ee,te,le=l("ed3b");(function(e){e["UP"]="up",e["DOWN"]="down",e["TOP"]="top",e["BOTTOM"]="bottom"})(W||(W={})),function(e){e["TOP"]="top",e["BOTTOM"]="bottom",e["LEFT"]="left",e["RIGHT"]="right",e["VERTICAL"]="vertical",e["HORIZONTAL"]="horizontal",e["CENTER"]="center"}(J||(J={})),function(e){e["T"]="top",e["B"]="bottom",e["L"]="left",e["R"]="right"}(K||(K={})),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"}(Q||(Q={})),function(e){e["START"]="start",e["END"]="end",e["C"]="ctrl",e["C1"]="ctrl1",e["C2"]="ctrl2"}(ee||(ee={})),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"}(te||(te={}));const ce=[{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"}]},{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"}]}];l("3b18");var ne=l("f64c"),oe=l("b311"),ae=l.n(oe),re=l("3452"),ie=l.n(re);const se="pptist",de=e=>ie.a.AES.encrypt(e,se).toString(),ue=e=>{const t=ie.a.AES.decrypt(e,se);return t.toString(ie.a.enc.Utf8)},be=e=>new Promise((t,l)=>{const c=document.createElement("button"),n=new ae.a(c,{text:()=>e,action:()=>"copy",container:document.body});n.on("success",e=>{n.destroy(),t(e)}),n.on("error",e=>{n.destroy(),l(e)}),document.body.appendChild(c),c.click(),document.body.removeChild(c)}),Oe=()=>new Promise((e,t)=>{var l;null!==(l=navigator.clipboard)&&void 0!==l&&l.readText?navigator.clipboard.readText().then(l=>(l||t("剪贴板为空或者不包含文本"),e(l))):t("浏览器不支持或禁止访问剪贴板,请使用快捷键 Ctrl + V")}),me=e=>{let t;try{t=JSON.parse(ue(e))}catch{t=e}return t},pe=e=>{const t=e.split("\r\n");""===t[t.length-1]&&t.pop();let l=-1;const c=[];for(const n in t){if(c[n]=t[n].split("\t"),1===c[n].length)return null;if(-1===l)l=c[n].length;else if(l!==c[n].length)return null}return c},fe=e=>{const{left:t,top:l,width:c,height:n,rotate:o=0}=e,a=Math.sqrt(Math.pow(c,2)+Math.pow(n,2))/2,r=180*Math.atan(n/c)/Math.PI,i=(180-o-r)*Math.PI/180,s=(r-o)*Math.PI/180,d=t+c/2,u=l+n/2,b=[d+a*Math.cos(i),d+a*Math.cos(s),d-a*Math.cos(i),d-a*Math.cos(s)],O=[u-a*Math.sin(i),u-a*Math.sin(s),u+a*Math.sin(i),u+a*Math.sin(s)];return{xRange:[Math.min(...b),Math.max(...b)],yRange:[Math.min(...O),Math.max(...O)]}},je=e=>{const{xRange:t,yRange:l}=fe({left:e.left,top:e.top,width:e.width,height:e.height,rotate:0}),{xRange:c,yRange:n}=fe({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate});return{offsetX:c[0]-t[0],offsetY:n[0]-l[0]}},ve=e=>{let t,l,c,n;if("line"===e.type)t=e.left,l=e.left+Math.max(e.start[0],e.end[0]),c=e.top,n=e.top+Math.max(e.start[1],e.end[1]);else if("rotate"in e&&e.rotate){const{left:o,top:a,width:r,height:i,rotate:s}=e,{xRange:d,yRange:u}=fe({left:o,top:a,width:r,height:i,rotate:s});t=d[0],l=d[1],c=u[0],n=u[1]}else t=e.left,l=e.left+e.width,c=e.top,n=e.top+e.height;return{minX:t,maxX:l,minY:c,maxY:n}},he=e=>{const t=[],l=[],c=[],n=[];e.forEach(e=>{const{minX:o,maxX:a,minY:r,maxY:i}=ve(e);t.push(o),l.push(r),c.push(a),n.push(i)});const o=Math.min(...t),a=Math.max(...c),r=Math.min(...l),i=Math.max(...n);return{minX:o,maxX:a,minY:r,maxY:i}},ye=e=>{const t=[];return e.forEach(e=>{const l=t.findIndex(t=>t.value===e.value);if(-1===l)t.push(e);else{const c=t[l],n=Math.min(c.range[0],e.range[0]),o=Math.max(c.range[1],e.range[1]),a=[n,o],r={value:e.value,range:a};t[l]=r}}),t},ge=e=>{const t={};for(const l of e)t[l.id]=Object(a["b"])(10);return t},xe=e=>{const t={},l={};for(const c of e){const e=c.groupId;e&&!t[e]&&(t[e]=Object(a["b"])(10)),l[c.id]=Object(a["b"])(10)}return{groupIdMap:t,elIdMap:l}},ke=e=>{const t=I()(e);return[t.setAlpha(.3).toRgbString(),t.setAlpha(.1).toRgbString()]},Ce=e=>{const t=e.start.join(","),l=e.end.join(",");if(e.broken){const c=e.broken.join(",");return`M${t} L${c} L${l}`}if(e.curve){const c=e.curve.join(",");return`M${t} Q${c} ${l}`}if(e.cubic){const[c,n]=e.cubic,o=c.join(","),a=n.join(",");return`M${t} C${o} ${a} ${l}`}return`M${t} L${l}`},Ne=e=>{const t=e.replace(/[\n\r]+/g,"
"),l=t.split("
");let c="";for(const n of l)n&&(c+=`
${n}
`);return c},Ee=e=>new Promise(t=>{const l=document.createElement("img");l.src=e,l.style.opacity="0",document.body.appendChild(l),l.onload=()=>{const e=l.clientWidth,c=l.clientHeight;l.onload=null,l.onerror=null,document.body.removeChild(l),t({width:e,height:c})},l.onerror=()=>{l.onload=null,l.onerror=null}}),we=e=>new Promise(t=>{const l=new FileReader;l.addEventListener("load",()=>{t(l.result)}),l.readAsDataURL(e)}),Ve=1e3;var Ie,Se;(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["CUT_ROUND_RECT"]="cutRoundRect",e["MESSAGE"]="message",e["ROUND_MESSAGE"]="roundMessage",e["L"]="L",e["RING_RECT"]="ringRect",e["PLUS"]="plus",e["TRIANGLE"]="triangle",e["PARALLELOGRAM_LEFT"]="parallelogramLeft",e["PARALLELOGRAM_RIGHT"]="parallelogramRight",e["TRAPEZOID"]="trapezoid",e["BULLET"]="bullet",e["INDICATOR"]="indicator"})(Ie||(Ie={})),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"}(Se||(Se={}));const Le={[Ie.ROUND_RECT]:{editable:!0,defaultValue:.125,range:[0,.5],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const c=Math.min(e,t)*l;return`M ${c} 0 L ${e-c} 0 Q ${e} 0 ${e} ${c} L ${e} ${t-c} Q ${e} ${t} ${e-c} ${t} L ${c} ${t} Q 0 ${t} 0 ${t-c} L 0 ${c} Q 0 0 ${c} 0 Z`}},[Ie.CUT_RECT_DIAGONAL]:{editable:!0,defaultValue:.2,range:[0,.9],relative:"right",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const c=Math.min(e,t)*l;return`M 0 ${t-c} L 0 0 L ${e-c} 0 L ${e} ${c} L ${e} ${t} L ${c} ${t} Z`}},[Ie.CUT_RECT_SINGLE]:{editable:!0,defaultValue:.2,range:[0,.9],relative:"right",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const c=Math.min(e,t)*l;return`M 0 ${t} L 0 0 L ${e-c} 0 L ${e} ${c} L ${e} ${t} Z`}},[Ie.CUT_RECT_SAMESIDE]:{editable:!0,defaultValue:.2,range:[0,.5],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const c=Math.min(e,t)*l;return`M 0 ${c} L ${c} 0 L ${e-c} 0 L ${e} ${c} L ${e} ${t} L 0 ${t} Z`}},[Ie.ROUND_RECT_DIAGONAL]:{editable:!0,defaultValue:.125,range:[0,1],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const c=Math.min(e,t)*l;return`M ${c} 0 L ${e} 0 L ${e} ${t-c} Q ${e} ${t} ${e-c} ${t} L 0 ${t} L 0 ${c} Q 0 0 ${c} 0 Z`}},[Ie.ROUND_RECT_SINGLE]:{editable:!0,defaultValue:.125,range:[0,1],relative:"right",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const c=Math.min(e,t)*l;return`M 0 0 L ${e-c} 0 Q ${e} 0 ${e} ${c} L ${e} ${t} L 0 ${t} L 0 0 Z`}},[Ie.ROUND_RECT_SAMESIDE]:{editable:!0,defaultValue:.125,range:[0,.5],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const c=Math.min(e,t)*l;return`M 0 ${c} Q 0 0 ${c} 0 L ${e-c} 0 Q ${e} 0 ${e} ${c} L ${e} ${t} L 0 ${t} Z`}},[Ie.CUT_ROUND_RECT]:{editable:!0,defaultValue:.125,range:[0,.5],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const c=Math.min(e,t)*l;return`M ${c} 0 L ${e-c} 0 L ${e} ${c} L ${e} ${t} L 0 ${t} L 0 ${c} Q 0 0 ${c} 0 Z`}},[Ie.MESSAGE]:{formula:(e,t)=>{const l=.2*e,c=.2*t;return`M 0 0 L ${e} 0 L ${e} ${t-c} L ${e/2} ${t-c} L ${e/2-l} ${t} L ${e/2-l} ${t-c} L 0 ${t-c} Z`}},[Ie.ROUND_MESSAGE]:{formula:(e,t)=>{const l=.125*Math.min(e,t),c=.2*e,n=.2*t;return`M 0 ${l} Q 0 0 ${l} 0 L ${e-l} 0 Q ${e} 0 ${e} ${l} L ${e} ${t-l-n} Q ${e} ${t-n} ${e-l} ${t-n} L ${e/2} ${t-n} L ${e/2-c} ${t} L ${e/2-c} ${t-n} L ${l} ${t-n} Q 0 ${t-n} 0 ${t-l-n} L 0 ${l} Z`}},[Ie.L]:{editable:!0,defaultValue:.25,range:[.1,.9],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const c=Math.min(e,t)*l;return`M 0 0 L 0 ${t} L ${e} ${t} L ${e} ${t-c} L ${c} ${t-c} L ${c} 0 Z`}},[Ie.RING_RECT]:{editable:!0,defaultValue:.25,range:[.1,.45],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const c=Math.min(e,t)*l;return`M 0 0 ${e} 0 ${e} ${t} L 0 ${t} L 0 0 Z M ${c} ${c} L ${c} ${t-c} L ${e-c} ${t-c} L ${e-c} ${c} Z`}},[Ie.PLUS]:{editable:!0,defaultValue:.25,range:[.1,.9],relative:"center",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const c=Math.min(e,t)*l;return`M ${e/2-c/2} 0 L ${e/2-c/2} ${t/2-c/2} L 0 ${t/2-c/2} L 0 ${t/2+c/2} L ${e/2-c/2} ${t/2+c/2} L ${e/2-c/2} ${t} L ${e/2+c/2} ${t} L ${e/2+c/2} ${t/2+c/2} L ${e} ${t/2+c/2} L ${e} ${t/2-c/2} L ${e/2+c/2} ${t/2-c/2} L ${e/2+c/2} 0 Z`}},[Ie.TRIANGLE]:{editable:!0,defaultValue:.5,range:[0,1],relative:"left",getBaseSize:(e,t)=>e,formula:(e,t,l)=>{const c=e*l;return`M ${c} 0 L 0 ${t} L ${e} ${t} Z`}},[Ie.PARALLELOGRAM_LEFT]:{editable:!0,defaultValue:.25,range:[0,.9],relative:"left",getBaseSize:(e,t)=>e,formula:(e,t,l)=>{const c=e*l;return`M ${c} 0 L ${e} 0 L ${e-c} ${t} L 0 ${t} Z`}},[Ie.PARALLELOGRAM_RIGHT]:{editable:!0,defaultValue:.25,range:[0,.9],relative:"right",getBaseSize:(e,t)=>e,formula:(e,t,l)=>{const c=e*l;return`M 0 0 L ${e-c} 0 L ${e} ${t} L ${c} ${t} Z`}},[Ie.TRAPEZOID]:{editable:!0,defaultValue:.25,range:[0,.5],relative:"left",getBaseSize:(e,t)=>e,formula:(e,t,l)=>{const c=e*l;return`M ${c} 0 L ${e-c} 0 L ${e} ${t} L 0 ${t} Z`}},[Ie.BULLET]:{editable:!0,defaultValue:.2,range:[0,1],relative:"top",getBaseSize:(e,t)=>t,formula:(e,t,l)=>{const c=t*l;return`M ${e/2} 0 L 0 ${c} L 0 ${t} L ${e} ${t} L ${e} ${c} Z`}},[Ie.INDICATOR]:{editable:!0,defaultValue:.2,range:[0,.9],relative:"right",getBaseSize:(e,t)=>e,formula:(e,t,l)=>{const c=e*l;return`M ${e} ${t/2} L ${e-c} 0 L 0 0 L ${c} ${t/2} L 0 ${t} L ${e-c} ${t} Z`}}},Be=[{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:Ie.ROUND_RECT},{viewBox:[200,200],path:"M 0 200 L 0 0 L 150 0 L 200 50 L 200 200 Z",pathFormula:Ie.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:Ie.CUT_RECT_SAMESIDE},{viewBox:[200,200],path:"M 0 150 L 0 0 L 150 0 L 200 50 L 200 200 L 50 200 Z",pathFormula:Ie.CUT_RECT_DIAGONAL},{viewBox:[200,200],path:"M 50 0 L 150 0 L 200 50 L 200 200 L 0 200 L 0 50 Q 0 0 50 0 Z",pathFormula:Ie.CUT_ROUND_RECT},{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:Ie.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:Ie.ROUND_RECT_SAMESIDE},{viewBox:[200,200],path:"M 50 0 L 200 0 L 200 150 Q 200 200 150 200 L 0 200 L 0 50 Q 0 0 50 0 Z",pathFormula:Ie.ROUND_RECT_DIAGONAL}]},{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 100 0 L 0 200 L 200 200 L 100 0 Z",pathFormula:Ie.TRIANGLE},{viewBox:[200,200],path:"M 0 0 L 0 200 L 200 200 Z"},{viewBox:[200,200],path:"M 70 20 L 0 160 Q 0 200 40 200 L 160 200 Q 200 200 200 160 L 130 20 Q 100 -20 70 20 Z"},{viewBox:[200,200],path:"M 50 0 L 200 0 L 150 200 L 0 200 L 50 0 Z",pathFormula:Ie.PARALLELOGRAM_LEFT},{viewBox:[200,200],path:"M 0 0 L 150 0 L 200 200 L 50 200 L 0 0 Z",pathFormula:Ie.PARALLELOGRAM_RIGHT},{viewBox:[200,200],path:"M 50 0 L 150 0 L 200 200 L 0 200 L 50 0 Z",pathFormula:Ie.TRAPEZOID},{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 50 L 0 200 L 200 200 L 200 50 L 100 0 Z",pathFormula:Ie.BULLET},{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",pathFormula:Ie.INDICATOR},{viewBox:[200,200],path:"M 0 0 C 80 20 120 20 200 0 C 180 80 180 120 200 200 C 80 180 120 180 0 200 C 20 120 20 80 0 0 Z"},{viewBox:[200,200],path:"M 10 10 C 60 0 140 0 190 10 C 200 60 200 140 190 190 C 140 200 60 200 10 190 C 0 140 0 60 10 10 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 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 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 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:Ie.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:Ie.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:Ie.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:Ie.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:Ie.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 120 80 L 200 100 L 120 120 L 100 200 L 80 120 L 0 100 L 80 80 L 100 0 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 140 60 L 200 60 L 160 100 L 200 140 L 140 140 L 100 200 L 60 140 L 0 140 L 40 100 L 0 60 L 60 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"},{viewBox:[200,200],path:"M 200 0 C 80 40 80 160 200 200 C -60 200 -60 0 200 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}]}],_e={bar:"bar",horizontalBar:"bar",line:"line",area:"line",scatter:"line",pie:"pie",ring:"pie"};var Te=()=>{const e=U(),t=Object(S["debounce"])((function(){e.addSnapshot()}),300,{trailing:!0}),l=Object(S["throttle"])((function(){e.reDo()}),100,{leading:!0,trailing:!1}),c=Object(S["throttle"])((function(){e.unDo()}),100,{leading:!0,trailing:!1});return{addHistorySnapshot:t,redo:l,undo:c}},Me=()=>{const e=z(),t=T(),{creatingElement:l}=Object(o["c"])(e),{theme:c,viewportRatio:n}=Object(o["c"])(t),{addHistorySnapshot:r}=Te(),i=(c,n)=>{t.addElement(c),e.setActiveElementIdList([c.id]),l.value&&e.setCreatingElement(null),setTimeout(()=>{e.setEditorareaFocus(!0)},0),n&&n(),r()},s=e=>{Ee(e).then(({width:t,height:l})=>{const c=l/t;cVe?(t=Ve,l=t*c):l>Ve*n.value&&(l=Ve*n.value,t=l/c),i({type:"image",id:Object(a["b"])(10),src:e,width:t,height:l,left:(Ve-t)/2,top:(Ve*n.value-l)/2,fixedRatio:!0,rotate:0})})},d=e=>{const t={type:"chart",id:Object(a["b"])(10),chartType:_e[e],left:300,top:81.25,width:400,height:400,rotate:0,themeColor:[c.value.themeColor],gridColor:c.value.fontColor,data:{labels:["类别1","类别2","类别3","类别4","类别5"],legends:["系列1"],series:[[12,19,5,2,18]]}};let l={};"horizontalBar"===e?l={horizontalBars:!0}:"area"===e?l={showArea:!0}:"scatter"===e?l={showLine:!1}:"ring"===e&&(l={donut:!0}),i({...t,options:l})},u=(e,t)=>{const l={fontname:c.value.fontName,color:c.value.fontColor},o=[];for(let c=0;c{const{left:l,top:n,width:o,height:r}=e,s=(null===t||void 0===t?void 0:t.content)||"",d=(null===t||void 0===t?void 0:t.vertical)||!1,u=Object(a["b"])(10);i({type:"text",id:u,left:l,top:n,width:o,height:r,content:s,rotate:0,defaultFontName:c.value.fontName,defaultColor:c.value.fontColor,vertical:d},()=>{setTimeout(()=>{const e=document.querySelector(`#editable-element-${u} .ProseMirror`);e&&e.focus()},0)})},O=(e,t)=>{const{left:l,top:n,width:o,height:r}=e,s={type:"shape",id:Object(a["b"])(10),left:l,top:n,width:o,height:r,viewBox:t.viewBox,path:t.path,fill:c.value.themeColor,fixedRatio:!1,rotate:0};if(t.special&&(s.special=!0),t.pathFormula){s.pathFormula=t.pathFormula,s.viewBox=[o,r];const e=Le[t.pathFormula];"editable"in e?(s.path=e.formula(o,r,e.defaultValue),s.keypoint=e.defaultValue):s.path=e.formula(o,r)}i(s)},m=(e,t)=>{const{left:l,top:n,start:o,end:r}=e,s={type:"line",id:Object(a["b"])(10),left:l,top:n,start:o,end:r,points:t.points,color:c.value.themeColor,style:t.style,width:2};t.isBroken&&(s.broken=[(o[0]+r[0])/2,(o[1]+r[1])/2]),t.isCurve&&(s.curve=[(o[0]+r[0])/2,(o[1]+r[1])/2]),t.isCubic&&(s.cubic=[[(o[0]+r[0])/2,(o[1]+r[1])/2],[(o[0]+r[0])/2,(o[1]+r[1])/2]]),i(s)},p=e=>{i({type:"latex",id:Object(a["b"])(10),width:e.w,height:e.h,rotate:0,left:(Ve-e.w)/2,top:(Ve*n.value-e.h)/2,path:e.path,latex:e.latex,color:c.value.fontColor,strokeWidth:2,viewBox:[e.w,e.h],fixedRatio:!0})},f=e=>{i({type:"video",id:Object(a["b"])(10),width:500,height:300,rotate:0,left:(Ve-500)/2,top:(Ve*n.value-300)/2,src:e})},j=e=>{i({type:"audio",id:Object(a["b"])(10),width:50,height:50,rotate:0,left:(Ve-50)/2,top:(Ve*n.value-50)/2,loop:!1,autoplay:!1,fixedRatio:!0,color:c.value.themeColor,src:e})};return{createImageElement:s,createChartElement:d,createTableElement:u,createTextElement:b,createShapeElement:O,createLineElement:m,createLatexElement:p,createVideoElement:f,createAudioElement:j}},De=()=>{const e=z(),t=T(),{currentSlide:l}=Object(o["c"])(t),{addHistorySnapshot:c}=Te(),n=n=>{const{groupIdMap:o,elIdMap:a}=xe(n),r=l.value.elements.map(e=>e.id);for(const e of n){const t=r.includes(e.id);e.id=a[e.id],t&&(e.left=e.left+10,e.top=e.top+10),e.groupId&&(e.groupId=o[e.groupId])}t.addElement(n),e.setActiveElementIdList(Object.values(a)),c()},r=e=>{const l=ge(e),n=e.map(e=>{const{groupIdMap:t,elIdMap:c}=xe(e.elements);for(const n of e.elements)n.id=c[n.id],n.groupId&&(n.groupId=t[n.groupId]),n.link&&"slide"===n.link.type&&(l[n.link.target]?n.link.target=l[n.link.target]:delete n.link);if(e.animations)for(const l of e.animations)l.id=Object(a["b"])(10),l.elId=c[l.elId];return{...e,id:l[e.id]}});t.addSlide(n),c()};return{addElementsFromData:n,addSlidesFromData:r}},ze=()=>{const{createTextElement:e}=Me(),{addElementsFromData:t,addSlidesFromData:l}=De(),c=t=>{e({left:0,top:0,width:600,height:50},{content:t})},n=(e,n)=>{const o=(null===n||void 0===n?void 0:n.onlySlide)||!1,a=(null===n||void 0===n?void 0:n.onlyElements)||!1,r=me(e);if("object"===typeof r){const{type:e,data:c}=r;"elements"!==e||o?"slides"!==e||a||l(c):t(c)}else if(!a&&!o){const e=Ne(r);c(e)}};return{pasteTextClipboardData:n}},Fe=()=>{const e=z(),t=T(),{selectedSlidesIndex:l,activeElementIdList:c}=Object(o["c"])(e),{currentSlide:r,slides:i,theme:s,slideIndex:d}=Object(o["c"])(t),u=Object(n["computed"])(()=>[...l.value,d.value]),b=Object(n["computed"])(()=>i.value.filter((e,t)=>u.value.includes(t))),O=Object(n["computed"])(()=>b.value.map(e=>e.id)),{pasteTextClipboardData:m}=ze(),{addSlidesFromData:p}=De(),{addHistorySnapshot:f}=Te(),j=()=>{const l={id:Object(a["b"])(10),elements:[],background:{type:"solid",color:s.value.backgroundColor}};t.updateSlideIndex(0),e.setActiveElementIdList([]),t.setSlides([l])},v=l=>{l===te.UP&&d.value>0?(c.value.length&&e.setActiveElementIdList([]),t.updateSlideIndex(d.value-1)):l===te.DOWN&&d.value{const t=de(JSON.stringify({type:"slides",data:b.value}));be(t).then(()=>{e.setThumbnailsFocus(!0)})},y=()=>{Oe().then(e=>{m(e,{onlySlide:!0})}).catch(e=>ne["a"].warning(e))},g=()=>{const l={id:Object(a["b"])(10),elements:[],background:{type:"solid",color:s.value.backgroundColor}};e.setActiveElementIdList([]),t.addSlide(l),f()},x=l=>{const{groupIdMap:c,elIdMap:n}=xe(l.elements);for(const e of l.elements)e.id=n[e.id],e.groupId&&(e.groupId=c[e.groupId]);const o={...l,id:Object(a["b"])(10)};e.setActiveElementIdList([]),t.addSlide(o),f()},k=()=>{const e=JSON.parse(JSON.stringify(r.value));p([e])},C=(l=O.value)=>{i.value.length===l.length?j():t.deleteSlide(l),e.updateSelectedSlidesIndex([]),f()},N=()=>{const e=[...O.value];h(),C(e)},E=()=>{const t=Array.from(Array(i.value.length),(e,t)=>t);e.setActiveElementIdList([]),e.updateSelectedSlidesIndex(t)},w=(e,l)=>{if(l===e)return;const c=JSON.parse(JSON.stringify(i.value)),n=c[l];c.splice(l,1),c.splice(e,0,n),t.setSlides(c),t.updateSlideIndex(e)};return{resetSlides:j,updateSlideIndex:v,copySlide:h,pasteSlide:y,createSlide:g,createSlideByTemplate:x,copyAndPasteSlide:k,deleteSlide:C,cutSlide:N,selectAllSlide:E,sortSlides:w}},Ae=()=>{const e=z(),t=T(),{activeElementIdList:l}=Object(o["c"])(e),{currentSlide:c}=Object(o["c"])(t),{addHistorySnapshot:n}=Te(),a=()=>{const o=JSON.parse(JSON.stringify(c.value.elements));for(const e of o)l.value.includes(e.id)&&(e.lock=!0);t.updateSlide({elements:o}),e.setActiveElementIdList([]),n()},r=l=>{const o=JSON.parse(JSON.stringify(c.value.elements));if(l.groupId){const c=[];for(const e of o)e.groupId===l.groupId&&(e.lock=!1,c.push(e.id));t.updateSlide({elements:o}),e.setActiveElementIdList(c)}else{for(const e of o)if(e.id===l.id){e.lock=!1;break}t.updateSlide({elements:o}),e.setActiveElementIdList([l.id])}n()};return{lockElement:a,unlockElement:r}},$e=()=>{const e=z(),t=T(),{activeElementIdList:l,activeGroupElementId:c}=Object(o["c"])(e),{currentSlide:n}=Object(o["c"])(t),{addHistorySnapshot:a}=Te(),r=()=>{if(!l.value.length)return;let o=[];o=c.value?n.value.elements.filter(e=>e.id!==c.value):n.value.elements.filter(e=>!l.value.includes(e.id)),e.setActiveElementIdList([]),t.updateSlide({elements:o}),a()},i=()=>{n.value.elements.length&&(e.setActiveElementIdList([]),t.updateSlide({elements:[]}),a())};return{deleteElement:r,deleteAllElements:i}},Re=()=>{const e=z(),t=T(),{activeElementIdList:l,activeElementList:c,handleElementId:r}=Object(o["c"])(e),{currentSlide:i}=Object(o["c"])(t),{addHistorySnapshot:s}=Te(),d=Object(n["computed"])(()=>{if(c.value.length<2)return!1;const e=c.value[0].groupId;if(!e)return!0;const t=c.value.every(t=>(t.groupId&&t.groupId)===e);return!t}),u=()=>{if(!c.value.length)return;let e=JSON.parse(JSON.stringify(i.value.elements));const n=Object(a["b"])(10),o=[];for(const t of e)l.value.includes(t.id)&&(t.groupId=n,o.push(t));const r=e.findIndex(e=>e.id===o[o.length-1].id),d=o.map(e=>e.id);e=e.filter(e=>!d.includes(e.id));const u=r-o.length+1;e.splice(u,0,...o),t.updateSlide({elements:e}),s()},b=()=>{if(!c.value.length)return;const n=c.value.some(e=>e.groupId);if(!n)return;const o=JSON.parse(JSON.stringify(i.value.elements));for(const e of o)l.value.includes(e.id)&&e.groupId&&delete e.groupId;t.updateSlide({elements:o});const a=r.value?[r.value]:[];e.setActiveElementIdList(a),s()};return{canCombine:d,combineElements:u,uncombineElements:b}},Pe=()=>{const e=z(),{activeElementIdList:t,activeElementList:l}=Object(o["c"])(e),{pasteTextClipboardData:c}=ze(),{deleteElement:n}=$e(),a=()=>{if(!t.value.length)return;const c=de(JSON.stringify({type:"elements",data:l.value}));be(c).then(()=>{e.setEditorareaFocus(!0)})},r=()=>{a(),n()},i=()=>{Oe().then(e=>{c(e)}).catch(e=>ne["a"].warning(e))},s=()=>{a(),i()};return{copyElement:a,cutElement:r,pasteElement:i,quickCopyElement:s}},He=()=>{const e=z(),{currentSlide:t}=Object(o["c"])(T()),{hiddenElementIdList:l}=Object(o["c"])(e),c=()=>{const c=t.value.elements.filter(e=>!e.lock&&!l.value.includes(e.id)),n=c.map(e=>e.id);e.setActiveElementIdList(n)};return{selectAllElement:c}},qe=()=>{const e=T(),{activeElementIdList:t,activeGroupElementId:l}=Object(o["c"])(z()),{currentSlide:c}=Object(o["c"])(e),{addHistorySnapshot:n}=Te(),a=(o,a=1)=>{let r=[];const i=e=>{let{left:t,top:l}=e;switch(o){case te.LEFT:t-=a;break;case te.RIGHT:t+=a;break;case te.UP:l-=a;break;case te.DOWN:l+=a;break;default:break}return{...e,left:t,top:l}};r=l.value?c.value.elements.map(e=>l.value===e.id?i(e):e):c.value.elements.map(e=>t.value.includes(e.id)?i(e):e),e.updateSlide({elements:r}),n()};return{moveElement:a}},Ue=()=>{const e=T(),{currentSlide:t}=Object(o["c"])(e),{addHistorySnapshot:l}=Te(),c=(e,t)=>({minLevel:e.findIndex(e=>e.id===t[0].id),maxLevel:e.findIndex(e=>e.id===t[t.length-1].id)}),n=(e,t)=>{const l=JSON.parse(JSON.stringify(e));if(t.groupId){const n=l.filter(e=>e.groupId===t.groupId),{minLevel:o,maxLevel:a}=c(e,n);if(a===e.length-1)return;const r=l[a+1],i=l.splice(o,n.length);if(r.groupId){const e=l.filter(e=>e.groupId===r.groupId);l.splice(o+e.length,0,...i)}else l.splice(o+1,0,...i)}else{const c=e.findIndex(e=>e.id===t.id);if(c===e.length-1)return;const n=l[c+1],o=l.splice(c,1)[0];if(n.groupId){const e=l.filter(e=>e.groupId===n.groupId);l.splice(c+e.length,0,o)}else l.splice(c+1,0,o)}return l},a=(e,t)=>{const l=JSON.parse(JSON.stringify(e));if(t.groupId){const n=l.filter(e=>e.groupId===t.groupId),{minLevel:o}=c(e,n);if(0===o)return;const a=l[o-1],r=l.splice(o,n.length);if(a.groupId){const e=l.filter(e=>e.groupId===a.groupId);l.splice(o-e.length,0,...r)}else l.splice(o-1,0,...r)}else{const c=e.findIndex(e=>e.id===t.id);if(0===c)return;const n=l[c-1],o=l.splice(c,1)[0];if(n.groupId){const e=l.filter(e=>e.groupId===n.groupId);l.splice(c-e.length,0,o)}else l.splice(c-1,0,o)}return l},r=(e,t)=>{const l=JSON.parse(JSON.stringify(e));if(t.groupId){const n=l.filter(e=>e.groupId===t.groupId),{minLevel:o,maxLevel:a}=c(e,n);if(a===e.length-1)return null;const r=l.splice(o,n.length);l.push(...r)}else{const c=e.findIndex(e=>e.id===t.id);if(c===e.length-1)return null;l.splice(c,1),l.push(t)}return l},i=(e,t)=>{const l=JSON.parse(JSON.stringify(e));if(t.groupId){const n=l.filter(e=>e.groupId===t.groupId),{minLevel:o}=c(e,n);if(0===o)return;const a=l.splice(o,n.length);l.unshift(...a)}else{const c=e.findIndex(e=>e.id===t.id);if(0===c)return;l.splice(c,1),l.unshift(t)}return l},s=(c,o)=>{let s;o===W.UP?s=n(t.value.elements,c):o===W.DOWN?s=a(t.value.elements,c):o===W.TOP?s=r(t.value.elements,c):o===W.BOTTOM&&(s=i(t.value.elements,c)),s&&(e.updateSlide({elements:s}),l())};return{orderElement:s}};const Ge=()=>{const e=document.documentElement;e.requestFullscreen?e.requestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullScreen?e.webkitRequestFullScreen():e.msRequestFullscreen&&e.msRequestFullscreen()},Xe=()=>{document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.msExitFullscreen&&document.msExitFullscreen()},Ye=()=>{const e=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement||document.webkitCurrentFullScreenElement;return!!e};var Ze=()=>{const e=X(),t=T(),l=()=>{Ge(),e.setScreening(!0)},c=()=>{t.updateSlideIndex(0),l()},n=()=>{e.setScreening(!1),Ye()&&Xe()};return{enterScreening:l,enterScreeningFromStart:c,exitScreening:n}},We=()=>{const e=z(),{canvasPercentage:t,canvasScale:l,canvasDragged:c}=Object(o["c"])(e),a=Object(n["computed"])(()=>Math.round(100*l.value)+"%"),r=l=>{let c=t.value;const n=5,o=200,a=30;"+"===l&&c<=o&&(c+=n),"-"===l&&c>=a&&(c-=n),e.setCanvasPercentage(c)},i=c=>{const n=Math.round(c/l.value*t.value)/100;e.setCanvasPercentage(n)},s=()=>{e.setCanvasPercentage(90),c&&e.setCanvasDragged(!1)};return{canvasScalePercentage:a,setCanvasScalePercentage:i,scaleCanvas:r,resetCanvas:s}},Je=()=>{const e=z(),t=G(),{activeElementIdList:l,disableHotkeys:c,handleElement:a,handleElementId:r,editorAreaFocus:i,thumbnailsFocus:s}=Object(o["c"])(e),{currentSlide:d}=Object(o["c"])(T()),{ctrlKeyState:u,shiftKeyState:b,spaceKeyState:O}=Object(o["c"])(t),{updateSlideIndex:m,copySlide:p,createSlide:f,deleteSlide:j,cutSlide:v,copyAndPasteSlide:h,selectAllSlide:y}=Fe(),{combineElements:g,uncombineElements:x}=Re(),{deleteElement:k}=$e(),{lockElement:C}=Ae(),{copyElement:N,cutElement:E,quickCopyElement:w}=Pe(),{selectAllElement:V}=He(),{moveElement:I}=qe(),{orderElement:S}=Ue(),{redo:L,undo:B}=Te(),{enterScreening:_,enterScreeningFromStart:M}=Ze(),{scaleCanvas:D,resetCanvas:F}=We(),A=()=>{l.value.length?N():s.value&&p()},$=()=>{l.value.length?E():s.value&&v()},R=()=>{l.value.length?w():s.value&&h()},P=()=>{i.value&&V(),s.value&&y()},H=()=>{i.value&&C()},q=()=>{i.value&&g()},U=()=>{i.value&&x()},X=()=>{l.value.length?k():s.value&&j()},Y=e=>{l.value.length?I(e):e!==te.UP&&e!==te.DOWN||m(e)},Z=e=>{e===te.PAGEUP?m(te.UP):e===te.PAGEDOWN&&m(te.DOWN)},J=e=>{a.value&&S(a.value,e)},K=()=>{s.value&&f()},Q=()=>{if(!d.value.elements.length)return;if(!r.value){const t=d.value.elements[0];return void e.setActiveElementIdList([t.id])}const t=d.value.elements.findIndex(e=>e.id===r.value),l=t>=d.value.elements.length-1?0:t+1,c=d.value.elements[l].id;e.setActiveElementIdList([c])},ee=l=>{const{ctrlKey:n,shiftKey:o,altKey:a,metaKey:r}=l,d=n||r,O=l.key.toUpperCase();if(d&&!u.value&&t.setCtrlKeyState(!0),o&&!b.value&&t.setShiftKeyState(!0),c.value||O!==te.SPACE||t.setSpaceKeyState(!0),d&&O===te.P)return l.preventDefault(),void e.setDialogForExport("pdf");if(o&&O===te.F5)return l.preventDefault(),_(),void t.setShiftKeyState(!1);if(O===te.F5)return l.preventDefault(),void M();if(i.value||s.value){if(d&&O===te.C){if(c.value)return;l.preventDefault(),A()}if(d&&O===te.X){if(c.value)return;l.preventDefault(),$()}if(d&&O===te.D){if(c.value)return;l.preventDefault(),R()}if(d&&O===te.Z){if(c.value)return;l.preventDefault(),B()}if(d&&O===te.Y){if(c.value)return;l.preventDefault(),L()}if(d&&O===te.A){if(c.value)return;l.preventDefault(),P()}if(d&&O===te.L){if(c.value)return;l.preventDefault(),H()}if(!o&&d&&O===te.G){if(c.value)return;l.preventDefault(),q()}if(o&&d&&O===te.G){if(c.value)return;l.preventDefault(),U()}if(a&&O===te.F){if(c.value)return;l.preventDefault(),J(W.TOP)}if(a&&O===te.B){if(c.value)return;l.preventDefault(),J(W.BOTTOM)}if(O===te.DELETE||O===te.BACKSPACE){if(c.value)return;l.preventDefault(),X()}if(O===te.UP){if(c.value)return;l.preventDefault(),Y(te.UP)}if(O===te.DOWN){if(c.value)return;l.preventDefault(),Y(te.DOWN)}if(O===te.LEFT){if(c.value)return;l.preventDefault(),Y(te.LEFT)}if(O===te.RIGHT){if(c.value)return;l.preventDefault(),Y(te.RIGHT)}if(O===te.PAGEUP){if(c.value)return;l.preventDefault(),Z(te.PAGEUP)}if(O===te.PAGEDOWN){if(c.value)return;l.preventDefault(),Z(te.PAGEDOWN)}if(O===te.ENTER){if(c.value)return;l.preventDefault(),K()}if(O===te.MINUS){if(c.value)return;l.preventDefault(),D("-")}if(O===te.EQUAL){if(c.value)return;l.preventDefault(),D("+")}if(O===te.DIGIT_0){if(c.value)return;l.preventDefault(),F()}if(O===te.TAB){if(c.value)return;l.preventDefault(),Q()}}},le=()=>{u.value&&t.setCtrlKeyState(!1),b.value&&t.setShiftKeyState(!1),O.value&&t.setSpaceKeyState(!1)};Object(n["onMounted"])(()=>{document.addEventListener("keydown",ee),document.addEventListener("keyup",le),window.addEventListener("blur",le)}),Object(n["onUnmounted"])(()=>{document.removeEventListener("keydown",ee),document.removeEventListener("keyup",le),window.removeEventListener("blur",le)})},Ke=()=>{const{editorAreaFocus:e,thumbnailsFocus:t,disableHotkeys:l}=Object(o["c"])(z()),{pasteTextClipboardData:c}=ze(),{createImageElement:a}=Me(),r=e=>{we(e).then(e=>a(e))},i=n=>{if(!e.value&&!t.value)return;if(l.value)return;if(!n.clipboardData)return;const o=n.clipboardData.items,a=o[0];if(a){for(const e of o)if("file"===e.kind&&-1!==e.type.indexOf("image")){const t=e.getAsFile();return void(t&&r(t))}"string"===a.kind&&"text/plain"===a.type&&a.getAsString(e=>c(e))}};Object(n["onMounted"])(()=>{document.addEventListener("paste",i)}),Object(n["onUnmounted"])(()=>{document.removeEventListener("paste",i)})},Qe=(l("6d2a"),l("9571")),et=(l("9a33"),l("f933")),tt=(l("9d5c"),l("a600")),lt=(l("fbd8"),l("55f1")),ct=l("21a6"),nt=l("8f74"),ot=l("e774");const at=["style","script","template"],rt=["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"]},st=["!doctype","area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],dt=(e,t)=>{const l=t-e.position;ut(e,l)},ut=(e,t)=>{e.position=e.position+t},bt=(e,t)=>{const l=!1;while(!l){const l=e.indexOf("<",t);if(-1===l)return l;const c=e.charAt(l+1);if("/"===c||"!"===c||/[A-Za-z0-9]/.test(c))return l;t=l+1}return-1},Ot=e=>{const{str:t}=e;let l=bt(t,e.position);if(l===e.position)return;-1===l&&(l=t.length);const c=t.slice(e.position,l);dt(e,l),e.tokens.push({type:"text",content:c})},mt=e=>{const{str:t}=e;ut(e,4);let l=t.indexOf("--\x3e",e.position),c=l+3;-1===l&&(l=c=t.length);const n=t.slice(e.position,l);dt(e,c),e.tokens.push({type:"comment",content:n})},pt=e=>{const{str:t}=e,l=t.length;let c=e.position;while(c"===e);if(l)break;c++}let n=c+1;while(n"===e);if(!l)break;n++}dt(e,n);const o=t.slice(c,n);return e.tokens.push({type:"tag",content:o}),o},ft=e=>{const{str:t,tokens:l}=e;let c=e.position,n=null,o=c;const a=[],r=t.length;while(c"===e;if(l){c!==o&&a.push(t.slice(o,c));break}const r=/\s/.test(e);if(r){c!==o&&a.push(t.slice(o,c)),o=c+1,c++;continue}const i="'"===e||'"'===e;i?(n=e,c++):c++}dt(e,c);const i="attribute";for(let s=0;s1){const c=e+t;l.push({type:i,content:c}),s+=1;continue}const c=a[s+2];if(s+=1,c){const t=e+"="+c;l.push({type:i,content:t}),s+=1;continue}}}if(Object(S["endsWith"])(e,"=")){const t=a[s+1];if(t&&-1===t.indexOf("=")){const c=e+t;l.push({type:i,content:c}),s+=1;continue}const c=e.slice(0,-1);l.push({type:i,content:c})}else l.push({type:i,content:e})}},jt=(e,t)=>{const{str:l,tokens:c}=t,n=e.toLowerCase(),o=l.length;let a=t.position;while(a{const{str:t}=e,l=t.charAt(e.position+1),c="/"===l;ut(e,c?2:1),e.tokens.push({type:"tag-start",close:c});const n=pt(e);ft(e);const o=t.charAt(e.position),a="/"===o;return ut(e,a?2:1),e.tokens.push({type:"tag-end",close:a}),n},ht=e=>{const t=e.str,l=t.length;while(e.position{const t={str:e,position:0,tokens:[]};return ht(t),t.tokens},gt=e=>{const t={tagName:null,children:[]},l={tokens:e,cursor:0,stack:[t]};return Ct(l),t.children},xt=(e,t)=>{const l=it[e];if(l){let c=t.length-1;while(c>=0){const n=t[c].tagName;if(n===e)break;if(l.includes(n))return!0;c--}}return!1},kt=(e,t)=>{e.splice(t)},Ct=e=>{const{stack:t,tokens:l}=e;let{cursor:c}=e,n=t[t.length-1].children;const o=l.length;while(c-1)if(t[e].tagName===r){n=!0;break}while(c0){if(r===t[e].tagName){kt(t,e);const l=e-1;n=t[l].children;break}e-=1}}const d=[];let u;while(c{const l=e.indexOf(t);return-1===l?[e]:[e.slice(0,l),e.slice(l+t.length)]},Et=e=>{const t=e.charAt(0),l=e.length-1,c='"'===t||"'"===t;return c&&t===e.charAt(l)?e.slice(1,l):e},wt=e=>e.map(e=>{const t=Nt(e.trim(),"="),l=t[0],c="string"===typeof t[1]?Et(t[1]):null;return{key:l,value:c}}),Vt=e=>e.map(e=>{if("element"===e.type){const t=Vt(e.children),l={type:"element",tagName:e.tagName.toLowerCase(),attributes:wt(e.attributes),children:t};return l}const t={type:e.type,content:e.content};return t});l("13d5");const It=e=>{const t=yt(e),l=gt(t);return Vt(l)};var St=l("d01f"),Lt=l("0b89");const Bt={1:"Z",2:"M",4:"H",8:"V",16:"L",32:"C",64:"S",128:"Q",256:"T",512:"A"},_t=e=>{const t=new St["a"](e),l=[];for(const c of t.commands){const e=Bt[c.type];if(2!==c.type&&16!==c.type||l.push({x:c.x,y:c.y,relative:c.relative,type:e}),32===c.type)l.push({x:c.x,y:c.y,curve:{type:"cubic",x1:c.x1,y1:c.y1,x2:c.x2,y2:c.y2},relative:c.relative,type:e});else if(128===c.type)l.push({x:c.x,y:c.y,curve:{type:"quadratic",x1:c.x1,y1:c.y1},relative:c.relative,type:e});else if(512===c.type){const e=l[l.length-1];if(!["M","L","Q","C"].includes(e.type))continue;const t=Object(Lt["a"])({px:e.x,py:e.y,cx:c.x,cy:c.y,rx:c.rX,ry:c.rY,xAxisRotation:c.xRot,largeArcFlag:c.lArcFlag,sweepFlag:c.sweepFlag});for(const c of t)l.push({x:c.x,y:c.y,curve:{type:"cubic",x1:c.x1,y1:c.y1,x2:c.x2,y2:c.y2},relative:!1,type:"C"})}else{if(1!==c.type)continue;l.push({close:!0,type:e})}}return l},Tt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",Mt="data:image/svg+xml;base64,",Dt=e=>{e=e.replace(/\r\n/g,"\n");let t="";for(let l=0;l127&&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},zt=e=>{let t,l,c,n,o,a,r,i="",s=0;e=Dt(e);while(s>2,o=(3&t)<<4|l>>4,a=(15&l)<<2|c>>6,r=63&c,isNaN(l)?a=r=64:isNaN(c)&&(r=64),i=i+Tt.charAt(n)+Tt.charAt(o)+Tt.charAt(a)+Tt.charAt(r);return i},Ft=e=>{const t=new XMLSerializer,l=t.serializeToString(e);return Mt+zt(l)},At=100,$t=.75;var Rt=()=>{const e=T(),{slides:t,theme:l,viewportRatio:c}=Object(o["c"])(e),{addSlidesFromData:a}=De(),r=Object(n["ref"])(!1),i=(e,t,l,c=!0)=>{r.value=!0;const n="png"===t?ot["c"]:ot["b"],o=e.querySelectorAll("foreignObject [xmlns]");o.forEach(e=>e.removeAttribute("xmlns")),setTimeout(()=>{const o={quality:l,width:1600};c&&(o.fontEmbedCSS=""),n(e,o).then(e=>{r.value=!1,Object(ct["saveAs"])(e,"pptist_slides."+t)}).catch(()=>{r.value=!1,ne["a"].error("导出图片失败")})},200)},s=e=>{const t=new Blob([de(JSON.stringify(e))],{type:""});Object(ct["saveAs"])(t,"pptist_slides.pptist")},d=(t,l=!1)=>{const c=t[0],n=new FileReader;n.addEventListener("load",()=>{try{const t=JSON.parse(ue(n.result));l?e.setSlides(t):a(t)}catch{ne["a"].error("无法正确读取 / 解析该文件")}}),n.readAsText(c)},u=()=>{const e=new Blob([JSON.stringify(t.value)],{type:""});Object(ct["saveAs"])(e,"pptist_slides.json")},b=e=>{const t=I()(e),l=t.getAlpha(),c=0===l?"#ffffff":t.setAlpha(1).toHexString();return{alpha:l,color:c}},O=e=>{const t=It(e);let l=!1,c=0;const n=[],o=(e,t={})=>{for(const a of e){const e="tagName"in a&&["div","li","p"].includes(a.tagName);if(e&&n.length){const e=n[n.length-1];e.options||(e.options={}),e.options.breakLine=!0}const r={...t},i="attributes"in a?a.attributes.find(e=>"style"===e.key):null;if(i&&i.value){const e=i.value.split(";");for(const t of e){const[e,l]=t.split(": "),[c,n]=[Object(S["trim"])(e),Object(S["trim"])(l)];c&&n&&(r[c]=n)}}if("tagName"in a){if("em"===a.tagName&&(r["font-style"]="italic"),"strong"===a.tagName&&(r["font-weight"]="bold"),"sup"===a.tagName&&(r["vertical-align"]="super"),"sub"===a.tagName&&(r["vertical-align"]="sub"),"a"===a.tagName){const e=a.attributes.find(e=>"href"===e.key);r["href"]=(null===e||void 0===e?void 0:e.value)||""}if("ul"===a.tagName&&(r["list-type"]="ul"),"ol"===a.tagName&&(r["list-type"]="ol"),"li"===a.tagName&&(l=!0),"p"===a.tagName&&"attributes"in a){const e=a.attributes.find(e=>"data-indent"===e.key);e&&e.value&&(c=+e.value)}}if("tagName"in a&&"br"===a.tagName)n.push({text:"",options:{breakLine:!0}});else if("content"in a){const e=a.content.replace(/ /g," ").replace(/>/g,">").replace(/</g,"<").replace(/&/g,"&").replace(/\n/g,""),t={};r["font-size"]&&(t.fontSize=parseInt(r["font-size"])*$t),r["color"]&&(t.color=b(r["color"]).color),r["background-color"]&&(t.highlight=b(r["background-color"]).color),r["text-decoration-line"]&&(-1!==r["text-decoration-line"].indexOf("underline")&&(t.underline={color:t.color||"#000000",style:"sng"}),-1!==r["text-decoration-line"].indexOf("line-through")&&(t.strike="sngStrike")),r["text-decoration"]&&(-1!==r["text-decoration"].indexOf("underline")&&(t.underline={color:t.color||"#000000",style:"sng"}),-1!==r["text-decoration"].indexOf("line-through")&&(t.strike="sngStrike")),r["vertical-align"]&&("super"===r["vertical-align"]&&(t.superscript=!0),"sub"===r["vertical-align"]&&(t.subscript=!0)),r["text-align"]&&(t.align=r["text-align"]),r["font-weight"]&&(t.bold="bold"===r["font-weight"]),r["font-style"]&&(t.italic="italic"===r["font-style"]),r["font-family"]&&(t.fontFace=r["font-family"]),r["href"]&&(t.hyperlink={url:r["href"]}),l&&"ol"===r["list-type"]&&(t.bullet={type:"number",indent:20*$t},t.paraSpaceBefore=.1,l=!1),l&&"ul"===r["list-type"]&&(t.bullet={indent:20*$t},t.paraSpaceBefore=.1,l=!1),c&&(t.indentLevel=c,c=0),n.push({text:e,options:t})}else"children"in a&&o(a.children,r)}};return o(t),n},m=(e,t={x:1,y:1})=>e.map(e=>{if(void 0!==e.close)return{close:!0};if("M"===e.type)return{x:e.x/At*t.x,y:e.y/At*t.y,moveTo:!0};if(e.curve){if("cubic"===e.curve.type)return{x:e.x/At*t.x,y:e.y/At*t.y,curve:{type:"cubic",x1:e.curve.x1/At*t.x,y1:e.curve.y1/At*t.y,x2:e.curve.x2/At*t.x,y2:e.curve.y2/At*t.y}};if("quadratic"===e.curve.type)return{x:e.x/At*t.x,y:e.y/At*t.y,curve:{type:"quadratic",x1:e.curve.x1/At*t.x,y1:e.curve.y1/At*t.y}}}return{x:e.x/At*t.x,y:e.y/At*t.y}}),p=e=>{const t=b(e.color),{h:l,v:c}=e;let n=4,o=45;return 0===l&&0===c?(n=4,o=45):0===l?c>0?(n=c,o=90):(n=-c,o=270):0===c?l>0?(n=l,o=1):(n=-l,o=180):l>0&&c>0?(n=Math.max(l,c),o=45):l>0&&c<0?(n=Math.max(l,-c),o=315):l<0&&c>0?(n=Math.max(-l,c),o=135):l<0&&c<0&&(n=Math.max(-l,-c),o=225),{type:"outer",color:t.color.replace("#",""),opacity:t.alpha,blur:e.blur*$t,offset:n,angle:o}},f=e=>{const t=b((null===e||void 0===e?void 0:e.color)||"#000000");return{color:t.color,transparency:100*(1-t.alpha),width:(e.width||1)*$t,dashType:"solid"===e.style?"solid":"dash"}},j=e=>{const{type:l,target:c}=e;if("web"===l)return{url:c};if("slide"===l){const e=t.value.findIndex(e=>e.id===c);if(-1!==e)return{slide:e+1}}return null},v=(e,t)=>{r.value=!0;const n=new nt["a"];if(.625===c.value?n.layout="LAYOUT_16x10":.75===c.value?n.layout="LAYOUT_4x3":.70710678===c.value?(n.defineLayout({name:"A3",width:10,height:7.0710678}),n.layout="A3"):n.layout="LAYOUT_16x9",t){const{color:e,alpha:t}=b(l.value.backgroundColor);n.defineSlideMaster({title:"PPTIST_MASTER",background:{color:e,transparency:100*(1-t)}})}for(const l of e){const e=n.addSlide();if(l.background){const t=l.background;if("image"===t.type&&t.image)e.background={data:t.image};else if("solid"===t.type&&t.color){const l=b(t.color);e.background={color:l.color,transparency:100*(1-l.alpha)}}else if("gradient"===t.type&&t.gradientColor){const[l,c]=t.gradientColor,n=I.a.mix(l,c).toHexString(),o=b(n);e.background={color:o.color,transparency:100*(1-o.alpha)}}}if(l.remark&&e.addNotes(l.remark),l.elements)for(const t of l.elements)if("text"===t.type){var o;const l=O(t.content),c={x:t.left/At,y:t.top/At,w:t.width/At,h:t.height/At,fontSize:20*$t,fontFace:"微软雅黑",color:"#000000",valign:"top",margin:10*$t,paraSpaceBefore:5*$t,lineSpacingMultiple:1.2,autoFit:!0};if(t.rotate&&(c.rotate=t.rotate),t.wordSpace&&(c.charSpacing=t.wordSpace*$t),t.lineHeight&&(c.lineSpacingMultiple=t.lineHeight/1.25),t.fill){const e=b(t.fill),l=void 0===t.opacity?1:t.opacity;c.fill={color:e.color,transparency:100*(1-e.alpha*l)}}t.defaultColor&&(c.color=b(t.defaultColor).color),t.defaultFontName&&(c.fontFace=t.defaultFontName),t.shadow&&(c.shadow=p(t.shadow)),null!==(o=t.outline)&&void 0!==o&&o.width&&(c.line=f(t.outline)),void 0!==t.opacity&&(c.transparency=100*(1-t.opacity)),void 0!==t.paragraphSpace&&(c.paraSpaceBefore=t.paragraphSpace*$t),t.vertical&&(c.vert="eaVert"),e.addText(l,c)}else if("image"===t.type){var a,i;const l={path:t.src,x:t.left/At,y:t.top/At,w:t.width/At,h:t.height/At};if(t.flipH&&(l.flipH=t.flipH),t.flipV&&(l.flipV=t.flipV),t.rotate&&(l.rotate=t.rotate),t.link){const e=j(t.link);e&&(l.hyperlink=e)}if(null!==(a=t.filters)&&void 0!==a&&a.opacity&&(l.transparency=100-parseInt(null===(i=t.filters)||void 0===i?void 0:i.opacity)),t.clip){"ellipse"===t.clip.shape&&(l.rounding=!0);const[e,c]=t.clip.range,[n,o]=e,[a,r]=c,i=t.width/((a-n)/At),s=t.height/((r-o)/At);l.w=i/At,l.h=s/At,l.sizing={type:"crop",x:n/At*i/At,y:o/At*s/At,w:(a-n)/At*i/At,h:(r-o)/At*s/At}}e.addImage(l)}else if("shape"===t.type){if(t.special){const l=document.querySelector(`.thumbnail-list .base-element-${t.id} svg`),c=Ft(l),n={data:c,x:t.left/At,y:t.top/At,w:t.width/At,h:t.height/At};if(t.rotate&&(n.rotate=t.rotate),t.link){const e=j(t.link);e&&(n.hyperlink=e)}e.addImage(n)}else{var s;const l={x:t.width/t.viewBox[0],y:t.height/t.viewBox[1]},c=m(_t(t.path),l),n=b(t.fill),o=void 0===t.opacity?1:t.opacity,a={x:t.left/At,y:t.top/At,w:t.width/At,h:t.height/At,fill:{color:n.color,transparency:100*(1-n.alpha*o)},points:c};if(t.flipH&&(a.flipH=t.flipH),t.flipV&&(a.flipV=t.flipV),t.shadow&&(a.shadow=p(t.shadow)),null!==(s=t.outline)&&void 0!==s&&s.width&&(a.line=f(t.outline)),t.link){const e=j(t.link);e&&(a.hyperlink=e)}e.addShape("custGeom",a)}if(t.text){const l=O(t.text.content),c={x:t.left/At,y:t.top/At,w:t.width/At,h:t.height/At,fontSize:20*$t,fontFace:"微软雅黑",color:"#000000",paraSpaceBefore:5*$t,valign:t.text.align};t.rotate&&(c.rotate=t.rotate),t.text.defaultColor&&(c.color=b(t.text.defaultColor).color),t.text.defaultFontName&&(c.fontFace=t.text.defaultFontName),e.addText(l,c)}}else if("line"===t.type){const l=Ce(t),c=m(_t(l)),{minX:n,maxX:o,minY:a,maxY:r}=ve(t),i=b(t.color),s={x:t.left/At,y:t.top/At,w:(o-n)/At,h:(r-a)/At,line:{color:i.color,transparency:100*(1-i.alpha),width:t.width*$t,dashType:"solid"===t.style?"solid":"dash",beginArrowType:t.points[0]?"arrow":"none",endArrowType:t.points[1]?"arrow":"none"},points:c};t.shadow&&(s.shadow=p(t.shadow)),e.addShape("custGeom",s)}else if("chart"===t.type){const l=[];for(let e=0;eb(e).color);else if(1===t.themeColor.length)c=I()(t.themeColor[0]).analogous(10).map(e=>b(e.toHexString()).color);else{const e=t.themeColor.length,l=I()(t.themeColor[e-1]).analogous(11-e).map(e=>e.toHexString());c=[...t.themeColor.slice(0,e-1),...l].map(e=>b(e).color)}const o={x:t.left/At,y:t.top/At,w:t.width/At,h:t.height/At,chartColors:"pie"===t.chartType?c:c.slice(0,t.data.series.length)};t.fill&&(o.plotArea={fill:{color:b(t.fill).color}}),t.legend&&(o.showLegend=!0,o.legendPos="top"===t.legend?"t":"b",o.legendColor=b(t.gridColor||"#000000").color,o.legendFontSize=14*$t);let a=n.ChartType.bar;var d;if("bar"===t.chartType)a=n.ChartType.bar,o.barDir=null!==(d=t.options)&&void 0!==d&&d.horizontalBars?"bar":"col";else if("line"===t.chartType){var u,v,h;null!==(u=t.options)&&void 0!==u&&u.showArea?a=n.ChartType.area:!1===(null===(v=t.options)||void 0===v?void 0:v.showLine)?(a=n.ChartType.scatter,l.unshift({name:"X-Axis",values:Array(t.data.series[0].length).fill(0).map((e,t)=>t)}),o.lineSize=0):a=n.ChartType.line,null!==(h=t.options)&&void 0!==h&&h.lineSmooth&&(o.lineSmooth=!0)}else if("pie"===t.chartType){var y;null!==(y=t.options)&&void 0!==y&&y.donut?(a=n.ChartType.doughnut,o.holeSize=75):a=n.ChartType.pie}e.addChart(a,l,o)}else if("table"===t.type){const l=[];for(let e=0;e1||n.rowspan>1)for(let c=e;cb(e)));for(let e=0;et.width*e/At)};t.theme&&(r.fill={color:"#ffffff"}),t.outline.width&&t.outline.color&&(r.border={type:"solid"===t.outline.style?"solid":"dash",pt:t.outline.width*$t,color:b(t.outline.color).color}),e.addTable(c,r)}else if("latex"===t.type){const l=document.querySelector(`.thumbnail-list .base-element-${t.id} svg`),c=Ft(l),n={data:c,x:t.left/At,y:t.top/At,w:t.width/At,h:t.height/At};if(t.link){const e=j(t.link);e&&(n.hyperlink=e)}e.addImage(n)}}setTimeout(()=>{n.writeFile({fileName:"pptist.pptx"}).then(()=>r.value=!1).catch(()=>{r.value=!1,ne["a"].error("导出失败")})},200)};return{exporting:r,exportImage:i,exportJSON:u,importSpecificFile:d,exportSpecificFile:s,exportPPTX:v}};const Pt={class:"hotkey-doc"},Ht={class:"title"},qt={class:"label"},Ut={class:"value"};var Gt=Object(n["defineComponent"])({__name:"HotkeyDoc",setup(e){return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Pt,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(ce),e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:e.type},[Object(n["createElementVNode"])("div",Ht,Object(n["toDisplayString"])(e.type),1),(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.children,e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"hotkey-item",key:e.label},[Object(n["createElementVNode"])("div",qt,Object(n["toDisplayString"])(e.label),1),Object(n["createElementVNode"])("div",Ut,Object(n["toDisplayString"])(e.value),1)]))),128))],64))),128))]))}}),Xt=(l("28eb"),l("d959")),Yt=l.n(Xt);const Zt=Yt()(Gt,[["__scopeId","data-v-4b1afc5f"]]);var Wt=Zt;const Jt=["accept"];var Kt=Object(n["defineComponent"])({__name:"FileInput",props:{accept:{type:String,default:"image/*"}},emits:["change"],setup(e,{emit:t}){const l=Object(n["ref"])(),c=()=>{l.value&&(l.value.value="",l.value.click())},o=e=>{const l=e.target.files;l&&t("change",l)};return(t,a)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"file-input",onClick:a[1]||(a[1]=e=>c())},[Object(n["renderSlot"])(t.$slots,"default"),Object(n["createElementVNode"])("input",{class:"input",type:"file",name:"upload",ref_key:"inputRef",ref:l,accept:e.accept,onChange:a[0]||(a[0]=e=>o(e))},null,40,Jt)]))}});l("6237");const Qt=Yt()(Kt,[["__scopeId","data-v-cdb026e2"]]);var el=Qt;const tl=e=>(Object(n["pushScopeId"])("data-v-76222f8e"),e=e(),Object(n["popScopeId"])(),e),ll={class:"editor-header"},cl={class:"left"},nl={class:"menu-item"},ol=tl(()=>Object(n["createElementVNode"])("span",{class:"text"},"文件",-1)),al={class:"menu-item"},rl=tl(()=>Object(n["createElementVNode"])("span",{class:"text"},"编辑",-1)),il={class:"menu-item"},sl=tl(()=>Object(n["createElementVNode"])("span",{class:"text"},"演示",-1)),dl={class:"menu-item"},ul=tl(()=>Object(n["createElementVNode"])("span",{class:"text"},"帮助",-1)),bl={class:"right"},Ol={href:"https://github.com/pipipi-pikachu/PPTist",target:"_blank"},ml={class:"menu-item"};var pl=Object(n["defineComponent"])({__name:"index",setup(e){const t=lt["a"].Item,l=z(),{gridLineSize:c,showRuler:a,showSelectPanel:r}=Object(o["c"])(l),{enterScreening:i,enterScreeningFromStart:s}=Ze(),{createSlide:d,deleteSlide:u,resetSlides:b}=Fe(),{redo:O,undo:m}=Te(),{importSpecificFile:p}=Rt(),f=l.setDialogForExport,j=()=>{l.setGridLineSize(c.value?0:50)},v=()=>{l.setRulerState(!a.value)},h=()=>{r.value?l.setSelectPanelState(!1):l.setSelectPanelState(!0)},y=Object(n["ref"])(!1),g=e=>window.open(e);return(e,l)=>{const o=Object(n["resolveComponent"])("IconFolderClose"),x=Object(n["resolveComponent"])("IconEdit"),k=Object(n["resolveComponent"])("IconPpt"),C=Object(n["resolveComponent"])("IconHelpcenter"),N=Object(n["resolveComponent"])("IconShare"),E=Object(n["resolveComponent"])("IconGithub");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ll,[Object(n["createElementVNode"])("div",cl,[Object(n["createVNode"])(Object(n["unref"])(tt["a"]),{trigger:["click"]},{overlay:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(lt["a"]),null,{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(el,{accept:".pptist",onChange:l[0]||(l[0]=e=>Object(n["unref"])(p)(e))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),null,{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("导入 pptist 文件")]),_:1})]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[1]||(l[1]=e=>Object(n["unref"])(f)("pptx"))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("导出文件")]),_:1})]),_:1})]),default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",nl,[Object(n["createVNode"])(o),Object(n["createTextVNode"])(),ol])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(tt["a"]),{trigger:["click"]},{overlay:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(lt["a"]),null,{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[2]||(l[2]=e=>Object(n["unref"])(m)())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("撤销")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[3]||(l[3]=e=>Object(n["unref"])(O)())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("重做")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[4]||(l[4]=e=>Object(n["unref"])(d)())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("添加页面")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[5]||(l[5]=e=>Object(n["unref"])(u)())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("删除页面")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[6]||(l[6]=e=>j())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])(Object(n["toDisplayString"])(Object(n["unref"])(c)?"关闭网格线":"打开网格线"),1)]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[7]||(l[7]=e=>v())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])(Object(n["toDisplayString"])(Object(n["unref"])(a)?"关闭标尺":"打开标尺"),1)]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[8]||(l[8]=e=>Object(n["unref"])(b)())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("重置幻灯片")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[9]||(l[9]=e=>h())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])(Object(n["toDisplayString"])(Object(n["unref"])(r)?"关闭选择面板":"打开选择面板"),1)]),_:1})]),_:1})]),default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",al,[Object(n["createVNode"])(x),Object(n["createTextVNode"])(),rl])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(tt["a"]),{trigger:["click"]},{overlay:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(lt["a"]),null,{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[10]||(l[10]=e=>Object(n["unref"])(s)())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("从头开始")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[11]||(l[11]=e=>Object(n["unref"])(i)())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("从当前页开始")]),_:1})]),_:1})]),default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",il,[Object(n["createVNode"])(k),Object(n["createTextVNode"])(),sl])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(tt["a"]),{trigger:["click"]},{overlay:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(lt["a"]),null,{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[12]||(l[12]=e=>g("https://github.com/pipipi-pikachu/PPTist/issues"))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("意见反馈")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[13]||(l[13]=e=>g("https://github.com/pipipi-pikachu/PPTist/blob/master/doc/Q&A.md"))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("常见问题")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{onClick:l[14]||(l[14]=e=>y.value=!0)},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("快捷键")]),_:1})]),_:1})]),default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",dl,[Object(n["createVNode"])(C),Object(n["createTextVNode"])(),ul])]),_:1})]),Object(n["createElementVNode"])("div",bl,[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,title:"导出"},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",{class:"menu-item",onClick:l[15]||(l[15]=e=>Object(n["unref"])(f)("pptx"))},[Object(n["createVNode"])(N,{size:"18",fill:"#666"})])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,title:"幻灯片放映"},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",{class:"menu-item",onClick:l[16]||(l[16]=e=>Object(n["unref"])(i)())},[Object(n["createVNode"])(k,{size:"19",fill:"#666",style:{"margin-top":"1px"}})])]),_:1}),Object(n["createElementVNode"])("a",Ol,[Object(n["createElementVNode"])("div",ml,[Object(n["createVNode"])(E,{size:"18",fill:"#666"})])])]),Object(n["createVNode"])(Object(n["unref"])(Qe["a"]),{width:"320",placement:"right",closable:!1,visible:y.value,onClose:l[17]||(l[17]=e=>y.value=!1)},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Wt)]),_:1},8,["visible"])])}}});l("b7d2");const fl=Yt()(pl,[["__scopeId","data-v-76222f8e"]]);var jl=fl;const vl=Symbol(),hl=Symbol(),yl=()=>{const e=window.getSelection();e&&e.removeAllRanges()};var gl=e=>{const t=Object(n["ref"])(0),l=Object(n["ref"])(0),c=z(),{canvasPercentage:a,canvasDragged:r}=Object(o["c"])(c),{viewportRatio:i}=Object(o["c"])(T()),s=()=>{if(!e.value)return;const n=e.value.clientWidth,o=e.value.clientHeight;if(o/n>i.value){const e=n*(a.value/100);c.setCanvasScale(e/Ve),t.value=(n-e)/2,l.value=(o-e*i.value)/2}else{const e=o*(a.value/100);c.setCanvasScale(e/(Ve*i.value)),t.value=(n-e/i.value)/2,l.value=(o-e)/2}},d=(n,o)=>{if(!e.value)return;const a=e.value.clientWidth,r=e.value.clientHeight,s=a*(n/100),d=a*(o/100),u=r*(n/100),b=r*(o/100);r/a>i.value?c.setCanvasScale(s/Ve):c.setCanvasScale(u/(Ve*i.value)),t.value=t.value-(s-d)/2,l.value=l.value-(u-b)/2};Object(n["watch"])(a,d),Object(n["watch"])(i,s),Object(n["watch"])(r,()=>{r.value||s()});const u=Object(n["computed"])(()=>({width:Ve,height:Ve*i.value,left:t.value,top:l.value})),b=new ResizeObserver(s);Object(n["onMounted"])(()=>{e.value&&b.observe(e.value)}),Object(n["onUnmounted"])(()=>{e.value&&b.unobserve(e.value)});const O=e=>{let n=!0;const o=e.pageX,a=e.pageY,r=t.value,i=l.value;document.onmousemove=e=>{if(!n)return;const c=e.pageX,s=e.pageY;t.value=r+(c-o),l.value=i+(s-a)},document.onmouseup=()=>{n=!1,document.onmousemove=null,document.onmouseup=null,c.setCanvasDragged(!0)}};return{viewportStyles:u,dragViewport:O}},xl=(e,t)=>{const l=z(),{canvasScale:c,hiddenElementIdList:a}=Object(o["c"])(l),r=Object(n["ref"])(!1),i=Object(n["ref"])(1),s=Object(n["ref"])({top:0,left:0,width:0,height:0}),d=n=>{if(!t.value)return;let o=!0;const d=t.value.getBoundingClientRect(),u=5,b=n.pageX,O=n.pageY,m=(b-d.x)/c.value,p=(O-d.y)/c.value;s.value={top:p,left:m,width:0,height:0},r.value=!1,i.value=4,document.onmousemove=e=>{if(!o)return;const t=e.pageX,l=e.pageY,n=(t-b)/c.value,a=(l-O)/c.value,d=Math.abs(n),m=Math.abs(a);if(d0&&a>0?p=4:n<0&&a<0?p=1:n>0&&a<0?p=2:n<0&&a>0&&(p=3),s.value={...s.value,width:d,height:m},r.value=!0,i.value=p},document.onmouseup=()=>{document.onmousemove=null,document.onmouseup=null,o=!1;let t=[];for(let l=0;ln&&bo&&mn-r&&bo-d&&mn&&bo-d&&mn-r&&bo&&m{if(l.groupId){const c=t.map(e=>e.id),n=e.value.filter(e=>e.groupId===l.groupId);return n.every(e=>c.includes(e.id))}return!0});const c=t.map(e=>e.id);l.setActiveElementIdList(c),r.value=!1}};return{mouseSelection:s,mouseSelectionVisible:r,mouseSelectionQuadrant:i,updateMouseSelection:d}},kl=e=>{const{disableHotkeys:t}=Object(o["c"])(z()),{createImageElement:l,createTextElement:c}=Me(),a=e=>{if(!e.dataTransfer||0===e.dataTransfer.items.length)return;const n=e.dataTransfer.items[0];if("file"===n.kind&&-1!==n.type.indexOf("image")){const e=n.getAsFile();e&&we(e).then(e=>l(e))}else"string"===n.kind&&"text/plain"===n.type&&n.getAsString(e=>{if(t.value)return;const l=Ne(e);c({left:0,top:0,width:600,height:50},{content:l})})};Object(n["onMounted"])(()=>{e.value&&e.value.addEventListener("drop",a),document.ondragleave=e=>e.preventDefault(),document.ondrop=e=>e.preventDefault(),document.ondragenter=e=>e.preventDefault(),document.ondragover=e=>e.preventDefault()}),Object(n["onUnmounted"])(()=>{e.value&&e.value.removeEventListener("drop",a),document.ondragleave=null,document.ondrop=null,document.ondragenter=null,document.ondragover=null})};const Cl=(e,t)=>{const l=Math.atan2(e,t),c=180/Math.PI*l;return c};var Nl=(e,t)=>{const l=T(),{canvasScale:c}=Object(o["c"])(z()),{addHistorySnapshot:n}=Te(),a=o=>{let a=!0,r=0;const i=o.rotate||0,s=o.left,d=o.top,u=o.width,b=o.height,O=s+u/2,m=d+b/2;if(!t.value)return;const p=t.value.getBoundingClientRect();document.onmousemove=t=>{if(!a)return;const l=(t.pageX-p.left)/c.value,n=(t.pageY-p.top)/c.value,i=l-O,s=m-n;r=Cl(i,s);const d=5;Math.abs(r)<=d?r=0:r>0&&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(e=>o.id===e.id?{...e,rotate:r}:e)},document.onmouseup=()=>{a=!1,document.onmousemove=null,document.onmouseup=null,i!==r&&(l.updateSlide({elements:e.value}),n())}};return{rotateElement:a}};const El={text:"文本",image:"图片",shape:"形状",line:"线条",chart:"图表",table:"表格",video:"视频",audio:"音频",latex:"公式"},wl={text:20,image:20,shape:15,chart:200,table:20,video:250,audio:20,latex:20},Vl=(e,t)=>{const{left:l,top:c,width:n,height:o}=e,a=Math.sqrt(Math.pow(n,2)+Math.pow(o,2))/2,r=180*Math.atan(o/n)/Math.PI,i=(180-t-r)*Math.PI/180,s=(r-t)*Math.PI/180,d=(90-t)*Math.PI/180,u=t*Math.PI/180,b=n/2,O=o/2,m=l+b,p=c+O,f={left:m+a*Math.cos(i),top:p-a*Math.sin(i)},j={left:m+O*Math.cos(d),top:p-O*Math.sin(d)},v={left:m+a*Math.cos(s),top:p-a*Math.sin(s)},h={left:m+b*Math.cos(u),top:p+b*Math.sin(u)},y={left:m-a*Math.cos(i),top:p+a*Math.sin(i)},g={left:m-O*Math.sin(u),top:p+O*Math.cos(u)},x={left:m-a*Math.cos(s),top:p+a*Math.sin(s)},k={left:m-b*Math.cos(u),top:p-b*Math.sin(u)};return{leftTopPoint:f,topPoint:j,rightTopPoint:v,rightPoint:h,rightBottomPoint:y,bottomPoint:g,leftBottomPoint:x,leftPoint:k}},Il=(e,t)=>{const l={[Q.RIGHT_BOTTOM]:t.leftTopPoint,[Q.LEFT_BOTTOM]:t.rightTopPoint,[Q.LEFT_TOP]:t.rightBottomPoint,[Q.RIGHT_TOP]:t.leftBottomPoint,[Q.TOP]:t.bottomPoint,[Q.BOTTOM]:t.topPoint,[Q.LEFT]:t.rightPoint,[Q.RIGHT]:t.leftPoint};return l[e]};var Sl,Ll,Bl=(e,t,l)=>{const c=z(),n=T(),{activeElementIdList:a,activeGroupElementId:r}=Object(o["c"])(c),{viewportRatio:i}=Object(o["c"])(n),{ctrlOrShiftKeyActive:s}=Object(o["c"])(G()),{addHistorySnapshot:d}=Te(),u=(o,u,b)=>{const O=!(o instanceof MouseEvent);if(O&&(!o.changedTouches||!o.changedTouches[0]))return;let m=!0;c.setScalingState(!0);const p=u.left,f=u.top,j=u.width,v=u.height,h="table"===u.type?u.cellMinHeight:0,y="rotate"in u&&u.rotate?u.rotate:0,g=Math.PI*y/180,x=s.value||"fixedRatio"in u&&u.fixedRatio,k=j/v,C=O?o.changedTouches[0].pageX:o.pageX,N=O?o.changedTouches[0].pageY:o.pageY,E=wl[u.type]||20,w=e=>e{const c=5,n=[];let o=!1,a=!1;const r={offsetX:0,offsetY:0};if(l||0===l)for(let t=0;t{if(!m)return;const c=t instanceof MouseEvent?t.pageX:t.changedTouches[0].pageX,n=t instanceof MouseEvent?t.pageY:t.changedTouches[0].pageY,o=c-C,a=n-N;let r=j,i=v,s=p,d=f;if(y){const e=(Math.cos(g)*o+Math.sin(g)*a)/l.value;let t=(Math.cos(g)*a-Math.sin(g)*o)/l.value;x&&(b!==Q.RIGHT_BOTTOM&&b!==Q.LEFT_TOP||(t=e/k),b!==Q.LEFT_BOTTOM&&b!==Q.RIGHT_TOP||(t=-e/k)),b===Q.RIGHT_BOTTOM?(r=w(j+e),i=w(v+t)):b===Q.LEFT_BOTTOM?(r=w(j-e),i=w(v+t),s=p-(r-j)):b===Q.LEFT_TOP?(r=w(j-e),i=w(v-t),s=p-(r-j),d=f-(i-v)):b===Q.RIGHT_TOP?(r=w(j+e),i=w(v-t),d=f-(i-v)):b===Q.TOP?(i=w(v-t),d=f-(i-v)):b===Q.BOTTOM?i=w(v+t):b===Q.LEFT?(r=w(j-e),s=p-(r-j)):b===Q.RIGHT&&(r=w(j+e));const c=Vl({width:r,height:i,left:s,top:d},y),n=Il(b,c),u=n.left,O=n.top,m=u-I,h=O-S;s-=m,d-=h}else{let e=o/l.value,t=a/l.value;if(x&&(b!==Q.RIGHT_BOTTOM&&b!==Q.LEFT_TOP||(t=e/k),b!==Q.LEFT_BOTTOM&&b!==Q.RIGHT_TOP||(t=-e/k)),b===Q.RIGHT_BOTTOM){const{offsetX:l,offsetY:c}=_(p+j+e,f+v+t);e-=l,t-=c,x&&(c?e=t*k:t=e/k),r=w(j+e),i=w(v+t)}else if(b===Q.LEFT_BOTTOM){const{offsetX:l,offsetY:c}=_(p+e,f+v+t);e-=l,t-=c,x&&(c?e=-t*k:t=-e/k),r=w(j-e),i=w(v+t),s=p-(r-j)}else if(b===Q.LEFT_TOP){const{offsetX:l,offsetY:c}=_(p+e,f+t);e-=l,t-=c,x&&(c?e=t*k:t=e/k),r=w(j-e),i=w(v-t),s=p-(r-j),d=f-(i-v)}else if(b===Q.RIGHT_TOP){const{offsetX:l,offsetY:c}=_(p+j+e,f+t);e-=l,t-=c,x&&(c?e=-t*k:t=-e/k),r=w(j+e),i=w(v-t),d=f-(i-v)}else if(b===Q.LEFT){const{offsetX:t}=_(p+e,null);e-=t,r=w(j-e),s=p-(r-j)}else if(b===Q.RIGHT){const{offsetX:t}=_(p+j+e,null);e-=t,r=w(j+e)}else if(b===Q.TOP){const{offsetY:e}=_(null,f+t);t-=e,i=w(v-t),d=f-(i-v)}else if(b===Q.BOTTOM){const{offsetY:e}=_(null,f+v+t);t-=e,i=w(v+t)}}e.value=e.value.map(e=>{if(u.id!==e.id)return e;if("shape"===e.type&&"pathFormula"in e&&e.pathFormula){const t=Le[e.pathFormula];let l="";return l="editable"in t?t.formula(r,i,e.keypoint):t.formula(r,i),{...e,left:s,top:d,width:r,height:i,viewBox:[r,i],path:l}}if("table"===e.type){let t=h+(i-v)/e.data.length;return t=t<36?36:t,t===h?{...e,left:s,width:r}:{...e,left:s,top:d,width:r,height:i,cellMinHeight:t<36?36:t}}return{...e,left:s,top:d,width:r,height:i}})},M=l=>{m=!1,document.ontouchmove=null,document.ontouchend=null,document.onmousemove=null,document.onmouseup=null,t.value=[];const o=l instanceof MouseEvent?l.pageX:l.changedTouches[0].pageX,a=l instanceof MouseEvent?l.pageY:l.changedTouches[0].pageY;C===o&&N===a||(n.updateSlide({elements:e.value}),c.setScalingState(!1),d())};O?(document.ontouchmove=T,document.ontouchend=M):(document.onmousemove=T,document.onmouseup=M)},b=(t,c,o)=>{let r=!0;const{minX:i,maxX:u,minY:b,maxY:O}=c,m=u-i,p=O-b,f=m/p,j=t.pageX,v=t.pageY,h=JSON.parse(JSON.stringify(e.value));document.onmousemove=t=>{if(!r)return;const c=t.pageX,n=t.pageY,d=(c-j)/l.value;let y=(n-v)/l.value;s.value&&(o!==Q.RIGHT_BOTTOM&&o!==Q.LEFT_TOP||(y=d/f),o!==Q.LEFT_BOTTOM&&o!==Q.RIGHT_TOP||(y=-d/f));let g=i,x=u,k=b,C=O;o===Q.RIGHT_BOTTOM?(x=u+d,C=O+y):o===Q.LEFT_BOTTOM?(g=i+d,C=O+y):o===Q.LEFT_TOP?(g=i+d,k=b+y):o===Q.RIGHT_TOP?(x=u+d,k=b+y):o===Q.TOP?k=b+y:o===Q.BOTTOM?C=O+y:o===Q.LEFT?g=i+d:o===Q.RIGHT&&(x=u+d);const N=x-g,E=C-k;let w=N/m,V=E/p;w<=0&&(w=0),V<=0&&(V=0),e.value=e.value.map(e=>{if(("image"===e.type||"shape"===e.type)&&a.value.includes(e.id)){const t=h.find(t=>t.id===e.id);return{...e,width:t.width*w,height:t.height*V,left:g+(t.left-i)*w,top:k+(t.top-b)*V}}return e})},document.onmouseup=t=>{r=!1,document.onmousemove=null,document.onmouseup=null,j===t.pageX&&v===t.pageY||(n.updateSlide({elements:e.value}),d())}};return{scaleElement:u,scaleMultiElement:b}},_l=(e,t)=>{const l=z(),{activeElementIdList:c,activeGroupElementId:n,handleElementId:a,editorAreaFocus:r}=Object(o["c"])(l),{ctrlOrShiftKeyActive:i}=Object(o["c"])(G()),s=(o,s,d=!0)=>{if(r.value||l.setEditorareaFocus(!0),c.value.includes(s.id)){if(i.value){let t=[];if(s.groupId){const l=[];e.value.forEach(e=>{e.groupId===s.groupId&&l.push(e.id)}),t=c.value.filter(e=>!l.includes(e))}else t=c.value.filter(e=>e!==s.id);t.length>0&&l.setActiveElementIdList(t)}else if(a.value!==s.id)l.setHandleElementId(s.id);else if(n.value!==s.id){const e=o instanceof MouseEvent?o.pageX:o.changedTouches[0].pageX,t=o instanceof MouseEvent?o.pageY:o.changedTouches[0].pageY;o.target.onmouseup=c=>{const n=c.pageX,o=c.pageY;e===n&&t===o&&(l.setActiveGroupElementId(s.id),c.target.onmouseup=null)}}}else{let t=[];if(t=i.value?[...c.value,s.id]:[s.id],s.groupId){const l=[];e.value.forEach(e=>{e.groupId===s.groupId&&l.push(e.id)}),t=[...t,...l]}l.setActiveElementIdList(Object(S["uniq"])(t)),l.setHandleElementId(s.id)}d&&t(o,s)};return{selectElement:s}},Tl=(e,t,l)=>{const c=T(),{activeElementIdList:n,activeGroupElementId:a}=Object(o["c"])(z()),{shiftKeyState:r}=Object(o["c"])(G()),{viewportRatio:i}=Object(o["c"])(c),{addHistorySnapshot:s}=Te(),d=(o,d)=>{const u=!(o instanceof MouseEvent);if(u&&(!o.changedTouches||!o.changedTouches[0]))return;if(!n.value.includes(d.id))return;let b=!0;const O=Ve,m=Ve*i.value,p=5,f=JSON.parse(JSON.stringify(e.value)),j=f.filter(e=>n.value.includes(e.id)),v=d.left,h=d.top,y=d.width,g="height"in d&&d.height?d.height:0,x="rotate"in d&&d.rotate?d.rotate:0,k=u?o.changedTouches[0].pageX:o.pageX,C=u?o.changedTouches[0].pageY:o.pageY;let N=null;const E=d.id===a.value;let w=[],V=[];for(const t of e.value){if("line"===t.type)continue;if(E&&t.id===d.id)continue;if(!E&&n.value.includes(t.id))continue;let e,l,c,o;if("rotate"in t&&t.rotate){const{xRange:n,yRange:a}=fe({left:t.left,top:t.top,width:t.width,height:t.height,rotate:t.rotate});e=n[0],l=a[0],c=n[1]-n[0],o=a[1]-a[0]}else e=t.left,l=t.top,c=t.width,o=t.height;const a=e+c,r=l+o,i=l+o/2,s=e+c/2,u={value:l,range:[e,a]},b={value:r,range:[e,a]},O={value:i,range:[e,a]},m={value:e,range:[l,r]},p={value:a,range:[l,r]},f={value:s,range:[l,r]};w.push(u,b,O),V.push(m,p,f)}const I={value:0,range:[0,O]},S={value:m,range:[0,O]},L={value:m/2,range:[0,O]},B={value:0,range:[0,m]},_={value:O,range:[0,m]},T={value:O/2,range:[0,m]};w.push(I,S,L),V.push(B,_,T),w=ye(w),V=ye(V);const M=c=>{const 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)Math.abs(s)&&(s=0),Math.abs(i)e.id===d.id?{...e,left:I,top:S}:e);else{const t=e.value.find(e=>e.id===d.id);if(!t)return;e.value=e.value.map(e=>n.value.includes(e.id)?e.id===d.id?{...e,left:I,top:S}:{...e,left:e.left+(I-t.left),top:e.top+(S-t.top)}:e)}},D=l=>{b=!1,document.ontouchmove=null,document.ontouchend=null,document.onmousemove=null,document.onmouseup=null,t.value=[];const n=l instanceof MouseEvent?l.pageX:l.changedTouches[0].pageX,o=l instanceof MouseEvent?l.pageY:l.changedTouches[0].pageY;k===n&&C===o||(c.updateSlide({elements:e.value}),s())};u?(document.ontouchmove=M,document.ontouchend=D):(document.onmousemove=M,document.onmouseup=D)};return{dragElement:d}},Ml=e=>{const t=T(),{canvasScale:l}=Object(o["c"])(z()),{addHistorySnapshot:c}=Te(),n=(n,o,a)=>{let r=!0;const i=8,s=n.pageX,d=n.pageY,u=[];for(let t=0;t{if(!r)return;const c=t.pageX,n=t.pageY,b=(c-s)/l.value,O=(n-d)/l.value;let m=o.left+o.start[0],p=o.top+o.start[1],f=o.left+o.end[0],j=o.top+o.end[1];const v=o.broken||o.curve||[0,0];let h=o.left+v[0],y=o.top+v[1];const[g,x]=o.cubic||[[0,0],[0,0]];let k=o.left+g[0],C=o.top+g[1],N=o.left+x[0],E=o.top+x[1];if(a===ee.START){m+=b,p+=O,Math.abs(m-f)f&&(L[0]=I-w,B[0]=0),p>j&&(L[1]=S-V,B[1]=0),e.value=e.value.map(e=>{if(e.id===o.id){const t={...e,left:w,top:V,start:L,end:B};return a===ee.START||a===ee.END?(o.broken&&(t.broken=[(L[0]+B[0])/2,(L[1]+B[1])/2]),o.curve&&(t.curve=[(L[0]+B[0])/2,(L[1]+B[1])/2]),o.cubic&&(t.cubic=[[(L[0]+B[0])/2,(L[1]+B[1])/2],[(L[0]+B[0])/2,(L[1]+B[1])/2]])):a===ee.C?(o.broken&&(t.broken=[h-w,y-V]),o.curve&&(t.curve=[h-w,y-V])):o.cubic&&(t.cubic=[[k-w,C-V],[N-w,E-V]]),t}return e})},document.onmouseup=l=>{r=!1,document.onmousemove=null,document.onmouseup=null;const n=l.pageX,o=l.pageY;s===n&&d===o||(t.updateSlide({elements:e.value}),c())}};return{dragLineElement:n}},Dl=(e,t)=>{const l=T(),{addHistorySnapshot:c}=Te(),n=(n,o)=>{const a=!(n instanceof MouseEvent);if(a&&(!n.changedTouches||!n.changedTouches[0]))return;let r=!0;const i=a?n.changedTouches[0].pageX:n.pageX,s=a?n.changedTouches[0].pageY:n.pageY,d=Le[o.pathFormula];let u=null;if("editable"in d){const e=d.getBaseSize(o.width,o.height),t=e*o.keypoint,[l,c]=d.range,n=d.relative;u={baseSize:e,originPos:t,min:l,max:c,relative:n}}const b=l=>{if(!r)return;const c=l instanceof MouseEvent?l.pageX:l.changedTouches[0].pageX,n=l instanceof MouseEvent?l.pageY:l.changedTouches[0].pageY,a=(c-i)/t.value,b=(n-s)/t.value;e.value=e.value.map(e=>{if(e.id===o.id&&u){const{baseSize:t,originPos:l,min:c,max:n,relative:o}=u,r=e;let i=0;return"left"===o&&(i=(l+a)/t),"right"===o&&(i=(l-a)/t),"center"===o&&(i=(l-2*a)/t),"top"===o&&(i=(l+b)/t),"bottom"===o&&(i=(l-b)/t),in&&(i=n),{...e,keypoint:i,path:d.formula(r.width,r.height,i)}}return e})},O=t=>{r=!1,document.ontouchmove=null,document.ontouchend=null,document.onmousemove=null,document.onmouseup=null;const n=t instanceof MouseEvent?t.pageX:t.changedTouches[0].pageX,o=t instanceof MouseEvent?t.pageY:t.changedTouches[0].pageY;i===n&&s===o||(l.updateSlide({elements:e.value}),c())};a?(document.ontouchmove=b,document.ontouchend=O):(document.onmousemove=b,document.onmouseup=O)};return{moveShapeKeypoint:n}},zl=e=>{const t=z(),{canvasScale:l,creatingElement:c}=Object(o["c"])(t),n=t=>{const{start:c,end:n}=t;if(!e.value)return;const o=e.value.getBoundingClientRect(),[a,r]=c,[i,s]=n,d=Math.min(a,i),u=Math.max(a,i),b=Math.min(r,s),O=Math.max(r,s),m=(d-o.x)/l.value,p=(b-o.y)/l.value,f=(u-d)/l.value,j=(O-b)/l.value;return{left:m,top:p,width:f,height:j}},a=t=>{const{start:c,end:n}=t;if(!e.value)return;const o=e.value.getBoundingClientRect(),[a,r]=c,[i,s]=n,d=Math.min(a,i),u=Math.max(a,i),b=Math.min(r,s),O=Math.max(r,s),m=(d-o.x)/l.value,p=(b-o.y)/l.value,f=(u-d)/l.value,j=(O-b)/l.value,v=[a===d?0:f,r===b?0:j],h=[i===d?0:f,s===b?0:j];return{left:m,top:p,start:v,end:h}},{createTextElement:r,createShapeElement:i,createLineElement:s}=Me(),d=e=>{if(!c.value)return;const l=c.value.type;if("text"===l){const t=n(e);t&&r(t,{vertical:c.value.vertical})}else if("shape"===l){const t=n(e);t&&i(t,c.value.data)}else if("line"===l){const t=a(e);t&&s(t,c.value.data)}t.setCreatingElement(null)};return{insertElementFromCreateSelection:d}},Fl=()=>{const e=T(),{activeElementIdList:t,activeElementList:l}=Object(o["c"])(z()),{currentSlide:c,viewportRatio:n}=Object(o["c"])(e),{addHistorySnapshot:a}=Te(),r=o=>{const r=Ve,i=Ve*n.value,{minX:s,maxX:d,minY:u,maxY:b}=he(l.value),O=JSON.parse(JSON.stringify(c.value.elements));for(const e of O)if(t.value.includes(e.id)){if(o===J.CENTER){const t=u+(b-u)/2-i/2,l=s+(d-s)/2-r/2;e.top=e.top-t,e.left=e.left-l}if(o===J.TOP){const t=u-0;e.top=e.top-t}else if(o===J.VERTICAL){const t=u+(b-u)/2-i/2;e.top=e.top-t}else if(o===J.BOTTOM){const t=b-i;e.top=e.top-t}else if(o===J.LEFT){const t=s-0;e.left=e.left-t}else if(o===J.HORIZONTAL){const t=s+(d-s)/2-r/2;e.left=e.left-t}else if(o===J.RIGHT){const t=d-r;e.left=e.left-t}}e.updateSlide({elements:O}),a()};return{alignElementToCanvas:r}},Al=e=>{const t=Object(n["computed"])(()=>{if(e.value){const{h:t,v:l,blur:c,color:n}=e.value;return`${t}px ${l}px ${c}px ${n}`}return""});return{shadowStyle:t}},$l=(e,t)=>{const l=Object(n["computed"])(()=>{let l="";return e.value&&t.value?l="rotateX(180deg) rotateY(180deg)":t.value?l="rotateX(180deg)":e.value&&(l="rotateY(180deg)"),l});return{flipStyle:l}};(function(e){e["RECT"]="rect",e["ELLIPSE"]="ellipse",e["POLYGON"]="polygon"})(Sl||(Sl={})),function(e){e["RECT"]="rect",e["ROUNDRECT"]="roundRect",e["ELLIPSE"]="ellipse",e["TRIANGLE"]="triangle",e["PENTAGON"]="pentagon",e["RHOMBUS"]="rhombus",e["STAR"]="star"}(Ll||(Ll={}));const Rl={rect:{name:"矩形",type:Sl.RECT,radius:"0",style:""},rect2:{name:"矩形2",type:Sl.POLYGON,style:"polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 0 100%)",createPath:(e,t)=>`M 0 0 L ${.8*e} 0 L ${e} ${.2*t} L ${e} ${t} L 0 ${t} Z`},rect3:{name:"矩形3",type:Sl.POLYGON,style:"polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 20% 100%, 0% 80%)",createPath:(e,t)=>`M 0 0 L ${.8*e} 0 L ${e} ${.2*t} L ${e} ${t} L ${.2*e} ${t} L 0 ${.8*t} Z`},roundRect:{name:"圆角矩形",type:Sl.RECT,radius:"10px",style:"inset(0 0 0 0 round 10px 10px 10px 10px)"},ellipse:{name:"圆形",type:Sl.ELLIPSE,style:"ellipse(50% 50% at 50% 50%)"},triangle:{name:"三角形",type:Sl.POLYGON,style:"polygon(50% 0%, 0% 100%, 100% 100%)",createPath:(e,t)=>`M ${.5*e} 0 L 0 ${t} L ${e} ${t} Z`},triangle2:{name:"三角形2",type:Sl.POLYGON,style:"polygon(50% 100%, 0% 0%, 100% 0%)",createPath:(e,t)=>`M ${.5*e} ${t} L 0 0 L ${e} 0 Z`},triangle3:{name:"三角形3",type:Sl.POLYGON,style:"polygon(0% 0%, 0% 100%, 100% 100%)",createPath:(e,t)=>`M 0 0 L 0 ${t} L ${e} ${t} Z`},rhombus:{name:"菱形",type:Sl.POLYGON,style:"polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)",createPath:(e,t)=>`M ${.5*e} 0 L ${e} ${.5*t} L ${.5*e} ${t} L 0 ${.5*t} Z`},pentagon:{name:"五边形",type:Sl.POLYGON,style:"polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%)",createPath:(e,t)=>`M ${.5*e} 0 L ${e} ${.38*t} L ${.82*e} ${t} L ${.18*e} ${t} L 0 ${.38*t} Z`},hexagon:{name:"六边形",type:Sl.POLYGON,style:"polygon(20% 0%, 80% 0%, 100% 50%, 80% 100%, 20% 100%, 0% 50%)",createPath:(e,t)=>`M ${.2*e} 0 L ${.8*e} 0 L ${e} ${.5*t} L ${.8*e} ${t} L ${.2*e} ${t} L 0 ${.5*t} Z`},heptagon:{name:"七边形",type:Sl.POLYGON,style:"polygon(50% 0%, 90% 20%, 100% 60%, 75% 100%, 25% 100%, 0% 60%, 10% 20%)",createPath:(e,t)=>`M ${.5*e} 0 L ${.9*e} ${.2*t} L ${e} ${.6*t} L ${.75*e} ${t} L ${.25*e} ${t} L 0 ${.6*t} L ${.1*e} ${.2*t} Z`},octagon:{name:"八边形",type:Sl.POLYGON,style:"polygon(30% 0%, 70% 0%, 100% 30%, 100% 70%, 70% 100%, 30% 100%, 0% 70%, 0% 30%)",createPath:(e,t)=>`M ${.3*e} 0 L ${.7*e} 0 L ${e} ${.3*t} L ${e} ${.7*t} L ${.7*e} ${t} L ${.3*e} ${t} L 0 ${.7*t} L 0 ${.3*t} Z`},chevron:{name:"V形",type:Sl.POLYGON,style:"polygon(75% 0%, 100% 50%, 75% 100%, 0% 100%, 25% 50%, 0% 0%)",createPath:(e,t)=>`M ${.75*e} 0 L ${e} ${.5*t} L ${.75*e} ${t} L 0 ${t} L ${.25*e} ${.5*t} L 0 0 Z`},point:{name:"点",type:Sl.POLYGON,style:"polygon(0% 0%, 75% 0%, 100% 50%, 75% 100%, 0% 100%)",createPath:(e,t)=>`M 0 0 L ${.75*e} 0 L ${e} ${.5*t} L ${.75*e} ${t} L 0 ${t} Z`},arrow:{name:"箭头",type:Sl.POLYGON,style:"polygon(0% 20%, 60% 20%, 60% 0%, 100% 50%, 60% 100%, 60% 80%, 0% 80%)",createPath:(e,t)=>`M 0 ${.2*t} L ${.6*e} ${.2*t} L ${.6*e} 0 L ${e} ${.5*t} L ${.6*e} ${t} L ${.6*e} ${.8*t} L 0 ${.8*t} Z`},parallelogram:{name:"平行四边形",type:Sl.POLYGON,style:"polygon(30% 0%, 100% 0%, 70% 100%, 0% 100%)",createPath:(e,t)=>`M ${.3*e} 0 L ${e} 0 L ${.7*e} ${t} L 0 ${t} Z`},parallelogram2:{name:"平行四边形2",type:Sl.POLYGON,style:"polygon(30% 100%, 100% 100%, 70% 0%, 0% 0%)",createPath:(e,t)=>`M ${.3*e} ${t} L ${e} ${t} L ${.7*e} 0 L 0 0 Z`},trapezoid:{name:"梯形",type:Sl.POLYGON,style:"polygon(25% 0%, 75% 0%, 100% 100%, 0% 100%)",createPath:(e,t)=>`M ${.25*e} 0 L ${.75*e} 0 L ${e} ${t} L 0 ${t} Z`},trapezoid2:{name:"梯形2",type:Sl.POLYGON,style:"polygon(0% 0%, 100% 0%, 75% 100%, 25% 100%)",createPath:(e,t)=>`M 0 0 L ${e} 0 L ${.75*e} ${t} L ${.25*e} ${t} Z`}};var Pl=e=>{const t=Object(n["computed"])(()=>{if(!e.value)return Rl.rect;const t=e.value.shape||Sl.RECT;return Rl[t]}),l=Object(n["computed"])(()=>{if(!e.value)return{top:"0",left:"0",width:"100%",height:"100%"};const[t,l]=e.value.range,c=(l[0]-t[0])/100,n=(l[1]-t[1])/100,o=t[0]/c,a=t[1]/n;return{left:-o+"%",top:-a+"%",width:100/c+"%",height:100/n+"%"}});return{clipShape:t,imgPosition:l}},Hl=e=>{const t=Object(n["computed"])(()=>{if(!e.value)return"";let t="";for(const l of Object.keys(e.value))t+=`${l}(${e.value[l]}) `;return t});return{filter:t}},ql=e=>{const t=Object(n["computed"])(()=>{var t,l;return null!==(t=null===(l=e.value)||void 0===l?void 0:l.width)&&void 0!==t?t:0}),l=Object(n["computed"])(()=>{var t;return(null===(t=e.value)||void 0===t?void 0:t.style)||"solid"}),c=Object(n["computed"])(()=>{var t;return(null===(t=e.value)||void 0===t?void 0:t.color)||"#d14424"});return{outlineWidth:t,outlineStyle:l,outlineColor:c}};const Ul=["width","height"],Gl=["rx","ry","width","height","stroke","stroke-width","stroke-dasharray"];var Xl=Object(n["defineComponent"])({__name:"ImageRectOutline",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},outline:{type:Object},radius:{type:String,default:"0"}},setup(e){const t=e,{outlineWidth:l,outlineStyle:c,outlineColor:o}=ql(Object(n["toRef"])(t,"outline"));return(t,a)=>e.outline?(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",{key:0,class:"image-rect-outline",overflow:"visible",width:e.width,height:e.height},[Object(n["createElementVNode"])("rect",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:"transparent",rx:e.radius,ry:e.radius,width:e.width,height:e.height,stroke:Object(n["unref"])(o),"stroke-width":Object(n["unref"])(l),"stroke-dasharray":"dashed"===Object(n["unref"])(c)?"10 6":"0 0"},null,8,Gl)],8,Ul)):Object(n["createCommentVNode"])("",!0)}});l("fef7");const Yl=Yt()(Xl,[["__scopeId","data-v-b5bace06"]]);var Zl=Yl;const Wl=["width","height"],Jl=["cx","cy","rx","ry","stroke","stroke-width","stroke-dasharray"];var Kl=Object(n["defineComponent"])({__name:"ImageEllipseOutline",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},outline:{type:Object}},setup(e){const t=e,{outlineWidth:l,outlineStyle:c,outlineColor:o}=ql(Object(n["toRef"])(t,"outline"));return(t,a)=>e.outline?(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",{key:0,class:"image-ellipse-outline",overflow:"visible",width:e.width,height:e.height},[Object(n["createElementVNode"])("ellipse",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:"transparent",cx:e.width/2,cy:e.height/2,rx:e.width/2,ry:e.height/2,stroke:Object(n["unref"])(o),"stroke-width":Object(n["unref"])(l),"stroke-dasharray":"dashed"===Object(n["unref"])(c)?"10 6":"0 0"},null,8,Jl)],8,Wl)):Object(n["createCommentVNode"])("",!0)}});l("45c15");const Ql=Yt()(Kl,[["__scopeId","data-v-71b17928"]]);var ec=Ql;const tc=["width","height"],lc=["d","stroke","stroke-width","stroke-dasharray"];var cc=Object(n["defineComponent"])({__name:"ImagePolygonOutline",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},outline:{type:Object},createPath:{type:Function,required:!0}},setup(e){const t=e,{outlineWidth:l,outlineStyle:c,outlineColor:o}=ql(Object(n["toRef"])(t,"outline"));return(t,a)=>e.outline?(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",{key:0,class:"image-polygon-outline",overflow:"visible",width:e.width,height:e.height},[Object(n["createElementVNode"])("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:"transparent",d:e.createPath(e.width,e.height),stroke:Object(n["unref"])(o),"stroke-width":Object(n["unref"])(l),"stroke-dasharray":"dashed"===Object(n["unref"])(c)?"10 6":"0 0"},null,8,lc)],8,tc)):Object(n["createCommentVNode"])("",!0)}});l("180d");const nc=Yt()(cc,[["__scopeId","data-v-41071294"]]);var oc=nc;const ac={class:"image-outline"};var rc=Object(n["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0}},setup(e){const t=e,l=Object(n["computed"])(()=>t.elementInfo.clip),{clipShape:c}=Pl(l);return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ac,["rect"===Object(n["unref"])(c).type?(Object(n["openBlock"])(),Object(n["createBlock"])(Zl,{key:0,width:e.elementInfo.width,height:e.elementInfo.height,radius:Object(n["unref"])(c).radius,outline:e.elementInfo.outline},null,8,["width","height","radius","outline"])):"ellipse"===Object(n["unref"])(c).type?(Object(n["openBlock"])(),Object(n["createBlock"])(ec,{key:1,width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"])):"polygon"===Object(n["unref"])(c).type?(Object(n["openBlock"])(),Object(n["createBlock"])(oc,{key:2,width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline,createPath:Object(n["unref"])(c).createPath},null,8,["width","height","outline","createPath"])):Object(n["createCommentVNode"])("",!0)]))}});const ic=rc;var sc=ic;const dc=e=>(Object(n["pushScopeId"])("data-v-3e0199ec"),e=e(),Object(n["popScopeId"])(),e),uc=["src"],bc=["src"],Oc=["onMousedown"],mc=dc(()=>Object(n["createElementVNode"])("svg",{width:"16",height:"16",fill:"#fff",stroke:"#333"},[Object(n["createElementVNode"])("path",{"stroke-width":"0.3","shape-rendering":"crispEdges",d:"M 16 0 L 0 0 L 0 16 L 4 16 L 4 4 L 16 4 L 16 0 Z"})],-1)),pc=[mc],fc=["onMousedown"],jc=dc(()=>Object(n["createElementVNode"])("svg",{width:"16",height:"16",fill:"#fff",stroke:"#333"},[Object(n["createElementVNode"])("path",{"stroke-width":"0.3","shape-rendering":"crispEdges",d:"M 16 0 L 0 0 L 0 4 L 16 4 Z"})],-1)),vc=[jc];var hc=Object(n["defineComponent"])({__name:"ImageClipHandler",props:{src:{type:String,required:!0},clipData:{type:Object},clipPath:{type:String,required:!0},width:{type:Number,required:!0},height:{type:Number,required:!0},top:{type:Number,required:!0},left:{type:Number,required:!0},rotate:{type:Number,required:!0}},emits:["clip"],setup(e,{emit:t}){const l=e,{canvasScale:c}=Object(o["c"])(z()),{ctrlOrShiftKeyActive:a}=Object(o["c"])(G()),r=Object(n["ref"])({top:"0",left:"0"}),i=Object(n["ref"])(!1),s=Object(n["ref"])(null),d=()=>{const[e,t]=l.clipData?l.clipData.range:[[0,0],[100,100]],c=(t[0]-e[0])/100,n=(t[1]-e[1])/100,o=e[0]/c,a=e[1]/n;return{widthScale:c,heightScale:n,left:o,top:a}},u=Object(n["computed"])(()=>{const{widthScale:e,heightScale:t,left:l,top:c}=d();return{left:-l,top:-c,width:100/e,height:100/t}}),b=Object(n["computed"])(()=>({top:u.value.top+"%",left:u.value.left+"%",width:u.value.width+"%",height:u.value.height+"%"})),O=Object(n["ref"])({top:0,left:0,width:0,height:0}),m=Object(n["computed"])(()=>{const{top:e,left:t,width:l,height:c}=O.value;return{top:e+"%",left:t+"%",width:l+"%",height:c+"%"}}),p=Object(n["computed"])(()=>{const e=u.value.width,t=u.value.height,{top:l,left:c,width:n,height:o}=O.value;return{left:100/n*-c+"%",top:100/o*-l+"%",width:e/n*100+"%",height:t/o*100+"%"}}),f=()=>{const{left:e,top:t}=d();O.value={left:e,top:t,width:100,height:100},r.value={top:-t+"%",left:-e+"%"}},j=()=>{if(i.value)return;if(!s.value)return void t("clip",null);const{left:e,top:c}=d(),n={left:(O.value.left-e)/100*l.width,top:(O.value.top-c)/100*l.height,width:(O.value.width-100)/100*l.width,height:(O.value.height-100)/100*l.height},o={range:s.value,position:n};t("clip",o)},v=e=>{const t=e.key.toUpperCase();t===te.ENTER&&j()};Object(n["onMounted"])(()=>{f(),document.addEventListener("keydown",v)}),Object(n["onUnmounted"])(()=>{document.removeEventListener("keydown",v)});const h=()=>{const e={left:parseInt(p.value.left),top:parseInt(p.value.top),width:parseInt(p.value.width),height:parseInt(p.value.height)},t=100/e.width,l=100/e.height,c=[-e.left*t,-e.top*l],n=[100*t+c[0],100*l+c[1]];s.value=[c,n]},y=e=>{i.value=!0;let t=!0;const n=e.pageX,o=e.pageY,a=u.value,r={...O.value};document.onmousemove=e=>{if(!t)return;const i=e.pageX,s=e.pageY;let d=(i-n)/c.value/l.width*100,u=(s-o)/c.value/l.height*100;l.rotate>45&&l.rotate<135&&(d=(s-o)/c.value/l.width*100,u=-(i-n)/c.value/l.height*100),(l.rotate>=135&&l.rotate<=180||l.rotate>=-180&&l.rotate<=-135)&&(d=-d,u=-u),l.rotate>-135&&l.rotate<-45&&(d=-(s-o)/c.value/l.width*100,u=(i-n)/c.value/l.height*100);let b=r.left+d,m=r.top+u;b<0?b=0:b+r.width>a.width&&(b=a.width-r.width),m<0?m=0:m+r.height>a.height&&(m=a.height-r.height),O.value={...O.value,left:b,top:m}},document.onmouseup=()=>{t=!1,document.onmousemove=null,document.onmouseup=null,h(),setTimeout(()=>{i.value=!1},0)}},g=(e,t)=>{i.value=!0;let n=!0;const o=50/l.width*100,r=50/l.height*100,s=e.pageX,d=e.pageY,b=u.value,m={...O.value},p=O.value.width/O.value.height;document.onmousemove=e=>{if(!n)return;const i=e.pageX,u=e.pageY;let f,j,v,h,y=(i-s)/c.value/l.width*100,g=(u-d)/c.value/l.height*100;l.rotate>45&&l.rotate<135&&(y=(u-d)/c.value/l.width*100,g=-(i-s)/c.value/l.height*100),(l.rotate>=135&&l.rotate<=180||l.rotate>=-180&&l.rotate<=-135)&&(y=-y,g=-g),l.rotate>-135&&l.rotate<-45&&(y=-(u-d)/c.value/l.width*100,g=(i-s)/c.value/l.height*100),a.value&&(t!==Q.RIGHT_BOTTOM&&t!==Q.LEFT_TOP||(g=y/p),t!==Q.LEFT_BOTTOM&&t!==Q.RIGHT_TOP||(g=-y/p)),t===Q.LEFT_TOP?(m.left+y<0&&(y=-m.left),m.top+g<0&&(g=-m.top),m.width-yb.width&&(y=b.width-(m.left+m.width)),m.top+g<0&&(g=-m.top),m.width+yb.height&&(g=b.height-(m.top+m.height)),m.width-yb.width&&(y=b.width-(m.left+m.width)),m.top+m.height+g>b.height&&(g=b.height-(m.top+m.height)),m.width+yb.height&&(g=b.height-(m.top+m.height)),m.height+gb.width&&(y=b.width-(m.left+m.width)),m.width+y{n=!1,document.onmousemove=null,document.onmouseup=null,h(),setTimeout(()=>i.value=!1,0)}},x=Object(n["computed"])(()=>{const e="rotate-",t=l.rotate;return t>-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}),k=[Q.LEFT_TOP,Q.RIGHT_TOP,Q.LEFT_BOTTOM,Q.RIGHT_BOTTOM],C=[Q.TOP,Q.BOTTOM,Q.LEFT,Q.RIGHT];return(t,l)=>{const c=Object(n["resolveDirective"])("click-outside");return Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"image-clip-handler",style:Object(n["normalizeStyle"])(r.value)},[Object(n["createElementVNode"])("img",{class:"bottom-img",src:e.src,draggable:!1,alt:"",style:Object(n["normalizeStyle"])(Object(n["unref"])(b))},null,12,uc),Object(n["createElementVNode"])("div",{class:"top-image-content",style:Object(n["normalizeStyle"])({...Object(n["unref"])(m),clipPath:e.clipPath})},[Object(n["createElementVNode"])("img",{class:"top-img",src:e.src,draggable:!1,alt:"",style:Object(n["normalizeStyle"])(Object(n["unref"])(p))},null,12,bc)],4),Object(n["createElementVNode"])("div",{class:"operate",style:Object(n["normalizeStyle"])(Object(n["unref"])(m)),onMousedown:l[0]||(l[0]=Object(n["withModifiers"])(e=>y(e),["stop"]))},[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(k,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["clip-point",e,Object(n["unref"])(x)]),key:e,onMousedown:Object(n["withModifiers"])(t=>g(t,e),["stop"])},pc,42,Oc)),64)),(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(C,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["clip-point",e,Object(n["unref"])(x)]),key:e,onMousedown:Object(n["withModifiers"])(t=>g(t,e),["stop"])},vc,42,fc)),64))],36)],4)),[[c,j]])}}});l("5970");const yc=Yt()(hc,[["__scopeId","data-v-3e0199ec"]]);var gc=yc;const xc=["src"];var kc=Object(n["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup(e){const t=e,l=z(),c=T(),{clipingImageElementId:a}=Object(o["c"])(l),r=Object(n["computed"])(()=>a.value===t.elementInfo.id),{addHistorySnapshot:i}=Te(),s=Object(n["computed"])(()=>t.elementInfo.shadow),{shadowStyle:d}=Al(s),u=Object(n["computed"])(()=>t.elementInfo.flipH),b=Object(n["computed"])(()=>t.elementInfo.flipV),{flipStyle:O}=$l(u,b),m=Object(n["computed"])(()=>t.elementInfo.clip),{clipShape:p,imgPosition:f}=Pl(m),j=Object(n["computed"])(()=>t.elementInfo.filters),{filter:v}=Hl(j),h=e=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},y=e=>{if(l.setClipingImageElementId(""),!e)return;const{range:n,position:o}=e,a=t.elementInfo.clip||{shape:"rect",range:[[0,0],[100,100]]},r=t.elementInfo.left+o.left,s=t.elementInfo.top+o.top,d=t.elementInfo.width+o.width,u=t.elementInfo.height+o.height;let b=0,O=0;if(t.elementInfo.rotate){const e=r+d/2-(t.elementInfo.left+t.elementInfo.width/2),l=-(s+u/2-(t.elementInfo.top+t.elementInfo.height/2)),c=-t.elementInfo.rotate*Math.PI/180,n=e*Math.cos(c)-l*Math.sin(c),o=e*Math.sin(c)+l*Math.cos(c);b=n-e,O=-(o-l)}const m={clip:{...a,range:n},left:r+b,top:s+O,width:d,height:u};c.updateElement({id:t.elementInfo.id,props:m}),i()};return(t,l)=>{const c=Object(n["resolveDirective"])("contextmenu");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["editable-element-image",{lock:e.elementInfo.lock}]),style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["unref"])(r)?(Object(n["openBlock"])(),Object(n["createBlock"])(gc,{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(n["unref"])(p).style,onClip:l[0]||(l[0]=e=>y(e))},null,8,["src","clipData","width","height","top","left","rotate","clipPath"])):Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:1,class:"element-content",style:Object(n["normalizeStyle"])({filter:Object(n["unref"])(d)?`drop-shadow(${Object(n["unref"])(d)})`:"",transform:Object(n["unref"])(O)}),onMousedown:l[2]||(l[2]=e=>h(e)),onTouchstart:l[3]||(l[3]=e=>h(e))},[Object(n["createVNode"])(sc,{elementInfo:e.elementInfo},null,8,["elementInfo"]),Object(n["createElementVNode"])("div",{class:"image-content",style:Object(n["normalizeStyle"])({clipPath:Object(n["unref"])(p).style})},[Object(n["createElementVNode"])("img",{src:e.elementInfo.src,draggable:!1,style:Object(n["normalizeStyle"])({top:Object(n["unref"])(f).top,left:Object(n["unref"])(f).left,width:Object(n["unref"])(f).width,height:Object(n["unref"])(f).height,filter:Object(n["unref"])(v)}),onDragstart:l[1]||(l[1]=Object(n["withModifiers"])(()=>{},["prevent"])),alt:""},null,44,xc),e.elementInfo.colorMask?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:"color-mask",style:Object(n["normalizeStyle"])({backgroundColor:e.elementInfo.colorMask.color,opacity:e.elementInfo.colorMask.opacity})},null,4)):Object(n["createCommentVNode"])("",!0)],4)],36)),[[c,e.contextmenus]])],4)],6)}}});l("bcf0");const Cc=Yt()(kc,[["__scopeId","data-v-963e3dfc"]]);var Nc=Cc;const Ec=["width","height"],wc=["d","stroke","stroke-width","stroke-dasharray"];var Vc=Object(n["defineComponent"])({__name:"ElementOutline",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},outline:{type:Object}},setup(e){const t=e,{outlineWidth:l,outlineStyle:c,outlineColor:o}=ql(Object(n["toRef"])(t,"outline"));return(t,a)=>e.outline?(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",{key:0,class:"element-outline",overflow:"visible",width:e.width,height:e.height},[Object(n["createElementVNode"])("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:"transparent",d:`M0,0 L${e.width},0 L${e.width},${e.height} L0,${e.height} Z`,stroke:Object(n["unref"])(o),"stroke-width":Object(n["unref"])(l),"stroke-dasharray":"dashed"===Object(n["unref"])(c)?"10 6":"0 0"},null,8,wc)],8,Ec)):Object(n["createCommentVNode"])("",!0)}});l("4731");const Ic=Yt()(Vc,[["__scopeId","data-v-61b7d06a"]]);var Sc=Ic,Lc=l("6ffb"),Bc=l("703f"),_c=l("6f27"),Tc=l("e3da"),Mc=l("f201"),Dc=l("a59f"),zc=l("224d"),Fc=l("838c"),Ac=l("72a8");const $c=e=>{const t={},l=(e,l)=>t[e]=l;return l("Alt-ArrowUp",s["c"]),l("Alt-ArrowDown",s["b"]),l("Ctrl-z",Mc["c"]),l("Ctrl-y",Mc["b"]),l("Backspace",Ac["f"]),l("Escape",s["e"]),l("Ctrl-b",Object(s["f"])(e.marks.strong)),l("Ctrl-i",Object(s["f"])(e.marks.em)),l("Ctrl-u",Object(s["f"])(e.marks.underline)),l("Ctrl-d",Object(s["f"])(e.marks.strikethrough)),l("Enter",Object(Fc["d"])(e.nodes.list_item)),l("Mod-[",Object(Fc["a"])(e.nodes.list_item)),l("Mod-]",Object(Fc["c"])(e.nodes.list_item)),t},Rc=e=>Object(Ac["g"])(/^\s*>\s$/,e),Pc=e=>Object(Ac["g"])(/^(\d+)\.\s$/,e,e=>({order:+e[1]}),(e,t)=>t.childCount+t.attrs.order===+e[1]),Hc=e=>Object(Ac["g"])(/^\s*([-+*])\s$/,e),qc=e=>Object(Ac["e"])(/^```$/,e),Uc=e=>{const t=[...Ac["d"],Ac["a"],Ac["b"]];return t.push(Rc(e.nodes.blockquote)),t.push(Pc(e.nodes.ordered_list)),t.push(Hc(e.nodes.bullet_list)),t.push(qc(e.nodes.code_block)),Object(Ac["c"])({rules:t})},Gc=e=>[Uc(e),Object(Tc["b"])($c(e)),Object(Tc["b"])(s["a"]),Object(Dc["a"])(),Object(zc["a"])(),Object(Mc["a"])()];var Xc=l("f899");const Yc={attrs:{order:{default:1},listStyleType:{default:""}},content:"list_item+",group:"block",parseDOM:[{tag:"ol",getAttrs:e=>{const t=(e.hasAttribute("start")?e.getAttribute("start"):1)||1,l={order:+t},{listStyleType:c}=e.style;return c&&(l["listStyleType"]=c),l}}],toDOM:e=>{const{order:t,listStyleType:l}=e.attrs;let c="";l&&(c+=`list-style-type: ${l};`);const n={style:c};return 1!==t&&(n["start"]=t),["ol",n,0]}},Zc={attrs:{listStyleType:{default:""}},content:"list_item+",group:"block",parseDOM:[{tag:"ul",getAttrs:e=>{const{listStyleType:t}=e.style;return t?{listStyleType:t}:{}}}],toDOM:e=>{const{listStyleType:t}=e.attrs;let l="";return t&&(l+=`list-style-type: ${t};`),["ul",{style:l},0]}},Wc={...Fc["b"],content:"paragraph block*",group:"block"},Jc={attrs:{align:{default:""},indent:{default:0}},content:"inline*",group:"block",parseDOM:[{tag:"p",getAttrs:e=>{const{textAlign:t}=e.style;let l=e.getAttribute("align")||t||"";l=/(left|right|center|justify)/.test(l)?l:"";const c=+(e.getAttribute("data-indent")||0);return{align:l,indent:c}}}],toDOM:e=>{const{align:t,indent:l}=e.attrs;let c="";t&&"left"!==t&&(c+=`text-align: ${t};`);const n={style:c};return l&&(n["data-indent"]=l),["p",n,0]}},{hard_break:Kc,...Qc}=Xc["b"];var en={...Qc,ordered_list:Yc,bullet_list:Zc,list_item:Wc,paragraph:Jc};const tn={excludes:"subscript",parseDOM:[{tag:"sub"},{style:"vertical-align",getAttrs:e=>"sub"===e&&null}],toDOM:()=>["sub",0]},ln={excludes:"superscript",parseDOM:[{tag:"sup"},{style:"vertical-align",getAttrs:e=>"super"===e&&null}],toDOM:()=>["sup",0]},cn={parseDOM:[{tag:"strike"},{style:"text-decoration",getAttrs:e=>"line-through"===e&&null},{style:"text-decoration-line",getAttrs:e=>"line-through"===e&&null}],toDOM:()=>["span",{style:"text-decoration-line: line-through"},0]},nn={parseDOM:[{tag:"u"},{style:"text-decoration",getAttrs:e=>"underline"===e&&null},{style:"text-decoration-line",getAttrs:e=>"underline"===e&&null}],toDOM:()=>["span",{style:"text-decoration: underline"},0]},on={attrs:{color:{}},inline:!0,group:"inline",parseDOM:[{style:"color",getAttrs:e=>e?{color:e}:{}}],toDOM:e=>{const{color:t}=e.attrs;let l="";return t&&(l+=`color: ${t};`),["span",{style:l},0]}},an={attrs:{backcolor:{}},inline:!0,group:"inline",parseDOM:[{style:"background-color",getAttrs:e=>e?{backcolor:e}:{}}],toDOM:e=>{const{backcolor:t}=e.attrs;let l="";return t&&(l+=`background-color: ${t};`),["span",{style:l},0]}},rn={attrs:{fontsize:{}},inline:!0,group:"inline",parseDOM:[{style:"font-size",getAttrs:e=>e?{fontsize:e}:{}}],toDOM:e=>{const{fontsize:t}=e.attrs;let l="";return t&&(l+="font-size: "+t),["span",{style:l},0]}},sn={attrs:{fontname:{}},inline:!0,group:"inline",parseDOM:[{style:"font-family",getAttrs:e=>({fontname:e&&"string"===typeof e?e.replace(/[\"\']/g,""):""})}],toDOM:e=>{const{fontname:t}=e.attrs;let l="";return t&&(l+="font-family: "+t),["span",{style:l},0]}},dn={attrs:{href:{},title:{default:null},target:{default:"_blank"}},inclusive:!1,parseDOM:[{tag:"a[href]",getAttrs:e=>{const t=e.getAttribute("href"),l=e.getAttribute("title");return{href:t,title:l}}}],toDOM:e=>["a",e.attrs,0]};var un={...Xc["a"],fontsize:rn,fontname:sn,forecolor:on,backcolor:an,subscript:tn,superscript:ln,strikethrough:cn,underline:nn,link:dn};const bn=en,On=un,mn=new _c["i"]({nodes:bn,marks:On}),pn=e=>{const t=`
${e}
`,l=new window.DOMParser,c=l.parseFromString(t,"text/html").body.firstElementChild;return _c["a"].fromSchema(mn).parse(c)},fn=(e,t,l={})=>new Bc["c"](e,{state:Lc["b"].create({doc:pn(t),plugins:Gc(mn)}),...l});var jn,vn=l("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"})(jn||(jn={}));const hn=Object(vn["a"])();var yn=hn;const gn=(e,t,l)=>{const{selection:c,doc:n}=e;if(!c||!n)return e;const{from:o,to:a}=c,{nodes:r}=t,i=r.blockquote,s=r.list_item,d=r.paragraph,u=[];l=l||"";const b=new Set([i,s,d]);return n.nodesBetween(o,a,(e,t)=>{const c=e.type,n=e.attrs.align||"";return n!==l&&b.has(c)&&u.push({node:e,pos:t,nodeType:c}),!0}),u.length?(u.forEach(t=>{const{node:c,pos:n,nodeType:o}=t;let{attrs:a}=c;a=l?{...a,align:l}:{...a,align:null},e=e.setNodeMarkup(n,o,a,c.marks)}),e):e},xn=(e,t)=>{const{state:l}=e,{schema:c,selection:n}=l,o=gn(l.tr.setSelection(n),c,t);e.dispatch(o)},kn=(e,t)=>e.type===t.nodes.bullet_list||e.type===t.nodes.ordered_list,Cn=(e,t,l)=>(c,n)=>{const{schema:o,selection:a}=c,{$from:r,$to:i}=a,s=r.blockRange(i);if(!s)return!1;const d=p(e=>kn(e,o))(a);if(s.depth>=1&&d&&s.depth-d.depth<=1){if(d.node.type===e&&!l)return Object(Fc["a"])(t)(c,n);if(kn(d.node,o)&&e.validContent(d.node.content)){const{tr:t}=c;if(l){const c={...d.node.attrs,listStyleType:l};t.setNodeMarkup(d.pos,e,c)}else t.setNodeMarkup(d.pos,e);return n&&n(t),!1}}return l?Object(Fc["e"])(e,{listStyleType:l})(c,n):Object(Fc["e"])(e)(c,n)};function Nn(e,t,l){if(!e.doc)return e;const c=e.doc.nodeAt(t);if(!c)return e;const n=0,o=7;let a=(c.attrs.indent||0)+l;if(ao&&(a=o),a===c.attrs.indent)return e;const r={...c.attrs,indent:a};return e.setNodeMarkup(t,c.type,r,c.marks)}const En=(e,t,l)=>{const{selection:c,doc:n}=e;if(!c||!n)return e;if(!(c instanceof Lc["g"]||c instanceof Lc["a"]))return e;const{from:o,to:a}=c;return n.nodesBetween(o,a,(c,n)=>{const o=c.type;return"paragraph"===o.name||"blockquote"===o.name?(e=Nn(e,n,l),!1):!kn(c,t)}),e},wn=(e,t)=>{const{state:l}=e,{schema:c,selection:n}=l,o=En(l.tr.setSelection(n),c,t);return!!o.docChanged&&(e.dispatch(o),!0)};var Vn=Object(n["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","mousedown"],setup(e,{expose:t,emit:l}){const c=e,a=z(),{handleElementId:r,textFormatPainter:i}=Object(o["c"])(a),O=Object(n["ref"])();let m;const p=Object(S["debounce"])((function(){l("update",m.dom.innerHTML)}),300,{trailing:!0}),f=()=>{a.setDisableHotkeysState(!0),l("focus")},j=()=>{a.setDisableHotkeysState(!1),l("blur")},v=Object(S["debounce"])((function(){const e=C(m,{color:c.defaultColor,fontname:c.defaultFontName});a.setRichtextAttrs(e)}),30,{trailing:!0}),h=()=>{p(),v()},y=Object(n["computed"])(()=>c.value);Object(n["watch"])(y,()=>{if(!m)return;if(m.hasFocus())return;const{doc:e,tr:t}=m.state;m.dispatch(t.replaceRangeWith(0,e.content.size,pn(y.value)))}),Object(n["watch"])(()=>c.editable,()=>{m.setProps({editable:()=>c.editable})});const x=()=>m.focus();t({focus:x});const k=({target:e,action:t})=>{if(!e&&r.value!==c.elementId)return;if(e&&e!==c.elementId)return;const l="command"in t?[t]:t;for(const c of l)if("fontname"===c.command&&c.value){const e=m.state.schema.marks.fontname.create({fontname:c.value});d(m),u(m,e)}else if("fontsize"===c.command&&c.value){const e=m.state.schema.marks.fontsize.create({fontsize:c.value});d(m),u(m,e)}else if("fontsize-add"===c.command){const e=c.value?+c.value:2;d(m);const t=N(m)+e+"px",l=m.state.schema.marks.fontsize.create({fontsize:t});u(m,l)}else if("fontsize-reduce"===c.command){const e=c.value?+c.value:2;d(m);let t=N(m)-e;t<12&&(t=12);const l=m.state.schema.marks.fontsize.create({fontsize:t+"px"});u(m,l)}else if("color"===c.command&&c.value){const e=m.state.schema.marks.forecolor.create({color:c.value});d(m),u(m,e)}else if("backcolor"===c.command&&c.value){const e=m.state.schema.marks.backcolor.create({backcolor:c.value});d(m),u(m,e)}else if("bold"===c.command)d(m),Object(s["f"])(m.state.schema.marks.strong)(m.state,m.dispatch);else if("em"===c.command)d(m),Object(s["f"])(m.state.schema.marks.em)(m.state,m.dispatch);else if("underline"===c.command)d(m),Object(s["f"])(m.state.schema.marks.underline)(m.state,m.dispatch);else if("strikethrough"===c.command)d(m),Object(s["f"])(m.state.schema.marks.strikethrough)(m.state,m.dispatch);else if("subscript"===c.command)Object(s["f"])(m.state.schema.marks.subscript)(m.state,m.dispatch);else if("superscript"===c.command)Object(s["f"])(m.state.schema.marks.superscript)(m.state,m.dispatch);else if("blockquote"===c.command)Object(s["g"])(m.state.schema.nodes.blockquote)(m.state,m.dispatch);else if("code"===c.command)Object(s["f"])(m.state.schema.marks.code)(m.state,m.dispatch);else if("align"===c.command&&c.value)xn(m,c.value);else if("indent"===c.command&&c.value)wn(m,+c.value);else if("bulletList"===c.command){const e=c.value||"",{bullet_list:t,list_item:l}=m.state.schema.nodes;Cn(t,l,e)(m.state,m.dispatch)}else if("orderedList"===c.command){const e=c.value||"",{ordered_list:t,list_item:l}=m.state.schema.nodes;Cn(t,l,e)(m.state,m.dispatch)}else if("clear"===c.command){d(m);const{$from:e,$to:t}=m.state.selection;m.dispatch(m.state.tr.removeMark(e.pos,t.pos))}else if("link"===c.command){const e=m.state.schema.marks.link,{from:t,to:l}=m.state.selection,n=b(m.state.doc,t,l,e);if(n)if(c.value){const e=m.state.schema.marks.link.create({href:c.value,title:c.value});u(m,e,{from:n.from.pos,to:n.to.pos+1})}else m.dispatch(m.state.tr.removeMark(n.from.pos,n.to.pos+1,e));else if(g(m.state,e))if(c.value){const e=m.state.schema.marks.link.create({href:c.value,title:c.value});u(m,e)}else Object(s["f"])(e)(m.state,m.dispatch);else c.value&&(d(m),Object(s["f"])(e,{href:c.value,title:c.value})(m.state,m.dispatch))}else"insert"===c.command&&c.value&&m.dispatch(m.state.tr.insertText(c.value));m.focus(),p(),v()},E=()=>{if(!i.value)return;const e=[{command:"clear"}];for(const t of Object.keys(i.value)){const l=t,c=i.value[t];c&&e.push({command:l,value:c})}k({action:e}),a.setTextFormatPainter(null)};return Object(n["onMounted"])(()=>{m=fn(O.value,y.value,{handleDOMEvents:{focus:f,blur:j,keydown:h,click:v,mouseup:E},editable:()=>c.editable}),c.autoFocus&&m.focus()}),Object(n["onUnmounted"])(()=>{m&&m.destroy()}),yn.on(jn.RICH_TEXT_COMMAND,k),Object(n["onUnmounted"])(()=>{yn.off(jn.RICH_TEXT_COMMAND,k)}),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["prosemirror-editor",{"format-painter":Object(n["unref"])(i)}]),ref_key:"editorViewRef",ref:O,onMousedown:t[0]||(t[0]=e=>l("mousedown",e))},null,34))}});l("36e5");const In=Yt()(Vn,[["__scopeId","data-v-76d3203e"]]);var Sn=In;const Ln=e=>(Object(n["pushScopeId"])("data-v-9be58c0a"),e=e(),Object(n["popScopeId"])(),e),Bn=Ln(()=>Object(n["createElementVNode"])("div",{class:"drag-handler top"},null,-1)),_n=Ln(()=>Object(n["createElementVNode"])("div",{class:"drag-handler bottom"},null,-1));var Tn=Object(n["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup(e){const t=e,l=z(),c=T(),{handleElementId:a,isScaling:r}=Object(o["c"])(l),{addHistorySnapshot:i}=Te(),s=Object(n["ref"])(),d=Object(n["computed"])(()=>t.elementInfo.shadow),{shadowStyle:u}=Al(d),b=(e,l=!0)=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo,l))},O=Object(n["ref"])(-1),m=Object(n["ref"])(-1);Object(n["watch"])(r,()=>{a.value===t.elementInfo.id&&(r.value||(t.elementInfo.vertical||-1===O.value||(c.updateElement({id:t.elementInfo.id,props:{height:O.value}}),O.value=-1),t.elementInfo.vertical&&-1!==m.value&&(c.updateElement({id:t.elementInfo.id,props:{width:m.value}}),m.value=-1)))});const p=e=>{const l=e[0].contentRect;if(!s.value)return;const n=l.height+20,o=l.width+20;t.elementInfo.vertical||t.elementInfo.height===n||(r.value?O.value=n:c.updateElement({id:t.elementInfo.id,props:{height:n}})),t.elementInfo.vertical&&t.elementInfo.width!==o&&(r.value?m.value=o:c.updateElement({id:t.elementInfo.id,props:{width:o}}))},f=new ResizeObserver(p);Object(n["onMounted"])(()=>{s.value&&f.observe(s.value)}),Object(n["onUnmounted"])(()=>{s.value&&f.unobserve(s.value)});const j=e=>{c.updateElement({id:t.elementInfo.id,props:{content:e}}),i()},v=()=>{const e=t.elementInfo.content.replaceAll(/<[^>]+>/g,"");e||c.deleteElement(t.elementInfo.id)},h=Object(n["computed"])(()=>a.value===t.elementInfo.id);return Object(n["watch"])(h,()=>{h.value||v()}),(t,l)=>{const c=Object(n["resolveDirective"])("contextmenu");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["editable-element-text",{lock:e.elementInfo.lock}]),style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"element-content",ref_key:"elementRef",ref:s,style:Object(n["normalizeStyle"])({width:e.elementInfo.vertical?"auto":e.elementInfo.width+"px",height:e.elementInfo.vertical?e.elementInfo.height+"px":"auto",backgroundColor:e.elementInfo.fill,opacity:e.elementInfo.opacity,textShadow:Object(n["unref"])(u),lineHeight:e.elementInfo.lineHeight,letterSpacing:(e.elementInfo.wordSpace||0)+"px",color:e.elementInfo.defaultColor,fontFamily:e.elementInfo.defaultFontName,writingMode:e.elementInfo.vertical?"vertical-rl":"horizontal-tb"}),onMousedown:l[2]||(l[2]=e=>b(e)),onTouchstart:l[3]||(l[3]=e=>b(e))},[Object(n["createVNode"])(Sc,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(n["createVNode"])(Sn,{class:"text",elementId:e.elementInfo.id,defaultColor:e.elementInfo.defaultColor,defaultFontName:e.elementInfo.defaultFontName,editable:!e.elementInfo.lock,value:e.elementInfo.content,style:Object(n["normalizeStyle"])({"--textIndent":(e.elementInfo.textIndent||0)+"px","--paragraphSpace":(void 0===e.elementInfo.paragraphSpace?5:e.elementInfo.paragraphSpace)+"px"}),onUpdate:l[0]||(l[0]=e=>j(e)),onMousedown:l[1]||(l[1]=e=>b(e,!1))},null,8,["elementId","defaultColor","defaultFontName","editable","value","style"]),Bn,_n],36)),[[c,e.contextmenus]])],4)],6)}}});l("bad1");const Mn=Yt()(Tn,[["__scopeId","data-v-9be58c0a"]]);var Dn=Mn;const zn=["id","gradientTransform"],Fn=["stop-color"],An=["stop-color"],$n=["id"],Rn=["stop-color"],Pn=["stop-color"];var Hn=Object(n["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(e){return(t,l)=>"linear"===e.type?(Object(n["openBlock"])(),Object(n["createElementBlock"])("linearGradient",{key:0,id:e.id,x1:"0%",y1:"0%",x2:"100%",y2:"0%",gradientTransform:`rotate(${e.rotate},0.5,0.5)`},[Object(n["createElementVNode"])("stop",{offset:"0%","stop-color":e.color1},null,8,Fn),Object(n["createElementVNode"])("stop",{offset:"100%","stop-color":e.color2},null,8,An)],8,zn)):(Object(n["openBlock"])(),Object(n["createElementBlock"])("radialGradient",{key:1,id:e.id},[Object(n["createElementVNode"])("stop",{offset:"0%","stop-color":e.color1},null,8,Rn),Object(n["createElementVNode"])("stop",{offset:"100%","stop-color":e.color2},null,8,Pn)],8,$n))}});const qn=Hn;var Un=qn;const Gn=["width","height"],Xn={key:0},Yn=["transform"],Zn=["d","fill","stroke","stroke-width","stroke-dasharray"];var Wn=Object(n["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup(e){const t=e,l=z(),c=T(),{handleElementId:a}=Object(o["c"])(l),{addHistorySnapshot:r}=Te(),i=(e,l=!0)=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo,l))},s=Object(n["computed"])(()=>t.elementInfo.outline),{outlineWidth:d,outlineStyle:u,outlineColor:b}=ql(s),O=Object(n["computed"])(()=>t.elementInfo.shadow),{shadowStyle:m}=Al(O),p=Object(n["computed"])(()=>t.elementInfo.flipH),f=Object(n["computed"])(()=>t.elementInfo.flipV),{flipStyle:j}=$l(p,f),v=Object(n["ref"])(!1);Object(n["watch"])(a,()=>{a.value!==t.elementInfo.id&&v.value&&(v.value=!1)});const h=Object(n["computed"])(()=>{const e={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"};return t.elementInfo.text?t.elementInfo.text:e}),y=e=>{const l={...h.value,content:e};c.updateElement({id:t.elementInfo.id,props:{text:l}}),r()},g=()=>{if(!t.elementInfo.text)return;const e=t.elementInfo.text.content.replaceAll(/<[^>]+>/g,"");e||(c.removeElementProps({id:t.elementInfo.id,propName:"text"}),r())},x=Object(n["ref"])(),k=()=>{v.value=!0,Object(n["nextTick"])(()=>x.value&&x.value.focus())};return(t,l)=>{const c=Object(n["resolveDirective"])("contextmenu");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["editable-element-shape",{lock:e.elementInfo.lock}]),style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"element-content",style:Object(n["normalizeStyle"])({opacity:e.elementInfo.opacity,filter:Object(n["unref"])(m)?`drop-shadow(${Object(n["unref"])(m)})`:"",transform:Object(n["unref"])(j),color:Object(n["unref"])(h).defaultColor,fontFamily:Object(n["unref"])(h).defaultFontName}),onMousedown:l[3]||(l[3]=e=>i(e)),onTouchstart:l[4]||(l[4]=e=>i(e)),onDblclick:l[5]||(l[5]=e=>k())},[(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height},[e.elementInfo.gradient?(Object(n["openBlock"])(),Object(n["createElementBlock"])("defs",Xn,[Object(n["createVNode"])(Un,{id:"editabel-gradient-"+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(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("g",{transform:`scale(${e.elementInfo.width/e.elementInfo.viewBox[0]}, ${e.elementInfo.height/e.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`},[Object(n["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-${e.elementInfo.id})`:e.elementInfo.fill,stroke:Object(n["unref"])(b),"stroke-width":Object(n["unref"])(d),"stroke-dasharray":"dashed"===Object(n["unref"])(u)?"10 6":"0 0"},null,8,Zn)],8,Yn)],8,Gn)),Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["shape-text",[Object(n["unref"])(h).align,{editable:v.value||Object(n["unref"])(h).content}]])},[v.value||Object(n["unref"])(h).content?(Object(n["openBlock"])(),Object(n["createBlock"])(Sn,{key:0,ref_key:"prosemirrorEditorRef",ref:x,elementId:e.elementInfo.id,defaultColor:Object(n["unref"])(h).defaultColor,defaultFontName:Object(n["unref"])(h).defaultFontName,editable:!e.elementInfo.lock,value:Object(n["unref"])(h).content,onUpdate:l[0]||(l[0]=e=>y(e)),onBlur:l[1]||(l[1]=e=>g()),onMousedown:l[2]||(l[2]=e=>i(e,!1))},null,8,["elementId","defaultColor","defaultFontName","editable","value"])):Object(n["createCommentVNode"])("",!0)],2)],36)),[[c,e.contextmenus]])],4)],6)}}});l("afc8");const Jn=Yt()(Wn,[["__scopeId","data-v-486128e0"]]);var Kn=Jn;const Qn=["id","markerWidth","markerHeight","refX","refY"],eo=["d","fill","transform"];var to=Object(n["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(e){const t=e,l={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(n["computed"])(()=>l[t.type]),a=Object(n["computed"])(()=>c[`${t.type}-${t.position}`]||0),r=Object(n["computed"])(()=>t.baseSize<2?2:t.baseSize);return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("marker",{id:`${e.id}-${e.type}-${e.position}`,markerUnits:"userSpaceOnUse",orient:"auto",markerWidth:3*Object(n["unref"])(r),markerHeight:3*Object(n["unref"])(r),refX:1.5*Object(n["unref"])(r),refY:1.5*Object(n["unref"])(r)},[Object(n["createElementVNode"])("path",{d:Object(n["unref"])(o),fill:e.color,transform:`scale(${.3*Object(n["unref"])(r)}, ${.3*Object(n["unref"])(r)}) rotate(${Object(n["unref"])(a)}, 5, 5)`},null,8,eo)],8,Qn))}});const lo=to;var co=lo;const no=["width","height"],oo=["d","stroke","stroke-width","stroke-dasharray","marker-start","marker-end"],ao=["d"];var ro=Object(n["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup(e){const t=e,l=e=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},c=Object(n["computed"])(()=>t.elementInfo.shadow),{shadowStyle:o}=Al(c),a=Object(n["computed"])(()=>{const e=Math.abs(t.elementInfo.start[0]-t.elementInfo.end[0]);return e<24?24:e}),r=Object(n["computed"])(()=>{const e=Math.abs(t.elementInfo.start[1]-t.elementInfo.end[1]);return e<24?24:e}),i=Object(n["computed"])(()=>"dashed"===t.elementInfo.style?"10 6":"0 0"),s=Object(n["computed"])(()=>Ce(t.elementInfo));return(t,c)=>{const d=Object(n["resolveDirective"])("contextmenu");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["editable-element-shape",{lock:e.elementInfo.lock}]),style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px"})},[Object(n["createElementVNode"])("div",{class:"element-content",style:Object(n["normalizeStyle"])({filter:Object(n["unref"])(o)?`drop-shadow(${Object(n["unref"])(o)})`:""}),onMousedown:c[0]||(c[0]=e=>l(e)),onTouchstart:c[1]||(c[1]=e=>l(e))},[(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",{overflow:"visible",width:Object(n["unref"])(a),height:Object(n["unref"])(r)},[Object(n["createElementVNode"])("defs",null,[e.elementInfo.points[0]?(Object(n["openBlock"])(),Object(n["createBlock"])(co,{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(n["createCommentVNode"])("",!0),e.elementInfo.points[1]?(Object(n["openBlock"])(),Object(n["createBlock"])(co,{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(n["createCommentVNode"])("",!0)]),Object(n["createElementVNode"])("path",{class:"line-point",d:Object(n["unref"])(s),stroke:e.elementInfo.color,"stroke-width":e.elementInfo.width,"stroke-dasharray":Object(n["unref"])(i),fill:"none","marker-start":e.elementInfo.points[0]?`url(#${e.elementInfo.id}-${e.elementInfo.points[0]}-start)`:"","marker-end":e.elementInfo.points[1]?`url(#${e.elementInfo.id}-${e.elementInfo.points[1]}-end)`:""},null,8,oo),Object(n["withDirectives"])(Object(n["createElementVNode"])("path",{class:"line-path",d:Object(n["unref"])(s),stroke:"transparent","stroke-width":"20",fill:"none"},null,8,ao),[[d,e.contextmenus]])],8,no))],36)],6)}}});l("bde5");const io=Yt()(ro,[["__scopeId","data-v-6550e504"]]);var so=io,uo=l("b239"),bo=(l("21d9"),Object(n["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(e){const t=e,l=Object(n["ref"])(),c=Object(n["inject"])(vl)||Object(n["ref"])(1);let o;const a=Object(n["computed"])(()=>t.legend?t.height-20:t.height),r=()=>({...t.data,series:t.data.series[0]}),i=()=>{const e=t.options||{};return{...e,width:t.width*c.value,height:a.value*c.value}},s=()=>{if(!l.value)return;const e=i();"bar"===t.type&&(o=new uo["a"](l.value,t.data,e)),"line"===t.type&&(o=new uo["b"](l.value,t.data,e)),"pie"===t.type&&(o=new uo["c"](l.value,r(),e))},d=()=>{if(!o)return void s();const e=i(),l="pie"===t.type?r():t.data;o.update(l,e)};Object(n["watch"])([()=>t.width,()=>t.height,()=>t.data,()=>t.options,c],d),Object(n["onMounted"])(s);const u=Object(n["computed"])(()=>{let e=[];if(t.themeColor.length>=10)e=t.themeColor;else if(1===t.themeColor.length)e=I()(t.themeColor[0]).analogous(10).map(e=>e.toHexString());else{const l=t.themeColor.length,c=I()(t.themeColor[l-1]).analogous(11-l).map(e=>e.toHexString());e=[...t.themeColor.slice(0,l-1),...c]}return e}),b=()=>{if(l.value)for(let e=0;e<10;e++)l.value.style.setProperty("--theme-color-"+(e+1),u.value[e])};Object(n["watch"])(u,b),Object(n["onMounted"])(b);const O=()=>{l.value&&t.gridColor&&l.value.style.setProperty("--grid-color",t.gridColor)};return Object(n["watch"])(()=>t.gridColor,O),Object(n["onMounted"])(O),(t,o)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"chart",style:Object(n["normalizeStyle"])({flexDirection:"top"===e.legend?"column-reverse":"column"})},[Object(n["createElementVNode"])("div",{class:"chart-content",ref_key:"chartRef",ref:l,style:Object(n["normalizeStyle"])({width:e.width+"px",height:Object(n["unref"])(a)+"px",transform:`scale(${1/Object(n["unref"])(c)})`})},null,4),e.legend?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:"legends",style:Object(n["normalizeStyle"])({transform:`scale(${1/Object(n["unref"])(c)})`})},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.legends,(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"legend",key:l,style:Object(n["normalizeStyle"])({color:e.gridColor})},[Object(n["createElementVNode"])("div",{class:"block",style:Object(n["normalizeStyle"])({backgroundColor:Object(n["unref"])(u)[l]})},null,4),Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(t),1)],4))),128))],4)):Object(n["createCommentVNode"])("",!0)],4))}}));l("6116"),l("68b8");const Oo=Yt()(bo,[["__scopeId","data-v-1f8d633e"]]);var mo=Oo,po=Object(n["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup(e){const t=e,l=e=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},c=()=>{yn.emit(jn.OPEN_CHART_DATA_EDITOR)};return(t,o)=>{const a=Object(n["resolveDirective"])("contextmenu");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["editable-element-chart",{lock:e.elementInfo.lock}]),style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"element-content",style:Object(n["normalizeStyle"])({backgroundColor:e.elementInfo.fill}),onMousedown:o[0]||(o[0]=e=>l(e)),onTouchstart:o[1]||(o[1]=e=>l(e)),onDblclick:o[2]||(o[2]=e=>c())},[Object(n["createVNode"])(Sc,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(n["createVNode"])(mo,{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)),[[a,e.contextmenus]])],4)],6)}}});l("8216");const fo=Yt()(po,[["__scopeId","data-v-f3c03862"]]);var jo=fo;const vo=e=>{if(!e)return{};const{bold:t,em:l,underline:c,strikethrough:n,color:o,backcolor:a,fontsize:r,fontname:i,align:s}=e;let d=`${c?"underline":""} ${n?"line-through":""}`;return" "===d&&(d="none"),{fontWeight:t?"bold":"normal",fontStyle:l?"italic":"normal",textDecoration:d,color:o||"#000",backgroundColor:a||"",fontSize:r||"14px",fontFamily:i||"微软雅黑",textAlign:s||"left"}},ho=e=>e.replace(/\n/g,"
").replace(/ /g," ");var yo=e=>{const t=Object(n["computed"])(()=>{const t=[];for(let l=0;l1||n.rowspan>1)for(let c=l;c{const t=Object(n["ref"])(["",""]);return Object(n["watch"])(()=>e.value,()=>{e.value&&(t.value=ke(e.value.color))},{immediate:!0}),{subThemeColor:t}};const xo=["innerHTML"];var ko=Object(n["defineComponent"])({__name:"CustomTextarea",props:{value:{type:String,default:""},contenteditable:{type:[Boolean,String],default:!1}},emits:["updateValue","insertExcelData"],setup(e,{emit:t}){const l=e,c=Object(n["ref"])(),o=Object(n["ref"])(""),a=Object(n["ref"])(!1);Object(n["watch"])(()=>l.value,()=>{a.value||(o.value=l.value,c.value&&(c.value.innerHTML=l.value))},{immediate:!0});const r=()=>{if(!c.value)return;const e=c.value.innerHTML;t("updateValue",e)},i=()=>{a.value=!0,c.value&&(c.value.onpaste=e=>{if(e.preventDefault(),!e.clipboardData)return;const l=e.clipboardData.items[0];l&&"string"===l.kind&&"text/plain"===l.type&&l.getAsString(e=>{const l=me(e);if("object"===typeof l)return;const n=pe(e);if(n)return t("insertExcelData",n),void(c.value&&(c.value.innerHTML=n[0][0]));t("updateValue",e),document.execCommand("insertText",!1,e)})})},s=()=>{a.value=!1,c.value&&(c.value.onpaste=null)};return Object(n["onUnmounted"])(()=>{c.value&&(c.value.onpaste=null)}),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"custom-textarea",ref_key:"textareaRef",ref:c,onFocus:i,onBlur:s,onInput:t[0]||(t[0]=e=>r()),innerHTML:o.value},null,40,xo))}});l("80dc");const Co=Yt()(ko,[["__scopeId","data-v-cdb58a1e"]]);var No=Co;const Eo={key:0,class:"handler"},wo=["onMousedown"],Vo=["width"],Io=["rowspan","colspan","data-cell-index","onMousedown","onMouseenter"],So=["innerHTML"];var Lo=Object(n["defineComponent"])({__name:"EditableTable",props:{data:{type:Array,required:!0},width:{type:Number,required:!0},cellMinHeight:{type:Number,required:!0},colWidths:{type:Array,required:!0},outline:{type:Object,required:!0},theme:{type:Object},editable:{type:Boolean,default:!0}},emits:["change","changeColWidths","changeSelectedCells"],setup(e,{emit:t}){const l=e,{canvasScale:c}=Object(o["c"])(z()),r=Object(n["ref"])(!1),i=Object(n["ref"])([]),s=Object(n["ref"])([]),d=Object(n["computed"])({get(){return l.data},set(e){t("change",e)}}),u=Object(n["computed"])(()=>l.theme),{subThemeColor:b}=go(u),O=Object(n["ref"])([]),m=Object(n["computed"])(()=>O.value.reduce((e,t)=>e+t));Object(n["watch"])([()=>l.colWidths,()=>l.width],()=>{O.value=l.colWidths.map(e=>e*l.width)},{immediate:!0});const p=()=>{i.value=[],s.value=[]};Object(n["watch"])(()=>l.editable,()=>{l.editable||p()});const f=Object(n["computed"])(()=>{const e=[];for(let t=1;te+t);e.push(l)}return e}),j=Object(n["computed"])(()=>l.data),{hideCells:v}=yo(j),h=Object(n["computed"])(()=>{if(!i.value.length)return[];const[e,t]=i.value;if(!s.value.length)return[`${e}_${t}`];const[l,c]=s.value;if(e===l&&t===c)return[`${e}_${t}`];const n=[],o=Math.min(e,l),a=Math.min(t,c),r=Math.max(e,l),u=Math.max(t,c);for(let i=0;i=o&&i<=r&&t>=a&&t<=u&&n.push(`${i}_${t}`)}return n});Object(n["watch"])(h,(e,l)=>{Object(S["isEqual"])(e,l)||t("changeSelectedCells",h.value)});const y=Object(n["computed"])(()=>h.value.length>1?null:h.value[0]),g=()=>r.value=!1,x=(e,t,l)=>{0===e.button&&(s.value=[],r.value=!0,i.value=[t,l])},k=(e,t)=>{r.value&&(s.value=[e,t])};Object(n["onMounted"])(()=>{document.addEventListener("mouseup",g)}),Object(n["onUnmounted"])(()=>{document.removeEventListener("mouseup",g)});const C=(e,t)=>v.value.includes(`${e}_${t}`),N=e=>{const t=d.value.length-1;i.value=[0,e],s.value=[t,e]},E=e=>{const t=d.value[e].length-1;i.value=[e,0],s.value=[e,t]},w=()=>{const e=d.value.length-1,t=d.value[e].length-1;i.value=[0,0],s.value=[e,t]},V=e=>{const t=JSON.parse(JSON.stringify(d.value)),l=d.value[e],c=[];for(let n=0;n=0;l--)if(!C(l,n)){t[l][n].rowspan=t[l][n].rowspan-1;break}t.splice(e,1),d.value=t},I=e=>{const l=JSON.parse(JSON.stringify(d.value)),c=[];for(let t=0;t=0;c--)if(!C(t,c)){l[t][c].colspan=l[t][c].colspan-1;break}d.value=l.map(t=>(t.splice(e,1),t)),O.value.splice(e,1),t("changeColWidths",O.value)},L=e=>{const t=JSON.parse(JSON.stringify(d.value)),l=[];for(let c=0;c{d.value=d.value.map(t=>{const l={colspan:1,rowspan:1,text:"",id:Object(a["b"])(10)};return t.splice(e,0,l),t}),O.value.splice(e,0,100),t("changeColWidths",O.value)},_=(e,l)=>{let c=JSON.parse(JSON.stringify(d.value));const n={colspan:1,rowspan:1,text:""};if(e){const t=[];for(let l=0;l{const t=[];for(let c=0;c{const[e,t]=i.value,[l,c]=s.value,n=Math.min(e,l),o=Math.min(t,c),a=Math.max(e,l),r=Math.max(t,c),u=JSON.parse(JSON.stringify(d.value));u[n][o].rowspan=a-n+1,u[n][o].colspan=r-o+1,d.value=u,p()},M=(e,t)=>{const l=JSON.parse(JSON.stringify(d.value));l[e][t].rowspan=1,l[e][t].colspan=1,d.value=l,p()},D=(e,l)=>{p();let n=!0;const o=O.value[l],a=e.pageX,r=50;document.onmousemove=e=>{if(!n)return;const t=(e.pageX-a)/c.value,i=o+t{n=!1,document.onmousemove=null,document.onmouseup=null,t("changeColWidths",O.value)}},F=()=>{const e=JSON.parse(JSON.stringify(d.value));for(let t=0;t{const e=(t,l)=>d.value[t]?d.value[t][l]?C(t,l)?e(t,l+1):[t,l]:e(t+1,0):null;s.value=[];const t=i.value[0],l=i.value[1]+1,c=e(t,l);c?i.value=c:(L(t+1),i.value=[t+1,0]),Object(n["nextTick"])(()=>{const e=document.querySelector(".cell-text.active");e&&e.focus()})},$=e=>{if(!l.editable||!h.value.length)return;const t=e.key.toUpperCase();if(h.value.length<2){if(t===te.TAB&&(e.preventDefault(),A()),e.ctrlKey&&t===te.UP){e.preventDefault();const t=+h.value[0].split("_")[0];L(t)}if(e.ctrlKey&&t===te.DOWN){e.preventDefault();const t=+h.value[0].split("_")[0];L(t+1)}if(e.ctrlKey&&t===te.LEFT){e.preventDefault();const t=+h.value[0].split("_")[1];B(t)}if(e.ctrlKey&&t===te.RIGHT){e.preventDefault();const t=+h.value[0].split("_")[1];B(t+1)}}else t===te.DELETE&&F()};Object(n["onMounted"])(()=>{document.addEventListener("keydown",$)}),Object(n["onUnmounted"])(()=>{document.removeEventListener("keydown",$)});const R=Object(S["debounce"])((function(e,l,c){d.value[l][c].text=e,t("change",d.value)}),300,{trailing:!0}),P=(e,l,c)=>{const o=e.length,a=e[0].length;let r=0,i=0;l+o>d.value.length&&(r=l+o-d.value.length),c+a>d.value[0].length&&(i=c+a-d.value[0].length),(r||i)&&_(r,i),Object(n["nextTick"])(()=>{for(let t=0;t{const e=[];for(let t=0;t{const e=H(),t=e.length>1,l=e[0].length>1;return{canDeleteRow:t,canDeleteCol:l}},U=(e,t)=>{const l=h.value.length>1,c=d.value[e][t],n=l,o=!l&&(c.rowspan>1||c.colspan>1);return{canMerge:n,canSplit:o}},G=e=>{const t=e.dataset.cellIndex,l=+t.split("_")[0],c=+t.split("_")[1];h.value.includes(`${l}_${c}`)||(i.value=[l,c],s.value=[]);const{canMerge:n,canSplit:o}=U(l,c),{canDeleteRow:a,canDeleteCol:r}=q();return[{text:"插入列",children:[{text:"到左侧",handler:()=>B(c)},{text:"到右侧",handler:()=>B(c+1)}]},{text:"插入行",children:[{text:"到上方",handler:()=>L(l)},{text:"到下方",handler:()=>L(l+1)}]},{text:"删除列",disable:!r,handler:()=>I(c)},{text:"删除行",disable:!a,handler:()=>V(l)},{divider:!0},{text:"合并单元格",disable:!n,handler:T},{text:"取消合并单元格",disable:!o,handler:()=>M(l,c)},{divider:!0},{text:"选中当前列",handler:()=>N(c)},{text:"选中当前行",handler:()=>E(l)},{text:"选中全部单元格",handler:w}]};return(t,l)=>{var c,o,a,r,i;const s=Object(n["resolveDirective"])("contextmenu");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"editable-table",style:Object(n["normalizeStyle"])({width:Object(n["unref"])(m)+"px"})},[e.editable?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Eo,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(f),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"drag-line",key:t,style:Object(n["normalizeStyle"])({left:e+"px"}),onMousedown:e=>D(e,t)},null,44,wo))),128))])):Object(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("table",{class:Object(n["normalizeClass"])({theme:Object(n["unref"])(u),"row-header":null===(c=Object(n["unref"])(u))||void 0===c?void 0:c.rowHeader,"row-footer":null===(o=Object(n["unref"])(u))||void 0===o?void 0:o.rowFooter,"col-header":null===(a=Object(n["unref"])(u))||void 0===a?void 0:a.colHeader,"col-footer":null===(r=Object(n["unref"])(u))||void 0===r?void 0:r.colFooter}),style:Object(n["normalizeStyle"])(`--themeColor: ${null===(i=Object(n["unref"])(u))||void 0===i?void 0:i.color}; --subThemeColor1: ${Object(n["unref"])(b)[0]}; --subThemeColor2: ${Object(n["unref"])(b)[1]}`)},[Object(n["createElementVNode"])("colgroup",null,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(O.value,(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("col",{span:"1",key:t,width:e},null,8,Vo))),128))]),Object(n["createElementVNode"])("tbody",null,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(d),(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("tr",{key:l,style:Object(n["normalizeStyle"])({height:e.cellMinHeight+"px"})},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(t,(t,c)=>Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("td",{class:Object(n["normalizeClass"])(["cell",{selected:Object(n["unref"])(h).includes(`${l}_${c}`)&&Object(n["unref"])(h).length>1,active:Object(n["unref"])(y)===`${l}_${c}`}]),style:Object(n["normalizeStyle"])({borderStyle:e.outline.style,borderColor:e.outline.color,borderWidth:e.outline.width+"px",...Object(n["unref"])(vo)(t.style)}),key:t.id,rowspan:t.rowspan,colspan:t.colspan,"data-cell-index":`${l}_${c}`,onMousedown:e=>x(e,l,c),onMouseenter:e=>k(l,c)},[Object(n["unref"])(y)===`${l}_${c}`?(Object(n["openBlock"])(),Object(n["createBlock"])(No,{key:0,class:Object(n["normalizeClass"])(["cell-text",{active:Object(n["unref"])(y)===`${l}_${c}`}]),style:Object(n["normalizeStyle"])({minHeight:e.cellMinHeight-4+"px"}),value:t.text,onUpdateValue:e=>Object(n["unref"])(R)(e,l,c),onInsertExcelData:e=>P(e,l,c)},null,8,["class","style","value","onUpdateValue","onInsertExcelData"])):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:1,class:"cell-text",style:Object(n["normalizeStyle"])({minHeight:e.cellMinHeight-4+"px"}),innerHTML:Object(n["unref"])(ho)(t.text)},null,12,So))],46,Io)),[[n["vShow"],!Object(n["unref"])(v).includes(`${l}_${c}`)],[s,e=>G(e)]])),128))],4))),128))])],6)],4)}}});l("652e");const Bo=Yt()(Lo,[["__scopeId","data-v-a2ef535c"]]);var _o=Bo;const To={class:"element-content"};var Mo=Object(n["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup(e){const t=e,l=z(),c=T(),{canvasScale:a,handleElementId:r,isScaling:i}=Object(o["c"])(l),s=Object(n["ref"])(),{addHistorySnapshot:d}=Te(),u=e=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},b=Object(n["ref"])(!1);Object(n["watch"])(r,()=>{r.value!==t.elementInfo.id&&(b.value=!1)}),Object(n["watch"])(b,()=>{l.setDisableHotkeysState(b.value)});const O=()=>{t.elementInfo.lock||(b.value=!0)},m=Object(n["ref"])(-1);Object(n["watch"])(i,()=>{r.value===t.elementInfo.id&&(i.value&&(b.value=!1),i.value||-1===m.value||(c.updateElement({id:t.elementInfo.id,props:{height:m.value}}),m.value=-1))});const p=e=>{const l=e[0].contentRect;if(!s.value)return;const n=l.height;t.elementInfo.height!==n&&(i.value?m.value=n:c.updateElement({id:t.elementInfo.id,props:{height:n}}))},f=new ResizeObserver(p);Object(n["onMounted"])(()=>{s.value&&f.observe(s.value)}),Object(n["onUnmounted"])(()=>{s.value&&f.unobserve(s.value)});const j=e=>{c.updateElement({id:t.elementInfo.id,props:{data:e}}),d()},v=e=>{const l=e.reduce((e,t)=>e+t),n=e.map(e=>e/l);c.updateElement({id:t.elementInfo.id,props:{width:l,colWidths:n}}),d()},h=e=>{Object(n["nextTick"])(()=>l.setSelectedTableCells(e))};return(t,l)=>{const c=Object(n["resolveDirective"])("contextmenu");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["editable-element-table",{lock:e.elementInfo.lock}]),ref_key:"elementRef",ref:s,style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("div",To,[Object(n["createVNode"])(_o,{onMousedown:l[0]||(l[0]=Object(n["withModifiers"])(()=>{},["stop"])),data:e.elementInfo.data,width:e.elementInfo.width,cellMinHeight:e.elementInfo.cellMinHeight,colWidths:e.elementInfo.colWidths,outline:e.elementInfo.outline,theme:e.elementInfo.theme,editable:b.value,onChange:l[1]||(l[1]=e=>j(e)),onChangeColWidths:l[2]||(l[2]=e=>v(e)),onChangeSelectedCells:l[3]||(l[3]=e=>h(e))},null,8,["data","width","cellMinHeight","colWidths","outline","theme","editable"]),!b.value||e.elementInfo.lock?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:Object(n["normalizeClass"])(["table-mask",{lock:e.elementInfo.lock}]),onDblclick:l[4]||(l[4]=e=>O()),onMousedown:l[5]||(l[5]=e=>u(e)),onTouchstart:l[6]||(l[6]=e=>u(e))},[Object(n["createElementVNode"])("div",{class:"mask-tip",style:Object(n["normalizeStyle"])({transform:`scale(${1/Object(n["unref"])(a)})`})},"双击编辑",4)],34)):Object(n["createCommentVNode"])("",!0)])),[[c,e.contextmenus]])],4)],6)}}});l("db8d");const Do=Yt()(Mo,[["__scopeId","data-v-0b2b16da"]]);var zo=Do;const Fo=["width","height","stroke","stroke-width"],Ao=["transform"],$o=["d"];var Ro=Object(n["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup(e){const t=e,l=e=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},c=()=>{yn.emit(jn.OPEN_LATEX_EDITOR)};return(t,o)=>{const a=Object(n["resolveDirective"])("contextmenu");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["editable-element-latex",{lock:e.elementInfo.lock}]),style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"element-content",onMousedown:o[0]||(o[0]=e=>l(e)),onTouchstart:o[1]||(o[1]=e=>l(e)),onDblclick:o[2]||(o[2]=e=>c())},[(Object(n["openBlock"])(),Object(n["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(n["createElementVNode"])("g",{transform:`scale(${e.elementInfo.width/e.elementInfo.viewBox[0]}, ${e.elementInfo.height/e.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`},[Object(n["createElementVNode"])("path",{d:e.elementInfo.path},null,8,$o)],8,Ao)],8,Fo))],32)),[[a,e.contextmenus]])],4)],6)}}});l("0f64");const Po=Yt()(Ro,[["__scopeId","data-v-31390388"]]);var Ho=Po,qo=(e,t)=>{Object(n["onMounted"])(()=>{if(!t.value)return;let l="normal";if(/m3u8(#|\?|$)/i.exec(e)?l="hls":/.flv(#|\?|$)/i.exec(e)&&(l="flv"),t.value&&"hls"===l&&(t.value.canPlayType("application/x-mpegURL")||t.value.canPlayType("application/vnd.apple.mpegURL"))&&(l="normal"),"hls"===l){const l=window.Hls;if(l&&l.isSupported()){const c=new l;c.loadSource(e),c.attachMedia(t.value)}}else if("flv"===l){const l=window.flvjs;if(l&&l.isSupported()){const c=l.createPlayer({type:"flv",url:e});c.attachMediaElement(t.value),c.load()}}})};const Uo=e=>(Object(n["pushScopeId"])("data-v-adfce55e"),e=e(),Object(n["popScopeId"])(),e),Go={key:0,class:"load-error"},Xo=["src","poster"],Yo={class:"bezel"},Zo=Uo(()=>Object(n["createElementVNode"])("div",{class:"controller-mask"},null,-1)),Wo={class:"controller"},Jo={class:"icons icons-left"},Ko={class:"icon-content"},Qo={class:"volume"},ea={class:"icon-content"},ta=Uo(()=>Object(n["createElementVNode"])("span",{class:"thumb"},null,-1)),la=[ta],ca={class:"time"},na={class:"ptime"},oa={class:"dtime"},aa={class:"icons icons-right"},ra={class:"speed"},ia={class:"icon speed-icon"},sa=["onClick"],da={class:"icon-content"},ua={class:"bar"},ba=Uo(()=>Object(n["createElementVNode"])("span",{class:"thumb"},null,-1)),Oa=[ba];var ma=Object(n["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(e){const t=e,l=(e=0)=>{if(0===e||isNaN(e))return"00:00";const t=e=>e<10?"0"+e:""+e,l=Math.floor(e/3600),c=Math.floor((e-3600*l)/60),n=Math.floor(e-3600*l-60*c);return(l>0?[l,c,n]:[c,n]).map(t).join(":")},c=e=>e.getBoundingClientRect().left,o=Object(n["ref"])(),a=Object(n["ref"])(),r=Object(n["ref"])(),i=Object(n["ref"])(.5),s=Object(n["ref"])(!0),d=Object(n["ref"])(0),u=Object(n["ref"])(0),b=Object(n["ref"])(0),O=Object(n["ref"])(!1),m=Object(n["ref"])(!1),p=Object(n["ref"])(1),f=Object(n["ref"])(!1),j=Object(n["ref"])("00:00"),v=Object(n["ref"])("0"),h=Object(n["computed"])(()=>l(d.value)),y=Object(n["computed"])(()=>l(u.value)),g=Object(n["computed"])(()=>d.value/u.value*100+"%"),x=Object(n["computed"])(()=>b.value/u.value*100+"%"),k=Object(n["computed"])(()=>100*i.value+"%"),C=Object(n["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}],E=e=>{o.value&&(e=Math.max(e,0),e=Math.min(e,u.value),o.value.currentTime=e,d.value=e)},w=()=>{o.value&&(s.value=!1,o.value.play(),m.value=!0)},V=()=>{o.value&&(s.value=!0,o.value.pause(),m.value=!0)},I=()=>{s.value?w():V()},S=e=>{o.value&&(e=Math.max(e,0),e=Math.min(e,1),o.value.volume=e,i.value=e,o.value.muted&&0!==e&&(o.value.muted=!1))},L=e=>{o.value&&(o.value.playbackRate=e),p.value=e},B=()=>{var e;u.value=(null===(e=o.value)||void 0===e?void 0:e.duration)||0},_=()=>{var e;d.value=(null===(e=o.value)||void 0===e?void 0:e.currentTime)||0},T=()=>{O.value?(E(0),w()):V()},M=()=>{var e;b.value=null!==(e=o.value)&&void 0!==e&&e.buffered.length?o.value.buffered.end(o.value.buffered.length-1):0},D=Object(n["ref"])(!1),z=()=>D.value=!0,F=e=>{if(!o.value||!a.value)return;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX;let l=(t-c(a.value))/a.value.clientWidth;l=Math.max(l,0),l=Math.min(l,1);const n=l*u.value;o.value.currentTime=n,d.value=n},A=e=>{if(!o.value||!a.value)return;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX;let l=(t-c(a.value))/a.value.clientWidth;l=Math.max(l,0),l=Math.min(l,1);const n=l*u.value;o.value.currentTime=n,d.value=n,document.removeEventListener("mousemove",F),document.removeEventListener("touchmove",F),document.removeEventListener("mouseup",A),document.removeEventListener("touchend",A)},$=()=>{document.addEventListener("mousemove",F),document.addEventListener("touchmove",F),document.addEventListener("mouseup",A),document.addEventListener("touchend",A)},R=e=>{if(!r.value)return;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX,l=(t-c(r.value))/45;S(l)},P=()=>{document.removeEventListener("mousemove",R),document.removeEventListener("touchmove",R),document.removeEventListener("mouseup",P),document.removeEventListener("touchend",P)},H=()=>{document.addEventListener("mousemove",R),document.addEventListener("touchmove",R),document.addEventListener("mouseup",P),document.addEventListener("touchend",P)},q=e=>{if(!r.value)return;const t=(e.clientX-c(r.value))/45;S(t)},U=e=>{if(u.value&&a.value){const t=a.value.getBoundingClientRect().left,c=e.clientX-t;if(c<0||c>a.value.offsetWidth)return;const n=u.value*(c/a.value.offsetWidth);v.value=c-(n>=3600?25:20)+"px",j.value=l(n),f.value=!0}},G=()=>{o.value&&(o.value.muted?(o.value.muted=!1,S(.5)):(o.value.muted=!0,S(0)))},X=()=>{O.value=!O.value},Y=Object(n["ref"])(-1),Z=Object(n["ref"])(!1),W=()=>{Z.value=!1,clearTimeout(Y.value),Y.value=setTimeout(()=>{var e;null!==(e=o.value)&&void 0!==e&&e.played.length&&(Z.value=!0)},3e3)};return qo(t.src,o),(t,l)=>{const c=Object(n["resolveComponent"])("IconPause"),d=Object(n["resolveComponent"])("IconPlayOne"),u=Object(n["resolveComponent"])("IconVolumeMute"),b=Object(n["resolveComponent"])("IconVolumeNotice"),E=Object(n["resolveComponent"])("IconVolumeSmall");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["video-player",{"hide-controller":Z.value}]),style:Object(n["normalizeStyle"])({width:e.width*e.scale+"px",height:e.height*e.scale+"px",transform:`scale(${1/e.scale})`}),onMousemove:l[22]||(l[22]=e=>W()),onClick:l[23]||(l[23]=e=>W())},[Object(n["createElementVNode"])("div",{class:"video-wrap",onClick:l[8]||(l[8]=e=>I())},[D.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Go,"视频加载失败")):Object(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("video",{class:"video",ref_key:"videoRef",ref:o,src:e.src,poster:e.poster,"webkit-playsinline":"",playsinline:"",onDurationchange:l[0]||(l[0]=e=>B()),onTimeupdate:l[1]||(l[1]=e=>_()),onEnded:l[2]||(l[2]=e=>T()),onProgress:l[3]||(l[3]=e=>M()),onPlay:l[4]||(l[4]=e=>W()),onPause:l[5]||(l[5]=e=>W()),onError:l[6]||(l[6]=e=>z())},null,40,Xo),Object(n["createElementVNode"])("div",Yo,[Object(n["createElementVNode"])("span",{class:Object(n["normalizeClass"])(["bezel-icon",{"bezel-transition":m.value}]),onAnimationend:l[7]||(l[7]=e=>m.value=!1)},[s.value?(Object(n["openBlock"])(),Object(n["createBlock"])(c,{key:0})):(Object(n["openBlock"])(),Object(n["createBlock"])(d,{key:1}))],34)])]),Zo,Object(n["createElementVNode"])("div",Wo,[Object(n["createElementVNode"])("div",Jo,[Object(n["createElementVNode"])("div",{class:"icon play-icon",onClick:l[9]||(l[9]=e=>I())},[Object(n["createElementVNode"])("span",Ko,[s.value?(Object(n["openBlock"])(),Object(n["createBlock"])(d,{key:0})):(Object(n["openBlock"])(),Object(n["createBlock"])(c,{key:1}))])]),Object(n["createElementVNode"])("div",Qo,[Object(n["createElementVNode"])("div",{class:"icon volume-icon",onClick:l[10]||(l[10]=e=>G())},[Object(n["createElementVNode"])("span",ea,[0===i.value?(Object(n["openBlock"])(),Object(n["createBlock"])(u,{key:0})):1===i.value?(Object(n["openBlock"])(),Object(n["createBlock"])(b,{key:1})):(Object(n["openBlock"])(),Object(n["createBlock"])(E,{key:2}))])]),Object(n["createElementVNode"])("div",{class:"volume-bar-wrap",onMousedown:l[11]||(l[11]=e=>H()),onTouchstart:l[12]||(l[12]=e=>H()),onClick:l[13]||(l[13]=e=>q(e))},[Object(n["createElementVNode"])("div",{class:"volume-bar",ref_key:"volumeBarRef",ref:r},[Object(n["createElementVNode"])("div",{class:"volume-bar-inner",style:Object(n["normalizeStyle"])({width:Object(n["unref"])(k)})},la,4)],512)],32)]),Object(n["createElementVNode"])("span",ca,[Object(n["createElementVNode"])("span",na,Object(n["toDisplayString"])(Object(n["unref"])(h)),1),Object(n["createTextVNode"])(" / "),Object(n["createElementVNode"])("span",oa,Object(n["toDisplayString"])(Object(n["unref"])(y)),1)])]),Object(n["createElementVNode"])("div",aa,[Object(n["createElementVNode"])("div",ra,[Object(n["createElementVNode"])("div",ia,[Object(n["createElementVNode"])("span",{class:"icon-content",onClick:l[14]||(l[14]=e=>C.value=!C.value)},Object(n["toDisplayString"])(1===p.value?"倍速":p.value+"x"),1),C.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:"speed-menu",onMouseleave:l[15]||(l[15]=e=>C.value=!1)},[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(N,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["speed-menu-item",{active:e.value===p.value}]),key:e.label,onClick:t=>L(e.value)},Object(n["toDisplayString"])(e.label),11,sa)),64))],32)):Object(n["createCommentVNode"])("",!0)])]),Object(n["createElementVNode"])("div",{class:"loop",onClick:l[16]||(l[16]=e=>X())},[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["icon loop-icon",{active:O.value}])},[Object(n["createElementVNode"])("span",da,"循环"+Object(n["toDisplayString"])(O.value?"开":"关"),1)],2)])]),Object(n["createElementVNode"])("div",{class:"bar-wrap",ref_key:"playBarWrap",ref:a,onMousedown:l[17]||(l[17]=e=>$()),onTouchstart:l[18]||(l[18]=e=>$()),onMousemove:l[19]||(l[19]=e=>U(e)),onMouseenter:l[20]||(l[20]=e=>f.value=!0),onMouseleave:l[21]||(l[21]=e=>f.value=!1)},[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["bar-time",{hidden:!f.value}]),style:Object(n["normalizeStyle"])({left:v.value})},Object(n["toDisplayString"])(j.value),7),Object(n["createElementVNode"])("div",ua,[Object(n["createElementVNode"])("div",{class:"loaded",style:Object(n["normalizeStyle"])({width:Object(n["unref"])(x)})},null,4),Object(n["createElementVNode"])("div",{class:"played",style:Object(n["normalizeStyle"])({width:Object(n["unref"])(g)})},Oa,4)])],544)])],38)}}});l("4036");const pa=Yt()(ma,[["__scopeId","data-v-adfce55e"]]);var fa=pa,ja=Object(n["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup(e){const t=e,{canvasScale:l}=Object(o["c"])(z()),c=(e,l=!0)=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo,l))};return(t,o)=>{const a=Object(n["resolveDirective"])("contextmenu");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["editable-element-video",{lock:e.elementInfo.lock}]),style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"element-content",onMousedown:o[2]||(o[2]=e=>c(e,!1)),onTouchstart:o[3]||(o[3]=e=>c(e,!1))},[Object(n["createVNode"])(fa,{width:e.elementInfo.width,height:e.elementInfo.height,src:e.elementInfo.src,poster:e.elementInfo.poster,scale:Object(n["unref"])(l)},null,8,["width","height","src","poster","scale"]),(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(["t","b","l","r"],e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["handler-border",e]),key:e,onMousedown:o[0]||(o[0]=e=>c(e)),onTouchstart:o[1]||(o[1]=e=>c(e))},null,34)),64))],32)),[[a,e.contextmenus]])],4)],6)}}});l("679c");const va=Yt()(ja,[["__scopeId","data-v-9d5469c6"]]);var ha=va;const ya=e=>(Object(n["pushScopeId"])("data-v-121f3d11"),e=e(),Object(n["popScopeId"])(),e),ga=["src","autoplay"],xa={class:"controller"},ka={class:"icons"},Ca={class:"icon-content"},Na={class:"volume"},Ea={class:"icon-content"},wa=ya(()=>Object(n["createElementVNode"])("span",{class:"thumb"},null,-1)),Va=[wa],Ia={class:"time"},Sa={class:"ptime"},La={class:"dtime"},Ba={class:"bar"},_a=ya(()=>Object(n["createElementVNode"])("span",{class:"thumb"},null,-1)),Ta=[_a];var Ma=Object(n["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(e,{expose:t}){const l=e,c=(e=0)=>{if(0===e||isNaN(e))return"00:00";const t=e=>e<10?"0"+e:""+e,l=Math.floor(e/3600),c=Math.floor((e-3600*l)/60),n=Math.floor(e-3600*l-60*c);return(l>0?[l,c,n]:[c,n]).map(t).join(":")},o=e=>e.getBoundingClientRect().left,a=Object(n["ref"])(),r=Object(n["ref"])(),i=Object(n["ref"])(),s=Object(n["ref"])(.5),d=Object(n["ref"])(!0),u=Object(n["ref"])(0),b=Object(n["ref"])(0),O=Object(n["ref"])(0),m=Object(n["ref"])(!1),p=Object(n["ref"])("00:00"),f=Object(n["ref"])("0"),j=Object(n["computed"])(()=>c(u.value)),v=Object(n["computed"])(()=>c(b.value)),h=Object(n["computed"])(()=>u.value/b.value*100+"%"),y=Object(n["computed"])(()=>O.value/b.value*100+"%"),g=Object(n["computed"])(()=>100*s.value+"%"),x=e=>{a.value&&(e=Math.max(e,0),e=Math.min(e,b.value),a.value.currentTime=e,u.value=e)},k=()=>{a.value&&(d.value=!1,a.value.play())},C=()=>{a.value&&(d.value=!0,a.value.pause())},N=()=>{d.value?k():C()},E=e=>{a.value&&(e=Math.max(e,0),e=Math.min(e,1),a.value.volume=e,s.value=e,a.value.muted&&0!==e&&(a.value.muted=!1))},w=()=>{var e;b.value=(null===(e=a.value)||void 0===e?void 0:e.duration)||0},V=()=>{var e;u.value=(null===(e=a.value)||void 0===e?void 0:e.currentTime)||0},I=()=>{d.value=!1},S=()=>{l.loop?(x(0),k()):C()},L=()=>{var e;O.value=null!==(e=a.value)&&void 0!==e&&e.buffered.length?a.value.buffered.end(a.value.buffered.length-1):0},B=()=>ne["a"].error("视频加载失败"),_=e=>{if(!a.value||!r.value)return;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX;let l=(t-o(r.value))/r.value.clientWidth;l=Math.max(l,0),l=Math.min(l,1);const c=l*b.value;a.value.currentTime=c,u.value=c},T=e=>{if(!a.value||!r.value)return;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX;let l=(t-o(r.value))/r.value.clientWidth;l=Math.max(l,0),l=Math.min(l,1);const c=l*b.value;a.value.currentTime=c,u.value=c,document.removeEventListener("mousemove",_),document.removeEventListener("touchmove",_),document.removeEventListener("mouseup",T),document.removeEventListener("touchend",T)},M=()=>{document.addEventListener("mousemove",_),document.addEventListener("touchmove",_),document.addEventListener("mouseup",T),document.addEventListener("touchend",T)},D=e=>{if(!i.value)return;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX,l=(t-o(i.value))/45;E(l)},z=()=>{document.removeEventListener("mousemove",D),document.removeEventListener("touchmove",D),document.removeEventListener("mouseup",z),document.removeEventListener("touchend",z)},F=()=>{document.addEventListener("mousemove",D),document.addEventListener("touchmove",D),document.addEventListener("mouseup",z),document.addEventListener("touchend",z)},A=e=>{if(!i.value)return;const t=(e.clientX-o(i.value))/45;E(t)},$=e=>{if(b.value&&r.value){const t=r.value.getBoundingClientRect().left,l=e.clientX-t;if(l<0||l>r.value.offsetWidth)return;const n=b.value*(l/r.value.offsetWidth);f.value=l-(n>=3600?25:20)+"px",p.value=c(n),m.value=!0}},R=()=>{a.value&&(a.value.muted?(a.value.muted=!1,E(.5)):(a.value.muted=!0,E(0)))};return t({toggle:N}),(t,l)=>{const c=Object(n["resolveComponent"])("IconPlayOne"),o=Object(n["resolveComponent"])("IconPause"),u=Object(n["resolveComponent"])("IconVolumeMute"),b=Object(n["resolveComponent"])("IconVolumeNotice"),O=Object(n["resolveComponent"])("IconVolumeSmall");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"audio-player",style:Object(n["normalizeStyle"])({transform:`scale(${1/e.scale})`})},[Object(n["createElementVNode"])("audio",{class:"audio",ref_key:"audioRef",ref:a,src:e.src,autoplay:e.autoplay,onDurationchange:l[0]||(l[0]=e=>w()),onTimeupdate:l[1]||(l[1]=e=>V()),onPlay:l[2]||(l[2]=e=>I()),onEnded:l[3]||(l[3]=e=>S()),onProgress:l[4]||(l[4]=e=>L()),onError:l[5]||(l[5]=e=>B())},null,40,ga),Object(n["createElementVNode"])("div",xa,[Object(n["createElementVNode"])("div",ka,[Object(n["createElementVNode"])("div",{class:"icon play-icon",onClick:l[6]||(l[6]=e=>N())},[Object(n["createElementVNode"])("span",Ca,[d.value?(Object(n["openBlock"])(),Object(n["createBlock"])(c,{key:0})):(Object(n["openBlock"])(),Object(n["createBlock"])(o,{key:1}))])]),Object(n["createElementVNode"])("div",Na,[Object(n["createElementVNode"])("div",{class:"icon volume-icon",onClick:l[7]||(l[7]=e=>R())},[Object(n["createElementVNode"])("span",Ea,[0===s.value?(Object(n["openBlock"])(),Object(n["createBlock"])(u,{key:0})):1===s.value?(Object(n["openBlock"])(),Object(n["createBlock"])(b,{key:1})):(Object(n["openBlock"])(),Object(n["createBlock"])(O,{key:2}))])]),Object(n["createElementVNode"])("div",{class:"volume-bar-wrap",onMousedown:l[8]||(l[8]=e=>F()),onTouchstart:l[9]||(l[9]=e=>F()),onClick:l[10]||(l[10]=e=>A(e))},[Object(n["createElementVNode"])("div",{class:"volume-bar",ref_key:"volumeBarRef",ref:i},[Object(n["createElementVNode"])("div",{class:"volume-bar-inner",style:Object(n["normalizeStyle"])({width:Object(n["unref"])(g)})},Va,4)],512)],32)])]),Object(n["createElementVNode"])("span",Ia,[Object(n["createElementVNode"])("span",Sa,Object(n["toDisplayString"])(Object(n["unref"])(j)),1),Object(n["createTextVNode"])(" / "),Object(n["createElementVNode"])("span",La,Object(n["toDisplayString"])(Object(n["unref"])(v)),1)]),Object(n["createElementVNode"])("div",{class:"bar-wrap",ref_key:"playBarWrap",ref:r,onMousedown:l[11]||(l[11]=e=>M()),onTouchstart:l[12]||(l[12]=e=>M()),onMousemove:l[13]||(l[13]=e=>$(e)),onMouseenter:l[14]||(l[14]=e=>m.value=!0),onMouseleave:l[15]||(l[15]=e=>m.value=!1)},[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["bar-time",{hidden:!m.value}]),style:Object(n["normalizeStyle"])({left:f.value})},Object(n["toDisplayString"])(p.value),7),Object(n["createElementVNode"])("div",Ba,[Object(n["createElementVNode"])("div",{class:"loaded",style:Object(n["normalizeStyle"])({width:Object(n["unref"])(y)})},null,4),Object(n["createElementVNode"])("div",{class:"played",style:Object(n["normalizeStyle"])({width:Object(n["unref"])(h)})},Ta,4)])],544)])],4)}}});l("3929");const Da=Yt()(Ma,[["__scopeId","data-v-121f3d11"]]);var za=Da,Fa=Object(n["defineComponent"])({__name:"index",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup(e){const t=e,{canvasScale:l,handleElementId:c}=Object(o["c"])(z()),{viewportRatio:a}=Object(o["c"])(T()),r=Object(n["computed"])(()=>Math.min(t.elementInfo.width,t.elementInfo.height)+"px"),i=Object(n["computed"])(()=>{const e=Ve,c=Ve*a.value,n=280/l.value,o=50/l.value,r=t.elementInfo.width,i=t.elementInfo.height,s=t.elementInfo.left,d=t.elementInfo.top;let u=0,b=i;return s+n>=e&&(u=r-n),d+i+o>=c&&(b=-o),{left:u+"px",top:b+"px"}}),s=e=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))};return(t,o)=>{const a=Object(n["resolveComponent"])("IconVolumeNotice"),d=Object(n["resolveDirective"])("contextmenu");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["editable-element-audio",{lock:e.elementInfo.lock}]),style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"element-content",onMousedown:o[1]||(o[1]=e=>s(e)),onTouchstart:o[2]||(o[2]=e=>s(e))},[Object(n["createVNode"])(a,{class:"audio-icon",style:Object(n["normalizeStyle"])({fontSize:Object(n["unref"])(r),color:e.elementInfo.color})},null,8,["style"]),Object(n["unref"])(c)===e.elementInfo.id?(Object(n["openBlock"])(),Object(n["createBlock"])(za,{key:0,class:"audio-player",style:Object(n["normalizeStyle"])({...Object(n["unref"])(i)}),src:e.elementInfo.src,loop:e.elementInfo.loop,scale:Object(n["unref"])(l),onMousedown:o[0]||(o[0]=Object(n["withModifiers"])(()=>{},["stop"]))},null,8,["style","src","loop","scale"])):Object(n["createCommentVNode"])("",!0)],32)),[[d,e.contextmenus]])],4)],6)}}});l("75e6");const Aa=Yt()(Fa,[["__scopeId","data-v-001bfbc4"]]);var $a=Aa;const Ra=["id"];var Pa=Object(n["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(e){const t=e,l=Object(n["computed"])(()=>{const e={[Se.IMAGE]:Nc,[Se.TEXT]:Dn,[Se.SHAPE]:Kn,[Se.LINE]:so,[Se.CHART]:jo,[Se.TABLE]:zo,[Se.LATEX]:Ho,[Se.VIDEO]:ha,[Se.AUDIO]:$a};return e[t.elementInfo.type]||null}),{orderElement:c}=Ue(),{alignElementToCanvas:o}=Fl(),{combineElements:a,uncombineElements:r}=Re(),{deleteElement:i}=$e(),{lockElement:s,unlockElement:d}=Ae(),{copyElement:u,pasteElement:b,cutElement:O}=Pe(),{selectAllElement:m}=He(),p=()=>t.elementInfo.lock?[{text:"解锁",handler:()=>d(t.elementInfo)}]:[{text:"剪切",subText:"Ctrl + X",handler:O},{text:"复制",subText:"Ctrl + C",handler:u},{text:"粘贴",subText:"Ctrl + V",handler:b},{divider:!0},{text:"水平居中",handler:()=>o(J.HORIZONTAL),children:[{text:"水平垂直居中",handler:()=>o(J.CENTER)},{text:"水平居中",handler:()=>o(J.HORIZONTAL)},{text:"左对齐",handler:()=>o(J.LEFT)},{text:"右对齐",handler:()=>o(J.RIGHT)}]},{text:"垂直居中",handler:()=>o(J.VERTICAL),children:[{text:"水平垂直居中",handler:()=>o(J.CENTER)},{text:"垂直居中",handler:()=>o(J.VERTICAL)},{text:"顶部对齐",handler:()=>o(J.TOP)},{text:"底部对齐",handler:()=>o(J.BOTTOM)}]},{divider:!0},{text:"置于顶层",disable:t.isMultiSelect&&!t.elementInfo.groupId,handler:()=>c(t.elementInfo,W.TOP),children:[{text:"置于顶层",handler:()=>c(t.elementInfo,W.TOP)},{text:"上移一层",handler:()=>c(t.elementInfo,W.UP)}]},{text:"置于底层",disable:t.isMultiSelect&&!t.elementInfo.groupId,handler:()=>c(t.elementInfo,W.BOTTOM),children:[{text:"置于底层",handler:()=>c(t.elementInfo,W.BOTTOM)},{text:"下移一层",handler:()=>c(t.elementInfo,W.DOWN)}]},{divider:!0},{text:"设置链接",handler:t.openLinkDialog},{text:t.elementInfo.groupId?"取消组合":"组合",subText:"Ctrl + G",handler:t.elementInfo.groupId?r:a,hide:!t.isMultiSelect},{text:"全选",subText:"Ctrl + A",handler:m},{text:"锁定",subText:"Ctrl + L",handler:s},{text:"删除",subText:"Delete",handler:i}];return(t,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"editable-element",ref:"elementRef",id:"editable-element-"+e.elementInfo.id,style:Object(n["normalizeStyle"])({zIndex:e.elementIndex})},[(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["resolveDynamicComponent"])(Object(n["unref"])(l)),{elementInfo:e.elementInfo,selectElement:e.selectElement,contextmenus:p},null,8,["elementInfo","selectElement"]))],12,Ra))}});const Ha=Pa;var qa=Ha,Ua=Object(n["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(e){return[1,2,3,4].includes(e)}}},setup(e){return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])("mouse-selection quadrant-"+e.quadrant),style:Object(n["normalizeStyle"])({top:e.top+"px",left:e.left+"px",width:e.width+"px",height:e.height+"px"})},null,6))}});l("4b9a");const Ga=Yt()(Ua,[["__scopeId","data-v-0d6c0f73"]]);var Xa=Ga;const Ya={class:"grid-lines"},Za=["d","stroke"];var Wa=Object(n["defineComponent"])({__name:"GridLines",setup(e){const{canvasScale:t,gridLineSize:l}=Object(o["c"])(z()),{currentSlide:c,viewportRatio:a}=Object(o["c"])(T()),r=Object(n["computed"])(()=>{var e;return null===(e=c.value)||void 0===e?void 0:e.background}),i=Object(n["computed"])(()=>{var e;const t=(null===(e=r.value)||void 0===e?void 0:e.color)||"#fff",l=["#000","#fff"];return I.a.mostReadable(t,l,{includeFallbackColors:!0}).setAlpha(.5).toRgbString()}),s=Object(n["computed"])(()=>{const e=Ve,t=Ve*a.value;let c="";for(let n=0;n<=Math.floor(t/l.value);n++)c+=`M0 ${n*l.value} L${e} ${n*l.value} `;for(let n=0;n<=Math.floor(e/l.value);n++)c+=`M${n*l.value} 0 L${n*l.value} ${t} `;return c});return(e,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",Ya,[Object(n["createElementVNode"])("path",{style:Object(n["normalizeStyle"])({transform:`scale(${Object(n["unref"])(t)})`}),d:Object(n["unref"])(s),fill:"none",stroke:Object(n["unref"])(i),"stroke-width":"0.3","stroke-dasharray":"5"},null,12,Za)]))}});l("dd7b");const Ja=Yt()(Wa,[["__scopeId","data-v-aebac580"]]);var Ka=Ja,Qa=e=>{const t=Object(n["computed"])(()=>{if(!e.value)return{backgroundColor:"#fff"};const{type:t,color:l,image:c,imageSize:n,gradientColor:o,gradientRotate:a,gradientType:r}=e.value;if("solid"===t)return{backgroundColor:l};if("image"===t)return c?"repeat"===n?{backgroundImage:"url("+c,backgroundRepeat:"repeat",backgroundSize:"contain"}:{backgroundImage:"url("+c,backgroundRepeat:"no-repeat",backgroundSize:n||"cover"}:{backgroundColor:"#fff"};if("gradient"===t){const e=a||0,t=o?o[0]:"#fff",l=o?o[1]:"#fff";return"radial"===r?{backgroundImage:`radial-gradient(${t}, ${l}`}:{backgroundImage:`linear-gradient(${e}deg, ${t}, ${l}`}}return{backgroundColor:"#fff"}});return{backgroundStyle:t}},er=Object(n["defineComponent"])({__name:"ViewportBackground",setup(e){const{gridLineSize:t}=Object(o["c"])(z()),{currentSlide:l}=Object(o["c"])(T()),c=Object(n["computed"])(()=>{var e;return null===(e=l.value)||void 0===e?void 0:e.background}),{backgroundStyle:a}=Qa(c);return(e,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"viewport-background",style:Object(n["normalizeStyle"])(Object(n["unref"])(a))},[Object(n["unref"])(t)?(Object(n["openBlock"])(),Object(n["createBlock"])(Ka,{key:0})):Object(n["createCommentVNode"])("",!0)],4))}});l("5977");const tr=Yt()(er,[["__scopeId","data-v-61c4db4a"]]);var lr=tr,cr=Object(n["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(e){const t=e,l=Object(n["computed"])(()=>t.axis.x*t.canvasScale+"px"),c=Object(n["computed"])(()=>t.axis.y*t.canvasScale+"px"),o=Object(n["computed"])(()=>"vertical"===t.type?{height:t.length*t.canvasScale+"px"}:{width:t.length*t.canvasScale+"px"});return(t,a)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"alignment-line",style:Object(n["normalizeStyle"])({left:Object(n["unref"])(l),top:Object(n["unref"])(c)})},[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["line",e.type]),style:Object(n["normalizeStyle"])(Object(n["unref"])(o))},null,6)],4))}});l("5688");const nr=Yt()(cr,[["__scopeId","data-v-37fa6068"]]);var or=nr;const ar={class:"ruler"};var rr=Object(n["defineComponent"])({__name:"Ruler",props:{viewportStyles:{type:Object,required:!0}},setup(e){const t=e,{canvasScale:l}=Object(o["c"])(z()),c=Object(n["computed"])(()=>t.viewportStyles.width*l.value/10);return(t,o)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ar,[Object(n["createElementVNode"])("div",{class:"h",style:Object(n["normalizeStyle"])({width:e.viewportStyles.width*Object(n["unref"])(l)+"px",left:e.viewportStyles.left+"px"})},[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(20,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["ruler-marker-100",{hide:Object(n["unref"])(c)<36,omit:Object(n["unref"])(c)<72}]),key:"marker-100-"+e},[Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e),1)],2)),64))],4),Object(n["createElementVNode"])("div",{class:"v",style:Object(n["normalizeStyle"])({height:e.viewportStyles.height*Object(n["unref"])(l)+"px",top:e.viewportStyles.top+"px"})},[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(20,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["ruler-marker-100",{hide:Object(n["unref"])(c)<36,omit:Object(n["unref"])(c)<72}]),key:e,style:Object(n["normalizeStyle"])({height:Object(n["unref"])(c)+"px"})},[Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e),1)],6)),64))],4)]))}});l("f126");const ir=Yt()(rr,[["__scopeId","data-v-0f6bb088"]]);var sr=ir;const dr=["width","height"],ur=["d"];var br=Object(n["defineComponent"])({__name:"ElementCreateSelection",emits:["created"],setup(e,{emit:t}){const l=z(),{creatingElement:c}=Object(o["c"])(l),{ctrlOrShiftKeyActive:a}=Object(o["c"])(G()),r=Object(n["ref"])(),i=Object(n["ref"])(),s=Object(n["ref"])(),d=Object(n["ref"])({x:0,y:0});Object(n["onMounted"])(()=>{if(!s.value)return;const{x:e,y:t}=s.value.getBoundingClientRect();d.value={x:e,y:t}});const u=e=>{let n=!0;const o=e.pageX,s=e.pageY;r.value=[o,s],document.onmousemove=e=>{if(!c.value||!n)return;let t=e.pageX,l=e.pageY;if(a.value){const e=t-o,n=l-s,a=Math.abs(e),r=Math.abs(n);if("shape"===c.value.type){const c=n>0&&e<0||n<0&&e>0;a>r?l=c?s-e:s+e:t=c?o-n:o+n}else"line"===c.value.type&&(a>r?l=s:t=o)}i.value=[t,l]},document.onmouseup=e=>{var a,d;if(document.onmousemove=null,document.onmouseup=null,2===e.button)return void setTimeout(()=>l.setCreatingElement(null),0);n=!1;const u=e.pageX,b=e.pageY,O=30;if("line"===(null===(a=c.value)||void 0===a?void 0:a.type)&&(Math.abs(u-o)>=O||Math.abs(b-s)>=O))t("created",{start:r.value,end:i.value});else if("line"!==(null===(d=c.value)||void 0===d?void 0:d.type)&&Math.abs(u-o)>=O&&Math.abs(b-s)>=O)t("created",{start:r.value,end:i.value});else{const e=200,l=Math.min(u,o),c=Math.min(b,s),n=Math.max(u,o),a=Math.max(b,s),r=n-l>=O?n-l:e,i=a-c>=O?a-c:e;t("created",{start:[l,c],end:[l+r,c+i]})}}},b=Object(n["computed"])(()=>{if(!r.value||!i.value)return null;if(!c.value||"line"!==c.value.type)return null;const[e,t]=r.value,[l,n]=i.value,o=Math.min(e,l),a=Math.max(e,l),s=Math.min(t,n),d=Math.max(t,n),u=a-o>=24?a-o:24,b=d-s>=24?d-s:24,O=e===o?0:a-o,m=t===s?0:d-s,p=l===o?0:a-o,f=n===s?0:d-s,j=`M${O}, ${m} L${p}, ${f}`;return{svgWidth:u,svgHeight:b,startX:O,startY:m,endX:p,endY:f,path:j}}),O=Object(n["computed"])(()=>{if(!r.value||!i.value)return{};const[e,t]=r.value,[l,c]=i.value,n=Math.min(e,l),o=Math.max(e,l),a=Math.min(t,c),s=Math.max(t,c),u=o-n,b=s-a;return{left:n-d.value.x+"px",top:a-d.value.y+"px",width:u+"px",height:b+"px"}});return(e,t)=>{var l,o;return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"element-create-selection",ref_key:"selectionRef",ref:s,onMousedown:t[0]||(t[0]=Object(n["withModifiers"])(e=>u(e),["stop"])),onContextmenu:t[1]||(t[1]=Object(n["withModifiers"])(()=>{},["stop","prevent"]))},[r.value&&i.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:Object(n["normalizeClass"])(["selection",null===(l=Object(n["unref"])(c))||void 0===l?void 0:l.type]),style:Object(n["normalizeStyle"])(Object(n["unref"])(O))},["line"===(null===(o=Object(n["unref"])(c))||void 0===o?void 0:o.type)&&Object(n["unref"])(b)?(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",{key:0,overflow:"visible",width:Object(n["unref"])(b).svgWidth,height:Object(n["unref"])(b).svgHeight},[Object(n["createElementVNode"])("path",{d:Object(n["unref"])(b).path,stroke:"#d14424",fill:"none","stroke-width":"2"},null,8,ur)],8,dr)):Object(n["createCommentVNode"])("",!0)],6)):Object(n["createCommentVNode"])("",!0)],544)}}});l("7aed");const Or=Yt()(br,[["__scopeId","data-v-5a941f07"]]);var mr=Or,pr=(e,t)=>{const l=Object(n["computed"])(()=>[{direction:Q.LEFT_TOP,style:{}},{direction:Q.TOP,style:{left:e.value/2+"px"}},{direction:Q.RIGHT_TOP,style:{left:e.value+"px"}},{direction:Q.LEFT,style:{top:t.value/2+"px"}},{direction:Q.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}},{direction:Q.LEFT_BOTTOM,style:{top:t.value+"px"}},{direction:Q.BOTTOM,style:{left:e.value/2+"px",top:t.value+"px"}},{direction:Q.RIGHT_BOTTOM,style:{left:e.value+"px",top:t.value+"px"}}]),c=Object(n["computed"])(()=>[{direction:Q.LEFT,style:{top:t.value/2+"px"}},{direction:Q.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}}]),o=Object(n["computed"])(()=>[{direction:Q.TOP,style:{left:e.value/2+"px"}},{direction:Q.BOTTOM,style:{left:e.value/2+"px",top:t.value+"px"}}]),a=Object(n["computed"])(()=>[{type:K.T,style:{width:e.value+"px"}},{type:K.B,style:{top:t.value+"px",width:e.value+"px"}},{type:K.L,style:{height:t.value+"px"}},{type:K.R,style:{left:e.value+"px",height:t.value+"px"}}]);return{resizeHandlers:l,textElementResizeHandlers:c,verticalTextElementResizeHandlers:o,borderLines:a}},fr=Object(n["defineComponent"])({__name:"ResizeHandler",props:{type:{type:String,default:""},rotate:{type:Number,default:0}},setup(e){const t=e,l=Object(n["computed"])(()=>{const e="rotate-",l=t.rotate;return l>-22.5&&l<=22.5?e+0:l>22.5&&l<=67.5?e+45:l>67.5&&l<=112.5?e+90:l>112.5&&l<=157.5?e+135:l>157.5||l<=-157.5?e+0:l>-157.5&&l<=-112.5?e+45:l>-112.5&&l<=-67.5?e+90:l>-67.5&&l<=-22.5?e+135:e+0});return(t,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["resize-handler",Object(n["unref"])(l),e.type])},null,2))}});l("b510");const jr=Yt()(fr,[["__scopeId","data-v-881ee3f8"]]);var vr=jr,hr=Object(n["defineComponent"])({__name:"BorderLine",props:{type:{type:String,required:!0},isWide:{type:Boolean,default:!1}},setup(e){return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["border-line",e.type,{wide:e.isWide}])},null,2))}});l("2460");const yr=Yt()(hr,[["__scopeId","data-v-7170d1be"]]);var gr=yr,xr=Object(n["defineComponent"])({__name:"MultiSelectOperate",props:{elementList:{type:Array,required:!0},scaleMultiElement:{type:Function,required:!0}},setup(e){const t=e,{activeElementIdList:l,canvasScale:c}=Object(o["c"])(z()),a=Object(n["computed"])(()=>t.elementList.filter(e=>l.value.includes(e.id))),r=Object(n["ref"])({minX:0,maxX:0,minY:0,maxY:0}),i=Object(n["computed"])(()=>(r.value.maxX-r.value.minX)*c.value),s=Object(n["computed"])(()=>(r.value.maxY-r.value.minY)*c.value),{resizeHandlers:d,borderLines:u}=pr(i,s),b=()=>{const{minX:e,maxX:t,minY:l,maxY:c}=he(a.value);r.value={minX:e,maxX:t,minY:l,maxY:c}};Object(n["watchEffect"])(b);const O=Object(n["computed"])(()=>a.value.some(e=>!!("image"!==e.type&&"shape"!==e.type||e.rotate)));return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"multi-select-operate",style:Object(n["normalizeStyle"])({left:r.value.minX*Object(n["unref"])(c)+"px",top:r.value.minY*Object(n["unref"])(c)+"px"})},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(u),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(gr,{key:e.type,type:e.type,style:Object(n["normalizeStyle"])(e.style)},null,8,["type","style"]))),128)),Object(n["unref"])(O)?Object(n["createCommentVNode"])("",!0):(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],{key:0},Object(n["renderList"])(Object(n["unref"])(d),t=>(Object(n["openBlock"])(),Object(n["createBlock"])(vr,{key:t.direction,type:t.direction,style:Object(n["normalizeStyle"])(t.style),onMousedown:Object(n["withModifiers"])(l=>e.scaleMultiElement(l,r.value,t.direction),["stop"])},null,8,["type","style","onMousedown"]))),128))],4))}});l("a669");const kr=Yt()(xr,[["__scopeId","data-v-defbd922"]]);var Cr=kr;const Nr={class:"rotate-handler"};function Er(e,t){return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Nr)}l("1ebd");const wr={},Vr=Yt()(wr,[["render",Er],["__scopeId","data-v-b99d8dae"]]);var Ir=Vr;const Sr={inheritAttrs:!1};var Lr=Object(n["defineComponent"])({...Sr,__name:"ImageElementOperate",props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup(e){const t=e,{canvasScale:l,clipingImageElementId:c}=Object(o["c"])(z()),a=Object(n["computed"])(()=>c.value===t.elementInfo.id),r=Object(n["computed"])(()=>t.elementInfo.width*l.value),i=Object(n["computed"])(()=>t.elementInfo.height*l.value),{resizeHandlers:s,borderLines:d}=pr(r,i);return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["image-element-operate",{cliping:Object(n["unref"])(a)}])},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(d),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(gr,{class:"operate-border-line",key:e.type,type:e.type,style:Object(n["normalizeStyle"])(e.style)},null,8,["type","style"]))),128)),e.handlerVisible?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(s),t=>(Object(n["openBlock"])(),Object(n["createBlock"])(vr,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(n["normalizeStyle"])(t.style),onMousedown:Object(n["withModifiers"])(l=>e.scaleElement(l,e.elementInfo,t.direction),["stop"])},null,8,["type","rotate","style","onMousedown"]))),128)),Object(n["createVNode"])(Ir,{class:"operate-rotate-handler",style:Object(n["normalizeStyle"])({left:Object(n["unref"])(r)/2+"px"}),onMousedown:l[0]||(l[0]=Object(n["withModifiers"])(t=>e.rotateElement(e.elementInfo),["stop"]))},null,8,["style"])],64)):Object(n["createCommentVNode"])("",!0)],2))}});l("ae9f");const Br=Yt()(Lr,[["__scopeId","data-v-46b250c2"]]);var _r=Br;const Tr={class:"text-element-operate"},Mr={inheritAttrs:!1};var Dr=Object(n["defineComponent"])({...Mr,__name:"TextElementOperate",props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup(e){const t=e,{canvasScale:l}=Object(o["c"])(z()),c=Object(n["computed"])(()=>t.elementInfo.width*l.value),a=Object(n["computed"])(()=>t.elementInfo.height*l.value),{textElementResizeHandlers:r,verticalTextElementResizeHandlers:i,borderLines:s}=pr(c,a),d=Object(n["computed"])(()=>t.elementInfo.vertical?i.value:r.value);return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Tr,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(s),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(gr,{class:"operate-border-line",key:e.type,type:e.type,style:Object(n["normalizeStyle"])(e.style)},null,8,["type","style"]))),128)),e.handlerVisible?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(d),t=>(Object(n["openBlock"])(),Object(n["createBlock"])(vr,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(n["normalizeStyle"])(t.style),onMousedown:Object(n["withModifiers"])(l=>e.scaleElement(l,e.elementInfo,t.direction),["stop"])},null,8,["type","rotate","style","onMousedown"]))),128)),Object(n["createVNode"])(Ir,{class:"operate-rotate-handler",style:Object(n["normalizeStyle"])({left:Object(n["unref"])(c)/2+"px"}),onMousedown:l[0]||(l[0]=Object(n["withModifiers"])(t=>e.rotateElement(e.elementInfo),["stop"]))},null,8,["style"])],64)):Object(n["createCommentVNode"])("",!0)]))}});const zr=Dr;var Fr=zr;const Ar={class:"shape-element-operate"},$r={inheritAttrs:!1};var Rr=Object(n["defineComponent"])({...$r,__name:"ShapeElementOperate",props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0},moveShapeKeypoint:{type:Function,required:!0}},setup(e){const t=e,{canvasScale:l}=Object(o["c"])(z()),c=Object(n["computed"])(()=>t.elementInfo.width*l.value),a=Object(n["computed"])(()=>t.elementInfo.height*l.value),{resizeHandlers:r,borderLines:i}=pr(c,a),s=Object(n["computed"])(()=>{if(!t.elementInfo.pathFormula||!t.elementInfo.keypoint)return{};const e=Le[t.elementInfo.pathFormula];if("editable"in e){const c=e.getBaseSize(t.elementInfo.width,t.elementInfo.height)*t.elementInfo.keypoint;if("left"===e.relative)return{left:c*l.value+"px"};if("right"===e.relative)return{left:(t.elementInfo.width-c)*l.value+"px"};if("center"===e.relative)return{left:(t.elementInfo.width-c)/2*l.value+"px"};if("top"===e.relative)return{top:c*l.value+"px"};if("bottom"===e.relative)return{top:(t.elementInfo.height-c)*l.value+"px"}}return{}});return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ar,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(i),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(gr,{class:"operate-border-line",key:e.type,type:e.type,style:Object(n["normalizeStyle"])(e.style)},null,8,["type","style"]))),128)),e.handlerVisible?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(r),t=>(Object(n["openBlock"])(),Object(n["createBlock"])(vr,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(n["normalizeStyle"])(t.style),onMousedown:Object(n["withModifiers"])(l=>e.scaleElement(l,e.elementInfo,t.direction),["stop"])},null,8,["type","rotate","style","onMousedown"]))),128)),Object(n["createVNode"])(Ir,{class:"operate-rotate-handler",style:Object(n["normalizeStyle"])({left:Object(n["unref"])(c)/2+"px"}),onMousedown:l[0]||(l[0]=Object(n["withModifiers"])(t=>e.rotateElement(e.elementInfo),["stop"]))},null,8,["style"]),void 0!==e.elementInfo.keypoint?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:"operate-keypoint-handler",style:Object(n["normalizeStyle"])(Object(n["unref"])(s)),onMousedown:l[1]||(l[1]=Object(n["withModifiers"])(t=>e.moveShapeKeypoint(t,e.elementInfo),["stop"]))},null,36)):Object(n["createCommentVNode"])("",!0)],64)):Object(n["createCommentVNode"])("",!0)]))}});l("614e");const Pr=Yt()(Rr,[["__scopeId","data-v-fd38df18"]]);var Hr=Pr;const qr={class:"line-element-operate"},Ur=["width","height","stroke"],Gr={key:0},Xr=["x1","y1","x2","y2"],Yr=["x1","y1","x2","y2"],Zr=["x1","y1","x2","y2"],Wr=["x1","y1","x2","y2"],Jr={inheritAttrs:!1};var Kr=Object(n["defineComponent"])({...Jr,__name:"LineElementOperate",props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},dragLineElement:{type:Function,required:!0}},setup(e){const t=e,{canvasScale:l}=Object(o["c"])(z()),c=Object(n["computed"])(()=>Math.max(t.elementInfo.start[0],t.elementInfo.end[0])),a=Object(n["computed"])(()=>Math.max(t.elementInfo.start[1],t.elementInfo.end[1])),r=Object(n["computed"])(()=>{const e=[{handler:ee.START,style:{left:t.elementInfo.start[0]*l.value+"px",top:t.elementInfo.start[1]*l.value+"px"}},{handler:ee.END,style:{left:t.elementInfo.end[0]*l.value+"px",top:t.elementInfo.end[1]*l.value+"px"}}];if(t.elementInfo.curve||t.elementInfo.broken){const c=t.elementInfo.curve||t.elementInfo.broken;e.push({handler:ee.C,style:{left:c[0]*l.value+"px",top:c[1]*l.value+"px"}})}else if(t.elementInfo.cubic){const[c,n]=t.elementInfo.cubic;e.push({handler:ee.C1,style:{left:c[0]*l.value+"px",top:c[1]*l.value+"px"}}),e.push({handler:ee.C2,style:{left:n[0]*l.value+"px",top:n[1]*l.value+"px"}})}return e});return(t,o)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",qr,[e.handlerVisible?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(r),t=>(Object(n["openBlock"])(),Object(n["createBlock"])(vr,{class:"operate-resize-handler",key:t.handler,style:Object(n["normalizeStyle"])(t.style),onMousedown:Object(n["withModifiers"])(l=>e.dragLineElement(l,e.elementInfo,t.handler),["stop"])},null,8,["style","onMousedown"]))),128)),(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",{width:Object(n["unref"])(c)||1,height:Object(n["unref"])(a)||1,stroke:e.elementInfo.color,overflow:"visible",style:Object(n["normalizeStyle"])({transform:`scale(${Object(n["unref"])(l)})`})},[e.elementInfo.curve?(Object(n["openBlock"])(),Object(n["createElementBlock"])("g",Gr,[Object(n["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,Xr),Object(n["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,Yr)])):Object(n["createCommentVNode"])("",!0),e.elementInfo.cubic?(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],{key:1},Object(n["renderList"])(e.elementInfo.cubic,(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("g",{key:l},[0===l?(Object(n["openBlock"])(),Object(n["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,Zr)):Object(n["createCommentVNode"])("",!0),1===l?(Object(n["openBlock"])(),Object(n["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,Wr)):Object(n["createCommentVNode"])("",!0)]))),128)):Object(n["createCommentVNode"])("",!0)],12,Ur))],64)):Object(n["createCommentVNode"])("",!0)]))}});l("fac9");const Qr=Yt()(Kr,[["__scopeId","data-v-4659f395"]]);var ei=Qr;const ti={class:"table-element-operate"},li={inheritAttrs:!1};var ci=Object(n["defineComponent"])({...li,__name:"TableElementOperate",props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup(e){const t=e,{canvasScale:l}=Object(o["c"])(z()),c=Object(n["computed"])(()=>t.elementInfo.outline.width||1),a=Object(n["computed"])(()=>(t.elementInfo.width+c.value)*l.value),r=Object(n["computed"])(()=>t.elementInfo.height*l.value),{resizeHandlers:i,borderLines:s}=pr(a,r);return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ti,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(s),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(gr,{class:"operate-border-line",key:e.type,type:e.type,style:Object(n["normalizeStyle"])(e.style)},null,8,["type","style"]))),128)),e.handlerVisible?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(i),t=>(Object(n["openBlock"])(),Object(n["createBlock"])(vr,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(n["normalizeStyle"])(t.style),onMousedown:Object(n["withModifiers"])(l=>e.scaleElement(l,e.elementInfo,t.direction),["stop"])},null,8,["type","rotate","style","onMousedown"]))),128)),Object(n["createVNode"])(Ir,{class:"operate-rotate-handler",style:Object(n["normalizeStyle"])({left:Object(n["unref"])(a)/2+"px"}),onMousedown:l[0]||(l[0]=Object(n["withModifiers"])(t=>e.rotateElement(e.elementInfo),["stop"]))},null,8,["style"])],64)):Object(n["createCommentVNode"])("",!0)]))}});const ni=ci;var oi=ni;const ai={class:"common-element-operate"},ri={inheritAttrs:!1};var ii=Object(n["defineComponent"])({...ri,__name:"CommonElementOperate",props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup(e){const t=e,{canvasScale:l}=Object(o["c"])(z()),c=Object(n["computed"])(()=>t.elementInfo.width*l.value),a=Object(n["computed"])(()=>t.elementInfo.height*l.value),{resizeHandlers:r,borderLines:i}=pr(c,a),s=Object(n["computed"])(()=>["video","audio"].includes(t.elementInfo.type));return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ai,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(i),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(gr,{class:"operate-border-line",key:e.type,type:e.type,style:Object(n["normalizeStyle"])(e.style)},null,8,["type","style"]))),128)),e.handlerVisible?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(r),t=>(Object(n["openBlock"])(),Object(n["createBlock"])(vr,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(n["normalizeStyle"])(t.style),onMousedown:Object(n["withModifiers"])(l=>e.scaleElement(l,e.elementInfo,t.direction),["stop"])},null,8,["type","rotate","style","onMousedown"]))),128)),Object(n["unref"])(s)?Object(n["createCommentVNode"])("",!0):(Object(n["openBlock"])(),Object(n["createBlock"])(Ir,{key:0,class:"operate-rotate-handler",style:Object(n["normalizeStyle"])({left:Object(n["unref"])(c)/2+"px"}),onMousedown:l[0]||(l[0]=Object(n["withModifiers"])(t=>e.rotateElement(e.elementInfo),["stop"]))},null,8,["style"]))],64)):Object(n["createCommentVNode"])("",!0)]))}});const si=ii;var di=si,ui=(l("55ec"),l("a79d")),bi=()=>{const e=T(),{addHistorySnapshot:t}=Te(),l=(l,c)=>{const n=/^(https?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-.,@?^=%&:\/~+#]*[\w\-@?^=%&\/~+#])?$/;if("web"===c.type&&!n.test(c.target))return ne["a"].error("不是正确的网页链接地址"),!1;if("slide"===c.type&&!c.target)return ne["a"].error("请先选择链接目标"),!1;const o={link:c};return e.updateElement({id:l.id,props:o}),t(),!0},c=l=>{e.removeElementProps({id:l.id,propName:"link"}),t()};return{setLink:l,removeLink:c}};const Oi=["href"],mi={class:"btns"};var pi=Object(n["defineComponent"])({__name:"LinkHandler",props:{elementInfo:{type:Object,required:!0},link:{type:Object,required:!0},openLinkDialog:{type:Function,required:!0}},setup(e){const t=e,l=z(),c=T(),{canvasScale:a}=Object(o["c"])(l),{slides:r}=Object(o["c"])(c),{removeLink:i}=bi(),s=Object(n["computed"])(()=>"line"===t.elementInfo.type?0:t.elementInfo.height),d=e=>{const t=r.value.findIndex(t=>t.id===e);-1!==t&&(l.setActiveElementIdList([]),c.updateSlideIndex(t))};return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"link-handler",style:Object(n["normalizeStyle"])({top:Object(n["unref"])(s)*Object(n["unref"])(a)+10+"px"})},["web"===e.link.type?(Object(n["openBlock"])(),Object(n["createElementBlock"])("a",{key:0,class:"link",href:e.link.target,target:"_blank"},Object(n["toDisplayString"])(e.link.target),9,Oi)):(Object(n["openBlock"])(),Object(n["createElementBlock"])("a",{key:1,class:"link",onClick:l[0]||(l[0]=t=>d(e.link.target))},"幻灯片页面 "+Object(n["toDisplayString"])(e.link.target),1)),Object(n["createElementVNode"])("div",mi,[Object(n["createElementVNode"])("div",{class:"btn",onClick:l[1]||(l[1]=t=>e.openLinkDialog())},"更换"),Object(n["createVNode"])(Object(n["unref"])(ui["a"]),{type:"vertical"}),Object(n["createElementVNode"])("div",{class:"btn",onClick:l[2]||(l[2]=t=>Object(n["unref"])(i)(e.elementInfo))},"移除")])],4))}});l("c6c4");const fi=Yt()(pi,[["__scopeId","data-v-12300fd5"]]);var ji=fi;const vi={key:1,class:"animation-index"};var hi=Object(n["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},moveShapeKeypoint:{type:Function,required:!0},openLinkDialog:{type:Function,required:!0}},setup(e){const t=e,{canvasScale:l,toolbarState:c}=Object(o["c"])(z()),{formatedAnimations:a}=Object(o["c"])(T()),r=Object(n["computed"])(()=>{const e={[Se.IMAGE]:_r,[Se.TEXT]:Fr,[Se.SHAPE]:Hr,[Se.LINE]:ei,[Se.TABLE]:oi,[Se.CHART]:di,[Se.LATEX]:di,[Se.VIDEO]:di,[Se.AUDIO]:di};return e[t.elementInfo.type]||null}),i=Object(n["computed"])(()=>{const e=[];for(let l=0;le.elId);c.includes(t.elementInfo.id)&&e.push(l)}return e}),s=Object(n["computed"])(()=>"rotate"in t.elementInfo?t.elementInfo.rotate:0),d=Object(n["computed"])(()=>"height"in t.elementInfo?t.elementInfo.height:0);return(t,o)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["operate",{"multi-select":e.isMultiSelect&&!e.isActive}]),style:Object(n["normalizeStyle"])({top:e.elementInfo.top*Object(n["unref"])(l)+"px",left:e.elementInfo.left*Object(n["unref"])(l)+"px",transform:`rotate(${Object(n["unref"])(s)}deg)`,transformOrigin:`${e.elementInfo.width*Object(n["unref"])(l)/2}px ${Object(n["unref"])(d)*Object(n["unref"])(l)/2}px`})},[e.isSelected?(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["resolveDynamicComponent"])(Object(n["unref"])(r)),{key:0,elementInfo:e.elementInfo,handlerVisible:!e.elementInfo.lock&&(e.isActiveGroupElement||!e.isMultiSelect),rotateElement:e.rotateElement,scaleElement:e.scaleElement,dragLineElement:e.dragLineElement,moveShapeKeypoint:e.moveShapeKeypoint},null,8,["elementInfo","handlerVisible","rotateElement","scaleElement","dragLineElement","moveShapeKeypoint"])):Object(n["createCommentVNode"])("",!0),"elAnimation"===Object(n["unref"])(c)&&Object(n["unref"])(i).length?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",vi,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(i),e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"index-item",key:e},Object(n["toDisplayString"])(e+1),1))),128))])):Object(n["createCommentVNode"])("",!0),e.isActive&&e.elementInfo.link?(Object(n["openBlock"])(),Object(n["createBlock"])(ji,{key:2,elementInfo:e.elementInfo,link:e.elementInfo.link,openLinkDialog:e.openLinkDialog,onMousedown:o[0]||(o[0]=Object(n["withModifiers"])(()=>{},["stop"]))},null,8,["elementInfo","link","openLinkDialog"])):Object(n["createCommentVNode"])("",!0)],6))}});l("624e");const yi=Yt()(hi,[["__scopeId","data-v-26f9c48a"]]);var gi=yi,xi=(l("6ba6"),l("5efb")),ki=(l("5704"),l("b558")),Ci=(l("2ef0f"),l("9839"));const Ni=["src"];var Ei=Object(n["defineComponent"])({__name:"BaseImageElement",props:{elementInfo:{type:Object,required:!0}},setup(e){const t=e,l=Object(n["computed"])(()=>t.elementInfo.shadow),{shadowStyle:c}=Al(l),o=Object(n["computed"])(()=>t.elementInfo.flipH),a=Object(n["computed"])(()=>t.elementInfo.flipV),{flipStyle:r}=$l(o,a),i=Object(n["computed"])(()=>t.elementInfo.clip),{clipShape:s,imgPosition:d}=Pl(i),u=Object(n["computed"])(()=>t.elementInfo.filters),{filter:b}=Hl(u);return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"base-element-image",style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["createElementVNode"])("div",{class:"element-content",style:Object(n["normalizeStyle"])({filter:Object(n["unref"])(c)?`drop-shadow(${Object(n["unref"])(c)})`:"",transform:Object(n["unref"])(r)})},[Object(n["createVNode"])(sc,{elementInfo:e.elementInfo},null,8,["elementInfo"]),Object(n["createElementVNode"])("div",{class:"image-content",style:Object(n["normalizeStyle"])({clipPath:Object(n["unref"])(s).style})},[Object(n["createElementVNode"])("img",{src:e.elementInfo.src,draggable:!1,style:Object(n["normalizeStyle"])({top:Object(n["unref"])(d).top,left:Object(n["unref"])(d).left,width:Object(n["unref"])(d).width,height:Object(n["unref"])(d).height,filter:Object(n["unref"])(b)}),alt:""},null,12,Ni),e.elementInfo.colorMask?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:"color-mask",style:Object(n["normalizeStyle"])({backgroundColor:e.elementInfo.colorMask.color,opacity:e.elementInfo.colorMask.opacity})},null,4)):Object(n["createCommentVNode"])("",!0)],4)],4)],4)],4))}});l("4c0e");const wi=Yt()(Ei,[["__scopeId","data-v-c874e65e"]]);var Vi=wi;const Ii=["innerHTML"];var Si=Object(n["defineComponent"])({__name:"BaseTextElement",props:{elementInfo:{type:Object,required:!0}},setup(e){const t=e,l=Object(n["computed"])(()=>t.elementInfo.shadow),{shadowStyle:c}=Al(l),o=Object(n["computed"])(()=>({"--textIndent":(t.elementInfo.textIndent||0)+"px","--paragraphSpace":(void 0===t.elementInfo.paragraphSpace?5:t.elementInfo.paragraphSpace)+"px"}));return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"base-element-text",style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["createElementVNode"])("div",{class:"element-content",style:Object(n["normalizeStyle"])({width:e.elementInfo.vertical?"auto":e.elementInfo.width+"px",height:e.elementInfo.vertical?e.elementInfo.height+"px":"auto",backgroundColor:e.elementInfo.fill,opacity:e.elementInfo.opacity,textShadow:Object(n["unref"])(c),lineHeight:e.elementInfo.lineHeight,letterSpacing:(e.elementInfo.wordSpace||0)+"px",color:e.elementInfo.defaultColor,fontFamily:e.elementInfo.defaultFontName,writingMode:e.elementInfo.vertical?"vertical-rl":"horizontal-tb"})},[Object(n["createVNode"])(Sc,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(n["createElementVNode"])("div",{class:"text ProseMirror-static",style:Object(n["normalizeStyle"])(Object(n["unref"])(o)),innerHTML:e.elementInfo.content},null,12,Ii)],4)],4)],4))}});l("5140");const Li=Yt()(Si,[["__scopeId","data-v-18d84242"]]);var Bi=Li;const _i=["width","height"],Ti={key:0},Mi=["transform"],Di=["d","fill","stroke","stroke-width","stroke-dasharray"],zi=["innerHTML"];var Fi=Object(n["defineComponent"])({__name:"BaseShapeElement",props:{elementInfo:{type:Object,required:!0}},setup(e){const t=e,l=Object(n["computed"])(()=>t.elementInfo.outline),{outlineWidth:c,outlineStyle:o,outlineColor:a}=ql(l),r=Object(n["computed"])(()=>t.elementInfo.shadow),{shadowStyle:i}=Al(r),s=Object(n["computed"])(()=>t.elementInfo.flipH),d=Object(n["computed"])(()=>t.elementInfo.flipV),{flipStyle:u}=$l(s,d),b=Object(n["computed"])(()=>{const e={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"};return t.elementInfo.text?t.elementInfo.text:e});return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"base-element-shape",style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["createElementVNode"])("div",{class:"element-content",style:Object(n["normalizeStyle"])({opacity:e.elementInfo.opacity,filter:Object(n["unref"])(i)?`drop-shadow(${Object(n["unref"])(i)})`:"",transform:Object(n["unref"])(u),color:Object(n["unref"])(b).defaultColor,fontFamily:Object(n["unref"])(b).defaultFontName})},[(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height},[e.elementInfo.gradient?(Object(n["openBlock"])(),Object(n["createElementBlock"])("defs",Ti,[Object(n["createVNode"])(Un,{id:"base-gradient-"+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(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("g",{transform:`scale(${e.elementInfo.width/e.elementInfo.viewBox[0]}, ${e.elementInfo.height/e.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`},[Object(n["createElementVNode"])("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",d:e.elementInfo.path,fill:e.elementInfo.gradient?`url(#base-gradient-${e.elementInfo.id})`:e.elementInfo.fill,stroke:Object(n["unref"])(a),"stroke-width":Object(n["unref"])(c),"stroke-dasharray":"dashed"===Object(n["unref"])(o)?"10 5":"0 0"},null,8,Di)],8,Mi)],8,_i)),Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["shape-text",Object(n["unref"])(b).align])},[Object(n["createElementVNode"])("div",{class:"ProseMirror-static",innerHTML:Object(n["unref"])(b).content},null,8,zi)],2)],4)],4)],4))}});l("8683");const Ai=Yt()(Fi,[["__scopeId","data-v-073084bf"]]);var $i=Ai;const Ri=["width","height"],Pi=["d","stroke","stroke-width","stroke-dasharray","marker-start","marker-end"];var Hi=Object(n["defineComponent"])({__name:"BaseLineElement",props:{elementInfo:{type:Object,required:!0}},setup(e){const t=e,l=Object(n["computed"])(()=>t.elementInfo.shadow),{shadowStyle:c}=Al(l),o=Object(n["computed"])(()=>{const e=Math.abs(t.elementInfo.start[0]-t.elementInfo.end[0]);return e<24?24:e}),a=Object(n["computed"])(()=>{const e=Math.abs(t.elementInfo.start[1]-t.elementInfo.end[1]);return e<24?24:e}),r=Object(n["computed"])(()=>"dashed"===t.elementInfo.style?"10, 5":"0, 0"),i=Object(n["computed"])(()=>Ce(t.elementInfo));return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"base-element-line",style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px"})},[Object(n["createElementVNode"])("div",{class:"element-content",style:Object(n["normalizeStyle"])({filter:Object(n["unref"])(c)?`drop-shadow(${Object(n["unref"])(c)})`:""})},[(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",{overflow:"visible",width:Object(n["unref"])(o),height:Object(n["unref"])(a)},[Object(n["createElementVNode"])("defs",null,[e.elementInfo.points[0]?(Object(n["openBlock"])(),Object(n["createBlock"])(co,{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(n["createCommentVNode"])("",!0),e.elementInfo.points[1]?(Object(n["openBlock"])(),Object(n["createBlock"])(co,{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(n["createCommentVNode"])("",!0)]),Object(n["createElementVNode"])("path",{d:Object(n["unref"])(i),stroke:e.elementInfo.color,"stroke-width":e.elementInfo.width,"stroke-dasharray":Object(n["unref"])(r),fill:"none","marker-start":e.elementInfo.points[0]?`url(#${e.elementInfo.id}-${e.elementInfo.points[0]}-start)`:"","marker-end":e.elementInfo.points[1]?`url(#${e.elementInfo.id}-${e.elementInfo.points[1]}-end)`:""},null,8,Pi)],8,Ri))],4)],4))}});l("fbfe");const qi=Yt()(Hi,[["__scopeId","data-v-340cdee8"]]);var Ui=qi,Gi=Object(n["defineComponent"])({__name:"BaseChartElement",props:{elementInfo:{type:Object,required:!0}},setup(e){const t=Object(n["inject"])(vl)||Object(n["ref"])(1),l=Object(n["computed"])(()=>t.value<1),c=Object(n["computed"])(()=>l.value?1/t.value:1);return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"base-element-chart",style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["createElementVNode"])("div",{class:"element-content",style:Object(n["normalizeStyle"])({backgroundColor:e.elementInfo.fill})},[Object(n["createVNode"])(Sc,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(n["createVNode"])(mo,{width:e.elementInfo.width*Object(n["unref"])(c),height:e.elementInfo.height*Object(n["unref"])(c),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||"",style:Object(n["normalizeStyle"])({zoom:1/Object(n["unref"])(c)})},null,8,["width","height","type","data","options","themeColor","gridColor","legends","legend","style"])],4)],4)],4))}});l("9b4d");const Xi=Yt()(Gi,[["__scopeId","data-v-7d2e5c4e"]]);var Yi=Xi;const Zi=["width"],Wi=["rowspan","colspan"],Ji=["innerHTML"];var Ki=Object(n["defineComponent"])({__name:"StaticTable",props:{data:{type:Array,required:!0},width:{type:Number,required:!0},cellMinHeight:{type:Number,required:!0},colWidths:{type:Array,required:!0},outline:{type:Object,required:!0},theme:{type:Object},editable:{type:Boolean,default:!0}},setup(e){const t=e,l=Object(n["ref"])([]),c=Object(n["computed"])(()=>l.value.reduce((e,t)=>e+t));Object(n["watch"])([()=>t.colWidths,()=>t.width],()=>{l.value=t.colWidths.map(e=>e*t.width)},{immediate:!0});const o=Object(n["computed"])(()=>t.data),{hideCells:a}=yo(o),r=Object(n["computed"])(()=>t.theme),{subThemeColor:i}=go(r);return(t,o)=>{var s,d,u,b,O;return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"static-table",style:Object(n["normalizeStyle"])({width:Object(n["unref"])(c)+"px"})},[Object(n["createElementVNode"])("table",{class:Object(n["normalizeClass"])({theme:Object(n["unref"])(r),"row-header":null===(s=Object(n["unref"])(r))||void 0===s?void 0:s.rowHeader,"row-footer":null===(d=Object(n["unref"])(r))||void 0===d?void 0:d.rowFooter,"col-header":null===(u=Object(n["unref"])(r))||void 0===u?void 0:u.colHeader,"col-footer":null===(b=Object(n["unref"])(r))||void 0===b?void 0:b.colFooter}),style:Object(n["normalizeStyle"])(`--themeColor: ${null===(O=Object(n["unref"])(r))||void 0===O?void 0:O.color}; --subThemeColor1: ${Object(n["unref"])(i)[0]}; --subThemeColor2: ${Object(n["unref"])(i)[1]}`)},[Object(n["createElementVNode"])("colgroup",null,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(l.value,(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("col",{span:"1",key:t,width:e},null,8,Zi))),128))]),Object(n["createElementVNode"])("tbody",null,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.data,(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("tr",{key:l,style:Object(n["normalizeStyle"])({height:e.cellMinHeight+"px"})},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(t,(t,c)=>Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("td",{class:"cell",style:Object(n["normalizeStyle"])({borderStyle:e.outline.style,borderColor:e.outline.color,borderWidth:e.outline.width+"px",...Object(n["unref"])(vo)(t.style)}),key:t.id,rowspan:t.rowspan,colspan:t.colspan},[Object(n["createElementVNode"])("div",{class:"cell-text",style:Object(n["normalizeStyle"])({minHeight:e.cellMinHeight-4+"px"}),innerHTML:Object(n["unref"])(ho)(t.text)},null,12,Ji)],12,Wi)),[[n["vShow"],!Object(n["unref"])(a).includes(`${l}_${c}`)]])),128))],4))),128))])],6)],4)}}});l("ae59");const Qi=Yt()(Ki,[["__scopeId","data-v-40e73d4e"]]);var es=Qi;const ts={class:"element-content"};var ls=Object(n["defineComponent"])({__name:"BaseTableElement",props:{elementInfo:{type:Object,required:!0}},setup(e){return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"base-element-table",style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["createElementVNode"])("div",ts,[Object(n["createVNode"])(es,{data:e.elementInfo.data,width:e.elementInfo.width,cellMinHeight:e.elementInfo.cellMinHeight,colWidths:e.elementInfo.colWidths,outline:e.elementInfo.outline,theme:e.elementInfo.theme},null,8,["data","width","cellMinHeight","colWidths","outline","theme"])])],4)],4))}});l("eb6d");const cs=Yt()(ls,[["__scopeId","data-v-6b8ce0be"]]);var ns=cs;const os={class:"element-content"},as=["width","height","stroke","stroke-width"],rs=["transform"],is=["d"];var ss=Object(n["defineComponent"])({__name:"BaseLatexElement",props:{elementInfo:{type:Object,required:!0}},setup(e){return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"base-element-latex",style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["createElementVNode"])("div",os,[(Object(n["openBlock"])(),Object(n["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(n["createElementVNode"])("g",{transform:`scale(${e.elementInfo.width/e.elementInfo.viewBox[0]}, ${e.elementInfo.height/e.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`},[Object(n["createElementVNode"])("path",{d:e.elementInfo.path},null,8,is)],8,rs)],8,as))])],4)],4))}});l("58eb");const ds=Yt()(ss,[["__scopeId","data-v-9a47b5f4"]]);var us=ds,bs=Object(n["defineComponent"])({__name:"BaseVideoElement",props:{elementInfo:{type:Object,required:!0}},setup(e){return(t,l)=>{const c=Object(n["resolveComponent"])("IconPlayOne");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"base-element-video",style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["createElementVNode"])("div",{class:"element-content",style:Object(n["normalizeStyle"])({backgroundImage:`url(${e.elementInfo.poster})`})},[Object(n["createVNode"])(c,{class:"icon"})],4)],4)],4)}}});l("5a58");const Os=Yt()(bs,[["__scopeId","data-v-56b7f716"]]);var ms=Os;const ps={class:"element-content"};var fs=Object(n["defineComponent"])({__name:"BaseAudioElement",props:{elementInfo:{type:Object,required:!0}},setup(e){const t=e,l=Object(n["computed"])(()=>Math.min(t.elementInfo.width,t.elementInfo.height)+"px");return(t,c)=>{const o=Object(n["resolveComponent"])("IconVolumeNotice");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"base-element-audio",style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["createElementVNode"])("div",ps,[Object(n["createVNode"])(o,{class:"audio-icon",style:Object(n["normalizeStyle"])({fontSize:Object(n["unref"])(l),color:e.elementInfo.color})},null,8,["style"])])],4)],4)}}});l("0491");const js=Yt()(fs,[["__scopeId","data-v-5258e03b"]]);var vs=js,hs=Object(n["defineComponent"])({__name:"ThumbnailElement",props:{elementInfo:{type:Object,required:!0},elementIndex:{type:Number,required:!0}},setup(e){const t=e,l=Object(n["computed"])(()=>{const e={[Se.IMAGE]:Vi,[Se.TEXT]:Bi,[Se.SHAPE]:$i,[Se.LINE]:Ui,[Se.CHART]:Yi,[Se.TABLE]:ns,[Se.LATEX]:us,[Se.VIDEO]:ms,[Se.AUDIO]:vs};return e[t.elementInfo.type]||null});return(t,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["base-element","base-element-"+e.elementInfo.id]),style:Object(n["normalizeStyle"])({zIndex:e.elementIndex})},[(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["resolveDynamicComponent"])(Object(n["unref"])(l)),{elementInfo:e.elementInfo,target:"thumbnail"},null,8,["elementInfo"]))],6))}});const ys=hs;var gs=ys;const xs={key:1,class:"placeholder"};var ks=Object(n["defineComponent"])({__name:"index",props:{slide:{type:Object,required:!0},size:{type:Number,required:!0},visible:{type:Boolean,default:!0}},setup(e){const t=e,{viewportRatio:l}=Object(o["c"])(T()),c=Object(n["computed"])(()=>t.slide.background),{backgroundStyle:a}=Qa(c),r=Object(n["computed"])(()=>t.size/Ve);return Object(n["provide"])(vl,r),(t,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"thumbnail-slide",style:Object(n["normalizeStyle"])({width:e.size+"px",height:e.size*Object(n["unref"])(l)+"px"})},[e.visible?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:"elements",style:Object(n["normalizeStyle"])({width:Object(n["unref"])(Ve)+"px",height:Object(n["unref"])(Ve)*Object(n["unref"])(l)+"px",transform:`scale(${Object(n["unref"])(r)})`})},[Object(n["createElementVNode"])("div",{class:"background",style:Object(n["normalizeStyle"])(Object(n["unref"])(a))},null,4),(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.slide.elements,(e,t)=>(Object(n["openBlock"])(),Object(n["createBlock"])(gs,{key:e.id,elementInfo:e,elementIndex:t+1},null,8,["elementInfo","elementIndex"]))),128))],4)):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",xs,"加载中 ..."))],4))}});l("689b");const Cs=Yt()(ks,[["__scopeId","data-v-3f5170e8"]]);var Ns=Cs;const Es=e=>(Object(n["pushScopeId"])("data-v-469f9b66"),e=e(),Object(n["popScopeId"])(),e),ws={class:"link-dialog"},Vs={class:"tabs"},Is=["onClick"],Ss={key:2,class:"preview"},Ls=Es(()=>Object(n["createElementVNode"])("div",null,"预览:",-1)),Bs={class:"btns"};var _s=Object(n["defineComponent"])({__name:"LinkDialog",emits:["close"],setup(e,{emit:t}){var l;const c=Ci["a"].Option,{handleElement:a}=Object(o["c"])(z()),{slides:r,currentSlide:i}=Object(o["c"])(T()),s=Object(n["ref"])("web"),d=Object(n["ref"])(""),u=Object(n["ref"])("");u.value=(null===(l=r.value.find(e=>e.id!==i.value.id))||void 0===l?void 0:l.id)||"";const b=Object(n["computed"])(()=>u.value&&r.value.find(e=>e.id===u.value)||null),O=[{key:"web",label:"网页链接"},{key:"slide",label:"幻灯片页面"}],{setLink:m}=bi();Object(n["onMounted"])(()=>{var e;null!==(e=a.value)&&void 0!==e&&e.link&&("web"===a.value.link.type?d.value=a.value.link.target:"slide"===a.value.link.type&&(u.value=a.value.link.target),s.value=a.value.link.type)});const p=()=>{const e={type:s.value,target:"web"===s.value?d.value:u.value};if(a.value){const l=m(a.value,e);l?t("close"):d.value=""}};return(e,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ws,[Object(n["createElementVNode"])("div",Vs,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(O,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["tab",{active:s.value===e.key}]),key:e.key,onClick:t=>s.value=e.key},Object(n["toDisplayString"])(e.label),11,Is)),64))]),"web"===s.value?(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(ki["a"]),{key:0,class:"input",value:d.value,"onUpdate:value":l[0]||(l[0]=e=>d.value=e),placeholder:"请输入网页链接地址"},null,8,["value"])):Object(n["createCommentVNode"])("",!0),"slide"===s.value?(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(Ci["a"]),{key:1,class:"input",value:u.value,"onUpdate:value":l[1]||(l[1]=e=>u.value=e)},{default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(r),(e,t)=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(c),{key:e.id,value:e.id,disabled:Object(n["unref"])(i).id===e.id},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("幻灯片 "+Object(n["toDisplayString"])(t+1),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["value"])):Object(n["createCommentVNode"])("",!0),"slide"===s.value&&Object(n["unref"])(b)?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ss,[Ls,Object(n["createVNode"])(Ns,{class:"thumbnail",slide:Object(n["unref"])(b),size:490},null,8,["slide"])])):Object(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("div",Bs,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{onClick:l[2]||(l[2]=e=>t("close")),style:{"margin-right":"10px"}},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("取消")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{type:"primary",onClick:l[3]||(l[3]=e=>p())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("确认")]),_:1})])]))}});l("7b49");const Ts=Yt()(_s,[["__scopeId","data-v-469f9b66"]]);var Ms=Ts;const Ds={class:"operates"},zs={key:1,class:"drag-mask"};var Fs=Object(n["defineComponent"])({__name:"index",setup(e){const t=z(),{activeElementIdList:l,activeGroupElementId:c,handleElementId:a,hiddenElementIdList:r,editorAreaFocus:i,gridLineSize:s,showRuler:d,showSelectPanel:u,creatingElement:b,canvasScale:O,textFormatPainter:m}=Object(o["c"])(t),{currentSlide:p}=Object(o["c"])(T()),{ctrlKeyState:f,spaceKeyState:j}=Object(o["c"])(G()),v=Object(n["ref"])(),h=Object(n["ref"])([]),y=Object(n["ref"])(!1),g=()=>y.value=!0;Object(n["watch"])(a,()=>{t.setActiveGroupElementId("")});const x=Object(n["ref"])([]),k=()=>{x.value=p.value?JSON.parse(JSON.stringify(p.value.elements)):[]};Object(n["watchEffect"])(k);const C=Object(n["ref"])(),{dragViewport:N,viewportStyles:E}=gl(C);kl(C);const{mouseSelection:w,mouseSelectionVisible:V,mouseSelectionQuadrant:I,updateMouseSelection:L}=xl(x,v),{dragElement:B}=Tl(x,h,O),{dragLineElement:_}=Ml(x),{selectElement:M}=_l(x,B),{scaleElement:D,scaleMultiElement:F}=Bl(x,h,O),{rotateElement:A}=Nl(x,v),{moveShapeKeypoint:$}=Dl(x,O),{selectAllElement:R}=He(),{deleteAllElements:P}=$e(),{pasteElement:H}=Pe(),{enterScreeningFromStart:q}=Ze(),{updateSlideIndex:U}=Fe();Object(n["onMounted"])(()=>{l.value.length&&Object(n["nextTick"])(()=>t.setActiveElementIdList([]))});const X=e=>{l.value.length&&t.setActiveElementIdList([]),j.value?N(e):L(e),i.value||t.setEditorareaFocus(!0),m.value&&t.setTextFormatPainter(null),yl()};Object(n["onUnmounted"])(()=>{m.value&&t.setTextFormatPainter(null)});const Y=()=>{i.value&&t.setEditorareaFocus(!1)},{scaleCanvas:Z}=We(),W=Object(S["throttle"])(Z,100,{leading:!0,trailing:!1}),J=Object(S["throttle"])(U,300,{leading:!0,trailing:!1}),K=e=>{e.preventDefault(),f.value?e.deltaY>0?W("-"):e.deltaY<0&&W("+"):e.deltaY>0?J(te.DOWN):e.deltaY<0&&J(te.UP)},Q=()=>{t.setRulerState(!d.value)},{insertElementFromCreateSelection:ee}=zl(v),ce=()=>[{text:"粘贴",subText:"Ctrl + V",handler:H},{text:"全选",subText:"Ctrl + A",handler:R},{text:"标尺",subText:d.value?"√":"",handler:Q},{text:"网格线",handler:()=>t.setGridLineSize(s.value?0:50),children:[{text:"无",subText:0===s.value?"√":"",handler:()=>t.setGridLineSize(0)},{text:"小",subText:25===s.value?"√":"",handler:()=>t.setGridLineSize(25)},{text:"中",subText:50===s.value?"√":"",handler:()=>t.setGridLineSize(50)},{text:"大",subText:100===s.value?"√":"",handler:()=>t.setGridLineSize(100)}]},{text:u.value?"关闭选择面板":"打开选择面板",handler:()=>{u.value?t.setSelectPanelState(!1):t.setSelectPanelState(!0)}},{text:"重置当前页",handler:P},{divider:!0},{text:"幻灯片放映",subText:"F5",handler:q}];return Object(n["provide"])(vl,O),(e,t)=>{const o=Object(n["resolveDirective"])("contextmenu"),i=Object(n["resolveDirective"])("click-outside");return Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"canvas",ref_key:"canvasRef",ref:C,onWheel:t[3]||(t[3]=e=>K(e)),onMousedown:t[4]||(t[4]=e=>X(e))},[Object(n["unref"])(b)?(Object(n["openBlock"])(),Object(n["createBlock"])(mr,{key:0,onCreated:t[0]||(t[0]=e=>Object(n["unref"])(ee)(e))})):Object(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("div",{class:"viewport-wrapper",style:Object(n["normalizeStyle"])({width:Object(n["unref"])(E).width*Object(n["unref"])(O)+"px",height:Object(n["unref"])(E).height*Object(n["unref"])(O)+"px",left:Object(n["unref"])(E).left+"px",top:Object(n["unref"])(E).top+"px"})},[Object(n["createElementVNode"])("div",Ds,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(h.value,(e,t)=>(Object(n["openBlock"])(),Object(n["createBlock"])(or,{key:t,type:e.type,axis:e.axis,length:e.length,canvasScale:Object(n["unref"])(O)},null,8,["type","axis","length","canvasScale"]))),128)),Object(n["unref"])(l).length>1?(Object(n["openBlock"])(),Object(n["createBlock"])(Cr,{key:0,elementList:x.value,scaleMultiElement:Object(n["unref"])(F)},null,8,["elementList","scaleMultiElement"])):Object(n["createCommentVNode"])("",!0),(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(x.value,e=>Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createBlock"])(gi,{key:e.id,elementInfo:e,isSelected:Object(n["unref"])(l).includes(e.id),isActive:Object(n["unref"])(a)===e.id,isActiveGroupElement:Object(n["unref"])(c)===e.id,isMultiSelect:Object(n["unref"])(l).length>1,rotateElement:Object(n["unref"])(A),scaleElement:Object(n["unref"])(D),openLinkDialog:g,dragLineElement:Object(n["unref"])(_),moveShapeKeypoint:Object(n["unref"])($)},null,8,["elementInfo","isSelected","isActive","isActiveGroupElement","isMultiSelect","rotateElement","scaleElement","dragLineElement","moveShapeKeypoint"])),[[n["vShow"],!Object(n["unref"])(r).includes(e.id)]])),128)),Object(n["createVNode"])(lr)]),Object(n["createElementVNode"])("div",{class:"viewport",ref_key:"viewportRef",ref:v,style:Object(n["normalizeStyle"])({transform:`scale(${Object(n["unref"])(O)})`})},[Object(n["unref"])(V)?(Object(n["openBlock"])(),Object(n["createBlock"])(Xa,{key:0,top:Object(n["unref"])(w).top,left:Object(n["unref"])(w).left,width:Object(n["unref"])(w).width,height:Object(n["unref"])(w).height,quadrant:Object(n["unref"])(I)},null,8,["top","left","width","height","quadrant"])):Object(n["createCommentVNode"])("",!0),(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(x.value,(e,t)=>Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createBlock"])(qa,{key:e.id,elementInfo:e,elementIndex:t+1,isMultiSelect:Object(n["unref"])(l).length>1,selectElement:Object(n["unref"])(M),openLinkDialog:g},null,8,["elementInfo","elementIndex","isMultiSelect","selectElement"])),[[n["vShow"],!Object(n["unref"])(r).includes(e.id)]])),128))],4)],4),Object(n["unref"])(j)?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",zs)):Object(n["createCommentVNode"])("",!0),Object(n["unref"])(d)?(Object(n["openBlock"])(),Object(n["createBlock"])(sr,{key:2,viewportStyles:Object(n["unref"])(E)},null,8,["viewportStyles"])):Object(n["createCommentVNode"])("",!0),Object(n["createVNode"])(Object(n["unref"])(le["a"]),{visible:y.value,"onUpdate:visible":t[2]||(t[2]=e=>y.value=e),footer:null,centered:"",width:540,destroyOnClose:""},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Ms,{onClose:t[1]||(t[1]=e=>y.value=!1)})]),_:1},8,["visible"])],32)),[[o,ce],[i,Y]])}}});l("8f78");const As=Yt()(Fs,[["__scopeId","data-v-17dcff2c"]]);var $s=As,Rs=(l("5136"),l("681b"));const Ps={class:"shape-item-thumbnail"},Hs={class:"shape-content"},qs={overflow:"visible",width:"18",height:"18"},Us=["transform"],Gs=["fill","stroke","d"];var Xs=Object(n["defineComponent"])({__name:"ShapeItemThumbnail",props:{shape:{type:Object,required:!0}},setup(e){return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ps,[Object(n["createElementVNode"])("div",Hs,[(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",qs,[Object(n["createElementVNode"])("g",{transform:`scale(${18/e.shape.viewBox[0]}, ${18/e.shape.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`},[Object(n["createElementVNode"])("path",{class:Object(n["normalizeClass"])(["shape-path",{outlined:e.shape.outlined}]),"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:e.shape.outlined?"#999":"transparent",stroke:e.shape.outlined?"transparent":"#999","stroke-width":"2",d:e.shape.path},null,10,Gs)],8,Us)]))])]))}});l("6c23");const Ys=Yt()(Xs,[["__scopeId","data-v-09653543"]]);var Zs=Ys;const Ws={class:"shape-pool"},Js={class:"category-name"},Ks={class:"shape-list"};var Qs=Object(n["defineComponent"])({__name:"ShapePool",emits:["select"],setup(e,{emit:t}){const l=e=>{t("select",e)};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ws,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(Be),e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"category",key:e.type},[Object(n["createElementVNode"])("div",Js,Object(n["toDisplayString"])(e.type),1),Object(n["createElementVNode"])("div",Ks,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.children,(e,t)=>(Object(n["openBlock"])(),Object(n["createBlock"])(Zs,{class:"shape-item",key:t,shape:e,onClick:t=>l(e)},null,8,["shape","onClick"]))),128))])]))),128))]))}});l("85dd");const ed=Yt()(Qs,[["__scopeId","data-v-711a4fb1"]]);var td=ed;const ld=[{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}]}],cd={class:"line-pool"},nd={class:"category-name"},od={class:"line-list"},ad=["onClick"],rd={overflow:"visible",width:"20",height:"20"},id=["d","stroke-dasharray","marker-start","marker-end"];var sd=Object(n["defineComponent"])({__name:"LinePool",emits:["select"],setup(e,{emit:t}){const l=e=>{t("select",e)};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",cd,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(ld),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"category",key:e.type},[Object(n["createElementVNode"])("div",nd,Object(n["toDisplayString"])(e.type),1),Object(n["createElementVNode"])("div",od,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.children,(e,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"line-item",key:c},[Object(n["createElementVNode"])("div",{class:"line-content",onClick:t=>l(e)},[(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",rd,[Object(n["createElementVNode"])("defs",null,[e.points[0]?(Object(n["openBlock"])(),Object(n["createBlock"])(co,{key:0,class:"line-marker",id:`preset-line-${t}-${c}`,position:"start",type:e.points[0],color:"currentColor",baseSize:2},null,8,["id","type"])):Object(n["createCommentVNode"])("",!0),e.points[1]?(Object(n["openBlock"])(),Object(n["createBlock"])(co,{key:1,class:"line-marker",id:`preset-line-${t}-${c}`,position:"end",type:e.points[1],color:"currentColor",baseSize:2},null,8,["id","type"])):Object(n["createCommentVNode"])("",!0)]),Object(n["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(#preset-line-${t}-${c}-${e.points[0]}-start)`:"","marker-end":e.points[1]?`url(#preset-line-${t}-${c}-${e.points[1]}-end)`:""},null,8,id)]))],8,ad)]))),128))])]))),128))]))}});l("3836");const dd=Yt()(sd,[["__scopeId","data-v-bca68faa"]]);var ud=dd;const bd={class:"chart-pool"},Od=["onClick"];var md=Object(n["defineComponent"])({__name:"ChartPool",emits:["select"],setup(e,{emit:t}){const l=["bar","horizontalBar","line","area","scatter","pie","ring"],c=e=>{t("select",e)};return(e,t)=>{const o=Object(n["resolveComponent"])("IconChartLine"),a=Object(n["resolveComponent"])("IconChartHistogram"),r=Object(n["resolveComponent"])("IconChartPie"),i=Object(n["resolveComponent"])("IconChartHistogramOne"),s=Object(n["resolveComponent"])("IconChartLineArea"),d=Object(n["resolveComponent"])("IconChartRing"),u=Object(n["resolveComponent"])("IconChartScatter");return Object(n["openBlock"])(),Object(n["createElementBlock"])("ul",bd,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(l,(e,t)=>Object(n["createElementVNode"])("li",{class:"chart-item",key:t},[Object(n["createElementVNode"])("div",{class:"chart-content",onClick:t=>c(e)},["line"===e?(Object(n["openBlock"])(),Object(n["createBlock"])(o,{key:0,size:"24"})):"bar"===e?(Object(n["openBlock"])(),Object(n["createBlock"])(a,{key:1,size:"24"})):"pie"===e?(Object(n["openBlock"])(),Object(n["createBlock"])(r,{key:2,size:"24"})):"horizontalBar"===e?(Object(n["openBlock"])(),Object(n["createBlock"])(i,{key:3,size:"24"})):"area"===e?(Object(n["openBlock"])(),Object(n["createBlock"])(s,{key:4,size:"24"})):"ring"===e?(Object(n["openBlock"])(),Object(n["createBlock"])(d,{key:5,size:"24"})):"scatter"===e?(Object(n["openBlock"])(),Object(n["createBlock"])(u,{key:6,size:"24"})):Object(n["createCommentVNode"])("",!0)],8,Od)])),64))])}}});l("24bc");const pd=Yt()(md,[["__scopeId","data-v-3870b42e"]]);var fd=pd,jd=(l("922d"),l("09d9"));const vd=e=>(Object(n["pushScopeId"])("data-v-8fd9f34c"),e=e(),Object(n["popScopeId"])(),e),hd={class:"table-generator"},yd={class:"title"},gd={class:"lef"},xd=["onMouseenter"],kd={key:1,class:"custom"},Cd={class:"row"},Nd=vd(()=>Object(n["createElementVNode"])("div",{class:"label",style:{flex:"1"}},"行数:",-1)),Ed={class:"row"},wd=vd(()=>Object(n["createElementVNode"])("div",{class:"label",style:{flex:"1"}},"列数:",-1)),Vd={class:"btns"};var Id=Object(n["defineComponent"])({__name:"TableGenerator",emits:["insert","close"],setup(e,{emit:t}){const l=Object(n["ref"])([]),c=Object(n["ref"])(3),o=Object(n["ref"])(3),a=Object(n["ref"])(!1),r=()=>{if(!l.value.length)return;const[e,c]=l.value;t("insert",{row:e,col:c})},i=()=>c.value<1||c.value>20||o.value<1||o.value>20?ne["a"].warning("行数/列数必须在0~20之间!"):(t("insert",{row:c.value,col:o.value}),void(a.value=!1)),s=()=>{t("close"),a.value=!1};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",hd,[Object(n["createElementVNode"])("div",yd,[Object(n["createElementVNode"])("div",gd,"表格 "+Object(n["toDisplayString"])(l.value.length?`${l.value[0]} x ${l.value[1]}`:""),1),Object(n["createElementVNode"])("div",{class:"right",onClick:t[0]||(t[0]=e=>a.value=!a.value)},Object(n["toDisplayString"])(a.value?"返回":"自定义"),1)]),a.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",kd,[Object(n["createElementVNode"])("div",Cd,[Nd,Object(n["createVNode"])(Object(n["unref"])(jd["a"]),{min:1,max:20,value:c.value,"onUpdate:value":t[3]||(t[3]=e=>c.value=e),style:{flex:"3"}},null,8,["value"])]),Object(n["createElementVNode"])("div",Ed,[wd,Object(n["createVNode"])(Object(n["unref"])(jd["a"]),{min:1,max:20,value:o.value,"onUpdate:value":t[4]||(t[4]=e=>o.value=e),style:{flex:"3"}},null,8,["value"])]),Object(n["createElementVNode"])("div",Vd,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn",onClick:t[5]||(t[5]=e=>s())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("取消")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn",type:"primary",onClick:t[6]||(t[6]=e=>i())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("确认")]),_:1})])])):(Object(n["openBlock"])(),Object(n["createElementBlock"])("table",{key:0,onMouseleave:t[1]||(t[1]=e=>l.value=[]),onClick:t[2]||(t[2]=e=>r())},[Object(n["createElementVNode"])("tbody",null,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(10,e=>Object(n["createElementVNode"])("tr",{key:e},[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(10,t=>Object(n["createElementVNode"])("td",{onMouseenter:c=>l.value=[e,t],key:t},[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["cell",{active:l.value.length&&e<=l.value[0]&&t<=l.value[1]}])},null,2)],40,xd)),64))])),64))])],32))]))}});l("b615");const Sd=Yt()(Id,[["__scopeId","data-v-8fd9f34c"]]);var Ld=Sd;const Bd={class:"media-input"},_d={class:"tabs"},Td=["onClick"],Md={class:"btns"},Dd={class:"btns"};var zd=Object(n["defineComponent"])({__name:"MediaInput",emits:["insertVideo","insertAudio","close"],setup(e,{emit:t}){const l=Object(n["ref"])("video"),c=Object(n["ref"])("https://mazwai.com/videvo_files/video/free/2019-01/small_watermarked/181004_04_Dolphins-Whale_06_preview.webm"),o=Object(n["ref"])("https://freesound.org/data/previews/614/614107_11861866-lq.mp3"),a=[{key:"video",label:"视频"},{key:"audio",label:"音频"}],r=()=>{if(!c.value)return ne["a"].error("请先输入正确的视频地址");t("insertVideo",c.value)},i=()=>{if(!o.value)return ne["a"].error("请先输入正确的音频地址");t("insertAudio",o.value)};return(e,s)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Bd,[Object(n["createElementVNode"])("div",_d,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(a,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["tab",{active:l.value===e.key}]),key:e.key,onClick:t=>l.value=e.key},Object(n["toDisplayString"])(e.label),11,Td)),64))]),"video"===l.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[Object(n["createVNode"])(Object(n["unref"])(ki["a"]),{value:c.value,"onUpdate:value":s[0]||(s[0]=e=>c.value=e),placeholder:"请输入视频地址,e.g. https://xxx.mp4"},null,8,["value"]),Object(n["createElementVNode"])("div",Md,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{onClick:s[1]||(s[1]=e=>t("close")),style:{"margin-right":"10px"}},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("取消")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{type:"primary",onClick:s[2]||(s[2]=e=>r())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("确认")]),_:1})])],64)):Object(n["createCommentVNode"])("",!0),"audio"===l.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:1},[Object(n["createVNode"])(Object(n["unref"])(ki["a"]),{value:o.value,"onUpdate:value":s[3]||(s[3]=e=>o.value=e),placeholder:"请输入音频地址,e.g. https://xxx.mp3"},null,8,["value"]),Object(n["createElementVNode"])("div",Dd,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{onClick:s[4]||(s[4]=e=>t("close")),style:{"margin-right":"10px"}},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("取消")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{type:"primary",onClick:s[5]||(s[5]=e=>i())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("确认")]),_:1})])],64)):Object(n["createCommentVNode"])("",!0)]))}});l("e0b6");const Fd=Yt()(zd,[["__scopeId","data-v-4e5f883a"]]);var Ad=Fd,$d=l("e5ca");$d["a"].SUB_SUP_SCALE=.5;const Rd=[{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"}],Pd=[{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"}]}],Hd=["width","height"],qd=["transform"],Ud=["d"];var Gd=Object(n["defineComponent"])({__name:"FormulaContent",props:{latex:{type:String,required:!0},width:{type:Number,required:!0},height:{type:Number,required:!0}},setup(e){const t=e,l=Object(n["ref"])({x:0,y:0,w:0,h:0}),c=Object(n["ref"])("");Object(n["watch"])(()=>t.latex,()=>{const e=new $d["b"](t.latex);c.value=e.pathd({}),l.value=e.box({})},{immediate:!0});const o=Object(n["computed"])(()=>{const e=l.value.w+32,c=l.value.h+32;return e>t.width||c>t.height?e/c>t.width/t.height?t.width/e:t.height/c:1});return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("svg",{class:"formula-content",overflow:"visible",width:l.value.w+32,height:l.value.h+32,stroke:"#000","stroke-width":"1",fill:"none","stroke-linecap":"round","stroke-linejoin":"round"},[Object(n["createElementVNode"])("g",{transform:`scale(${Object(n["unref"])(o)}, ${Object(n["unref"])(o)}) translate(0,0) matrix(1,0,0,1,0,0)`,"transform-origin":"0 50%"},[Object(n["createElementVNode"])("path",{d:c.value},null,8,Ud)],8,qd)],8,Hd))}});l("e9df");const Xd=Yt()(Gd,[["__scopeId","data-v-1c41d9fe"]]);var Yd=Xd;const Zd=["innerHTML"];var Wd=Object(n["defineComponent"])({__name:"SymbolContent",props:{latex:{type:String,required:!0}},setup(e){const t=e,l=Object(n["computed"])(()=>{const e=new $d["b"](t.latex);return e.svg({SCALE_X:10,SCALE_Y:10})});return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"symbol-content",innerHTML:Object(n["unref"])(l)},null,8,Zd))}});const Jd=Wd;var Kd=Jd;const Qd={class:"latex-editor"},eu={class:"container"},tu={class:"left"},lu={class:"input-area"},cu={class:"preview"},nu={key:0,class:"placeholder"},ou={key:1,class:"preview-content"},au={class:"right"},ru={class:"tabs"},iu=["onClick"],su={class:"content"},du={key:0,class:"symbol"},uu={class:"symbol-tabs"},bu=["onClick"],Ou={class:"symbol-pool"},mu=["onClick"],pu={key:1,class:"formula"},fu={class:"formula-title"},ju=["onClick"],vu={class:"footer"};var hu=Object(n["defineComponent"])({__name:"index",props:{value:{type:String,default:""}},emits:["update","close"],setup(e,{emit:t}){const l=e,c=ki["a"].TextArea,o=[{label:"常用符号",value:"symbol"},{label:"预置公式",value:"formula"}],a=Rd,r=Pd,i=Object(n["ref"])(""),s=Object(n["ref"])("symbol"),d=Object(n["ref"])(),u=Object(n["ref"])(Pd[0].type),b=Object(n["computed"])(()=>{const e=Pd.find(e=>e.type===u.value);return(null===e||void 0===e?void 0:e.children)||[]});Object(n["onMounted"])(()=>{l.value&&(i.value=l.value)});const O=()=>{if(!i.value)return ne["a"].error("公式不能为空");const e=new $d["b"](i.value),l=e.pathd({}),c=e.box({});t("update",{latex:i.value,path:l,w:c.w+32,h:c.h+32})},m=e=>{d.value&&(d.value.focus(),document.execCommand("insertText",!1,e))};return(e,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Qd,[Object(n["createElementVNode"])("div",eu,[Object(n["createElementVNode"])("div",tu,[Object(n["createElementVNode"])("div",lu,[Object(n["createVNode"])(Object(n["unref"])(c),{value:i.value,"onUpdate:value":l[0]||(l[0]=e=>i.value=e),placeholder:"输入 LaTeX 公式",ref_key:"textAreaRef",ref:d},null,8,["value"])]),Object(n["createElementVNode"])("div",cu,[i.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ou,[Object(n["createVNode"])(Yd,{width:518,height:138,latex:i.value},null,8,["latex"])])):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",nu,"公式预览"))])]),Object(n["createElementVNode"])("div",au,[Object(n["createElementVNode"])("div",ru,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(o,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["tab",{active:e.value===s.value}]),key:e.value,onClick:t=>s.value=e.value},Object(n["toDisplayString"])(e.label),11,iu)),64))]),Object(n["createElementVNode"])("div",su,["symbol"===s.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",du,[Object(n["createElementVNode"])("div",uu,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(r),e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["symbol-tab",{active:u.value===e.type}]),key:e.type,onClick:t=>u.value=e.type},Object(n["toDisplayString"])(e.label),11,bu))),128))]),Object(n["createElementVNode"])("div",Ou,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(b),e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"symbol-item",key:e.latex,onClick:t=>m(e.latex)},[Object(n["createVNode"])(Kd,{latex:e.latex},null,8,["latex"])],8,mu))),128))])])):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",pu,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(a),e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"formula-item",key:e.label},[Object(n["createElementVNode"])("div",fu,Object(n["toDisplayString"])(e.label),1),Object(n["createElementVNode"])("div",{class:"formula-item-content",onClick:t=>i.value=e.latex},[Object(n["createVNode"])(Yd,{width:236,height:60,latex:e.latex},null,8,["latex"])],8,ju)]))),128))]))])])]),Object(n["createElementVNode"])("div",vu,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn",onClick:l[1]||(l[1]=e=>t("close"))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("取消")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn",type:"primary",onClick:l[2]||(l[2]=e=>O())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("确定")]),_:1})])]))}});l("c3b0");const yu=Yt()(hu,[["__scopeId","data-v-097b396c"]]);var gu=yu;const xu={class:"canvas-tool"},ku={class:"left-handler"},Cu={class:"add-element-handler"},Nu={class:"handler-item group-btn"},Eu={class:"right-handler"},wu={class:"viewport-size-preset"},Vu=["onClick"],Iu={class:"text"};var Su=Object(n["defineComponent"])({__name:"index",setup(e){const t=z(),{creatingElement:l}=Object(o["c"])(t),{canUndo:c,canRedo:a}=Object(o["c"])(U()),{redo:r,undo:i}=Te(),{scaleCanvas:s,setCanvasScalePercentage:d,resetCanvas:u,canvasScalePercentage:b}=We(),O=[200,150,100,80,50],m=Object(n["ref"])(!1),p=e=>{d(e),m.value=!1},{createImageElement:f,createChartElement:j,createTableElement:v,createLatexElement:h,createVideoElement:y,createAudioElement:g}=Me(),x=e=>{const t=e[0];t&&we(t).then(e=>f(e))},k=Object(n["ref"])(!1),C=Object(n["ref"])(!1),N=Object(n["ref"])(!1),E=Object(n["ref"])(!1),w=Object(n["ref"])(!1),V=Object(n["ref"])(!1),I=Object(n["ref"])(!1),S=(e=!1)=>{t.setCreatingElement({type:"text",vertical:e})},L=e=>{t.setCreatingElement({type:"shape",data:e}),k.value=!1},B=e=>{t.setCreatingElement({type:"line",data:e}),C.value=!1};return(e,t)=>{const o=Object(n["resolveComponent"])("IconBack"),d=Object(n["resolveComponent"])("IconNext"),f=Object(n["resolveComponent"])("IconFontSize"),_=Object(n["resolveComponent"])("IconTextRotationNone"),T=Object(n["resolveComponent"])("IconTextRotationDown"),M=Object(n["resolveComponent"])("IconDown"),D=Object(n["resolveComponent"])("IconPicture"),z=Object(n["resolveComponent"])("IconGraphicDesign"),F=Object(n["resolveComponent"])("IconConnection"),A=Object(n["resolveComponent"])("IconChartProportion"),$=Object(n["resolveComponent"])("IconInsertTable"),R=Object(n["resolveComponent"])("IconFormula"),P=Object(n["resolveComponent"])("IconVideoTwo"),H=Object(n["resolveComponent"])("IconMinus"),q=Object(n["resolveComponent"])("IconPlus"),U=Object(n["resolveComponent"])("IconFullScreen");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",xu,[Object(n["createElementVNode"])("div",ku,[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"撤销"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(o,{class:Object(n["normalizeClass"])(["handler-item",{disable:!Object(n["unref"])(c)}]),onClick:t[0]||(t[0]=e=>Object(n["unref"])(i)())},null,8,["class"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"重做"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(d,{class:Object(n["normalizeClass"])(["handler-item",{disable:!Object(n["unref"])(a)}]),onClick:t[1]||(t[1]=e=>Object(n["unref"])(r)())},null,8,["class"])]),_:1},8,["mouseEnterDelay"])]),Object(n["createElementVNode"])("div",Cu,[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入文字"},{default:Object(n["withCtx"])(()=>{var e;return[Object(n["createElementVNode"])("div",Nu,[Object(n["createVNode"])(f,{class:Object(n["normalizeClass"])(["icon",{active:"text"===(null===(e=Object(n["unref"])(l))||void 0===e?void 0:e.type)}]),onClick:t[2]||(t[2]=e=>S())},null,8,["class"]),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:I.value,"onUpdate:visible":t[5]||(t[5]=e=>I.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",{class:"text-type-item",onClick:t[3]||(t[3]=()=>{S(),I.value=!1})},[Object(n["createVNode"])(_),Object(n["createTextVNode"])(" 横向文本框")]),Object(n["createElementVNode"])("div",{class:"text-type-item",onClick:t[4]||(t[4]=()=>{S(!0),I.value=!1})},[Object(n["createVNode"])(T),Object(n["createTextVNode"])(" 竖向文本框")])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(M,{class:"arrow"})]),_:1},8,["visible"])])]}),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(el,{onChange:t[6]||(t[6]=e=>x(e))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入图片"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(D,{class:"handler-item"})]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:k.value,"onUpdate:visible":t[8]||(t[8]=e=>k.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(td,{onSelect:t[7]||(t[7]=e=>L(e))})]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入形状"},{default:Object(n["withCtx"])(()=>{var e;return[Object(n["createVNode"])(z,{class:Object(n["normalizeClass"])(["handler-item",{active:"shape"===(null===(e=Object(n["unref"])(l))||void 0===e?void 0:e.type)}])},null,8,["class"])]}),_:1},8,["mouseEnterDelay"])]),_:1},8,["visible"]),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:C.value,"onUpdate:visible":t[10]||(t[10]=e=>C.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ud,{onSelect:t[9]||(t[9]=e=>B(e))})]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入线条"},{default:Object(n["withCtx"])(()=>{var e;return[Object(n["createVNode"])(F,{class:Object(n["normalizeClass"])(["handler-item",{active:"line"===(null===(e=Object(n["unref"])(l))||void 0===e?void 0:e.type)}])},null,8,["class"])]}),_:1},8,["mouseEnterDelay"])]),_:1},8,["visible"]),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:N.value,"onUpdate:visible":t[12]||(t[12]=e=>N.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(fd,{onSelect:t[11]||(t[11]=e=>{Object(n["unref"])(j)(e),N.value=!1})})]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入图表"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(A,{class:"handler-item"})]),_:1},8,["mouseEnterDelay"])]),_:1},8,["visible"]),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:E.value,"onUpdate:visible":t[15]||(t[15]=e=>E.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Ld,{onClose:t[13]||(t[13]=e=>E.value=!1),onInsert:t[14]||(t[14]=({row:e,col:t})=>{Object(n["unref"])(v)(e,t),E.value=!1})})]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入表格"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])($,{class:"handler-item"})]),_:1},8,["mouseEnterDelay"])]),_:1},8,["visible"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入公式"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(R,{class:"handler-item",onClick:t[16]||(t[16]=e=>V.value=!0)})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:w.value,"onUpdate:visible":t[20]||(t[20]=e=>w.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Ad,{onClose:t[17]||(t[17]=e=>w.value=!1),onInsertVideo:t[18]||(t[18]=e=>{Object(n["unref"])(y)(e),w.value=!1}),onInsertAudio:t[19]||(t[19]=e=>{Object(n["unref"])(g)(e),w.value=!1})})]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入音视频"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(P,{class:"handler-item"})]),_:1},8,["mouseEnterDelay"])]),_:1},8,["visible"])]),Object(n["createElementVNode"])("div",Eu,[Object(n["createVNode"])(H,{class:"handler-item viewport-size",onClick:t[21]||(t[21]=e=>Object(n["unref"])(s)("-"))}),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:m.value,"onUpdate:visible":t[22]||(t[22]=e=>m.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",wu,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(O,e=>Object(n["createElementVNode"])("div",{class:"preset-item",key:e,onClick:t=>p(e)},Object(n["toDisplayString"])(e)+"%",9,Vu)),64))])]),default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("span",Iu,Object(n["toDisplayString"])(Object(n["unref"])(b)),1)]),_:1},8,["visible"]),Object(n["createVNode"])(q,{class:"handler-item viewport-size",onClick:t[23]||(t[23]=e=>Object(n["unref"])(s)("+"))}),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"适应屏幕"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(U,{class:"handler-item viewport-size-adaptation",onClick:t[24]||(t[24]=e=>Object(n["unref"])(u)())})]),_:1},8,["mouseEnterDelay"])]),Object(n["createVNode"])(Object(n["unref"])(le["a"]),{visible:V.value,"onUpdate:visible":t[27]||(t[27]=e=>V.value=e),footer:null,centered:"",width:880,destroyOnClose:""},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(gu,{onClose:t[25]||(t[25]=e=>V.value=!1),onUpdate:t[26]||(t[26]=e=>{Object(n["unref"])(h)(e),V.value=!1})})]),_:1},8,["visible"])])}}});l("b514");const Lu=Yt()(Su,[["__scopeId","data-v-7ba4b56c"]]);var Bu=Lu,_u=()=>{const{slides:e}=Object(o["c"])(T()),t=Object(n["ref"])(null),l=Object(n["ref"])(50),c=()=>{e.value.length>l.value?t.value=setTimeout(()=>{l.value=l.value+20,c()},600):l.value=9999};return Object(n["onMounted"])(c),Object(n["onUnmounted"])(()=>{t.value&&clearTimeout(t.value)}),{slidesLoadLimit:l}},Tu=l("b76a"),Mu=l.n(Tu);const Du={class:"layout-pool"},zu=["onClick"];var Fu=Object(n["defineComponent"])({__name:"LayoutPool",emits:["select"],setup(e,{emit:t}){const{layouts:l}=Object(o["c"])(T()),c=e=>{t("select",e)};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Du,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(l),e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"layout-item",key:e.id,onClick:t=>c(e)},[Object(n["createVNode"])(Ns,{class:"thumbnail",slide:e,size:180},null,8,["slide"])],8,zu))),128))]))}});l("3328");const Au=Yt()(Fu,[["__scopeId","data-v-cc6b7dca"]]);var $u=Au;const Ru={class:"add-slide"},Pu={class:"select-btn"},Hu=["onMousedown"],qu={class:"page-number"};var Uu=Object(n["defineComponent"])({__name:"index",setup(e){const t=z(),l=T(),c=G(),{selectedSlidesIndex:a,thumbnailsFocus:r}=Object(o["c"])(t),{slides:i,slideIndex:s}=Object(o["c"])(l),{ctrlKeyState:d,shiftKeyState:u}=Object(o["c"])(c),{slidesLoadLimit:b}=_u(),O=Object(n["computed"])(()=>[...a.value,s.value]),m=Object(n["ref"])(!1),{copySlide:p,pasteSlide:f,createSlide:j,createSlideByTemplate:v,copyAndPasteSlide:h,deleteSlide:y,cutSlide:g,selectAllSlide:x,sortSlides:k}=Fe(),C=e=>{t.setActiveElementIdList([]),s.value!==e&&l.updateSlideIndex(e)},N=(e,l)=>{const c=O.value.length>1;if(!c||!O.value.includes(l)||0===e.button)if(d.value)if(s.value===l){if(!c)return;const e=O.value.filter(e=>e!==l);t.updateSelectedSlidesIndex(e),C(O.value[0])}else if(O.value.includes(l)){const e=O.value.filter(e=>e!==l);t.updateSelectedSlidesIndex(e)}else{const e=[...O.value,l];t.updateSelectedSlidesIndex(e),C(l)}else if(u.value){if(s.value===l&&!c)return;let e=Math.min(...O.value),n=l;l{r.value!==e&&(t.setThumbnailsFocus(e),e||t.updateSelectedSlidesIndex([]))},w=e=>{const{newIndex:t,oldIndex:l}=e;k(t,l)},{enterScreening:V,enterScreeningFromStart:I}=Ze(),S=()=>[{text:"粘贴",subText:"Ctrl + V",handler:f},{text:"全选",subText:"Ctrl + A",handler:x},{text:"新建页面",subText:"Enter",handler:j},{text:"幻灯片放映",subText:"F5",handler:I}],L=()=>[{text:"剪切",subText:"Ctrl + X",handler:g},{text:"复制",subText:"Ctrl + C",handler:p},{text:"粘贴",subText:"Ctrl + V",handler:f},{text:"全选",subText:"Ctrl + A",handler:x},{divider:!0},{text:"新建页面",subText:"Enter",handler:j},{text:"复制页面",subText:"Ctrl + D",handler:h},{text:"删除页面",subText:"Delete",handler:()=>y()},{divider:!0},{text:"从当前放映",subText:"Shift + F5",handler:V}];return(e,t)=>{const l=Object(n["resolveComponent"])("IconPlus"),c=Object(n["resolveComponent"])("IconDown"),o=Object(n["resolveDirective"])("contextmenu"),a=Object(n["resolveDirective"])("click-outside");return Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"thumbnails",onMousedown:t[3]||(t[3]=()=>E(!0))},[Object(n["createElementVNode"])("div",Ru,[Object(n["createElementVNode"])("div",{class:"btn",onClick:t[0]||(t[0]=e=>Object(n["unref"])(j)())},[Object(n["createVNode"])(l,{class:"icon"}),Object(n["createTextVNode"])("添加幻灯片")]),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",placement:"bottomLeft",visible:m.value,"onUpdate:visible":t[2]||(t[2]=e=>m.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])($u,{onSelect:t[1]||(t[1]=e=>{Object(n["unref"])(v)(e),m.value=!1})})]),default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",Pu,[Object(n["createVNode"])(c)])]),_:1},8,["visible"])]),Object(n["createVNode"])(Object(n["unref"])(Mu.a),{class:"thumbnail-list",modelValue:Object(n["unref"])(i),animation:300,scroll:!0,scrollSensitivity:50,setData:null,onEnd:w,itemKey:"id"},{item:Object(n["withCtx"])(({element:e,index:t})=>[Object(n["withDirectives"])((Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["thumbnail-item",{active:Object(n["unref"])(s)===t,selected:Object(n["unref"])(O).includes(t)}]),onMousedown:e=>N(e,t)},[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["label",{"offset-left":t>=99}])},Object(n["toDisplayString"])(Object(n["unref"])(Y)(t+1,2)),3),Object(n["createVNode"])(Ns,{class:"thumbnail",slide:e,size:120,visible:tE(!1)],[o,S]])}}});l("dc4aa");const Gu=Yt()(Uu,[["__scopeId","data-v-61d61c80"]]);var Xu=Gu,Yu=(l("5783"),l("59a5")),Zu=()=>{const e=z(),{richTextAttrs:t,textFormatPainter:l}=Object(o["c"])(e),c=()=>{l.value?e.setTextFormatPainter(null):e.setTextFormatPainter({bold:t.value.bold,em:t.value.em,underline:t.value.underline,strikethrough:t.value.strikethrough,color:t.value.color,backcolor:t.value.backcolor,fontname:t.value.fontname,fontsize:t.value.fontsize,align:t.value.align})};return{toggleFormatPainter:c}},Wu=(l("438c"),l("fbdf"));const Ju=e=>(Object(n["pushScopeId"])("data-v-54aad0f0"),e=e(),Object(n["popScopeId"])(),e),Ku={class:"element-opacity"},Qu={class:"row"},eb=Ju(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"不透明度:",-1));var tb=Object(n["defineComponent"])({__name:"ElementOpacity",setup(e){const t=T(),{handleElement:l}=Object(o["c"])(z()),c=Object(n["ref"])(1);Object(n["watch"])(l,()=>{l.value&&(c.value="opacity"in l.value&&void 0!==l.value.opacity?l.value.opacity:1)},{deep:!0,immediate:!0});const{addHistorySnapshot:a}=Te(),r=e=>{if(!l.value)return;const c={opacity:e};t.updateElement({id:l.value.id,props:c}),a()};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ku,[Object(n["createElementVNode"])("div",Qu,[eb,Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"slider",min:0,max:1,step:.1,value:c.value,onChange:t[0]||(t[0]=e=>r(e))},null,8,["step","value"])])]))}});l("fb4b");const lb=Yt()(tb,[["__scopeId","data-v-54aad0f0"]]);var cb=lb,nb=(l("fbd6"),l("160c"));const ob={class:"color-block"};var ab=Object(n["defineComponent"])({__name:"ColorButton",props:{color:{type:String,required:!0}},setup(e){return(t,l)=>{const c=Object(n["resolveComponent"])("IconPlatte");return Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(xi["a"]),{class:"color-btn"},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",ob,[Object(n["createElementVNode"])("div",{class:"content",style:Object(n["normalizeStyle"])({backgroundColor:e.color})},null,4)]),Object(n["createVNode"])(c,{class:"color-btn-icon"})]),_:1})}}});l("dc8c");const rb=Yt()(ab,[["__scopeId","data-v-3b4a02d8"]]);var ib=rb,sb=Object(n["defineComponent"])({__name:"Checkboard",props:{size:{type:Number,default:8},white:{type:String,default:"#fff"},grey:{type:String,default:"#e6e6e6"}},setup(e){const t=e,l={},c=(e,t,l)=>{const c=document.createElement("canvas");c.width=c.height=2*l;const n=c.getContext("2d");return n?(n.fillStyle=e,n.fillRect(0,0,c.width,c.height),n.fillStyle=t,n.fillRect(0,0,l,l),n.translate(l,l),n.fillRect(0,0,l,l),c.toDataURL()):null},o=(e,t,n)=>{const o=e+","+t+","+n;if(l[o])return l[o];const a=c(e,t,n);return l[o]=a,a},a=Object(n["computed"])(()=>{const e=o(t.white,t.grey,t.size);return{backgroundImage:`url(${e})`}});return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"checkerboard",style:Object(n["normalizeStyle"])(Object(n["unref"])(a))},null,4))}});l("a8d7");const db=Yt()(sb,[["__scopeId","data-v-7494636c"]]);var ub=db;const bb=e=>(Object(n["pushScopeId"])("data-v-246b525c"),e=e(),Object(n["popScopeId"])(),e),Ob={class:"alpha"},mb={class:"alpha-checkboard-wrap"},pb=bb(()=>Object(n["createElementVNode"])("div",{class:"alpha-picker"},null,-1)),fb=[pb];var jb=Object(n["defineComponent"])({__name:"Alpha",props:{value:{type:Object,required:!0}},emits:["colorChange"],setup(e,{emit:t}){const l=e,c=Object(n["computed"])(()=>l.value),o=Object(n["computed"])(()=>{const e=[c.value.r,c.value.g,c.value.b].join(",");return`linear-gradient(to right, rgba(${e}, 0) 0%, rgba(${e}, 1) 100%)`}),a=Object(n["ref"])(),r=e=>{if(e.preventDefault(),!a.value)return;const l=a.value.clientWidth,n=a.value.getBoundingClientRect().left+window.pageXOffset,o=e.pageX-n;let r;r=o<0?0:o>l?1:Math.round(100*o/l)/100,c.value.a!==r&&t("colorChange",{r:c.value.r,g:c.value.g,b:c.value.b,a:r})},i=()=>{window.removeEventListener("mousemove",r),window.removeEventListener("mouseup",i)},s=e=>{r(e),window.addEventListener("mousemove",r),window.addEventListener("mouseup",i)};return Object(n["onUnmounted"])(i),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ob,[Object(n["createElementVNode"])("div",mb,[Object(n["createVNode"])(ub)]),Object(n["createElementVNode"])("div",{class:"alpha-gradient",style:Object(n["normalizeStyle"])({background:Object(n["unref"])(o)})},null,4),Object(n["createElementVNode"])("div",{class:"alpha-container",ref_key:"alphaRef",ref:a,onMousedown:t[0]||(t[0]=e=>s(e))},[Object(n["createElementVNode"])("div",{class:"alpha-pointer",style:Object(n["normalizeStyle"])({left:100*Object(n["unref"])(c).a+"%"})},fb,4)],544)]))}});l("e83e");const vb=Yt()(jb,[["__scopeId","data-v-246b525c"]]);var hb=vb;const yb=e=>(Object(n["pushScopeId"])("data-v-60c3cca1"),e=e(),Object(n["popScopeId"])(),e),gb={class:"hue"},xb=yb(()=>Object(n["createElementVNode"])("div",{class:"hue-picker"},null,-1)),kb=[xb];var Cb=Object(n["defineComponent"])({__name:"Hue",props:{value:{type:Object,required:!0},hue:{type:Number,required:!0}},emits:["colorChange"],setup(e,{emit:t}){const l=e,c=Object(n["ref"])(0),o=Object(n["ref"])(""),a=Object(n["computed"])(()=>{const e=I()(l.value).toHsl();return-1!==l.hue&&(e.h=l.hue),e}),r=Object(n["computed"])(()=>0===a.value.h&&"right"===o.value?"100%":100*a.value.h/360+"%");Object(n["watch"])(()=>l.value,()=>{const e=I()(l.value).toHsl(),t=0===e.s?l.hue:e.h;0!==t&&t-c.value>0&&(o.value="right"),0!==t&&t-c.value<0&&(o.value="left"),c.value=t});const i=Object(n["ref"])(),s=e=>{if(e.preventDefault(),!i.value)return;const c=i.value.clientWidth,n=i.value.getBoundingClientRect().left+window.pageXOffset,o=e.pageX-n;let r,s;o<0?r=0:o>c?r=360:(s=100*o/c,r=360*s/100),-1!==l.hue&&a.value.h===r||t("colorChange",{h:r,l:a.value.l,s:a.value.s,a:a.value.a})},d=()=>{window.removeEventListener("mousemove",s),window.removeEventListener("mouseup",d)},u=e=>{s(e),window.addEventListener("mousemove",s),window.addEventListener("mouseup",d)};return Object(n["onUnmounted"])(d),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",gb,[Object(n["createElementVNode"])("div",{class:"hue-container",ref_key:"hueRef",ref:i,onMousedown:t[0]||(t[0]=e=>u(e))},[Object(n["createElementVNode"])("div",{class:"hue-pointer",style:Object(n["normalizeStyle"])({left:Object(n["unref"])(r)})},kb,4)],544)]))}});l("179a");const Nb=Yt()(Cb,[["__scopeId","data-v-60c3cca1"]]);var Eb=Nb;const wb=e=>(Object(n["pushScopeId"])("data-v-d230faf4"),e=e(),Object(n["popScopeId"])(),e),Vb=wb(()=>Object(n["createElementVNode"])("div",{class:"saturation-white"},null,-1)),Ib=wb(()=>Object(n["createElementVNode"])("div",{class:"saturation-black"},null,-1)),Sb=wb(()=>Object(n["createElementVNode"])("div",{class:"saturation-circle"},null,-1)),Lb=[Sb];var Bb=Object(n["defineComponent"])({__name:"Saturation",props:{value:{type:Object,required:!0},hue:{type:Number,required:!0}},emits:["colorChange"],setup(e,{emit:t}){const l=e,c=Object(n["computed"])(()=>{const e=I()(l.value).toHsv();return-1!==l.hue&&(e.h=l.hue),e}),o=Object(n["computed"])(()=>`hsl(${c.value.h}, 100%, 50%)`),a=Object(n["computed"])(()=>-100*c.value.v+1+100+"%"),r=Object(n["computed"])(()=>100*c.value.s+"%"),i=Object(S["throttle"])((function(e){t("colorChange",e)}),20,{leading:!0,trailing:!1}),s=Object(n["ref"])(),d=e=>{if(e.preventDefault(),!s.value)return;const t=s.value.clientWidth,l=s.value.clientHeight,n=s.value.getBoundingClientRect().left+window.pageXOffset,o=s.value.getBoundingClientRect().top+window.pageYOffset,a=Object(S["clamp"])(e.pageX-n,0,t),r=Object(S["clamp"])(e.pageY-o,0,l),d=a/t,u=Object(S["clamp"])(-r/l+1,0,1);i({h:c.value.h,s:d,v:u,a:c.value.a})},u=()=>{window.removeEventListener("mousemove",d),window.removeEventListener("mouseup",u)},b=e=>{d(e),window.addEventListener("mousemove",d),window.addEventListener("mouseup",u)};return Object(n["onUnmounted"])(u),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"saturation",ref_key:"saturationRef",ref:s,style:Object(n["normalizeStyle"])({background:Object(n["unref"])(o)}),onMousedown:t[0]||(t[0]=e=>b(e))},[Vb,Ib,Object(n["createElementVNode"])("div",{class:"saturation-pointer",style:Object(n["normalizeStyle"])({top:Object(n["unref"])(a),left:Object(n["unref"])(r)})},Lb,4)],36))}});l("0516");const _b=Yt()(Bb,[["__scopeId","data-v-d230faf4"]]);var Tb=_b;const Mb={class:"editable-input"},Db=["value"];var zb=Object(n["defineComponent"])({__name:"EditableInput",props:{value:{type:Object,required:!0}},emits:["colorChange"],setup(e,{emit:t}){const l=e,c=Object(n["computed"])(()=>{let e="";return e=l.value.a<1?I()(l.value).toHex8String().toUpperCase():I()(l.value).toHexString().toUpperCase(),e.replace("#","")}),o=e=>{const l=e.target.value;l.length>=6&&t("colorChange",I()(l).toRgb())};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Mb,[Object(n["createElementVNode"])("input",{class:"input-content",value:Object(n["unref"])(c),onInput:t[0]||(t[0]=e=>o(e))},null,40,Db)]))}});l("a9b0");const Fb=Yt()(zb,[["__scopeId","data-v-2f428dde"]]);var Ab=Fb;const $b={class:"color-picker"},Rb={class:"picker-saturation-wrap"},Pb={class:"picker-controls"},Hb={class:"picker-color-wrap"},qb={class:"picker-sliders"},Ub={class:"picker-hue-wrap"},Gb={class:"picker-alpha-wrap"},Xb={class:"picker-field"},Yb={class:"picker-presets"},Zb=["onClick"],Wb={class:"picker-gradient-presets"},Jb=["onClick"],Kb={class:"picker-presets"},Qb=["onClick"],eO={key:0,class:"recent-colors-title"},tO={class:"picker-presets"},lO=["onClick"];var cO=Object(n["defineComponent"])({__name:"index",props:{modelValue:{type:String,default:"#e86b99"}},emits:["update:modelValue"],setup(e,{emit:t}){const l=e,c="RECENT_COLORS",o=[["#7f7f7f","#f2f2f2"],["#0d0d0d","#808080"],["#1c1a10","#ddd8c3"],["#0e243d","#c6d9f0"],["#233f5e","#dae5f0"],["#632623","#f2dbdb"],["#4d602c","#eaf1de"],["#3f3150","#e6e0ec"],["#1e5867","#d9eef3"],["#99490f","#fee9da"]],a=(e,t,l)=>{const c=I()(e).toRgb(),n=I()(t).toRgb(),o=(n.r-c.r)/l,a=(n.g-c.g)/l,r=(n.b-c.b)/l,i=[];for(let s=0;s{const e=[];for(const t of o)e.push(a(t[1],t[0],5));return e},i=["#000000","#ffffff","#eeece1","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c"],s=["#c21401","#ff1e02","#ffc12a","#ffff3a","#90cf5b","#00af57","#00afee","#0071be","#00215f","#72349d"],d=Object(n["ref"])(-1),u=Object(n["ref"])([]),b=Object(n["computed"])({get(){return I()(l.modelValue).toRgb()},set(e){const l=`rgba(${[e.r,e.g,e.b,e.a].join(",")})`;t("update:modelValue",l)}}),O=r(),m=Object(n["computed"])(()=>`rgba(${[b.value.r,b.value.g,b.value.b,b.value.a].join(",")})`),p=e=>{d.value=I()(e).toHsl().h,t("update:modelValue",e)},f=Object(S["debounce"])((function(){const e=I()(b.value).toRgbString();if(!u.value.includes(e)){u.value=[e,...u.value];const t=10;u.value.length>t&&(u.value=u.value.slice(0,t))}}),300,{trailing:!0});Object(n["onMounted"])(()=>{const e=localStorage.getItem(c);e&&(u.value=JSON.parse(e))}),Object(n["watch"])(u,()=>{const e=JSON.stringify(u.value);localStorage.setItem(c,e)});const j=e=>{"h"in e?(d.value=e.h,b.value=I()(e).toRgb()):(d.value=I()(e).toHsl().h,b.value=e),f()},v=()=>{const e="EyeDropper"in window;e?h():y()},h=()=>{ne["a"].success("按 ESC 键关闭取色吸管");const e=new window.EyeDropper;e.open().then(e=>{const t=I()(e.sRGBHex);d.value=t.toHsl().h,b.value=t.toRgb(),f()}).catch(()=>{ne["a"].success("关闭取色吸管")})},y=()=>{const e=document.querySelector(".canvas");if(!e)return;const 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);const l=document.createElement("div");l.style.cssText="position: absolute; top: -100px; left: -100px; width: 16px; height: 16px; border: 1px solid #000; z-index: 999",t.appendChild(l);const{left:c,top:n,width:o,height:a}=e.getBoundingClientRect(),r=e=>(!e.tagName||"FOREIGNOBJECT"!==e.tagName.toUpperCase())&&(!e.classList||!e.classList.contains("operate"));Object(ot["a"])(e,{filter:r,fontEmbedCSS:"",width:o,height:a,canvasWidth:o,canvasHeight:a,pixelRatio:1}).then(e=>{e.style.cssText=`position: absolute; top: ${n}px; left: ${c}px; cursor: crosshair;`,t.style.cursor="default",t.appendChild(e);const o=e.getContext("2d");if(!o)return;let a="";const r=e=>{const t=e.x,r=e.y,i=t-c,s=r-n,[d,u,b,O]=o.getImageData(i,s,1,1).data;a=`rgba(${d}, ${u}, ${b}, ${(O/255).toFixed(2)})`,l.style.left=t+10+"px",l.style.top=r+10+"px",l.style.backgroundColor=a},i=()=>{a="",l.style.left="-100px",l.style.top="-100px",l.style.backgroundColor=""},s=l=>{if(a&&0===l.button){const e=I()(a);d.value=e.toHsl().h,b.value=e.toRgb(),f()}document.body.removeChild(t),e.removeEventListener("mousemove",r),e.removeEventListener("mouseleave",i),window.removeEventListener("mousedown",s)};e.addEventListener("mousemove",r),e.addEventListener("mouseleave",i),window.addEventListener("mousedown",s)}).catch(()=>{ne["a"].error("取色吸管初始化失败"),document.body.removeChild(t)})};return(e,t)=>{const l=Object(n["resolveComponent"])("IconNeedle");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",$b,[Object(n["createElementVNode"])("div",Rb,[Object(n["createVNode"])(Tb,{value:Object(n["unref"])(b),hue:d.value,onColorChange:t[0]||(t[0]=e=>j(e))},null,8,["value","hue"])]),Object(n["createElementVNode"])("div",Pb,[Object(n["createElementVNode"])("div",Hb,[Object(n["createElementVNode"])("div",{class:"picker-current-color",style:Object(n["normalizeStyle"])({background:Object(n["unref"])(m)})},null,4),Object(n["createVNode"])(ub)]),Object(n["createElementVNode"])("div",qb,[Object(n["createElementVNode"])("div",Ub,[Object(n["createVNode"])(Eb,{value:Object(n["unref"])(b),hue:d.value,onColorChange:t[1]||(t[1]=e=>j(e))},null,8,["value","hue"])]),Object(n["createElementVNode"])("div",Gb,[Object(n["createVNode"])(hb,{value:Object(n["unref"])(b),onColorChange:t[2]||(t[2]=e=>j(e))},null,8,["value"])])])]),Object(n["createElementVNode"])("div",Xb,[Object(n["createVNode"])(Ab,{class:"input",value:Object(n["unref"])(b),onColorChange:t[3]||(t[3]=e=>j(e))},null,8,["value"]),Object(n["createElementVNode"])("div",{class:"straw",onClick:t[4]||(t[4]=e=>v())},[Object(n["createVNode"])(l)]),Object(n["createElementVNode"])("div",{class:"transparent",onClick:t[5]||(t[5]=e=>p("#00000000"))},[Object(n["createVNode"])(ub)])]),Object(n["createElementVNode"])("div",Yb,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(i,e=>Object(n["createElementVNode"])("div",{class:"picker-presets-color",key:e,style:Object(n["normalizeStyle"])({background:e}),onClick:t=>p(e)},null,12,Zb)),64))]),Object(n["createElementVNode"])("div",Wb,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(O),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"picker-gradient-col",key:t},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e,e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"picker-gradient-color",key:e,style:Object(n["normalizeStyle"])({background:e}),onClick:t=>p(e)},null,12,Jb))),128))]))),128))]),Object(n["createElementVNode"])("div",Kb,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(s,e=>Object(n["createElementVNode"])("div",{key:e,class:"picker-presets-color",style:Object(n["normalizeStyle"])({background:e}),onClick:t=>p(e)},null,12,Qb)),64))]),u.value.length?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",eO,"最近使用:")):Object(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("div",tO,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(u.value,e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:e,class:"picker-presets-color alpha",onClick:t=>p(e)},[Object(n["createElementVNode"])("div",{class:"picker-presets-color-content",style:Object(n["normalizeStyle"])({background:e})},null,4)],8,lO))),128))])])}}});l("bd05");const nO=Yt()(cO,[["__scopeId","data-v-3d280c42"]]);var oO=nO;const aO=e=>(Object(n["pushScopeId"])("data-v-49642f50"),e=e(),Object(n["popScopeId"])(),e),rO={class:"element-outline"},iO={key:0,class:"row"},sO=aO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"启用边框:",-1)),dO={class:"switch-wrapper",style:{flex:"3"}},uO={class:"row"},bO=aO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"边框样式:",-1)),OO={class:"row"},mO=aO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"边框颜色:",-1)),pO={class:"row"},fO=aO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"边框粗细:",-1));var jO=Object(n["defineComponent"])({__name:"ElementOutline",props:{fixed:{type:Boolean,default:!1}},setup(e){const t=Ci["a"].Option,l=T(),{handleElement:c}=Object(o["c"])(z()),a=Object(n["ref"])(),r=Object(n["ref"])(!1);Object(n["watch"])(c,()=>{c.value&&(a.value="outline"in c.value?c.value.outline:void 0,r.value=!!a.value)},{deep:!0,immediate:!0});const{addHistorySnapshot:i}=Te(),s=e=>{if(!c.value)return;const t={outline:{...a.value,...e}};l.updateElement({id:c.value.id,props:t}),i()},d=e=>{if(c.value){if(e){const e={width:2,color:"#000",style:"solid"};l.updateElement({id:c.value.id,props:{outline:e}})}else l.removeElementProps({id:c.value.id,propName:"outline"});i()}};return(l,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",rO,[e.fixed?Object(n["createCommentVNode"])("",!0):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",iO,[sO,Object(n["createElementVNode"])("div",dO,[Object(n["createVNode"])(Object(n["unref"])(nb["a"]),{checked:r.value,onChange:c[0]||(c[0]=e=>d(e))},null,8,["checked"])])])),r.value&&a.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:1},[Object(n["createElementVNode"])("div",uO,[bO,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:a.value.style,onChange:c[1]||(c[1]=e=>s({style:e}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),{value:"solid"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("实线边框")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{value:"dashed"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("虚线边框")]),_:1})]),_:1},8,["value"])]),Object(n["createElementVNode"])("div",OO,[mO,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:a.value.color,"onUpdate:modelValue":c[2]||(c[2]=e=>s({color:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:a.value.color||"#000",style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createElementVNode"])("div",pO,[fO,Object(n["createVNode"])(Object(n["unref"])(jd["a"]),{value:a.value.width,onChange:c[3]||(c[3]=e=>s({width:e})),style:{flex:"3"}},null,8,["value"])])],64)):Object(n["createCommentVNode"])("",!0)]))}});l("a9ab");const vO=Yt()(jO,[["__scopeId","data-v-49642f50"]]);var hO=vO;const yO=e=>(Object(n["pushScopeId"])("data-v-19c233fc"),e=e(),Object(n["popScopeId"])(),e),gO={class:"element-shadow"},xO={class:"row"},kO=yO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"启用阴影:",-1)),CO={class:"switch-wrapper",style:{flex:"3"}},NO={class:"row"},EO=yO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"水平阴影:",-1)),wO={class:"row"},VO=yO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"垂直阴影:",-1)),IO={class:"row"},SO=yO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"模糊距离:",-1)),LO={class:"row"},BO=yO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"阴影颜色:",-1));var _O=Object(n["defineComponent"])({__name:"ElementShadow",setup(e){const t=T(),{handleElement:l}=Object(o["c"])(z()),c=Object(n["ref"])(),a=Object(n["ref"])(!1);Object(n["watch"])(l,()=>{l.value&&(c.value="shadow"in l.value?l.value.shadow:void 0,a.value=!!c.value)},{deep:!0,immediate:!0});const{addHistorySnapshot:r}=Te(),i=e=>{if(!l.value||!c.value)return;const n={...c.value,...e};t.updateElement({id:l.value.id,props:{shadow:n}}),r()},s=e=>{if(l.value){if(e){const e={h:1,v:1,blur:2,color:"#000"};t.updateElement({id:l.value.id,props:{shadow:e}})}else t.removeElementProps({id:l.value.id,propName:"shadow"});r()}};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",gO,[Object(n["createElementVNode"])("div",xO,[kO,Object(n["createElementVNode"])("div",CO,[Object(n["createVNode"])(Object(n["unref"])(nb["a"]),{checked:a.value,onChange:t[0]||(t[0]=e=>s(e))},null,8,["checked"])])]),a.value&&c.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[Object(n["createElementVNode"])("div",NO,[EO,Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"slider",min:-10,max:10,step:1,value:c.value.h,onChange:t[1]||(t[1]=e=>i({h:e}))},null,8,["value"])]),Object(n["createElementVNode"])("div",wO,[VO,Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"slider",min:-10,max:10,step:1,value:c.value.v,onChange:t[2]||(t[2]=e=>i({v:e}))},null,8,["value"])]),Object(n["createElementVNode"])("div",IO,[SO,Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"slider",min:1,max:20,step:1,value:c.value.blur,onChange:t[3]||(t[3]=e=>i({blur:e}))},null,8,["value"])]),Object(n["createElementVNode"])("div",LO,[BO,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:c.value.color,"onUpdate:modelValue":t[4]||(t[4]=e=>i({color:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:c.value.color,style:{flex:"3"}},null,8,["color"])]),_:1})])],64)):Object(n["createCommentVNode"])("",!0)]))}});l("513b");const TO=Yt()(_O,[["__scopeId","data-v-19c233fc"]]);var MO=TO;const DO={class:"text-color-block"};var zO=Object(n["defineComponent"])({__name:"TextColorButton",props:{color:{type:String,required:!0}},setup(e){return(t,l)=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(xi["a"]),{class:"text-color-btn"},{default:Object(n["withCtx"])(()=>[Object(n["renderSlot"])(t.$slots,"default"),Object(n["createElementVNode"])("div",DO,[Object(n["createElementVNode"])("div",{class:"text-color-block-content",style:Object(n["normalizeStyle"])({backgroundColor:e.color})},null,4)])]),_:3}))}});l("3ef1");const FO=Yt()(zO,[["__scopeId","data-v-c90c8a28"]]);var AO=FO,$O=Object(n["defineComponent"])({__name:"CheckboxButton",props:{checked:{type:Boolean,default:!1}},setup(e){return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("button",{class:Object(n["normalizeClass"])(["checkbox-button",{checked:e.checked}])},[Object(n["renderSlot"])(t.$slots,"default")],2))}});l("573c");const RO=Yt()($O,[["__scopeId","data-v-699cf016"]]);var PO=RO;const HO={class:"checkbox-button-group"};function qO(e,t){return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",HO,[Object(n["renderSlot"])(e.$slots,"default",{},void 0,!0)])}l("5634");const UO={},GO=Yt()(UO,[["render",qO],["__scopeId","data-v-b8aa6eac"]]);var XO=GO;const YO=e=>(Object(n["pushScopeId"])("data-v-9b75a3bc"),e=e(),Object(n["popScopeId"])(),e),ZO={class:"text-style-panel"},WO={class:"preset-style"},JO=["onClick"],KO={class:"link-popover"},QO={class:"btns"},em={class:"row"},tm={class:"list-wrap"},lm=["onClick"],cm=YO(()=>Object(n["createElementVNode"])("span",null,null,-1)),nm=[cm],om=YO(()=>Object(n["createElementVNode"])("div",{style:{flex:"1"}},null,-1)),am={class:"list-wrap"},rm=["onClick"],im=YO(()=>Object(n["createElementVNode"])("span",null,null,-1)),sm=[im],dm={class:"row"},um=YO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"行间距:",-1)),bm={class:"row"},Om=YO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"段间距:",-1)),mm={class:"row"},pm=YO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"字间距:",-1)),fm={class:"row"},jm=YO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"首行缩进:",-1)),vm={class:"row"},hm=YO(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"文本框填充:",-1));var ym=Object(n["defineComponent"])({__name:"TextStylePanel",setup(e){const{Group:t,Button:l}=Yu["a"],{OptGroup:c,Option:a}=Ci["a"],r=ki["a"].Group,s=xi["a"].Group,d=[{label:"大标题",style:{fontSize:"26px",fontWeight:700},cmd:[{command:"clear"},{command:"bold"},{command:"fontsize",value:"48px"},{command:"align",value:"center"}]},{label:"小标题",style:{fontSize:"22px",fontWeight:700},cmd:[{command:"clear"},{command:"bold"},{command:"fontsize",value:"36px"},{command:"align",value:"center"}]},{label:"正文",style:{fontSize:"20px"},cmd:[{command:"clear"},{command:"fontsize",value:"20px"}]},{label:"正文[小]",style:{fontSize:"18px"},cmd:[{command:"clear"},{command:"fontsize",value:"18px"}]},{label:"注释 1",style:{fontSize:"16px",fontStyle:"italic"},cmd:[{command:"clear"},{command:"fontsize",value:"16px"},{command:"em"}]},{label:"注释 2",style:{fontSize:"16px",textDecoration:"underline"},cmd:[{command:"clear"},{command:"fontsize",value:"16px"},{command:"underline"}]}],u=z(),b=T(),{handleElement:O,handleElementId:m,richTextAttrs:p,availableFonts:f,textFormatPainter:j}=Object(o["c"])(u),{addHistorySnapshot:v}=Te(),{toggleFormatPainter:h}=Zu(),y=e=>{b.updateElement({id:m.value,props:e}),v()},g=Object(n["ref"])(!1),x=Object(n["ref"])(!1),k=Object(n["ref"])(["disc","circle","square"]),C=Object(n["ref"])(["decimal","lower-roman","upper-roman","lower-alpha","upper-alpha","lower-greek"]),N=Object(n["ref"])("#000"),E=Object(n["ref"])(),w=Object(n["ref"])(),V=Object(n["ref"])(),I=Object(n["ref"])();Object(n["watch"])(O,()=>{O.value&&"text"===O.value.type&&(N.value=O.value.fill||"#fff",E.value=O.value.lineHeight||1.5,w.value=O.value.wordSpace||0,V.value=O.value.textIndent||0,I.value=void 0===O.value.paragraphSpace?5:O.value.paragraphSpace)},{deep:!0,immediate:!0});const S=["12px","14px","16px","18px","20px","22px","24px","28px","32px","36px","40px","44px","48px","54px","60px","66px","72px","76px","80px","88px","96px","104px","112px","120px"],L=[.9,1,1.15,1.2,1.4,1.5,1.8,2,2.5,3],B=[0,1,2,3,4,5,6,8,10],_=[0,48,96,144,192,240,288,336],M=[0,5,10,15,20,25,30,40,50,80],D=e=>{y({lineHeight:e})},F=e=>{y({paragraphSpace:e})},A=e=>{y({wordSpace:e})},$=e=>{y({textIndent:e})},R=e=>{y({fill:e})},P=(e,t)=>{yn.emit(jn.RICH_TEXT_COMMAND,{action:{command:e,value:t}})},H=e=>{yn.emit(jn.RICH_TEXT_COMMAND,{action:e})},q=Object(n["ref"])(""),U=Object(n["ref"])(!1);Object(n["watch"])(p,()=>U.value=!1);const G=()=>{q.value=p.value.link,U.value=!0},X=e=>{if(e){const t=/^(https?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-.,@?^=%&:\/~+#]*[\w\-@?^=%&\/~+#])?$/;if(!t.test(e))return ne["a"].error("不是正确的网页链接地址")}P("link",e),U.value=!1};return(e,o)=>{const u=Object(n["resolveComponent"])("IconFontSize"),b=Object(n["resolveComponent"])("IconAddText"),O=Object(n["resolveComponent"])("IconText"),m=Object(n["resolveComponent"])("IconHighLight"),v=Object(n["resolveComponent"])("IconTextBold"),y=Object(n["resolveComponent"])("IconTextItalic"),T=Object(n["resolveComponent"])("IconTextUnderline"),z=Object(n["resolveComponent"])("IconStrikethrough"),Y=Object(n["resolveComponent"])("IconCode"),Z=Object(n["resolveComponent"])("IconQuote"),W=Object(n["resolveComponent"])("IconFormat"),J=Object(n["resolveComponent"])("IconFormatBrush"),K=Object(n["resolveComponent"])("IconLinkOne"),Q=Object(n["resolveComponent"])("IconAlignTextLeft"),ee=Object(n["resolveComponent"])("IconAlignTextCenter"),te=Object(n["resolveComponent"])("IconAlignTextRight"),le=Object(n["resolveComponent"])("IconList"),ce=Object(n["resolveComponent"])("IconDown"),ne=Object(n["resolveComponent"])("IconOrderedList"),oe=Object(n["resolveComponent"])("IconIndentLeft"),ae=Object(n["resolveComponent"])("IconIndentRight"),re=Object(n["resolveComponent"])("IconRowHeight"),ie=Object(n["resolveComponent"])("IconVerticalSpacingBetweenItems"),se=Object(n["resolveComponent"])("IconFullwidth");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ZO,[Object(n["createElementVNode"])("div",WO,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(d,e=>Object(n["createElementVNode"])("div",{class:"preset-style-item",key:e.label,style:Object(n["normalizeStyle"])(e.style),onClick:t=>H(e.cmd)},Object(n["toDisplayString"])(e.label),13,JO)),64))]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(Object(n["unref"])(r),{compact:"",class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:Object(n["unref"])(p).fontname,onChange:o[0]||(o[0]=e=>P("fontname",e))},{suffixIcon:Object(n["withCtx"])(()=>[Object(n["createVNode"])(u)]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(c),{label:"系统字体"},{default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(f),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(a),{key:e.value,value:e.value},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("span",{style:Object(n["normalizeStyle"])({fontFamily:e.value})},Object(n["toDisplayString"])(e.label),5)]),_:2},1032,["value"]))),128))]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{label:"在线字体"},{default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(i),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(a),{key:e.value,value:e.value},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.label),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["value"]),Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"2"},value:Object(n["unref"])(p).fontsize,onChange:o[1]||(o[1]=e=>P("fontsize",e))},{suffixIcon:Object(n["withCtx"])(()=>[Object(n["createVNode"])(b)]),default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(S,e=>Object(n["createVNode"])(Object(n["unref"])(a),{key:e,value:e},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(s),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(p).color,"onUpdate:modelValue":o[2]||(o[2]=e=>P("color",e))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(AO,{color:Object(n["unref"])(p).color,style:{flex:"3"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(O)]),_:1},8,["color"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(p).backcolor,"onUpdate:modelValue":o[3]||(o[3]=e=>P("backcolor",e))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字高亮"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(AO,{color:Object(n["unref"])(p).backcolor,style:{flex:"3"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(m)]),_:1},8,["color"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"增大字号"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"font-size-btn",style:{flex:"2"},onClick:o[4]||(o[4]=e=>P("fontsize-add"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(u),Object(n["createTextVNode"])("+")]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"减小字号"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"font-size-btn",style:{flex:"2"},onClick:o[5]||(o[5]=e=>P("fontsize-reduce"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(u),Object(n["createTextVNode"])("-")]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(XO,{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"加粗"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(p).bold,onClick:o[6]||(o[6]=e=>P("bold"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(v)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"斜体"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(p).em,onClick:o[7]||(o[7]=e=>P("em"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(y)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下划线"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(p).underline,onClick:o[8]||(o[8]=e=>P("underline"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(T)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除线"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(p).strikethrough,onClick:o[9]||(o[9]=e=>P("strikethrough"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(z)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(XO,{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上标"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(p).superscript,onClick:o[10]||(o[10]=e=>P("superscript"))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("A²")]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下标"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(p).subscript,onClick:o[11]||(o[11]=e=>P("subscript"))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("A₂")]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"行内代码"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(p).code,onClick:o[12]||(o[12]=e=>P("code"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Y)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"引用"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(p).blockquote,onClick:o[13]||(o[13]=e=>P("blockquote"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Z)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(XO,{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"清除格式"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},onClick:o[14]||(o[14]=e=>P("clear"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(W)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"格式刷"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:!!Object(n["unref"])(j),onClick:o[15]||(o[15]=e=>Object(n["unref"])(h)())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(J)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"超链接"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{placement:"bottomRight",trigger:"click",visible:U.value,"onUpdate:visible":o[20]||(o[20]=e=>U.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",KO,[Object(n["createVNode"])(Object(n["unref"])(ki["a"]),{value:q.value,"onUpdate:value":o[16]||(o[16]=e=>q.value=e),placeholder:"请输入超链接"},null,8,["value"]),Object(n["createElementVNode"])("div",QO,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{size:"small",disabled:!Object(n["unref"])(p).link,onClick:o[17]||(o[17]=e=>X()),style:{"margin-right":"5px"}},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("移除")]),_:1},8,["disabled"]),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{size:"small",type:"primary",onClick:o[18]||(o[18]=e=>X(q.value))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("确认")]),_:1})])])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:!!Object(n["unref"])(p).link,onClick:o[19]||(o[19]=e=>G())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(K)]),_:1},8,["checked"])]),_:1},8,["visible"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row","button-style":"solid",value:Object(n["unref"])(p).align,onChange:o[21]||(o[21]=e=>P("align",e.target.value))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"left",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Q)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"center",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ee)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"right",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(te)]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1},8,["value"]),Object(n["createElementVNode"])("div",em,[Object(n["createVNode"])(Object(n["unref"])(s),{style:{flex:"15"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"项目符号"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{type:Object(n["unref"])(p).bulletList?"primary":"default",style:{flex:"1"},onClick:o[22]||(o[22]=e=>P("bulletList"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(le)]),_:1},8,["type"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:g.value,"onUpdate:visible":o[23]||(o[23]=e=>g.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",tm,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(k.value,e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("ul",{class:"list",key:e,style:Object(n["normalizeStyle"])({listStyleType:e}),onClick:t=>P("bulletList",e)},[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(3,e=>Object(n["createElementVNode"])("li",{class:"list-item",key:e},nm)),64))],12,lm))),128))])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"popover-btn"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ce)]),_:1})]),_:1},8,["visible"])]),_:1}),om,Object(n["createVNode"])(Object(n["unref"])(s),{style:{flex:"15"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"编号"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{type:Object(n["unref"])(p).orderedList?"primary":"default",style:{flex:"1"},onClick:o[24]||(o[24]=e=>P("orderedList"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ne)]),_:1},8,["type"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:x.value,"onUpdate:visible":o[25]||(o[25]=e=>x.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",am,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(C.value,e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("ul",{class:"list",key:e,style:Object(n["normalizeStyle"])({listStyleType:e}),onClick:t=>P("orderedList",e)},[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(3,e=>Object(n["createElementVNode"])("li",{class:"list-item",key:e},sm)),64))],12,rm))),128))])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"popover-btn"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ce)]),_:1})]),_:1},8,["visible"])]),_:1})]),Object(n["createVNode"])(Object(n["unref"])(s),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"减小缩进"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[26]||(o[26]=e=>P("indent","-1"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oe)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"增大缩进"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[27]||(o[27]=e=>P("indent","+1"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ae)]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createElementVNode"])("div",dm,[um,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:E.value,onChange:o[28]||(o[28]=e=>D(e))},{suffixIcon:Object(n["withCtx"])(()=>[Object(n["createVNode"])(re)]),default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(L,e=>Object(n["createVNode"])(Object(n["unref"])(a),{key:e,value:e},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e)+"倍",1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),Object(n["createElementVNode"])("div",bm,[Om,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:I.value,onChange:o[29]||(o[29]=e=>F(e))},{suffixIcon:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ie)]),default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(M,e=>Object(n["createVNode"])(Object(n["unref"])(a),{key:e,value:e},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e)+"px",1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),Object(n["createElementVNode"])("div",mm,[pm,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:w.value,onChange:o[30]||(o[30]=e=>A(e))},{suffixIcon:Object(n["withCtx"])(()=>[Object(n["createVNode"])(se)]),default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(B,e=>Object(n["createVNode"])(Object(n["unref"])(a),{key:e,value:e},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e)+"px",1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),Object(n["createElementVNode"])("div",fm,[jm,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:V.value,onChange:o[31]||(o[31]=e=>$(e))},{suffixIcon:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ae)]),default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(_,e=>Object(n["createVNode"])(Object(n["unref"])(a),{key:e,value:e},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e)+"px",1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),Object(n["createElementVNode"])("div",vm,[hm,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:N.value,"onUpdate:modelValue":o[32]||(o[32]=e=>R(e))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:N.value,style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(hO),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(MO),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(cb)])}}});l("9f65");const gm=Yt()(ym,[["__scopeId","data-v-9b75a3bc"]]);var xm=gm;const km={class:"element-flip"};var Cm=Object(n["defineComponent"])({__name:"ElementFlip",setup(e){const t=T(),{handleElement:l}=Object(o["c"])(z()),c=Object(n["ref"])(!1),a=Object(n["ref"])(!1);Object(n["watch"])(l,()=>{!l.value||"image"!==l.value.type&&"shape"!==l.value.type||(c.value=!!l.value.flipH,a.value=!!l.value.flipV)},{deep:!0,immediate:!0});const{addHistorySnapshot:r}=Te(),i=e=>{l.value&&(t.updateElement({id:l.value.id,props:e}),r())};return(e,t)=>{const l=Object(n["resolveComponent"])("IconFlipVertically"),o=Object(n["resolveComponent"])("IconFlipHorizontally");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",km,[Object(n["createVNode"])(XO,{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:a.value,onClick:t[0]||(t[0]=e=>i({flipV:!a.value}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(l),Object(n["createTextVNode"])(" 垂直翻转")]),_:1},8,["checked"]),Object(n["createVNode"])(PO,{style:{flex:"1"},checked:c.value,onClick:t[1]||(t[1]=e=>i({flipH:!c.value}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(o),Object(n["createTextVNode"])(" 水平翻转")]),_:1},8,["checked"])]),_:1})])}}});l("a13f");const Nm=Yt()(Cm,[["__scopeId","data-v-1b5a047e"]]);var Em=Nm;const wm=e=>(Object(n["pushScopeId"])("data-v-a99ef6ee"),e=e(),Object(n["popScopeId"])(),e),Vm={class:"element-filter"},Im={class:"row"},Sm=wm(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"启用滤镜:",-1)),Lm={class:"switch-wrapper",style:{flex:"3"}},Bm={key:0,class:"filter"},_m={class:"name"};var Tm=Object(n["defineComponent"])({__name:"ElementFilter",setup(e){const t=[{label:"模糊",key:"blur",default:0,value:0,unit:"px",max:10,step:1},{label:"亮度",key:"brightness",default:100,value:100,unit:"%",max:200,step:5},{label:"对比度",key:"contrast",default:100,value:100,unit:"%",max:200,step:5},{label:"灰度",key:"grayscale",default:0,value:0,unit:"%",max:100,step:5},{label:"饱和度",key:"saturate",default:100,value:100,unit:"%",max:200,step:5},{label:"色相",key:"hue-rotate",default:0,value:0,unit:"deg",max:360,step:10},{label:"不透明度",key:"opacity",default:100,value:100,unit:"%",max:100,step:5}],l=T(),{handleElement:c,handleElementId:a}=Object(o["c"])(z()),r=Object(n["ref"])(JSON.parse(JSON.stringify(t))),i=Object(n["ref"])(!1),{addHistorySnapshot:s}=Te();Object(n["watch"])(c,()=>{if(!c.value||"image"!==c.value.type)return;const e=c.value.filters;e?(r.value=t.map(t=>void 0!==e[t.key]?{...t,value:parseInt(e[t.key])}:t),i.value=!0):(r.value=JSON.parse(JSON.stringify(t)),i.value=!1)},{deep:!0,immediate:!0});const d=(e,t)=>{const n=c.value,o=n.filters||{},r={...o,[e.key]:`${t}${e.unit}`};l.updateElement({id:a.value,props:{filters:r}}),s()},u=e=>{c.value&&(e?l.updateElement({id:c.value.id,props:{filters:{}}}):l.removeElementProps({id:c.value.id,propName:"filters"}),s())};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Vm,[Object(n["createElementVNode"])("div",Im,[Sm,Object(n["createElementVNode"])("div",Lm,[Object(n["createVNode"])(Object(n["unref"])(nb["a"]),{checked:i.value,onChange:t[0]||(t[0]=e=>u(e))},null,8,["checked"])])]),i.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Bm,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(r.value,e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"filter-item",key:e.key},[Object(n["createElementVNode"])("div",_m,Object(n["toDisplayString"])(e.label),1),Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"filter-slider",max:e.max,min:0,step:e.step,value:e.value,onChange:t=>d(e,t)},null,8,["max","step","value","onChange"])]))),128))])):Object(n["createCommentVNode"])("",!0)]))}});l("23e8");const Mm=Yt()(Tm,[["__scopeId","data-v-a99ef6ee"]]);var Dm=Mm;const zm=e=>(Object(n["pushScopeId"])("data-v-7e9086fc"),e=e(),Object(n["popScopeId"])(),e),Fm={class:"element-color-mask"},Am={class:"row"},$m=zm(()=>Object(n["createElementVNode"])("div",{style:{flex:"1"}},"重新着色(蒙版):",-1)),Rm={class:"switch-wrapper",style:{flex:"1"}},Pm={class:"row",style:{"margin-top":"15px"}},Hm=zm(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"蒙版颜色:",-1)),qm={class:"row"},Um=zm(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"不透明度:",-1));var Gm=Object(n["defineComponent"])({__name:"ElementColorMask",setup(e){const t={color:"transparent",opacity:.3},l=T(),{handleElement:c,handleElementId:a}=Object(o["c"])(z()),r=Object(n["ref"])(t),i=Object(n["ref"])(!1),{addHistorySnapshot:s}=Te();Object(n["watch"])(c,()=>{c.value&&"image"===c.value.type&&(c.value.colorMask?(r.value=c.value.colorMask,i.value=!0):i.value=!1)},{deep:!0,immediate:!0});const d=e=>{c.value&&(e?l.updateElement({id:c.value.id,props:{colorMask:t}}):l.removeElementProps({id:c.value.id,propName:"colorMask"}),s())},u=e=>{const t={...r.value,...e};l.updateElement({id:a.value,props:{colorMask:t}}),s()};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Fm,[Object(n["createElementVNode"])("div",Am,[$m,Object(n["createElementVNode"])("div",Rm,[Object(n["createVNode"])(Object(n["unref"])(nb["a"]),{checked:i.value,onChange:t[0]||(t[0]=e=>d(e))},null,8,["checked"])])]),i.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[Object(n["createElementVNode"])("div",Pm,[Hm,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:r.value.color,"onUpdate:modelValue":t[1]||(t[1]=e=>u({color:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:r.value.color,style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createElementVNode"])("div",qm,[Um,Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"opacity-slider",max:1,min:0,step:.05,value:r.value.opacity,onChange:t[2]||(t[2]=e=>u({opacity:e}))},null,8,["step","value"])])],64)):Object(n["createCommentVNode"])("",!0)]))}});l("6a91");const Xm=Yt()(Gm,[["__scopeId","data-v-7e9086fc"]]);var Ym=Xm;const Zm=e=>(Object(n["pushScopeId"])("data-v-105f4640"),e=e(),Object(n["popScopeId"])(),e),Wm={class:"image-style-panel"},Jm={class:"clip"},Km=Zm(()=>Object(n["createElementVNode"])("div",{class:"title"},"按形状:",-1)),Qm={class:"shape-clip"},ep=["onClick"],tp={key:0,class:"title"};var lp=Object(n["defineComponent"])({__name:"ImageStylePanel",setup(e){const t=xi["a"].Group,l=Rl,c=[{label:"纵横比(方形)",children:[{key:"1:1",ratio:1}]},{label:"纵横比(纵向)",children:[{key:"2:3",ratio:1.5},{key:"3:4",ratio:4/3},{key:"3:5",ratio:5/3},{key:"4:5",ratio:5/4}]},{label:"纵横比(横向)",children:[{key:"3:2",ratio:2/3},{key:"4:3",ratio:3/4},{key:"5:3",ratio:.6},{key:"5:4",ratio:.8}]},{children:[{key:"16:9",ratio:9/16},{key:"16:10",ratio:.625}]}],a=z(),r=T(),{handleElement:i,handleElementId:s}=Object(o["c"])(a),{currentSlide:d}=Object(o["c"])(r),u=i,b=Object(n["ref"])(!1),{addHistorySnapshot:O}=Te(),m=()=>{a.setClipingImageElementId(s.value),b.value=!1},p=()=>{const e=i.value,t=e.width,l=e.height,c=e.left,n=e.top,o=e.clip?e.clip.range:[[0,0],[100,100]],a=t/((o[1][0]-o[0][0])/100),r=l/((o[1][1]-o[0][1])/100),s=c-a*(o[0][0]/100),d=n-r*(o[0][1]/100);return{originClipRange:o,originWidth:a,originHeight:r,originLeft:s,originTop:d}},f=(e,t=0)=>{const l=i.value,{originClipRange:c,originWidth:n,originHeight:o,originLeft:a,originTop:d}=p();if(t){const c=o/n,i=0,u=100;let b;if(c>t){const e=(1-t/c)/2*100;b=[[i,e],[u,u-e]]}else{const e=(1-c/t)/2*100;b=[[e,i],[u-e,u]]}r.updateElement({id:s.value,props:{clip:{...l.clip,shape:e,range:b},left:a+n*(b[0][0]/100),top:d+o*(b[0][1]/100),width:n*(b[1][0]-b[0][0])/100,height:o*(b[1][1]-b[0][1])/100}})}else r.updateElement({id:s.value,props:{clip:{...l.clip,shape:e,range:c}}});m(),O()},j=e=>{const t=e[0];t&&(we(t).then(e=>{const t={src:e};r.updateElement({id:s.value,props:t})}),O())},v=()=>{const e=i.value;if(e.clip){const{originWidth:e,originHeight:t,originLeft:l,originTop:c}=p();r.updateElement({id:s.value,props:{left:l,top:c,width:e,height:t}})}r.removeElementProps({id:s.value,propName:["clip","outline","flip","shadow","filters","colorMask"]}),O()},h=()=>{const e=i.value,t={...d.value.background,type:"image",image:e.src,imageSize:"cover"};r.updateSlide({background:t}),O()};return(e,o)=>{const a=Object(n["resolveComponent"])("IconTailoring"),r=Object(n["resolveComponent"])("IconDown"),i=Object(n["resolveComponent"])("IconTransform"),s=Object(n["resolveComponent"])("IconUndo"),d=Object(n["resolveComponent"])("IconTheme");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Wm,[Object(n["createElementVNode"])("div",{class:"origin-image",style:Object(n["normalizeStyle"])({backgroundImage:`url(${Object(n["unref"])(u).src})`})},null,4),Object(n["createVNode"])(Em),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"5"},onClick:o[0]||(o[0]=e=>m())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(a,{class:"btn-icon"}),Object(n["createTextVNode"])(" 裁剪图片")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:b.value,"onUpdate:visible":o[1]||(o[1]=e=>b.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",Jm,[Km,Object(n["createElementVNode"])("div",Qm,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(l),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"shape-clip-item",key:t,onClick:e=>f(t)},[Object(n["createElementVNode"])("div",{class:"shape",style:Object(n["normalizeStyle"])({clipPath:e.style})},null,4)],8,ep))),128))]),(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(c,e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:e.label},[e.label?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",tp,"按"+Object(n["toDisplayString"])(e.label)+":",1)):Object(n["createCommentVNode"])("",!0),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row"},{default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.children,e=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},key:e.key,onClick:t=>f("rect",e.ratio)},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e.key),1)]),_:2},1032,["onClick"]))),128))]),_:2},1024)],64))),64))])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"no-padding",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(r)]),_:1})]),_:1},8,["visible"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(Ym),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(Dm),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(hO),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(MO),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(el,{onChange:o[2]||(o[2]=e=>j(e))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"full-width-btn"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(i,{class:"btn-icon"}),Object(n["createTextVNode"])(" 替换图片")]),_:1})]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"full-width-btn",onClick:o[3]||(o[3]=e=>v())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(s,{class:"btn-icon"}),Object(n["createTextVNode"])(" 重置样式")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"full-width-btn",onClick:o[4]||(o[4]=e=>h())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(d,{class:"btn-icon"}),Object(n["createTextVNode"])(" 设为背景")]),_:1})])}}});l("dfe7");const cp=Yt()(lp,[["__scopeId","data-v-105f4640"]]);var np=cp;const op=e=>(Object(n["pushScopeId"])("data-v-1d6d026a"),e=e(),Object(n["popScopeId"])(),e),ap={class:"shape-style-panel"},rp={class:"title"},ip=op(()=>Object(n["createElementVNode"])("span",null,"点击替换形状",-1)),sp={class:"shape-pool"},dp={class:"shape-list"},up={class:"row"},bp=op(()=>Object(n["createElementVNode"])("div",{style:{flex:"1"}},null,-1)),Op={class:"row"},mp=op(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"起点颜色:",-1)),pp={class:"row"},fp=op(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"终点颜色:",-1)),jp={key:0,class:"row"},vp=op(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"渐变角度:",-1));var hp=Object(n["defineComponent"])({__name:"ShapeStylePanel",setup(e){const{Group:t,Button:l}=Yu["a"],{OptGroup:c,Option:a}=Ci["a"],r=ki["a"].Group,s=xi["a"].Group,d=z(),u=T(),{handleElement:b,handleElementId:O,richTextAttrs:m,availableFonts:p,textFormatPainter:f}=Object(o["c"])(d),j=b,v=Object(n["ref"])("#000"),h=Object(n["ref"])({type:"linear",rotate:0,color:["#fff","#fff"]}),y=Object(n["ref"])("fill"),g=Object(n["ref"])("middle");Object(n["watch"])(b,()=>{var e,t;b.value&&"shape"===b.value.type&&(v.value=b.value.fill||"#fff",h.value=b.value.gradient||{type:"linear",rotate:0,color:[v.value,"#fff"]},y.value=b.value.gradient?"gradient":"fill",g.value=(null===(e=b.value)||void 0===e||null===(t=e.text)||void 0===t?void 0:t.align)||"middle")},{deep:!0,immediate:!0});const{addHistorySnapshot:x}=Te(),{toggleFormatPainter:k}=Zu(),C=e=>{u.updateElement({id:O.value,props:e}),x()},N=e=>{"fill"===e?(u.removeElementProps({id:O.value,propName:"gradient"}),x()):C({gradient:h.value})},E=e=>{if(!h.value)return;const t={...h.value,...e};C({gradient:t})},w=e=>{C({fill:e})},V=e=>{const{width:t,height:l}=b.value,c={viewBox:e.viewBox,path:e.path,special:e.special};if(e.pathFormula){c.pathFormula=e.pathFormula,c.viewBox=[t,l];const n=Le[e.pathFormula];"editable"in n?(c.path=n.formula(t,l,n.defaultValue),c.keypoint=n.defaultValue):c.path=n.formula(t,l)}else c.pathFormula=void 0,c.keypoint=void 0;C(c)},I=e=>{const t=b.value,l={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"},c=t.text||l;C({text:{...c,align:e}})},S=["12px","14px","16px","18px","20px","22px","24px","28px","32px","36px","40px","44px","48px","54px","60px","66px","72px","76px","80px","88px","96px","104px","112px","120px"],L=(e,t)=>{yn.emit(jn.RICH_TEXT_COMMAND,{action:{command:e,value:t}})};return(e,o)=>{var d;const u=Object(n["resolveComponent"])("IconDown"),b=Object(n["resolveComponent"])("IconFontSize"),O=Object(n["resolveComponent"])("IconAddText"),x=Object(n["resolveComponent"])("IconText"),C=Object(n["resolveComponent"])("IconHighLight"),B=Object(n["resolveComponent"])("IconTextBold"),_=Object(n["resolveComponent"])("IconTextItalic"),T=Object(n["resolveComponent"])("IconTextUnderline"),M=Object(n["resolveComponent"])("IconStrikethrough"),D=Object(n["resolveComponent"])("IconFormat"),z=Object(n["resolveComponent"])("IconFormatBrush"),F=Object(n["resolveComponent"])("IconAlignTextLeft"),A=Object(n["resolveComponent"])("IconAlignTextCenter"),$=Object(n["resolveComponent"])("IconAlignTextRight"),R=Object(n["resolveComponent"])("IconAlignTextTopOne"),P=Object(n["resolveComponent"])("IconAlignTextMiddleOne"),H=Object(n["resolveComponent"])("IconAlignTextBottomOne");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ap,[Object(n["createElementVNode"])("div",rp,[ip,Object(n["createVNode"])(u)]),Object(n["createElementVNode"])("div",sp,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(Be),e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"category",key:e.type},[Object(n["createElementVNode"])("div",dp,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.children,(e,t)=>(Object(n["openBlock"])(),Object(n["createBlock"])(Zs,{class:"shape-item",key:t,shape:e,onClick:t=>V(e)},null,8,["shape","onClick"]))),128))])]))),128))]),Object(n["createElementVNode"])("div",up,[Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"10"},value:y.value,onChange:o[0]||(o[0]=e=>N(e))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(a),{value:"fill"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("纯色填充")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(a),{value:"gradient"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("渐变填充")]),_:1})]),_:1},8,["value"]),bp,"fill"===y.value?(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(Rs["a"]),{key:0,trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:v.value,"onUpdate:modelValue":o[1]||(o[1]=e=>w(e))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:v.value,style:{flex:"10"}},null,8,["color"])]),_:1})):(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(Ci["a"]),{key:1,style:{flex:"10"},value:h.value.type,onChange:o[2]||(o[2]=e=>E({type:e}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(a),{value:"linear"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("线性渐变")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(a),{value:"radial"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("径向渐变")]),_:1})]),_:1},8,["value"]))]),"gradient"===y.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[Object(n["createElementVNode"])("div",Op,[mp,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:h.value.color[0],"onUpdate:modelValue":o[3]||(o[3]=e=>E({color:[e,h.value.color[1]]}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:h.value.color[0],style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createElementVNode"])("div",pp,[fp,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:h.value.color[1],"onUpdate:modelValue":o[4]||(o[4]=e=>E({color:[h.value.color[0],e]}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:h.value.color[1],style:{flex:"3"}},null,8,["color"])]),_:1})]),"linear"===h.value.type?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",jp,[vp,Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"slider",min:0,max:360,step:15,value:h.value.rotate,onChange:o[5]||(o[5]=e=>E({rotate:e}))},null,8,["value"])])):Object(n["createCommentVNode"])("",!0)],64)):Object(n["createCommentVNode"])("",!0),Object(n["createVNode"])(Em),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),null!==(d=Object(n["unref"])(j).text)&&void 0!==d&&d.content?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:1},[Object(n["createVNode"])(Object(n["unref"])(r),{compact:"",class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:Object(n["unref"])(m).fontname,onChange:o[6]||(o[6]=e=>L("fontname",e))},{suffixIcon:Object(n["withCtx"])(()=>[Object(n["createVNode"])(b)]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(c),{label:"系统字体"},{default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(p),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(a),{key:e.value,value:e.value},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("span",{style:Object(n["normalizeStyle"])({fontFamily:e.value})},Object(n["toDisplayString"])(e.label),5)]),_:2},1032,["value"]))),128))]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{label:"在线字体"},{default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(i),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(a),{key:e.value,value:e.value},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.label),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["value"]),Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"2"},value:Object(n["unref"])(m).fontsize,onChange:o[7]||(o[7]=e=>L("fontsize",e))},{suffixIcon:Object(n["withCtx"])(()=>[Object(n["createVNode"])(O)]),default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(S,e=>Object(n["createVNode"])(Object(n["unref"])(a),{key:e,value:e},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(s),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(m).color,"onUpdate:modelValue":o[8]||(o[8]=e=>L("color",e))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(AO,{color:Object(n["unref"])(m).color,style:{flex:"3"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(x)]),_:1},8,["color"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(m).backcolor,"onUpdate:modelValue":o[9]||(o[9]=e=>L("backcolor",e))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字高亮"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(AO,{color:Object(n["unref"])(m).backcolor,style:{flex:"3"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(C)]),_:1},8,["color"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"增大字号"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"font-size-btn",style:{flex:"2"},onClick:o[10]||(o[10]=e=>L("fontsize-add"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(b),Object(n["createTextVNode"])("+")]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"减小字号"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"font-size-btn",style:{flex:"2"},onClick:o[11]||(o[11]=e=>L("fontsize-reduce"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(b),Object(n["createTextVNode"])("-")]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(XO,{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"加粗"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(m).bold,onClick:o[12]||(o[12]=e=>L("bold"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(B)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"斜体"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(m).em,onClick:o[13]||(o[13]=e=>L("em"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(_)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下划线"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(m).underline,onClick:o[14]||(o[14]=e=>L("underline"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(T)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除线"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(m).strikethrough,onClick:o[15]||(o[15]=e=>L("strikethrough"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(M)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(XO,{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"清除格式"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},onClick:o[16]||(o[16]=e=>L("clear"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(D)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"格式刷"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:!!Object(n["unref"])(f),onClick:o[17]||(o[17]=e=>Object(n["unref"])(k)())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(z)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row","button-style":"solid",value:Object(n["unref"])(m).align,onChange:o[18]||(o[18]=e=>L("align",e.target.value))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"left",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(F)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"center",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(A)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"right",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])($)]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1},8,["value"]),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row","button-style":"solid",value:g.value,onChange:o[19]||(o[19]=e=>I(e.target.value))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"顶对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"top",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(R)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"middle",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(P)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"底对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"bottom",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(H)]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1},8,["value"]),Object(n["createVNode"])(Object(n["unref"])(ui["a"]))],64)):Object(n["createCommentVNode"])("",!0),Object(n["createVNode"])(hO),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(MO),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(cb)])}}});l("9fe5");const yp=Yt()(hp,[["__scopeId","data-v-1d6d026a"]]);var gp=yp;const xp=e=>(Object(n["pushScopeId"])("data-v-0ca152b4"),e=e(),Object(n["popScopeId"])(),e),kp={class:"line-style-panel"},Cp={class:"row"},Np=xp(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"线条样式:",-1)),Ep={class:"row"},wp=xp(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"线条颜色:",-1)),Vp={class:"row"},Ip=xp(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"线条宽度:",-1)),Sp={class:"row"},Lp=xp(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"起点样式:",-1)),Bp={class:"row"},_p=xp(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"终点样式:",-1));var Tp=Object(n["defineComponent"])({__name:"LineStylePanel",setup(e){const t=Ci["a"].Option,l=T(),{handleElement:c}=Object(o["c"])(z()),a=c,{addHistorySnapshot:r}=Te(),i=e=>{c.value&&(l.updateElement({id:c.value.id,props:e}),r())};return(e,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",kp,[Object(n["createElementVNode"])("div",Cp,[Np,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:Object(n["unref"])(a).style,onChange:l[0]||(l[0]=e=>i({style:e}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),{value:"solid"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("实线")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{value:"dashed"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("虚线")]),_:1})]),_:1},8,["value"])]),Object(n["createElementVNode"])("div",Ep,[wp,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(a).color,"onUpdate:modelValue":l[1]||(l[1]=e=>i({color:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:Object(n["unref"])(a).color,style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createElementVNode"])("div",Vp,[Ip,Object(n["createVNode"])(Object(n["unref"])(jd["a"]),{value:Object(n["unref"])(a).width,onChange:l[2]||(l[2]=e=>i({width:e})),style:{flex:"3"}},null,8,["value"])]),Object(n["createElementVNode"])("div",Sp,[Lp,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:Object(n["unref"])(a).points[0],onChange:l[3]||(l[3]=e=>i({points:[e,Object(n["unref"])(a).points[1]]}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),{value:""},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("无")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{value:"arrow"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("箭头")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{value:"dot"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("圆点")]),_:1})]),_:1},8,["value"])]),Object(n["createElementVNode"])("div",Bp,[_p,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:Object(n["unref"])(a).points[1],onChange:l[4]||(l[4]=e=>i({points:[Object(n["unref"])(a).points[0],e]}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),{value:""},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("无")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{value:"arrow"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("箭头")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{value:"dot"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("圆点")]),_:1})]),_:1},8,["value"])]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(MO)]))}});l("99b8");const Mp=Yt()(Tp,[["__scopeId","data-v-0ca152b4"]]);var Dp=Mp,zp=(l("ee00"),l("bb76"));const Fp={class:"chart-data-editor"},Ap={class:"editor-content"},$p={class:"range-box"},Rp=["id","onFocus","onPaste"],Pp={class:"btns"},Hp={class:"left"},qp={class:"right"};var Up=Object(n["defineComponent"])({__name:"ChartDataEditor",props:{data:{type:Object,required:!0}},emits:["save","close"],setup(e,{emit:t}){const l=e,c=100,o=32,a=Object(n["ref"])([0,0]),r=Object(n["ref"])({width:0,height:0}),i=Object(n["ref"])(null),s=Object(n["computed"])(()=>{const e=a.value[0]*c,t=a.value[1]*o;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(n["computed"])(()=>{const e=a.value[0]*c,t=a.value[1]*o;return{left:e+"px",top:t+"px"}}),u=()=>{const e=[],{labels:t,legends:c,series:n}=l.data,o=t.length,r=n.length;e.push(["",...c]);for(let l=0;l{if(!i.value)return;const[e,t]=i.value,l=document.querySelector(`#cell-${e+1}-${t}`);l&&l.focus()},O=e=>{const t=e.key.toUpperCase();t===te.ENTER&&b()};Object(n["onMounted"])(()=>{document.addEventListener("keydown",O)}),Object(n["onUnmounted"])(()=>{document.removeEventListener("keydown",O)});const m=()=>{const[e,l]=a.value,c=[],n=[],o=[];for(let t=1;t{for(let e=1;e<31;e++)for(let t=1;t<7;t++){const l=document.querySelector(`#cell-${e}-${t}`);l&&(l.value="")}},f=(e,t,l)=>{if(e.preventDefault(),!e.clipboardData)return;const c=e.clipboardData.items[0];c&&"string"===c.kind&&"text/plain"===c.type&&c.getAsString(e=>{const c=me(e);if("object"===typeof c)return;const n=pe(e);if(n){const e=t+n.length,c=l+n[0].length;for(let o=t;ot("close"),v=e=>{let t=!0;const l=e.pageX,n=e.pageY,i=a.value[0]*c,s=a.value[1]*o;document.onmousemove=e=>{if(!t)return;const c=e.pageX,o=e.pageY,a=c-l,d=o-n,u=i+a,b=s+d;r.value={width:u,height:b}},document.onmouseup=e=>{t=!1,document.onmousemove=null,document.onmouseup=null;const i=e.pageX,s=e.pageY;if(l===i&&n===s)return;let d=r.value.width,u=r.value.height;d%c>.5*c&&(d+=c-d%c),u%o>.5*o&&(u+=o-u%o);let b=Math.round(u/o),O=Math.round(d/c);b<3&&(b=3),O<2&&(O=2),a.value=[O,b],r.value={width:0,height:0}}};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Fp,[Object(n["createElementVNode"])("div",Ap,[Object(n["createElementVNode"])("div",$p,[Object(n["createElementVNode"])("div",{class:"temp-range",style:Object(n["normalizeStyle"])({width:r.value.width+"px",height:r.value.height+"px"})},null,4),(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(s),e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["range-line",e.type]),key:e.type,style:Object(n["normalizeStyle"])(e.style)},null,6))),128)),Object(n["createElementVNode"])("div",{class:"resizable",style:Object(n["normalizeStyle"])(Object(n["unref"])(d)),onMousedown:t[0]||(t[0]=Object(n["withModifiers"])(e=>v(e),["stop"]))},null,36)]),Object(n["createElementVNode"])("table",null,[Object(n["createElementVNode"])("tbody",null,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(31,e=>Object(n["createElementVNode"])("tr",{key:e},[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(7,t=>Object(n["createElementVNode"])("td",{key:t,class:Object(n["normalizeClass"])({head:1===t&&e<=a.value[1]||1===e&&t<=a.value[0]})},[Object(n["createElementVNode"])("input",{class:Object(n["normalizeClass"])(["item",{selected:e<=a.value[1]&&t<=a.value[0]}]),id:`cell-${e-1}-${t-1}`,autocomplete:"off",onFocus:l=>i.value=[e-1,t-1],onPaste:l=>f(l,e-1,t-1)},null,42,Rp)],2)),64))])),64))])])]),Object(n["createElementVNode"])("div",Pp,[Object(n["createElementVNode"])("div",Hp,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn",onClick:t[1]||(t[1]=e=>p())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("清空")]),_:1})]),Object(n["createElementVNode"])("div",qp,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn",onClick:t[2]||(t[2]=e=>j())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("取消")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{type:"primary",class:"btn",onClick:t[3]||(t[3]=e=>m()),style:{"margin-left":"10px"}},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("确认")]),_:1})])])]))}});l("18a5");const Gp=Yt()(Up,[["__scopeId","data-v-1eab5a3a"]]);var Xp=Gp;const Yp=e=>(Object(n["pushScopeId"])("data-v-73760920"),e=e(),Object(n["popScopeId"])(),e),Zp={class:"chart-style-panel"},Wp={class:"row"},Jp={class:"row"},Kp={key:1,class:"row"},Qp={key:2,class:"row"},ef={class:"row"},tf=Yp(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"图例:",-1)),lf={class:"row"},cf=Yp(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"背景填充:",-1)),nf={class:"row"},of=Yp(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"网格颜色:",-1)),af={style:{flex:"2"}},rf={class:"color-btn-wrap",style:{flex:"3"}},sf=["onClick"],df={class:"preset-themes"},uf=["onClick","onMouseenter"];var bf=Object(n["defineComponent"])({__name:"index",setup(e){const t=xi["a"].Group,l=Ci["a"].Option,c=[["#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"]],a=z(),r=T(),{handleElement:i,handleElementId:s}=Object(o["c"])(a),{theme:d}=Object(o["c"])(r),u=i,b=Object(n["ref"])(!1),O=Object(n["ref"])(!1),m=Object(n["ref"])([-1,-1]),{addHistorySnapshot:p}=Te(),f=Object(n["ref"])("#000"),j=Object(n["ref"])([]),v=Object(n["ref"])(""),h=Object(n["ref"])(""),y=Object(n["ref"])(!0),g=Object(n["ref"])(!0),x=Object(n["ref"])(!1),k=Object(n["ref"])(!1),C=Object(n["ref"])(!1),N=Object(n["ref"])(!1);Object(n["watch"])(i,()=>{if(i.value&&"chart"===i.value.type){if(f.value=i.value.fill||"#fff",i.value.options){const{lineSmooth:e,showLine:t,showArea:l,horizontalBars:c,donut:n,stackBars:o}=i.value.options;void 0!==e&&(y.value=e),void 0!==t&&(g.value=t),void 0!==l&&(x.value=l),void 0!==c&&(k.value=c),void 0!==n&&(C.value=n),void 0!==o&&(N.value=o)}j.value=i.value.themeColor,v.value=i.value.gridColor||"#333",h.value=i.value.legend||""}},{deep:!0,immediate:!0});const E=e=>{r.updateElement({id:s.value,props:e}),p()},w=e=>{b.value=!1,E({data:e})},V=e=>{E({fill:e})},I=e=>{const t=i.value,l={...t.options,...e};E({options:l})},S=(e,t)=>{const l={themeColor:j.value.map((l,c)=>c===t?e:l)};E(l)},L=()=>{const e={themeColor:[...j.value,d.value.themeColor]};E(e)},B=(e,t)=>{const l=e.slice(0,t+1);E({themeColor:l}),O.value=!1},_=e=>{const t={themeColor:j.value.filter((t,l)=>l!==e)};E(t)},M=e=>{E({gridColor:e})},D=e=>{E({legend:e})},F=()=>b.value=!0;return yn.on(jn.OPEN_CHART_DATA_EDITOR,F),Object(n["onUnmounted"])(()=>{yn.off(jn.OPEN_CHART_DATA_EDITOR,F)}),(e,o)=>{const a=Object(n["resolveComponent"])("IconEdit"),r=Object(n["resolveComponent"])("IconCloseSmall"),i=Object(n["resolveComponent"])("IconPlus");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Zp,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"full-width-btn",onClick:o[0]||(o[0]=e=>b.value=!0)},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(a,{class:"btn-icon"}),Object(n["createTextVNode"])(" 编辑图表数据 ")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),"line"===Object(n["unref"])(u).chartType?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[Object(n["createElementVNode"])("div",Wp,[Object(n["createVNode"])(Object(n["unref"])(zp["a"]),{onChange:o[1]||(o[1]=e=>I({showArea:e.target.checked})),checked:x.value,style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("面积图样式")]),_:1},8,["checked"]),Object(n["createVNode"])(Object(n["unref"])(zp["a"]),{onChange:o[2]||(o[2]=e=>I({showLine:!e.target.checked})),checked:!g.value,style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("散点图样式")]),_:1},8,["checked"])]),Object(n["createElementVNode"])("div",Jp,[Object(n["createVNode"])(Object(n["unref"])(zp["a"]),{onChange:o[3]||(o[3]=e=>I({lineSmooth:e.target.checked})),checked:y.value},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("使用平滑曲线")]),_:1},8,["checked"])])],64)):Object(n["createCommentVNode"])("",!0),"bar"===Object(n["unref"])(u).chartType?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Kp,[Object(n["createVNode"])(Object(n["unref"])(zp["a"]),{onChange:o[4]||(o[4]=e=>I({horizontalBars:e.target.checked})),checked:k.value},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("条形图样式")]),_:1},8,["checked"]),Object(n["createVNode"])(Object(n["unref"])(zp["a"]),{onChange:o[5]||(o[5]=e=>I({stackBars:e.target.checked})),checked:N.value},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("堆叠样式")]),_:1},8,["checked"])])):Object(n["createCommentVNode"])("",!0),"pie"===Object(n["unref"])(u).chartType?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Qp,[Object(n["createVNode"])(Object(n["unref"])(zp["a"]),{onChange:o[6]||(o[6]=e=>I({donut:e.target.checked})),checked:C.value},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("环形图样式")]),_:1},8,["checked"])])):Object(n["createCommentVNode"])("",!0),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createElementVNode"])("div",ef,[tf,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:h.value,onChange:o[7]||(o[7]=e=>D(e))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:""},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("不显示")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(l),{value:"top"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("显示在上方")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(l),{value:"bottom"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("显示在下方")]),_:1})]),_:1},8,["value"])]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createElementVNode"])("div",lf,[cf,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:f.value,"onUpdate:modelValue":o[8]||(o[8]=e=>V(e))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:f.value,style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createElementVNode"])("div",nf,[of,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:v.value,"onUpdate:modelValue":o[9]||(o[9]=e=>M(e))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:v.value,style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(j.value,(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"row",key:t},[Object(n["createElementVNode"])("div",af,Object(n["toDisplayString"])(0===t?"主题配色:":""),1),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:e,"onUpdate:modelValue":e=>S(e,t)},null,8,["modelValue","onUpdate:modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",rf,[Object(n["createVNode"])(ib,{color:e,style:{width:"100%"}},null,8,["color"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除"},{default:Object(n["withCtx"])(()=>[0!==t?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:"delete-color-btn",onClick:Object(n["withModifiers"])(e=>_(t),["stop"])},[Object(n["createVNode"])(r)],8,sf)):Object(n["createCommentVNode"])("",!0)]),_:2},1032,["mouseEnterDelay"])])]),_:2},1024)]))),128)),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:O.value,"onUpdate:visible":o[11]||(o[11]=e=>O.value=e)},{content:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",df,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(c,(e,t)=>Object(n["createElementVNode"])("div",{class:"preset-theme",key:t},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e,(l,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["preset-theme-color",{select:m.value[0]===t&&c<=m.value[1]}]),key:l,style:Object(n["normalizeStyle"])({backgroundColor:l}),onClick:t=>B(e,c),onMouseenter:e=>m.value=[t,c],onMouseleave:o[10]||(o[10]=e=>m.value=[-1,-1])},null,46,uf))),128))])),64))])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"no-padding",style:{flex:"2"}},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("推荐主题")]),_:1})]),_:1},8,["visible"]),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"no-padding",disabled:j.value.length>=10,style:{flex:"3"},onClick:o[12]||(o[12]=e=>L())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(i,{class:"btn-icon"}),Object(n["createTextVNode"])(" 添加主题色 ")]),_:1},8,["disabled"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(hO),Object(n["createVNode"])(Object(n["unref"])(le["a"]),{visible:b.value,"onUpdate:visible":o[15]||(o[15]=e=>b.value=e),footer:null,centered:"",closable:!1,width:648,destroyOnClose:""},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Xp,{data:Object(n["unref"])(u).data,onClose:o[13]||(o[13]=e=>b.value=!1),onSave:o[14]||(o[14]=e=>w(e))},null,8,["data"])]),_:1},8,["visible"])])}}});l("e818");const Of=Yt()(bf,[["__scopeId","data-v-73760920"]]);var mf=Of;const pf=e=>(Object(n["pushScopeId"])("data-v-79a422e5"),e=e(),Object(n["popScopeId"])(),e),ff={class:"table-style-panel"},jf={class:"row"},vf=pf(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"行数:",-1)),hf={class:"set-count",style:{flex:"3"}},yf={class:"count-text"},gf={class:"row"},xf=pf(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"列数:",-1)),kf={class:"set-count",style:{flex:"3"}},Cf={class:"count-text"},Nf={class:"row theme-switch"},Ef=pf(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"启用主题表格:",-1)),wf={class:"switch-wrapper",style:{flex:"3"}},Vf={class:"row"},If={class:"row"},Sf={class:"row"},Lf=pf(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"主题颜色:",-1));var Bf=Object(n["defineComponent"])({__name:"TableStylePanel",setup(e){const{Group:t,Button:l}=Yu["a"],{OptGroup:c,Option:r}=Ci["a"],s=ki["a"].Group,d=xi["a"].Group,u=T(),{handleElement:b,handleElementId:O,selectedTableCells:m,availableFonts:p}=Object(o["c"])(z()),f=Object(n["computed"])(()=>u.theme.themeColor),j=["12px","14px","16px","18px","20px","22px","24px","28px","32px"],v=Object(n["ref"])({bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"",fontsize:"12px",fontname:"微软雅黑",align:"left"}),h=Object(n["ref"])(),y=Object(n["ref"])(!1),g=Object(n["ref"])(0),x=Object(n["ref"])(0),k=Object(n["ref"])(0),C=Object(n["ref"])(0);Object(n["watch"])(b,()=>{b.value&&"table"===b.value.type&&(h.value=b.value.theme,y.value=!!h.value,g.value=b.value.data.length,x.value=b.value.data[0].length,k.value=b.value.data.length,C.value=b.value.data[0].length)},{deep:!0,immediate:!0});const{addHistorySnapshot:N}=Te(),E=()=>{if(!b.value||"table"!==b.value.type)return;let e=0,t=0;if(m.value.length){const l=m.value[0];e=+l.split("_")[0],t=+l.split("_")[1]}const l=b.value.data[e][t].style;v.value=l?{bold:!!l.bold,em:!!l.em,underline:!!l.underline,strikethrough:!!l.strikethrough,color:l.color||"#000",backcolor:l.backcolor||"",fontsize:l.fontsize||"12px",fontname:l.fontname||"微软雅黑",align:l.align||"left"}:{bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"",fontsize:"12px",fontname:"微软雅黑",align:"left"}};Object(n["onMounted"])(()=>{m.value.length&&E()}),Object(n["watch"])(m,E);const w=e=>{u.updateElement({id:O.value,props:e}),N()},V=e=>{const t=b.value,l=JSON.parse(JSON.stringify(t.data));for(let c=0;c{if(!h.value)return;const t={...h.value,...e};w({theme:t})},S=e=>{if(e){const e={theme:{color:f.value,rowHeader:!0,rowFooter:!1,colHeader:!1,colFooter:!1}};w(e)}else u.removeElementProps({id:O.value,propName:"theme"}),N()},L=e=>{const t=b.value,l=t.data.length;if(e>l){const c=new Array(x.value).fill({id:Object(a["b"])(10),colspan:1,rowspan:1,text:""}),n=new Array(e-l).fill(c),o=JSON.parse(JSON.stringify(t.data));o.push(...n),w({data:o})}else{const l=t.data.slice(0,e);w({data:l})}},B=e=>{const t=b.value,l=t.data[0].length;let c=t.data,n=t.colWidths.map(e=>e*t.width);if(e>l){c=c.map(t=>{const c=new Array(e-l).fill({id:Object(a["b"])(10),colspan:1,rowspan:1,text:""});return t.push(...c),t});const t=new Array(e-l).fill(100);n.push(...t)}else c=c.map(t=>t.slice(0,e)),n=n.slice(0,e);const o=n.reduce((e,t)=>e+t),r=n.map(e=>e/o),i={width:o,data:c,colWidths:r};w(i)};return(e,o)=>{const a=Object(n["resolveComponent"])("IconFontSize"),u=Object(n["resolveComponent"])("IconAddText"),b=Object(n["resolveComponent"])("IconText"),O=Object(n["resolveComponent"])("IconFill"),m=Object(n["resolveComponent"])("IconTextBold"),f=Object(n["resolveComponent"])("IconTextItalic"),k=Object(n["resolveComponent"])("IconTextUnderline"),C=Object(n["resolveComponent"])("IconStrikethrough"),N=Object(n["resolveComponent"])("IconAlignTextLeft"),E=Object(n["resolveComponent"])("IconAlignTextCenter"),w=Object(n["resolveComponent"])("IconAlignTextRight"),_=Object(n["resolveComponent"])("IconMinus"),T=Object(n["resolveComponent"])("IconPlus");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ff,[Object(n["createVNode"])(Object(n["unref"])(s),{compact:"",class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:v.value.fontname,onChange:o[0]||(o[0]=e=>V({fontname:e}))},{suffixIcon:Object(n["withCtx"])(()=>[Object(n["createVNode"])(a)]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(c),{label:"系统字体"},{default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(p),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(r),{key:e.value,value:e.value},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("span",{style:Object(n["normalizeStyle"])({fontFamily:e.value})},Object(n["toDisplayString"])(e.label),5)]),_:2},1032,["value"]))),128))]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{label:"在线字体"},{default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(i),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(r),{key:e.value,value:e.value},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.label),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["value"]),Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"2"},value:v.value.fontsize,onChange:o[1]||(o[1]=e=>V({fontsize:e}))},{suffixIcon:Object(n["withCtx"])(()=>[Object(n["createVNode"])(u)]),default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(j,e=>Object(n["createVNode"])(Object(n["unref"])(r),{key:e,value:e},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(d),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:v.value.color,"onUpdate:modelValue":o[2]||(o[2]=e=>V({color:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(AO,{color:v.value.color,style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(b)]),_:1},8,["color"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:v.value.backcolor,"onUpdate:modelValue":o[3]||(o[3]=e=>V({backcolor:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"单元格填充"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(AO,{color:v.value.backcolor,style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(O)]),_:1},8,["color"])]),_:1},8,["mouseEnterDelay"])]),_:1})]),_:1}),Object(n["createVNode"])(XO,{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"加粗"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:v.value.bold,onClick:o[4]||(o[4]=e=>V({bold:!v.value.bold}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(m)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"斜体"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:v.value.em,onClick:o[5]||(o[5]=e=>V({em:!v.value.em}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(f)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下划线"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:v.value.underline,onClick:o[6]||(o[6]=e=>V({underline:!v.value.underline}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(k)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除线"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:v.value.strikethrough,onClick:o[7]||(o[7]=e=>V({strikethrough:!v.value.strikethrough}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(C)]),_:1},8,["checked"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row","button-style":"solid",value:v.value.align,onChange:o[8]||(o[8]=e=>V({align:e.target.value}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"left",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(N)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"center",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(E)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"right",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(w)]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1},8,["value"]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(hO,{fixed:!0}),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createElementVNode"])("div",jf,[vf,Object(n["createElementVNode"])("div",hf,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn",disabled:g.value<=1,onClick:o[9]||(o[9]=e=>L(g.value-1))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(_)]),_:1},8,["disabled"]),Object(n["createElementVNode"])("div",yf,Object(n["toDisplayString"])(g.value),1),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn",disabled:g.value>=30,onClick:o[10]||(o[10]=e=>L(g.value+1))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(T)]),_:1},8,["disabled"])])]),Object(n["createElementVNode"])("div",gf,[xf,Object(n["createElementVNode"])("div",kf,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn",disabled:x.value<=1,onClick:o[11]||(o[11]=e=>B(x.value-1))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(_)]),_:1},8,["disabled"]),Object(n["createElementVNode"])("div",Cf,Object(n["toDisplayString"])(x.value),1),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn",disabled:x.value>=30,onClick:o[12]||(o[12]=e=>B(x.value+1))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(T)]),_:1},8,["disabled"])])]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createElementVNode"])("div",Nf,[Ef,Object(n["createElementVNode"])("div",wf,[Object(n["createVNode"])(Object(n["unref"])(nb["a"]),{checked:y.value,onChange:o[13]||(o[13]=e=>S(e))},null,8,["checked"])])]),h.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[Object(n["createElementVNode"])("div",Vf,[Object(n["createVNode"])(Object(n["unref"])(zp["a"]),{onChange:o[14]||(o[14]=e=>I({rowHeader:e.target.checked})),checked:h.value.rowHeader,style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("标题行")]),_:1},8,["checked"]),Object(n["createVNode"])(Object(n["unref"])(zp["a"]),{onChange:o[15]||(o[15]=e=>I({rowFooter:e.target.checked})),checked:h.value.rowFooter,style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("汇总行")]),_:1},8,["checked"])]),Object(n["createElementVNode"])("div",If,[Object(n["createVNode"])(Object(n["unref"])(zp["a"]),{onChange:o[16]||(o[16]=e=>I({colHeader:e.target.checked})),checked:h.value.colHeader,style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("第一列")]),_:1},8,["checked"]),Object(n["createVNode"])(Object(n["unref"])(zp["a"]),{onChange:o[17]||(o[17]=e=>I({colFooter:e.target.checked})),checked:h.value.colFooter,style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("最后一列")]),_:1},8,["checked"])]),Object(n["createElementVNode"])("div",Sf,[Lf,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:h.value.color,"onUpdate:modelValue":o[18]||(o[18]=e=>I({color:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:h.value.color,style:{flex:"3"}},null,8,["color"])]),_:1})])],64)):Object(n["createCommentVNode"])("",!0)])}}});l("ecba");const _f=Yt()(Bf,[["__scopeId","data-v-79a422e5"]]);var Tf=_f;const Mf=e=>(Object(n["pushScopeId"])("data-v-79d8ab96"),e=e(),Object(n["popScopeId"])(),e),Df={class:"latex-style-panel"},zf={class:"row"},Ff={class:"row"},Af=Mf(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"颜色:",-1)),$f={class:"row"},Rf=Mf(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"粗细:",-1));var Pf=Object(n["defineComponent"])({__name:"LatexStylePanel",setup(e){const t=T(),{handleElement:l}=Object(o["c"])(z()),c=l,a=Object(n["ref"])(!1),{addHistorySnapshot:r}=Te(),i=e=>{l.value&&(t.updateElement({id:l.value.id,props:e}),r())},s=e=>{i({path:e.path,latex:e.latex,width:e.w,height:e.h,viewBox:[e.w,e.h]})},d=()=>a.value=!0;return yn.on(jn.OPEN_LATEX_EDITOR,d),Object(n["onUnmounted"])(()=>{yn.off(jn.OPEN_LATEX_EDITOR,d)}),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Df,[Object(n["createElementVNode"])("div",zf,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:t[0]||(t[0]=e=>a.value=!0)},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("编辑 LaTeX")]),_:1})]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createElementVNode"])("div",Ff,[Af,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(c).color,"onUpdate:modelValue":t[1]||(t[1]=e=>i({color:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:Object(n["unref"])(c).color,style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createElementVNode"])("div",$f,[Rf,Object(n["createVNode"])(Object(n["unref"])(jd["a"]),{min:1,max:3,value:Object(n["unref"])(c).strokeWidth,onChange:t[2]||(t[2]=e=>i({strokeWidth:e})),style:{flex:"3"}},null,8,["value"])]),Object(n["createVNode"])(Object(n["unref"])(le["a"]),{visible:a.value,"onUpdate:visible":t[5]||(t[5]=e=>a.value=e),footer:null,centered:"",width:880,destroyOnClose:""},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(gu,{value:Object(n["unref"])(c).latex,onClose:t[3]||(t[3]=e=>a.value=!1),onUpdate:t[4]||(t[4]=e=>{s(e),a.value=!1})},null,8,["value"])]),_:1},8,["visible"])]))}});l("0593");const Hf=Yt()(Pf,[["__scopeId","data-v-79d8ab96"]]);var qf=Hf;const Uf=e=>(Object(n["pushScopeId"])("data-v-802e1e06"),e=e(),Object(n["popScopeId"])(),e),Gf={class:"video-style-panel"},Xf=Uf(()=>Object(n["createElementVNode"])("div",{class:"title"},"视频预览封面",-1)),Yf={class:"background-image-wrapper"},Zf={class:"background-image"},Wf={class:"row"};var Jf=Object(n["defineComponent"])({__name:"VideoStylePanel",setup(e){const t=T(),{handleElement:l}=Object(o["c"])(z()),c=l,{addHistorySnapshot:a}=Te(),r=e=>{l.value&&(t.updateElement({id:l.value.id,props:e}),a())},i=e=>{const t=e[0];t&&we(t).then(e=>r({poster:e}))};return(e,t)=>{const l=Object(n["resolveComponent"])("IconPlus");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Gf,[Xf,Object(n["createElementVNode"])("div",Yf,[Object(n["createVNode"])(el,{onChange:t[0]||(t[0]=e=>i(e))},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",Zf,[Object(n["createElementVNode"])("div",{class:"content",style:Object(n["normalizeStyle"])({backgroundImage:`url(${Object(n["unref"])(c).poster})`})},[Object(n["createVNode"])(l)],4)])]),_:1})]),Object(n["createElementVNode"])("div",Wf,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:t[1]||(t[1]=e=>r({poster:""}))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("重置封面")]),_:1})])])}}});l("e38f");const Kf=Yt()(Jf,[["__scopeId","data-v-802e1e06"]]);var Qf=Kf;const ej=e=>(Object(n["pushScopeId"])("data-v-1da06c97"),e=e(),Object(n["popScopeId"])(),e),tj={class:"audio-style-panel"},lj={class:"row"},cj=ej(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"图标颜色:",-1)),nj={class:"row switch-row"},oj=ej(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"自动播放:",-1)),aj={class:"switch-wrapper",style:{flex:"3"}},rj={class:"row switch-row"},ij=ej(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"循环播放:",-1)),sj={class:"switch-wrapper",style:{flex:"3"}};var dj=Object(n["defineComponent"])({__name:"AudioStylePanel",setup(e){const t=T(),{handleElement:l}=Object(o["c"])(z()),c=l,{addHistorySnapshot:a}=Te(),r=e=>{l.value&&(t.updateElement({id:l.value.id,props:e}),a())};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",tj,[Object(n["createElementVNode"])("div",lj,[cj,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(c).color,"onUpdate:modelValue":t[0]||(t[0]=e=>r({color:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:Object(n["unref"])(c).color,style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createElementVNode"])("div",nj,[oj,Object(n["createElementVNode"])("div",aj,[Object(n["createVNode"])(Object(n["unref"])(nb["a"]),{checked:Object(n["unref"])(c).autoplay,onChange:t[1]||(t[1]=e=>r({autoplay:e}))},null,8,["checked"])])]),Object(n["createElementVNode"])("div",rj,[ij,Object(n["createElementVNode"])("div",sj,[Object(n["createVNode"])(Object(n["unref"])(nb["a"]),{checked:Object(n["unref"])(c).loop,onChange:t[2]||(t[2]=e=>r({loop:e}))},null,8,["checked"])])])]))}});l("796c");const uj=Yt()(dj,[["__scopeId","data-v-1da06c97"]]);var bj=uj;const Oj=e=>(Object(n["pushScopeId"])("data-v-de815ffa"),e=e(),Object(n["popScopeId"])(),e),mj={class:"multi-style-panel"},pj={class:"row"},fj=Oj(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"填充颜色:",-1)),jj={class:"row"},vj=Oj(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"边框样式:",-1)),hj={class:"row"},yj=Oj(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"边框颜色:",-1)),gj={class:"row"},xj=Oj(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"边框粗细:",-1));var kj=Object(n["defineComponent"])({__name:"MultiStylePanel",setup(e){const{Button:t,Group:l}=Yu["a"],{OptGroup:c,Option:a}=Ci["a"],r=ki["a"].Group,s=xi["a"].Group,d=T(),{richTextAttrs:u,availableFonts:b,activeElementList:O}=Object(o["c"])(z()),{addHistorySnapshot:m}=Te(),p=(e,t)=>{d.updateElement({id:e,props:t}),m()},f=["12px","14px","16px","18px","20px","22px","24px","28px","32px","36px","40px","44px","48px","54px","60px","66px","72px","76px","80px","88px","96px","104px","112px","120px"],j=Object(n["ref"])("#fff"),v=Object(n["ref"])({width:0,color:"#fff",style:"solid"}),h=e=>{for(const t of O.value){if("text"!==t.type&&"shape"!==t.type&&"chart"!==t.type||p(t.id,{fill:e}),"table"===t.type){const l=JSON.parse(JSON.stringify(t.data));for(let t=0;t{for(const t of O.value){if("text"===t.type||"image"===t.type||"shape"===t.type||"table"===t.type||"chart"===t.type){const l=t.outline||{width:2,color:"#000",style:"solid"},c={outline:{...l,...e}};p(t.id,c)}"line"===t.type&&p(t.id,e)}v.value={...v.value,...e}},g=(e,t)=>{for(const c of O.value){var l;if(("text"===c.type||"shape"===c.type&&null!==(l=c.text)&&void 0!==l&&l.content)&&yn.emit(jn.RICH_TEXT_COMMAND,{target:c.id,action:{command:e,value:t}}),"table"===c.type){const l=JSON.parse(JSON.stringify(c.data));for(let c=0;c{const d=Object(n["resolveComponent"])("IconFontSize"),O=Object(n["resolveComponent"])("IconAddText"),m=Object(n["resolveComponent"])("IconText"),p=Object(n["resolveComponent"])("IconHighLight"),x=Object(n["resolveComponent"])("IconAlignTextLeft"),k=Object(n["resolveComponent"])("IconAlignTextCenter"),C=Object(n["resolveComponent"])("IconAlignTextRight");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",mj,[Object(n["createElementVNode"])("div",pj,[fj,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:j.value,"onUpdate:modelValue":o[0]||(o[0]=e=>h(e))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:j.value,style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createElementVNode"])("div",jj,[vj,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:v.value.style,onChange:o[1]||(o[1]=e=>y({style:e}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(a),{value:"solid"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("实线边框")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(a),{value:"dashed"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("虚线边框")]),_:1})]),_:1},8,["value"])]),Object(n["createElementVNode"])("div",hj,[yj,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:v.value.color,"onUpdate:modelValue":o[2]||(o[2]=e=>y({color:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:v.value.color||"#000",style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createElementVNode"])("div",gj,[xj,Object(n["createVNode"])(Object(n["unref"])(jd["a"]),{value:v.value.width,onChange:o[3]||(o[3]=e=>y({width:e})),style:{flex:"3"}},null,8,["value"])]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(Object(n["unref"])(r),{compact:"",class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:Object(n["unref"])(u).fontname,onChange:o[4]||(o[4]=e=>g("fontname",e))},{suffixIcon:Object(n["withCtx"])(()=>[Object(n["createVNode"])(d)]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(c),{label:"系统字体"},{default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(b),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(a),{key:e.value,value:e.value},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("span",{style:Object(n["normalizeStyle"])({fontFamily:e.value})},Object(n["toDisplayString"])(e.label),5)]),_:2},1032,["value"]))),128))]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{label:"在线字体"},{default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(i),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(a),{key:e.value,value:e.value},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.label),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["value"]),Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"2"},value:Object(n["unref"])(u).fontsize,onChange:o[5]||(o[5]=e=>g("fontsize",e))},{suffixIcon:Object(n["withCtx"])(()=>[Object(n["createVNode"])(O)]),default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(f,e=>Object(n["createVNode"])(Object(n["unref"])(a),{key:e,value:e},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(s),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(u).color,"onUpdate:modelValue":o[6]||(o[6]=e=>g("color",e))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(AO,{color:Object(n["unref"])(u).color,style:{flex:"3"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(m)]),_:1},8,["color"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(u).backcolor,"onUpdate:modelValue":o[7]||(o[7]=e=>g("backcolor",e))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字高亮"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(AO,{color:Object(n["unref"])(u).backcolor,style:{flex:"3"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(p)]),_:1},8,["color"])]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"增大字号"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"font-size-btn",style:{flex:"2"},onClick:o[8]||(o[8]=e=>g("fontsize-add","2"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(d),Object(n["createTextVNode"])("+")]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"减小字号"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"font-size-btn",style:{flex:"2"},onClick:o[9]||(o[9]=e=>g("fontsize-reduce","2"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(d),Object(n["createTextVNode"])("-")]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(l),{class:"row","button-style":"solid",value:Object(n["unref"])(u).align,onChange:o[10]||(o[10]=e=>g("align",e.target.value))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),{value:"left",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(x)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),{value:"center",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(k)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),{value:"right",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(C)]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1},8,["value"])])}}});l("173e");const Cj=Yt()(kj,[["__scopeId","data-v-de815ffa"]]);var Nj=Cj;const Ej={class:"element-style-panel"};var wj=Object(n["defineComponent"])({__name:"index",setup(e){const t={[Se.TEXT]:xm,[Se.IMAGE]:np,[Se.SHAPE]:gp,[Se.LINE]:Dp,[Se.CHART]:mf,[Se.TABLE]:Tf,[Se.LATEX]:qf,[Se.VIDEO]:Qf,[Se.AUDIO]:bj},{activeElementIdList:l,activeElementList:c,handleElement:a,activeGroupElementId:r}=Object(o["c"])(z()),i=Object(n["computed"])(()=>{if(l.value.length>1){if(!r.value)return Nj;const e=c.value.find(e=>e.id===r.value);return e&&t[e.type]||null}return a.value&&t[a.value.type]||null});return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ej,[(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["resolveDynamicComponent"])(Object(n["unref"])(i))))]))}});const Vj=wj;var Ij=Vj;const Sj=e=>(Object(n["pushScopeId"])("data-v-08d61819"),e=e(),Object(n["popScopeId"])(),e),Lj={class:"element-positopn-panel"},Bj=Sj(()=>Object(n["createElementVNode"])("div",{class:"title"},"层级:",-1)),_j=Sj(()=>Object(n["createElementVNode"])("div",{class:"title"},"对齐:",-1)),Tj={class:"row"},Mj=Sj(()=>Object(n["createElementVNode"])("div",{style:{flex:"1"}},null,-1)),Dj={key:0,class:"row"},zj={key:1,style:{flex:"1"}},Fj={class:"row"},Aj=Sj(()=>Object(n["createElementVNode"])("div",{style:{flex:"1"}},null,-1));var $j=Object(n["defineComponent"])({__name:"ElementPositionPanel",setup(e){const t=xi["a"].Group,l=T(),{handleElement:c,handleElementId:a}=Object(o["c"])(z()),r=Object(n["ref"])(0),i=Object(n["ref"])(0),s=Object(n["ref"])(0),d=Object(n["ref"])(0),u=Object(n["ref"])(0),b=Object(n["ref"])(!1),O=Object(n["computed"])(()=>c.value&&wl[c.value.type]||20),m=Object(n["computed"])(()=>{var e;return"text"===(null===(e=c.value)||void 0===e?void 0:e.type)&&!c.value.vertical}),p=Object(n["computed"])(()=>{var e;return"text"===(null===(e=c.value)||void 0===e?void 0:e.type)&&c.value.vertical});Object(n["watch"])(c,()=>{c.value&&(r.value=Object(S["round"])(c.value.left,1),i.value=Object(S["round"])(c.value.top,1),b.value="fixedRatio"in c.value&&!!c.value.fixedRatio,"line"!==c.value.type&&(s.value=Object(S["round"])(c.value.width,1),d.value=Object(S["round"])(c.value.height,1),u.value="rotate"in c.value&&void 0!==c.value.rotate?Object(S["round"])(c.value.rotate,1):0))},{deep:!0,immediate:!0});const{orderElement:f}=Ue(),{alignElementToCanvas:j}=Fl(),{addHistorySnapshot:v}=Te(),h=e=>{const t={left:e};l.updateElement({id:a.value,props:t}),v()},y=e=>{const t={top:e};l.updateElement({id:a.value,props:t}),v()},g=(e,t)=>{if(c.value&&"shape"===c.value.type&&"pathFormula"in c.value&&c.value.pathFormula){const l=Le[c.value.pathFormula];let n="";return n="editable"in l?l.formula(e,t,c.value.keypoint):l.formula(e,t),{viewBox:[e,t],path:n}}return null},x=e=>{let t={width:e};const c=g(e,d.value);c&&(t={...t,...c}),l.updateElement({id:a.value,props:t}),v()},k=e=>{let t={height:e};const c=g(s.value,e);c&&(t={...t,...c}),l.updateElement({id:a.value,props:t}),v()},C=e=>{const t={rotate:e};l.updateElement({id:a.value,props:t}),v()},N=e=>{const t={fixedRatio:e};l.updateElement({id:a.value,props:t}),v()},E=e=>{let t=45*Math.floor(u.value/45);"+"===e?t+=45:"-"===e&&(t-=45),t<-180&&(t=-180),t>180&&(t=180);const c={rotate:t};l.updateElement({id:a.value,props:c}),v()};return(e,l)=>{const o=Object(n["resolveComponent"])("IconSendToBack"),a=Object(n["resolveComponent"])("IconBringToFrontOne"),v=Object(n["resolveComponent"])("IconBringToFront"),g=Object(n["resolveComponent"])("IconSentToBack"),w=Object(n["resolveComponent"])("IconAlignLeft"),V=Object(n["resolveComponent"])("IconAlignVertically"),I=Object(n["resolveComponent"])("IconAlignRight"),S=Object(n["resolveComponent"])("IconAlignTop"),L=Object(n["resolveComponent"])("IconAlignHorizontally"),B=Object(n["resolveComponent"])("IconAlignBottom"),_=Object(n["resolveComponent"])("IconLock"),T=Object(n["resolveComponent"])("IconUnlock"),M=Object(n["resolveComponent"])("IconRotate");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Lj,[Bj,Object(n["createVNode"])(Object(n["unref"])(t),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[0]||(l[0]=e=>Object(n["unref"])(f)(Object(n["unref"])(c),Object(n["unref"])(W).TOP))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(o,{class:"btn-icon"}),Object(n["createTextVNode"])(" 置顶")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[1]||(l[1]=e=>Object(n["unref"])(f)(Object(n["unref"])(c),Object(n["unref"])(W).BOTTOM))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(a,{class:"btn-icon"}),Object(n["createTextVNode"])(" 置底")]),_:1})]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[2]||(l[2]=e=>Object(n["unref"])(f)(Object(n["unref"])(c),Object(n["unref"])(W).UP))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(v,{class:"btn-icon"}),Object(n["createTextVNode"])(" 上移")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[3]||(l[3]=e=>Object(n["unref"])(f)(Object(n["unref"])(c),Object(n["unref"])(W).DOWN))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(g,{class:"btn-icon"}),Object(n["createTextVNode"])(" 下移")]),_:1})]),_:1}),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),_j,Object(n["createVNode"])(Object(n["unref"])(t),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[4]||(l[4]=e=>Object(n["unref"])(j)(Object(n["unref"])(J).LEFT))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(w)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"水平居中"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[5]||(l[5]=e=>Object(n["unref"])(j)(Object(n["unref"])(J).HORIZONTAL))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(V)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[6]||(l[6]=e=>Object(n["unref"])(j)(Object(n["unref"])(J).RIGHT))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(I)]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[7]||(l[7]=e=>Object(n["unref"])(j)(Object(n["unref"])(J).TOP))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(S)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"垂直居中"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[8]||(l[8]=e=>Object(n["unref"])(j)(Object(n["unref"])(J).VERTICAL))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(L)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[9]||(l[9]=e=>Object(n["unref"])(j)(Object(n["unref"])(J).BOTTOM))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(B)]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createElementVNode"])("div",Tj,[Object(n["createVNode"])(Object(n["unref"])(jd["a"]),{prefix:"水平:",step:5,value:r.value,onChange:l[10]||(l[10]=e=>h(e)),style:{flex:"4"}},null,8,["value"]),Mj,Object(n["createVNode"])(Object(n["unref"])(jd["a"]),{prefix:"垂直:",step:5,value:i.value,onChange:l[11]||(l[11]=e=>y(e)),style:{flex:"4"}},null,8,["value"])]),"line"!==Object(n["unref"])(c).type?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Dj,[Object(n["createVNode"])(Object(n["unref"])(jd["a"]),{prefix:"宽度:",min:Object(n["unref"])(O),max:1500,step:5,disabled:Object(n["unref"])(p),value:s.value,onChange:l[12]||(l[12]=e=>x(e)),style:{flex:"4"}},null,8,["min","disabled","value"]),["image","shape","audio"].includes(Object(n["unref"])(c).type)?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[b.value?(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(et["a"]),{key:0,mouseLeaveDelay:0,mouseEnterDelay:.5,title:"解除宽高比锁定"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(_,{style:{flex:"1"},class:"icon-btn",onClick:l[13]||(l[13]=e=>N(!1))})]),_:1},8,["mouseEnterDelay"])):(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(et["a"]),{key:1,mouseLeaveDelay:0,mouseEnterDelay:.5,title:"宽高比锁定"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(T,{style:{flex:"1"},class:"icon-btn",onClick:l[14]||(l[14]=e=>N(!0))})]),_:1},8,["mouseEnterDelay"]))],64)):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",zj)),Object(n["createVNode"])(Object(n["unref"])(jd["a"]),{prefix:"高度:",min:Object(n["unref"])(O),max:800,step:5,disabled:Object(n["unref"])(m)||"table"===Object(n["unref"])(c).type,value:d.value,onChange:l[15]||(l[15]=e=>k(e)),style:{flex:"4"}},null,8,["min","disabled","value"])])):Object(n["createCommentVNode"])("",!0),["line","video","audio"].includes(Object(n["unref"])(c).type)?Object(n["createCommentVNode"])("",!0):(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:1},[Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createElementVNode"])("div",Fj,[Object(n["createVNode"])(Object(n["unref"])(jd["a"]),{prefix:"旋转:",min:-180,max:180,step:5,value:u.value,onChange:l[16]||(l[16]=e=>C(e)),style:{flex:"8"}},null,8,["value"]),Aj,Object(n["createElementVNode"])("div",{class:"text-btn",onClick:l[17]||(l[17]=e=>E("-")),style:{flex:"5"}},[Object(n["createVNode"])(M),Object(n["createTextVNode"])(" -45°")]),Object(n["createElementVNode"])("div",{class:"text-btn",onClick:l[18]||(l[18]=e=>E("+")),style:{flex:"5"}},[Object(n["createVNode"])(M,{style:Object(n["normalizeStyle"])({transform:"rotateY(180deg)"})},null,8,["style"]),Object(n["createTextVNode"])(" +45°")])])],64))])}}});l("691a");const Rj=Yt()($j,[["__scopeId","data-v-08d61819"]]);var Pj=Rj;const Hj=1e3,qj="click",Uj="animate__",Gj=[{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"}]}],Xj=[{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"}]}],Yj=[{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"}]}],Zj=e=>(Object(n["pushScopeId"])("data-v-7a134147"),e=e(),Object(n["popScopeId"])(),e),Wj={class:"element-animation-panel"},Jj={key:0,class:"element-animation"},Kj={class:"tabs"},Qj=["onClick"],ev={class:"type-title"},tv={class:"pool-item-wrapper"},lv=["onMouseenter","onClick"],cv={key:0,class:"mask"},nv={key:1,class:"tip"},ov={class:"sequence-content"},av={class:"index"},rv={class:"text"},iv={class:"handler"},sv={key:0,class:"configs"},dv={class:"config-item"},uv=Zj(()=>Object(n["createElementVNode"])("div",{style:{flex:"3"}},"持续时长:",-1)),bv={class:"config-item"},Ov=Zj(()=>Object(n["createElementVNode"])("div",{style:{flex:"3"}},"触发方式:",-1)),mv={class:"config-item"};var pv=Object(n["defineComponent"])({__name:"ElementAnimationPanel",setup(e){const t=Ci["a"].Option,l={};for(const n of Gj)for(const e of n.children)l[e.value]=e.name;for(const n of Xj)for(const e of n.children)l[e.value]=e.name;for(const n of Yj)for(const e of n.children)l[e.value]=e.name;const c=["in","out","attention"],r=T(),{handleElement:i,handleElementId:s}=Object(o["c"])(z()),{currentSlide:d,formatedAnimations:u,currentSlideAnimations:b}=Object(o["c"])(r),O=[{key:"in",label:"入场"},{key:"out",label:"退场"},{key:"attention",label:"强调"}],m=Object(n["ref"])("in");Object(n["watch"])(()=>s.value,()=>{f.value=!1});const p=Object(n["ref"])(""),f=Object(n["ref"])(!1),{addHistorySnapshot:j}=Te(),v=Object(n["computed"])(()=>{const e=[];for(let t=0;te.id===o.elId);if(!a)continue;const r=El[a.type],i=l[o.effect];e.push({...o,index:0===n?t+1:"",elType:r,animationEffect:i})}}return e}),h=Object(n["computed"])(()=>{const e=b.value,t=e.filter(e=>e.elId===s.value);return t||[]}),y=e=>{const t=b.value.filter(t=>t.id!==e);r.updateSlide({animations:t}),j()},g=e=>{const{newIndex:t,oldIndex:l}=e;if(l===t)return;const c=JSON.parse(JSON.stringify(b.value)),n=c[l];c.splice(l,1),c.splice(t,0,n),r.updateSlide({animations:c}),j()},x=(e,t,l)=>{const c=document.querySelector(`#editable-element-${e} [class^=editable-element-]`);if(c){const e=`${Uj}${t}`;document.documentElement.style.setProperty("--animate-duration",l+"ms"),c.classList.add(Uj+"animated",e);const n=()=>{document.documentElement.style.removeProperty("--animate-duration"),c.classList.remove(Uj+"animated",e)};c.addEventListener("animationend",n,{once:!0})}},k=(e,t)=>{if(t<100||t>5e3)return;const l=b.value.map(l=>l.id===e?{...l,duration:t}:l);r.updateSlide({animations:l}),j()},C=(e,t)=>{const l=b.value.map(l=>l.id===e?{...l,trigger:t}:l);r.updateSlide({animations:l}),j()},N=(e,t)=>{const l=b.value.map(l=>l.id===E.value?{...l,type:e,effect:t}:l);r.updateSlide({animations:l}),f.value=!1,j();const c=b.value.find(e=>e.elId===s.value),n=(null===c||void 0===c?void 0:c.duration)||Hj;x(s.value,t,n)},E=Object(n["ref"])(""),w=(e,t)=>{if(E.value)return void N(e,t);const l=JSON.parse(JSON.stringify(b.value));l.push({id:Object(a["b"])(10),elId:s.value,type:e,effect:t,duration:Hj,trigger:qj}),r.updateSlide({animations:l}),f.value=!1,j(),x(s.value,t,Hj)},V=Object(n["ref"])(!1),I=e=>{e?setTimeout(()=>V.value=!0,600):V.value=!1},S=e=>{f.value=!0,E.value=e,I(!0)},L={in:Gj,out:Xj,attention:Yj};return(e,l)=>{const o=Object(n["resolveComponent"])("IconEffects"),a=Object(n["resolveComponent"])("IconClick"),r=Object(n["resolveComponent"])("IconPlayOne"),s=Object(n["resolveComponent"])("IconCloseSmall");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Wj,[Object(n["unref"])(i)?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Jj,[Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:f.value,"onUpdate:visible":l[2]||(l[2]=e=>f.value=e),onVisibleChange:l[3]||(l[3]=e=>I(e))},{content:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",Kj,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(O,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["tab",e.key,{active:m.value===e.key}]),key:e.key,onClick:t=>m.value=e.key},Object(n["toDisplayString"])(e.label),11,Qj)),64))]),(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(c,e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,[m.value===e?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["animation-pool",e]),key:e},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(L[e],t=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"pool-type",key:t.name},[Object(n["createElementVNode"])("div",ev,Object(n["toDisplayString"])(t.name)+":",1),Object(n["createElementVNode"])("div",tv,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(t.children,t=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"pool-item",key:t.name,onMouseenter:e=>p.value=t.value,onMouseleave:l[0]||(l[0]=e=>p.value=""),onClick:l=>w(e,t.value)},[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["animation-box",[Object(n["unref"])(Uj)+"animated",Object(n["unref"])(Uj)+"fast",p.value===t.value&&`${Object(n["unref"])(Uj)}${t.value}`]])},Object(n["toDisplayString"])(t.name),3)],40,lv))),128))])]))),128)),V.value?Object(n["createCommentVNode"])("",!0):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",cv))],2)):Object(n["createCommentVNode"])("",!0)],64))),64))]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"element-animation-btn",onClick:l[1]||(l[1]=e=>E.value="")},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(o,{style:{"margin-right":"5px"}}),Object(n["createTextVNode"])(" 添加动画 ")]),_:1})]),_:1},8,["visible"])])):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",nv,[Object(n["createVNode"])(a,{style:{"margin-right":"5px"}}),Object(n["createTextVNode"])(" 选中画布中的元素添加动画")])),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(Object(n["unref"])(Mu.a),{class:"animation-sequence",modelValue:Object(n["unref"])(v),animation:300,scroll:!0,scrollSensitivity:50,handle:".sequence-content",onEnd:g,itemKey:"id"},{item:Object(n["withCtx"])(({element:e})=>{var l,c;return[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["sequence-item",[e.type,{active:(null===(l=Object(n["unref"])(i))||void 0===l?void 0:l.id)===e.elId}]])},[Object(n["createElementVNode"])("div",ov,[Object(n["createElementVNode"])("div",av,Object(n["toDisplayString"])(e.index),1),Object(n["createElementVNode"])("div",rv,"【"+Object(n["toDisplayString"])(e.elType)+"】"+Object(n["toDisplayString"])(e.animationEffect),1),Object(n["createElementVNode"])("div",iv,[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"预览"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(r,{class:"handler-btn",onClick:t=>x(e.elId,e.effect,e.duration)},null,8,["onClick"])]),_:2},1032,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(s,{class:"handler-btn",onClick:t=>y(e.id)},null,8,["onClick"])]),_:2},1032,["mouseEnterDelay"])])]),(null===(c=Object(n["unref"])(h)[0])||void 0===c?void 0:c.elId)===e.elId?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",sv,[Object(n["createVNode"])(Object(n["unref"])(ui["a"]),{style:{margin:"16px 0"}}),Object(n["createElementVNode"])("div",dv,[uv,Object(n["createVNode"])(Object(n["unref"])(jd["a"]),{min:500,max:3e3,step:500,value:e.duration,onChange:t=>k(e.id,t),style:{flex:"5"}},null,8,["value","onChange"])]),Object(n["createElementVNode"])("div",bv,[Ov,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{value:e.trigger,onChange:t=>C(e.id,t),style:{flex:"5"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),{value:"click"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("主动触发")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{value:"meantime"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("与上一动画同时")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{value:"auto"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("上一动画之后")]),_:1})]),_:2},1032,["value","onChange"])]),Object(n["createElementVNode"])("div",mv,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:t=>S(e.id)},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("更换动画")]),_:2},1032,["onClick"])])])):Object(n["createCommentVNode"])("",!0)],2)]}),_:1},8,["modelValue"])])}}});l("3650");const fv=Yt()(pv,[["__scopeId","data-v-7a134147"]]);var jv=fv;const vv=[{background:"#ffffff",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#5b9bd5","#ed7d31","#a5a5a5","#ffc000","#4472c4","#70ad47"]},{background:"#ffffff",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#83992a","#3c9670","#44709d","#a23b32","#d87728","#deb340"]},{background:"#ffffff",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#e48312","#bd582c","#865640","#9b8357","#c2bc80","#94a088"]},{background:"#ffffff",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#bdc8df","#003fa9","#f5ba00","#ff7567","#7676d9","#923ffc"]},{background:"#ffffff",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#90c225","#54a121","#e6b91e","#e86618","#c42f19","#918756"]},{background:"#ffffff",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#1cade4","#2683c6","#27ced7","#42ba97","#3e8853","#62a39f"]},{background:"#e9efd6",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#a5300f","#de7e18","#9f8351","#728653","#92aa4c","#6aac91"]},{background:"#17444e",fontColor:"#ffffff",fontname:"Microsoft Yahei",colors:["#b01513","#ea6312","#e6b729","#6bab90","#55839a","#9e5d9d"]},{background:"#36234d",fontColor:"#ffffff",fontname:"Microsoft Yahei",colors:["#b31166","#e33d6f","#e45f3c","#e9943a","#9b6bf2","#d63cd0"]},{background:"#247fad",fontColor:"#ffffff",fontname:"Microsoft Yahei",colors:["#052f61","#a50e82","#14967c","#6a9e1f","#e87d37","#c62324"]},{background:"#103f55",fontColor:"#ffffff",fontname:"Microsoft Yahei",colors:["#40aebd","#97e8d5","#a1cf49","#628f3e","#f2df3a","#fcb01c"]},{background:"#242367",fontColor:"#ffffff",fontname:"Microsoft Yahei",colors:["#ac3ec1","#477bd1","#46b298","#90ba4c","#dd9d31","#e25345"]},{background:"#e4b75e",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#f0a22e","#a5644e","#b58b80","#c3986d","#a19574","#c17529"]},{background:"#333333",fontColor:"#ffffff",fontname:"Microsoft Yahei",colors:["#bdc8df","#003fa9","#f5ba00","#ff7567","#7676d9","#923ffc"]}];var hv=()=>{const e=T(),{slides:t,currentSlide:l,theme:c}=Object(o["c"])(e),{addHistorySnapshot:n}=Te(),a=e=>{const t=[];for(const l of e.elements){if("shape"===l.type&&0!==I()(l.fill).getAlpha()){const e=I()(l.fill).toRgbString();t.includes(e)||t.push(e)}if("text"===l.type&&l.fill&&0!==I()(l.fill).getAlpha()){const e=I()(l.fill).toRgbString();t.includes(e)||t.push(e)}if("table"===l.type&&l.theme&&0!==I()(l.theme.color).getAlpha()){const e=I()(l.theme.color).toRgbString();t.includes(e)||t.push(e)}if("chart"===l.type&&l.fill&&0!==I()(l.fill).getAlpha()){const e=I()(l.fill).toRgbString();t.includes(e)||t.push(e)}if("line"===l.type&&0!==I()(l.color).getAlpha()){const e=I()(l.color).toRgbString();t.includes(e)||t.push(e)}if("audio"===l.type&&0!==I()(l.color).getAlpha()){const e=I()(l.color).toRgbString();t.includes(e)||t.push(e)}}return t},r=(e,t)=>{const l=a(e),c={};if(l.length>t.length){const e=I()(t[0]).analogous(l.length-t.length+10),c=e.map(e=>e.toHexString()).slice(1);t.push(...c)}for(let n=0;n{const l=r(e,t.colors);e.background&&"image"===e.background.type||(e.background={type:"solid",color:t.background});for(const c of e.elements){if("shape"===c.type&&(c.fill=l[I()(c.fill).toRgbString()]||c.fill,c.gradient&&delete c.gradient),"text"===c.type&&(c.fill&&(c.fill=l[I()(c.fill).toRgbString()]||c.fill),c.defaultColor=t.fontColor,c.defaultFontName=t.fontname),"table"===c.type){c.theme&&(c.theme.color=l[I()(c.theme.color).toRgbString()]||c.theme.color);for(const e of c.data)for(const l of e)l.style&&(l.style.color=t.fontColor,l.style.fontname=t.fontname)}"chart"===c.type&&(c.themeColor=[l[I()(c.themeColor[0]).toRgbString()]]||!1,c.gridColor=t.fontColor),"line"===c.type&&(c.color=l[I()(c.color).toRgbString()]||c.color),"audio"===c.type&&(c.color=l[I()(c.color).toRgbString()]||c.color),"latex"===c.type&&(c.color=t.fontColor)}},s=t=>{const c=JSON.parse(JSON.stringify(l.value));i(c,t),e.updateSlide({background:c.background,elements:c.elements}),n()},d=l=>{const c=JSON.parse(JSON.stringify(t.value));for(const e of c)i(e,l);e.setTheme({backgroundColor:l.background,themeColor:l.colors[0],fontColor:l.fontColor,fontName:l.fontname}),e.setSlides(c),n()},u=()=>{const l=JSON.parse(JSON.stringify(t.value)),{themeColor:o,backgroundColor:a,fontColor:r,fontName:i}=c.value;for(const e of l){e.background&&"image"===e.background.type||(e.background={type:"solid",color:a});for(const t of e.elements)if("shape"===t.type)t.fill=o;else if("line"===t.type)t.color=o;else if("text"===t.type)t.defaultColor=r,t.defaultFontName=i,t.fill&&(t.fill=o);else if("table"===t.type){t.theme&&(t.theme.color=o);for(const e of t.data)for(const t of e)t.style&&(t.style.color=r,t.style.fontname=i)}else"chart"===t.type?(t.themeColor=[o],t.gridColor=r):"latex"===t.type?t.color=r:"audio"===t.type&&(t.color=o)}e.setSlides(l),n()};return{applyPresetThemeToSingleSlide:s,applyPresetThemeToAllSlides:d,applyThemeToAllSlides:u}};const yv=e=>(Object(n["pushScopeId"])("data-v-41419138"),e=e(),Object(n["popScopeId"])(),e),gv={class:"slide-design-panel"},xv=yv(()=>Object(n["createElementVNode"])("div",{class:"title"},"背景填充",-1)),kv={class:"row"},Cv=yv(()=>Object(n["createElementVNode"])("div",{style:{flex:"1"}},null,-1)),Nv={key:0,class:"background-image-wrapper"},Ev={class:"background-image"},wv={key:1,class:"background-gradient-wrapper"},Vv={class:"row"},Iv=yv(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"起点颜色:",-1)),Sv={class:"row"},Lv=yv(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"终点颜色:",-1)),Bv={key:0,class:"row"},_v=yv(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"渐变角度:",-1)),Tv={class:"row"},Mv={class:"row"},Dv=yv(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"画布尺寸:",-1)),zv=yv(()=>Object(n["createElementVNode"])("div",{class:"title"},"全局主题",-1)),Fv={class:"row"},Av=yv(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"字体:",-1)),$v={class:"row"},Rv=yv(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"字体颜色:",-1)),Pv={class:"row"},Hv=yv(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"背景颜色:",-1)),qv={class:"row"},Uv=yv(()=>Object(n["createElementVNode"])("div",{style:{flex:"2"}},"主题色:",-1)),Gv={class:"row"},Xv=yv(()=>Object(n["createElementVNode"])("div",{class:"title"},"预置主题",-1)),Yv={class:"theme-list"},Zv={class:"theme-item-content"},Wv={class:"colors"},Jv={class:"btns"},Kv=["onClick"],Qv=["onClick"];var eh=Object(n["defineComponent"])({__name:"SlideDesignPanel",setup(e){const{OptGroup:t,Option:l}=Ci["a"],c=T(),{availableFonts:a}=Object(o["c"])(z()),{slides:r,currentSlide:s,viewportRatio:d,theme:u}=Object(o["c"])(c),b=Object(n["computed"])(()=>s.value.background?s.value.background:{type:"solid",value:"#fff"}),{addHistorySnapshot:O}=Te(),{applyPresetThemeToSingleSlide:m,applyPresetThemeToAllSlides:p,applyThemeToAllSlides:f}=hv(),j=e=>{if("solid"===e){const e={...b.value,type:"solid",color:b.value.color||"#fff"};c.updateSlide({background:e})}else if("image"===e){const e={...b.value,type:"image",image:b.value.image||"",imageSize:b.value.imageSize||"cover"};c.updateSlide({background:e})}else{const e={...b.value,type:"gradient",gradientType:b.value.gradientType||"linear",gradientColor:b.value.gradientColor||["#fff","#fff"],gradientRotate:b.value.gradientRotate||0};c.updateSlide({background:e})}O()},v=e=>{c.updateSlide({background:{...b.value,...e}}),O()},h=e=>{const t=e[0];t&&we(t).then(e=>v({image:e}))},y=()=>{const e=r.value.map(e=>({...e,background:s.value.background}));c.setSlides(e),O()},g=e=>{c.setTheme(e)},x=e=>{c.setViewportRatio(e)};return(e,c)=>{const o=Object(n["resolveComponent"])("IconPlus");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",gv,[xv,Object(n["createElementVNode"])("div",kv,[Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"10"},value:Object(n["unref"])(b).type,onChange:c[0]||(c[0]=e=>j(e))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"solid"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("纯色填充")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(l),{value:"image"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("图片填充")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(l),{value:"gradient"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("渐变填充")]),_:1})]),_:1},8,["value"]),Cv,"solid"===Object(n["unref"])(b).type?(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(Rs["a"]),{key:0,trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(b).color,"onUpdate:modelValue":c[1]||(c[1]=e=>v({color:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:Object(n["unref"])(b).color||"#fff",style:{flex:"10"}},null,8,["color"])]),_:1})):"image"===Object(n["unref"])(b).type?(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(Ci["a"]),{key:1,style:{flex:"10"},value:Object(n["unref"])(b).imageSize||"cover",onChange:c[2]||(c[2]=e=>v({imageSize:e}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"contain"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("缩放")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(l),{value:"repeat"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("拼贴")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(l),{value:"cover"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("缩放铺满")]),_:1})]),_:1},8,["value"])):(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(Ci["a"]),{key:2,style:{flex:"10"},value:Object(n["unref"])(b).gradientType,onChange:c[3]||(c[3]=e=>v({gradientType:e}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"linear"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("线性渐变")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(l),{value:"radial"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("径向渐变")]),_:1})]),_:1},8,["value"]))]),"image"===Object(n["unref"])(b).type?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Nv,[Object(n["createVNode"])(el,{onChange:c[4]||(c[4]=e=>h(e))},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",Ev,[Object(n["createElementVNode"])("div",{class:"content",style:Object(n["normalizeStyle"])({backgroundImage:`url(${Object(n["unref"])(b).image})`})},[Object(n["createVNode"])(o)],4)])]),_:1})])):Object(n["createCommentVNode"])("",!0),"gradient"===Object(n["unref"])(b).type?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",wv,[Object(n["createElementVNode"])("div",Vv,[Iv,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(b).gradientColor[0],"onUpdate:modelValue":c[5]||(c[5]=e=>v({gradientColor:[e,Object(n["unref"])(b).gradientColor[1]]}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:Object(n["unref"])(b).gradientColor[0],style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createElementVNode"])("div",Sv,[Lv,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(b).gradientColor[1],"onUpdate:modelValue":c[6]||(c[6]=e=>v({gradientColor:[Object(n["unref"])(b).gradientColor[0],e]}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:Object(n["unref"])(b).gradientColor[1],style:{flex:"3"}},null,8,["color"])]),_:1})]),"linear"===Object(n["unref"])(b).gradientType?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Bv,[_v,Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"slider",min:0,max:360,step:15,value:Object(n["unref"])(b).gradientRotate,onChange:c[7]||(c[7]=e=>v({gradientRotate:e}))},null,8,["value"])])):Object(n["createCommentVNode"])("",!0)])):Object(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("div",Tv,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:c[8]||(c[8]=e=>y())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("应用背景到全部")]),_:1})]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createElementVNode"])("div",Mv,[Dv,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:Object(n["unref"])(d),onChange:c[9]||(c[9]=e=>x(e))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:.5625},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("宽屏 16 : 9")]),_:1},8,["value"]),Object(n["createVNode"])(Object(n["unref"])(l),{value:.625},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("宽屏 16 : 10")]),_:1},8,["value"]),Object(n["createVNode"])(Object(n["unref"])(l),{value:.75},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("标准 4 : 3")]),_:1},8,["value"]),Object(n["createVNode"])(Object(n["unref"])(l),{value:.70710678},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("纸张 A3 / A4")]),_:1},8,["value"])]),_:1},8,["value"])]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),zv,Object(n["createElementVNode"])("div",Fv,[Av,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{style:{flex:"3"},value:Object(n["unref"])(u).fontName,onChange:c[10]||(c[10]=e=>g({fontName:e}))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(t),{label:"系统字体"},{default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(a),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(l),{key:e.value,value:e.value},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("span",{style:Object(n["normalizeStyle"])({fontFamily:e.value})},Object(n["toDisplayString"])(e.label),5)]),_:2},1032,["value"]))),128))]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{label:"在线字体"},{default:Object(n["withCtx"])(()=>[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(i),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(l),{key:e.value,value:e.value},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.label),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["value"])]),Object(n["createElementVNode"])("div",$v,[Rv,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(u).fontColor,"onUpdate:modelValue":c[11]||(c[11]=e=>g({fontColor:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:Object(n["unref"])(u).fontColor,style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createElementVNode"])("div",Pv,[Hv,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(u).backgroundColor,"onUpdate:modelValue":c[12]||(c[12]=e=>g({backgroundColor:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:Object(n["unref"])(u).backgroundColor,style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createElementVNode"])("div",qv,[Uv,Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click"},{content:Object(n["withCtx"])(()=>[Object(n["createVNode"])(oO,{modelValue:Object(n["unref"])(u).themeColor,"onUpdate:modelValue":c[13]||(c[13]=e=>g({themeColor:e}))},null,8,["modelValue"])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(ib,{color:Object(n["unref"])(u).themeColor,style:{flex:"3"}},null,8,["color"])]),_:1})]),Object(n["createElementVNode"])("div",Gv,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:c[14]||(c[14]=e=>Object(n["unref"])(f)())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("应用主题到全部")]),_:1})]),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Xv,Object(n["createElementVNode"])("div",Yv,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(vv),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"theme-item",key:t,style:Object(n["normalizeStyle"])({backgroundColor:e.background,fontFamily:e.fontname})},[Object(n["createElementVNode"])("div",Zv,[Object(n["createElementVNode"])("div",{class:"text",style:Object(n["normalizeStyle"])({color:e.fontColor})},"文字 Aa",4),Object(n["createElementVNode"])("div",Wv,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.colors,(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"color-block",key:t,style:Object(n["normalizeStyle"])({backgroundColor:e})},null,4))),128))]),Object(n["createElementVNode"])("div",Jv,[Object(n["createElementVNode"])("div",{class:"btn",onClick:t=>Object(n["unref"])(m)(e)},"应用",8,Kv),Object(n["createElementVNode"])("div",{class:"btn",onClick:t=>Object(n["unref"])(p)(e)},"应用全局",8,Qv)])])],4))),128))])])}}});l("9637");const th=Yt()(eh,[["__scopeId","data-v-41419138"]]);var lh=th;const ch={class:"slide-animation-panel"},nh={class:"animation-pool"},oh=["onClick"],ah={class:"animation-text"};var rh=Object(n["defineComponent"])({__name:"SlideAnimationPanel",setup(e){const t=T(),{slides:l,currentSlide:c}=Object(o["c"])(t),a=Object(n["computed"])(()=>c.value.turningMode||"slideY"),r=[{label:"无",value:"no"},{label:"淡入淡出",value:"fade"},{label:"左右推移",value:"slideX"},{label:"上下推移",value:"slideY"}],{addHistorySnapshot:i}=Te(),s=e=>{e!==a.value&&(t.updateSlide({turningMode:e}),i())},d=()=>{const e=l.value.map(e=>({...e,turningMode:c.value.turningMode}));t.setSlides(e),i()};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ch,[Object(n["createElementVNode"])("div",nh,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(r,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["animation-item",{active:Object(n["unref"])(a)===e.value}]),key:e.label,onClick:t=>s(e.value)},[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["animation-block",e.value])},null,2),Object(n["createElementVNode"])("div",ah,Object(n["toDisplayString"])(e.label),1)],10,oh)),64))]),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{width:"100%"},onClick:t[0]||(t[0]=e=>d())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("应用到全部")]),_:1})]))}});l("7d40");const ih=Yt()(rh,[["__scopeId","data-v-c4273212"]]);var sh=ih,dh=()=>{const e=T(),{activeElementIdList:t,activeElementList:l}=Object(o["c"])(z()),{currentSlide:c}=Object(o["c"])(e),{addHistorySnapshot:n}=Te(),a=o=>{const{minX:a,maxX:r,minY:i,maxY:s}=he(l.value),d=JSON.parse(JSON.stringify(c.value.elements)),u={};for(const e of l.value)if(e.groupId&&!u[e.groupId]){const t=l.value.filter(t=>t.groupId===e.groupId);u[e.groupId]=he(t)}if(o===J.LEFT)d.forEach(e=>{if(t.value.includes(e.id))if(e.groupId){const t=u[e.groupId],l=t.minX-a;e.left=e.left-l}else if("rotate"in e&&e.rotate){const{offsetX:t}=je({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate});e.left=a-t}else e.left=a});else if(o===J.RIGHT)d.forEach(e=>{if(t.value.includes(e.id))if(e.groupId){const t=u[e.groupId],l=t.maxX-r;e.left=e.left-l}else{const t="line"===e.type?Math.max(e.start[0],e.end[0]):e.width;if("rotate"in e&&e.rotate){const{offsetX:l}=je({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate});e.left=r-t+l}else e.left=r-t}});else if(o===J.TOP)d.forEach(e=>{if(t.value.includes(e.id))if(e.groupId){const t=u[e.groupId],l=t.minY-i;e.top=e.top-l}else if("rotate"in e&&e.rotate){const{offsetY:t}=je({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate});e.top=i-t}else e.top=i});else if(o===J.BOTTOM)d.forEach(e=>{if(t.value.includes(e.id))if(e.groupId){const t=u[e.groupId],l=t.maxY-s;e.top=e.top-l}else{const t="line"===e.type?Math.max(e.start[1],e.end[1]):e.height;if("rotate"in e&&e.rotate){const{offsetY:l}=je({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate});e.top=s-t+l}else e.top=s-t}});else if(o===J.HORIZONTAL){const e=(a+r)/2;d.forEach(l=>{if(t.value.includes(l.id))if(l.groupId){const t=u[l.groupId],c=(t.maxX+t.minX)/2,n=c-e;l.left=l.left-n}else{const t="line"===l.type?Math.max(l.start[0],l.end[0]):l.width;l.left=e-t/2}})}else if(o===J.VERTICAL){const e=(i+s)/2;d.forEach(l=>{if(t.value.includes(l.id))if(l.groupId){const t=u[l.groupId],c=(t.maxY+t.minY)/2,n=c-e;l.top=l.top-n}else{const t="line"===l.type?Math.max(l.start[1],l.end[1]):l.height;l.top=e-t/2}})}e.updateSlide({elements:d}),n()};return{alignActiveElement:a}},uh=()=>{const e=T(),{activeElementIdList:t,activeElementList:l}=Object(o["c"])(z()),{currentSlide:c}=Object(o["c"])(e),{addHistorySnapshot:a}=Te(),r=Object(n["computed"])(()=>{let e=0;const t=[];for(const c of l.value)c.groupId?t.includes(c.groupId)||(t.push(c.groupId),e+=1):e+=1;return e}),i=()=>{const{minX:n,maxX:o}=he(l.value),r=JSON.parse(JSON.stringify(l.value)),i=JSON.parse(JSON.stringify(c.value.elements)),s=[];let d=[];for(const e of r)if(e.groupId){const t=d.find(t=>t.groupId===e.groupId);t?d=d.map(t=>t.groupId===e.groupId?{...t,els:[...t.els,e]}:t):d.push({groupId:e.groupId,els:[e]})}else{const{minX:t,maxX:l}=ve(e);s.push({min:t,max:l,el:e})}const u=[];for(const e of d){const{minX:t,maxX:l}=he(e.els);u.push({min:t,max:l,els:e.els})}const b=[...s,...u];b.sort((e,t)=>e.min-t.min);let O=0;for(const e of b){const t=e.max-e.min;O+=t}const m=(o-n-O)/(b.length-1),p=[],f=b[0];let j={min:f.min,max:f.max};if("el"in f)p.push({pos:f.min,el:f.el});else for(const e of f.els){const{minX:t}=ve(e);p.push({pos:t,el:e})}for(let e=1;e{const{minY:n,maxY:o}=he(l.value),r=JSON.parse(JSON.stringify(l.value)),i=JSON.parse(JSON.stringify(c.value.elements)),s=[];let d=[];for(const e of r)if(e.groupId){const t=d.find(t=>t.groupId===e.groupId);t?d=d.map(t=>t.groupId===e.groupId?{...t,els:[...t.els,e]}:t):d.push({groupId:e.groupId,els:[e]})}else{const{minY:t,maxY:l}=ve(e);s.push({min:t,max:l,el:e})}const u=[];for(const e of d){const{minY:t,maxY:l}=he(e.els);u.push({min:t,max:l,els:e.els})}const b=[...s,...u];b.sort((e,t)=>e.min-t.min);let O=0;for(const e of b){const t=e.max-e.min;O+=t}const m=(o-n-O)/(b.length-1),p=[],f=b[0];let j={min:f.min,max:f.max};if("el"in f)p.push({pos:f.min,el:f.el});else for(const e of f.els){const{minY:t}=ve(e);p.push({pos:t,el:e})}for(let e=1;e{l.value?a(e):r(e)};return(e,a)=>{const r=Object(n["resolveComponent"])("IconAlignLeft"),b=Object(n["resolveComponent"])("IconAlignHorizontally"),O=Object(n["resolveComponent"])("IconAlignRight"),m=Object(n["resolveComponent"])("IconAlignTop"),p=Object(n["resolveComponent"])("IconAlignVertically"),f=Object(n["resolveComponent"])("IconAlignBottom"),j=Object(n["resolveComponent"])("IconGroup"),v=Object(n["resolveComponent"])("IconUngroup");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",bh,[Object(n["createVNode"])(Object(n["unref"])(t),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:a[0]||(a[0]=e=>u(Object(n["unref"])(J).LEFT))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(r)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"水平居中"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:a[1]||(a[1]=e=>u(Object(n["unref"])(J).HORIZONTAL))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(b)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:a[2]||(a[2]=e=>u(Object(n["unref"])(J).RIGHT))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(O)]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:a[3]||(a[3]=e=>u(Object(n["unref"])(J).TOP))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(m)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"垂直居中"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:a[4]||(a[4]=e=>u(Object(n["unref"])(J).VERTICAL))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(p)]),_:1})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下对齐"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:a[5]||(a[5]=e=>u(Object(n["unref"])(J).BOTTOM))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(f)]),_:1})]),_:1},8,["mouseEnterDelay"])]),_:1}),Object(n["unref"])(i)>2?(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["unref"])(t),{key:0,class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:a[6]||(a[6]=e=>Object(n["unref"])(s)())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("水平均匀分布")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:a[7]||(a[7]=e=>Object(n["unref"])(d)())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("垂直均匀分布")]),_:1})]),_:1})):Object(n["createCommentVNode"])("",!0),Object(n["createVNode"])(Object(n["unref"])(ui["a"])),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{disabled:!Object(n["unref"])(l),onClick:a[8]||(a[8]=e=>Object(n["unref"])(c)()),style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(j,{style:{"margin-right":"3px"}}),Object(n["createTextVNode"])("组合")]),_:1},8,["disabled"]),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{disabled:Object(n["unref"])(l),onClick:a[9]||(a[9]=e=>Object(n["unref"])(o)()),style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(v,{style:{"margin-right":"3px"}}),Object(n["createTextVNode"])("取消组合")]),_:1},8,["disabled"])]),_:1})])}}});l("9bc1");const mh=Yt()(Oh,[["__scopeId","data-v-c88d31ba"]]);var ph=mh;const fh=[{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:["▢","▣","▤","▥","▦","▧","▨","▩","▭","▮","▯","▰","▱","▲","▷","▼","◁","◈","◉","◍","◐","◑","◒","◓","◔","◕","◧","◨","◩","◪","◫","◬","◭","◮"]}],jh={class:"symbol-panel"},vh={class:"tabs"},hh=["onClick"],yh={class:"pool"},gh=["onClick"],xh={class:"symbol"};var kh=Object(n["defineComponent"])({__name:"SymbolPanel",setup(e){const t=Object(n["ref"])(fh[0].key),l=Object(n["computed"])(()=>{const e=fh.find(e=>e.key===t.value);return(null===e||void 0===e?void 0:e.children)||[]}),c=e=>{yn.emit(jn.RICH_TEXT_COMMAND,{action:{command:"insert",value:e}})};return(e,o)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",jh,[Object(n["createElementVNode"])("div",vh,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(fh),e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["tab",{active:t.value===e.key}]),key:e.key,onClick:l=>t.value=e.key},Object(n["toDisplayString"])(e.label),11,hh))),128))]),Object(n["createElementVNode"])("div",yh,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(l),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"symbol-item",key:t,onClick:t=>c(e)},[Object(n["createElementVNode"])("div",xh,Object(n["toDisplayString"])(e),1)],8,gh))),128))])]))}});l("1126");const Ch=Yt()(kh,[["__scopeId","data-v-ba0c96fc"]]);var Nh=Ch;const Eh={class:"toolbar"},wh={class:"tabs"},Vh=["onClick"],Ih={class:"content"};var Sh=Object(n["defineComponent"])({__name:"index",setup(e){const t=z(),{activeElementIdList:l,handleElement:a,toolbarState:r}=Object(o["c"])(t),i=Object(n["computed"])(()=>{var e;return"text"===(null===(e=a.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}]}),s=[{label:"设计",value:c.SLIDE_DESIGN},{label:"切换",value:c.SLIDE_ANIMATION},{label:"动画",value:c.EL_ANIMATION}],d=[{label:"样式",value:c.EL_STYLE},{label:"位置",value:c.MULTI_POSITION}],u=e=>{t.setToolbarState(e)},b=Object(n["computed"])(()=>l.value.length?l.value.length>1?d:i.value:s);Object(n["watch"])(b,()=>{const e=b.value.map(e=>e.value);e.includes(r.value)||t.setToolbarState(e[0])});const O=Object(n["computed"])(()=>{const e={[c.EL_STYLE]:Ij,[c.EL_POSITION]:Pj,[c.EL_ANIMATION]:jv,[c.SLIDE_DESIGN]:lh,[c.SLIDE_ANIMATION]:sh,[c.MULTI_POSITION]:ph,[c.SYMBOL]:Nh};return e[r.value]||null});return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Eh,[Object(n["createElementVNode"])("div",wh,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(b),e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["tab",{active:e.value===Object(n["unref"])(r)}]),key:e.value,onClick:t=>u(e.value)},Object(n["toDisplayString"])(e.label),11,Vh))),128))]),Object(n["createElementVNode"])("div",Ih,[(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["resolveDynamicComponent"])(Object(n["unref"])(O))))])]))}});l("cd7e");const Lh=Yt()(Sh,[["__scopeId","data-v-5303bd17"]]);var Bh=Lh;const _h={class:"remark"},Th=["value"];var Mh=Object(n["defineComponent"])({__name:"index",props:{height:{type:Number,required:!0}},emits:["update:height"],setup(e,{emit:t}){const l=e,c=T(),{currentSlide:a}=Object(o["c"])(c),r=Object(n["computed"])(()=>{var e;return(null===(e=a.value)||void 0===e?void 0:e.remark)||""}),i=e=>{const t=e.target.value;c.updateSlide({remark:t})},s=e=>{let c=!0;const n=e.pageY,o=l.height;document.onmousemove=e=>{if(!c)return;const l=e.pageY,a=l-n;let r=-a+o;r<40&&(r=40),r>120&&(r=120),t("update:height",r)},document.onmouseup=()=>{c=!1,document.onmousemove=null,document.onmouseup=null}};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",_h,[Object(n["createElementVNode"])("div",{class:"resize-handler",onMousedown:t[0]||(t[0]=e=>s(e))},null,32),Object(n["createElementVNode"])("textarea",{value:Object(n["unref"])(r),placeholder:"点击输入演讲者备注",onInput:t[1]||(t[1]=e=>i(e))},null,40,Th)]))}});l("ec27");const Dh=Yt()(Mh,[["__scopeId","data-v-82b674f6"]]);var zh=Dh;const Fh=e=>(Object(n["pushScopeId"])("data-v-5a56d59c"),e=e(),Object(n["popScopeId"])(),e),Ah={key:0,class:"fullscreen-spin"},$h={class:"spin"},Rh=Fh(()=>Object(n["createElementVNode"])("div",{class:"spinner"},null,-1)),Ph={class:"text"};var Hh=Object(n["defineComponent"])({__name:"FullscreenSpin",props:{loading:{type:Boolean,default:!1},tip:{type:String,default:""}},setup(e){return(t,l)=>e.loading?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ah,[Object(n["createElementVNode"])("div",$h,[Rh,Object(n["createElementVNode"])("div",Ph,Object(n["toDisplayString"])(e.tip),1)])])):Object(n["createCommentVNode"])("",!0)}});l("cf16");const qh=Yt()(Hh,[["__scopeId","data-v-5a56d59c"]]);var Uh=qh;const Gh=e=>(Object(n["pushScopeId"])("data-v-92a8f63e"),e=e(),Object(n["popScopeId"])(),e),Xh={class:"export-img-dialog"},Yh={class:"thumbnails-view"},Zh={class:"configs"},Wh={class:"row"},Jh=Gh(()=>Object(n["createElementVNode"])("div",{class:"title"},"导出格式:",-1)),Kh={class:"row"},Qh=Gh(()=>Object(n["createElementVNode"])("div",{class:"title"},"导出范围:",-1)),ey={key:0,class:"row"},ty=["data-range"],ly={class:"row"},cy=Gh(()=>Object(n["createElementVNode"])("div",{class:"title"},"图片质量:",-1)),ny={class:"row"},oy=Gh(()=>Object(n["createElementVNode"])("div",{class:"title"},"忽略在线字体:",-1)),ay={class:"config-item"},ry={class:"btns"};var iy=Object(n["defineComponent"])({__name:"ExportImage",emits:["close"],setup(e,{emit:t}){const{Group:l,Button:c}=Yu["a"],{slides:a,currentSlide:r}=Object(o["c"])(T()),i=Object(n["ref"])(),s=Object(n["ref"])("all"),d=Object(n["ref"])([1,a.value.length]),u=Object(n["ref"])("jpeg"),b=Object(n["ref"])(1),O=Object(n["ref"])(!0),m=Object(n["computed"])(()=>"all"===s.value?a.value:"current"===s.value?[r.value]:a.value.filter((e,t)=>{const[l,c]=d.value;return t>=l-1&&t<=c-1})),{exportImage:p,exporting:f}=Rt(),j=()=>{i.value&&p(i.value,u.value,b.value,O.value)};return(e,o)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Xh,[Object(n["createElementVNode"])("div",Yh,[Object(n["createElementVNode"])("div",{class:"thumbnails",ref_key:"imageThumbnailsRef",ref:i},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(m),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(Ns,{class:"thumbnail",key:e.id,slide:e,size:1600},null,8,["slide"]))),128))],512)]),Object(n["createElementVNode"])("div",Zh,[Object(n["createElementVNode"])("div",Wh,[Jh,Object(n["createVNode"])(Object(n["unref"])(l),{class:"config-item",value:u.value,"onUpdate:value":o[0]||(o[0]=e=>u.value=e)},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"50%"},value:"jpeg"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("JPEG")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"50%"},value:"png"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("PNG")]),_:1})]),_:1},8,["value"])]),Object(n["createElementVNode"])("div",Kh,[Qh,Object(n["createVNode"])(Object(n["unref"])(l),{class:"config-item",value:s.value,"onUpdate:value":o[1]||(o[1]=e=>s.value=e)},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"33.33%"},value:"all"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("全部")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"33.33%"},value:"current"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("当前页")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"33.33%"},value:"custom"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("自定义")]),_:1})]),_:1},8,["value"])]),"custom"===s.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ey,[Object(n["createElementVNode"])("div",{class:"title","data-range":`(${d.value[0]} ~ ${d.value[1]})`},"自定义范围:",8,ty),Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"config-item",range:"",min:1,max:Object(n["unref"])(a).length,step:1,value:d.value,"onUpdate:value":o[2]||(o[2]=e=>d.value=e)},null,8,["max","value"])])):Object(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("div",ly,[cy,Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"config-item",min:0,max:1,step:.1,value:b.value,"onUpdate:value":o[3]||(o[3]=e=>b.value=e)},null,8,["step","value"])]),Object(n["createElementVNode"])("div",ny,[oy,Object(n["createElementVNode"])("div",ay,[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"导出时默认忽略在线字体,若您在幻灯片中使用了在线字体,且希望导出后保留相关样式,可选择关闭【忽略在线字体】选项,但要注意这将会增加导出用时。"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(nb["a"]),{checked:O.value,"onUpdate:checked":o[4]||(o[4]=e=>O.value=e)},null,8,["checked"])]),_:1},8,["mouseEnterDelay"])])])]),Object(n["createElementVNode"])("div",ry,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn export",type:"primary",onClick:o[5]||(o[5]=e=>j())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("导出图片")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn close",onClick:o[6]||(o[6]=e=>t("close"))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("关闭")]),_:1})]),Object(n["createVNode"])(Uh,{loading:Object(n["unref"])(f),tip:"正在导出..."},null,8,["loading"])]))}});l("700f");const sy=Yt()(iy,[["__scopeId","data-v-92a8f63e"]]);var dy=sy;const uy={class:"export-json-dialog"},by={class:"preview"},Oy={class:"btns"};var my=Object(n["defineComponent"])({__name:"ExportJSON",emits:["close"],setup(e,{emit:t}){const{slides:l}=Object(o["c"])(T()),{exportJSON:c}=Rt();return(e,o)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",uy,[Object(n["createElementVNode"])("div",by,[Object(n["createElementVNode"])("pre",null,Object(n["toDisplayString"])(Object(n["unref"])(l)),1)]),Object(n["createElementVNode"])("div",Oy,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn export",type:"primary",onClick:o[0]||(o[0]=e=>Object(n["unref"])(c)())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("导出 JSON")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn close",onClick:o[1]||(o[1]=e=>t("close"))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("关闭")]),_:1})])]))}});l("862c");const py=Yt()(my,[["__scopeId","data-v-0cc0995e"]]);var fy=py;const jy=()=>{const 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},vy=(e,t,l)=>{const c="";let n="";const o=document.styleSheets;if(o)for(const u of o)if(u.cssRules)for(const e of u.cssRules)n+=e.cssText;const{width:a,height:r,margin:i}=l,s=`\n \n \n \n `,d=""+t.innerHTML+"";e.open(),e.write(`\n ${c}\n \n ${s}\n ${d}\n \n `),e.close()},hy=(e,t)=>{const l=jy(),c=l.contentWindow;if(!l.contentDocument||!c)return;vy(l.contentDocument,e,t);const n=()=>{c.focus(),c.print()},o=()=>{l.removeEventListener("load",n),c.removeEventListener("afterprint",o),document.body.removeChild(l)};l.addEventListener("load",n),c.addEventListener("afterprint",o)},yy=e=>(Object(n["pushScopeId"])("data-v-527855fb"),e=e(),Object(n["popScopeId"])(),e),gy={class:"export-pdf-dialog"},xy={class:"thumbnails-view"},ky={class:"configs"},Cy={class:"row"},Ny=yy(()=>Object(n["createElementVNode"])("div",{class:"title"},"导出范围:",-1)),Ey={class:"row"},wy=yy(()=>Object(n["createElementVNode"])("div",{class:"title"},"每页数量:",-1)),Vy={class:"row"},Iy=yy(()=>Object(n["createElementVNode"])("div",{class:"title"},"边缘留白:",-1)),Sy={class:"config-item"},Ly=yy(()=>Object(n["createElementVNode"])("div",{class:"tip"}," 注意:若打印预览与实际样式不一致,请在弹出的打印窗口中勾选【背景图形】选项。 ",-1)),By={class:"btns"};var _y=Object(n["defineComponent"])({__name:"ExportPDF",emits:["close"],setup(e,{emit:t}){const{Group:l,Button:c}=Yu["a"],a=Ci["a"].Option,{slides:r,currentSlide:i,viewportRatio:s}=Object(o["c"])(T()),d=Object(n["ref"])(),u=Object(n["ref"])("all"),b=Object(n["ref"])(1),O=Object(n["ref"])(!0),m=()=>{if(!d.value)return;const e={width:1600,height:"all"===u.value?1600*s.value*b.value:1600*s.value,margin:O.value?50:0};hy(d.value,e)};return(e,o)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",gy,[Object(n["createElementVNode"])("div",xy,[Object(n["createElementVNode"])("div",{class:"thumbnails",ref_key:"pdfThumbnailsRef",ref:d},["current"===u.value?(Object(n["openBlock"])(),Object(n["createBlock"])(Ns,{key:0,class:"thumbnail",slide:Object(n["unref"])(i),size:1600},null,8,["slide"])):(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],{key:1},Object(n["renderList"])(Object(n["unref"])(r),(e,t)=>(Object(n["openBlock"])(),Object(n["createBlock"])(Ns,{class:Object(n["normalizeClass"])(["thumbnail",{"break-page":(t+1)%b.value===0}]),key:e.id,slide:e,size:1600},null,8,["class","slide"]))),128))],512)]),Object(n["createElementVNode"])("div",ky,[Object(n["createElementVNode"])("div",Cy,[Ny,Object(n["createVNode"])(Object(n["unref"])(l),{class:"config-item",value:u.value,"onUpdate:value":o[0]||(o[0]=e=>u.value=e)},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"50%"},value:"all"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("全部幻灯片")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"50%"},value:"current"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("当前幻灯片")]),_:1})]),_:1},8,["value"])]),Object(n["createElementVNode"])("div",Ey,[wy,Object(n["createVNode"])(Object(n["unref"])(Ci["a"]),{class:"config-item",value:b.value,"onUpdate:value":o[1]||(o[1]=e=>b.value=e)},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(a),{value:1},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("1")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(a),{value:2},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("2")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(a),{value:3},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("3")]),_:1})]),_:1},8,["value"])]),Object(n["createElementVNode"])("div",Vy,[Iy,Object(n["createElementVNode"])("div",Sy,[Object(n["createVNode"])(Object(n["unref"])(nb["a"]),{checked:O.value,"onUpdate:checked":o[2]||(o[2]=e=>O.value=e)},null,8,["checked"])])]),Ly]),Object(n["createElementVNode"])("div",By,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn export",type:"primary",onClick:o[3]||(o[3]=e=>m())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("打印 / 导出 PDF")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn close",onClick:o[4]||(o[4]=e=>t("close"))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("关闭")]),_:1})])]))}});l("7ce8");const Ty=Yt()(_y,[["__scopeId","data-v-527855fb"]]);var My=Ty;const Dy=e=>(Object(n["pushScopeId"])("data-v-018847a8"),e=e(),Object(n["popScopeId"])(),e),zy={class:"export-pptx-dialog"},Fy={class:"configs"},Ay={class:"row"},$y=Dy(()=>Object(n["createElementVNode"])("div",{class:"title"},"导出范围:",-1)),Ry={key:0,class:"row"},Py=["data-range"],Hy={class:"row"},qy=Dy(()=>Object(n["createElementVNode"])("div",{class:"title"},"覆盖默认母版:",-1)),Uy={class:"config-item"},Gy={class:"btns"};var Xy=Object(n["defineComponent"])({__name:"ExportPPTX",emits:["close"],setup(e,{emit:t}){const{Group:l,Button:c}=Yu["a"],{slides:a,currentSlide:r}=Object(o["c"])(T()),{exportPPTX:i,exporting:s}=Rt(),d=Object(n["ref"])("all"),u=Object(n["ref"])([1,a.value.length]),b=Object(n["ref"])(!0),O=Object(n["computed"])(()=>"all"===d.value?a.value:"current"===d.value?[r.value]:a.value.filter((e,t)=>{const[l,c]=u.value;return t>=l-1&&t<=c-1}));return(e,o)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",zy,[Object(n["createElementVNode"])("div",Fy,[Object(n["createElementVNode"])("div",Ay,[$y,Object(n["createVNode"])(Object(n["unref"])(l),{class:"config-item",value:d.value,"onUpdate:value":o[0]||(o[0]=e=>d.value=e)},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"33.33%"},value:"all"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("全部")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"33.33%"},value:"current"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("当前页")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"33.33%"},value:"custom"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("自定义")]),_:1})]),_:1},8,["value"])]),"custom"===d.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ry,[Object(n["createElementVNode"])("div",{class:"title","data-range":`(${u.value[0]} ~ ${u.value[1]})`},"自定义范围:",8,Py),Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"config-item",range:"",min:1,max:Object(n["unref"])(a).length,step:1,value:u.value,"onUpdate:value":o[1]||(o[1]=e=>u.value=e)},null,8,["max","value"])])):Object(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("div",Hy,[qy,Object(n["createElementVNode"])("div",Uy,[Object(n["createVNode"])(Object(n["unref"])(nb["a"]),{checked:b.value,"onUpdate:checked":o[2]||(o[2]=e=>b.value=e)},null,8,["checked"])])])]),Object(n["createElementVNode"])("div",Gy,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn export",type:"primary",onClick:o[3]||(o[3]=e=>Object(n["unref"])(i)(Object(n["unref"])(O),b.value))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("导出 PPTX")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn close",onClick:o[4]||(o[4]=e=>t("close"))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("关闭")]),_:1})]),Object(n["createVNode"])(Uh,{loading:Object(n["unref"])(s),tip:"正在导出..."},null,8,["loading"])]))}});l("9918");const Yy=Yt()(Xy,[["__scopeId","data-v-018847a8"]]);var Zy=Yy;const Wy=e=>(Object(n["pushScopeId"])("data-v-40c1ae3a"),e=e(),Object(n["popScopeId"])(),e),Jy={class:"export-pptist-dialog"},Ky={class:"configs"},Qy={class:"row"},eg=Wy(()=>Object(n["createElementVNode"])("div",{class:"title"},"导出范围:",-1)),tg={key:0,class:"row"},lg=["data-range"],cg=Wy(()=>Object(n["createElementVNode"])("div",{class:"tip"}," 提示:.pptist 是本应用的特有文件后缀,支持将该类型的文件导入回应用中。 ",-1)),ng={class:"btns"};var og=Object(n["defineComponent"])({__name:"ExportSpecificFile",emits:["close"],setup(e,{emit:t}){const{Group:l,Button:c}=Yu["a"],{slides:a,currentSlide:r}=Object(o["c"])(T()),{exportSpecificFile:i}=Rt(),s=Object(n["ref"])("all"),d=Object(n["ref"])([1,a.value.length]),u=Object(n["computed"])(()=>"all"===s.value?a.value:"current"===s.value?[r.value]:a.value.filter((e,t)=>{const[l,c]=d.value;return t>=l-1&&t<=c-1}));return(e,o)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Jy,[Object(n["createElementVNode"])("div",Ky,[Object(n["createElementVNode"])("div",Qy,[eg,Object(n["createVNode"])(Object(n["unref"])(l),{class:"config-item",value:s.value,"onUpdate:value":o[0]||(o[0]=e=>s.value=e)},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"33.33%"},value:"all"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("全部")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"33.33%"},value:"current"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("当前页")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{style:{width:"33.33%"},value:"custom"},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("自定义")]),_:1})]),_:1},8,["value"])]),"custom"===s.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",tg,[Object(n["createElementVNode"])("div",{class:"title","data-range":`(${d.value[0]} ~ ${d.value[1]})`},"自定义范围:",8,lg),Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"config-item",range:"",min:1,max:Object(n["unref"])(a).length,step:1,value:d.value,"onUpdate:value":o[1]||(o[1]=e=>d.value=e)},null,8,["max","value"])])):Object(n["createCommentVNode"])("",!0),cg]),Object(n["createElementVNode"])("div",ng,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn export",type:"primary",onClick:o[2]||(o[2]=e=>Object(n["unref"])(i)(Object(n["unref"])(u)))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("导出 .pptist 文件")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{class:"btn close",onClick:o[3]||(o[3]=e=>t("close"))},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("关闭")]),_:1})])]))}});l("3a1b");const ag=Yt()(og,[["__scopeId","data-v-40c1ae3a"]]);var rg=ag;const ig={class:"export-dialog"},sg={class:"tabs"},dg=["onClick"],ug={class:"content"};var bg=Object(n["defineComponent"])({__name:"index",setup(e){const t=z(),{dialogForExport:l}=Object(o["c"])(t),c=t.setDialogForExport,a=[{key:"pptist",label:"导出 pptist 文件"},{key:"pptx",label:"导出 PPTX"},{key:"image",label:"导出图片"},{key:"json",label:"导出 JSON"},{key:"pdf",label:"打印 / 导出 PDF"}],r=Object(n["computed"])(()=>{const e={image:dy,json:fy,pdf:My,pptx:Zy,pptist:rg};return e[l.value]||null});return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ig,[Object(n["createElementVNode"])("div",sg,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(a,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["tab",{active:e.key===Object(n["unref"])(l)}]),key:e.key,onClick:t=>Object(n["unref"])(c)(e.key)},Object(n["toDisplayString"])(e.label),11,dg)),64))]),Object(n["createElementVNode"])("div",ug,[(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["resolveDynamicComponent"])(Object(n["unref"])(r)),{onClose:t[0]||(t[0]=e=>Object(n["unref"])(c)(""))},null,32))])]))}});l("d970");const Og=Yt()(bg,[["__scopeId","data-v-1f8f1a8b"]]);var mg=Og;const pg={class:"title"},fg={class:"content"};var jg=Object(n["defineComponent"])({__name:"MoveablePanel",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},left:{type:Number,default:10},top:{type:Number,default:10},title:{type:String,default:""},moveable:{type:Boolean,default:!0}},emits:["close"],setup(e,{emit:t}){const l=e,c=Object(n["ref"])(0),o=Object(n["ref"])(0);Object(n["onMounted"])(()=>{l.left>=0?c.value=l.left:c.value=document.body.clientWidth+l.left-l.width,l.top>=0?o.value=l.top:o.value=document.body.clientHeight+l.top-l.height});const a=e=>{if(!l.moveable)return;let t=!0;const n=document.body.clientWidth,a=document.body.clientHeight,r=e.pageX,i=e.pageY,s=c.value,d=o.value;document.onmousemove=e=>{if(!t)return;const u=e.pageX-r,b=e.pageY-i;let O=s+u,m=d+b;O<0&&(O=0),m<0&&(m=0),O+l.width>n&&(O=n-l.width),m+l.height>a&&(m=a-l.height),c.value=O,o.value=m},document.onmouseup=()=>{t=!1,document.onmousemove=null,document.onmouseup=null}};return(l,r)=>{const i=Object(n["resolveComponent"])("IconClose");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"moveable-panel",style:Object(n["normalizeStyle"])({width:e.width+"px",height:e.height+"px",left:c.value+"px",top:o.value+"px"})},[e.title?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[Object(n["createElementVNode"])("div",{class:"header",onMousedown:r[1]||(r[1]=e=>a(e))},[Object(n["createElementVNode"])("div",pg,Object(n["toDisplayString"])(e.title),1),Object(n["createElementVNode"])("div",{class:"close-btn",onClick:r[0]||(r[0]=e=>t("close"))},[Object(n["createVNode"])(i)])],32),Object(n["createElementVNode"])("div",fg,[Object(n["renderSlot"])(l.$slots,"default")])],64)):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:1,class:"content",onMousedown:r[2]||(r[2]=e=>a(e))},[Object(n["renderSlot"])(l.$slots,"default")],32))],4)}}});l("1406");const vg=Yt()(jg,[["__scopeId","data-v-68252e2c"]]);var hg=vg;const yg=e=>(Object(n["pushScopeId"])("data-v-64f9ccca"),e=e(),Object(n["popScopeId"])(),e),gg={key:0,class:"handler"},xg={class:"btns"},kg={key:0,class:"icon-btns"},Cg={class:"element-list"},Ng={key:0,class:"group-els"},Eg=yg(()=>Object(n["createElementVNode"])("div",{class:"group-title"},"组合",-1)),wg=["onClick","onDblclick"],Vg=["id","value","onBlur","onKeydown"],Ig={key:1,class:"name"},Sg={class:"icons"},Lg=["onClick","onDblclick"],Bg=["id","value","onBlur","onKeydown"],_g={key:1,class:"name"},Tg={class:"icons"};var Mg=Object(n["defineComponent"])({__name:"SelectPanel",setup(e){const t=T(),l=z(),{currentSlide:c}=Object(o["c"])(t),{handleElement:a,handleElementId:r,activeElementIdList:i,activeGroupElementId:s,hiddenElementIdList:d}=Object(o["c"])(l),{orderElement:u}=Ue(),b=Object(n["computed"])(()=>{const e=[];for(const t of c.value.elements)if(t.groupId){const l=e[e.length-1];l&&"group"===l.type&&l.id&&l.id===t.groupId?l.elements.push(t):e.push({type:"group",id:t.groupId,elements:[t]})}else e.push(t);return e}),O=(e,t)=>{if(r.value===t)return;if(d.value.includes(t))return;const c=e.elements.map(e=>e.id);l.setActiveElementIdList(c),l.setHandleElementId(t),Object(n["nextTick"])(()=>l.setActiveGroupElementId(t))},m=e=>{r.value!==e&&(d.value.includes(e)||l.setActiveElementIdList([e]))},p=e=>{d.value.includes(e)?l.setHiddenElementIdList(d.value.filter(t=>t!==e)):l.setHiddenElementIdList([...d.value,e]),i.value.includes(e)&&l.setActiveElementIdList([])},f=()=>{const e=c.value.elements.map(e=>e.id),t=d.value.filter(t=>!e.includes(t));l.setHiddenElementIdList(t)},j=()=>{const e=c.value.elements.map(e=>e.id);l.setHiddenElementIdList([...d.value,...e]),i.value.length&&l.setActiveElementIdList([])},v=Object(n["ref"])(""),h=(e,l)=>{const c=e.target.value;t.updateElement({id:l,props:{name:c}}),v.value=""},y=e=>{v.value=e,Object(n["nextTick"])(()=>{const t=document.querySelector("#input-"+e);t.focus()})},g=()=>{l.setSelectPanelState(!1)};return(e,t)=>{const l=Object(n["resolveComponent"])("IconDown"),o=Object(n["resolveComponent"])("IconUp"),r=Object(n["resolveComponent"])("IconPreviewClose"),x=Object(n["resolveComponent"])("IconPreviewOpen");return Object(n["openBlock"])(),Object(n["createBlock"])(hg,{class:"select-panel",width:200,height:360,title:`选择(${Object(n["unref"])(i).length}/${Object(n["unref"])(c).elements.length})`,left:-270,top:90,onClose:t[4]||(t[4]=e=>g())},{default:Object(n["withCtx"])(()=>[Object(n["unref"])(b).length?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",gg,[Object(n["createElementVNode"])("div",xg,[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{size:"small",style:{"margin-right":"5px"},onClick:t[0]||(t[0]=e=>f())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("全部显示")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{size:"small",onClick:t[1]||(t[1]=e=>j())},{default:Object(n["withCtx"])(()=>[Object(n["createTextVNode"])("全部隐藏")]),_:1})]),Object(n["unref"])(a)?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",kg,[Object(n["createVNode"])(l,{class:"icon-btn",onClick:t[2]||(t[2]=e=>Object(n["unref"])(u)(Object(n["unref"])(a),Object(n["unref"])(W).UP))}),Object(n["createVNode"])(o,{class:"icon-btn",onClick:t[3]||(t[3]=e=>Object(n["unref"])(u)(Object(n["unref"])(a),Object(n["unref"])(W).DOWN))})])):Object(n["createCommentVNode"])("",!0)])):Object(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("div",Cg,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(b),e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:e.id},["group"===e.type?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ng,[Eg,(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.elements,t=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["item",{active:Object(n["unref"])(i).includes(t.id),"group-active":Object(n["unref"])(s).includes(t.id)}]),key:t.id,onClick:l=>O(e,t.id),onDblclick:e=>y(t.id)},[v.value===t.id?(Object(n["openBlock"])(),Object(n["createElementBlock"])("input",{key:0,id:"input-"+t.id,value:t.name||Object(n["unref"])(El)[t.type],class:"input",type:"text",onBlur:e=>h(e,t.id),onKeydown:Object(n["withKeys"])(e=>h(e,t.id),["enter"])},null,40,Vg)):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ig,Object(n["toDisplayString"])(t.name||Object(n["unref"])(El)[t.type]),1)),Object(n["createElementVNode"])("div",Sg,[Object(n["unref"])(d).includes(t.id)?(Object(n["openBlock"])(),Object(n["createBlock"])(r,{key:0,style:{"font-size":"17px"},onClick:Object(n["withModifiers"])(e=>p(t.id),["stop"])},null,8,["onClick"])):(Object(n["openBlock"])(),Object(n["createBlock"])(x,{key:1,style:{"font-size":"17px"},onClick:Object(n["withModifiers"])(e=>p(t.id),["stop"])},null,8,["onClick"]))])],42,wg))),128))])):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:1,class:Object(n["normalizeClass"])(["item",{active:Object(n["unref"])(i).includes(e.id)}]),onClick:t=>m(e.id),onDblclick:t=>y(e.id)},[v.value===e.id?(Object(n["openBlock"])(),Object(n["createElementBlock"])("input",{key:0,id:"input-"+e.id,value:e.name||Object(n["unref"])(El)[e.type],class:"input",type:"text",onBlur:t=>h(t,e.id),onKeydown:Object(n["withKeys"])(t=>h(t,e.id),["enter"])},null,40,Bg)):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",_g,Object(n["toDisplayString"])(e.name||Object(n["unref"])(El)[e.type]),1)),Object(n["createElementVNode"])("div",Tg,[Object(n["unref"])(d).includes(e.id)?(Object(n["openBlock"])(),Object(n["createBlock"])(r,{key:0,style:{"font-size":"17px"},onClick:Object(n["withModifiers"])(t=>p(e.id),["stop"])},null,8,["onClick"])):(Object(n["openBlock"])(),Object(n["createBlock"])(x,{key:1,style:{"font-size":"17px"},onClick:Object(n["withModifiers"])(t=>p(e.id),["stop"])},null,8,["onClick"]))])],42,Lg))],64))),128))])]),_:1},8,["title"])}}});l("df7d");const Dg=Yt()(Mg,[["__scopeId","data-v-64f9ccca"]]);var zg=Dg;const Fg={class:"pptist-editor"},Ag={class:"layout-content"},$g={class:"layout-content-center"};var Rg=Object(n["defineComponent"])({__name:"index",setup(e){const t=z(),{dialogForExport:l,showSelectPanel:c}=Object(o["c"])(t),a=()=>t.setDialogForExport(""),r=Object(n["ref"])(40);return Je(),Ke(),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,[Object(n["createElementVNode"])("div",Fg,[Object(n["createVNode"])(jl,{class:"layout-header"}),Object(n["createElementVNode"])("div",Ag,[Object(n["createVNode"])(Xu,{class:"layout-content-left"}),Object(n["createElementVNode"])("div",$g,[Object(n["createVNode"])(Bu,{class:"center-top"}),Object(n["createVNode"])($s,{class:"center-body",style:Object(n["normalizeStyle"])({height:`calc(100% - ${r.value+40}px)`})},null,8,["style"]),Object(n["createVNode"])(zh,{class:"center-bottom",height:r.value,"onUpdate:height":t[0]||(t[0]=e=>r.value=e),style:Object(n["normalizeStyle"])({height:r.value+"px"})},null,8,["height","style"])]),Object(n["createVNode"])(Bh,{class:"layout-content-right"})])]),Object(n["unref"])(c)?(Object(n["openBlock"])(),Object(n["createBlock"])(zg,{key:0})):Object(n["createCommentVNode"])("",!0),Object(n["createVNode"])(Object(n["unref"])(le["a"]),{visible:!!Object(n["unref"])(l),footer:null,centered:"",closable:!1,width:680,destroyOnClose:"",onCancel:t[1]||(t[1]=e=>a())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(mg)]),_:1},8,["visible"])],64))}});l("a785");const Pg=Yt()(Rg,[["__scopeId","data-v-ed562e98"]]);var Hg=Pg,qg=()=>{const e=T(),{slides:t,slideIndex:l,formatedAnimations:c}=Object(o["c"])(e),a=Object(n["ref"])(0),r=Object(n["ref"])(!1),i=Object(n["ref"])(l.value),s=()=>{if(r.value)return;const{animations:e,autoNext:t}=c.value[a.value];a.value+=1,r.value=!0;let l=0;for(const c of e){const n=document.querySelector(`#screen-element-${c.elId} [class^=base-element-]`);if(!n){l+=1;continue}const o=`${Uj}${c.effect}`;n.style.removeProperty("--animate-duration");for(const e of n.classList)-1!==e.indexOf(Uj)&&n.classList.remove(e,Uj+"animated");n.style.setProperty("--animate-duration",c.duration+"ms"),n.classList.add(o,Uj+"animated");const a=()=>{"out"!==c.type&&(n.style.removeProperty("--animate-duration"),n.classList.remove(o,Uj+"animated")),l+=1,l===e.length&&(r.value=!1,t&&s())};n.addEventListener("animationend",a,{once:!0})}},d=()=>{a.value-=1;const{animations:e}=c.value[a.value];for(const t of e){const e=document.querySelector(`#screen-element-${t.elId} [class^=base-element-]`);if(e){e.style.removeProperty("--animate-duration");for(const t of e.classList)-1!==t.indexOf(Uj)&&e.classList.remove(t,Uj+"animated")}}e.every(e=>"attention"===e.type)&&m()},u=Object(n["ref"])(0),b=()=>{u.value&&(clearInterval(u.value),u.value=0)};Object(n["onUnmounted"])(b);const O=Object(S["throttle"])((function(e){ne["a"].success(e)}),1e3,{leading:!0,trailing:!1}),m=()=>{c.value.length&&a.value>0?d():l.value>0?(e.updateSlideIndex(l.value-1),l.value{c.value.length&&a.value{b(),ne["a"].success("开始自动放映"),u.value=setInterval(p,2500)},j=Object(S["throttle"])((function(e){e.deltaY<0?m():e.deltaY>0&&p()}),500,{leading:!0,trailing:!1}),v=Object(n["ref"])(null),h=e=>{v.value={x:e.changedTouches[0].pageX,y:e.changedTouches[0].pageY}},y=e=>{if(!v.value)return;const t=Math.abs(v.value.x-e.changedTouches[0].pageX),l=e.changedTouches[0].pageY-v.value.y;Math.abs(l)>t&&Math.abs(l)>50&&(v.value=null,l>0?m():p())},g=e=>{const t=e.key.toUpperCase();t===te.UP||t===te.LEFT||t===te.PAGEUP?m():t!==te.DOWN&&t!==te.RIGHT&&t!==te.SPACE&&t!==te.ENTER&&t!==te.PAGEDOWN||p()};Object(n["onMounted"])(()=>document.addEventListener("keydown",g)),Object(n["onUnmounted"])(()=>document.removeEventListener("keydown",g));const x=()=>{e.updateSlideIndex(l.value-1),a.value=0},k=()=>{e.updateSlideIndex(l.value+1),a.value=0},C=t=>{e.updateSlideIndex(t),a.value=0},N=l=>{const c=t.value.findIndex(e=>e.id===l);-1!==c&&(e.updateSlideIndex(c),a.value=0)};return{autoPlayTimer:u,autoPlay:f,closeAutoPlay:b,mousewheelListener:j,touchStartListener:h,touchEndListener:y,turnPrevSlide:x,turnNextSlide:k,turnSlideToIndex:C,turnSlideToId:N,execPrev:m,execNext:p,animationIndex:a}},Ug=e=>{const t=T(),{viewportRatio:l}=Object(o["c"])(t),c=Object(n["ref"])(0),a=Object(n["ref"])(0),r=()=>{const t=(null===e||void 0===e?void 0:e.value)||document.body,n=t.clientWidth,o=t.clientHeight;let r,i;o/n===l.value?(r=n,i=o):o/n>l.value?(r=n,i=n*l.value):(r=o/l.value,i=o),c.value=r,a.value=i};return Object(n["onMounted"])(()=>{r(),window.addEventListener("resize",r)}),Object(n["onUnmounted"])(()=>{window.removeEventListener("resize",r)}),{slideWidth:c,slideHeight:a}},Gg=()=>{const e=Object(n["ref"])(!0),t=Object(n["ref"])(!0),{exitScreening:l}=Ze(),c=()=>{e.value=Ye(),!e.value&&t.value&&l(),t.value=!0};Object(n["onMounted"])(()=>{e.value=Ye(),document.addEventListener("fullscreenchange",c),document.addEventListener("webkitfullscreenchange",c)}),Object(n["onUnmounted"])(()=>{document.removeEventListener("fullscreenchange",c),document.removeEventListener("webkitfullscreenchange",c)});const o=()=>{e.value&&(t.value=!1,Xe())};return{fullscreenState:e,manualExitFullscreen:o}},Xg=Object(n["defineComponent"])({__name:"ScreenChartElement",props:{elementInfo:{type:Object,required:!0}},setup(e){return(t,l)=>(Object(n["openBlock"])(),Object(n["createBlock"])(Yi,{class:"screen-element-chart",elementInfo:e.elementInfo},null,8,["elementInfo"]))}});const Yg=Xg;var Zg=Yg;const Wg={class:"element-content"};var Jg=Object(n["defineComponent"])({__name:"ScreenVideoElement",props:{elementInfo:{type:Object,required:!0}},setup(e){const{currentSlide:t}=Object(o["c"])(T()),l=Object(n["inject"])(vl)||Object(n["ref"])(1),c=Object(n["inject"])(hl)||Object(n["ref"])(""),a=Object(n["computed"])(()=>t.value.id===c.value);return(t,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"screen-element-video",style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["createElementVNode"])("div",Wg,[Object(n["unref"])(a)?(Object(n["openBlock"])(),Object(n["createBlock"])(fa,{key:0,width:e.elementInfo.width,height:e.elementInfo.height,src:e.elementInfo.src,poster:e.elementInfo.poster,scale:Object(n["unref"])(l)},null,8,["width","height","src","poster","scale"])):Object(n["createCommentVNode"])("",!0)])],4)],4))}});l("7a78");const Kg=Yt()(Jg,[["__scopeId","data-v-76457308"]]);var Qg=Kg;const ex={class:"element-content"};var tx=Object(n["defineComponent"])({__name:"ScreenAudioElement",props:{elementInfo:{type:Object,required:!0}},setup(e){const t=e,{viewportRatio:l,currentSlide:c}=Object(o["c"])(T()),a=Object(n["inject"])(vl)||Object(n["ref"])(1),r=Object(n["inject"])(hl)||Object(n["ref"])(""),i=Object(n["computed"])(()=>c.value.id===r.value),s=Object(n["computed"])(()=>Math.min(t.elementInfo.width,t.elementInfo.height)+"px"),d=Object(n["computed"])(()=>{const e=Ve,c=Ve*l.value,n=280/a.value,o=50/a.value,r=t.elementInfo.width,i=t.elementInfo.height,s=t.elementInfo.left,d=t.elementInfo.top;let u=0,b=i;return s+n>=e&&(u=r-n),d+i+o>=c&&(b=-o),{left:u+"px",top:b+"px"}}),u=Object(n["ref"])(),b=()=>{u.value&&u.value.toggle()};return(t,l)=>{const c=Object(n["resolveComponent"])("IconVolumeNotice");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"screen-element-audio",style:Object(n["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(n["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(n["normalizeStyle"])({transform:`rotate(${e.elementInfo.rotate}deg)`})},[Object(n["createElementVNode"])("div",ex,[Object(n["createVNode"])(c,{class:"audio-icon",style:Object(n["normalizeStyle"])({fontSize:Object(n["unref"])(s),color:e.elementInfo.color}),onClick:l[0]||(l[0]=e=>b())},null,8,["style"]),Object(n["unref"])(i)?(Object(n["openBlock"])(),Object(n["createBlock"])(za,{key:0,class:"audio-player",ref_key:"audioPlayerRef",ref:u,style:Object(n["normalizeStyle"])({...Object(n["unref"])(d)}),src:e.elementInfo.src,loop:e.elementInfo.loop,autoplay:e.elementInfo.autoplay,scale:Object(n["unref"])(a)},null,8,["style","src","loop","autoplay","scale"])):Object(n["createCommentVNode"])("",!0)])],4)],4)}}});l("3010");const lx=Yt()(tx,[["__scopeId","data-v-1172b8ee"]]);var cx=lx;const nx=["id","title"];var ox=Object(n["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(e){const t=e,l=Object(n["computed"])(()=>{const e={[Se.IMAGE]:Vi,[Se.TEXT]:Bi,[Se.SHAPE]:$i,[Se.LINE]:Ui,[Se.CHART]:Zg,[Se.TABLE]:ns,[Se.LATEX]:us,[Se.VIDEO]:Qg,[Se.AUDIO]:cx};return e[t.elementInfo.type]||null}),{formatedAnimations:c,theme:a}=Object(o["c"])(T()),r=Object(n["computed"])(()=>{const e=c.value.findIndex(e=>{const l=e.animations.map(e=>e.elId);return l.includes(t.elementInfo.id)});if(-1===e)return!1;if(ee.elId===t.elementInfo.id);return"in"===(null===l||void 0===l?void 0:l.type)}),i=()=>{const e=t.elementInfo.link;e&&("web"===e.type?(t.manualExitFullscreen(),window.open(e.target)):"slide"===e.type&&t.turnSlideToId(e.target))};return(t,c)=>{var o;return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["screen-element",{link:e.elementInfo.link}]),id:"screen-element-"+e.elementInfo.id,style:Object(n["normalizeStyle"])({zIndex:e.elementIndex,color:Object(n["unref"])(a).fontColor,fontFamily:Object(n["unref"])(a).fontName,visibility:Object(n["unref"])(r)?"hidden":"visible"}),title:(null===(o=e.elementInfo.link)||void 0===o?void 0:o.target)||"",onClick:c[0]||(c[0]=e=>i())},[(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["resolveDynamicComponent"])(Object(n["unref"])(l)),{elementInfo:e.elementInfo},null,8,["elementInfo"]))],14,nx)}}});l("d2ee");const ax=Yt()(ox,[["__scopeId","data-v-a15cc1d8"]]);var rx=ax,ix=Object(n["defineComponent"])({__name:"ScreenSlide",props:{slide:{type:Object,required:!0},scale:{type:Number,required:!0},animationIndex:{type:Number,required:!0},turnSlideToId:{type:Function,required:!0},manualExitFullscreen:{type:Function,required:!0}},setup(e){const t=e,{viewportRatio:l}=Object(o["c"])(T()),c=Object(n["computed"])(()=>t.slide.background),{backgroundStyle:a}=Qa(c),r=Object(n["computed"])(()=>t.slide.id);return Object(n["provide"])(hl,r),(t,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"screen-slide",style:Object(n["normalizeStyle"])({width:Object(n["unref"])(Ve)+"px",height:Object(n["unref"])(Ve)*Object(n["unref"])(l)+"px",transform:`scale(${e.scale})`})},[Object(n["createElementVNode"])("div",{class:"background",style:Object(n["normalizeStyle"])({...Object(n["unref"])(a)})},null,4),(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.slide.elements,(t,l)=>(Object(n["openBlock"])(),Object(n["createBlock"])(rx,{key:t.id,elementInfo:t,elementIndex:l+1,animationIndex:e.animationIndex,turnSlideToId:e.turnSlideToId,manualExitFullscreen:e.manualExitFullscreen},null,8,["elementInfo","elementIndex","animationIndex","turnSlideToId","manualExitFullscreen"]))),128))],4))}});l("a060");const sx=Yt()(ix,[["__scopeId","data-v-7cf7f9e7"]]);var dx=sx;const ux={class:"screen-slide-list"};var bx=Object(n["defineComponent"])({__name:"ScreenSlideList",props:{slideWidth:{type:Number,required:!0},slideHeight:{type:Number,required:!0},animationIndex:{type:Number,required:!0},turnSlideToId:{type:Function,required:!0},manualExitFullscreen:{type:Function,required:!0}},setup(e){const t=e,{slides:l,slideIndex:c,currentSlide:a}=Object(o["c"])(T()),r=Object(n["computed"])(()=>t.slideWidth/Ve);return Object(n["provide"])(vl,r),(t,o)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ux,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(l),(t,l)=>{var o;return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["slide-item","turning-mode-"+(t.turningMode||"slideY"),{current:l===Object(n["unref"])(c),before:lObject(n["unref"])(c),hide:(l===Object(n["unref"])(c)-1||l===Object(n["unref"])(c)+1)&&t.turningMode!==Object(n["unref"])(a).turningMode}]),key:t.id},[Math.abs(Object(n["unref"])(c)-l)<2||null!==(o=t.animations)&&void 0!==o&&o.length?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:"slide-content",style:Object(n["normalizeStyle"])({width:e.slideWidth+"px",height:e.slideHeight+"px"})},[Object(n["createVNode"])(dx,{slide:t,scale:Object(n["unref"])(r),animationIndex:e.animationIndex,turnSlideToId:e.turnSlideToId,manualExitFullscreen:e.manualExitFullscreen},null,8,["slide","scale","animationIndex","turnSlideToId","manualExitFullscreen"])],4)):Object(n["createCommentVNode"])("",!0)],2)}),128))]))}});l("9557");const Ox=Yt()(bx,[["__scopeId","data-v-77a3e620"]]);var mx=Ox;const px={class:"slide-thumbnails"},fx={class:"return-button"},jx={class:"slide-thumbnails-content"},vx=["onClick"];var hx=Object(n["defineComponent"])({__name:"SlideThumbnails",props:{turnSlideToIndex:{type:Function,required:!0}},emits:["close"],setup(e,{emit:t}){const l=e,{slides:c,slideIndex:a}=Object(o["c"])(T()),{slidesLoadLimit:r}=_u(),i=e=>{l.turnSlideToIndex(e),t("close")};return(e,l)=>{const o=Object(n["resolveComponent"])("IconArrowCircleLeft");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",px,[Object(n["createElementVNode"])("div",fx,[Object(n["createVNode"])(o,{class:"icon",onClick:l[0]||(l[0]=e=>t("close"))})]),Object(n["createElementVNode"])("div",jx,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(c),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["thumbnail",{active:t===Object(n["unref"])(a)}]),key:e.id,onClick:e=>i(t)},[Object(n["createVNode"])(Ns,{slide:e,size:150,visible:tr.value?m.value/r.value.width:1),j=Object(n["computed"])(()=>r.value?p.value/r.value.height:1),v=()=>{a.value&&(m.value=a.value.clientWidth,p.value=a.value.clientHeight)},h=new ResizeObserver(v);Object(n["onMounted"])(()=>{a.value&&h.observe(a.value)}),Object(n["onUnmounted"])(()=>{a.value&&h.unobserve(a.value)});const y=()=>{r.value&&a.value&&(o=r.value.getContext("2d"),o&&(r.value.width=a.value.clientWidth,r.value.height=a.value.clientHeight,o.lineCap="round",o.lineJoin="round"))};Object(n["onMounted"])(y);const g=()=>{o&&("mark"===c.model?(o.globalCompositeOperation="xor",o.globalAlpha=.5):"pen"===c.model&&(o.globalCompositeOperation="source-over",o.globalAlpha=1))};Object(n["watch"])(()=>c.model,g);const x=(e,t,l)=>{if(!o)return;const n=i.x,a=i.y;o.lineWidth=l,o.strokeStyle=c.color,o.beginPath(),o.moveTo(n,a),o.lineTo(e,t),o.stroke(),o.closePath()},k=(e,t)=>{if(!o||!r.value)return;const l=i.x,n=i.y,a=c.rubberSize/2,s=a*Math.sin(Math.atan((t-n)/(e-l))),d=a*Math.cos(Math.atan((t-n)/(e-l))),u=[l+s,n-d],b=[l-s,n+d],O=[e+s,t-d],m=[e-s,t+d];o.save(),o.beginPath(),o.arc(e,t,a,0,2*Math.PI),o.clip(),o.clearRect(0,0,r.value.width,r.value.height),o.restore(),o.save(),o.beginPath(),o.moveTo(...u),o.lineTo(...O),o.lineTo(...m),o.lineTo(...b),o.closePath(),o.clip(),o.clearRect(0,0,r.value.width,r.value.height),o.restore()},C=(e,t)=>{const l=i.x,c=i.y;return Math.sqrt((e-l)*(e-l)+(t-c)*(t-c))},N=(e,t)=>{const l=10,n=.1,o=c.penSize,a=3,r=e/t;let i;return i=r<=n?o:r>=l?a:o-r/l*o,-1===u?i:1*i/3+2*u/3},E=(e,t)=>{const l=(new Date).getTime();if("pen"===c.model){const c=C(e,t),n=l-d,o=N(c,n);x(e,t,o),u=o}else"mark"===c.model?x(e,t,c.markSize):k(e,t);i={x:e,y:t},d=(new Date).getTime()},w=e=>{if(!r.value)return[0,0];const t=e instanceof MouseEvent?e:e.changedTouches[0],l=r.value.getBoundingClientRect(),c=t.pageX-l.x,n=t.pageY-l.y;return[c,n]},V=e=>{const[t,l]=w(e),c=t/f.value,n=l/j.value;s=!0,i={x:c,y:n},d=(new Date).getTime(),e instanceof MouseEvent||(b.value={x:t,y:l},O.value=!0)},I=e=>{const[t,l]=w(e),c=t/f.value,n=l/j.value;b.value={x:t,y:l},s&&E(c,n)},S=()=>{s&&(s=!1,l("end"))},L=()=>{o&&r.value&&(o.clearRect(0,0,r.value.width,r.value.height),l("end"))},B=()=>{var e;return null===(e=r.value)||void 0===e?void 0:e.toDataURL()},_=e=>{if(o&&r.value&&(o.clearRect(0,0,r.value.width,r.value.height),e)){o.globalCompositeOperation="source-over",o.globalAlpha=1;const t=new Image;t.src=e,t.onload=()=>{o.drawImage(t,0,0),g()}}};return t({clearCanvas:L,getImageDataURL:B,setImageDataURL:_}),(t,l)=>{const c=Object(n["resolveComponent"])("IconWrite"),o=Object(n["resolveComponent"])("IconHighLight");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"writing-board",ref_key:"writingBoardRef",ref:a},[e.blackboard?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",xx)):Object(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("canvas",{class:"canvas",ref_key:"canvasRef",ref:r,style:Object(n["normalizeStyle"])({width:m.value+"px",height:p.value+"px"}),onMousedown:l[0]||(l[0]=e=>V(e)),onMousemove:l[1]||(l[1]=e=>I(e)),onMouseup:l[2]||(l[2]=e=>S()),onTouchstart:l[3]||(l[3]=e=>V(e)),onTouchmove:l[4]||(l[4]=e=>I(e)),onTouchend:l[5]||(l[5]=e=>{S(),O.value=!1}),onMouseleave:l[6]||(l[6]=e=>{S(),O.value=!1}),onMouseenter:l[7]||(l[7]=e=>O.value=!0)},null,36),O.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:1},["eraser"===e.model?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:"eraser",style:Object(n["normalizeStyle"])({left:b.value.x-e.rubberSize/2+"px",top:b.value.y-e.rubberSize/2+"px",width:e.rubberSize+"px",height:e.rubberSize+"px"})},null,4)):Object(n["createCommentVNode"])("",!0),"pen"===e.model?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:1,class:"pen",style:Object(n["normalizeStyle"])({left:b.value.x-e.penSize/2+"px",top:b.value.y-6*e.penSize+e.penSize/2+"px",color:e.color})},["pen"===e.model?(Object(n["openBlock"])(),Object(n["createBlock"])(c,{key:0,class:"icon",size:6*e.penSize},null,8,["size"])):Object(n["createCommentVNode"])("",!0)],4)):Object(n["createCommentVNode"])("",!0),"mark"===e.model?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:2,class:"pen",style:Object(n["normalizeStyle"])({left:b.value.x-e.markSize/2+"px",top:b.value.y+"px",color:e.color})},["mark"===e.model?(Object(n["openBlock"])(),Object(n["createBlock"])(o,{key:0,class:"icon",size:1.5*e.markSize},null,8,["size"])):Object(n["createCommentVNode"])("",!0)],4)):Object(n["createCommentVNode"])("",!0)],64)):Object(n["createCommentVNode"])("",!0)],512)}}});l("b9ba");const Cx=Yt()(kx,[["__scopeId","data-v-3e9669a9"]]);var Nx=Cx;const Ex=e=>(Object(n["pushScopeId"])("data-v-52a2a3a6"),e=e(),Object(n["popScopeId"])(),e),wx={class:"writing-board-tool"},Vx={class:"tool-content"},Ix={class:"size"},Sx=Ex(()=>Object(n["createElementVNode"])("div",{class:"label"},"墨迹粗细:",-1)),Lx={class:"size"},Bx=Ex(()=>Object(n["createElementVNode"])("div",{class:"label"},"墨迹粗细:",-1)),_x={class:"size"},Tx=Ex(()=>Object(n["createElementVNode"])("div",{class:"label"},"橡皮大小:",-1)),Mx={class:"colors"},Dx=["onClick"];var zx=Object(n["defineComponent"])({__name:"WritingBoardTool",props:{slideWidth:{type:Number,required:!0},slideHeight:{type:Number,required:!0},left:{type:Number,default:-5},top:{type:Number,default:-5}},emits:["close"],setup(e,{emit:t}){const l=["#000000","#ffffff","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c","#ffff3a"],{currentSlide:c}=Object(o["c"])(T()),a=Object(n["ref"])(),r=Object(n["ref"])("#e2534d"),i=Object(n["ref"])("pen"),s=Object(n["ref"])(!1),d=Object(n["ref"])(""),u=Object(n["ref"])(6),b=Object(n["ref"])(24),O=Object(n["ref"])(80),m=e=>{i.value===e?d.value=d.value===e?"":e:(d.value&&(d.value=""),i.value=e)},p=()=>{a.value.clearCanvas()},f=e=>{"eraser"===i.value&&(i.value="pen"),r.value=e},j=()=>{t("close")};Object(n["watch"])(c,()=>{q.writingBoardImgs.where("id").equals(c.value.id).toArray().then(e=>{const t=e[0];a.value.setImageDataURL((null===t||void 0===t?void 0:t.dataURL)||"")})},{immediate:!0});const v=()=>{const e=a.value.getImageDataURL();q.writingBoardImgs.where("id").equals(c.value.id).toArray().then(t=>{const l=t[0];l?q.writingBoardImgs.update(l,{dataURL:e}):q.writingBoardImgs.add({id:c.value.id,dataURL:e})})};return(t,c)=>{const o=Object(n["resolveComponent"])("IconWrite"),h=Object(n["resolveComponent"])("IconHighLight"),y=Object(n["resolveComponent"])("IconErase"),g=Object(n["resolveComponent"])("IconClear"),x=Object(n["resolveComponent"])("IconFill"),k=Object(n["resolveComponent"])("IconClose");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",wx,[Object(n["createElementVNode"])("div",{class:"writing-board-wrap",style:Object(n["normalizeStyle"])({width:e.slideWidth+"px",height:e.slideHeight+"px"})},[Object(n["createVNode"])(Nx,{ref_key:"writingBoardRef",ref:a,color:r.value,blackboard:s.value,model:i.value,penSize:u.value,markSize:b.value,rubberSize:O.value,onEnd:c[0]||(c[0]=e=>v())},null,8,["color","blackboard","model","penSize","markSize","rubberSize"])],4),Object(n["createVNode"])(hg,{class:"tools-panel",width:520,height:50,left:e.left,top:e.top,moveable:""===d.value},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",{class:"tools",onMousedown:c[10]||(c[10]=Object(n["withModifiers"])(()=>{},["stop"]))},[Object(n["createElementVNode"])("div",Vx,[Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:"pen"===d.value},{content:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",Ix,[Sx,Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"size-slider",min:4,max:10,step:2,value:u.value,"onUpdate:value":c[1]||(c[1]=e=>u.value=e)},null,8,["value"])])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"画笔"},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["btn",{active:"pen"===i.value}]),onClick:c[2]||(c[2]=e=>m("pen"))},[Object(n["createVNode"])(o,{class:"icon"})],2)]),_:1},8,["mouseEnterDelay"])]),_:1},8,["visible"]),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:"mark"===d.value},{content:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",Lx,[Bx,Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"size-slider",min:16,max:40,step:4,value:b.value,"onUpdate:value":c[3]||(c[3]=e=>b.value=e)},null,8,["value"])])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"荧光笔"},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["btn",{active:"mark"===i.value}]),onClick:c[4]||(c[4]=e=>m("mark"))},[Object(n["createVNode"])(h,{class:"icon"})],2)]),_:1},8,["mouseEnterDelay"])]),_:1},8,["visible"]),Object(n["createVNode"])(Object(n["unref"])(Rs["a"]),{trigger:"click",visible:"eraser"===d.value},{content:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",_x,[Tx,Object(n["createVNode"])(Object(n["unref"])(Wu["a"]),{class:"size-slider",min:20,max:200,step:20,value:O.value,"onUpdate:value":c[5]||(c[5]=e=>O.value=e)},null,8,["value"])])]),default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"橡皮擦"},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["btn",{active:"eraser"===i.value}]),onClick:c[6]||(c[6]=e=>m("eraser"))},[Object(n["createVNode"])(y,{class:"icon"})],2)]),_:1},8,["mouseEnterDelay"])]),_:1},8,["visible"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"清除墨迹"},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",{class:"btn",onClick:c[7]||(c[7]=e=>p())},[Object(n["createVNode"])(g,{class:"icon"})])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"黑板"},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["btn",{active:s.value}]),onClick:c[8]||(c[8]=e=>s.value=!s.value)},[Object(n["createVNode"])(x,{class:"icon"})],2)]),_:1},8,["mouseEnterDelay"]),Object(n["createElementVNode"])("div",Mx,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(l,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["color",{active:e===r.value}]),key:e,style:Object(n["normalizeStyle"])({backgroundColor:e}),onClick:t=>f(e)},null,14,Dx)),64))])]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"关闭画笔"},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",{class:"btn",onClick:c[9]||(c[9]=e=>j())},[Object(n["createVNode"])(k,{class:"icon"})])]),_:1},8,["mouseEnterDelay"])],32)]),_:1},8,["left","top","moveable"])])}}});l("399d");const Fx=Yt()(zx,[["__scopeId","data-v-52a2a3a6"]]);var Ax=Fx;const $x=e=>(Object(n["pushScopeId"])("data-v-5a82de11"),e=e(),Object(n["popScopeId"])(),e),Rx={class:"header"},Px={class:"content"},Hx={class:"timer"},qx=["value","disabled"],Ux=$x(()=>Object(n["createElementVNode"])("div",{class:"colon"},":",-1)),Gx={class:"timer"},Xx=["value","disabled"];var Yx=Object(n["defineComponent"])({__name:"CountdownTimer",props:{left:{type:Number,default:5},top:{type:Number,default:5}},emits:["close"],setup(e,{emit:t}){const l=Object(n["ref"])(null),c=Object(n["ref"])(!1),o=Object(n["ref"])(!1),a=Object(n["ref"])(0),r=Object(n["computed"])(()=>Math.floor(a.value/60)),i=Object(n["computed"])(()=>a.value%60),s=Object(n["computed"])(()=>!o.value||c.value),d=()=>{l.value&&clearInterval(l.value)};Object(n["onUnmounted"])(d);const u=()=>{d(),c.value=!1},b=()=>{d(),c.value=!1,o.value?a.value=600:a.value=0},O=()=>{d(),o.value?l.value=setInterval(()=>{a.value=a.value-1,a.value<=0&&b()},1e3):l.value=setInterval(()=>{a.value=a.value+1,a.value>36e3&&u()},1e3),c.value=!0},m=()=>{c.value?u():O()},p=()=>{o.value=!o.value,b()},f=(e,t)=>{const l=e.target;let c=l.value;const n=/^(\d)+$/.test(c);n?("second"===t&&+c>=60&&(c="59"),a.value="minute"===t?60*+c+i.value:+c+60*r.value):l.value=Y("minute"===t?r.value:i.value,2)};return(l,a)=>{const d=Object(n["resolveComponent"])("IconClose");return Object(n["openBlock"])(),Object(n["createBlock"])(hg,{class:"countdown-timer",width:180,height:110,left:e.left,top:e.top},{default:Object(n["withCtx"])(()=>[Object(n["createElementVNode"])("div",Rx,[Object(n["createElementVNode"])("span",{class:"text-btn",onClick:a[0]||(a[0]=e=>m())},Object(n["toDisplayString"])(c.value?"暂停":"开始"),1),Object(n["createElementVNode"])("span",{class:"text-btn",onClick:a[1]||(a[1]=e=>b())},"重置"),Object(n["createElementVNode"])("span",{class:Object(n["normalizeClass"])(["text-btn",{active:o.value}]),onClick:a[2]||(a[2]=e=>p())},"倒计时",2)]),Object(n["createElementVNode"])("div",Px,[Object(n["createElementVNode"])("div",Hx,[Object(n["createElementVNode"])("input",{type:"text",value:Object(n["unref"])(Y)(Object(n["unref"])(r),2),maxlength:3,disabled:Object(n["unref"])(s),onMousedown:a[3]||(a[3]=Object(n["withModifiers"])(()=>{},["stop"])),onBlur:a[4]||(a[4]=e=>f(e,"minute")),onKeydown:[a[5]||(a[5]=Object(n["withModifiers"])(()=>{},["stop"])),a[6]||(a[6]=Object(n["withKeys"])(Object(n["withModifiers"])(e=>f(e,"minute"),["stop"]),["enter"]))]},null,40,qx)]),Ux,Object(n["createElementVNode"])("div",Gx,[Object(n["createElementVNode"])("input",{type:"text",value:Object(n["unref"])(Y)(Object(n["unref"])(i),2),maxlength:3,disabled:Object(n["unref"])(s),onMousedown:a[7]||(a[7]=Object(n["withModifiers"])(()=>{},["stop"])),onBlur:a[8]||(a[8]=e=>f(e,"second")),onKeydown:[a[9]||(a[9]=Object(n["withModifiers"])(()=>{},["stop"])),a[10]||(a[10]=Object(n["withKeys"])(Object(n["withModifiers"])(e=>f(e,"second"),["stop"]),["enter"]))]},null,40,Xx)])]),Object(n["createElementVNode"])("div",{class:"close-btn",onClick:a[11]||(a[11]=e=>t("close"))},[Object(n["createVNode"])(d,{class:"icon"})])]),_:1},8,["left","top"])}}});l("a874");const Zx=Yt()(Yx,[["__scopeId","data-v-5a82de11"]]);var Wx=Zx;const Jx={class:"tools-left"},Kx={class:"content"};var Qx=Object(n["defineComponent"])({__name:"BaseView",props:{changeViewMode:{type:Function,required:!0}},setup(e){const t=e,{slides:l,slideIndex:c}=Object(o["c"])(T()),{autoPlayTimer:a,autoPlay:r,closeAutoPlay:i,mousewheelListener:s,touchStartListener:d,touchEndListener:u,turnPrevSlide:b,turnNextSlide:O,turnSlideToIndex:m,turnSlideToId:p,execPrev:f,execNext:j,animationIndex:v}=qg(),{slideWidth:h,slideHeight:y}=Ug(),{exitScreening:g}=Ze(),{fullscreenState:x,manualExitFullscreen:k}=Gg(),C=Object(n["ref"])(!1),N=Object(n["ref"])(!1),E=Object(n["ref"])(!1),w=Object(n["ref"])(!1),V=Object(n["ref"])(!1),I=()=>[{text:"上一页",subText:"↑ ←",disable:c.value<=0,handler:()=>b()},{text:"下一页",subText:"↓ →",disable:c.value>=l.value.length-1,handler:()=>O()},{text:"第一页",disable:0===c.value,handler:()=>m(0)},{text:"最后一页",disable:c.value===l.value.length-1,handler:()=>m(l.value.length-1)},{divider:!0},{text:"显示工具栏",handler:()=>C.value=!0},{text:"查看所有幻灯片",handler:()=>w.value=!0},{text:"画笔工具",handler:()=>N.value=!0},{text:"演讲者视图",handler:()=>t.changeViewMode("presenter")},{divider:!0},{text:a.value?"取消自动放映":"自动放映",handler:a.value?i:r},{text:"结束放映",subText:"ESC",handler:g}];return(t,o)=>{const a=Object(n["resolveComponent"])("IconLeftTwo"),r=Object(n["resolveComponent"])("IconRightTwo"),i=Object(n["resolveComponent"])("IconWrite"),b=Object(n["resolveComponent"])("IconMagic"),O=Object(n["resolveComponent"])("IconStopwatchStart"),S=Object(n["resolveComponent"])("IconListView"),L=Object(n["resolveComponent"])("IconOffScreenOne"),B=Object(n["resolveComponent"])("IconFullScreenOne"),_=Object(n["resolveComponent"])("IconPower"),T=Object(n["resolveDirective"])("contextmenu");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["base-view",{"laser-pen":V.value}])},[Object(n["withDirectives"])(Object(n["createVNode"])(mx,{slideWidth:Object(n["unref"])(h),slideHeight:Object(n["unref"])(y),animationIndex:Object(n["unref"])(v),turnSlideToId:Object(n["unref"])(p),manualExitFullscreen:Object(n["unref"])(k),onWheel:o[0]||(o[0]=e=>Object(n["unref"])(s)(e)),onTouchstart:o[1]||(o[1]=e=>Object(n["unref"])(d)(e)),onTouchend:o[2]||(o[2]=e=>Object(n["unref"])(u)(e))},null,8,["slideWidth","slideHeight","animationIndex","turnSlideToId","manualExitFullscreen"]),[[T,I]]),w.value?(Object(n["openBlock"])(),Object(n["createBlock"])(gx,{key:0,turnSlideToIndex:Object(n["unref"])(m),onClose:o[3]||(o[3]=e=>w.value=!1)},null,8,["turnSlideToIndex"])):Object(n["createCommentVNode"])("",!0),N.value?(Object(n["openBlock"])(),Object(n["createBlock"])(Ax,{key:1,slideWidth:Object(n["unref"])(h),slideHeight:Object(n["unref"])(y),onClose:o[4]||(o[4]=e=>N.value=!1)},null,8,["slideWidth","slideHeight"])):Object(n["createCommentVNode"])("",!0),E.value?(Object(n["openBlock"])(),Object(n["createBlock"])(Wx,{key:2,onClose:o[5]||(o[5]=e=>E.value=!1)})):Object(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("div",Jx,[Object(n["createVNode"])(a,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:o[6]||(o[6]=e=>Object(n["unref"])(f)())}),Object(n["createVNode"])(r,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:o[7]||(o[7]=e=>Object(n["unref"])(j)())})]),Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["tools-right",{visible:C.value}]),onMouseleave:o[16]||(o[16]=e=>C.value=!1),onMouseenter:o[17]||(o[17]=e=>C.value=!0)},[Object(n["createElementVNode"])("div",Kx,[Object(n["createElementVNode"])("div",{class:"tool-btn page-number",onClick:o[8]||(o[8]=e=>w.value=!0)},"幻灯片 "+Object(n["toDisplayString"])(Object(n["unref"])(c)+1)+" / "+Object(n["toDisplayString"])(Object(n["unref"])(l).length),1),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"画笔工具"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(i,{class:"tool-btn",onClick:o[9]||(o[9]=e=>N.value=!0)})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"激光笔"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(b,{class:Object(n["normalizeClass"])(["tool-btn",{active:V.value}]),onClick:o[10]||(o[10]=e=>V.value=!V.value)},null,8,["class"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"计时器"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(O,{class:Object(n["normalizeClass"])(["tool-btn",{active:E.value}]),onClick:o[11]||(o[11]=e=>E.value=!E.value)},null,8,["class"])]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"演讲者视图"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(S,{class:"tool-btn",onClick:o[12]||(o[12]=t=>e.changeViewMode("presenter"))})]),_:1},8,["mouseEnterDelay"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.3,title:Object(n["unref"])(x)?"退出全屏":"进入全屏"},{default:Object(n["withCtx"])(()=>[Object(n["unref"])(x)?(Object(n["openBlock"])(),Object(n["createBlock"])(L,{key:0,class:"tool-btn",onClick:o[13]||(o[13]=e=>Object(n["unref"])(k)())})):(Object(n["openBlock"])(),Object(n["createBlock"])(B,{key:1,class:"tool-btn",onClick:o[14]||(o[14]=e=>Object(n["unref"])(Ge)())}))]),_:1},8,["mouseEnterDelay","title"]),Object(n["createVNode"])(Object(n["unref"])(et["a"]),{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"结束放映"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(_,{class:"tool-btn",onClick:o[15]||(o[15]=e=>Object(n["unref"])(g)())})]),_:1},8,["mouseEnterDelay"])])],34)],2)}}});l("05a9");const ek=Yt()(Qx,[["__scopeId","data-v-90ac59d8"]]);var tk=ek;const lk=e=>(Object(n["pushScopeId"])("data-v-f770d810"),e=e(),Object(n["popScopeId"])(),e),ck={class:"presenter-view"},nk={class:"toolbar"},ok=lk(()=>Object(n["createElementVNode"])("span",null,"普通视图",-1)),ak=lk(()=>Object(n["createElementVNode"])("span",null,"画笔",-1)),rk=lk(()=>Object(n["createElementVNode"])("span",null,"激光笔",-1)),ik=lk(()=>Object(n["createElementVNode"])("span",null,"计时器",-1)),sk=lk(()=>Object(n["createElementVNode"])("span",null,"结束放映",-1)),dk={class:"content"},uk=["onClick"],bk={class:"remark"},Ok={class:"header"},mk=lk(()=>Object(n["createElementVNode"])("span",null,"演讲者备注",-1)),pk=["innerHTML"],fk={class:"remark-scale"};var jk=Object(n["defineComponent"])({__name:"PresenterView",props:{changeViewMode:{type:Function,required:!0}},setup(e){const t=e,{slides:l,slideIndex:c,viewportRatio:a,currentSlide:r}=Object(o["c"])(T()),i=Object(n["ref"])(),s=Object(n["ref"])(),d=Object(n["ref"])(!1),u=Object(n["ref"])(!1),b=Object(n["ref"])(!1),{mousewheelListener:O,touchStartListener:m,touchEndListener:p,turnPrevSlide:f,turnNextSlide:j,turnSlideToIndex:v,turnSlideToId:h,animationIndex:y}=qg(),{slideWidth:g,slideHeight:x}=Ug(i),{exitScreening:k}=Ze(),{slidesLoadLimit:C}=_u(),{fullscreenState:N,manualExitFullscreen:E}=Gg(),w=Object(n["ref"])(16),V=Object(n["computed"])(()=>Ne(r.value.remark||"无备注")),I=e=>{s.value&&s.value.scrollBy(e.deltaY,0)},S=e=>{e<12||e>40||(w.value=e)};Object(n["watch"])(c,()=>{Object(n["nextTick"])(()=>{if(!s.value)return;const e=s.value.querySelector(".thumbnail.active");if(!e)return;const t=s.value.offsetWidth,l=e.offsetLeft;s.value.scrollTo({left:l-t/2,behavior:"smooth"})})});const L=()=>[{text:"上一页",subText:"↑ ←",disable:c.value<=0,handler:()=>f()},{text:"下一页",subText:"↓ →",disable:c.value>=l.value.length-1,handler:()=>j()},{text:"第一页",disable:0===c.value,handler:()=>v(0)},{text:"最后一页",disable:c.value===l.value.length-1,handler:()=>v(l.value.length-1)},{divider:!0},{text:"画笔工具",handler:()=>d.value=!0},{text:"普通视图",handler:()=>t.changeViewMode("base")},{divider:!0},{text:"结束放映",subText:"ESC",handler:k}];return(t,o)=>{const r=Object(n["resolveComponent"])("IconListView"),f=Object(n["resolveComponent"])("IconWrite"),j=Object(n["resolveComponent"])("IconMagic"),B=Object(n["resolveComponent"])("IconStopwatchStart"),_=Object(n["resolveComponent"])("IconOffScreenOne"),T=Object(n["resolveComponent"])("IconPower"),M=Object(n["resolveComponent"])("IconMinus"),D=Object(n["resolveComponent"])("IconPlus"),z=Object(n["resolveDirective"])("contextmenu");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ck,[Object(n["createElementVNode"])("div",nk,[Object(n["createElementVNode"])("div",{class:"tool-btn",onClick:o[0]||(o[0]=t=>e.changeViewMode("base"))},[Object(n["createVNode"])(r,{class:"tool-icon"}),ok]),Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["tool-btn",{active:d.value}]),onClick:o[1]||(o[1]=e=>d.value=!d.value)},[Object(n["createVNode"])(f,{class:"tool-icon"}),ak],2),Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["tool-btn",{active:b.value}]),onClick:o[2]||(o[2]=e=>b.value=!b.value)},[Object(n["createVNode"])(j,{class:"tool-icon"}),rk],2),Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["tool-btn",{active:u.value}]),onClick:o[3]||(o[3]=e=>u.value=!u.value)},[Object(n["createVNode"])(B,{class:"tool-icon"}),ik],2),Object(n["createElementVNode"])("div",{class:"tool-btn",onClick:o[4]||(o[4]=()=>Object(n["unref"])(N)?Object(n["unref"])(E)():Object(n["unref"])(Ge)())},[Object(n["unref"])(N)?(Object(n["openBlock"])(),Object(n["createBlock"])(_,{key:0,class:"tool-icon"})):(Object(n["openBlock"])(),Object(n["createBlock"])(_,{key:1,class:"tool-icon"})),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(Object(n["unref"])(N)?"退出全屏":"全屏"),1)]),Object(n["createVNode"])(Object(n["unref"])(ui["a"]),{class:"divider"}),Object(n["createElementVNode"])("div",{class:"tool-btn",onClick:o[5]||(o[5]=e=>Object(n["unref"])(k)())},[Object(n["createVNode"])(T,{class:"tool-icon"}),sk])]),Object(n["createElementVNode"])("div",dk,[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["slide-list-wrap",{"laser-pen":b.value}]),ref_key:"slideListWrapRef",ref:i},[Object(n["withDirectives"])(Object(n["createVNode"])(mx,{slideWidth:Object(n["unref"])(g),slideHeight:Object(n["unref"])(x),animationIndex:Object(n["unref"])(y),turnSlideToId:Object(n["unref"])(h),manualExitFullscreen:Object(n["unref"])(E),onWheel:o[6]||(o[6]=e=>Object(n["unref"])(O)(e)),onTouchstart:o[7]||(o[7]=e=>Object(n["unref"])(m)(e)),onTouchend:o[8]||(o[8]=e=>Object(n["unref"])(p)(e))},null,8,["slideWidth","slideHeight","animationIndex","turnSlideToId","manualExitFullscreen"]),[[z,L]]),d.value?(Object(n["openBlock"])(),Object(n["createBlock"])(Ax,{key:0,slideWidth:Object(n["unref"])(g),slideHeight:Object(n["unref"])(x),left:-365,top:-155,onClose:o[9]||(o[9]=e=>d.value=!1)},null,8,["slideWidth","slideHeight"])):Object(n["createCommentVNode"])("",!0),u.value?(Object(n["openBlock"])(),Object(n["createBlock"])(Wx,{key:1,left:75,onClose:o[10]||(o[10]=e=>u.value=!1)})):Object(n["createCommentVNode"])("",!0)],2),Object(n["createElementVNode"])("div",{class:"thumbnails",ref_key:"thumbnailsRef",ref:s,onWheel:o[11]||(o[11]=Object(n["withModifiers"])(e=>I(e),["prevent"]))},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(l),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["thumbnail",{active:t===Object(n["unref"])(c)}]),key:e.id,onClick:e=>Object(n["unref"])(v)(t)},[Object(n["createVNode"])(Ns,{slide:e,size:120/Object(n["unref"])(a),visible:tS(w.value-2))},[Object(n["createVNode"])(M)],2),Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["scale-btn",{disable:40===w.value}]),onClick:o[13]||(o[13]=e=>S(w.value+2))},[Object(n["createVNode"])(D)],2)])])])}}});l("6fb9");const vk=Yt()(jk,[["__scopeId","data-v-f770d810"]]);var hk=vk;const yk={class:"pptist-screen"};var gk=Object(n["defineComponent"])({__name:"index",setup(e){const t=Object(n["ref"])("base"),l=e=>{t.value=e},{exitScreening:c}=Ze(),o=e=>{const t=e.key.toUpperCase();t===te.ESC&&c()};return Object(n["onMounted"])(()=>document.addEventListener("keydown",o)),Object(n["onUnmounted"])(()=>document.removeEventListener("keydown",o)),(e,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",yk,["base"===t.value?(Object(n["openBlock"])(),Object(n["createBlock"])(tk,{key:0,changeViewMode:l})):"presenter"===t.value?(Object(n["openBlock"])(),Object(n["createBlock"])(hk,{key:1,changeViewMode:l})):Object(n["createCommentVNode"])("",!0)]))}});l("4764");const xk=Yt()(gk,[["__scopeId","data-v-6bf3d190"]]);var kk=xk,Ck=Object(n["defineComponent"])({__name:"MobileEditableElement",props:{elementInfo:{type:Object,required:!0},elementIndex:{type:Number,required:!0},selectElement:{type:Function,required:!0}},setup(e){const t=e,l=Object(n["computed"])(()=>{const e={[Se.IMAGE]:Nc,[Se.TEXT]:Dn,[Se.SHAPE]:Kn,[Se.LINE]:so,[Se.CHART]:jo,[Se.TABLE]:zo,[Se.LATEX]:Ho,[Se.VIDEO]:ha,[Se.AUDIO]:$a};return e[t.elementInfo.type]||null});return(t,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"mobile-editable-element",style:Object(n["normalizeStyle"])({zIndex:e.elementIndex})},[(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["resolveDynamicComponent"])(Object(n["unref"])(l)),{elementInfo:e.elementInfo,selectElement:e.selectElement,contextmenus:()=>null},null,8,["elementInfo","selectElement","contextmenus"]))],4))}});const Nk=Ck;var Ek=Nk,wk=Object(n["defineComponent"])({__name:"MobileOperate",props:{elementInfo:{type:Object,required:!0},isSelected:{type:Boolean,required:!0},canvasScale:{type:Number,required:!0},scaleElement:{type:Function,required:!0}},setup(e){const t=e,l=Object(n["computed"])(()=>"rotate"in t.elementInfo?t.elementInfo.rotate:0),c=Object(n["computed"])(()=>t.elementInfo.width*t.canvasScale),o=Object(n["computed"])(()=>t.elementInfo.height*t.canvasScale),{borderLines:a,resizeHandlers:r,textElementResizeHandlers:i}=pr(c,o),s="text"===t.elementInfo.type||"table"===t.elementInfo.type?i:r;return(t,c)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"mobile-operate",style:Object(n["normalizeStyle"])({top:e.elementInfo.top*e.canvasScale+"px",left:e.elementInfo.left*e.canvasScale+"px",transform:`rotate(${Object(n["unref"])(l)}deg)`,transformOrigin:`${e.elementInfo.width*e.canvasScale/2}px ${e.elementInfo.height*e.canvasScale/2}px`})},[e.isSelected?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(a),e=>(Object(n["openBlock"])(),Object(n["createBlock"])(gr,{class:"operate-border-line",key:e.type,type:e.type,style:Object(n["normalizeStyle"])(e.style)},null,8,["type","style"]))),128)),(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(s),t=>(Object(n["openBlock"])(),Object(n["createBlock"])(vr,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(n["normalizeStyle"])(t.style),onTouchstart:Object(n["withModifiers"])(l=>e.scaleElement(l,e.elementInfo,t.direction),["stop"])},null,8,["type","rotate","style","onTouchstart"]))),128))],64)):Object(n["createCommentVNode"])("",!0)],4))}});l("dd03");const Vk=Yt()(wk,[["__scopeId","data-v-7fdc6c04"]]);var Ik=Vk;const Sk={class:"mobile-thumbnails"},Lk=["onClick"],Bk={class:"label"};var _k=Object(n["defineComponent"])({__name:"MobileThumbnails",setup(e){const t=T(),{slides:l,slideIndex:c}=Object(o["c"])(t),{sortSlides:a}=Fe(),{slidesLoadLimit:r}=_u(),i=e=>{t.updateSlideIndex(e)},s=e=>{const{newIndex:t,oldIndex:l}=e;a(t,l)};return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Sk,[Object(n["createVNode"])(Object(n["unref"])(Mu.a),{class:"thumbnail-list",modelValue:Object(n["unref"])(l),animation:300,scroll:!0,scrollSensitivity:50,setData:null,itemKey:"id",delayOnTouchOnly:!0,delay:800,onEnd:s},{item:Object(n["withCtx"])(({element:e,index:t})=>[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["thumbnail-item",{active:Object(n["unref"])(c)===t}]),onClick:e=>i(t)},[Object(n["createElementVNode"])("div",Bk,Object(n["toDisplayString"])(t+1),1),Object(n["createVNode"])(Ns,{class:"thumbnail",slide:e,size:120,visible:t{const e=400,t=56;d({left:(Ve-e)/2,top:(Ve*c.value-t)/2,width:e,height:t},{content:"

新添加文本

"})},m=e=>{e&&e[0]&&we(e[0]).then(e=>u(e))},p=e=>{const t={viewBox:[200,200],path:"M 0 0 L 200 0 L 200 200 L 0 200 Z"},l={viewBox:[200,200],path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z"},n={square:t,round:l},o=200;b({left:(Ve-o)/2,top:(Ve*c.value-o)/2,width:o,height:o},n[e])},f=Object(n["computed"])(()=>{var e;return(null===(e=a.value)||void 0===e?void 0:e.remark)||""}),j=e=>{const t=e.target.value;l.updateSlide({remark:t})};return(e,l)=>{const c=Object(n["resolveComponent"])("IconPlus"),o=Object(n["resolveComponent"])("IconCopy"),a=Object(n["resolveComponent"])("IconDelete"),d=Object(n["resolveComponent"])("IconFontSize"),u=Object(n["resolveComponent"])("IconPicture"),b=Object(n["resolveComponent"])("IconSquare"),v=Object(n["resolveComponent"])("IconRound");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Dk,[Object(n["createElementVNode"])("div",zk,[Object(n["createElementVNode"])("textarea",{value:Object(n["unref"])(f),placeholder:"点击输入演讲者备注",onInput:l[0]||(l[0]=e=>j(e))},null,40,Fk)]),Object(n["createElementVNode"])("div",Ak,[Object(n["createVNode"])(Object(n["unref"])(t),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[1]||(l[1]=e=>Object(n["unref"])(r)())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(c,{class:"icon"}),Object(n["createTextVNode"])(" 新幻灯片")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[2]||(l[2]=e=>Object(n["unref"])(i)())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(o,{class:"icon"}),Object(n["createTextVNode"])(" 复制")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[3]||(l[3]=e=>Object(n["unref"])(s)())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(a,{class:"icon"}),Object(n["createTextVNode"])(" 删除")]),_:1})]),_:1}),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[4]||(l[4]=e=>O())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(d,{class:"icon"}),Object(n["createTextVNode"])(" 文字")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(el,{onChange:l[5]||(l[5]=e=>m(e))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(u,{class:"icon"}),Object(n["createTextVNode"])("图片 ")]),_:1})]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[6]||(l[6]=e=>p("square"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(b,{class:"icon"}),Object(n["createTextVNode"])(" 矩形")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:l[7]||(l[7]=e=>p("round"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(v,{class:"icon"}),Object(n["createTextVNode"])(" 圆形")]),_:1})]),_:1})]),Object(n["createVNode"])(Mk)])}}});l("25f2");const Rk=Yt()($k,[["__scopeId","data-v-1e17bcc7"]]);var Pk=Rk;const Hk=e=>(Object(n["pushScopeId"])("data-v-2633262b"),e=e(),Object(n["popScopeId"])(),e),qk={class:"element-toolbar"},Uk={class:"tabs"},Gk=["onClick"],Xk={class:"content"},Yk={key:0,class:"style"},Zk={class:"row-block"},Wk=Hk(()=>Object(n["createElementVNode"])("div",{class:"label"},"文字颜色:",-1)),Jk={class:"colors"},Kk=["onClick"],Qk={class:"row-block"},eC=Hk(()=>Object(n["createElementVNode"])("div",{class:"label"},"填充色:",-1)),tC={class:"colors"},lC=["onClick"],cC={key:1,class:"common"};var nC=Object(n["defineComponent"])({__name:"ElementToolbar",setup(e){const{Group:t,Button:l}=Yu["a"],c=xi["a"].Group,a=["#000000","#ffffff","#eeece1","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c","#c21401","#ff1e02","#ffc12a","#ffff3a","#90cf5b","#00af57"],r=z(),i=T(),{handleElement:s,handleElementId:d,richTextAttrs:u}=Object(o["c"])(r),{addHistorySnapshot:b}=Te(),O=(e,t)=>{i.updateElement({id:e,props:t}),b()},m=[{key:"style",label:"样式"},{key:"common",label:"布局"}],p=Object(n["ref"])("common"),{orderElement:f}=Ue(),{alignElementToCanvas:j}=Fl(),{addElementsFromData:v}=De(),{deleteElement:h}=$e(),y=()=>{const e=JSON.parse(JSON.stringify(s.value));v([e])},g=(e,t)=>{yn.emit(jn.RICH_TEXT_COMMAND,{action:{command:e,value:t}})},x=e=>{var t;if(s.value){if(("text"===s.value.type||"shape"===s.value.type&&null!==(t=s.value.text)&&void 0!==t&&t.content)&&yn.emit(jn.RICH_TEXT_COMMAND,{action:{command:"color",value:e}}),"table"===s.value.type){const t=JSON.parse(JSON.stringify(s.value.data));for(let l=0;l{if(s.value){if("text"!==s.value.type&&"shape"!==s.value.type&&"chart"!==s.value.type||O(d.value,{fill:e}),"table"===s.value.type){const t=JSON.parse(JSON.stringify(s.value.data));for(let l=0;l{const r=Object(n["resolveComponent"])("IconTextBold"),i=Object(n["resolveComponent"])("IconTextItalic"),d=Object(n["resolveComponent"])("IconTextUnderline"),b=Object(n["resolveComponent"])("IconStrikethrough"),O=Object(n["resolveComponent"])("IconFontSize"),v=Object(n["resolveComponent"])("IconAlignTextLeft"),C=Object(n["resolveComponent"])("IconAlignTextCenter"),N=Object(n["resolveComponent"])("IconAlignTextRight"),E=Object(n["resolveComponent"])("IconCopy"),w=Object(n["resolveComponent"])("IconDelete"),V=Object(n["resolveComponent"])("IconSendToBack"),I=Object(n["resolveComponent"])("IconBringToFrontOne"),S=Object(n["resolveComponent"])("IconBringToFront"),L=Object(n["resolveComponent"])("IconSentToBack"),B=Object(n["resolveComponent"])("IconAlignLeft"),_=Object(n["resolveComponent"])("IconAlignVertically"),T=Object(n["resolveComponent"])("IconAlignRight"),M=Object(n["resolveComponent"])("IconAlignTop"),D=Object(n["resolveComponent"])("IconAlignHorizontally"),z=Object(n["resolveComponent"])("IconAlignBottom");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",qk,[Object(n["createElementVNode"])("div",Uk,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(m,e=>Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["tab",{active:p.value===e.key}]),key:e.key,onClick:t=>p.value=e.key},Object(n["toDisplayString"])(e.label),11,Gk)),64))]),Object(n["createElementVNode"])("div",Xk,["style"===p.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Yk,[Object(n["createVNode"])(XO,{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(u).bold,onClick:o[0]||(o[0]=e=>g("bold"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(r)]),_:1},8,["checked"]),Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(u).em,onClick:o[1]||(o[1]=e=>g("em"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(i)]),_:1},8,["checked"]),Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(u).underline,onClick:o[2]||(o[2]=e=>g("underline"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(d)]),_:1},8,["checked"]),Object(n["createVNode"])(PO,{style:{flex:"1"},checked:Object(n["unref"])(u).strikethrough,onClick:o[3]||(o[3]=e=>g("strikethrough"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(b)]),_:1},8,["checked"])]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"2"},onClick:o[4]||(o[4]=e=>g("fontsize-add"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(O),Object(n["createTextVNode"])("+")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"2"},onClick:o[5]||(o[5]=e=>g("fontsize-reduce"))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(O),Object(n["createTextVNode"])("-")]),_:1})]),_:1}),Object(n["createVNode"])(Object(n["unref"])(ui["a"]),{style:{margin:"20px 0"}}),Object(n["createVNode"])(Object(n["unref"])(t),{class:"row","button-style":"solid",value:Object(n["unref"])(u).align,onChange:o[6]||(o[6]=e=>g("align",e.target.value))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(l),{value:"left",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(v)]),_:1}),Object(n["createVNode"])(Object(n["unref"])(l),{value:"center",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(C)]),_:1}),Object(n["createVNode"])(Object(n["unref"])(l),{value:"right",style:{flex:"1"}},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(N)]),_:1})]),_:1},8,["value"]),Object(n["createVNode"])(Object(n["unref"])(ui["a"]),{style:{margin:"20px 0"}}),Object(n["createElementVNode"])("div",Zk,[Wk,Object(n["createElementVNode"])("div",Jk,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(a,e=>Object(n["createElementVNode"])("div",{class:"color",key:e,onClick:t=>x(e)},[Object(n["createElementVNode"])("div",{class:"color-block",style:Object(n["normalizeStyle"])({backgroundColor:e})},null,4)],8,Kk)),64))])]),Object(n["createElementVNode"])("div",Qk,[eC,Object(n["createElementVNode"])("div",tC,[(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(a,e=>Object(n["createElementVNode"])("div",{class:"color",key:e,onClick:t=>k(e)},[Object(n["createElementVNode"])("div",{class:"color-block",style:Object(n["normalizeStyle"])({backgroundColor:e})},null,4)],8,lC)),64))])])])):Object(n["createCommentVNode"])("",!0),"common"===p.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",cC,[Object(n["createVNode"])(Object(n["unref"])(c),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[7]||(o[7]=e=>y())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(E,{class:"icon"}),Object(n["createTextVNode"])(" 复制")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[8]||(o[8]=e=>Object(n["unref"])(h)())},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(w,{class:"icon"}),Object(n["createTextVNode"])(" 删除")]),_:1})]),_:1}),Object(n["createVNode"])(Object(n["unref"])(ui["a"]),{style:{margin:"20px 0"}}),Object(n["createVNode"])(Object(n["unref"])(c),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[9]||(o[9]=e=>Object(n["unref"])(f)(Object(n["unref"])(s),Object(n["unref"])(W).TOP))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(V,{class:"icon"}),Object(n["createTextVNode"])(" 置顶")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[10]||(o[10]=e=>Object(n["unref"])(f)(Object(n["unref"])(s),Object(n["unref"])(W).BOTTOM))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(I,{class:"icon"}),Object(n["createTextVNode"])(" 置底")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[11]||(o[11]=e=>Object(n["unref"])(f)(Object(n["unref"])(s),Object(n["unref"])(W).UP))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(S,{class:"icon"}),Object(n["createTextVNode"])(" 上移")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[12]||(o[12]=e=>Object(n["unref"])(f)(Object(n["unref"])(s),Object(n["unref"])(W).DOWN))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(L,{class:"icon"}),Object(n["createTextVNode"])(" 下移")]),_:1})]),_:1}),Object(n["createVNode"])(Object(n["unref"])(ui["a"]),{style:{margin:"20px 0"}}),Object(n["createVNode"])(Object(n["unref"])(c),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[13]||(o[13]=e=>Object(n["unref"])(j)(Object(n["unref"])(J).LEFT))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(B,{class:"icon"}),Object(n["createTextVNode"])(" 左对齐")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[14]||(o[14]=e=>Object(n["unref"])(j)(Object(n["unref"])(J).HORIZONTAL))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(_,{class:"icon"}),Object(n["createTextVNode"])(" 水平居中")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[15]||(o[15]=e=>Object(n["unref"])(j)(Object(n["unref"])(J).RIGHT))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(T,{class:"icon"}),Object(n["createTextVNode"])(" 右对齐")]),_:1})]),_:1}),Object(n["createVNode"])(Object(n["unref"])(c),{class:"row"},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[16]||(o[16]=e=>Object(n["unref"])(j)(Object(n["unref"])(J).TOP))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(M,{class:"icon"}),Object(n["createTextVNode"])(" 上对齐")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[17]||(o[17]=e=>Object(n["unref"])(j)(Object(n["unref"])(J).VERTICAL))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(D,{class:"icon"}),Object(n["createTextVNode"])(" 垂直居中")]),_:1}),Object(n["createVNode"])(Object(n["unref"])(xi["a"]),{style:{flex:"1"},onClick:o[18]||(o[18]=e=>Object(n["unref"])(j)(Object(n["unref"])(J).BOTTOM))},{default:Object(n["withCtx"])(()=>[Object(n["createVNode"])(z,{class:"icon"}),Object(n["createTextVNode"])(" 下对齐")]),_:1})]),_:1})])):Object(n["createCommentVNode"])("",!0)])])}}});l("a8e7");const oC=Yt()(nC,[["__scopeId","data-v-2633262b"]]);var aC=oC;const rC={class:"mobile-editor-header"},iC={class:"history"};var sC=Object(n["defineComponent"])({__name:"Header",props:{changeMode:{type:Function,required:!0}},setup(e){const{canUndo:t,canRedo:l}=Object(o["c"])(U()),{redo:c,undo:a}=Te();return(o,r)=>{const i=Object(n["resolveComponent"])("IconBack"),s=Object(n["resolveComponent"])("IconNext"),d=Object(n["resolveComponent"])("IconLogout");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",rC,[Object(n["createElementVNode"])("div",iC,[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["history-item",{disable:!Object(n["unref"])(t)}]),onClick:r[0]||(r[0]=Object(n["withModifiers"])(e=>Object(n["unref"])(a)(),["stop"]))},[Object(n["createVNode"])(i),Object(n["createTextVNode"])(" 撤销")],2),Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["history-item",{disable:!Object(n["unref"])(l)}]),onClick:r[1]||(r[1]=Object(n["withModifiers"])(e=>Object(n["unref"])(c)(),["stop"]))},[Object(n["createVNode"])(s),Object(n["createTextVNode"])(" 重做")],2)]),Object(n["createElementVNode"])("div",{class:"back",onClick:r[2]||(r[2]=t=>e.changeMode("preview"))},[Object(n["createVNode"])(d),Object(n["createTextVNode"])(" 退出编辑")])])}}});l("601c");const dC=Yt()(sC,[["__scopeId","data-v-8639f30e"]]);var uC=dC;const bC={class:"mobile-editor"};var OC=Object(n["defineComponent"])({__name:"index",props:{changeMode:{type:Function,required:!0}},setup(e){const t=T(),l=z(),{slideIndex:c,currentSlide:a,viewportRatio:r}=Object(o["c"])(t),{activeElementIdList:i,handleElement:s}=Object(o["c"])(l),d=Object(n["ref"])(),u=Object(n["ref"])([]),b=Object(n["computed"])(()=>a.value.background),{backgroundStyle:O}=Qa(b),m=Object(n["computed"])(()=>{if(!d.value)return 1;const e=d.value.clientWidth,t=d.value.clientHeight,l=t/e;return l>=r.value?(e-20)/Ve:(t-20)/r.value/Ve});Object(n["onMounted"])(()=>{i.value.length&&l.setActiveElementIdList([]),0!==c.value&&t.updateSlideIndex(0)});const p=Object(n["computed"])(()=>({width:Ve*m.value+"px",height:Ve*r.value*m.value+"px"})),f=Object(n["ref"])([]),j=()=>{f.value=a.value?JSON.parse(JSON.stringify(a.value.elements)):[]};Object(n["watchEffect"])(j);const{dragElement:v}=Tl(f,u,m),{scaleElement:h}=Bl(f,u,m),y=(e,t,c=!0)=>{i.value.includes(t.id)||(l.setActiveElementIdList([t.id]),l.setHandleElementId(t.id)),c&&v(e,t)},g=()=>{l.setActiveElementIdList([])};return(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",bC,[Object(n["createVNode"])(uC,{changeMode:e.changeMode},null,8,["changeMode"]),Object(n["createElementVNode"])("div",{class:"content",ref_key:"contentRef",ref:d,onTouchstart:l[0]||(l[0]=e=>g())},[Object(n["createElementVNode"])("div",{class:"viewport-wrapper",style:Object(n["normalizeStyle"])(Object(n["unref"])(p))},[Object(n["createElementVNode"])("div",{class:"background",style:Object(n["normalizeStyle"])(Object(n["unref"])(O))},null,4),(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(u.value,(e,t)=>(Object(n["openBlock"])(),Object(n["createBlock"])(or,{key:t,type:e.type,axis:e.axis,length:e.length,canvasScale:Object(n["unref"])(m)},null,8,["type","axis","length","canvasScale"]))),128)),(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(f.value,e=>(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:e.id},["line"!==e.type?(Object(n["openBlock"])(),Object(n["createBlock"])(Ik,{key:0,elementInfo:e,isSelected:Object(n["unref"])(i).includes(e.id),canvasScale:Object(n["unref"])(m),scaleElement:Object(n["unref"])(h)},null,8,["elementInfo","isSelected","canvasScale","scaleElement"])):Object(n["createCommentVNode"])("",!0)],64))),128)),Object(n["createElementVNode"])("div",{class:"viewport",style:Object(n["normalizeStyle"])({transform:`scale(${Object(n["unref"])(m)})`})},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(f.value,(e,t)=>(Object(n["openBlock"])(),Object(n["createBlock"])(Ek,{key:e.id,elementInfo:e,elementIndex:t+1,selectElement:y},null,8,["elementInfo","elementIndex"]))),128))],4)],4)],544),Object(n["createVNode"])(Pk),Object(n["unref"])(s)?(Object(n["openBlock"])(),Object(n["createBlock"])(aC,{key:0})):Object(n["createCommentVNode"])("",!0)]))}});l("2d86");const mC=Yt()(OC,[["__scopeId","data-v-8cdcde82"]]);var pC=mC;const fC={class:"header"};var jC=Object(n["defineComponent"])({__name:"MobilePlayer",props:{changeMode:{type:Function,required:!0}},setup(e){const t=T(),{slides:l,slideIndex:c,currentSlide:a,viewportRatio:r}=Object(o["c"])(t),i=Object(n["ref"])(!1),s=Object(n["ref"])({width:0,height:0});Object(n["onMounted"])(()=>{0!==c.value&&t.updateSlideIndex(0),s.value={width:document.body.clientHeight,height:document.body.clientWidth}});const d=Object(n["computed"])(()=>{const e=s.value.height/s.value.width;let t=0,l=0;return e>=r.value?(t=s.value.width,l=t*r.value):(l=s.value.height,t=l/r.value),{width:t,height:l}}),u=Object(n["ref"])(null),b=e=>{u.value={x:e.changedTouches[0].pageX,y:e.changedTouches[0].pageY}},O=e=>{if(!u.value)return;const n=Math.abs(u.value.y-e.changedTouches[0].pageY),o=e.changedTouches[0].pageX-u.value.x;Math.abs(o)>n&&Math.abs(o)>50&&(u.value=null,o<0&&c.value>0&&t.updateSlideIndex(c.value-1),o>0&&c.value{const r=Object(n["resolveComponent"])("IconLogout");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"mobile-player",style:Object(n["normalizeStyle"])({width:s.value.width+"px",height:s.value.height+"px",transform:`rotate(90deg) translateY(-${s.value.height}px)`})},[Object(n["createElementVNode"])("div",{class:"screen-slide-list",onClick:o[0]||(o[0]=e=>i.value=!i.value),onTouchstart:o[1]||(o[1]=e=>b(e)),onTouchend:o[2]||(o[2]=e=>O(e))},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(l),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:Object(n["normalizeClass"])(["slide-item","turning-mode-"+(e.turningMode||"slideY"),{current:t===Object(n["unref"])(c),before:tObject(n["unref"])(c),hide:(t===Object(n["unref"])(c)-1||t===Object(n["unref"])(c)+1)&&e.turningMode!==Object(n["unref"])(a).turningMode}]),key:e.id},[Math.abs(Object(n["unref"])(c)-t)<2?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:"slide-content",style:Object(n["normalizeStyle"])({width:Object(n["unref"])(d).width+"px",height:Object(n["unref"])(d).height+"px"})},[Object(n["createVNode"])(Ns,{slide:e,size:Object(n["unref"])(d).width},null,8,["slide","size"])],4)):Object(n["createCommentVNode"])("",!0)],2))),128))],32),i.value?(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:0},[Object(n["createElementVNode"])("div",fC,[Object(n["createElementVNode"])("div",{class:"back",onClick:o[3]||(o[3]=t=>e.changeMode("preview"))},[Object(n["createVNode"])(r),Object(n["createTextVNode"])(" 退出播放")])]),Object(n["createVNode"])(Mk,{class:"thumbnails"})],64)):Object(n["createCommentVNode"])("",!0)],4)}}});l("4f8b");const vC=Yt()(jC,[["__scopeId","data-v-5293de3b"]]);var hC=vC;const yC={class:"thumbnail-list"},gC={class:"menu"};var xC=Object(n["defineComponent"])({__name:"MobilePreview",props:{changeMode:{type:Function,required:!0}},setup(e){const{slides:t}=Object(o["c"])(T()),{slidesLoadLimit:l}=_u(),c=Object(n["ref"])(),a=Object(n["ref"])(0);return Object(n["onMounted"])(()=>{c.value&&(a.value=c.value.clientWidth)}),(o,r)=>{const i=Object(n["resolveComponent"])("IconEdit"),s=Object(n["resolveComponent"])("IconFullScreenPlay");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"mobile-preview",ref_key:"mobileRef",ref:c},[Object(n["createElementVNode"])("div",yC,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(Object(n["unref"])(t),(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"thumbnail-item",key:e.id},[Object(n["createVNode"])(Ns,{slide:e,size:a.value-20,visible:te.changeMode("editor"))},[Object(n["createVNode"])(i,{class:"icon"}),Object(n["createTextVNode"])(" 编辑")]),Object(n["createVNode"])(Object(n["unref"])(ui["a"]),{type:"vertical",style:{height:"30px"}}),Object(n["createElementVNode"])("div",{class:"menu-item",onClick:r[1]||(r[1]=t=>e.changeMode("player"))},[Object(n["createVNode"])(s,{class:"icon"}),Object(n["createTextVNode"])(" 播放")])])],512)}}});l("d039d");const kC=Yt()(xC,[["__scopeId","data-v-1c8bce03"]]);var CC=kC;const NC={class:"mobile"};var EC=Object(n["defineComponent"])({__name:"index",setup(e){const t=Object(n["ref"])("preview"),l=e=>t.value=e,c=Object(n["computed"])(()=>{const e={editor:pC,player:hC,preview:CC};return e[t.value]||null});return(e,t)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",NC,[(Object(n["openBlock"])(),Object(n["createBlock"])(Object(n["resolveDynamicComponent"])(Object(n["unref"])(c)),{changeMode:l}))]))}});l("be01");const wC=Yt()(EC,[["__scopeId","data-v-1fb24d48"]]);var VC=wC,IC=Object(n["defineComponent"])({__name:"App",setup(e){const t=Z(),l=z(),c=U(),{databaseId:a}=Object(o["c"])(l),{screening:r}=Object(o["c"])(X());return window.onbeforeunload=()=>!1,Object(n["onMounted"])(async()=>{await P(),c.initSnapshotDatabase(),l.setAvailableFonts()}),window.addEventListener("unload",()=>{const e=localStorage.getItem($),t=e?JSON.parse(e):[];t.push(a.value);const l=JSON.stringify(t);localStorage.setItem($,l)}),(e,l)=>Object(n["unref"])(r)?(Object(n["openBlock"])(),Object(n["createBlock"])(kk,{key:0})):Object(n["unref"])(t)?(Object(n["openBlock"])(),Object(n["createBlock"])(Hg,{key:1})):(Object(n["openBlock"])(),Object(n["createBlock"])(VC,{key:2}))}});l("8cc5");const SC=IC;var LC=SC,BC=l("9483");Object(BC["a"])("service-worker.js",{ready(){console.log("App is being served from cache by a service worker.\nFor more details, visit https://goo.gl/AFskqB")},registered(){console.log("Service worker has been registered.")},cached(){console.log("Content has been cached for offline use.")},updatefound(){console.log("New content is downloading.")},updated(){console.log("New content is available; please refresh.")},offline(){console.log("No internet connection found. App is running in offline mode.")},error(e){console.error("Error during service worker registration:",e)}});l("793f"),l("41ed"),l("77ed"),l("5952"),l("c860"),l("ae3f"),l("8c56");var _C=l("ab81"),TC=l("16cf"),MC=l("b6ec"),DC=l("7bf8"),zC=l("3be8"),FC=l("4621"),AC=l("63d0"),$C=l("3962"),RC=l("3bce"),PC=l("f59e"),HC=l("5a81"),qC=l("c24c"),UC=l("0cf2"),GC=l("4a33"),XC=l("b0d0"),YC=l("50f1"),ZC=l("7833"),WC=l("f2e7"),JC=l("b9bc"),KC=l("7f4b"),QC=l("36da"),eN=l("cfe0"),tN=l("af8a"),lN=l("d887"),cN=l("b28e"),nN=l("f914"),oN=l("0e0a"),aN=l("f807"),rN=l("2e67"),iN=l("e792"),sN=l("e483"),dN=l("9312"),uN=l("84e7"),bN=l("500e8"),ON=l("1e27"),mN=l("7312"),pN=l("8845"),fN=l("a3ef"),jN=l("8331"),vN=l("4040"),hN=l("f745"),yN=l("8377"),gN=l("246f"),xN=l("f1d2"),kN=l("ccc7"),CN=l("e3b9"),NN=l("6010"),EN=l("7abc"),wN=l("f259"),VN=l("23fa"),IN=l("1b1c"),SN=l("fd52"),LN=l("bde2"),BN=l("5a28"),_N=l("c53e"),TN=l("e970"),MN=l("1646"),DN=l("40bb"),zN=l("f99d"),FN=l("f3c2"),AN=l("33a2"),$N=l("fdbc"),RN=l("3a3e"),PN=l("500e"),HN=l("d0c6"),qN=l("1fcb"),UN=l("dcc2"),GN=l("a5f1"),XN=l("ce42"),YN=l("fa00"),ZN=l("0996"),WN=l("2c06"),JN=l("a5dc"),KN=l("8678"),QN=l("d7fb"),eE=l("b7c8"),tE=l("ae33"),lE=l("8c1a"),cE=l("b7b3"),nE=l("96be"),oE=l("5a69"),aE=l("f9e5"),rE=l("bbce"),iE=l("d41d"),sE=l("77ad"),dE=l("46cd"),uE=l("df0d"),bE=l("70f2"),OE=l("d16b"),mE=l("4bad"),pE=l("2e2d"),fE=l("e7f4"),jE=l("eb50"),vE=l("0be2"),hE=l("a90c"),yE=l("c90a"),gE=l("9fbc"),xE=l("5b20"),kE=l("69de"),CE=l("fbe7"),NE=l("ea01"),EE=l("74f3"),wE=l("3ee3"),VE=l("5294"),IE=l("eac5"),SE=l("b8af"),LE=l("dde4"),BE=l("cead"),_E=l("114f"),TE=l("bf2c");const ME={IconPlayOne:TE["a"],IconFullScreenPlay:_E["a"],IconLock:BE["a"],IconUnlock:LE["a"],IconPpt:SE["a"],IconFormat:IE["a"],IconPicture:VE["a"],IconFullScreen:wE["a"],IconList:EE["a"],IconOrderedList:NE["a"],IconHelpcenter:CE["a"],IconFlipVertically:kE["a"],IconFlipHorizontally:xE["a"],IconFontSize:gE["a"],IconCode:yE["a"],IconTextBold:hE["a"],IconTextItalic:vE["a"],IconTextUnderline:jE["a"],IconStrikethrough:fE["a"],IconEdit:pE["a"],IconQuote:mE["a"],IconBackgroundColor:OE["a"],IconGroup:bE["a"],IconUngroup:uE["a"],IconBack:dE["a"],IconNext:sE["a"],IconFullwidth:iE["a"],IconAlignTop:rE["a"],IconAlignLeft:aE["a"],IconAlignRight:oE["a"],IconAlignBottom:nE["a"],IconAlignVertically:cE["a"],IconAlignHorizontally:lE["a"],IconBringToFront:tE["a"],IconSendToBack:eE["a"],IconAlignTextLeft:QN["a"],IconAlignTextRight:KN["a"],IconAlignTextCenter:JN["a"],IconRowHeight:WN["a"],IconWrite:ZN["a"],IconInsertTable:YN["a"],IconAddText:XN["a"],IconFill:GN["a"],IconTailoring:UN["a"],IconEffects:qN["a"],IconColorFilter:HN["a"],IconUp:PN["a"],IconDown:RN["a"],IconPlus:$N["a"],IconMinus:AN["a"],IconConnection:FN["a"],IconBringToFrontOne:zN["a"],IconSentToBack:DN["a"],IconGithub:MN["a"],IconChartProportion:TN["a"],IconChartHistogram:_N["a"],IconChartHistogramOne:BN["a"],IconChartLineArea:LN["a"],IconChartRing:SN["a"],IconChartScatter:IN["a"],IconChartLine:VN["a"],IconChartPie:wN["a"],IconText:EN["a"],IconRotate:NN["a"],IconLeftTwo:CN["a"],IconRightTwo:kN["a"],IconPlatte:xN["a"],IconClose:gN["a"],IconCloseSmall:yN["a"],IconUndo:hN["a"],IconTransform:vN["a"],IconClick:jN["a"],IconTheme:fN["a"],IconArrowCircleLeft:pN["a"],IconGraphicDesign:mN["a"],IconLogout:ON["a"],IconErase:bN["a"],IconClear:uN["a"],IconFolderClose:dN["a"],IconAlignTextTopOne:sN["a"],IconAlignTextBottomOne:iN["a"],IconAlignTextMiddleOne:rN["a"],IconPause:aN["a"],IconVolumeMute:oN["a"],IconVolumeNotice:nN["a"],IconVolumeSmall:cN["a"],IconVideoTwo:lN["a"],IconFormula:tN["a"],IconLinkOne:eN["a"],IconFullScreenOne:QC["a"],IconOffScreenOne:KC["a"],IconPower:JC["a"],IconListView:WC["a"],IconMagic:ZC["a"],IconHighLight:YC["a"],IconShare:XC["a"],IconIndentLeft:GC["a"],IconIndentRight:UC["a"],IconVerticalSpacingBetweenItems:qC["a"],IconCopy:HC["a"],IconDelete:PC["a"],IconSquare:RC["a"],IconRound:$C["a"],IconNeedle:AC["a"],IconTextRotationNone:FC["a"],IconTextRotationDown:zC["a"],IconFormatBrush:DC["a"],IconPreviewOpen:MC["a"],IconPreviewClose:TC["a"],IconStopwatchStart:_C["a"]};var DE={install(e){for(const t of Object.keys(ME))e.component(t,ME[t])}};const zE={class:"menu-content"},FE=["onClick"],AE={class:"text"},$E={key:0,class:"sub-text"};var RE=Object(n["defineComponent"])({__name:"MenuContent",props:{menus:{type:Array,required:!0},handleClickMenuItem:{type:Function,required:!0}},setup(e){return(t,l)=>{const c=Object(n["resolveComponent"])("menu-content",!0);return Object(n["openBlock"])(),Object(n["createElementBlock"])("ul",zE,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.menus,(t,l)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],{key:t.text||l},[t.hide?Object(n["createCommentVNode"])("",!0):(Object(n["openBlock"])(),Object(n["createElementBlock"])("li",{key:0,class:Object(n["normalizeClass"])(["menu-item",{divider:t.divider,disable:t.disable}]),onClick:Object(n["withModifiers"])(l=>e.handleClickMenuItem(t),["stop"])},[t.divider?Object(n["createCommentVNode"])("",!0):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{key:0,class:Object(n["normalizeClass"])(["menu-item-content",{"has-children":t.children,"has-handler":t.handler}])},[Object(n["createElementVNode"])("span",AE,Object(n["toDisplayString"])(t.text),1),t.subText&&!t.children?(Object(n["openBlock"])(),Object(n["createElementBlock"])("span",$E,Object(n["toDisplayString"])(t.subText),1)):Object(n["createCommentVNode"])("",!0),t.children&&t.children.length?(Object(n["openBlock"])(),Object(n["createBlock"])(c,{key:1,class:"sub-menu",menus:t.children,handleClickMenuItem:e.handleClickMenuItem},null,8,["menus","handleClickMenuItem"])):Object(n["createCommentVNode"])("",!0)],2))],10,FE))],64))),128))])}}});l("ca3c");const PE=Yt()(RE,[["__scopeId","data-v-e470e712"]]);var HE=PE,qE=Object(n["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(e){const t=e,l=Object(n["computed"])(()=>{const e=170,l=30,c=11,n=5,{x:o,y:a}=t.axis,r=t.menus.filter(e=>!(e.divider||e.hide)).length,i=t.menus.filter(e=>e.divider).length,s=e,d=r*l+i*c+2*n,u=document.body.clientWidth,b=document.body.clientHeight;return{left:u<=o+s?o-s:o,top:b<=a+d?a-d:a}}),c=e=>{e.disable||e.children&&!e.handler||(e.handler&&e.handler(t.el),t.removeContextmenu())};return(t,o)=>(Object(n["openBlock"])(),Object(n["createElementBlock"])(n["Fragment"],null,[Object(n["createElementVNode"])("div",{class:"mask",onContextmenu:o[0]||(o[0]=Object(n["withModifiers"])(t=>e.removeContextmenu(),["prevent"])),onMousedown:o[1]||(o[1]=t=>e.removeContextmenu())},null,32),Object(n["createElementVNode"])("div",{class:"contextmenu",style:Object(n["normalizeStyle"])({left:Object(n["unref"])(l).left+"px",top:Object(n["unref"])(l).top+"px"}),onContextmenu:o[2]||(o[2]=Object(n["withModifiers"])(()=>{},["prevent"]))},[Object(n["createVNode"])(HE,{menus:e.menus,handleClickMenuItem:c},null,8,["menus"])],36)],64))}});l("b096");const UE=qE;var GE=UE;const XE="CTX_CONTEXTMENU_HANDLER",YE=(e,t,l)=>{t.stopPropagation(),t.preventDefault();const c=l.value(e);if(!c)return;let o=null;const a=()=>{o&&(document.body.removeChild(o),o=null),e.classList.remove("contextmenu-active"),document.body.removeEventListener("scroll",a),window.removeEventListener("resize",a)},r={axis:{x:t.x,y:t.y},el:e,menus:c,removeContextmenu:a};o=document.createElement("div");const i=Object(n["createVNode"])(GE,r,null);Object(n["render"])(i,o),document.body.appendChild(o),e.classList.add("contextmenu-active"),document.body.addEventListener("scroll",a),window.addEventListener("resize",a)},ZE={mounted(e,t){e[XE]=l=>YE(e,l,t),e.addEventListener("contextmenu",e[XE])},unmounted(e){e&&e[XE]&&(e.removeEventListener("contextmenu",e[XE]),delete e[XE])}};var WE=ZE;const JE="CTX_CLICK_OUTSIDE_HANDLER",KE=(e,t,l)=>{const c=l.value,n=t.composedPath(),o=n?n.indexOf(e)<0:!e.contains(t.target);o&&c(t)},QE={mounted(e,t){e[JE]=l=>KE(e,l,t),setTimeout(()=>{document.addEventListener("click",e[JE])},0)},unmounted(e){e[JE]&&(document.removeEventListener("click",e[JE]),delete e[JE])}};var ew=QE,tw={install(e){e.directive("contextmenu",WE),e.directive("click-outside",ew)}};const lw=Object(n["createApp"])(LC);lw.use(DE),lw.use(tw),lw.use(Object(o["a"])()),lw.mount("#app")},cd4f:function(e,t,l){},cd7e:function(e,t,l){"use strict";l("fb92")},cf16:function(e,t,l){"use strict";l("c6ee")},d039d:function(e,t,l){"use strict";l("adee")},d097:function(e,t,l){},d2a1:function(e,t,l){},d2a4:function(e,t,l){},d2a7:function(e,t,l){},d2ee:function(e,t,l){"use strict";l("36ac")},d31d:function(e,t,l){},d422:function(e,t,l){},d45e:function(e,t,l){},d970:function(e,t,l){"use strict";l("97ba")},db8d:function(e,t,l){"use strict";l("8ddd")},dc4aa:function(e,t,l){"use strict";l("53c4")},dc8c:function(e,t,l){"use strict";l("9fe7")},dcba:function(e,t,l){},dd03:function(e,t,l){"use strict";l("d31d")},dd7b:function(e,t,l){"use strict";l("a832")},df7d:function(e,t,l){"use strict";l("9f60")},dfe7:function(e,t,l){"use strict";l("4ac4")},e0b6:function(e,t,l){"use strict";l("d45e")},e38f:function(e,t,l){"use strict";l("6877")},e394:function(e,t,l){},e4f3:function(e,t,l){},e611:function(e,t,l){},e63b:function(e,t,l){},e818:function(e,t,l){"use strict";l("c42d")},e83e:function(e,t,l){"use strict";l("6b65")},e9df:function(e,t,l){"use strict";l("5c9a")},ea69:function(e,t,l){},eae7:function(e,t,l){},eb5e:function(e,t,l){},eb6d:function(e,t,l){"use strict";l("4327")},ec27:function(e,t,l){"use strict";l("e394")},ec31:function(e,t,l){},ecba:function(e,t,l){"use strict";l("a697")},ef77:function(e,t,l){},f126:function(e,t,l){"use strict";l("e63b")},f191:function(e,t,l){},f9e0:function(e,t,l){},fa09:function(e,t,l){},fac9:function(e,t,l){"use strict";l("45c1")},fb4b:function(e,t,l){"use strict";l("5aad")},fb92:function(e,t,l){},fbe9:function(e,t,l){},fbfe:function(e,t,l){"use strict";l("ef77")},fef7:function(e,t,l){"use strict";l("084d")},ff57:function(e,t,l){}}); -//# sourceMappingURL=app.10debef6.js.map \ No newline at end of file diff --git a/js/app.10debef6.js.map b/js/app.10debef6.js.map deleted file mode 100644 index 11f40688..00000000 --- a/js/app.10debef6.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/views/components/element/AudioElement/BaseAudioElement.vue?d01d","webpack:///./src/components/ColorPicker/Saturation.vue?c2ef","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LatexStylePanel.vue?f968","webpack:///./src/views/Screen/BaseView.vue?5f13","webpack:///./src/views/components/element/LatexElement/index.vue?dedd","webpack:///./src/views/Editor/Toolbar/SymbolPanel.vue?fba6","webpack:///./src/components/MoveablePanel.vue?44ac","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/MultiStylePanel.vue?99b4","webpack:///./src/components/ColorPicker/Hue.vue?51e2","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue?3407","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue?9944","webpack:///./src/views/Editor/Canvas/Operate/RotateHandler.vue?1148","webpack:///./src/views/Editor/Toolbar/common/ElementFilter.vue?1120","webpack:///./src/views/Editor/Canvas/Operate/BorderLine.vue?dc09","webpack:///./src/views/Editor/CanvasTool/ChartPool.vue?e6bd","webpack:///./src/views/Mobile/MobileEditor/SlideToolbar.vue?4faa","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/Thumbnails/LayoutPool.vue?6185","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue?22f1","webpack:///./src/views/components/element/ProsemirrorEditor.vue?953a","webpack:///./src/views/Editor/CanvasTool/LinePool.vue?b397","webpack:///./src/views/components/element/AudioElement/AudioPlayer.vue?194f","webpack:///./src/views/Screen/WritingBoardTool.vue?5437","webpack:///./src/views/Editor/ExportDialog/ExportSpecificFile.vue?0864","webpack:///./src/views/Editor/Toolbar/common/TextColorButton.vue?c723","webpack:///./src/views/components/element/VideoElement/VideoPlayer/index.vue?2768","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue?7128","webpack:///./src/views/components/element/ElementOutline.vue?1a7f","webpack:///./src/views/Screen/index.vue?f2f3","webpack:///./src/views/Editor/Canvas/MouseSelection.vue?c748","webpack:///./src/views/components/element/ImageElement/BaseImageElement.vue?636a","webpack:///./src/views/Mobile/MobilePlayer.vue?4f23","webpack:///./src/views/Editor/Toolbar/common/ElementShadow.vue?f038","webpack:///./src/views/components/element/TextElement/BaseTextElement.vue?b117","webpack:///./src/components/CheckboxButtonGroup.vue?504a","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue?d210","webpack:///./src/components/CheckboxButton.vue?9231","webpack:///./src/views/components/element/LatexElement/BaseLatexElement.vue?dc6f","webpack:///./src/views/components/element/ImageElement/ImageClipHandler.vue?ee13","webpack:///./src/views/Editor/Canvas/ViewportBackground.vue?3afb","webpack:///./src/views/components/element/VideoElement/BaseVideoElement.vue?da7f","webpack:///./src/views/Mobile/MobileEditor/Header.vue?bef9","webpack:///./src/views/components/element/ChartElement/Chart.vue?eb4b","webpack:///./src/views/Editor/Canvas/Operate/ShapeElementOperate.vue?c66a","webpack:///./src/components/FileInput.vue?310d","webpack:///./src/views/Editor/Canvas/Operate/index.vue?38d7","webpack:///./src/views/components/element/TableElement/EditableTable.vue?307f","webpack:///./src/views/components/element/VideoElement/index.vue?1b93","webpack:///./src/views/components/ThumbnailSlide/index.vue?4fc5","webpack:///./src/views/components/element/ChartElement/Chart.vue?6018","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue?adbd","webpack:///./src/views/Editor/Toolbar/common/ElementColorMask.vue?218d","webpack:///./src/views/Editor/CanvasTool/ShapeItemThumbnail.vue?93fb","webpack:///./src/views/Screen/PresenterView.vue?a89e","webpack:///./src/views/Editor/ExportDialog/ExportImage.vue?a2ce","webpack:///./src/views/components/element/AudioElement/index.vue?3fea","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/AudioStylePanel.vue?0511","webpack:///./src/views/components/element/VideoElement/ScreenVideoElement.vue?edf3","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue?f9c5","webpack:///./src/views/Editor/Canvas/LinkDialog.vue?0918","webpack:///./src/views/Editor/ExportDialog/ExportPDF.vue?fd16","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue?e7c9","webpack:///./src/views/components/element/TableElement/CustomTextarea.vue?8683","webpack:///./src/views/components/element/ChartElement/index.vue?03dc","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue?8f5e","webpack:///./src/views/Editor/ExportDialog/ExportJSON.vue?cf15","webpack:///./src/views/components/element/ShapeElement/BaseShapeElement.vue?afd8","webpack:///./src/App.vue?48fe","webpack:///./src/views/Editor/Canvas/index.vue?385b","webpack:///./src/views/Screen/ScreenSlideList.vue?56b9","webpack:///./src/views/Editor/Toolbar/SlideDesignPanel.vue?01c6","webpack:///./src/views/Editor/ExportDialog/ExportPPTX.vue?790c","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue?17ae","webpack:///./src/views/components/element/ChartElement/BaseChartElement.vue?84b4","webpack:///./src/views/Editor/Toolbar/MultiPositionPanel.vue?ba89","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue?6cc7","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue?35ae","webpack:///./src/views/Screen/ScreenSlide.vue?4e32","webpack:///./src/views/Editor/Toolbar/common/ElementFlip.vue?e2c4","webpack:///./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue?7843","webpack:///./src/views/Editor/index.vue?1201","webpack:///./src/views/Screen/CountdownTimer.vue?617f","webpack:///./src/components/ColorPicker/Checkboard.vue?a884","webpack:///./src/views/Mobile/MobileEditor/ElementToolbar.vue?6b13","webpack:///./src/views/Editor/Toolbar/common/ElementOutline.vue?055a","webpack:///./src/components/ColorPicker/EditableInput.vue?ace0","webpack:///./src/views/components/element/TableElement/StaticTable.vue?538b","webpack:///./src/views/Editor/Canvas/Operate/ImageElementOperate.vue?36e6","webpack:///./src/views/components/element/ShapeElement/index.vue?bc41","webpack:///./src/components/Contextmenu/index.vue?07b9","webpack:///./src/views/Editor/Canvas/Operate/ResizeHandler.vue?881c","webpack:///./src/views/Editor/CanvasTool/index.vue?f961","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue?4314","webpack:///./src/views/Editor/EditorHeader/index.vue?c577","webpack:///./src/components/WritingBoard.vue?1b61","webpack:///./src/views/components/element/TextElement/index.vue?e06d","webpack:///./src/views/components/element/ImageElement/index.vue?f7b5","webpack:///./src/components/ColorPicker/index.vue?69ff","webpack:///./src/views/components/element/LineElement/index.vue?179c","webpack:///./src/views/Mobile/index.vue?3233","webpack:///./src/views/Mobile/MobileThumbnails.vue?3d26","webpack:///./src/components/LaTeXEditor/index.vue?62b7","webpack:///./src/views/Editor/Canvas/Operate/LinkHandler.vue?8758","webpack:///./src/components/Contextmenu/MenuContent.vue?6675","webpack:///./src/types/toolbar.ts","webpack:///./src/configs/font.ts","webpack:///./src/utils/prosemirror/utils.ts","webpack:///./src/utils/font.ts","webpack:///./src/mocks/slides.ts","webpack:///./src/mocks/theme.ts","webpack:///./src/mocks/layout.ts","webpack:///./src/store/slides.ts","webpack:///./src/store/main.ts","webpack:///./src/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/edit.ts","webpack:///./src/configs/hotkey.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/types/slides.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/stringify.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/components/FileInput.vue","webpack:///./src/components/FileInput.vue?ae58","webpack:///./src/views/Editor/EditorHeader/index.vue","webpack:///./src/views/Editor/EditorHeader/index.vue?f944","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/configs/imageClip.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/useMoveShapeKeypoint.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/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/emitter.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/ShapeItemThumbnail.vue","webpack:///./src/views/Editor/CanvasTool/ShapeItemThumbnail.vue?7471","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/hooks/useTextFormatPainter.ts","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/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/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/common/TextColorButton.vue","webpack:///./src/views/Editor/Toolbar/common/TextColorButton.vue?c2f0","webpack:///./src/components/CheckboxButton.vue","webpack:///./src/components/CheckboxButton.vue?b241","webpack:///./src/components/CheckboxButtonGroup.vue","webpack:///./src/components/CheckboxButtonGroup.vue?da6b","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/common/ElementColorMask.vue","webpack:///./src/views/Editor/Toolbar/common/ElementColorMask.vue?2431","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/hooks/useSlideTheme.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/components/FullscreenSpin.vue","webpack:///./src/components/FullscreenSpin.vue?40fd","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/components/MoveablePanel.vue","webpack:///./src/components/MoveablePanel.vue?f129","webpack:///./src/views/Editor/SelectPanel.vue","webpack:///./src/views/Editor/SelectPanel.vue?88f8","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/CountdownTimer.vue","webpack:///./src/views/Screen/CountdownTimer.vue?b415","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/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/components/FullscreenSpin.vue?a251","webpack:///./src/views/Mobile/MobilePreview.vue?14b8","webpack:///./src/views/Screen/ScreenElement.vue?9349","webpack:///./src/views/Editor/ExportDialog/index.vue?589d","webpack:///./src/views/components/element/TableElement/index.vue?bb65","webpack:///./src/views/Editor/Thumbnails/index.vue?ffc4","webpack:///./src/views/Editor/Toolbar/common/ColorButton.vue?a034","webpack:///./src/views/Mobile/MobileEditor/MobileOperate.vue?5efe","webpack:///./src/views/Editor/Canvas/GridLines.vue?cd44","webpack:///./src/views/Editor/SelectPanel.vue?07f0","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue?9629","webpack:///./src/views/Editor/CanvasTool/MediaInput.vue?ea7f","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/VideoStylePanel.vue?33eb","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue?1b33","webpack:///./src/components/ColorPicker/Alpha.vue?3aaa","webpack:///./src/components/LaTeXEditor/FormulaContent.vue?ad41","webpack:///./src/views/components/element/TableElement/BaseTableElement.vue?6e7f","webpack:///./src/views/Editor/Remark/index.vue?d576","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue?a9dc","webpack:///./src/views/Editor/Canvas/Ruler.vue?933a","webpack:///./src/views/Editor/Canvas/Operate/LineElementOperate.vue?b7eb","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue?9029","webpack:///./src/views/components/element/LineElement/BaseLineElement.vue?d2fd","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue?6dda"],"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","SYS_FONTS","label","WEB_FONTS","autoSelectAll","view","empty","state","selection","selectAll","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","getAttrValue","attr","attrs","isActiveMark","markActive","isInSet","storedMarks","rangeHasMark","getAttrValueInSelection","keepChecking","nodesBetween","_defaultAttrs","color","backcolor","fontsize","fontname","align","getTextAttrs","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","slides","id","elements","left","top","viewBox","path","fill","fixedRatio","opacity","rotate","flipV","lineHeight","content","defaultFontName","defaultColor","end","points","style","background","wordSpace","theme","themeColor","fontColor","backgroundColor","layouts","outline","text","useSlidesStore","defineStore","slideIndex","viewportRatio","getters","currentSlide","currentSlideAnimations","animations","els","elIds","map","el","animation","includes","elId","formatedAnimations","trigger","last","autoNext","subColor","tinycolor","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","omit","nanoid","customAlphabet","databaseId","useMainStore","activeElementIdList","handleElementId","activeGroupElementId","hiddenElementIdList","canvasPercentage","canvasScale","canvasDragged","thumbnailsFocus","editorAreaFocus","disableHotkeys","gridLineSize","showRuler","creatingElement","availableFonts","toolbarState","SLIDE_DESIGN","clipingImageElementId","richTextAttrs","selectedTableCells","isScaling","selectedSlidesIndex","dialogForExport","textFormatPainter","showSelectPanel","activeElementList","slidesStore","handleElement","setActiveElementIdList","setHandleElementId","setActiveGroupElementId","setHiddenElementIdList","setCanvasPercentage","percentage","setCanvasScale","scale","setCanvasDragged","isDragged","setThumbnailsFocus","isFocus","setEditorareaFocus","setDisableHotkeysState","disable","setGridLineSize","setRulerState","show","setCreatingElement","setAvailableFonts","setToolbarState","setClipingImageElementId","setRichtextAttrs","setSelectedTableCells","cells","setScalingState","updateSelectedSlidesIndex","setDialogForExport","setTextFormatPainter","setSelectPanelState","LOCALSTORAGE_KEY_DISCARDED_DB","databaseNamePrefix","deleteDiscardedDB","async","now","Date","getTime","localStorageDiscardedDB","localStorage","getItem","localStorageDiscardedDBList","databaseNames","Dexie","getDatabaseNames","discardedDBNames","prefix","time","split","delete","removeItem","PPTistDB","constructor","super","version","stores","snapshots","writingBoardImgs","table","db","useSnapshotStore","snapshotCursor","snapshotLength","canUndo","canRedo","setSnapshotCursor","cursor","setSnapshotLength","newFirstSnapshot","add","allKeys","orderBy","keys","needDeleteKeys","snapshot","snapshotLengthLimit","update","bulkDelete","mainStore","toArray","useKeyboardStore","ctrlKeyState","shiftKeyState","spaceKeyState","ctrlOrShiftKeyActive","setCtrlKeyState","active","setShiftKeyState","setSpaceKeyState","useScreenStore","screening","setScreening","fillDigit","digit","len","padStart","isPC","navigator","userAgent","match","ElementOrderCommands","ElementAlignCommands","OperateBorderLines","OperateResizeHandlers","OperateLineHandlers","KEYS","HOTKEY_DOC","children","CRYPTO_KEY","encrypt","msg","CryptoJS","AES","toString","decrypt","ciphertext","bytes","enc","Utf8","copyText","Promise","resolve","reject","fakeElement","clipboard","Clipboard","action","container","body","on","e","destroy","appendChild","click","removeChild","readClipboard","readText","then","pasteCustomClipboardString","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","createSlideIdMap","slideIdMap","createElementIdMap","groupIdMap","elIdMap","groupId","getTableSubThemeColor","rgba","setAlpha","toRgbString","getLineElementPath","broken","mid","curve","cubic","c1","c2","p1","p2","parseText2Paragraphs","htmlText","replace","paragraphs","string","paragraph","getImageSize","src","img","onload","imgWidth","clientWidth","imgHeight","clientHeight","onerror","getImageDataURL","file","reader","FileReader","addEventListener","readAsDataURL","VIEWPORT_SIZE","ShapePathFormulasKeys","ElementTypes","SHAPE_PATH_FORMULAS","ROUND_RECT","editable","defaultValue","relative","getBaseSize","formula","CUT_RECT_DIAGONAL","CUT_RECT_SINGLE","CUT_RECT_SAMESIDE","ROUND_RECT_DIAGONAL","ROUND_RECT_SINGLE","ROUND_RECT_SAMESIDE","CUT_ROUND_RECT","MESSAGE","arrowWidth","arrowheight","ROUND_MESSAGE","L","lineWidth","RING_RECT","PLUS","TRIANGLE","vertex","PARALLELOGRAM_LEFT","point","PARALLELOGRAM_RIGHT","TRAPEZOID","BULLET","INDICATOR","SHAPE_LIST","pathFormula","special","outlined","CHART_TYPES","bar","horizontalBar","area","scatter","pie","ring","snapshotStore","addHistorySnapshot","debounce","addSnapshot","trailing","redo","throttle","reDo","leading","undo","unDo","storeToRefs","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","cellMinHeight","createTextElement","position","vertical","editorRef","querySelector","focus","createShapeElement","keypoint","createLineElement","isBroken","isCurve","isCubic","createLatexElement","w","h","latex","strokeWidth","createVideoElement","createAudioElement","loop","autoplay","addElementsFromData","currentSlideElementIdList","inCurrentSlide","values","addSlidesFromData","newSlides","target","useCreateElement","useAddSlidesOrElements","createTextElementFromClipboard","pasteTextClipboardData","onlySlide","onlyElements","_selectedSlidesIndex","computed","selectedSlides","selectedSlidesId","usePasteTextClipboardData","resetSlides","emptySlide","command","UP","DOWN","copySlide","pasteSlide","catch","err","message","warning","createSlide","createSlideByTemplate","newSlide","copyAndPasteSlide","targetSlidesId","cutSlide","selectAllSlide","newSelectedSlidesIndex","sortSlides","oldIndex","_slides","_slide","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","combine","uncombine","remove","moveSlide","PAGEUP","PAGEDOWN","order","tabActiveElement","firstElement","currentIndex","nextIndex","nextElementId","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","onMounted","onUnmounted","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","lexTagAttributes","quote","wordBegin","words","isQuoteEnd","isTagEnd","isWordEnd","isQuoteStart","word","isNotPair","secondWord","startsWith","newWord","thirdWord","endsWith","lexSkipTag","safeTagName","nextTag","tagState","lexTag","textStart","secondChar","tagStartClose","close","firstChar","tagEndClose","lex","isComment","safeTag","lexer","parser","root","stack","hasTerminalParent","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","toAST","typeMap","1","2","4","8","16","32","64","128","256","512","toPoints","pathData","SVGPathData","commands","x","y","x1","y1","x2","y2","lastPoint","cubicBezierPoints","arcToBezier","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","INCH_PX_RATIO","PT_PX_RATIO","exporting","ref","exportImage","domRef","quality","ignoreWebfont","toImage","toPng","toJpeg","foreignObjectSpans","querySelectorAll","spanRef","removeAttribute","config","fontEmbedCSS","dataUrl","saveAs","error","exportSpecificFile","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","undefined","moveTo","getShadowOption","shadow","v","offset","angle","blur","getOutlineOption","transparency","dashType","getLinkOption","exportPPTX","masterOverwrite","pptx","pptxgen","layout","defineLayout","bgColor","bgAlpha","defineSlideMaster","title","pptxSlide","image","gradientColor","color1","color2","mix","remark","addNotes","textProps","valign","margin","lineSpacingMultiple","autoFit","charSpacing","paragraphSpace","vert","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","plotArea","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","_defineComponent","__name","setup","__props","_ctx","_cache","_openBlock","_createElementBlock","_Fragment","_renderList","_unref","_createElementVNode","_toDisplayString","hotkey","__exports__","accept","default","emits","emit","inputRef","handleClick","handleChange","onClick","$event","_renderSlot","$slots","ref_key","onChange","_withScopeId","_pushScopeId","_popScopeId","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","href","_hoisted_13","MenuItem","Item","useExport","toggleGridLines","toggleRuler","openSelectPanel","hotkeyDrawerVisible","goLink","open","_component_IconFolderClose","_resolveComponent","_component_IconEdit","_component_IconPpt","_component_IconHelpcenter","_component_IconShare","_component_IconGithub","_createVNode","overlay","_withCtx","FileInput","_createTextVNode","_","mouseLeaveDelay","placement","closable","visible","onClose","HotkeyDoc","injectKeySlideScale","injectKeySlideId","removeAllRanges","getSelection","canvasRef","viewportLeft","viewportTop","initViewportPosition","canvasWidth","canvasHeight","viewportActualWidth","viewportActualHeight","setViewportPosition","newValue","oldValue","newViewportActualWidth","oldViewportActualWidth","newViewportActualHeight","oldViewportActualHeight","watch","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","inRangeElementIdList","groupElementList","groupElement","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","getOppositePoint","direction","oppositeMap","RIGHT_BOTTOM","LEFT_BOTTOM","LEFT_TOP","RIGHT_TOP","ClipPathTypes","ClipPaths","alignmentLines","scaleElement","isTouchEvent","MouseEvent","changedTouches","elOriginLeft","elOriginTop","elOriginWidth","elOriginHeight","originTableCellMinHeight","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","uniq","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","moveShapeKeypoint","shapePathData","baseSize","originPos","shapeElement","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","pentagon","hexagon","heptagon","octagon","chevron","arrow","parallelogram","parallelogram2","trapezoid","trapezoid2","clipShape","imgPosition","outlineWidth","outlineStyle","outlineColor","Number","required","useElementOutline","toRef","overflow","stroke","_createCommentVNode","Function","elementInfo","useClipImage","_createBlock","ImageRectOutline","ImageEllipseOutline","ImagePolygonOutline","clipData","clipPath","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","_resolveDirective","_withDirectives","_normalizeStyle","draggable","alt","onMousedown","_withModifiers","_normalizeClass","contextmenus","isCliping","useElementShadow","useElementFlip","useFilter","handleSelectElement","stopPropagation","originClip","centerOffsetX","centerOffsetY","rotatedCenterX","rotatedCenterY","_props","_directive_contextmenu","transform","ImageClipHandler","onClip","onTouchstart","ImageOutline","onDragstart","colorMask","buildKeymap","cmd","joinUp","joinDown","undoInputRule","selectParentNode","toggleMark","strong","splitListItem","list_item","liftListItem","sinkListItem","blockQuoteRule","wrappingInputRule","orderedListRule","childCount","bulletListRule","codeBlockRule","textblockTypeInputRule","buildInputRules","rules","smartQuotes","ellipsis","emDash","ordered_list","bullet_list","code_block","inputRules","buildPlugins","keymap","baseKeymap","dropCursor","gapCursor","history","listStyleType","group","parseDOM","tag","getAttrs","dom","hasAttribute","getAttribute","toDOM","listItem","_listItem","hard_break","otherNodes","excludes","forecolor","inline","inclusive","schemaNodes","schemaMarks","Schema","createDocument","htmlString","DOMParser","parseFromString","firstElementChild","fromSchema","initProsemirrorEditor","EditorView","EditorState","plugins","EmitterEvents","emitter","mitt","setTextAlign","alignment","tasks","allowedNodeTypes","Set","has","task","setNodeMarkup","alignmentCommand","setSelection","isList","toggleList","listType","itemType","blockRange","parentList","validContent","nodeAttrs","wrapInList","setNodeIndentMarkup","delta","minIndent","maxIndent","setTextIndent","TextSelection","AllSelection","indentCommand","docChanged","Boolean","autoFocus","expose","editorViewRef","handleInput","innerHTML","handleFocus","handleBlur","handleKeydown","textContent","hasFocus","replaceRangeWith","setProps","execCommand","wrapIn","removeMark","insertText","handleDOMEvents","keydown","mouseup","RICH_TEXT_COMMAND","off","canMove","realHeightCache","realWidthCache","updateTextElementHeight","entries","contentRect","realHeight","realWidth","updateContent","checkEmptyText","pureText","isHandleElement","textShadow","letterSpacing","fontFamily","writingMode","ElementOutline","ProsemirrorEditor","textIndent","onUpdate","gradientTransform","defaultText","updateText","_text","prosemirrorEditorRef","startEdit","nextTick","onDblclick","gradient","GradientDefs","onBlur","pathMap","dot","rotateMap","markerUnits","orient","markerWidth","markerHeight","refX","refY","svgWidth","svgHeight","lineDashArray","LinePointMarker","chartRef","slideScale","inject","chartHeight","getPieChartData","getOptions","propsOptopns","renderChart","BarChart","LineChart","PieChart","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","isEqual","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","_vShow","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","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","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","loadError","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","_resolveDynamicComponent","validator","colorList","mostReadable","includeFallbackColors","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","verticalTextElementResizeHandlers","borderLines","T","R","isWide","localActiveElementList","useCommonOperate","setRange","watchEffect","disableResize","BorderLine","ResizeHandler","script","render","__default__","inheritAttrs","handlerVisible","scaleWidth","scaleHeight","RotateHandler","keypointStyle","keypointPos","handlers","ctrlHandler","ctrlHandler1","ctrlHandler2","cannotRotate","setLink","linkRegExp","removeLink","useLink","turnTarget","targetIndex","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","provide","ThumbnailElement","SelectOption","Option","address","selectedSlide","tabs","save","success","tab","placeholder","disabled","ThumbnailSlide","linkDialogVisible","setLocalElementList","useViewportSize","useDropImageOrText","useMouseSelection","useDragElement","useDragLineElement","useSelectElement","useScaleElement","useRotateElement","useMoveShapeKeypoint","handleClickBlankArea","removeEditorAreaFocus","throttleScaleCanvas","throttleUpdateSlideIndex","handleMousewheelCanvas","deltaY","useInsertFromCreateSelection","onWheel","ElementCreateSelection","onCreated","AlignmentLine","MultiSelectOperate","Operate","ViewportBackground","MouseSelection","EditableElement","Ruler","footer","centered","destroyOnClose","LinkDialog","selectShape","ShapeItemThumbnail","LINE_LIST","selectLine","chartList","selectChart","_component_IconChartLine","_component_IconChartHistogram","_component_IconChartPie","_component_IconChartHistogramOne","_component_IconChartLineArea","_component_IconChartRing","_component_IconChartScatter","customRow","customCol","isCustom","handleClickTable","insertCustomTable","videoSrc","audioSrc","insertVideo","insertAudio","hfmathConfig","SUB_SUP_SCALE","FORMULA_LIST","SYMBOL_LIST","box","pathd","eq","hfmath","boxW","boxH","SCALE_X","SCALE_Y","TextArea","formulaList","symbolList","textAreaRef","selectedSymbolKey","symbolPool","selectedSymbol","insertSymbol","FormulaContent","SymbolContent","canvasScalePresetList","canvasScaleVisible","applyCanvasPresetScale","insertImageElement","shapePoolVisible","linePoolVisible","chartPoolVisible","tableGeneratorVisible","mediaInputVisible","latexEditorVisible","textTypeSelectVisible","drawText","drawShape","drawLine","_component_IconBack","_component_IconNext","_component_IconFontSize","_component_IconTextRotationNone","_component_IconTextRotationDown","_component_IconDown","_component_IconPicture","_component_IconGraphicDesign","_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","changeSlideIndex","handleClickSlideThumbnail","minIndex","handleDragEnd","eventData","contextmenusThumbnails","contextmenusThumbnailItem","LayoutPool","Draggable","modelValue","scroll","scrollSensitivity","setData","onEnd","itemKey","toggleFormatPainter","deep","updateOpacity","_component_IconPlatte","white","grey","checkboardCache","renderCheckboard","fillRect","translate","toDataURL","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","clamp","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","setItem","changeColor","openEyeDropper","isSupportedEyeDropper","browserEyeDropper","customEyeDropper","eyeDropper","EyeDropper","tColor","sRGBHex","targetRef","maskRef","cssText","colorBlockRef","classList","contains","toCanvas","pixelRatio","toFixed","handleMouseleave","handleMousedown","_component_IconNeedle","Saturation","onColorChange","Hue","Alpha","EditableInput","fixed","hasOutline","updateOutline","outlineProps","toggleOutline","checked","_outline","ColorPicker","ColorButton","hasShadow","updateShadow","shadowProps","_shadow","toggleShadow","_hoisted_23","_hoisted_24","_hoisted_25","Group","RadioGroup","Button","RadioButton","OptGroup","SelectOptGroup","InputGroup","ButtonGroup","presetStyles","useTextFormatPainter","bulletListPanelVisible","orderedListPanelVisible","bulletListStyleTypeOption","orderedListStyleTypeOption","fontSizeOptions","lineHeightOptions","wordSpaceOptions","textIndentOptions","paragraphSpaceOptions","updateLineHeight","updateParagraphSpace","updateWordSpace","updateTextIndent","updateFill","emitRichTextCommand","emitBatchRichTextCommand","linkPopoverVisible","openLinkPopover","updateLink","_component_IconAddText","_component_IconText","_component_IconHighLight","_component_IconTextBold","_component_IconTextItalic","_component_IconTextUnderline","_component_IconStrikethrough","_component_IconCode","_component_IconQuote","_component_IconFormat","_component_IconFormatBrush","_component_IconLinkOne","_component_IconAlignTextLeft","_component_IconAlignTextCenter","_component_IconAlignTextRight","_component_IconList","_component_IconOrderedList","_component_IconIndentLeft","_component_IconIndentRight","_component_IconRowHeight","_component_IconVerticalSpacingBetweenItems","_component_IconFullwidth","compact","suffixIcon","TextColorButton","CheckboxButtonGroup","CheckboxButton","ElementShadow","ElementOpacity","updateFlip","flipProps","_component_IconFlipVertically","_component_IconFlipHorizontally","defaultFilters","unit","filterOptions","hasFilters","updateFilter","_handleElement","originFilters","toggleFilters","defaultColorMask","hasColorMask","toggleColorMask","updateColorMask","colorMaskProp","newColorMask","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","ElementColorMask","ElementFilter","handleShapeElement","fillType","updateFillType","updateGradient","gradientProps","_gradient","changeShape","updateTextAlign","_component_IconAlignTextTopOne","_component_IconAlignTextMiddleOne","_component_IconAlignTextBottomOne","handleLineElement","updateLine","CELL_WIDTH","CELL_HEIGHT","selectedRange","tempRangeSize","focusCell","rangeLines","resizablePointStyle","initData","_data","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_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","isHorizontalText","isVerticalText","updateLeft","updateTop","updateShapePathData","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","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","handleAnimationEnd","removeProperty","once","updateElementAnimationDuration","updateElementAnimationTrigger","updateElementAnimation","handleAnimationId","animationItem","addAnimation","popoverMaskHide","handlePopoverVisibleChange","openAnimationPool","in","out","attention","_component_IconEffects","_component_IconClick","onVisibleChange","handle","PRESET_THEMES","getSlideAllColors","createSlideThemeColorMap","newColors","oldColors","themeColorMap","otherColors","setSlideTheme","colorMap","applyPresetThemeToSingleSlide","applyPresetThemeToAllSlides","applyThemeToAllSlides","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","useSlideTheme","updateBackgroundType","newBackground","updateBackground","uploadBackgroundImage","applyBackgroundAllSlide","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","loading","tip","imageThumbnailsRef","rangeType","renderSlides","expImage","FullscreenSpin","createIframe","iframe","writeContent","printNode","docType","styleSheets","styleSheet","cssRules","rule","head","write","print","iframeContentWindow","contentWindow","contentDocument","handleLoadIframe","handleAfterprint","pdfThumbnailsRef","padding","expPDF","pageSize","currentDialogComponent","dialogMap","ExportImage","ExportJSON","ExportPDF","ExportPPTX","ExportSpecificFile","moveable","windowWidth","_component_IconClose","_elements","lastItem","selectGroupEl","idList","selectEl","hideElement","showAll","currentSlideElIdList","needHiddenElementIdList","hideAll","editingElId","saveElementName","enterEdit","_component_IconUp","_component_IconPreviewClose","_component_IconPreviewOpen","MoveablePanel","onKeydown","_withKeys","closeExportDialog","remarkHeight","useGlobalHotkey","usePasteEvent","EditorHeader","Thumbnails","CanvasTool","Canvas","Remark","Toolbar","SelectPanel","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","penSize","markSize","rubberSize","writingBoardRef","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","clearCanvas","setImageDataURL","imageDataURL","Image","drawImage","_component_IconWrite","onMouseup","onTouchmove","onTouchend","writingBoardColors","writingBoardColor","writingBoardModel","sizePopoverType","changeModel","closeWritingBoard","where","equals","ret","currentImg","hanldeWritingEnd","_component_IconErase","_component_IconClear","WritingBoard","inTiming","isCountdown","minute","inputEditable","clearTimer","reset","toggleCountdown","changeTime","isNumber","maxlength","changeViewMode","useExecPlay","useSlideSize","useFullscreen","rightToolsVisible","writingBoardToolVisible","timerlVisible","slideThumbnailModelVisible","laserPen","_component_IconLeftTwo","_component_IconRightTwo","_component_IconMagic","_component_IconStopwatchStart","_component_IconListView","_component_IconOffScreenOne","_component_IconFullScreenOne","_component_IconPower","ScreenSlideList","SlideThumbnails","WritingBoardTool","CountdownTimer","slideListWrapRef","thumbnailsRef","remarkFontSize","currentSlideRemark","handleMousewheelThumbnails","scrollBy","setRemarkFontSize","activeThumbnailRef","offsetLeft","scrollTo","behavior","viewMode","ESC","BaseView","PresenterView","_resizeHandlers","delayOnTouchOnly","delay","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","initSnapshotDatabase","discardedDB","discardedDBList","newDiscardedDB","Screen","Editor","Mobile","register","ready","console","log","registered","cached","updatefound","updated","offline","icons","IconPlayOne","PlayOne","IconFullScreenPlay","FullScreenPlay","IconLock","Lock","IconUnlock","Unlock","IconPpt","Ppt","IconFormat","Format","IconPicture","Picture","IconFullScreen","FullScreen","IconList","List","IconOrderedList","OrderedList","IconHelpcenter","Helpcenter","IconFlipVertically","FlipVertically","IconFlipHorizontally","FlipHorizontally","IconFontSize","FontSize","IconCode","Code","IconTextBold","TextBold","IconTextItalic","TextItalic","IconTextUnderline","TextUnderline","IconStrikethrough","Strikethrough","IconEdit","Edit","IconQuote","Quote","IconBackgroundColor","BackgroundColor","IconGroup","IconUngroup","Ungroup","IconBack","Back","IconNext","Next","IconFullwidth","Fullwidth","IconAlignTop","AlignTop","IconAlignLeft","AlignLeft","IconAlignRight","AlignRight","IconAlignBottom","AlignBottom","IconAlignVertically","AlignVertically","IconAlignHorizontally","AlignHorizontally","IconBringToFront","BringToFront","IconSendToBack","SendToBack","IconAlignTextLeft","AlignTextLeft","IconAlignTextRight","AlignTextRight","IconAlignTextCenter","AlignTextCenter","IconRowHeight","RowHeight","IconWrite","Write","IconInsertTable","InsertTable","IconAddText","AddText","IconFill","Fill","IconTailoring","Tailoring","IconEffects","Effects","IconColorFilter","ColorFilter","IconUp","Up","IconDown","Down","IconPlus","Plus","IconMinus","Minus","IconConnection","Connection","IconBringToFrontOne","BringToFrontOne","IconSentToBack","SentToBack","IconGithub","Github","IconChartProportion","ChartProportion","IconChartHistogram","ChartHistogram","IconChartHistogramOne","ChartHistogramOne","IconChartLineArea","ChartLineArea","IconChartRing","ChartRing","IconChartScatter","ChartScatter","IconChartLine","ChartLine","IconChartPie","ChartPie","IconText","Text","IconRotate","Rotate","IconLeftTwo","LeftTwo","IconRightTwo","RightTwo","IconPlatte","Platte","IconClose","Close","IconCloseSmall","CloseSmall","IconUndo","Undo","IconTransform","Transform","IconClick","Click","IconTheme","Theme","IconArrowCircleLeft","ArrowCircleLeft","IconGraphicDesign","GraphicDesign","IconLogout","Logout","IconErase","Erase","IconClear","Clear","IconFolderClose","FolderClose","IconAlignTextTopOne","AlignTextTopOne","IconAlignTextBottomOne","AlignTextBottomOne","IconAlignTextMiddleOne","AlignTextMiddleOne","IconPause","Pause","IconVolumeMute","VolumeMute","IconVolumeNotice","VolumeNotice","IconVolumeSmall","VolumeSmall","IconVideoTwo","VideoTwo","IconFormula","Formula","IconLinkOne","LinkOne","IconFullScreenOne","FullScreenOne","IconOffScreenOne","OffScreenOne","IconPower","Power","IconListView","ListView","IconMagic","Magic","IconHighLight","HighLight","IconShare","Share","IconIndentLeft","IndentLeft","IconIndentRight","IndentRight","IconVerticalSpacingBetweenItems","VerticalSpacingBetweenItems","IconCopy","Copy","IconDelete","Delete","IconSquare","Square","IconRound","Round","IconNeedle","Needle","IconTextRotationNone","TextRotationNone","IconTextRotationDown","TextRotationDown","IconFormatBrush","FormatBrush","IconPreviewOpen","PreviewOpen","IconPreviewClose","PreviewClose","IconStopwatchStart","StopwatchStart","install","app","component","menus","handleClickMenuItem","_component_menu_content","menu","removeContextmenu","MENU_WIDTH","MENU_HEIGHT","DIVIDER_HEIGHT","PADDING","menuCount","dividerCount","menuWidth","menuHeight","screenHeight","MenuContent","CTX_CONTEXTMENU_HANDLER","contextmenuListener","binding","vm","createVNode","ContextmenuComponent","ContextmenuDirective","mounted","unmounted","CTX_CLICK_OUTSIDE_HANDLER","clickListener","composedPath","isClickOutside","ClickOutsideDirective","directive","Contextmenu","ClickOutside","createApp","App","use","Icon","Directive","createPinia","mount"],"mappings":"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oCCAA,W,6DCAA,W,sFCAA,W,kCCAA,W,uICAA,W,kFCAA,W,kCCAA,W,+GCAA,W,oCCAA,W,6DCAA,W,6DCAA,W,kCCAA,W,oLCAA,W,kCCAA,W,oCCAA,W,6DCAA,W,yDCAA,W,kCCAA,W,sFCAA,W,sICAA,W,2DCAA,W,oCCAA,W,kCCAA,W,oCCAA,W,oFCAA,W,oCCAA,W,2DCAA,W,6DCAA,W,6DCAA,W,oCCAA,W,+GCAA,W,oCCAA,W,oCCAA,W,+GCAA,W,6GCAA,W,6DCAA,W,oCCAA,W,oCCAA,W,oCCAA,W,oCCAA,W,6DCAA,W,kCCAA,W,6DCAA,W,oCCAA,W,kCCAA,W,6DCAA,W,sFCAA,W,2DCAA,W,kCCAA,W,oFCAA,W,6DCAA,W,oCCAA,W,oCCAA,W,+GCAA,W,6DCAA,W,2DCAA,W,kCCAA,W,gFCAA,W,yDCAA,W,gFCAA,W,kCCAA,W,kCCAA,W,kCCAA,W,kCCAA,W,qJCAA,W,kCCAA,W,yDCAA,W,kCCAA,W,gFCAA,W,kCCAA,W,gFCAA,W,kCCAA,W,yDCAA,W,kCCAA,W,yDCAA,W,kCCAA,W,yDCAA,W,kCCAA,W,yDCAA,W,yDCAA,W,gFCAA,W,8HCAA,W,yICAkByC,E,qCAAlB,SAAkBA,GAChBA,qBACAA,gCACAA,wBACAA,8BACAA,gCACAA,sCACAA,qCAPF,CAAkBA,MAAa,KCAxB,MAAMC,EAAY,CACvB,CAAEC,MAAO,QAASlB,MAAO,SACzB,CAAEkB,MAAO,OAAQlB,MAAO,mBACxB,CAAEkB,MAAO,KAAMlB,MAAO,UACtB,CAAEkB,MAAO,KAAMlB,MAAO,UACtB,CAAEkB,MAAO,KAAMlB,MAAO,SACtB,CAAEkB,MAAO,MAAOlB,MAAO,WACvB,CAAEkB,MAAO,KAAMlB,MAAO,YACtB,CAAEkB,MAAO,KAAMlB,MAAO,eACtB,CAAEkB,MAAO,OAAQlB,MAAO,WACxB,CAAEkB,MAAO,OAAQlB,MAAO,WACxB,CAAEkB,MAAO,OAAQlB,MAAO,UACxB,CAAEkB,MAAO,OAAQlB,MAAO,cACxB,CAAEkB,MAAO,OAAQlB,MAAO,eACxB,CAAEkB,MAAO,OAAQlB,MAAO,UACxB,CAAEkB,MA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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,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,0DAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,sEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,uEAER,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,4DACNyX,YAAajC,GAAsBoB,GAErC,CACE7W,QAAS,CAAC,IAAK,KACfC,KAAM,uEACNyX,YAAajC,GAAsBsB,WAErC,CACE/W,QAAS,CAAC,IAAK,KACfC,KAAM,iEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,mHACNyX,YAAajC,GAAsBuB,MAErC,CACEhX,QAAS,CAAC,IAAK,KACfC,KAAM,sHAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,gEACNyX,YAAajC,GAAsBgB,SAErC,CACEzW,QAAS,CAAC,IAAK,KACfC,KAAM,mIACNyX,YAAajC,GAAsBmB,eAErC,CACE5W,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,qFAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,wHAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6JAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,4DAKZ,CACE1G,KAAM,KACNuU,SAAU,CACR,CACE9N,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,KACfC,KAAM,qGAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,qOAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,uFAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,sFAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,8GAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,8GAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,8DAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,gEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6DAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,gEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,4CAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,iDAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6DAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,kEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6FAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,yFAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,0HAER,CACED,QAAS,CAAC,KAAM,MAChBC,KAAM,8IACN0X,SAAS,GAEX,CACE3X,QAAS,CAAC,KAAM,MAChBC,KAAM,gJACN0X,SAAS,KAKf,CACEpe,KAAM,OACNuU,SAAU,CACR,CACE9N,QAAS,CAAC,KAAM,MAChBC,KAAM,qvCACN0X,SAAS,GAEX,CACE3X,QAAS,C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","file":"js/app.10debef6.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!./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!./LatexStylePanel.vue?vue&type=style&index=0&id=79d8ab96&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=90ac59d8&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./MoveablePanel.vue?vue&type=style&index=0&id=68252e2c&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=de815ffa&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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!./ChartDataEditor.vue?vue&type=style&index=0&id=1eab5a3a&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./ElementFilter.vue?vue&type=style&index=0&id=a99ef6ee&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./SlideToolbar.vue?vue&type=style&index=0&id=1e17bcc7&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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!./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!./ElementAnimationPanel.vue?vue&type=style&index=0&id=7a134147&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=76d3203e&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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!./WritingBoardTool.vue?vue&type=style&index=0&id=52a2a3a6&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=40c1ae3a&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./TextColorButton.vue?vue&type=style&index=0&id=c90c8a28&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/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=adfce55e&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!./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!./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!./BaseImageElement.vue?vue&type=style&index=0&id=c874e65e&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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!./ElementShadow.vue?vue&type=style&index=0&id=19c233fc&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=18d84242&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/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!./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!./ViewportBackground.vue?vue&type=style&index=0&id=61c4db4a&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./Header.vue?vue&type=style&index=0&id=8639f30e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=1f8d633e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ShapeElementOperate.vue?vue&type=style&index=0&id=fd38df18&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/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=cdb026e2&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=26f9c48a&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=a2ef535c&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./index.vue?vue&type=style&index=0&id=3f5170e8&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=1f8d633e&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!./ElementPositionPanel.vue?vue&type=style&index=0&id=08d61819&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ElementColorMask.vue?vue&type=style&index=0&id=7e9086fc&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ShapeItemThumbnail.vue?vue&type=style&index=0&id=09653543&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=f770d810&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=92a8f63e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./AudioStylePanel.vue?vue&type=style&index=0&id=1da06c97&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./LinkDialog.vue?vue&type=style&index=0&id=469f9b66&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=527855fb&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=c4273212&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./ShapePool.vue?vue&type=style&index=0&id=711a4fb1&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=0cc0995e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./App.vue?vue&type=style&index=0&id=685e8c72&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=17dcff2c&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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!./SlideDesignPanel.vue?vue&type=style&index=0&id=41419138&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=018847a8&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=0ca152b4&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./MultiPositionPanel.vue?vue&type=style&index=0&id=c88d31ba&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=9b75a3bc&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=1d6d026a&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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!./ElementFlip.vue?vue&type=style&index=0&id=1b5a047e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./index.vue?vue&type=style&index=0&id=ed562e98&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./CountdownTimer.vue?vue&type=style&index=0&id=5a82de11&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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!./ElementToolbar.vue?vue&type=style&index=0&id=2633262b&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=49642f50&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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!./StaticTable.vue?vue&type=style&index=0&id=40e73d4e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=486128e0&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=7ba4b56c&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=8fd9f34c&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=76222f8e&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/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=3e9669a9&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=9be58c0a&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=963e3dfc&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=3d280c42&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./MobileThumbnails.vue?vue&type=style&index=0&id=e594aa30&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=097b396c&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=12300fd5&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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 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 { 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: readonly Mark[], markType: string, attr: string): string | null => {\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: readonly 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\ntype Align = 'left' | 'right' | 'center'\n\ninterface DefaultAttrs {\n color: string\n backcolor: string\n fontsize: string\n fontname: string\n align: Align\n}\nconst _defaultAttrs: DefaultAttrs = {\n color: '#000',\n backcolor: '',\n fontsize: '20px',\n fontname: '微软雅黑',\n align: 'left',\n}\nexport const getTextAttrs = (view: EditorView, attrs: Partial = {}) => {\n const defaultAttrs: DefaultAttrs = { ..._defaultAttrs, ...attrs }\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) as 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: '',\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, TextFormatPainter } 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 hiddenElementIdList: string[]\n canvasPercentage: number\n canvasScale: number\n canvasDragged: boolean\n thumbnailsFocus: boolean\n editorAreaFocus: boolean\n disableHotkeys: boolean\n gridLineSize: number\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 textFormatPainter: TextFormatPainter | null\n showSelectPanel: boolean\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 hiddenElementIdList: [], // 被隐藏的元素ID集合\n canvasPercentage: 90, // 画布可视区域百分比\n canvasScale: 1, // 画布缩放比例(基于宽度1000px)\n canvasDragged: false, // 画布被拖拽移动\n thumbnailsFocus: false, // 左侧导航缩略图区域聚焦\n editorAreaFocus: false, // 编辑区域聚焦\n disableHotkeys: false, // 禁用快捷键\n gridLineSize: 0, // 网格线尺寸(0表示不显示网格线)\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 textFormatPainter: null, // 文字格式刷\n showSelectPanel: false, // 打开选择面板\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 setHiddenElementIdList(hiddenElementIdList: string[]) {\n this.hiddenElementIdList = hiddenElementIdList\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 setGridLineSize(size: number) {\n this.gridLineSize = size\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 setTextFormatPainter(textFormatPainter: TextFormatPainter | null) {\n this.textFormatPainter = textFormatPainter\n },\n\n setSelectPanelState(show: boolean) {\n this.showSelectPanel = show\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 writingBoardImg {\n id: string\n dataURL: string\n}\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 public writingBoardImgs: Dexie.Table\n\n public constructor() {\n super(`${databaseNamePrefix}_${databaseId}_${new Date().getTime()}`)\n this.version(1).stores({\n snapshots: '++id',\n writingBoardImgs: '++id',\n })\n this.snapshots = this.table('snapshots')\n this.writingBoardImgs = this.table('writingBoardImgs')\n }\n}\n\nexport const db = new PPTistDB()","import { defineStore } from 'pinia'\nimport { IndexableTypeArray } from 'dexie'\nimport { db, Snapshot } from '@/utils/database'\n\nimport { useSlidesStore } from './slides'\nimport { useMainStore } from './main'\n\nexport interface ScreenState {\n snapshotCursor: number\n snapshotLength: number\n}\n\nexport const useSnapshotStore = defineStore('snapshot', {\n state: (): ScreenState => ({\n snapshotCursor: -1, // 历史快照指针\n snapshotLength: 0, // 历史快照长度\n }),\n\n getters: {\n canUndo(state) {\n return state.snapshotCursor > 0\n },\n canRedo(state) {\n return state.snapshotCursor < state.snapshotLength - 1\n },\n },\n\n actions: {\n setSnapshotCursor(cursor: number) {\n this.snapshotCursor = cursor\n },\n setSnapshotLength(length: number) {\n this.snapshotLength = length\n },\n\n async initSnapshotDatabase() {\n const slidesStore = useSlidesStore()\n \n const 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 { 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 vertical?: boolean\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\r\n\r\nexport interface TextFormatPainter {\r\n bold?: boolean\r\n em?: boolean\r\n underline?: boolean\r\n strikethrough?: boolean\r\n color?: string\r\n backcolor?: string\r\n fontsize?: string\r\n fontname?: string\r\n align?: 'left' | 'right' | 'center'\r\n}","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 ],\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 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, Slide } 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 * @param slides 页面列表\r\n */\r\nexport const createSlideIdMap = (slides: Slide[]) => {\r\n const slideIdMap = {}\r\n for (const slide of slides) {\r\n slideIdMap[slide.id] = nanoid(10)\r\n }\r\n return slideIdMap\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 { BarChartOptions, LineChartOptions, PieChartOptions } 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 CUT_ROUND_RECT = 'cutRoundRect',\n MESSAGE = 'message',\n ROUND_MESSAGE = 'roundMessage',\n L = 'L',\n RING_RECT = 'ringRect',\n PLUS = 'plus',\n TRIANGLE = 'triangle',\n PARALLELOGRAM_LEFT = 'parallelogramLeft',\n PARALLELOGRAM_RIGHT = 'parallelogramRight',\n TRAPEZOID = 'trapezoid',\n BULLET = 'bullet',\n INDICATOR = 'indicator',\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 * \n * name?: 元素名\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 name?: string\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 * \n * vertical?: 竖向文本\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 vertical?: boolean\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 * color: 蒙版颜色\n * \n * opacity: 蒙版透明度\n */\nexport interface ImageColorElementMask {\n color: string\n opacity: number\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 colorMask?: ImageColorElementMask\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 * \n * keypoint?: 关键点位置百分比\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 keypoint?: number\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 * cubic?: 三次曲线控制点位置([[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 = LineChartOptions & BarChartOptions & PieChartOptions\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 * cellMinHeight: 单元格最小高度\n * \n * data: 表格数据\n */\nexport interface PPTTableElement extends PPTBaseElement {\n type: 'table'\n outline: PPTElementOutline\n theme?: TableTheme\n colWidths: number[]\n cellMinHeight: 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}\n","// 非专业设计人士可以用该应用绘制基本形状:https://github.com/pipipi-pikachu/svgPathCreator\n\nimport { 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]: {\n editable: true,\n defaultValue: 0.125,\n range: [0, 0.5],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\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 },\n [ShapePathFormulasKeys.CUT_RECT_DIAGONAL]: {\n editable: true,\n defaultValue: 0.2,\n range: [0, 0.9],\n relative: 'right',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\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 },\n [ShapePathFormulasKeys.CUT_RECT_SINGLE]: {\n editable: true,\n defaultValue: 0.2,\n range: [0, 0.9],\n relative: 'right',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\n return `M 0 ${height} L 0 0 L ${width - radius} 0 L ${width} ${radius} L ${width} ${height} Z`\n }\n },\n [ShapePathFormulasKeys.CUT_RECT_SAMESIDE]: {\n editable: true,\n defaultValue: 0.2,\n range: [0, 0.5],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\n return `M 0 ${radius} L ${radius} 0 L ${width - radius} 0 L ${width} ${radius} L ${width} ${height} L 0 ${height} Z`\n }\n },\n [ShapePathFormulasKeys.ROUND_RECT_DIAGONAL]: {\n editable: true,\n defaultValue: 0.125,\n range: [0, 1],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\n return `M ${radius} 0 L ${width} 0 L ${width} ${height - radius} Q ${width} ${height} ${width - radius} ${height} L 0 ${height} L 0 ${radius} Q 0 0 ${radius} 0 Z`\n }\n },\n [ShapePathFormulasKeys.ROUND_RECT_SINGLE]: {\n editable: true,\n defaultValue: 0.125,\n range: [0, 1],\n relative: 'right',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\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 },\n [ShapePathFormulasKeys.ROUND_RECT_SAMESIDE]: {\n editable: true,\n defaultValue: 0.125,\n range: [0, 0.5],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\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 },\n [ShapePathFormulasKeys.CUT_ROUND_RECT]: {\n editable: true,\n defaultValue: 0.125,\n range: [0, 0.5],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\n return `M ${radius} 0 L ${width - radius} 0 L ${width} ${radius} L ${width} ${height} L 0 ${height} L 0 ${radius} Q 0 0 ${radius} 0 Z`\n }\n },\n [ShapePathFormulasKeys.MESSAGE]: {\n formula: (width: number, height: number) => {\n const arrowWidth = width * 0.2\n const arrowheight = height * 0.2\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 },\n [ShapePathFormulasKeys.ROUND_MESSAGE]: {\n formula: (width: number, height: number) => {\n const radius = Math.min(width, height) * 0.125\n const arrowWidth = width * 0.2\n const arrowheight = height * 0.2\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 },\n [ShapePathFormulasKeys.L]: {\n editable: true,\n defaultValue: 0.25,\n range: [0.1, 0.9],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const lineWidth = Math.min(width, height) * value\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 },\n [ShapePathFormulasKeys.RING_RECT]: {\n editable: true,\n defaultValue: 0.25,\n range: [0.1, 0.45],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const lineWidth = Math.min(width, height) * value\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 },\n [ShapePathFormulasKeys.PLUS]: {\n editable: true,\n defaultValue: 0.25,\n range: [0.1, 0.9],\n relative: 'center',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const lineWidth = Math.min(width, height) * value\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 [ShapePathFormulasKeys.TRIANGLE]: {\n editable: true,\n defaultValue: 0.5,\n range: [0, 1],\n relative: 'left',\n getBaseSize: (width: number, height: number) => width,\n formula: (width: number, height: number, value: number) => {\n const vertex = width * value\n return `M ${vertex} 0 L 0 ${height} L ${width} ${height} Z`\n }\n },\n [ShapePathFormulasKeys.PARALLELOGRAM_LEFT]: {\n editable: true,\n defaultValue: 0.25,\n range: [0, 0.9],\n relative: 'left',\n getBaseSize: (width: number, height: number) => width,\n formula: (width: number, height: number, value: number) => {\n const point = width * value\n return `M ${point} 0 L ${width} 0 L ${width - point} ${height} L 0 ${height} Z`\n }\n },\n [ShapePathFormulasKeys.PARALLELOGRAM_RIGHT]: {\n editable: true,\n defaultValue: 0.25,\n range: [0, 0.9],\n relative: 'right',\n getBaseSize: (width: number, height: number) => width,\n formula: (width: number, height: number, value: number) => {\n const point = width * value\n return `M 0 0 L ${width - point} 0 L ${width} ${height} L ${point} ${height} Z`\n }\n },\n [ShapePathFormulasKeys.TRAPEZOID]: {\n editable: true,\n defaultValue: 0.25,\n range: [0, 0.5],\n relative: 'left',\n getBaseSize: (width: number, height: number) => width,\n formula: (width: number, height: number, value: number) => {\n const point = width * value\n return `M ${point} 0 L ${width - point} 0 L ${width} ${height} L 0 ${height} Z`\n }\n },\n [ShapePathFormulasKeys.BULLET]: {\n editable: true,\n defaultValue: 0.2,\n range: [0, 1],\n relative: 'top',\n getBaseSize: (width: number, height: number) => height,\n formula: (width: number, height: number, value: number) => {\n const point = height * value\n return `M ${width / 2} 0 L 0 ${point} L 0 ${height} L ${width} ${height} L ${width} ${point} Z`\n }\n },\n [ShapePathFormulasKeys.INDICATOR]: {\n editable: true,\n defaultValue: 0.2,\n range: [0, 0.9],\n relative: 'right',\n getBaseSize: (width: number, height: number) => width,\n formula: (width: number, height: number, value: number) => {\n const point = width * value\n return `M ${width} ${height / 2} L ${width - point} 0 L 0 0 L ${point} ${height / 2} L 0 ${height} L ${width - point} ${height} Z`\n }\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 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 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 50 0 L 150 0 L 200 50 L 200 200 L 0 200 L 0 50 Q 0 0 50 0 Z',\n pathFormula: ShapePathFormulasKeys.CUT_ROUND_RECT,\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 viewBox: [200, 200],\n path: 'M 50 0 L 200 0 L 200 150 Q 200 200 150 200 L 0 200 L 0 50 Q 0 0 50 0 Z',\n pathFormula: ShapePathFormulasKeys.ROUND_RECT_DIAGONAL,\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 100 0 L 0 200 L 200 200 L 100 0 Z',\n pathFormula: ShapePathFormulasKeys.TRIANGLE,\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 70 20 L 0 160 Q 0 200 40 200 L 160 200 Q 200 200 200 160 L 130 20 Q 100 -20 70 20 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 pathFormula: ShapePathFormulasKeys.PARALLELOGRAM_LEFT,\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 pathFormula: ShapePathFormulasKeys.PARALLELOGRAM_RIGHT,\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 pathFormula: ShapePathFormulasKeys.TRAPEZOID,\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 50 L 0 200 L 200 200 L 200 50 L 100 0 Z',\n pathFormula: ShapePathFormulasKeys.BULLET,\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 pathFormula: ShapePathFormulasKeys.INDICATOR,\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 C 80 20 120 20 200 0 C 180 80 180 120 200 200 C 80 180 120 180 0 200 C 20 120 20 80 0 0 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 10 10 C 60 0 140 0 190 10 C 200 60 200 140 190 190 C 140 200 60 200 10 190 C 0 140 0 60 10 10 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 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 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 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 120 80 L 200 100 L 120 120 L 100 200 L 80 120 L 0 100 L 80 80 L 100 0 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 140 60 L 200 60 L 160 100 L 200 140 L 140 140 L 100 200 L 60 140 L 0 140 L 40 100 L 0 60 L 60 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 viewBox: [200, 200],\n path: 'M 200 0 C 80 40 80 160 200 200 C -60 200 -60 0 200 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 cellMinHeight: 36,\n })\n }\n \n /**\n * 创建文本元素\n * @param position 位置大小信息\n * @param content 文本内容\n */\n \n interface CreateTextData {\n content?: string\n vertical?: boolean\n }\n const createTextElement = (position: CommonElementPosition, data?: CreateTextData) => {\n const { left, top, width, height } = position\n const content = data?.content || ''\n const vertical = data?.vertical || false\n\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 vertical,\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\n const pathFormula = SHAPE_PATH_FORMULAS[data.pathFormula]\n if ('editable' in pathFormula) {\n newElement.path = pathFormula.formula(width, height, pathFormula.defaultValue)\n newElement.keypoint = pathFormula.defaultValue\n }\n else newElement.path = pathFormula.formula(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 { createSlideIdMap, 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 slideIdMap = createSlideIdMap(slides)\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\t\t\n // 若元素绑定了页面跳转链接\n if (element.link && element.link.type === 'slide') {\n\n // 待添加页面中包含该页面,则替换相关绑定关系\n if (slideIdMap[element.link.target]) {\n element.link.target = slideIdMap[element.link.target]\n }\n // 待添加页面中不包含该页面,则删除该元素绑定的页面跳转\n else delete element.link\n }\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: slideIdMap[slide.id],\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 }, { content: 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 // 拖拽调整幻灯片顺序同步数据\n const sortSlides = (newIndex: number, oldIndex: number) => {\n if (oldIndex === newIndex) return\n \n const _slides = JSON.parse(JSON.stringify(slides.value))\n const _slide = _slides[oldIndex]\n _slides.splice(oldIndex, 1)\n _slides.splice(newIndex, 0, _slide)\n slidesStore.setSlides(_slides)\n slidesStore.updateSlideIndex(newIndex)\n }\n\n return {\n resetSlides,\n updateSlideIndex,\n copySlide,\n pasteSlide,\n createSlide,\n createSlideByTemplate,\n copyAndPasteSlide,\n deleteSlide,\n cutSlide,\n selectAllSlide,\n sortSlides,\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 const { hiddenElementIdList } = storeToRefs(mainStore)\r\n\r\n // 将当前页面全部元素设置为被选择状态\r\n const selectAllElement = () => {\r\n const unlockedElements = currentSlide.value.elements.filter(el => !el.lock && !hiddenElementIdList.value.includes(el.id))\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}","import { AST, ElementAST, ElementAttribute } from './types'\nimport { voidTags } from './tags'\n\nexport const formatAttributes = (attributes: ElementAttribute[]) => {\n return attributes.reduce((attrs, attribute) => {\n const { key, value } = attribute\n if (value === null) return `${attrs} ${key}`\n if (key === 'style' && !value) return ''\n\n const quoteEscape = value.indexOf('\\'') !== -1\n const quote = quoteEscape ? '\"' : '\\''\n return `${attrs} ${key}=${quote}${value}${quote}`\n }, '')\n}\n\nexport const toHTML = (tree: AST[]) => {\n const htmlStrings: string[] = tree.map(node => {\n if (node.type === 'text') return node.content\n if (node.type === 'comment') return ``\n\n const { tagName, attributes, children } = node as ElementAST\n const isSelfClosing = voidTags.includes(tagName.toLowerCase())\n\n if (isSelfClosing) return `<${tagName}${formatAttributes(attributes)}>`\n return `<${tagName}${formatAttributes(attributes)}>${toHTML(children)}`\n })\n return htmlStrings.join('')\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\nconst INCH_PX_RATIO = 100\nconst PT_PX_RATIO = 0.75\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']) * PT_PX_RATIO\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 * PT_PX_RATIO }\n options.paraSpaceBefore = 0.1\n bulletFlag = false\n }\n if (bulletFlag && styleObj['list-type'] === 'ul') {\n options.bullet = { indent: 20 * PT_PX_RATIO }\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 / INCH_PX_RATIO * scale.x,\n y: point.y / INCH_PX_RATIO * scale.y,\n moveTo: true,\n }\n }\n else if (point.curve) {\n if (point.curve.type === 'cubic') {\n return {\n x: point.x / INCH_PX_RATIO * scale.x,\n y: point.y / INCH_PX_RATIO * scale.y,\n curve: {\n type: 'cubic',\n x1: (point.curve.x1 as number) / INCH_PX_RATIO * scale.x,\n y1: (point.curve.y1 as number) / INCH_PX_RATIO * scale.y,\n x2: (point.curve.x2 as number) / INCH_PX_RATIO * scale.x,\n y2: (point.curve.y2 as number) / INCH_PX_RATIO * scale.y,\n },\n }\n }\n else if (point.curve.type === 'quadratic') {\n return {\n x: point.x / INCH_PX_RATIO * scale.x,\n y: point.y / INCH_PX_RATIO * scale.y,\n curve: {\n type: 'quadratic',\n x1: (point.curve.x1 as number) / INCH_PX_RATIO * scale.x,\n y1: (point.curve.y1 as number) / INCH_PX_RATIO * scale.y,\n },\n }\n }\n }\n return {\n x: point.x / INCH_PX_RATIO * scale.x,\n y: point.y / INCH_PX_RATIO * 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 * PT_PX_RATIO,\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) * PT_PX_RATIO, \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 if (viewportRatio.value === 0.70710678) {\n pptx.defineLayout({ name: 'A3', width: 10, height: 7.0710678 })\n pptx.layout = 'A3'\n }\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 / INCH_PX_RATIO,\n y: el.top / INCH_PX_RATIO,\n w: el.width / INCH_PX_RATIO,\n h: el.height / INCH_PX_RATIO,\n fontSize: 20 * PT_PX_RATIO,\n fontFace: '微软雅黑',\n color: '#000000',\n valign: 'top',\n margin: 10 * PT_PX_RATIO,\n paraSpaceBefore: 5 * PT_PX_RATIO,\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 * PT_PX_RATIO\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 * PT_PX_RATIO\n if (el.vertical) options.vert = 'eaVert'\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 / INCH_PX_RATIO,\n y: el.top / INCH_PX_RATIO,\n w: el.width / INCH_PX_RATIO,\n h: el.height / INCH_PX_RATIO,\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) / INCH_PX_RATIO)\n const originH = el.height / ((endY - startY) / INCH_PX_RATIO)\n\n options.w = originW / INCH_PX_RATIO\n options.h = originH / INCH_PX_RATIO\n\n options.sizing = {\n type: 'crop',\n x: startX / INCH_PX_RATIO * originW / INCH_PX_RATIO,\n y: startY / INCH_PX_RATIO * originH / INCH_PX_RATIO,\n w: (endX - startX) / INCH_PX_RATIO * originW / INCH_PX_RATIO,\n h: (endY - startY) / INCH_PX_RATIO * originH / INCH_PX_RATIO,\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 / INCH_PX_RATIO,\n y: el.top / INCH_PX_RATIO,\n w: el.width / INCH_PX_RATIO,\n h: el.height / INCH_PX_RATIO,\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 / INCH_PX_RATIO,\n y: el.top / INCH_PX_RATIO,\n w: el.width / INCH_PX_RATIO,\n h: el.height / INCH_PX_RATIO,\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 / INCH_PX_RATIO,\n y: el.top / INCH_PX_RATIO,\n w: el.width / INCH_PX_RATIO,\n h: el.height / INCH_PX_RATIO,\n fontSize: 20 * PT_PX_RATIO,\n fontFace: '微软雅黑',\n color: '#000000',\n paraSpaceBefore: 5 * PT_PX_RATIO,\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 / INCH_PX_RATIO,\n y: el.top / INCH_PX_RATIO,\n w: (maxX - minX) / INCH_PX_RATIO,\n h: (maxY - minY) / INCH_PX_RATIO,\n line: {\n color: c.color, \n transparency: (1 - c.alpha) * 100,\n width: el.width * PT_PX_RATIO, \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 / INCH_PX_RATIO,\n y: el.top / INCH_PX_RATIO,\n w: el.width / INCH_PX_RATIO,\n h: el.height / INCH_PX_RATIO,\n chartColors: el.chartType === 'pie' ? chartColors : chartColors.slice(0, el.data.series.length),\n }\n\n if (el.fill) options.plotArea = { fill: { color: 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 * PT_PX_RATIO\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) * PT_PX_RATIO,\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 / INCH_PX_RATIO,\n y: el.top / INCH_PX_RATIO,\n w: el.width / INCH_PX_RATIO,\n h: el.height / INCH_PX_RATIO,\n colW: el.colWidths.map(item => el.width * item / INCH_PX_RATIO),\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 * PT_PX_RATIO,\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 / INCH_PX_RATIO,\n y: el.top / INCH_PX_RATIO,\n w: el.width / INCH_PX_RATIO,\n h: el.height / INCH_PX_RATIO,\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\n setTimeout(() => {\n pptx.writeFile({ fileName: `pptist.pptx` }).then(() => exporting.value = false).catch(() => {\n exporting.value = false\n message.error('导出失败')\n })\n }, 200)\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 { 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-cdb026e2\"),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\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=cdb026e2&lang=scss&scoped=true\"\n\nimport exportComponent 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-cdb026e2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, unref as _unref, withCtx as _withCtx, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-76222f8e\"),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__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"text\" }, \"文件\", -1))\nconst _hoisted_5 = { class: \"menu-item\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"text\" }, \"编辑\", -1))\nconst _hoisted_7 = { class: \"menu-item\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"text\" }, \"演示\", -1))\nconst _hoisted_9 = { class: \"menu-item\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"text\" }, \"帮助\", -1))\nconst _hoisted_11 = { class: \"right\" }\nconst _hoisted_12 = {\n href: \"https://github.com/pipipi-pikachu/PPTist\",\n target: \"_blank\"\n}\nconst _hoisted_13 = { 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'\nimport FileInput from '@/components/FileInput.vue'\nimport {\n Tooltip,\n Dropdown,\n Menu,\n Drawer,\n} from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst MenuItem = Menu.Item\n\nconst mainStore = useMainStore()\nconst { gridLineSize, showRuler, showSelectPanel } = 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.setGridLineSize(gridLineSize.value ? 0 : 50)\n}\n\nconst toggleRuler = () => {\n mainStore.setRulerState(!showRuler.value)\n}\n\nconst openSelectPanel = () => {\n if (!showSelectPanel.value) mainStore.setSelectPanelState(true)\n else mainStore.setSelectPanelState(false)\n}\n\nconst hotkeyDrawerVisible = ref(false)\n\nconst goLink = (url: string) => window.open(url)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconFolderClose = _resolveComponent(\"IconFolderClose\")!\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_IconGithub = _resolveComponent(\"IconGithub\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_unref(Dropdown), { trigger: ['click'] }, {\n overlay: _withCtx(() => [\n _createVNode(_unref(Menu), null, {\n default: _withCtx(() => [\n _createVNode(FileInput, {\n accept: \".pptist\",\n onChange: _cache[0] || (_cache[0] = files => _unref(importSpecificFile)(files))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(MenuItem), null, {\n default: _withCtx(() => [\n _createTextVNode(\"导入 pptist 文件\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_unref(MenuItem), {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_unref(setDialogForExport)('pptx')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"导出文件\")\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_IconFolderClose),\n _createTextVNode(),\n _hoisted_4\n ])\n ]),\n _: 1\n }),\n _createVNode(_unref(Dropdown), { trigger: ['click'] }, {\n overlay: _withCtx(() => [\n _createVNode(_unref(Menu), null, {\n default: _withCtx(() => [\n _createVNode(_unref(MenuItem), {\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_unref(undo)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"撤销\")\n ]),\n _: 1\n }),\n _createVNode(_unref(MenuItem), {\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_unref(redo)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"重做\")\n ]),\n _: 1\n }),\n _createVNode(_unref(MenuItem), {\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_unref(createSlide)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"添加页面\")\n ]),\n _: 1\n }),\n _createVNode(_unref(MenuItem), {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_unref(deleteSlide)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"删除页面\")\n ]),\n _: 1\n }),\n _createVNode(_unref(MenuItem), {\n onClick: _cache[6] || (_cache[6] = ($event: any) => (toggleGridLines()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(gridLineSize) ? '关闭网格线' : '打开网格线'), 1)\n ]),\n _: 1\n }),\n _createVNode(_unref(MenuItem), {\n onClick: _cache[7] || (_cache[7] = ($event: any) => (toggleRuler()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(showRuler) ? '关闭标尺' : '打开标尺'), 1)\n ]),\n _: 1\n }),\n _createVNode(_unref(MenuItem), {\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_unref(resetSlides)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"重置幻灯片\")\n ]),\n _: 1\n }),\n _createVNode(_unref(MenuItem), {\n onClick: _cache[9] || (_cache[9] = ($event: any) => (openSelectPanel()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(showSelectPanel) ? '关闭选择面板' : '打开选择面板'), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_component_IconEdit),\n _createTextVNode(),\n _hoisted_6\n ])\n ]),\n _: 1\n }),\n _createVNode(_unref(Dropdown), { trigger: ['click'] }, {\n overlay: _withCtx(() => [\n _createVNode(_unref(Menu), null, {\n default: _withCtx(() => [\n _createVNode(_unref(MenuItem), {\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_unref(enterScreeningFromStart)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"从头开始\")\n ]),\n _: 1\n }),\n _createVNode(_unref(MenuItem), {\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_unref(enterScreening)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"从当前页开始\")\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(_component_IconPpt),\n _createTextVNode(),\n _hoisted_8\n ])\n ]),\n _: 1\n }),\n _createVNode(_unref(Dropdown), { trigger: ['click'] }, {\n overlay: _withCtx(() => [\n _createVNode(_unref(Menu), null, {\n default: _withCtx(() => [\n _createVNode(_unref(MenuItem), {\n onClick: _cache[12] || (_cache[12] = ($event: any) => (goLink('https://github.com/pipipi-pikachu/PPTist/issues')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"意见反馈\")\n ]),\n _: 1\n }),\n _createVNode(_unref(MenuItem), {\n onClick: _cache[13] || (_cache[13] = ($event: any) => (goLink('https://github.com/pipipi-pikachu/PPTist/blob/master/doc/Q&A.md')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"常见问题\")\n ]),\n _: 1\n }),\n _createVNode(_unref(MenuItem), {\n onClick: _cache[14] || (_cache[14] = ($event: any) => (hotkeyDrawerVisible.value = true))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"快捷键\")\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_9, [\n _createVNode(_component_IconHelpcenter),\n _createTextVNode(),\n _hoisted_10\n ])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n title: \"导出\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"menu-item\",\n onClick: _cache[15] || (_cache[15] = ($event: any) => (_unref(setDialogForExport)('pptx')))\n }, [\n _createVNode(_component_IconShare, {\n size: \"18\",\n fill: \"#666\"\n })\n ])\n ]),\n _: 1\n }),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n title: \"幻灯片放映\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"menu-item\",\n onClick: _cache[16] || (_cache[16] = ($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_12, [\n _createElementVNode(\"div\", _hoisted_13, [\n _createVNode(_component_IconGithub, {\n size: \"18\",\n fill: \"#666\"\n })\n ])\n ])\n ]),\n _createVNode(_unref(Drawer), {\n width: \"320\",\n placement: \"right\",\n closable: false,\n visible: hotkeyDrawerVisible.value,\n onClose: _cache[17] || (_cache[17] = ($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=76222f8e&lang=scss&scoped=true\"\n\nimport exportComponent 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-76222f8e\"]])\n\nexport default __exports__","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 initViewportPosition = () => {\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 const setViewportPosition = (newValue: number, oldValue: number) => {\n if (!canvasRef.value) return\n const canvasWidth = canvasRef.value.clientWidth\n const canvasHeight = canvasRef.value.clientHeight\n\n const newViewportActualWidth = canvasWidth * (newValue / 100)\n const oldViewportActualWidth = canvasWidth * (oldValue / 100)\n const newViewportActualHeight = canvasHeight * (newValue / 100)\n const oldViewportActualHeight = canvasHeight * (oldValue / 100)\n\n if (canvasHeight / canvasWidth > viewportRatio.value) {\n mainStore.setCanvasScale(newViewportActualWidth / VIEWPORT_SIZE)\n }\n else {\n mainStore.setCanvasScale(newViewportActualHeight / (VIEWPORT_SIZE * viewportRatio.value))\n }\n viewportLeft.value = viewportLeft.value - (newViewportActualWidth - oldViewportActualWidth) / 2\n viewportTop.value = viewportTop.value - (newViewportActualHeight - oldViewportActualHeight) / 2\n }\n\n // 可视区域缩放或比例变化时,重置/更新可视区域的位置\n watch(canvasPercentage, setViewportPosition)\n watch(viewportRatio, initViewportPosition)\n\n // 画布拖拽状态改变(复原)时,重置可视区域的位置\n watch(canvasDragged, () => {\n if (!canvasDragged.value) initViewportPosition()\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(initViewportPosition)\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, hiddenElementIdList } = 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 && !hiddenElementIdList.value.includes(element.id)) 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 }, { content: 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 latex: '公式',\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 latex: 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 originTableCellMinHeight = element.type === 'table' ? element.cellMinHeight : 0\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 const pathFormula = SHAPE_PATH_FORMULAS[el.pathFormula]\n\n let path = ''\n if ('editable' in pathFormula) path = pathFormula.formula(width, height, el.keypoint!)\n else path = pathFormula.formula(width, height)\n\n return {\n ...el, left, top, width, height,\n viewBox: [width, height],\n path,\n }\n }\n if (el.type === 'table') {\n let cellMinHeight = originTableCellMinHeight + (height - elOriginHeight) / el.data.length\n cellMinHeight = cellMinHeight < 36 ? 36 : cellMinHeight\n\n if (cellMinHeight === originTableCellMinHeight) return { ...el, left, width }\n return {\n ...el, left, top, width, height,\n cellMinHeight: cellMinHeight < 36 ? 36 : cellMinHeight,\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}","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: '10px',\n style: 'inset(0 0 0 0 round 10px 10px 10px 10px)',\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 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 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 heptagon: {\n name: '七边形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(50% 0%, 90% 20%, 100% 60%, 75% 100%, 25% 100%, 0% 60%, 10% 20%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.5} 0 L ${width * 0.9} ${height * 0.2} L ${width} ${height * 0.6} L ${width * 0.75} ${height} L ${width * 0.25} ${height} L 0 ${height * 0.6} L ${width * 0.1} ${height * 0.2} Z`\n },\n },\n octagon: {\n name: '八边形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(30% 0%, 70% 0%, 100% 30%, 100% 70%, 70% 100%, 30% 100%, 0% 70%, 0% 30%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.3} 0 L ${width * 0.7} 0 L ${width} ${height * 0.3} L ${width} ${height * 0.7} L ${width * 0.7} ${height} L ${width * 0.3} ${height} L 0 ${height * 0.7} L 0 ${height * 0.3} Z`\n },\n },\n chevron: {\n name: 'V形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(75% 0%, 100% 50%, 75% 100%, 0% 100%, 25% 50%, 0% 0%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.75} 0 L ${width} ${height * 0.5} L ${width * 0.75} ${height} L 0 ${height} L ${width * 0.25} ${height * 0.5} L 0 0 Z`\n },\n },\n point: {\n name: '点',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(0% 0%, 75% 0%, 100% 50%, 75% 100%, 0% 100%)',\n createPath: (width: number, height: number) => {\n return `M 0 0 L ${width * 0.75} 0 L ${width} ${height * 0.5} L ${width * 0.75} ${height} L 0 ${height} Z`\n },\n },\n arrow: {\n name: '箭头',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(0% 20%, 60% 20%, 60% 0%, 100% 50%, 60% 100%, 60% 80%, 0% 80%)',\n createPath: (width: number, height: number) => {\n return `M 0 ${height * 0.2} L ${width * 0.6} ${height * 0.2} L ${width * 0.6} 0 L ${width} ${height * 0.5} L ${width * 0.6} ${height} L ${width * 0.6} ${height * 0.8} L 0 ${height * 0.8} 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 { 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 return {\n selectElement,\n }\n}\n","import { Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore, useKeyboardStore } 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 { shiftKeyState } = storeToRefs(useKeyboardStore())\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 let moveX = (currentPageX - startPageX) / canvasScale.value\n let moveY = (currentPageY - startPageY) / canvasScale.value\n\n if (shiftKeyState.value) {\n if (Math.abs(moveX) > Math.abs(moveY)) moveY = 0\n if (Math.abs(moveX) < Math.abs(moveY)) moveX = 0\n }\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 { useSlidesStore } from '@/store'\nimport { PPTElement, PPTShapeElement } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport { SHAPE_PATH_FORMULAS } from '@/configs/shapes'\n\ninterface ShapePathData {\n baseSize: number,\n originPos: number,\n min: number,\n max: number,\n relative: string,\n}\n\nexport default (\n elementList: Ref,\n canvasScale: Ref,\n) => {\n const slidesStore = useSlidesStore()\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const moveShapeKeypoint = (e: MouseEvent | TouchEvent, element: PPTShapeElement) => {\n const isTouchEvent = !(e instanceof MouseEvent)\n if (isTouchEvent && (!e.changedTouches || !e.changedTouches[0])) return\n\n let isMouseDown = true\n \n const startPageX = isTouchEvent ? e.changedTouches[0].pageX : e.pageX\n const startPageY = isTouchEvent ? e.changedTouches[0].pageY : e.pageY\n\n const pathFormula = SHAPE_PATH_FORMULAS[element.pathFormula!]\n let shapePathData: ShapePathData | null = null\n if ('editable' in pathFormula) {\n const baseSize = pathFormula.getBaseSize(element.width, element.height)\n const originPos = baseSize * element.keypoint!\n const [min, max] = pathFormula.range\n const relative = pathFormula.relative\n\n shapePathData = { baseSize, originPos, min, max, relative }\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 const moveX = (currentPageX - startPageX) / canvasScale.value\n const moveY = (currentPageY - startPageY) / canvasScale.value\n\n elementList.value = elementList.value.map(el => {\n if (el.id === element.id && shapePathData) {\n const { baseSize, originPos, min, max, relative } = shapePathData\n const shapeElement = el as PPTShapeElement\n\n let keypoint = 0\n\n if (relative === 'left') keypoint = (originPos + moveX) / baseSize\n if (relative === 'right') keypoint = (originPos - moveX) / baseSize\n if (relative === 'center') keypoint = (originPos - moveX * 2) / baseSize\n if (relative === 'top') keypoint = (originPos + moveY) / baseSize\n if (relative === 'bottom') keypoint = (originPos - moveY) / baseSize\n\n if (keypoint < min) keypoint = min\n if (keypoint > max) keypoint = max\n\n return {\n ...el,\n keypoint,\n path: pathFormula.formula(shapeElement.width, shapeElement.height, keypoint),\n }\n }\n return el\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 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 moveShapeKeypoint,\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, { vertical: creatingElement.value.vertical })\n }\n else if (type === 'shape') {\n const position = formatCreateSelection(selectionData)\n position && createShapeElement(position, creatingElement.value.data)\n }\n else if (type === 'line') {\n const position = formatCreateSelectionForLine(selectionData)\n position && createLineElement(position, creatingElement.value.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, createElementBlock as _createElementBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-963e3dfc\"),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 (__props.elementInfo.colorMask)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"color-mask\",\n style: _normalizeStyle({\n backgroundColor: __props.elementInfo.colorMask.color,\n opacity: __props.elementInfo.colorMask.opacity,\n })\n }, null, 4))\n : _createCommentVNode(\"\", true)\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=963e3dfc&lang=scss&scoped=true\"\n\nimport exportComponent 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-963e3dfc\"]])\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 { splitListItem, liftListItem, sinkListItem } from 'prosemirror-schema-list'\nimport { Schema } from 'prosemirror-model'\nimport { undo, redo } from 'prosemirror-history'\nimport { undoInputRule } from 'prosemirror-inputrules'\nimport { Command } from 'prosemirror-state'\nimport {\n toggleMark,\n selectParentNode,\n joinUp,\n joinDown,\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 { listItem as _listItem } from 'prosemirror-schema-list'\n\nconst orderedList: NodeSpec = {\n attrs: {\n order: {\n default: 1,\n },\n listStyleType: {\n default: '',\n },\n },\n content: 'list_item+',\n group: 'block',\n parseDOM: [\n { \n tag: 'ol', \n getAttrs: dom => {\n const order = ((dom as HTMLElement).hasAttribute('start') ? (dom as HTMLElement).getAttribute('start') : 1) || 1\n const attr = { order: +order }\n\n const { listStyleType } = (dom as HTMLElement).style\n if (listStyleType) attr['listStyleType'] = listStyleType\n\n return attr\n }\n }\n ],\n toDOM: (node: Node) => {\n const { order, listStyleType } = node.attrs\n let style = ''\n if (listStyleType) style += `list-style-type: ${listStyleType};`\n\n const attr = { style }\n if (order !== 1) attr['start'] = order\n\n\n return ['ol', attr, 0]\n },\n}\n\nconst bulletList: NodeSpec = {\n attrs: {\n listStyleType: {\n default: '',\n },\n },\n content: 'list_item+',\n group: 'block',\n parseDOM: [\n {\n tag: 'ul',\n getAttrs: dom => {\n const { listStyleType } = (dom as HTMLElement).style\n return listStyleType ? { listStyleType } : {}\n }\n }\n ],\n toDOM: (node: Node) => {\n const { listStyleType } = node.attrs\n let style = ''\n if (listStyleType) style += `list-style-type: ${listStyleType};`\n\n return ['ul', { style }, 0]\n },\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\n// https://github.com/pipipi-pikachu/PPTist/issues/134\nconst { hard_break, ...otherNodes } = nodes\n\nexport default {\n ...otherNodes,\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 fontsize,\n fontname,\n forecolor,\n backcolor,\n subscript,\n superscript,\n strikethrough,\n underline,\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 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 { 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, listStyleType?: string) => {\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 && !listStyleType) {\n return liftListItem(itemType)(state, dispatch)\n }\n\n if (isList(parentList.node, schema) && listType.validContent(parentList.node.content)) {\n const { tr } = state\n if (listStyleType) {\n const nodeAttrs = {\n ...parentList.node.attrs,\n listStyleType: listStyleType,\n }\n tr.setNodeMarkup(parentList.pos, listType, nodeAttrs)\n }\n else tr.setNodeMarkup(parentList.pos, listType)\n\n if (dispatch) dispatch(tr)\n\n return false\n }\n }\n\n if (listStyleType) return wrapInList(listType, { listStyleType })(state, dispatch)\n return wrapInList(listType)(state, dispatch)\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 { unref as _unref, normalizeClass as _normalizeClass, 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, RichTextAction, 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\", \"mousedown\"],\n setup(__props, { expose, emit }: { emit: ({\n (event: 'update', payload: string): void\n (event: 'focus'): void\n (event: 'blur'): void\n (event: 'mousedown', payload: MouseEvent): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nconst mainStore = useMainStore()\nconst { handleElementId, textFormatPainter } = 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// 暴露 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 listStyleType = item.value || ''\n const { bullet_list: bulletList, list_item: listItem } = editorView.state.schema.nodes\n toggleList(bulletList, listItem, listStyleType)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'orderedList') {\n const listStyleType = item.value || ''\n const { ordered_list: orderedList, list_item: listItem } = editorView.state.schema.nodes\n toggleList(orderedList, listItem, listStyleType)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'clear') {\n autoSelectAll(editorView)\n const { $from, $to } = editorView.state.selection\n editorView.dispatch(editorView.state.tr.removeMark($from.pos, $to.pos))\n }\n else if (item.command === 'link') {\n const markType = editorView.state.schema.marks.link\n const { from, to } = editorView.state.selection\n const result = findNodesWithSameMark(editorView.state.doc, from, to, markType)\n if (result) {\n if (item.value) {\n const mark = editorView.state.schema.marks.link.create({ href: item.value, title: item.value })\n addMark(editorView, mark, { from: result.from.pos, to: result.to.pos + 1 })\n }\n else editorView.dispatch(editorView.state.tr.removeMark(result.from.pos, result.to.pos + 1, markType))\n }\n else if (markActive(editorView.state, markType)) {\n if (item.value) {\n const mark = editorView.state.schema.marks.link.create({ href: item.value, title: item.value })\n addMark(editorView, mark)\n }\n else toggleMark(markType)(editorView.state, editorView.dispatch)\n }\n else if (item.value) {\n autoSelectAll(editorView)\n toggleMark(markType, { href: item.value, title: item.value })(editorView.state, editorView.dispatch)\n }\n }\n else if (item.command === 'insert' && item.value) {\n editorView.dispatch(editorView.state.tr.insertText(item.value))\n }\n }\n\n editorView.focus()\n handleInput()\n handleClick()\n}\n\n// 鼠标抬起时,执行格式刷命令\nconst handleMouseup = () => {\n if (!textFormatPainter.value) return\n\n const actions: RichTextAction[] = [{ command: 'clear' }]\n for (const key of Object.keys(textFormatPainter.value)) {\n const command = key\n const value = textFormatPainter.value[key]\n if (value) actions.push({ command, value })\n }\n execCommand({ action: actions })\n mainStore.setTextFormatPainter(null)\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 mouseup: handleMouseup,\n },\n editable: () => props.editable,\n })\n if (props.autoFocus) editorView.focus()\n})\nonUnmounted(() => {\n editorView && editorView.destroy()\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: _normalizeClass([\"prosemirror-editor\", { 'format-painter': _unref(textFormatPainter) }]),\n ref_key: \"editorViewRef\",\n ref: editorViewRef,\n onMousedown: _cache[0] || (_cache[0] = $event => emit('mousedown', $event))\n }, null, 34))\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=76d3203e&lang=scss&scoped=true\"\n\nimport exportComponent 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-76d3203e\"]])\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-9be58c0a\"),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)\nconst realWidthCache = ref(-1)\n\nwatch(isScaling, () => {\n if (handleElementId.value !== props.elementInfo.id) return\n\n if (!isScaling.value) {\n if (!props.elementInfo.vertical && realHeightCache.value !== -1) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { height: realHeightCache.value },\n })\n realHeightCache.value = -1\n }\n if (props.elementInfo.vertical && realWidthCache.value !== -1) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { width: realWidthCache.value },\n })\n realWidthCache.value = -1\n }\n }\n})\n\nconst updateTextElementHeight = (entries: ResizeObserverEntry[]) => {\n const contentRect = entries[0].contentRect\n if (!elementRef.value) return\n\n const realHeight = contentRect.height + 20\n const realWidth = contentRect.width + 20\n\n if (!props.elementInfo.vertical && 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 if (props.elementInfo.vertical && props.elementInfo.width !== realWidth) {\n if (!isScaling.value) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { width: realWidth },\n })\n }\n else realWidthCache.value = realWidth\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 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 ref_key: \"elementRef\",\n ref: elementRef,\n style: _normalizeStyle({\n width: __props.elementInfo.vertical ? 'auto' : __props.elementInfo.width + 'px',\n height: __props.elementInfo.vertical ? __props.elementInfo.height + 'px' : 'auto',\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 writingMode: __props.elementInfo.vertical ? 'vertical-rl' : 'horizontal-tb',\n }),\n onMousedown: _cache[2] || (_cache[2] = $event => handleSelectElement($event)),\n onTouchstart: _cache[3] || (_cache[3] = $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 }, 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=9be58c0a&lang=scss&scoped=true\"\n\nimport exportComponent 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-9be58c0a\"]])\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-486128e0\"),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[3] || (_cache[3] = $event => handleSelectElement($event)),\n onTouchstart: _cache[4] || (_cache[4] = $event => handleSelectElement($event)),\n onDblclick: _cache[5] || (_cache[5] = ($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 }, 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=486128e0&lang=scss&scoped=true\"\n\nimport exportComponent 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-486128e0\"]])\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 tinycolor from 'tinycolor2'\nimport { BarChart, LineChart, PieChart } from 'chartist'\nimport { ChartData, ChartOptions, ChartType } from '@/types/slides'\nimport { injectKeySlideScale } from '@/types/injectKey'\n\nimport 'chartist/dist/index.css'\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: LineChart | BarChart | PieChart | undefined\n\nconst chartHeight = computed(() => {\n if (props.legend) return props.height - 20\n return props.height\n})\n\nconst getPieChartData = () => ({ ...props.data, series: props.data.series[0] })\n\nconst getOptions = () => {\n const propsOptopns = props.options || {}\n return {\n ...propsOptopns,\n width: props.width * slideScale.value,\n height: chartHeight.value * slideScale.value,\n }\n}\n\nconst renderChart = () => {\n if (!chartRef.value) return\n\n const options = getOptions()\n if (props.type === 'bar') chart = new BarChart(chartRef.value, props.data, options)\n if (props.type === 'line') chart = new LineChart(chartRef.value, props.data, options)\n if (props.type === 'pie') chart = new PieChart(chartRef.value, getPieChartData(), options)\n}\n\nconst updateChart = () => {\n if (!chart) {\n renderChart()\n return\n }\n const options = getOptions()\n const data = props.type === 'pie' ? getPieChartData() : props.data\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=1f8d633e&lang=scss&scoped=true\"\nimport \"./Chart.vue?vue&type=style&index=1&id=1f8d633e&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-1f8d633e\"]])\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-a2ef535c\"),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 cellMinHeight: {\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 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\", {\n key: rowIndex,\n style: _normalizeStyle({ height: __props.cellMinHeight + 'px' })\n }, [\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 style: _normalizeStyle({ minHeight: (__props.cellMinHeight - 4) + 'px' }),\n value: cell.text,\n onUpdateValue: value => _unref(handleInput)(value, rowIndex, colIndex),\n onInsertExcelData: value => insertExcelData(value, rowIndex, colIndex)\n }, null, 8, [\"class\", \"style\", \"value\", \"onUpdateValue\", \"onInsertExcelData\"]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"cell-text\",\n style: _normalizeStyle({ minHeight: (__props.cellMinHeight - 4) + 'px' }),\n innerHTML: _unref(formatText)(cell.text)\n }, null, 12, _hoisted_5))\n ], 46, _hoisted_4)), [\n [_vShow, !_unref(hideCells).includes(`${rowIndex}_${colIndex}`)],\n [_directive_contextmenu, (el) => contextmenus(el)]\n ])\n }), 128))\n ], 4))\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=a2ef535c&lang=scss&scoped=true\"\n\nimport exportComponent 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-a2ef535c\"]])\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-0b2b16da\"),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 cellMinHeight: __props.elementInfo.cellMinHeight,\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\", \"cellMinHeight\", \"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=0b2b16da&lang=scss&scoped=true\"\n\nimport exportComponent 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-0b2b16da\"]])\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 { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, normalizeClass as _normalizeClass, unref as _unref, normalizeStyle as _normalizeStyle, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-adfce55e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"load-error\"\n}\nconst _hoisted_2 = [\"src\", \"poster\"]\nconst _hoisted_3 = { class: \"bezel\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"controller-mask\" }, null, -1))\nconst _hoisted_5 = { class: \"controller\" }\nconst _hoisted_6 = { class: \"icons icons-left\" }\nconst _hoisted_7 = { class: \"icon-content\" }\nconst _hoisted_8 = { class: \"volume\" }\nconst _hoisted_9 = { class: \"icon-content\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_11 = [\n _hoisted_10\n]\nconst _hoisted_12 = { class: \"time\" }\nconst _hoisted_13 = { class: \"ptime\" }\nconst _hoisted_14 = { 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 = { class: \"icon-content\" }\nconst _hoisted_20 = { class: \"bar\" }\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_22 = [\n _hoisted_21\n]\n\nimport { computed, ref } from 'vue'\nimport useMSE from './useMSE'\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 loadError = ref(false)\nconst handleError = () => loadError.value = true\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 (loadError.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, \"视频加载失败\"))\n : _createCommentVNode(\"\", true),\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_2),\n _createElementVNode(\"div\", _hoisted_3, [\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_4,\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", {\n class: \"icon play-icon\",\n onClick: _cache[9] || (_cache[9] = ($event: any) => (toggle()))\n }, [\n _createElementVNode(\"span\", _hoisted_7, [\n (paused.value)\n ? (_openBlock(), _createBlock(_component_IconPlayOne, { key: 0 }))\n : (_openBlock(), _createBlock(_component_IconPause, { key: 1 }))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"div\", {\n class: \"icon volume-icon\",\n onClick: _cache[10] || (_cache[10] = ($event: any) => (toggleVolume()))\n }, [\n _createElementVNode(\"span\", _hoisted_9, [\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_11, 4)\n ], 512)\n ], 32)\n ]),\n _createElementVNode(\"span\", _hoisted_12, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_unref(ptime)), 1),\n _createTextVNode(\" / \"),\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 }, _toDisplayString(playbackRate.value === 1 ? '倍速' : (playbackRate.value + 'x')), 1),\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 }, [\n _createElementVNode(\"span\", _hoisted_19, \"循环\" + _toDisplayString(loop.value ? '开' : '关'), 1)\n ], 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_20, [\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_22, 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=adfce55e&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-adfce55e\"]])\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 = { class: \"dtime\" }\nconst _hoisted_12 = { class: \"bar\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_14 = [\n _hoisted_13\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 _createTextVNode(\" / \"),\n _createElementVNode(\"span\", _hoisted_11, _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_12, [\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_14, 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-aebac580\"),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, gridLineSize } = 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\n// 网格路径\nconst path = computed(() => {\n const maxX = VIEWPORT_SIZE\n const maxY = VIEWPORT_SIZE * viewportRatio.value\n\n let p = ''\n for (let i = 0; i <= Math.floor(maxY / gridLineSize.value); i++) {\n p += `M0 ${i * gridLineSize.value} L${maxX} ${i * gridLineSize.value} `\n }\n for (let i = 0; i <= Math.floor(maxX / gridLineSize.value); i++) {\n p += `M${i * gridLineSize.value} 0 L${i * gridLineSize.value} ${maxY} `\n }\n return p\n})\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=aebac580&lang=scss&scoped=true\"\n\nimport exportComponent 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-aebac580\"]])\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 { gridLineSize } = 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(gridLineSize))\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=61c4db4a&lang=scss&scoped=true\"\n\nimport exportComponent 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-61c4db4a\"]])\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-0f6bb088\"),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(20, (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), 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(20, (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), 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=0f6bb088&lang=scss&scoped=true\"\n\nimport exportComponent 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-0f6bb088\"]])\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 const verticalTextElementResizeHandlers = computed(() => {\n return [\n { direction: OperateResizeHandlers.TOP, style: {left: width.value / 2 + 'px'} },\n { direction: OperateResizeHandlers.BOTTOM, style: {left: width.value / 2 + 'px', top: height.value + '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 verticalTextElementResizeHandlers,\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, verticalTextElementResizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\r\nconst resizeHandlers = computed(() => props.elementInfo.vertical ? verticalTextElementResizeHandlers.value : textElementResizeHandlers.value)\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(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 \"./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, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-fd38df18\"),n=n(),_popScopeId(),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 { SHAPE_PATH_FORMULAS } from '@/configs/shapes'\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 moveShapeKeypoint: {\n type: Function as PropType<(e: MouseEvent, element: PPTShapeElement) => 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 keypointStyle = computed(() => {\n if (!props.elementInfo.pathFormula || !props.elementInfo.keypoint) return {}\n\n const pathFormula = SHAPE_PATH_FORMULAS[props.elementInfo.pathFormula]\n if ('editable' in pathFormula) {\n const keypointPos = pathFormula.getBaseSize(props.elementInfo.width, props.elementInfo.height) * props.elementInfo.keypoint\n if (pathFormula.relative === 'left') return { left: keypointPos * canvasScale.value + 'px' }\n if (pathFormula.relative === 'right') return { left: (props.elementInfo.width - keypointPos) * canvasScale.value + 'px' }\n if (pathFormula.relative === 'center') return { left: (props.elementInfo.width - keypointPos) / 2 * canvasScale.value + 'px' }\n if (pathFormula.relative === 'top') return { top: keypointPos * canvasScale.value + 'px' }\n if (pathFormula.relative === 'bottom') return { top: (props.elementInfo.height - keypointPos) * canvasScale.value + 'px' }\n }\n return {}\n})\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 (__props.elementInfo.keypoint !== undefined)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"operate-keypoint-handler\",\n style: _normalizeStyle(_unref(keypointStyle)),\n onMousedown: _cache[1] || (_cache[1] = _withModifiers($event => __props.moveShapeKeypoint($event, __props.elementInfo), [\"stop\"]))\n }, null, 36))\n : _createCommentVNode(\"\", true)\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\nimport \"./ShapeElementOperate.vue?vue&type=style&index=0&id=fd38df18&lang=scss&scoped=true\"\n\nimport exportComponent 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-fd38df18\"]])\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 { 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 \"./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 if (link.type === 'slide' && !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, createVNode as _createVNode, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-12300fd5\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"href\"]\nconst _hoisted_2 = { class: \"btns\" }\n\nimport { computed, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement, PPTElementLink } from '@/types/slides'\nimport useLink from '@/hooks/useLink'\n\nimport { Divider } from 'ant-design-vue'\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 mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { canvasScale } = storeToRefs(mainStore)\nconst { slides } = storeToRefs(slidesStore)\nconst { removeLink } = useLink()\nconst height = computed(() => props.elementInfo.type === 'line' ? 0 : props.elementInfo.height)\n\nconst turnTarget = (slideId: string) => {\n const targetIndex = slides.value.findIndex(item => item.id === slideId)\n if (targetIndex !== -1) {\n mainStore.setActiveElementIdList([])\n slidesStore.updateSlideIndex(targetIndex)\n }\n}\n\nreturn (_ctx: any,_cache: any) => {\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\", {\n key: 1,\n class: \"link\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (turnTarget(__props.link.target)))\n }, \"幻灯片页面 \" + _toDisplayString(__props.link.target), 1)),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (__props.openLinkDialog()))\n }, \"更换\"),\n _createVNode(_unref(Divider), { type: \"vertical\" }),\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[2] || (_cache[2] = ($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=12300fd5&lang=scss&scoped=true\"\n\nimport exportComponent 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-12300fd5\"]])\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-26f9c48a\"),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, PPTShapeElement } 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 moveShapeKeypoint: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTShapeElement) => 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 moveShapeKeypoint: __props.moveShapeKeypoint\n }, null, 8, [\"elementInfo\", \"handlerVisible\", \"rotateElement\", \"scaleElement\", \"dragLineElement\", \"moveShapeKeypoint\"]))\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=26f9c48a&lang=scss&scoped=true\"\n\nimport exportComponent 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-26f9c48a\"]])\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, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-c874e65e\"),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 (__props.elementInfo.colorMask)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"color-mask\",\n style: _normalizeStyle({\n backgroundColor: __props.elementInfo.colorMask.color,\n opacity: __props.elementInfo.colorMask.opacity,\n })\n }, null, 4))\n : _createCommentVNode(\"\", true)\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=c874e65e&lang=scss&scoped=true\"\n\nimport exportComponent 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-c874e65e\"]])\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-18d84242\"),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 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 width: __props.elementInfo.vertical ? 'auto' : __props.elementInfo.width + 'px',\n height: __props.elementInfo.vertical ? __props.elementInfo.height + 'px' : 'auto',\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 writingMode: __props.elementInfo.vertical ? 'vertical-rl' : 'horizontal-tb',\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=18d84242&lang=scss&scoped=true\"\n\nimport exportComponent 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-18d84242\"]])\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, normalizeStyle as _normalizeStyle, vShow as _vShow, withDirectives as _withDirectives, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-40e73d4e\"),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 cellMinHeight: {\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\", {\n key: rowIndex,\n style: _normalizeStyle({ height: __props.cellMinHeight + 'px' })\n }, [\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 style: _normalizeStyle({ minHeight: (__props.cellMinHeight - 4) + 'px' }),\n innerHTML: _unref(formatText)(cell.text)\n }, null, 12, _hoisted_3)\n ], 12, _hoisted_2)), [\n [_vShow, !_unref(hideCells).includes(`${rowIndex}_${colIndex}`)]\n ])\n }), 128))\n ], 4))\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=40e73d4e&lang=scss&scoped=true\"\n\nimport exportComponent 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-40e73d4e\"]])\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-6b8ce0be\"),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 cellMinHeight: __props.elementInfo.cellMinHeight,\n colWidths: __props.elementInfo.colWidths,\n outline: __props.elementInfo.outline,\n theme: __props.elementInfo.theme\n }, null, 8, [\"data\", \"width\", \"cellMinHeight\", \"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=6b8ce0be&lang=scss&scoped=true\"\n\nimport exportComponent 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-6b8ce0be\"]])\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-3f5170e8\"),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=3f5170e8&lang=scss&scoped=true\"\n\nimport exportComponent 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-3f5170e8\"]])\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, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-469f9b66\"),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\" }\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'\nimport {\n Button,\n Select,\n Input,\n} from 'ant-design-vue'\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\nconst SelectOption = Select.Option\n\n\n\nconst { handleElement } = storeToRefs(useMainStore())\nconst { slides, currentSlide } = storeToRefs(useSlidesStore())\n\nconst type = ref('web')\nconst address = ref('')\nconst slideId = ref('')\n\nslideId.value = slides.value.find(item => item.id !== currentSlide.value.id)?.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 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(_unref(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(_unref(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(_unref(SelectOption), {\n key: slide.id,\n value: slide.id,\n disabled: _unref(currentSlide).id === slide.id\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"幻灯片 \" + _toDisplayString(index + 1), 1)\n ]),\n _: 2\n }, 1032, [\"value\", \"disabled\"]))\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(_unref(Button), {\n onClick: _cache[2] || (_cache[2] = ($event: any) => (emit('close'))),\n style: {\"margin-right\":\"10px\"}\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"取消\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), {\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (save()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"确认\")\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=469f9b66&lang=scss&scoped=true\"\n\nimport exportComponent 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-469f9b66\"]])\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, vShow as _vShow, withDirectives as _withDirectives, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, withCtx as _withCtx, resolveDirective as _resolveDirective, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-17dcff2c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"operates\" }\nconst _hoisted_2 = {\n key: 1,\n class: \"drag-mask\"\n}\n\nimport { nextTick, onMounted, onUnmounted, 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 useMoveShapeKeypoint from './hooks/useMoveShapeKeypoint'\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'\nimport { Modal } from 'ant-design-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 hiddenElementIdList,\n editorAreaFocus,\n gridLineSize,\n showRuler,\n showSelectPanel,\n creatingElement,\n canvasScale,\n textFormatPainter,\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)\nconst { moveShapeKeypoint } = useMoveShapeKeypoint(elementList, canvasScale)\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) {\n nextTick(() => mainStore.setActiveElementIdList([]))\n }\n})\n\n// 点击画布的空白区域:清空焦点元素、设置画布焦点、清除文字选区、清空格式刷状态\nconst handleClickBlankArea = (e: MouseEvent) => {\n if (activeElementIdList.value.length) mainStore.setActiveElementIdList([])\n\n if (!spaceKeyState.value) updateMouseSelection(e)\n else dragViewport(e)\n\n if (!editorAreaFocus.value) mainStore.setEditorareaFocus(true)\n if (textFormatPainter.value) mainStore.setTextFormatPainter(null)\n removeAllRanges()\n}\n\n// 画布注销时清空格式刷状态\nonUnmounted(() => {\n if (textFormatPainter.value) mainStore.setTextFormatPainter(null)\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 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: showRuler.value ? '√' : '',\n handler: toggleRuler,\n },\n {\n text: '网格线',\n handler: () => mainStore.setGridLineSize(gridLineSize.value ? 0 : 50),\n children: [\n {\n text: '无',\n subText: gridLineSize.value === 0 ? '√' : '',\n handler: () => mainStore.setGridLineSize(0),\n },\n {\n text: '小',\n subText: gridLineSize.value === 25 ? '√' : '',\n handler: () => mainStore.setGridLineSize(25),\n },\n {\n text: '中',\n subText: gridLineSize.value === 50 ? '√' : '',\n handler: () => mainStore.setGridLineSize(50),\n },\n {\n text: '大',\n subText: gridLineSize.value === 100 ? '√' : '',\n handler: () => mainStore.setGridLineSize(100),\n },\n ],\n },\n {\n text: showSelectPanel.value ? '关闭选择面板' : '打开选择面板',\n handler: () => {\n if (!showSelectPanel.value) mainStore.setSelectPanelState(true)\n else mainStore.setSelectPanelState(false)\n },\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 _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 _withDirectives((_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 moveShapeKeypoint: _unref(moveShapeKeypoint)\n }, null, 8, [\"elementInfo\", \"isSelected\", \"isActive\", \"isActiveGroupElement\", \"isMultiSelect\", \"rotateElement\", \"scaleElement\", \"dragLineElement\", \"moveShapeKeypoint\"])), [\n [_vShow, !_unref(hiddenElementIdList).includes(element.id)]\n ])\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 _withDirectives((_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 [_vShow, !_unref(hiddenElementIdList).includes(element.id)]\n ])\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(_unref(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=17dcff2c&lang=scss&scoped=true\"\n\nimport exportComponent 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-17dcff2c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { 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-09653543\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"shape-item-thumbnail\" }\nconst _hoisted_2 = { class: \"shape-content\" }\nconst _hoisted_3 = {\n overflow: \"visible\",\n width: \"18\",\n height: \"18\"\n}\nconst _hoisted_4 = [\"transform\"]\nconst _hoisted_5 = [\"fill\", \"stroke\", \"d\"]\n\nimport { PropType } from 'vue'\nimport { ShapePoolItem } from '@/configs/shapes'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ShapeItemThumbnail',\n props: {\n shape: {\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\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(), _createElementBlock(\"svg\", _hoisted_3, [\n _createElementVNode(\"g\", {\n transform: `scale(${18 / __props.shape.viewBox[0]}, ${18 / __props.shape.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n class: _normalizeClass([\"shape-path\", { 'outlined': __props.shape.outlined }]),\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n fill: __props.shape.outlined ? '#999' : 'transparent',\n stroke: __props.shape.outlined ? 'transparent' : '#999',\n \"stroke-width\": \"2\",\n d: __props.shape.path\n }, null, 10, _hoisted_5)\n ], 8, _hoisted_4)\n ]))\n ])\n ]))\n}\n}\n\n})","import script from \"./ShapeItemThumbnail.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ShapeItemThumbnail.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ShapeItemThumbnail.vue?vue&type=style&index=0&id=09653543&lang=scss&scoped=true\"\n\nimport exportComponent 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-09653543\"]])\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, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-711a4fb1\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"shape-pool\" }\nconst _hoisted_2 = { class: \"category-name\" }\nconst _hoisted_3 = { class: \"shape-list\" }\n\nimport { SHAPE_LIST, ShapePoolItem } from '@/configs/shapes'\nimport ShapeItemThumbnail from './ShapeItemThumbnail.vue'\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(), _createBlock(ShapeItemThumbnail, {\n class: \"shape-item\",\n key: index,\n shape: shape,\n onClick: ($event: any) => (selectShape(shape))\n }, null, 8, [\"shape\", \"onClick\"]))\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=711a4fb1&lang=scss&scoped=true\"\n\nimport exportComponent 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-711a4fb1\"]])\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, unref as _unref, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8fd9f34c\"),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\" }\n\nimport { ref } from 'vue'\nimport {\n InputNumber,\n Button,\n message,\n} 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 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(_unref(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(_unref(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(_unref(Button), {\n class: \"btn\",\n onClick: _cache[5] || (_cache[5] = ($event: any) => (close()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"取消\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), {\n class: \"btn\",\n type: \"primary\",\n onClick: _cache[6] || (_cache[6] = ($event: any) => (insertCustomTable()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"确认\")\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=8fd9f34c&lang=scss&scoped=true\"\n\nimport exportComponent 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-8fd9f34c\"]])\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, 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-4e5f883a\"),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 = { class: \"btns\" }\n\nimport { ref } from 'vue'\nimport {\n Button,\n Input,\n message,\n} 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 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(_unref(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(_unref(Button), {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emit('close'))),\n style: {\"margin-right\":\"10px\"}\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"取消\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), {\n type: \"primary\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (insertVideo()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"确认\")\n ]),\n _: 1\n })\n ])\n ], 64))\n : _createCommentVNode(\"\", true),\n (type.value === 'audio')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createVNode(_unref(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_5, [\n _createVNode(_unref(Button), {\n onClick: _cache[4] || (_cache[4] = ($event: any) => (emit('close'))),\n style: {\"margin-right\":\"10px\"}\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"取消\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), {\n type: \"primary\",\n onClick: _cache[5] || (_cache[5] = ($event: any) => (insertAudio()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"确认\")\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=4e5f883a&lang=scss&scoped=true\"\n\nimport exportComponent 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-4e5f883a\"]])\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 { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createTextVNode as _createTextVNode, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-097b396c\"),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\" }\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 {\n Button,\n Input,\n message,\n} from 'ant-design-vue'\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 TextArea = Input.TextArea\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 return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_unref(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(_unref(Button), {\n class: \"btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"取消\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), {\n class: \"btn\",\n type: \"primary\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (update()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"确定\")\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=097b396c&lang=scss&scoped=true\"\n\nimport exportComponent 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-097b396c\"]])\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, createTextVNode as _createTextVNode, 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-7ba4b56c\"),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: \"handler-item group-btn\" }\nconst _hoisted_5 = { class: \"right-handler\" }\nconst _hoisted_6 = { class: \"viewport-size-preset\" }\nconst _hoisted_7 = [\"onClick\"]\nconst _hoisted_8 = { 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'\nimport FileInput from '@/components/FileInput.vue'\nimport {\n Tooltip,\n Popover,\n Modal,\n} from 'ant-design-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)\nconst textTypeSelectVisible = ref(false)\n\n// 绘制文字范围\nconst drawText = (vertical = false) => {\n mainStore.setCreatingElement({\n type: 'text',\n vertical,\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_IconNext = _resolveComponent(\"IconNext\")!\n const _component_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_IconTextRotationNone = _resolveComponent(\"IconTextRotationNone\")!\n const _component_IconTextRotationDown = _resolveComponent(\"IconTextRotationDown\")!\n const _component_IconDown = _resolveComponent(\"IconDown\")!\n const _component_IconPicture = _resolveComponent(\"IconPicture\")!\n const _component_IconGraphicDesign = _resolveComponent(\"IconGraphicDesign\")!\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\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_unref(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(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"插入文字\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_IconFontSize, {\n class: _normalizeClass([\"icon\", { 'active': _unref(creatingElement)?.type === 'text' }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (drawText()))\n }, null, 8, [\"class\"]),\n _createVNode(_unref(Popover), {\n trigger: \"click\",\n visible: textTypeSelectVisible.value,\n \"onUpdate:visible\": _cache[5] || (_cache[5] = ($event: any) => ((textTypeSelectVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"text-type-item\",\n onClick: _cache[3] || (_cache[3] = () => { drawText(); textTypeSelectVisible.value = false })\n }, [\n _createVNode(_component_IconTextRotationNone),\n _createTextVNode(\" 横向文本框\")\n ]),\n _createElementVNode(\"div\", {\n class: \"text-type-item\",\n onClick: _cache[4] || (_cache[4] = () => { drawText(true); textTypeSelectVisible.value = false })\n }, [\n _createVNode(_component_IconTextRotationDown),\n _createTextVNode(\" 竖向文本框\")\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_IconDown, { class: \"arrow\" })\n ]),\n _: 1\n }, 8, [\"visible\"])\n ])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(FileInput, {\n onChange: _cache[6] || (_cache[6] = files => insertImageElement(files))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Popover), {\n trigger: \"click\",\n visible: shapePoolVisible.value,\n \"onUpdate:visible\": _cache[8] || (_cache[8] = ($event: any) => ((shapePoolVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(ShapePool, {\n onSelect: _cache[7] || (_cache[7] = shape => drawShape(shape))\n })\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Popover), {\n trigger: \"click\",\n visible: linePoolVisible.value,\n \"onUpdate:visible\": _cache[10] || (_cache[10] = ($event: any) => ((linePoolVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(LinePool, {\n onSelect: _cache[9] || (_cache[9] = line => drawLine(line))\n })\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Popover), {\n trigger: \"click\",\n visible: chartPoolVisible.value,\n \"onUpdate:visible\": _cache[12] || (_cache[12] = ($event: any) => ((chartPoolVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(ChartPool, {\n onSelect: _cache[11] || (_cache[11] = chart => { _unref(createChartElement)(chart); chartPoolVisible.value = false })\n })\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Popover), {\n trigger: \"click\",\n visible: tableGeneratorVisible.value,\n \"onUpdate:visible\": _cache[15] || (_cache[15] = ($event: any) => ((tableGeneratorVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(TableGenerator, {\n onClose: _cache[13] || (_cache[13] = ($event: any) => (tableGeneratorVisible.value = false)),\n onInsert: _cache[14] || (_cache[14] = ({ row, col }) => { _unref(createTableElement)(row, col); tableGeneratorVisible.value = false })\n })\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(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[16] || (_cache[16] = ($event: any) => (latexEditorVisible.value = true))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(Popover), {\n trigger: \"click\",\n visible: mediaInputVisible.value,\n \"onUpdate:visible\": _cache[20] || (_cache[20] = ($event: any) => ((mediaInputVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(MediaInput, {\n onClose: _cache[17] || (_cache[17] = ($event: any) => (mediaInputVisible.value = false)),\n onInsertVideo: _cache[18] || (_cache[18] = src => { _unref(createVideoElement)(src); mediaInputVisible.value = false }),\n onInsertAudio: _cache[19] || (_cache[19] = src => { _unref(createAudioElement)(src); mediaInputVisible.value = false })\n })\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(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_5, [\n _createVNode(_component_IconMinus, {\n class: \"handler-item viewport-size\",\n onClick: _cache[21] || (_cache[21] = ($event: any) => (_unref(scaleCanvas)('-')))\n }),\n _createVNode(_unref(Popover), {\n trigger: \"click\",\n visible: canvasScaleVisible.value,\n \"onUpdate:visible\": _cache[22] || (_cache[22] = ($event: any) => ((canvasScaleVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_6, [\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_7)\n }), 64))\n ])\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_unref(canvasScalePercentage)), 1)\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_component_IconPlus, {\n class: \"handler-item viewport-size\",\n onClick: _cache[23] || (_cache[23] = ($event: any) => (_unref(scaleCanvas)('+')))\n }),\n _createVNode(_unref(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[24] || (_cache[24] = ($event: any) => (_unref(resetCanvas)()))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _createVNode(_unref(Modal), {\n visible: latexEditorVisible.value,\n \"onUpdate:visible\": _cache[27] || (_cache[27] = ($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[25] || (_cache[25] = ($event: any) => (latexEditorVisible.value = false)),\n onUpdate: _cache[26] || (_cache[26] = 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=7ba4b56c&lang=scss&scoped=true\"\n\nimport exportComponent 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-7ba4b56c\"]])\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-61d61c80\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"add-slide\" }\nconst _hoisted_2 = { class: \"select-btn\" }\nconst _hoisted_3 = [\"onMousedown\"]\nconst _hoisted_4 = { class: \"page-number\" }\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'\nimport { Popover } from 'ant-design-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 sortSlides,\n} = useSlideHandler()\n\n// 切换页面\nconst changeSlideIndex = (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 changeSlideIndex(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 changeSlideIndex(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 changeSlideIndex(index)\n }\n // 正常切换页面\n else {\n mainStore.updateSelectedSlidesIndex([])\n changeSlideIndex(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 sortSlides(newIndex, oldIndex)\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 _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 _createTextVNode(\"添加幻灯片\")\n ]),\n _createVNode(_unref(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_2, [\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_3)), [\n [_directive_contextmenu, contextmenusThumbnailItem]\n ])\n ]),\n _: 1\n }, 8, [\"modelValue\"]),\n _createElementVNode(\"div\", _hoisted_4, \"幻灯片 \" + _toDisplayString(_unref(slideIndex) + 1) + \" / \" + _toDisplayString(_unref(slides).length), 1)\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=61d61c80&lang=scss&scoped=true\"\n\nimport exportComponent 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-61d61c80\"]])\n\nexport default __exports__","import { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\n\nexport default () => {\n const mainStore = useMainStore()\n const { richTextAttrs, textFormatPainter } = storeToRefs(mainStore)\n\n const toggleFormatPainter = () => {\n if (textFormatPainter.value) mainStore.setTextFormatPainter(null)\n else {\n mainStore.setTextFormatPainter({\n bold: richTextAttrs.value.bold,\n em: richTextAttrs.value.em,\n underline: richTextAttrs.value.underline,\n strikethrough: richTextAttrs.value.strikethrough,\n color: richTextAttrs.value.color,\n backcolor: richTextAttrs.value.backcolor,\n fontname: richTextAttrs.value.fontname,\n fontsize: richTextAttrs.value.fontsize,\n align: richTextAttrs.value.align,\n })\n }\n }\n\n return {\n toggleFormatPainter,\n }\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-54aad0f0\"),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\nimport { Slider } from 'ant-design-vue'\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 return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createVNode(_unref(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=54aad0f0&lang=scss&scoped=true\"\n\nimport exportComponent 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-54aad0f0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, unref as _unref, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3b4a02d8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"color-block\" }\n\nimport { Button } from 'ant-design-vue'\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\n return (_openBlock(), _createBlock(_unref(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=3b4a02d8&lang=scss&scoped=true\"\n\nimport exportComponent 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-3b4a02d8\"]])\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-3d280c42\"),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 _createElementVNode(\"div\", {\n class: \"transparent\",\n onClick: _cache[5] || (_cache[5] = ($event: any) => (selectPresetColor('#00000000')))\n }, [\n _createVNode(Checkboard)\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=3d280c42&lang=scss&scoped=true\"\n\nimport exportComponent 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-3d280c42\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, 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-49642f50\"),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 = { 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))\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'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport {\n InputNumber,\n Popover,\n Select,\n Switch,\n} from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementOutline',\n props: {\n fixed: {\n type: Boolean,\n default: false,\n },\n},\n setup(__props) {\n\nconst SelectOption = Select.Option\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 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(_unref(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(_unref(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(_unref(SelectOption), { value: \"solid\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"实线边框\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"dashed\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"虚线边框\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _hoisted_8,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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_9, [\n _hoisted_10,\n _createVNode(_unref(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=49642f50&lang=scss&scoped=true\"\n\nimport exportComponent 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-49642f50\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, 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-19c233fc\"),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'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport {\n Popover,\n Slider,\n Switch,\n} from 'ant-design-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 return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_unref(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(_unref(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(_unref(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(_unref(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(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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=19c233fc&lang=scss&scoped=true\"\n\nimport exportComponent 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-19c233fc\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, unref as _unref, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-c90c8a28\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"text-color-block\" }\n\nimport { Button } from 'ant-design-vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'TextColorButton',\n props: {\n color: {\n type: String,\n required: true,\n },\n},\n setup(__props) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_unref(Button), { class: \"text-color-btn\" }, {\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"default\"),\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"text-color-block-content\",\n style: _normalizeStyle({ backgroundColor: __props.color })\n }, null, 4)\n ])\n ]),\n _: 3\n }))\n}\n}\n\n})","import script from \"./TextColorButton.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./TextColorButton.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./TextColorButton.vue?vue&type=style&index=0&id=c90c8a28&lang=scss&scoped=true\"\n\nimport exportComponent 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-c90c8a28\"]])\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 { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createBlock as _createBlock, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9b75a3bc\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"text-style-panel\" }\nconst _hoisted_2 = { class: \"preset-style\" }\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = { class: \"link-popover\" }\nconst _hoisted_5 = { class: \"btns\" }\nconst _hoisted_6 = { class: \"row\" }\nconst _hoisted_7 = { class: \"list-wrap\" }\nconst _hoisted_8 = [\"onClick\"]\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, null, -1))\nconst _hoisted_10 = [\n _hoisted_9\n]\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"1\"} }, null, -1))\nconst _hoisted_12 = { class: \"list-wrap\" }\nconst _hoisted_13 = [\"onClick\"]\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, null, -1))\nconst _hoisted_15 = [\n _hoisted_14\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 = { class: \"row\" }\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"字间距:\", -1))\nconst _hoisted_22 = { class: \"row\" }\nconst _hoisted_23 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"首行缩进:\", -1))\nconst _hoisted_24 = { class: \"row\" }\nconst _hoisted_25 = /*#__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 useTextFormatPainter from '@/hooks/useTextFormatPainter'\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'\nimport TextColorButton from '../common/TextColorButton.vue'\nimport CheckboxButton from '@/components/CheckboxButton.vue'\nimport CheckboxButtonGroup from '@/components/CheckboxButtonGroup.vue'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport {\n Divider,\n Button,\n Tooltip,\n Popover,\n Select,\n Radio,\n Input,\n message,\n} from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'TextStylePanel',\n setup(__props) {\n\nconst { Group: RadioGroup, Button: RadioButton } = Radio\nconst { OptGroup: SelectOptGroup, Option: SelectOption } = Select\nconst InputGroup = Input.Group\nconst ButtonGroup = Button.Group\n\n// 注意,存在一个未知原因的BUG,如果文本加粗后文本框高度增加,画布的可视区域定位会出现错误\n// 因此在执行预置样式命令时,将加粗命令放在尽可能靠前的位置,避免字号增大后再加粗\nconst presetStyles = [\n {\n label: '大标题',\n style: {\n fontSize: '26px',\n fontWeight: 700,\n },\n cmd: [\n { command: 'clear' },\n { command: 'bold' },\n { command: 'fontsize', value: '48px' },\n { command: 'align', value: 'center' },\n ],\n },\n {\n label: '小标题',\n style: {\n fontSize: '22px',\n fontWeight: 700,\n },\n cmd: [\n { command: 'clear' },\n { command: 'bold' },\n { command: 'fontsize', value: '36px' },\n { command: 'align', value: 'center' },\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 mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { handleElement, handleElementId, richTextAttrs, availableFonts, textFormatPainter } = storeToRefs(mainStore)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\nconst { toggleFormatPainter } = useTextFormatPainter()\n\nconst updateElement = (props: Partial) => {\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n}\n\nconst bulletListPanelVisible = ref(false)\nconst orderedListPanelVisible = ref(false)\n\nconst bulletListStyleTypeOption = ref(['disc', 'circle', 'square'])\nconst orderedListStyleTypeOption = ref(['decimal', 'lower-roman', 'upper-roman', 'lower-alpha', 'upper-alpha', 'lower-greek'])\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_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_IconAddText = _resolveComponent(\"IconAddText\")!\n const _component_IconText = _resolveComponent(\"IconText\")!\n const _component_IconHighLight = _resolveComponent(\"IconHighLight\")!\n const _component_IconTextBold = _resolveComponent(\"IconTextBold\")!\n const _component_IconTextItalic = _resolveComponent(\"IconTextItalic\")!\n const _component_IconTextUnderline = _resolveComponent(\"IconTextUnderline\")!\n const _component_IconStrikethrough = _resolveComponent(\"IconStrikethrough\")!\n const _component_IconCode = _resolveComponent(\"IconCode\")!\n const _component_IconQuote = _resolveComponent(\"IconQuote\")!\n const _component_IconFormat = _resolveComponent(\"IconFormat\")!\n const _component_IconFormatBrush = _resolveComponent(\"IconFormatBrush\")!\n const _component_IconLinkOne = _resolveComponent(\"IconLinkOne\")!\n const _component_IconAlignTextLeft = _resolveComponent(\"IconAlignTextLeft\")!\n const _component_IconAlignTextCenter = _resolveComponent(\"IconAlignTextCenter\")!\n const _component_IconAlignTextRight = _resolveComponent(\"IconAlignTextRight\")!\n const _component_IconList = _resolveComponent(\"IconList\")!\n const _component_IconDown = _resolveComponent(\"IconDown\")!\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(_unref(Divider)),\n _createVNode(_unref(InputGroup), {\n compact: \"\",\n class: \"row\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(SelectOptGroup), { label: \"系统字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(availableFonts), (font) => {\n return (_openBlock(), _createBlock(_unref(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(_unref(SelectOptGroup), { label: \"在线字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(WEB_FONTS), (font) => {\n return (_openBlock(), _createBlock(_unref(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(_unref(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(_unref(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(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"文字颜色\"\n }, {\n default: _withCtx(() => [\n _createVNode(TextColorButton, {\n color: _unref(richTextAttrs).color,\n style: {\"flex\":\"3\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconText)\n ]),\n _: 1\n }, 8, [\"color\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"文字高亮\"\n }, {\n default: _withCtx(() => [\n _createVNode(TextColorButton, {\n color: _unref(richTextAttrs).backcolor,\n style: {\"flex\":\"3\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconHighLight)\n ]),\n _: 1\n }, 8, [\"color\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"增大字号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\"+\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"减小字号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\"-\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"加粗\"\n }, {\n default: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"斜体\"\n }, {\n default: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"下划线\"\n }, {\n default: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"删除线\"\n }, {\n default: _withCtx(() => [\n _createVNode(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 ]),\n _: 1\n }),\n _createVNode(CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"上标\"\n }, {\n default: _withCtx(() => [\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _unref(richTextAttrs).superscript,\n onClick: _cache[10] || (_cache[10] = ($event: any) => (emitRichTextCommand('superscript')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"A²\")\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"下标\"\n }, {\n default: _withCtx(() => [\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _unref(richTextAttrs).subscript,\n onClick: _cache[11] || (_cache[11] = ($event: any) => (emitRichTextCommand('subscript')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"A₂\")\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"行内代码\"\n }, {\n default: _withCtx(() => [\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _unref(richTextAttrs).code,\n onClick: _cache[12] || (_cache[12] = ($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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"引用\"\n }, {\n default: _withCtx(() => [\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _unref(richTextAttrs).blockquote,\n onClick: _cache[13] || (_cache[13] = ($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 ]),\n _: 1\n }),\n _createVNode(CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"清除格式\"\n }, {\n default: _withCtx(() => [\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n onClick: _cache[14] || (_cache[14] = ($event: any) => (emitRichTextCommand('clear')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFormat)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"格式刷\"\n }, {\n default: _withCtx(() => [\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: !!_unref(textFormatPainter),\n onClick: _cache[15] || (_cache[15] = ($event: any) => (_unref(toggleFormatPainter)()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFormatBrush)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"超链接\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(Popover), {\n placement: \"bottomRight\",\n trigger: \"click\",\n visible: linkPopoverVisible.value,\n \"onUpdate:visible\": _cache[20] || (_cache[20] = ($event: any) => ((linkPopoverVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_unref(Input), {\n value: link.value,\n \"onUpdate:value\": _cache[16] || (_cache[16] = ($event: any) => ((link).value = $event)),\n placeholder: \"请输入超链接\"\n }, null, 8, [\"value\"]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_unref(Button), {\n size: \"small\",\n disabled: !_unref(richTextAttrs).link,\n onClick: _cache[17] || (_cache[17] = ($event: any) => (updateLink())),\n style: {\"margin-right\":\"5px\"}\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"移除\")\n ]),\n _: 1\n }, 8, [\"disabled\"]),\n _createVNode(_unref(Button), {\n size: \"small\",\n type: \"primary\",\n onClick: _cache[18] || (_cache[18] = ($event: any) => (updateLink(link.value)))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"确认\")\n ]),\n _: 1\n })\n ])\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: !!_unref(richTextAttrs).link,\n onClick: _cache[19] || (_cache[19] = ($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(_unref(Divider)),\n _createVNode(_unref(RadioGroup), {\n class: \"row\",\n \"button-style\": \"solid\",\n value: _unref(richTextAttrs).align,\n onChange: _cache[21] || (_cache[21] = e => emitRichTextCommand('align', e.target.value))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"左对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"右对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_unref(ButtonGroup), { style: {\"flex\":\"15\"} }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"项目符号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(Button), {\n type: _unref(richTextAttrs).bulletList ? 'primary' : 'default',\n style: {\"flex\":\"1\"},\n onClick: _cache[22] || (_cache[22] = ($event: any) => (emitRichTextCommand('bulletList')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconList)\n ]),\n _: 1\n }, 8, [\"type\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(Popover), {\n trigger: \"click\",\n visible: bulletListPanelVisible.value,\n \"onUpdate:visible\": _cache[23] || (_cache[23] = ($event: any) => ((bulletListPanelVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_7, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(bulletListStyleTypeOption.value, (item) => {\n return (_openBlock(), _createElementBlock(\"ul\", {\n class: \"list\",\n key: item,\n style: _normalizeStyle({ listStyleType: item }),\n onClick: ($event: any) => (emitRichTextCommand('bulletList', item))\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(3, (key) => {\n return _createElementVNode(\"li\", {\n class: \"list-item\",\n key: key\n }, _hoisted_10)\n }), 64))\n ], 12, _hoisted_8))\n }), 128))\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(Button), { class: \"popover-btn\" }, {\n default: _withCtx(() => [\n _createVNode(_component_IconDown)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]),\n _: 1\n }),\n _hoisted_11,\n _createVNode(_unref(ButtonGroup), { style: {\"flex\":\"15\"} }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"编号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(Button), {\n type: _unref(richTextAttrs).orderedList ? 'primary' : 'default',\n style: {\"flex\":\"1\"},\n onClick: _cache[24] || (_cache[24] = ($event: any) => (emitRichTextCommand('orderedList')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconOrderedList)\n ]),\n _: 1\n }, 8, [\"type\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(Popover), {\n trigger: \"click\",\n visible: orderedListPanelVisible.value,\n \"onUpdate:visible\": _cache[25] || (_cache[25] = ($event: any) => ((orderedListPanelVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_12, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(orderedListStyleTypeOption.value, (item) => {\n return (_openBlock(), _createElementBlock(\"ul\", {\n class: \"list\",\n key: item,\n style: _normalizeStyle({ listStyleType: item }),\n onClick: ($event: any) => (emitRichTextCommand('orderedList', item))\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(3, (key) => {\n return _createElementVNode(\"li\", {\n class: \"list-item\",\n key: key\n }, _hoisted_15)\n }), 64))\n ], 12, _hoisted_13))\n }), 128))\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(Button), { class: \"popover-btn\" }, {\n default: _withCtx(() => [\n _createVNode(_component_IconDown)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]),\n _: 1\n })\n ]),\n _createVNode(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"减小缩进\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(Button), {\n style: {\"flex\":\"1\"},\n onClick: _cache[26] || (_cache[26] = ($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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"增大缩进\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(Button), {\n style: {\"flex\":\"1\"},\n onClick: _cache[27] || (_cache[27] = ($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(_unref(Divider)),\n _createElementVNode(\"div\", _hoisted_16, [\n _hoisted_17,\n _createVNode(_unref(Select), {\n style: {\"flex\":\"3\"},\n value: lineHeight.value,\n onChange: _cache[28] || (_cache[28] = 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(_unref(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_18, [\n _hoisted_19,\n _createVNode(_unref(Select), {\n style: {\"flex\":\"3\"},\n value: paragraphSpace.value,\n onChange: _cache[29] || (_cache[29] = 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(_unref(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_20, [\n _hoisted_21,\n _createVNode(_unref(Select), {\n style: {\"flex\":\"3\"},\n value: wordSpace.value,\n onChange: _cache[30] || (_cache[30] = 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(_unref(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_22, [\n _hoisted_23,\n _createVNode(_unref(Select), {\n style: {\"flex\":\"3\"},\n value: textIndent.value,\n onChange: _cache[31] || (_cache[31] = 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(_unref(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_24, [\n _hoisted_25,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(ColorPicker, {\n modelValue: fill.value,\n \"onUpdate:modelValue\": _cache[32] || (_cache[32] = 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(_unref(Divider)),\n _createVNode(ElementOutline),\n _createVNode(_unref(Divider)),\n _createVNode(ElementShadow),\n _createVNode(_unref(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=9b75a3bc&lang=scss&scoped=true\"\n\nimport exportComponent 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-9b75a3bc\"]])\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-1b5a047e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-flip\" }\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\nimport CheckboxButton from '@/components/CheckboxButton.vue'\nimport CheckboxButtonGroup from '@/components/CheckboxButtonGroup.vue'\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_IconFlipHorizontally = _resolveComponent(\"IconFlipHorizontally\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(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 _createTextVNode(\" 垂直翻转\")\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(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 _createTextVNode(\" 水平翻转\")\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=1b5a047e&lang=scss&scoped=true\"\n\nimport exportComponent 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-1b5a047e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, 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-a99ef6ee\"),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\nimport { Slider, Switch } from 'ant-design-vue'\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 return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_unref(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(_unref(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=a99ef6ee&lang=scss&scoped=true\"\n\nimport exportComponent 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-a99ef6ee\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, 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-7e9086fc\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-color-mask\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"1\"} }, \"重新着色(蒙版):\", -1))\nconst _hoisted_4 = {\n class: \"switch-wrapper\",\n style: {\"flex\":\"1\"}\n}\nconst _hoisted_5 = {\n class: \"row\",\n style: {\"margin-top\":\"15px\"}\n}\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))\n\nimport { ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { ImageColorElementMask } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ColorButton from './ColorButton.vue'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport {\n Popover,\n Slider,\n Switch,\n} from 'ant-design-vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementColorMask',\n setup(__props) {\n\nconst defaultColorMask = { color: 'transparent', opacity: 0.3 }\n\nconst slidesStore = useSlidesStore()\nconst { handleElement, handleElementId } = storeToRefs(useMainStore())\n\nconst colorMask = ref(defaultColorMask)\nconst hasColorMask = ref(false)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nwatch(handleElement, () => {\n if (!handleElement.value || handleElement.value.type !== 'image') return\n\n if (handleElement.value.colorMask) {\n colorMask.value = handleElement.value.colorMask\n hasColorMask.value = true\n }\n else hasColorMask.value = false\n}, { deep: true, immediate: true })\n\nconst toggleColorMask = (checked: boolean) => {\n if (!handleElement.value) return\n if (checked) {\n slidesStore.updateElement({ id: handleElement.value.id, props: { colorMask: defaultColorMask } })\n }\n else {\n slidesStore.removeElementProps({ id: handleElement.value.id, propName: 'colorMask' })\n }\n addHistorySnapshot()\n}\n\nconst updateColorMask = (colorMaskProp: Partial) => {\n const newColorMask = { ...colorMask.value, ...colorMaskProp }\n slidesStore.updateElement({ id: handleElementId.value, props: { colorMask: newColorMask } })\n addHistorySnapshot()\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_unref(Switch), {\n checked: hasColorMask.value,\n onChange: _cache[0] || (_cache[0] = checked => toggleColorMask(checked as boolean))\n }, null, 8, [\"checked\"])\n ])\n ]),\n (hasColorMask.value)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_5, [\n _hoisted_6,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(ColorPicker, {\n modelValue: colorMask.value.color,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = value => updateColorMask({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(ColorButton, {\n color: colorMask.value.color,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _hoisted_8,\n _createVNode(_unref(Slider), {\n class: \"opacity-slider\",\n max: 1,\n min: 0,\n step: 0.05,\n value: colorMask.value.opacity,\n onChange: _cache[2] || (_cache[2] = value => updateColorMask({ opacity: value as number }))\n }, null, 8, [\"step\", \"value\"])\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./ElementColorMask.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementColorMask.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementColorMask.vue?vue&type=style&index=0&id=7e9086fc&lang=scss&scoped=true\"\n\nimport exportComponent 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-7e9086fc\"]])\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-105f4640\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"image-style-panel\" }\nconst _hoisted_2 = { class: \"clip\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"按形状:\", -1))\nconst _hoisted_4 = { class: \"shape-clip\" }\nconst _hoisted_5 = [\"onClick\"]\nconst _hoisted_6 = {\n key: 0,\n class: \"title\"\n}\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'\nimport ElementColorMask from '../common/ElementColorMask.vue'\nimport FileInput from '@/components/FileInput.vue'\nimport {\n Divider,\n Button,\n Popover,\n} from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ImageStylePanel',\n setup(__props) {\n\nconst ButtonGroup = Button.Group\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', 'colorMask'],\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_IconDown = _resolveComponent(\"IconDown\")!\n const _component_IconTransform = _resolveComponent(\"IconTransform\")!\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(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\" 裁剪图片\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\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_5))\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_6, \"按\" + _toDisplayString(type.label) + \":\", 1))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(type.children, (item) => {\n return (_openBlock(), _createBlock(_unref(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(_unref(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(_unref(Divider)),\n _createVNode(ElementColorMask),\n _createVNode(_unref(Divider)),\n _createVNode(ElementFilter),\n _createVNode(_unref(Divider)),\n _createVNode(ElementOutline),\n _createVNode(_unref(Divider)),\n _createVNode(ElementShadow),\n _createVNode(_unref(Divider)),\n _createVNode(FileInput, {\n onChange: _cache[2] || (_cache[2] = files => replaceImage(files))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(Button), { class: \"full-width-btn\" }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTransform, { class: \"btn-icon\" }),\n _createTextVNode(\" 替换图片\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 重置样式\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 设为背景\")\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=105f4640&lang=scss&scoped=true\"\n\nimport exportComponent 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-105f4640\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createTextVNode as _createTextVNode, withCtx as _withCtx, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1d6d026a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"shape-style-panel\" }\nconst _hoisted_2 = { class: \"title\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"点击替换形状\", -1))\nconst _hoisted_4 = { class: \"shape-pool\" }\nconst _hoisted_5 = { class: \"shape-list\" }\nconst _hoisted_6 = { class: \"row\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"1\"} }, null, -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 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"渐变角度:\", -1))\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 { ShapePoolItem, SHAPE_LIST, SHAPE_PATH_FORMULAS } from '@/configs/shapes'\nimport emitter, { EmitterEvents } from '@/utils/emitter'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport useTextFormatPainter from '@/hooks/useTextFormatPainter'\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'\nimport TextColorButton from '../common/TextColorButton.vue'\nimport CheckboxButton from '@/components/CheckboxButton.vue'\nimport CheckboxButtonGroup from '@/components/CheckboxButtonGroup.vue'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport ShapeItemThumbnail from '@/views/Editor/CanvasTool/ShapeItemThumbnail.vue'\nimport {\n Divider,\n Button,\n Tooltip,\n Popover,\n Slider,\n Select,\n Radio,\n Input,\n} from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ShapeStylePanel',\n setup(__props) {\n\nconst { Group: RadioGroup, Button: RadioButton } = Radio\nconst { OptGroup: SelectOptGroup, Option: SelectOption } = Select\nconst InputGroup = Input.Group\nconst ButtonGroup = Button.Group\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { handleElement, handleElementId, richTextAttrs, availableFonts, textFormatPainter } = 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()\nconst { toggleFormatPainter } = useTextFormatPainter()\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\n// 修改形状\nconst changeShape = (shape: ShapePoolItem) => {\n const { width, height } = handleElement.value as PPTShapeElement\n const props: Partial = {\n viewBox: shape.viewBox,\n path: shape.path,\n special: shape.special,\n }\n if (shape.pathFormula) {\n props.pathFormula = shape.pathFormula\n props.viewBox = [width, height]\n\n const pathFormula = SHAPE_PATH_FORMULAS[shape.pathFormula]\n if ('editable' in pathFormula) {\n props.path = pathFormula.formula(width, height, pathFormula.defaultValue)\n props.keypoint = pathFormula.defaultValue\n }\n else props.path = pathFormula.formula(width, height)\n }\n else {\n props.pathFormula = undefined\n props.keypoint = undefined\n }\n updateElement(props)\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_IconDown = _resolveComponent(\"IconDown\")!\n const _component_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_IconAddText = _resolveComponent(\"IconAddText\")!\n const _component_IconText = _resolveComponent(\"IconText\")!\n const _component_IconHighLight = _resolveComponent(\"IconHighLight\")!\n const _component_IconTextBold = _resolveComponent(\"IconTextBold\")!\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_IconFormatBrush = _resolveComponent(\"IconFormatBrush\")!\n const _component_IconAlignTextLeft = _resolveComponent(\"IconAlignTextLeft\")!\n const _component_IconAlignTextCenter = _resolveComponent(\"IconAlignTextCenter\")!\n const _component_IconAlignTextRight = _resolveComponent(\"IconAlignTextRight\")!\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 _hoisted_3,\n _createVNode(_component_IconDown)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\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_5, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.children, (shape, index) => {\n return (_openBlock(), _createBlock(ShapeItemThumbnail, {\n class: \"shape-item\",\n key: index,\n shape: shape,\n onClick: ($event: any) => (changeShape(shape))\n }, null, 8, [\"shape\", \"onClick\"]))\n }), 128))\n ])\n ]))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_unref(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(_unref(SelectOption), { value: \"fill\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"纯色填充\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"gradient\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"渐变填充\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]),\n _hoisted_7,\n (fillType.value === 'fill')\n ? (_openBlock(), _createBlock(_unref(Popover), {\n key: 0,\n trigger: \"click\"\n }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(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(_unref(SelectOption), { value: \"linear\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"线性渐变\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"radial\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"径向渐变\")\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(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(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(_unref(Divider)),\n (_unref(handleShapeElement).text?.content)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createVNode(_unref(InputGroup), {\n compact: \"\",\n class: \"row\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(SelectOptGroup), { label: \"系统字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(availableFonts), (font) => {\n return (_openBlock(), _createBlock(_unref(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(_unref(SelectOptGroup), { label: \"在线字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(WEB_FONTS), (font) => {\n return (_openBlock(), _createBlock(_unref(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(_unref(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(_unref(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(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"文字颜色\"\n }, {\n default: _withCtx(() => [\n _createVNode(TextColorButton, {\n color: _unref(richTextAttrs).color,\n style: {\"flex\":\"3\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconText)\n ]),\n _: 1\n }, 8, [\"color\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"文字高亮\"\n }, {\n default: _withCtx(() => [\n _createVNode(TextColorButton, {\n color: _unref(richTextAttrs).backcolor,\n style: {\"flex\":\"3\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconHighLight)\n ]),\n _: 1\n }, 8, [\"color\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"增大字号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\"+\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"减小字号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\"-\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"加粗\"\n }, {\n default: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"斜体\"\n }, {\n default: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"下划线\"\n }, {\n default: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"删除线\"\n }, {\n default: _withCtx(() => [\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _unref(richTextAttrs).strikethrough,\n onClick: _cache[15] || (_cache[15] = ($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 ]),\n _: 1\n }),\n _createVNode(CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"清除格式\"\n }, {\n default: _withCtx(() => [\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n onClick: _cache[16] || (_cache[16] = ($event: any) => (emitRichTextCommand('clear')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFormat)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"格式刷\"\n }, {\n default: _withCtx(() => [\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: !!_unref(textFormatPainter),\n onClick: _cache[17] || (_cache[17] = ($event: any) => (_unref(toggleFormatPainter)()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFormatBrush)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_unref(Divider)),\n _createVNode(_unref(RadioGroup), {\n class: \"row\",\n \"button-style\": \"solid\",\n value: _unref(richTextAttrs).align,\n onChange: _cache[18] || (_cache[18] = e => emitRichTextCommand('align', e.target.value))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"左对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"右对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(RadioGroup), {\n class: \"row\",\n \"button-style\": \"solid\",\n value: textAlign.value,\n onChange: _cache[19] || (_cache[19] = e => updateTextAlign(e.target.value))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"顶对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"底对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Divider))\n ], 64))\n : _createCommentVNode(\"\", true),\n _createVNode(ElementOutline),\n _createVNode(_unref(Divider)),\n _createVNode(ElementShadow),\n _createVNode(_unref(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=1d6d026a&lang=scss&scoped=true\"\n\nimport exportComponent 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-1d6d026a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, createTextVNode as _createTextVNode, 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-0ca152b4\"),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 = { 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))\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))\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'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport {\n InputNumber,\n Divider,\n Popover,\n Select,\n} from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LineStylePanel',\n setup(__props) {\n\nconst SelectOption = Select.Option\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 return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createVNode(_unref(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(_unref(SelectOption), { value: \"solid\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"实线\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"dashed\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"虚线\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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_6, [\n _hoisted_7,\n _createVNode(_unref(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_8, [\n _hoisted_9,\n _createVNode(_unref(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(_unref(SelectOption), { value: \"\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"无\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"arrow\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"箭头\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"dot\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"圆点\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createVNode(_unref(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(_unref(SelectOption), { value: \"\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"无\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"arrow\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"箭头\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"dot\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"圆点\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createVNode(_unref(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=0ca152b4&lang=scss&scoped=true\"\n\nimport exportComponent 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-0ca152b4\"]])\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, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1eab5a3a\"),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 = { class: \"right\" }\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\nimport { Button, Input } from 'ant-design-vue'\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 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(_unref(Button), {\n class: \"btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (clear()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"清空\")\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(_unref(Button), {\n class: \"btn\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (closeEditor()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"取消\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\"确认\")\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=1eab5a3a&lang=scss&scoped=true\"\n\nimport exportComponent 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-1eab5a3a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, unref as _unref, withCtx as _withCtx, createElementVNode as _createElementVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, toDisplayString as _toDisplayString, withModifiers as _withModifiers, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-73760920\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"chart-style-panel\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = { class: \"row\" }\nconst _hoisted_4 = {\n key: 1,\n class: \"row\"\n}\nconst _hoisted_5 = {\n key: 2,\n class: \"row\"\n}\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 = { style: {\"flex\":\"2\"} }\nconst _hoisted_13 = {\n class: \"color-btn-wrap\",\n style: {\"flex\":\"3\"}\n}\nconst _hoisted_14 = [\"onClick\"]\nconst _hoisted_15 = { class: \"preset-themes\" }\nconst _hoisted_16 = [\"onClick\", \"onMouseenter\"]\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'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport {\n Divider,\n Button,\n Tooltip,\n Popover,\n Select,\n Modal,\n Checkbox,\n} from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst ButtonGroup = Button.Group\nconst SelectOption = Select.Option\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\nreturn (_ctx: any,_cache: any) => {\n const _component_IconEdit = _resolveComponent(\"IconEdit\")!\n const _component_IconCloseSmall = _resolveComponent(\"IconCloseSmall\")!\n const _component_IconPlus = _resolveComponent(\"IconPlus\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_unref(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 _createTextVNode(\" 编辑图表数据 \")\n ]),\n _: 1\n }),\n _createVNode(_unref(Divider)),\n (_unref(handleChartElement).chartType === 'line')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_unref(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 _createTextVNode(\"面积图样式\")\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(_unref(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 _createTextVNode(\"散点图样式\")\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_unref(Checkbox), {\n onChange: _cache[3] || (_cache[3] = e => updateOptions({ lineSmooth: e.target.checked })),\n checked: lineSmooth.value\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"使用平滑曲线\")\n ]),\n _: 1\n }, 8, [\"checked\"])\n ])\n ], 64))\n : _createCommentVNode(\"\", true),\n (_unref(handleChartElement).chartType === 'bar')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(_unref(Checkbox), {\n onChange: _cache[4] || (_cache[4] = e => updateOptions({ horizontalBars: e.target.checked })),\n checked: horizontalBars.value\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"条形图样式\")\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(_unref(Checkbox), {\n onChange: _cache[5] || (_cache[5] = e => updateOptions({ stackBars: e.target.checked })),\n checked: stackBars.value\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"堆叠样式\")\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(handleChartElement).chartType === 'pie')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createVNode(_unref(Checkbox), {\n onChange: _cache[6] || (_cache[6] = e => updateOptions({ donut: e.target.checked })),\n checked: donut.value\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"环形图样式\")\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(Divider)),\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createVNode(_unref(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(_unref(SelectOption), { value: \"\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"不显示\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"top\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"显示在上方\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"bottom\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"显示在下方\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createVNode(_unref(Divider)),\n _createElementVNode(\"div\", _hoisted_8, [\n _hoisted_9,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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_10, [\n _hoisted_11,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(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_12, _toDisplayString(index === 0 ? '主题配色:' : ''), 1),\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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_13, [\n _createVNode(ColorButton, {\n color: color,\n style: {\"width\":\"100%\"}\n }, null, 8, [\"color\"]),\n _createVNode(_unref(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_14))\n : _createCommentVNode(\"\", true)\n ]),\n _: 2\n }, 1032, [\"mouseEnterDelay\"])\n ])\n ]),\n _: 2\n }, 1024)\n ]))\n }), 128)),\n _createVNode(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(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_15, [\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_16))\n }), 128))\n ])\n }), 64))\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(Button), {\n class: \"no-padding\",\n style: {\"flex\":\"2\"}\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"推荐主题\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_unref(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 _createTextVNode(\" 添加主题色 \")\n ]),\n _: 1\n }, 8, [\"disabled\"])\n ]),\n _: 1\n }),\n _createVNode(_unref(Divider)),\n _createVNode(ElementOutline),\n _createVNode(_unref(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=73760920&lang=scss&scoped=true\"\n\nimport exportComponent 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-73760920\"]])\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-79a422e5\"),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 = { class: \"row\" }\nconst _hoisted_15 = { class: \"row\" }\nconst _hoisted_16 = /*#__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'\nimport TextColorButton from '../common/TextColorButton.vue'\nimport CheckboxButton from '@/components/CheckboxButton.vue'\nimport CheckboxButtonGroup from '@/components/CheckboxButtonGroup.vue'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport {\n Divider,\n Button,\n Tooltip,\n Popover,\n Select,\n Switch,\n Checkbox,\n Radio,\n Input,\n} from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'TableStylePanel',\n setup(__props) {\n\nconst { Group: RadioGroup, Button: RadioButton } = Radio\nconst { OptGroup: SelectOptGroup, Option: SelectOption } = Select\nconst InputGroup = Input.Group\nconst ButtonGroup = Button.Group\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: '',\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: '',\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 || '',\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_IconAddText = _resolveComponent(\"IconAddText\")!\n const _component_IconText = _resolveComponent(\"IconText\")!\n const _component_IconFill = _resolveComponent(\"IconFill\")!\n const _component_IconTextBold = _resolveComponent(\"IconTextBold\")!\n const _component_IconTextItalic = _resolveComponent(\"IconTextItalic\")!\n const _component_IconTextUnderline = _resolveComponent(\"IconTextUnderline\")!\n const _component_IconStrikethrough = _resolveComponent(\"IconStrikethrough\")!\n const _component_IconAlignTextLeft = _resolveComponent(\"IconAlignTextLeft\")!\n const _component_IconAlignTextCenter = _resolveComponent(\"IconAlignTextCenter\")!\n const _component_IconAlignTextRight = _resolveComponent(\"IconAlignTextRight\")!\n const _component_IconMinus = _resolveComponent(\"IconMinus\")!\n const _component_IconPlus = _resolveComponent(\"IconPlus\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_unref(InputGroup), {\n compact: \"\",\n class: \"row\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(SelectOptGroup), { label: \"系统字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(availableFonts), (font) => {\n return (_openBlock(), _createBlock(_unref(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(_unref(SelectOptGroup), { label: \"在线字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(WEB_FONTS), (font) => {\n return (_openBlock(), _createBlock(_unref(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(_unref(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(_unref(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(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"文字颜色\"\n }, {\n default: _withCtx(() => [\n _createVNode(TextColorButton, {\n color: textAttrs.value.color,\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconText)\n ]),\n _: 1\n }, 8, [\"color\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"单元格填充\"\n }, {\n default: _withCtx(() => [\n _createVNode(TextColorButton, {\n color: textAttrs.value.backcolor,\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFill)\n ]),\n _: 1\n }, 8, [\"color\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"加粗\"\n }, {\n default: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"斜体\"\n }, {\n default: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"下划线\"\n }, {\n default: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"删除线\"\n }, {\n default: _withCtx(() => [\n _createVNode(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(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"左对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"右对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Divider)),\n _createVNode(ElementOutline, { fixed: true }),\n _createVNode(_unref(Divider)),\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_unref(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(_unref(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(_unref(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(_unref(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(_unref(Divider)),\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createElementVNode(\"div\", _hoisted_12, [\n _createVNode(_unref(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(_unref(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 _createTextVNode(\"标题行\")\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(_unref(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 _createTextVNode(\"汇总行\")\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createVNode(_unref(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 _createTextVNode(\"第一列\")\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(_unref(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 _createTextVNode(\"最后一列\")\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _createElementVNode(\"div\", _hoisted_15, [\n _hoisted_16,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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=79a422e5&lang=scss&scoped=true\"\n\nimport exportComponent 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-79a422e5\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createTextVNode as _createTextVNode, unref as _unref, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-79d8ab96\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"latex-style-panel\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = { class: \"row\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"颜色:\", -1))\nconst _hoisted_5 = { class: \"row\" }\nconst _hoisted_6 = /*#__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'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport {\n InputNumber,\n Divider,\n Button,\n Popover,\n Modal,\n} from 'ant-design-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 return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_unref(Button), {\n style: {\"flex\":\"1\"},\n onClick: _cache[0] || (_cache[0] = ($event: any) => (latexEditorVisible.value = true))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"编辑 LaTeX\")\n ]),\n _: 1\n })\n ]),\n _createVNode(_unref(Divider)),\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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_5, [\n _hoisted_6,\n _createVNode(_unref(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(_unref(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=79d8ab96&lang=scss&scoped=true\"\n\nimport exportComponent 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-79d8ab96\"]])\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-802e1e06\"),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\" }\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\nimport FileInput from '@/components/FileInput.vue'\nimport { Button } from 'ant-design-vue'\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\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _hoisted_2,\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(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(_unref(Button), {\n style: {\"flex\":\"1\"},\n onClick: _cache[1] || (_cache[1] = ($event: any) => (updateVideo({ poster: '' })))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"重置封面\")\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=802e1e06&lang=scss&scoped=true\"\n\nimport exportComponent 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-802e1e06\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, 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-1da06c97\"),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'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport { Popover, Switch } from 'ant-design-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 return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(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(_unref(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=1da06c97&lang=scss&scoped=true\"\n\nimport exportComponent 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-1da06c97\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createVNode as _createVNode, unref as _unref, withCtx as _withCtx, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, 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-de815ffa\"),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 = { 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))\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'\nimport TextColorButton from '../common/TextColorButton.vue'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport {\n InputNumber,\n Divider,\n Button,\n Tooltip,\n Popover,\n Select,\n Radio,\n Input,\n} from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MultiStylePanel',\n setup(__props) {\n\nconst { Button: RadioButton, Group: RadioGroup } = Radio\nconst { OptGroup: SelectOptGroup, Option: SelectOption } = Select\nconst InputGroup = Input.Group\nconst ButtonGroup = Button.Group\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_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_IconAddText = _resolveComponent(\"IconAddText\")!\n const _component_IconText = _resolveComponent(\"IconText\")!\n const _component_IconHighLight = _resolveComponent(\"IconHighLight\")!\n const _component_IconAlignTextLeft = _resolveComponent(\"IconAlignTextLeft\")!\n const _component_IconAlignTextCenter = _resolveComponent(\"IconAlignTextCenter\")!\n const _component_IconAlignTextRight = _resolveComponent(\"IconAlignTextRight\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(Divider)),\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(_unref(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(_unref(SelectOption), { value: \"solid\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"实线边框\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"dashed\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"虚线边框\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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_8, [\n _hoisted_9,\n _createVNode(_unref(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(_unref(Divider)),\n _createVNode(_unref(InputGroup), {\n compact: \"\",\n class: \"row\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(SelectOptGroup), { label: \"系统字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(availableFonts), (font) => {\n return (_openBlock(), _createBlock(_unref(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(_unref(SelectOptGroup), { label: \"在线字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(WEB_FONTS), (font) => {\n return (_openBlock(), _createBlock(_unref(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(_unref(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(_unref(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(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"文字颜色\"\n }, {\n default: _withCtx(() => [\n _createVNode(TextColorButton, {\n color: _unref(richTextAttrs).color,\n style: {\"flex\":\"3\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconText)\n ]),\n _: 1\n }, 8, [\"color\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"文字高亮\"\n }, {\n default: _withCtx(() => [\n _createVNode(TextColorButton, {\n color: _unref(richTextAttrs).backcolor,\n style: {\"flex\":\"3\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconHighLight)\n ]),\n _: 1\n }, 8, [\"color\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"增大字号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\"+\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"减小字号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\"-\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"左对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"右对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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=de815ffa&lang=scss&scoped=true\"\n\nimport exportComponent 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-de815ffa\"]])\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, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-08d61819\"),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__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"对齐:\", -1))\nconst _hoisted_4 = { class: \"row\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"1\"} }, null, -1))\nconst _hoisted_6 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_7 = {\n key: 1,\n style: {\"flex\":\"1\"}\n}\nconst _hoisted_8 = { class: \"row\" }\nconst _hoisted_9 = /*#__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 { SHAPE_PATH_FORMULAS } from '@/configs/shapes'\nimport useOrderElement from '@/hooks/useOrderElement'\nimport useAlignElementToCanvas from '@/hooks/useAlignElementToCanvas'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport {\n InputNumber,\n Divider,\n Button,\n Tooltip,\n} from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementPositionPanel',\n setup(__props) {\n\nconst ButtonGroup = Button.Group\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\nconst isHorizontalText = computed(() => {\n return handleElement.value?.type === 'text' && !handleElement.value.vertical\n})\nconst isVerticalText = computed(() => {\n return handleElement.value?.type === 'text' && handleElement.value.vertical\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// 设置元素宽度、高度、旋转角度\n// 对形状设置宽高时,需要检查是否需要更新形状路径\nconst updateShapePathData = (width: number, height: number) => {\n if (handleElement.value && handleElement.value.type === 'shape' && 'pathFormula' in handleElement.value && handleElement.value.pathFormula) {\n const pathFormula = SHAPE_PATH_FORMULAS[handleElement.value.pathFormula]\n\n let path = ''\n if ('editable' in pathFormula) path = pathFormula.formula(width, height, handleElement.value.keypoint!)\n else path = pathFormula.formula(width, height)\n\n return {\n viewBox: [width, height],\n path,\n }\n }\n return null\n}\nconst updateWidth = (value: number) => {\n let props = { width: value }\n const shapePathData = updateShapePathData(value, height.value)\n if (shapePathData) props = { ...props, ...shapePathData }\n\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n}\nconst updateHeight = (value: number) => {\n let props = { height: value }\n const shapePathData = updateShapePathData(width.value, value)\n if (shapePathData) props = { ...props, ...shapePathData }\n\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_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 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(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\" 置顶\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 置底\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\" 上移\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 下移\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_unref(Divider)),\n _hoisted_3,\n _createVNode(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"左对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"水平居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"右对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"上对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"垂直居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"下对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Divider)),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_unref(InputNumber), {\n prefix: \"水平:\",\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_5,\n _createVNode(_unref(InputNumber), {\n prefix: \"垂直:\",\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 (_unref(handleElement)!.type !== 'line')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createVNode(_unref(InputNumber), {\n prefix: \"宽度:\",\n min: _unref(minSize),\n max: 1500,\n step: 5,\n disabled: _unref(isVerticalText),\n value: width.value,\n onChange: _cache[12] || (_cache[12] = value => updateWidth(value as number)),\n style: {\"flex\":\"4\"}\n }, null, 8, [\"min\", \"disabled\", \"value\"]),\n (['image', 'shape', 'audio'].includes(_unref(handleElement)!.type))\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (fixedRatio.value)\n ? (_openBlock(), _createBlock(_unref(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(_unref(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_7)),\n _createVNode(_unref(InputNumber), {\n prefix: \"高度:\",\n min: _unref(minSize),\n max: 800,\n step: 5,\n disabled: _unref(isHorizontalText) || _unref(handleElement)!.type === 'table',\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 : _createCommentVNode(\"\", true),\n (!['line', 'video', 'audio'].includes(_unref(handleElement)!.type))\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createVNode(_unref(Divider)),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_unref(InputNumber), {\n prefix: \"旋转:\",\n min: -180,\n max: 180,\n step: 5,\n value: rotate.value,\n onChange: _cache[16] || (_cache[16] = value => updateRotate(value as number)),\n style: {\"flex\":\"8\"}\n }, null, 8, [\"value\"]),\n _hoisted_9,\n _createElementVNode(\"div\", {\n class: \"text-btn\",\n onClick: _cache[17] || (_cache[17] = ($event: any) => (updateRotate45('-'))),\n style: {\"flex\":\"5\"}\n }, [\n _createVNode(_component_IconRotate),\n _createTextVNode(\" -45°\")\n ]),\n _createElementVNode(\"div\", {\n class: \"text-btn\",\n onClick: _cache[18] || (_cache[18] = ($event: any) => (updateRotate45('+'))),\n style: {\"flex\":\"5\"}\n }, [\n _createVNode(_component_IconRotate, {\n style: _normalizeStyle({ transform: 'rotateY(180deg)' })\n }, null, 8, [\"style\"]),\n _createTextVNode(\" +45°\")\n ])\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=08d61819&lang=scss&scoped=true\"\n\nimport exportComponent 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-08d61819\"]])\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-7a134147\"),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 = {\n key: 1,\n class: \"tip\"\n}\nconst _hoisted_10 = { class: \"sequence-content\" }\nconst _hoisted_11 = { class: \"index\" }\nconst _hoisted_12 = { class: \"text\" }\nconst _hoisted_13 = { class: \"handler\" }\nconst _hoisted_14 = {\n key: 0,\n class: \"configs\"\n}\nconst _hoisted_15 = { class: \"config-item\" }\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"3\"} }, \"持续时长:\", -1))\nconst _hoisted_17 = { class: \"config-item\" }\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"3\"} }, \"触发方式:\", -1))\nconst _hoisted_19 = { class: \"config-item\" }\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'\nimport {\n InputNumber,\n Divider,\n Button,\n Tooltip,\n Popover,\n Select,\n} from 'ant-design-vue'\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 SelectOption = Select.Option\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_IconClick = _resolveComponent(\"IconClick\")!\n const _component_IconPlayOne = _resolveComponent(\"IconPlayOne\")!\n const _component_IconCloseSmall = _resolveComponent(\"IconCloseSmall\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(handleElement))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createVNode(_unref(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(_unref(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 _createTextVNode(\" 添加动画 \")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createVNode(_component_IconClick, { style: {\"margin-right\":\"5px\"} }),\n _createTextVNode(\" 选中画布中的元素添加动画\")\n ])),\n _createVNode(_unref(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_10, [\n _createElementVNode(\"div\", _hoisted_11, _toDisplayString(element.index), 1),\n _createElementVNode(\"div\", _hoisted_12, \"【\" + _toDisplayString(element.elType) + \"】\" + _toDisplayString(element.animationEffect), 1),\n _createElementVNode(\"div\", _hoisted_13, [\n _createVNode(_unref(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(_unref(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_14, [\n _createVNode(_unref(Divider), { style: {\"margin\":\"16px 0\"} }),\n _createElementVNode(\"div\", _hoisted_15, [\n _hoisted_16,\n _createVNode(_unref(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_17, [\n _hoisted_18,\n _createVNode(_unref(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(_unref(SelectOption), { value: \"click\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"主动触发\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"meantime\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"与上一动画同时\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"auto\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"上一动画之后\")\n ]),\n _: 1\n })\n ]),\n _: 2\n }, 1032, [\"value\", \"onChange\"])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n _createVNode(_unref(Button), {\n style: {\"flex\":\"1\"},\n onClick: ($event: any) => (openAnimationPool(element.id))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"更换动画\")\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=7a134147&lang=scss&scoped=true\"\n\nimport exportComponent 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-7a134147\"]])\n\nexport default __exports__","export interface PresetTheme {\r\n background: string\r\n fontColor: string\r\n fontname: string\r\n colors: string[]\r\n}\r\n\r\nexport const PRESET_THEMES: PresetTheme[] = [\r\n {\r\n background: '#ffffff',\r\n fontColor: '#333333',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#5b9bd5', '#ed7d31', '#a5a5a5', '#ffc000', '#4472c4', '#70ad47'],\r\n },\r\n {\r\n background: '#ffffff',\r\n fontColor: '#333333',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#83992a', '#3c9670', '#44709d', '#a23b32', '#d87728', '#deb340'],\r\n },\r\n {\r\n background: '#ffffff',\r\n fontColor: '#333333',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#e48312', '#bd582c', '#865640', '#9b8357', '#c2bc80', '#94a088'],\r\n },\r\n {\r\n background: '#ffffff',\r\n fontColor: '#333333',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#bdc8df', '#003fa9', '#f5ba00', '#ff7567', '#7676d9', '#923ffc'],\r\n },\r\n {\r\n background: '#ffffff',\r\n fontColor: '#333333',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#90c225', '#54a121', '#e6b91e', '#e86618', '#c42f19', '#918756'],\r\n },\r\n {\r\n background: '#ffffff',\r\n fontColor: '#333333',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#1cade4', '#2683c6', '#27ced7', '#42ba97', '#3e8853', '#62a39f'],\r\n },\r\n {\r\n background: '#e9efd6',\r\n fontColor: '#333333',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#a5300f', '#de7e18', '#9f8351', '#728653', '#92aa4c', '#6aac91'],\r\n },\r\n {\r\n background: '#17444e',\r\n fontColor: '#ffffff',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#b01513', '#ea6312', '#e6b729', '#6bab90', '#55839a', '#9e5d9d'],\r\n },\r\n {\r\n background: '#36234d',\r\n fontColor: '#ffffff',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#b31166', '#e33d6f', '#e45f3c', '#e9943a', '#9b6bf2', '#d63cd0'],\r\n },\r\n {\r\n background: '#247fad',\r\n fontColor: '#ffffff',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#052f61', '#a50e82', '#14967c', '#6a9e1f', '#e87d37', '#c62324'],\r\n },\r\n {\r\n background: '#103f55',\r\n fontColor: '#ffffff',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#40aebd', '#97e8d5', '#a1cf49', '#628f3e', '#f2df3a', '#fcb01c'],\r\n },\r\n {\r\n background: '#242367',\r\n fontColor: '#ffffff',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#ac3ec1', '#477bd1', '#46b298', '#90ba4c', '#dd9d31', '#e25345'],\r\n },\r\n {\r\n background: '#e4b75e',\r\n fontColor: '#333333',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#f0a22e', '#a5644e', '#b58b80', '#c3986d', '#a19574', '#c17529'],\r\n },\r\n {\r\n background: '#333333',\r\n fontColor: '#ffffff',\r\n fontname: 'Microsoft Yahei',\r\n colors: ['#bdc8df', '#003fa9', '#f5ba00', '#ff7567', '#7676d9', '#923ffc'],\r\n },\r\n]","import tinycolor from 'tinycolor2'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { Slide } from '@/types/slides'\nimport { PresetTheme } from '@/configs/theme'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default () => {\n const slidesStore = useSlidesStore()\n const { slides, currentSlide, theme } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 获取指定幻灯片内所有颜色(主要的)\n const getSlideAllColors = (slide: Slide) => {\n const colors: string[] = []\n for (const el of slide.elements) {\n if (el.type === 'shape' && tinycolor(el.fill).getAlpha() !== 0) {\n const color = tinycolor(el.fill).toRgbString()\n if (!colors.includes(color)) colors.push(color)\n }\n if (el.type === 'text' && el.fill && tinycolor(el.fill).getAlpha() !== 0) {\n const color = tinycolor(el.fill).toRgbString()\n if (!colors.includes(color)) colors.push(color)\n }\n if (el.type === 'table' && el.theme && tinycolor(el.theme.color).getAlpha() !== 0) {\n const color = tinycolor(el.theme.color).toRgbString()\n if (!colors.includes(color)) colors.push(color)\n }\n if (el.type === 'chart' && el.fill && tinycolor(el.fill).getAlpha() !== 0) {\n const color = tinycolor(el.fill).toRgbString()\n if (!colors.includes(color)) colors.push(color)\n }\n if (el.type === 'line' && tinycolor(el.color).getAlpha() !== 0) {\n const color = tinycolor(el.color).toRgbString()\n if (!colors.includes(color)) colors.push(color)\n }\n if (el.type === 'audio' && tinycolor(el.color).getAlpha() !== 0) {\n const color = tinycolor(el.color).toRgbString()\n if (!colors.includes(color)) colors.push(color)\n }\n }\n return colors\n }\n \n // 创建原颜色与新颜色的对应关系表\n const createSlideThemeColorMap = (slide: Slide, newColors: string[]): { [key: string]: string } => {\n const oldColors = getSlideAllColors(slide)\n const themeColorMap = {}\n \n if (oldColors.length > newColors.length) {\n const analogous = tinycolor(newColors[0]).analogous(oldColors.length - newColors.length + 10)\n const otherColors = analogous.map(item => item.toHexString()).slice(1)\n newColors.push(...otherColors)\n }\n for (let i = 0; i < oldColors.length; i++) {\n themeColorMap[oldColors[i]] = newColors[i]\n }\n \n return themeColorMap\n }\n \n // 设置幻灯片主题\n const setSlideTheme = (slide: Slide, theme: PresetTheme) => {\n const colorMap = createSlideThemeColorMap(slide, theme.colors)\n \n if (!slide.background || slide.background.type !== 'image') {\n slide.background = {\n type: 'solid',\n color: theme.background,\n }\n }\n for (const el of slide.elements) {\n if (el.type === 'shape') {\n el.fill = colorMap[tinycolor(el.fill).toRgbString()] || el.fill\n if (el.gradient) delete el.gradient\n }\n if (el.type === 'text') {\n if (el.fill) el.fill = colorMap[tinycolor(el.fill).toRgbString()] || el.fill\n el.defaultColor = theme.fontColor\n el.defaultFontName = theme.fontname\n }\n if (el.type === 'table') {\n if (el.theme) el.theme.color = colorMap[tinycolor(el.theme.color).toRgbString()] || el.theme.color\n for (const rowCells of el.data) {\n for (const cell of rowCells) {\n if (cell.style) {\n cell.style.color = theme.fontColor\n cell.style.fontname = theme.fontname\n }\n }\n }\n }\n if (el.type === 'chart') {\n el.themeColor = [colorMap[tinycolor(el.themeColor[0]).toRgbString()]] || el.themeColor\n el.gridColor = theme.fontColor\n }\n if (el.type === 'line') el.color = colorMap[tinycolor(el.color).toRgbString()] || el.color\n if (el.type === 'audio') el.color = colorMap[tinycolor(el.color).toRgbString()] || el.color\n if (el.type === 'latex') el.color = theme.fontColor\n }\n }\n \n // 应用预置主题(单页)\n const applyPresetThemeToSingleSlide = (theme: PresetTheme) => {\n const newSlide: Slide = JSON.parse(JSON.stringify(currentSlide.value))\n setSlideTheme(newSlide, theme)\n slidesStore.updateSlide({\n background: newSlide.background,\n elements: newSlide.elements,\n })\n addHistorySnapshot()\n }\n \n // 应用预置主题(全部)\n const applyPresetThemeToAllSlides = (theme: PresetTheme) => {\n const newSlides: Slide[] = JSON.parse(JSON.stringify(slides.value))\n for (const slide of newSlides) {\n setSlideTheme(slide, theme)\n }\n slidesStore.setTheme({\n backgroundColor: theme.background,\n themeColor: theme.colors[0],\n fontColor: theme.fontColor,\n fontName: theme.fontname,\n })\n slidesStore.setSlides(newSlides)\n addHistorySnapshot()\n }\n \n // 将当前主题配置应用到全部页面\n const applyThemeToAllSlides = () => {\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 type: 'solid',\n color: backgroundColor\n }\n }\n \n for (const el of slide.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 return {\n applyPresetThemeToSingleSlide,\n applyPresetThemeToAllSlides,\n applyThemeToAllSlides,\n }\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-41419138\"),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__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"1\"} }, null, -1))\nconst _hoisted_5 = {\n key: 0,\n class: \"background-image-wrapper\"\n}\nconst _hoisted_6 = { class: \"background-image\" }\nconst _hoisted_7 = {\n key: 1,\n class: \"background-gradient-wrapper\"\n}\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 = { class: \"row\" }\nconst _hoisted_15 = { class: \"row\" }\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"画布尺寸:\", -1))\nconst _hoisted_17 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"全局主题\", -1))\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 = { class: \"row\" }\nconst _hoisted_23 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"背景颜色:\", -1))\nconst _hoisted_24 = { class: \"row\" }\nconst _hoisted_25 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"主题色:\", -1))\nconst _hoisted_26 = { class: \"row\" }\nconst _hoisted_27 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"预置主题\", -1))\nconst _hoisted_28 = { class: \"theme-list\" }\nconst _hoisted_29 = { class: \"theme-item-content\" }\nconst _hoisted_30 = { class: \"colors\" }\nconst _hoisted_31 = { class: \"btns\" }\nconst _hoisted_32 = [\"onClick\"]\nconst _hoisted_33 = [\"onClick\"]\n\nimport { computed, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { SlideBackground, SlideTheme } from '@/types/slides'\nimport { PRESET_THEMES } from '@/configs/theme'\nimport { WEB_FONTS } from '@/configs/font'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport useSlideTheme from '@/hooks/useSlideTheme'\nimport { getImageDataURL } from '@/utils/image'\n\nimport ColorButton from './common/ColorButton.vue'\nimport FileInput from '@/components/FileInput.vue'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport {\n Divider,\n Button,\n Popover,\n Slider,\n Select,\n} from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'SlideDesignPanel',\n setup(__props) {\n\nconst { OptGroup: SelectOptGroup, Option: SelectOption } = Select\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()\nconst {\n applyPresetThemeToSingleSlide,\n applyPresetThemeToAllSlides,\n applyThemeToAllSlides,\n} = useSlideTheme()\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 updateViewportRatio = (value: number) => {\n slidesStore.setViewportRatio(value)\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconPlus = _resolveComponent(\"IconPlus\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _hoisted_2,\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_unref(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(_unref(SelectOption), { value: \"solid\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"纯色填充\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"image\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"图片填充\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"gradient\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"渐变填充\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]),\n _hoisted_4,\n (_unref(background).type === 'solid')\n ? (_openBlock(), _createBlock(_unref(Popover), {\n key: 0,\n trigger: \"click\"\n }, {\n content: _withCtx(() => [\n _createVNode(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(_unref(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(_unref(SelectOption), { value: \"contain\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"缩放\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"repeat\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"拼贴\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"cover\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"缩放铺满\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]))\n : (_openBlock(), _createBlock(_unref(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(_unref(SelectOption), { value: \"linear\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"线性渐变\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: \"radial\" }, {\n default: _withCtx(() => [\n _createTextVNode(\"径向渐变\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]))\n ]),\n (_unref(background).type === 'image')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createVNode(FileInput, {\n onChange: _cache[4] || (_cache[4] = files => uploadBackgroundImage(files))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_6, [\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_7, [\n _createElementVNode(\"div\", _hoisted_8, [\n _hoisted_9,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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_10, [\n _hoisted_11,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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_12, [\n _hoisted_13,\n _createVNode(_unref(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_14, [\n _createVNode(_unref(Button), {\n style: {\"flex\":\"1\"},\n onClick: _cache[8] || (_cache[8] = ($event: any) => (applyBackgroundAllSlide()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"应用背景到全部\")\n ]),\n _: 1\n })\n ]),\n _createVNode(_unref(Divider)),\n _createElementVNode(\"div\", _hoisted_15, [\n _hoisted_16,\n _createVNode(_unref(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(_unref(SelectOption), { value: 0.5625 }, {\n default: _withCtx(() => [\n _createTextVNode(\"宽屏 16 : 9\")\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_unref(SelectOption), { value: 0.625 }, {\n default: _withCtx(() => [\n _createTextVNode(\"宽屏 16 : 10\")\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_unref(SelectOption), { value: 0.75 }, {\n default: _withCtx(() => [\n _createTextVNode(\"标准 4 : 3\")\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_unref(SelectOption), { value: 0.70710678 }, {\n default: _withCtx(() => [\n _createTextVNode(\"纸张 A3 / A4\")\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createVNode(_unref(Divider)),\n _hoisted_17,\n _createElementVNode(\"div\", _hoisted_18, [\n _hoisted_19,\n _createVNode(_unref(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(_unref(SelectOptGroup), { label: \"系统字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(availableFonts), (font) => {\n return (_openBlock(), _createBlock(_unref(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(_unref(SelectOptGroup), { label: \"在线字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(WEB_FONTS), (font) => {\n return (_openBlock(), _createBlock(_unref(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_20, [\n _hoisted_21,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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_22, [\n _hoisted_23,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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_24, [\n _hoisted_25,\n _createVNode(_unref(Popover), { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(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\", _hoisted_26, [\n _createVNode(_unref(Button), {\n style: {\"flex\":\"1\"},\n onClick: _cache[14] || (_cache[14] = ($event: any) => (_unref(applyThemeToAllSlides)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"应用主题到全部\")\n ]),\n _: 1\n })\n ]),\n _createVNode(_unref(Divider)),\n _hoisted_27,\n _createElementVNode(\"div\", _hoisted_28, [\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({\n backgroundColor: item.background,\n fontFamily: item.fontname,\n })\n }, [\n _createElementVNode(\"div\", _hoisted_29, [\n _createElementVNode(\"div\", {\n class: \"text\",\n style: _normalizeStyle({ color: item.fontColor })\n }, \"文字 Aa\", 4),\n _createElementVNode(\"div\", _hoisted_30, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.colors, (color, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"color-block\",\n key: index,\n style: _normalizeStyle({ backgroundColor: color})\n }, null, 4))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_31, [\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: ($event: any) => (_unref(applyPresetThemeToSingleSlide)(item))\n }, \"应用\", 8, _hoisted_32),\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: ($event: any) => (_unref(applyPresetThemeToAllSlides)(item))\n }, \"应用全局\", 8, _hoisted_33)\n ])\n ])\n ], 4))\n }), 128))\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=41419138&lang=scss&scoped=true\"\n\nimport exportComponent 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-41419138\"]])\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, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-c4273212\"),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\" }\n\nimport { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { TurningMode } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport { Button } from 'ant-design-vue'\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 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(_unref(Button), {\n style: {\"width\":\"100%\"},\n onClick: _cache[0] || (_cache[0] = ($event: any) => (applyAllSlide()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"应用到全部\")\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=c4273212&lang=scss&scoped=true\"\n\nimport exportComponent 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-c4273212\"]])\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-c88d31ba\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"multi-position-panel\" }\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\nimport {\n Divider,\n Button,\n Tooltip,\n} from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MultiPositionPanel',\n setup(__props) {\n\nconst ButtonGroup = Button.Group\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_IconAlignHorizontally = _resolveComponent(\"IconAlignHorizontally\")!\n const _component_IconAlignRight = _resolveComponent(\"IconAlignRight\")!\n const _component_IconAlignTop = _resolveComponent(\"IconAlignTop\")!\n const _component_IconAlignVertically = _resolveComponent(\"IconAlignVertically\")!\n const _component_IconAlignBottom = _resolveComponent(\"IconAlignBottom\")!\n const _component_IconGroup = _resolveComponent(\"IconGroup\")!\n const _component_IconUngroup = _resolveComponent(\"IconUngroup\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"左对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"水平居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"右对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"上对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"垂直居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"下对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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(_unref(ButtonGroup), {\n key: 0,\n class: \"row\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(Button), {\n style: {\"flex\":\"1\"},\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_unref(uniformHorizontalDisplay)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"水平均匀分布\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), {\n style: {\"flex\":\"1\"},\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_unref(uniformVerticalDisplay)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"垂直均匀分布\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(Divider)),\n _createVNode(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\"组合\")\n ]),\n _: 1\n }, 8, [\"disabled\"]),\n _createVNode(_unref(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 _createTextVNode(\"取消组合\")\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=c88d31ba&lang=scss&scoped=true\"\n\nimport exportComponent 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-c88d31ba\"]])\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 { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5a56d59c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"fullscreen-spin\"\n}\nconst _hoisted_2 = { class: \"spin\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"spinner\" }, null, -1))\nconst _hoisted_4 = { class: \"text\" }\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\n\n\nreturn (_ctx: any,_cache: any) => {\n return (__props.loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(__props.tip), 1)\n ])\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=5a56d59c&lang=scss&scoped=true\"\n\nimport exportComponent 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-5a56d59c\"]])\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, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-92a8f63e\"),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 = { class: \"row\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"导出范围:\", -1))\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: \"row\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"忽略在线字体:\", -1))\nconst _hoisted_14 = { class: \"config-item\" }\nconst _hoisted_15 = { class: \"btns\" }\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'\nimport FullscreenSpin from '@/components/FullscreenSpin.vue'\nimport {\n Button,\n Tooltip,\n Slider,\n Switch,\n Radio,\n} from 'ant-design-vue'\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\nconst { Group: RadioGroup, Button: RadioButton } = Radio\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 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(_unref(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(_unref(RadioButton), {\n style: {\"width\":\"50%\"},\n value: \"jpeg\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"JPEG\")\n ]),\n _: 1\n }),\n _createVNode(_unref(RadioButton), {\n style: {\"width\":\"50%\"},\n value: \"png\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"PNG\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createVNode(_unref(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(_unref(RadioButton), {\n style: {\"width\":\"33.33%\"},\n value: \"all\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"全部\")\n ]),\n _: 1\n }),\n _createVNode(_unref(RadioButton), {\n style: {\"width\":\"33.33%\"},\n value: \"current\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"当前页\")\n ]),\n _: 1\n }),\n _createVNode(_unref(RadioButton), {\n style: {\"width\":\"33.33%\"},\n value: \"custom\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"自定义\")\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(_unref(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_10, [\n _hoisted_11,\n _createVNode(_unref(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_12, [\n _hoisted_13,\n _createElementVNode(\"div\", _hoisted_14, [\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"导出时默认忽略在线字体,若您在幻灯片中使用了在线字体,且希望导出后保留相关样式,可选择关闭【忽略在线字体】选项,但要注意这将会增加导出用时。\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(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_15, [\n _createVNode(_unref(Button), {\n class: \"btn export\",\n type: \"primary\",\n onClick: _cache[5] || (_cache[5] = ($event: any) => (expImage()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"导出图片\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), {\n class: \"btn close\",\n onClick: _cache[6] || (_cache[6] = ($event: any) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"关闭\")\n ]),\n _: 1\n })\n ]),\n _createVNode(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=92a8f63e&lang=scss&scoped=true\"\n\nimport exportComponent 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-92a8f63e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, 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-0cc0995e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"export-json-dialog\" }\nconst _hoisted_2 = { class: \"preview\" }\nconst _hoisted_3 = { class: \"btns\" }\n\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useExport from '@/hooks/useExport'\n\nimport { Button } from 'ant-design-vue'\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 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(_unref(Button), {\n class: \"btn export\",\n type: \"primary\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_unref(exportJSON)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"导出 JSON\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), {\n class: \"btn close\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"关闭\")\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=0cc0995e&lang=scss&scoped=true\"\n\nimport exportComponent 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-0cc0995e\"]])\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 }\n\n const handleAfterprint = () => {\n iframe.removeEventListener('load', handleLoadIframe)\n iframeContentWindow.removeEventListener('afterprint', handleAfterprint)\n document.body.removeChild(iframe)\n }\n\n iframe.addEventListener('load', handleLoadIframe)\n iframeContentWindow.addEventListener('afterprint', handleAfterprint)\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, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-527855fb\"),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 = { class: \"row\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"每页数量:\", -1))\nconst _hoisted_8 = { class: \"row\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"边缘留白:\", -1))\nconst _hoisted_10 = { class: \"config-item\" }\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"tip\" }, \" 注意:若打印预览与实际样式不一致,请在弹出的打印窗口中勾选【背景图形】选项。 \", -1))\nconst _hoisted_12 = { class: \"btns\" }\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'\nimport {\n Button,\n Select,\n Switch,\n Radio,\n} from 'ant-design-vue'\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\nconst { Group: RadioGroup, Button: RadioButton } = Radio\nconst SelectOption = Select.Option\n\n\n\nconst { slides, currentSlide, viewportRatio } = 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' ? 1600 * viewportRatio.value * count.value : 1600 * viewportRatio.value,\n margin: padding.value ? 50 : 0,\n }\n print(pdfThumbnailsRef.value, pageSize)\n}\n\nreturn (_ctx: any,_cache: any) => {\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(_unref(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(_unref(RadioButton), {\n style: {\"width\":\"50%\"},\n value: \"all\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"全部幻灯片\")\n ]),\n _: 1\n }),\n _createVNode(_unref(RadioButton), {\n style: {\"width\":\"50%\"},\n value: \"current\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"当前幻灯片\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createVNode(_unref(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(_unref(SelectOption), { value: 1 }, {\n default: _withCtx(() => [\n _createTextVNode(\"1\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: 2 }, {\n default: _withCtx(() => [\n _createTextVNode(\"2\")\n ]),\n _: 1\n }),\n _createVNode(_unref(SelectOption), { value: 3 }, {\n default: _withCtx(() => [\n _createTextVNode(\"3\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _hoisted_9,\n _createElementVNode(\"div\", _hoisted_10, [\n _createVNode(_unref(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_11\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _createVNode(_unref(Button), {\n class: \"btn export\",\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (expPDF()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"打印 / 导出 PDF\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), {\n class: \"btn close\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"关闭\")\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=527855fb&lang=scss&scoped=true\"\n\nimport exportComponent 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-527855fb\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, unref as _unref, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-018847a8\"),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 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_6 = [\"data-range\"]\nconst _hoisted_7 = { class: \"row\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"覆盖默认母版:\", -1))\nconst _hoisted_9 = { class: \"config-item\" }\nconst _hoisted_10 = { class: \"btns\" }\n\nimport { computed, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useExport from '@/hooks/useExport'\n\nimport FullscreenSpin from '@/components/FullscreenSpin.vue'\nimport {\n Button,\n Slider,\n Switch,\n Radio,\n} from 'ant-design-vue'\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\nconst { Group: RadioGroup, Button: RadioButton } = Radio\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 return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createVNode(_unref(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(_unref(RadioButton), {\n style: {\"width\":\"33.33%\"},\n value: \"all\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"全部\")\n ]),\n _: 1\n }),\n _createVNode(_unref(RadioButton), {\n style: {\"width\":\"33.33%\"},\n value: \"current\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"当前页\")\n ]),\n _: 1\n }),\n _createVNode(_unref(RadioButton), {\n style: {\"width\":\"33.33%\"},\n value: \"custom\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"自定义\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n (rangeType.value === 'custom')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", {\n class: \"title\",\n \"data-range\": `(${range.value[0]} ~ ${range.value[1]})`\n }, \"自定义范围:\", 8, _hoisted_6),\n _createVNode(_unref(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_7, [\n _hoisted_8,\n _createElementVNode(\"div\", _hoisted_9, [\n _createVNode(_unref(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_10, [\n _createVNode(_unref(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 _createTextVNode(\"导出 PPTX\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), {\n class: \"btn close\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"关闭\")\n ]),\n _: 1\n })\n ]),\n _createVNode(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=018847a8&lang=scss&scoped=true\"\n\nimport exportComponent 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-018847a8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, unref as _unref, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-40c1ae3a\"),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 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_6 = [\"data-range\"]\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"tip\" }, \" 提示:.pptist 是本应用的特有文件后缀,支持将该类型的文件导入回应用中。 \", -1))\nconst _hoisted_8 = { class: \"btns\" }\n\nimport { computed, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useExport from '@/hooks/useExport'\n\nimport {\n Button,\n Slider,\n Radio,\n} from 'ant-design-vue'\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\nconst { Group: RadioGroup, Button: RadioButton } = Radio\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 return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createVNode(_unref(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(_unref(RadioButton), {\n style: {\"width\":\"33.33%\"},\n value: \"all\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"全部\")\n ]),\n _: 1\n }),\n _createVNode(_unref(RadioButton), {\n style: {\"width\":\"33.33%\"},\n value: \"current\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"当前页\")\n ]),\n _: 1\n }),\n _createVNode(_unref(RadioButton), {\n style: {\"width\":\"33.33%\"},\n value: \"custom\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"自定义\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n (rangeType.value === 'custom')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", {\n class: \"title\",\n \"data-range\": `(${range.value[0]} ~ ${range.value[1]})`\n }, \"自定义范围:\", 8, _hoisted_6),\n _createVNode(_unref(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_7\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_unref(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 _createTextVNode(\"导出 .pptist 文件\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), {\n class: \"btn close\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"关闭\")\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=40c1ae3a&lang=scss&scoped=true\"\n\nimport exportComponent 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-40c1ae3a\"]])\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 { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, renderSlot as _renderSlot, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-68252e2c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"title\" }\nconst _hoisted_2 = { class: \"content\" }\n\nimport { onMounted, ref } from 'vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MoveablePanel',\n props: {\n width: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n left: {\n type: Number,\n default: 10,\n },\n top: {\n type: Number,\n default: 10,\n },\n title: {\n type: String,\n default: '',\n },\n moveable: {\n type: Boolean,\n default: 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 x = ref(0)\nconst y = ref(0)\n\nonMounted(() => {\n if (props.left >= 0) x.value = props.left\n else x.value = document.body.clientWidth + props.left - props.width\n\n if (props.top >= 0) y.value = props.top\n else y.value = document.body.clientHeight + props.top - props.height\n})\n\nconst startMove = (e: MouseEvent) => {\n if (!props.moveable) return\n\n let isMouseDown = true\n\n const windowWidth = document.body.clientWidth\n const clientHeight = document.body.clientHeight\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n\n const originLeft = x.value\n const originTop = y.value\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const moveX = e.pageX - startPageX\n const moveY = e.pageY - startPageY\n\n let left = originLeft + moveX\n let top = originTop + moveY\n\n if (left < 0) left = 0\n if (top < 0) top = 0\n if (left + props.width > windowWidth) left = windowWidth - props.width\n if (top + props.height > clientHeight) top = clientHeight - props.height\n\n x.value = left\n y.value = top\n }\n document.onmouseup = () => {\n isMouseDown = false\n\n document.onmousemove = null\n document.onmouseup = null\n }\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconClose = _resolveComponent(\"IconClose\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"moveable-panel\",\n style: _normalizeStyle({\n width: __props.width + 'px',\n height: __props.height + 'px',\n left: x.value + 'px',\n top: y.value + 'px',\n })\n }, [\n (__props.title)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", {\n class: \"header\",\n onMousedown: _cache[1] || (_cache[1] = $event => startMove($event))\n }, [\n _createElementVNode(\"div\", _hoisted_1, _toDisplayString(__props.title), 1),\n _createElementVNode(\"div\", {\n class: \"close-btn\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('close')))\n }, [\n _createVNode(_component_IconClose)\n ])\n ], 32),\n _createElementVNode(\"div\", _hoisted_2, [\n _renderSlot(_ctx.$slots, \"default\")\n ])\n ], 64))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"content\",\n onMousedown: _cache[2] || (_cache[2] = $event => startMove($event))\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ], 32))\n ], 4))\n}\n}\n\n})","import script from \"./MoveablePanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MoveablePanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MoveablePanel.vue?vue&type=style&index=0&id=68252e2c&lang=scss&scoped=true\"\n\nimport exportComponent 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-68252e2c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, withKeys as _withKeys, toDisplayString as _toDisplayString, withModifiers as _withModifiers, createBlock as _createBlock, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-64f9ccca\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"handler\"\n}\nconst _hoisted_2 = { class: \"btns\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"icon-btns\"\n}\nconst _hoisted_4 = { class: \"element-list\" }\nconst _hoisted_5 = {\n key: 0,\n class: \"group-els\"\n}\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"group-title\" }, \"组合\", -1))\nconst _hoisted_7 = [\"onClick\", \"onDblclick\"]\nconst _hoisted_8 = [\"id\", \"value\", \"onBlur\", \"onKeydown\"]\nconst _hoisted_9 = {\n key: 1,\n class: \"name\"\n}\nconst _hoisted_10 = { class: \"icons\" }\nconst _hoisted_11 = [\"onClick\", \"onDblclick\"]\nconst _hoisted_12 = [\"id\", \"value\", \"onBlur\", \"onKeydown\"]\nconst _hoisted_13 = {\n key: 1,\n class: \"name\"\n}\nconst _hoisted_14 = { class: \"icons\" }\n\nimport { computed, nextTick, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore, useMainStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport { ELEMENT_TYPE_ZH } from '@/configs/element'\nimport useOrderElement from '@/hooks/useOrderElement'\nimport { ElementOrderCommands } from '@/types/edit'\n\nimport MoveablePanel from '@/components/MoveablePanel.vue'\nimport { Button, Input } from 'ant-design-vue'\n\ninterface GroupElements {\n type: 'group'\n id: string\n elements: PPTElement[]\n}\ntype ElementItem = PPTElement | GroupElements\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'SelectPanel',\n setup(__props) {\n\nconst slidesStore = useSlidesStore()\nconst mainStore = useMainStore()\nconst { currentSlide } = storeToRefs(slidesStore)\nconst { handleElement, handleElementId, activeElementIdList, activeGroupElementId, hiddenElementIdList } = storeToRefs(mainStore)\n\nconst { orderElement } = useOrderElement()\n\nconst elements = computed(() => {\n const _elements: ElementItem[] = []\n\n for (const el of currentSlide.value.elements) {\n if (el.groupId) {\n const lastItem = _elements[_elements.length - 1]\n\n if (lastItem && lastItem.type === 'group' && lastItem.id && lastItem.id === el.groupId) {\n lastItem.elements.push(el)\n }\n else _elements.push({ type: 'group', id: el.groupId, elements: [el] })\n }\n else _elements.push(el)\n }\n\n return _elements\n})\n\nconst selectGroupEl = (item: GroupElements, id: string) => {\n if (handleElementId.value === id) return\n if (hiddenElementIdList.value.includes(id)) return\n\n const idList = item.elements.map(el => el.id)\n mainStore.setActiveElementIdList(idList)\n mainStore.setHandleElementId(id)\n nextTick(() => mainStore.setActiveGroupElementId(id))\n}\n\nconst selectEl = (id: string) => {\n if (handleElementId.value === id) return\n if (hiddenElementIdList.value.includes(id)) return\n\n mainStore.setActiveElementIdList([id])\n}\n\nconst hideElement = (id: string) => {\n if (hiddenElementIdList.value.includes(id)) {\n mainStore.setHiddenElementIdList(hiddenElementIdList.value.filter(item => item !== id))\n }\n else mainStore.setHiddenElementIdList([...hiddenElementIdList.value, id])\n\n if (activeElementIdList.value.includes(id)) mainStore.setActiveElementIdList([])\n}\n\nconst showAll = () => {\n const currentSlideElIdList = currentSlide.value.elements.map(item => item.id)\n const needHiddenElementIdList = hiddenElementIdList.value.filter(item => !currentSlideElIdList.includes(item))\n mainStore.setHiddenElementIdList(needHiddenElementIdList)\n}\nconst hideAll = () => {\n const currentSlideElIdList = currentSlide.value.elements.map(item => item.id)\n mainStore.setHiddenElementIdList([...hiddenElementIdList.value, ...currentSlideElIdList])\n if (activeElementIdList.value.length) mainStore.setActiveElementIdList([])\n}\n\nconst editingElId = ref('')\n\nconst saveElementName = (e: FocusEvent | KeyboardEvent, id: string) => {\n const name = (e.target as HTMLInputElement).value\n slidesStore.updateElement({ id, props: { name } })\n editingElId.value = ''\n}\n\nconst enterEdit = (id: string) => {\n editingElId.value = id\n nextTick(() => {\n const inputRef = document.querySelector(`#input-${id}`) as HTMLInputElement\n inputRef.focus()\n })\n}\n\nconst close = () => {\n mainStore.setSelectPanelState(false)\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconDown = _resolveComponent(\"IconDown\")!\n const _component_IconUp = _resolveComponent(\"IconUp\")!\n const _component_IconPreviewClose = _resolveComponent(\"IconPreviewClose\")!\n const _component_IconPreviewOpen = _resolveComponent(\"IconPreviewOpen\")!\n\n return (_openBlock(), _createBlock(MoveablePanel, {\n class: \"select-panel\",\n width: 200,\n height: 360,\n title: `选择(${_unref(activeElementIdList).length}/${_unref(currentSlide).elements.length})`,\n left: -270,\n top: 90,\n onClose: _cache[4] || (_cache[4] = ($event: any) => (close()))\n }, {\n default: _withCtx(() => [\n (_unref(elements).length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_unref(Button), {\n size: \"small\",\n style: {\"margin-right\":\"5px\"},\n onClick: _cache[0] || (_cache[0] = ($event: any) => (showAll()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"全部显示\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), {\n size: \"small\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (hideAll()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"全部隐藏\")\n ]),\n _: 1\n })\n ]),\n (_unref(handleElement))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createVNode(_component_IconDown, {\n class: \"icon-btn\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_unref(orderElement)(_unref(handleElement)!, _unref(ElementOrderCommands).UP)))\n }),\n _createVNode(_component_IconUp, {\n class: \"icon-btn\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_unref(orderElement)(_unref(handleElement)!, _unref(ElementOrderCommands).DOWN)))\n })\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_4, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(elements), (item) => {\n return (_openBlock(), _createElementBlock(_Fragment, {\n key: item.id\n }, [\n (item.type === 'group')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _hoisted_6,\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.elements, (groupItem) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"item\", {\n 'active': _unref(activeElementIdList).includes(groupItem.id),\n 'group-active': _unref(activeGroupElementId).includes(groupItem.id),\n }]),\n key: groupItem.id,\n onClick: ($event: any) => (selectGroupEl(item, groupItem.id)),\n onDblclick: ($event: any) => (enterEdit(groupItem.id))\n }, [\n (editingElId.value === groupItem.id)\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n id: `input-${groupItem.id}`,\n value: groupItem.name || _unref(ELEMENT_TYPE_ZH)[groupItem.type],\n class: \"input\",\n type: \"text\",\n onBlur: $event => saveElementName($event, groupItem.id),\n onKeydown: _withKeys($event => saveElementName($event, groupItem.id), [\"enter\"])\n }, null, 40, _hoisted_8))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_9, _toDisplayString(groupItem.name || _unref(ELEMENT_TYPE_ZH)[groupItem.type]), 1)),\n _createElementVNode(\"div\", _hoisted_10, [\n (_unref(hiddenElementIdList).includes(groupItem.id))\n ? (_openBlock(), _createBlock(_component_IconPreviewClose, {\n key: 0,\n style: {\"font-size\":\"17px\"},\n onClick: _withModifiers(($event: any) => (hideElement(groupItem.id)), [\"stop\"])\n }, null, 8, [\"onClick\"]))\n : (_openBlock(), _createBlock(_component_IconPreviewOpen, {\n key: 1,\n style: {\"font-size\":\"17px\"},\n onClick: _withModifiers(($event: any) => (hideElement(groupItem.id)), [\"stop\"])\n }, null, 8, [\"onClick\"]))\n ])\n ], 42, _hoisted_7))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass([\"item\", { 'active': _unref(activeElementIdList).includes(item.id) }]),\n onClick: ($event: any) => (selectEl(item.id)),\n onDblclick: ($event: any) => (enterEdit(item.id))\n }, [\n (editingElId.value === item.id)\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n id: `input-${item.id}`,\n value: item.name || _unref(ELEMENT_TYPE_ZH)[item.type],\n class: \"input\",\n type: \"text\",\n onBlur: $event => saveElementName($event, item.id),\n onKeydown: _withKeys($event => saveElementName($event, item.id), [\"enter\"])\n }, null, 40, _hoisted_12))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_13, _toDisplayString(item.name || _unref(ELEMENT_TYPE_ZH)[item.type]), 1)),\n _createElementVNode(\"div\", _hoisted_14, [\n (_unref(hiddenElementIdList).includes(item.id))\n ? (_openBlock(), _createBlock(_component_IconPreviewClose, {\n key: 0,\n style: {\"font-size\":\"17px\"},\n onClick: _withModifiers(($event: any) => (hideElement(item.id)), [\"stop\"])\n }, null, 8, [\"onClick\"]))\n : (_openBlock(), _createBlock(_component_IconPreviewOpen, {\n key: 1,\n style: {\"font-size\":\"17px\"},\n onClick: _withModifiers(($event: any) => (hideElement(item.id)), [\"stop\"])\n }, null, 8, [\"onClick\"]))\n ])\n ], 42, _hoisted_11))\n ], 64))\n }), 128))\n ])\n ]),\n _: 1\n }, 8, [\"title\"]))\n}\n}\n\n})","import script from \"./SelectPanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./SelectPanel.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./SelectPanel.vue?vue&type=style&index=0&id=64f9ccca&lang=scss&scoped=true\"\n\nimport exportComponent 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-64f9ccca\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, Fragment as _Fragment, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-ed562e98\"),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'\nimport SelectPanel from './SelectPanel.vue'\nimport { Modal } from 'ant-design-vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst mainStore = useMainStore()\nconst { dialogForExport, showSelectPanel } = storeToRefs(mainStore)\nconst closeExportDialog = () => mainStore.setDialogForExport('')\n\nconst remarkHeight = ref(40)\n\nuseGlobalHotkey()\nusePasteEvent()\n\nreturn (_ctx: any,_cache: any) => {\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 (_unref(showSelectPanel))\n ? (_openBlock(), _createBlock(SelectPanel, { key: 0 }))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(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=ed562e98&lang=scss&scoped=true\"\n\nimport exportComponent 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-ed562e98\"]])\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 }\n else {\n throttleMassage('已经是第一页了')\n }\n inAnimation.value = false\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}\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, 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-3e9669a9\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"blackboard\"\n}\n\nimport { computed, onMounted, onUnmounted, PropType, ref, watch } from 'vue'\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 penSize: {\n type: Number,\n default: 6,\n },\n markSize: {\n type: Number,\n default: 24,\n },\n rubberSize: {\n type: Number,\n default: 80,\n },\n},\n emits: [\"end\"],\n setup(__props, { expose, emit }: { emit: ({\n (event: 'end'): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props\n\n\n\n\n\nlet ctx: CanvasRenderingContext2D | null = null\nconst writingBoardRef = ref()\nconst canvasRef = ref()\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 = props.rubberSize / 2\n\n const sinRadius = radius * Math.sin(Math.atan((posY - lastPosY) / (posX - lastPosX)))\n const cosRadius = radius * Math.cos(Math.atan((posY - lastPosY) / (posX - lastPosX)))\n const rectPoint1: [number, number] = [lastPosX + sinRadius, lastPosY - cosRadius]\n const rectPoint2: [number, number] = [lastPosX - sinRadius, lastPosY + cosRadius]\n const rectPoint3: [number, number] = [posX + sinRadius, posY - cosRadius]\n const rectPoint4: [number, number] = [posX - sinRadius, posY + cosRadius]\n\n ctx.save()\n ctx.beginPath()\n ctx.arc(posX, posY, radius, 0, Math.PI * 2)\n ctx.clip()\n ctx.clearRect(0, 0, canvasRef.value.width, canvasRef.value.height)\n ctx.restore()\n\n ctx.save()\n ctx.beginPath()\n ctx.moveTo(...rectPoint1)\n ctx.lineTo(...rectPoint3)\n ctx.lineTo(...rectPoint4)\n ctx.lineTo(...rectPoint2)\n ctx.closePath()\n ctx.clip()\n ctx.clearRect(0, 0, canvasRef.value.width, canvasRef.value.height)\n ctx.restore()\n}\n\n// 计算鼠标两次移动之间的距离\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 = props.penSize\n const minWidth = 3\n const v = s / t\n let lineWidth\n\n if (v <= minV) lineWidth = maxWidth\n else if (v >= maxV) lineWidth = minWidth\n else lineWidth = maxWidth - v / maxV * maxWidth\n\n if (lastLineWidth === -1) return lineWidth\n return lineWidth * 1 / 3 + lastLineWidth * 2 / 3\n}\n\n// 路径操作\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, props.markSize)\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 emit('end')\n}\n\n// 清空画布\nconst clearCanvas = () => {\n if (!ctx || !canvasRef.value) return\n ctx.clearRect(0, 0, canvasRef.value.width, canvasRef.value.height)\n emit('end')\n}\n\n// 获取 DataURL\nconst getImageDataURL = () => {\n return canvasRef.value?.toDataURL()\n}\n\n// 设置 DataURL(绘制图片到 canvas)\nconst setImageDataURL = (imageDataURL: string) => {\n if (!ctx || !canvasRef.value) return\n \n ctx.clearRect(0, 0, canvasRef.value.width, canvasRef.value.height)\n\n if (imageDataURL) {\n ctx.globalCompositeOperation = 'source-over'\n ctx.globalAlpha = 1\n\n const img = new Image()\n img.src = imageDataURL\n img.onload = () => {\n ctx!.drawImage(img, 0, 0)\n updateCtx()\n }\n }\n}\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 }, 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 - __props.rubberSize / 2 + 'px',\n top: mouse.value.y - __props.rubberSize / 2 + 'px',\n width: __props.rubberSize + 'px',\n height: __props.rubberSize + '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 - __props.penSize / 2 + 'px',\n top: mouse.value.y - __props.penSize * 6 + __props.penSize / 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: __props.penSize * 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 - __props.markSize / 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: __props.markSize * 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=3e9669a9&lang=scss&scoped=true\"\n\nimport exportComponent 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-3e9669a9\"]])\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, normalizeClass as _normalizeClass, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-52a2a3a6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"writing-board-tool\" }\nconst _hoisted_2 = { class: \"tool-content\" }\nconst _hoisted_3 = { class: \"size\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"墨迹粗细:\", -1))\nconst _hoisted_5 = { class: \"size\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"墨迹粗细:\", -1))\nconst _hoisted_7 = { class: \"size\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"橡皮大小:\", -1))\nconst _hoisted_9 = { class: \"colors\" }\nconst _hoisted_10 = [\"onClick\"]\n\nimport { ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { db } from '@/utils/database'\n\nimport WritingBoard from '@/components/WritingBoard.vue'\nimport MoveablePanel from '@/components/MoveablePanel.vue'\nimport {\n Tooltip,\n Popover,\n Slider,\n} from 'ant-design-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 left: {\n type: Number,\n default: -5,\n },\n top: {\n type: Number,\n default: -5,\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 { currentSlide } = storeToRefs(useSlidesStore())\n\nconst writingBoardRef = ref()\nconst writingBoardColor = ref('#e2534d')\nconst writingBoardModel = ref('pen')\nconst blackboard = ref(false)\nconst sizePopoverType = ref<'' | WritingBoardModel>('')\n\nconst penSize = ref(6)\nconst markSize = ref(24)\nconst rubberSize = ref(80)\n\nconst changeModel = (model: WritingBoardModel) => {\n if (writingBoardModel.value === model) {\n sizePopoverType.value = sizePopoverType.value === model ? '' : model\n }\n else {\n if (sizePopoverType.value) sizePopoverType.value = ''\n writingBoardModel.value = model\n }\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\n// 打开画笔工具或切换页面时,将数据库中存储的墨迹绘制到画布上\nwatch(currentSlide, () => {\n db.writingBoardImgs.where('id').equals(currentSlide.value.id).toArray().then(ret => {\n const currentImg = ret[0]\n writingBoardRef.value!.setImageDataURL(currentImg?.dataURL || '')\n })\n}, { immediate: true })\n\n// 每次绘制完成后将绘制完的图片更新到数据库\nconst hanldeWritingEnd = () => {\n const dataURL = writingBoardRef.value!.getImageDataURL()\n db.writingBoardImgs.where('id').equals(currentSlide.value.id).toArray().then(ret => {\n const currentImg = ret[0]\n if (currentImg) db.writingBoardImgs.update(currentImg, { dataURL })\n else db.writingBoardImgs.add({ id: currentSlide.value.id, dataURL })\n })\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconWrite = _resolveComponent(\"IconWrite\")!\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 penSize: penSize.value,\n markSize: markSize.value,\n rubberSize: rubberSize.value,\n onEnd: _cache[0] || (_cache[0] = ($event: any) => (hanldeWritingEnd()))\n }, null, 8, [\"color\", \"blackboard\", \"model\", \"penSize\", \"markSize\", \"rubberSize\"])\n ], 4),\n _createVNode(MoveablePanel, {\n class: \"tools-panel\",\n width: 520,\n height: 50,\n left: __props.left,\n top: __props.top,\n moveable: sizePopoverType.value === ''\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"tools\",\n onMousedown: _cache[10] || (_cache[10] = _withModifiers(() => {}, [\"stop\"]))\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_unref(Popover), {\n trigger: \"click\",\n visible: sizePopoverType.value === 'pen'\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createVNode(_unref(Slider), {\n class: \"size-slider\",\n min: 4,\n max: 10,\n step: 2,\n value: penSize.value,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((penSize).value = $event))\n }, null, 8, [\"value\"])\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(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[2] || (_cache[2] = ($event: any) => (changeModel('pen')))\n }, [\n _createVNode(_component_IconWrite, { class: \"icon\" })\n ], 2)\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_unref(Popover), {\n trigger: \"click\",\n visible: sizePopoverType.value === 'mark'\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_5, [\n _hoisted_6,\n _createVNode(_unref(Slider), {\n class: \"size-slider\",\n min: 16,\n max: 40,\n step: 4,\n value: markSize.value,\n \"onUpdate:value\": _cache[3] || (_cache[3] = ($event: any) => ((markSize).value = $event))\n }, null, 8, [\"value\"])\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(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[4] || (_cache[4] = ($event: any) => (changeModel('mark')))\n }, [\n _createVNode(_component_IconHighLight, { class: \"icon\" })\n ], 2)\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_unref(Popover), {\n trigger: \"click\",\n visible: sizePopoverType.value === 'eraser'\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_7, [\n _hoisted_8,\n _createVNode(_unref(Slider), {\n class: \"size-slider\",\n min: 20,\n max: 200,\n step: 20,\n value: rubberSize.value,\n \"onUpdate:value\": _cache[5] || (_cache[5] = ($event: any) => ((rubberSize).value = $event))\n }, null, 8, [\"value\"])\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(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[6] || (_cache[6] = ($event: any) => (changeModel('eraser')))\n }, [\n _createVNode(_component_IconErase, { class: \"icon\" })\n ], 2)\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: \"清除墨迹\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[7] || (_cache[7] = ($event: any) => (clearCanvas()))\n }, [\n _createVNode(_component_IconClear, { class: \"icon\" })\n ])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(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[8] || (_cache[8] = ($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_9, [\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_10)\n }), 64))\n ])\n ]),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: \"关闭画笔\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[9] || (_cache[9] = ($event: any) => (closeWritingBoard()))\n }, [\n _createVNode(_component_IconClose, { class: \"icon\" })\n ])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ], 32)\n ]),\n _: 1\n }, 8, [\"left\", \"top\", \"moveable\"])\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=52a2a3a6&lang=scss&scoped=true\"\n\nimport exportComponent 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-52a2a3a6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, unref as _unref, withModifiers as _withModifiers, withKeys as _withKeys, 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-5a82de11\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"header\" }\nconst _hoisted_2 = { class: \"content\" }\nconst _hoisted_3 = { class: \"timer\" }\nconst _hoisted_4 = [\"value\", \"disabled\"]\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"colon\" }, \":\", -1))\nconst _hoisted_6 = { class: \"timer\" }\nconst _hoisted_7 = [\"value\", \"disabled\"]\n\nimport { computed, onUnmounted, ref } from 'vue'\nimport { fillDigit } from '@/utils/common'\n\nimport MoveablePanel from '@/components/MoveablePanel.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'CountdownTimer',\n props: {\n left: {\n type: Number,\n default: 5,\n },\n top: {\n type: Number,\n default: 5,\n },\n},\n emits: [\"close\"],\n setup(__props, { emit }: { emit: ({\n (event: 'close'): void\n}), expose: any, slots: any, attrs: any }) {\n\n\n\n\n\nconst timer = ref(null)\nconst inTiming = ref(false)\nconst isCountdown = ref(false)\nconst time = ref(0)\nconst minute = computed(() => Math.floor(time.value / 60))\nconst second = computed(() => time.value % 60)\n\nconst inputEditable = computed(() => {\n return !isCountdown.value || inTiming.value\n})\n\nconst clearTimer = () => {\n if (timer.value) clearInterval(timer.value)\n}\n\nonUnmounted(clearTimer)\n\nconst pause = () => {\n clearTimer()\n inTiming.value = false\n}\n\nconst reset = () => {\n clearTimer()\n inTiming.value = false\n \n if (isCountdown.value) time.value = 600\n else time.value = 0\n}\n\nconst start = () => {\n clearTimer()\n\n if (isCountdown.value) {\n timer.value = setInterval(() => {\n time.value = time.value - 1\n\n if (time.value <= 0) reset()\n }, 1000)\n }\n else {\n timer.value = setInterval(() => {\n time.value = time.value + 1\n\n if (time.value > 36000) pause()\n }, 1000)\n }\n\n inTiming.value = true\n}\n\nconst toggle = () => {\n if (inTiming.value) pause()\n else start()\n}\n\nconst toggleCountdown = () => {\n isCountdown.value = !isCountdown.value\n reset()\n}\n\nconst changeTime = (e: FocusEvent | KeyboardEvent, type: 'minute' | 'second') => {\n const inputRef = e.target as HTMLInputElement\n let value = inputRef.value\n const isNumber = /^(\\d)+$/.test(value)\n if (isNumber) {\n if (type === 'second' && +value >= 60) value = '59'\n time.value = type === 'minute' ? (+value * 60 + second.value) : (+value + minute.value * 60)\n }\n else inputRef.value = type === 'minute' ? fillDigit(minute.value, 2) : fillDigit(second.value, 2)\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconClose = _resolveComponent(\"IconClose\")!\n\n return (_openBlock(), _createBlock(MoveablePanel, {\n class: \"countdown-timer\",\n width: 180,\n height: 110,\n left: __props.left,\n top: __props.top\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"span\", {\n class: \"text-btn\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (toggle()))\n }, _toDisplayString(inTiming.value ? '暂停' : '开始'), 1),\n _createElementVNode(\"span\", {\n class: \"text-btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (reset()))\n }, \"重置\"),\n _createElementVNode(\"span\", {\n class: _normalizeClass([\"text-btn\", { 'active': isCountdown.value }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (toggleCountdown()))\n }, \"倒计时\", 2)\n ]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"input\", {\n type: \"text\",\n value: _unref(fillDigit)(_unref(minute), 2),\n maxlength: 3,\n disabled: _unref(inputEditable),\n onMousedown: _cache[3] || (_cache[3] = _withModifiers(() => {}, [\"stop\"])),\n onBlur: _cache[4] || (_cache[4] = $event => changeTime($event, 'minute')),\n onKeydown: [\n _cache[5] || (_cache[5] = _withModifiers(() => {}, [\"stop\"])),\n _cache[6] || (_cache[6] = _withKeys(_withModifiers($event => changeTime($event, 'minute'), [\"stop\"]), [\"enter\"]))\n ]\n }, null, 40, _hoisted_4)\n ]),\n _hoisted_5,\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"input\", {\n type: \"text\",\n value: _unref(fillDigit)(_unref(second), 2),\n maxlength: 3,\n disabled: _unref(inputEditable),\n onMousedown: _cache[7] || (_cache[7] = _withModifiers(() => {}, [\"stop\"])),\n onBlur: _cache[8] || (_cache[8] = $event => changeTime($event, 'second')),\n onKeydown: [\n _cache[9] || (_cache[9] = _withModifiers(() => {}, [\"stop\"])),\n _cache[10] || (_cache[10] = _withKeys(_withModifiers($event => changeTime($event, 'second'), [\"stop\"]), [\"enter\"]))\n ]\n }, null, 40, _hoisted_7)\n ])\n ]),\n _createElementVNode(\"div\", {\n class: \"close-btn\",\n onClick: _cache[11] || (_cache[11] = ($event: any) => (emit('close')))\n }, [\n _createVNode(_component_IconClose, { class: \"icon\" })\n ])\n ]),\n _: 1\n }, 8, [\"left\", \"top\"]))\n}\n}\n\n})","import script from \"./CountdownTimer.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./CountdownTimer.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./CountdownTimer.vue?vue&type=style&index=0&id=5a82de11&lang=scss&scoped=true\"\n\nimport exportComponent 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-5a82de11\"]])\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-90ac59d8\"),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'\nimport CountdownTimer from './CountdownTimer.vue'\nimport { Tooltip } from 'ant-design-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 timerlVisible = 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_IconMagic = _resolveComponent(\"IconMagic\")!\n const _component_IconStopwatchStart = _resolveComponent(\"IconStopwatchStart\")!\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 (timerlVisible.value)\n ? (_openBlock(), _createBlock(CountdownTimer, {\n key: 2,\n onClose: _cache[5] || (_cache[5] = ($event: any) => (timerlVisible.value = false))\n }))\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[6] || (_cache[6] = ($event: any) => (_unref(execPrev)()))\n }),\n _createVNode(_component_IconRightTwo, {\n class: \"tool-btn\",\n theme: \"two-tone\",\n fill: ['#111', '#fff'],\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_unref(execNext)()))\n })\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"tools-right\", { 'visible': rightToolsVisible.value }]),\n onMouseleave: _cache[16] || (_cache[16] = ($event: any) => (rightToolsVisible.value = false)),\n onMouseenter: _cache[17] || (_cache[17] = ($event: any) => (rightToolsVisible.value = true))\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: \"tool-btn page-number\",\n onClick: _cache[8] || (_cache[8] = ($event: any) => (slideThumbnailModelVisible.value = true))\n }, \"幻灯片 \" + _toDisplayString(_unref(slideIndex) + 1) + \" / \" + _toDisplayString(_unref(slides).length), 1),\n _createVNode(_unref(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[9] || (_cache[9] = ($event: any) => (writingBoardToolVisible.value = true))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(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[10] || (_cache[10] = ($event: any) => (laserPen.value = !laserPen.value))\n }, null, 8, [\"class\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(Tooltip), {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: \"计时器\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconStopwatchStart, {\n class: _normalizeClass([\"tool-btn\", { 'active': timerlVisible.value }]),\n onClick: _cache[11] || (_cache[11] = ($event: any) => (timerlVisible.value = !timerlVisible.value))\n }, null, 8, [\"class\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(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[12] || (_cache[12] = ($event: any) => (__props.changeViewMode('presenter')))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_unref(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[13] || (_cache[13] = ($event: any) => (_unref(manualExitFullscreen)()))\n }))\n : (_openBlock(), _createBlock(_component_IconFullScreenOne, {\n key: 1,\n class: \"tool-btn\",\n onClick: _cache[14] || (_cache[14] = ($event: any) => (_unref(enterFullscreen)()))\n }))\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\", \"title\"]),\n _createVNode(_unref(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[15] || (_cache[15] = ($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=90ac59d8&lang=scss&scoped=true\"\n\nimport exportComponent 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-90ac59d8\"]])\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-f770d810\"),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 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"结束放映\", -1))\nconst _hoisted_8 = { class: \"content\" }\nconst _hoisted_9 = [\"onClick\"]\nconst _hoisted_10 = { class: \"remark\" }\nconst _hoisted_11 = { class: \"header\" }\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"演讲者备注\", -1))\nconst _hoisted_13 = [\"innerHTML\"]\nconst _hoisted_14 = { 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'\nimport CountdownTimer from './CountdownTimer.vue'\nimport { Divider } from 'ant-design-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 timerlVisible = 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_IconStopwatchStart = _resolveComponent(\"IconStopwatchStart\")!\n const _component_IconOffScreenOne = _resolveComponent(\"IconOffScreenOne\")!\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: _normalizeClass([\"tool-btn\", { 'active': timerlVisible.value }]),\n onClick: _cache[3] || (_cache[3] = ($event: any) => (timerlVisible.value = !timerlVisible.value))\n }, [\n _createVNode(_component_IconStopwatchStart, { class: \"tool-icon\" }),\n _hoisted_6\n ], 2),\n _createElementVNode(\"div\", {\n class: \"tool-btn\",\n onClick: _cache[4] || (_cache[4] = () => _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(_unref(Divider), { class: \"divider\" }),\n _createElementVNode(\"div\", {\n class: \"tool-btn\",\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_unref(exitScreening)()))\n }, [\n _createVNode(_component_IconPower, { class: \"tool-icon\" }),\n _hoisted_7\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\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[6] || (_cache[6] = $event => _unref(mousewheelListener)($event)),\n onTouchstart: _cache[7] || (_cache[7] = $event => _unref(touchStartListener)($event)),\n onTouchend: _cache[8] || (_cache[8] = $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 left: -365,\n top: -155,\n onClose: _cache[9] || (_cache[9] = ($event: any) => (writingBoardToolVisible.value = false))\n }, null, 8, [\"slideWidth\", \"slideHeight\"]))\n : _createCommentVNode(\"\", true),\n (timerlVisible.value)\n ? (_openBlock(), _createBlock(CountdownTimer, {\n key: 1,\n left: 75,\n onClose: _cache[10] || (_cache[10] = ($event: any) => (timerlVisible.value = false))\n }))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"div\", {\n class: \"thumbnails\",\n ref_key: \"thumbnailsRef\",\n ref: thumbnailsRef,\n onWheel: _cache[11] || (_cache[11] = _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_9))\n }), 128))\n ], 544)\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"div\", _hoisted_11, [\n _hoisted_12,\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_13),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", {\n class: _normalizeClass(['scale-btn', { 'disable': remarkFontSize.value === 12 }]),\n onClick: _cache[12] || (_cache[12] = ($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[13] || (_cache[13] = ($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=f770d810&lang=scss&scoped=true\"\n\nimport exportComponent 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-f770d810\"]])\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, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createVNode as _createVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-e594aa30\"),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'\nimport useSlideHandler from '@/hooks/useSlideHandler'\n\nimport Draggable from 'vuedraggable'\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 { sortSlides } = useSlideHandler()\n\nconst { slidesLoadLimit } = useLoadSlides()\nconst changeSlideIndex = (index: number) => {\n slidesStore.updateSlideIndex(index)\n}\n\n// 拖拽调整顺序后进行数据的同步\nconst handleDragEnd = (eventData: { newIndex: number; oldIndex: number }) => {\n const { newIndex, oldIndex } = eventData\n sortSlides(newIndex, oldIndex)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\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 itemKey: \"id\",\n delayOnTouchOnly: true,\n delay: 800,\n onEnd: handleDragEnd\n }, {\n item: _withCtx(({ element, index }) => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"thumbnail-item\", { 'active': _unref(slideIndex) === index }]),\n onClick: ($event: any) => (changeSlideIndex(index))\n }, [\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(index + 1), 1),\n _createVNode(ThumbnailSlide, {\n class: \"thumbnail\",\n slide: element,\n size: 120,\n visible: index < _unref(slidesLoadLimit)\n }, null, 8, [\"slide\", \"visible\"])\n ], 10, _hoisted_2)\n ]),\n _: 1\n }, 8, [\"modelValue\"])\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=e594aa30&lang=scss&scoped=true\"\n\nimport exportComponent 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-e594aa30\"]])\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-1e17bcc7\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"slide-toolbar\" }\nconst _hoisted_2 = { class: \"remark\" }\nconst _hoisted_3 = [\"value\"]\nconst _hoisted_4 = { class: \"toolbar\" }\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'\nimport FileInput from '@/components/FileInput.vue'\nimport { Button } from 'ant-design-vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'SlideToolbar',\n setup(__props) {\n\nconst ButtonGroup = Button.Group\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 }, { content: '

新添加文本

' })\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_IconCopy = _resolveComponent(\"IconCopy\")!\n const _component_IconDelete = _resolveComponent(\"IconDelete\")!\n const _component_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_IconPicture = _resolveComponent(\"IconPicture\")!\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(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\" 新幻灯片\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 复制\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 删除\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\" 文字\")\n ]),\n _: 1\n }),\n _createVNode(_unref(Button), { style: {\"flex\":\"1\"} }, {\n default: _withCtx(() => [\n _createVNode(FileInput, {\n onChange: _cache[5] || (_cache[5] = files => insertImageElement(files))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconPicture, { class: \"icon\" }),\n _createTextVNode(\"图片 \")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 矩形\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 圆形\")\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=1e17bcc7&lang=scss&scoped=true\"\n\nimport exportComponent 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-1e17bcc7\"]])\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-2633262b\"),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 = { class: \"row-block\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"文字颜色:\", -1))\nconst _hoisted_8 = { class: \"colors\" }\nconst _hoisted_9 = [\"onClick\"]\nconst _hoisted_10 = { class: \"row-block\" }\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"填充色:\", -1))\nconst _hoisted_12 = { class: \"colors\" }\nconst _hoisted_13 = [\"onClick\"]\nconst _hoisted_14 = {\n key: 1,\n class: \"common\"\n}\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\nimport CheckboxButton from '@/components/CheckboxButton.vue'\nimport CheckboxButtonGroup from '@/components/CheckboxButtonGroup.vue'\nimport {\n Divider,\n Button,\n Radio,\n} from 'ant-design-vue'\ninterface TabItem {\n key: 'style' | 'common'\n label: string\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementToolbar',\n setup(__props) {\n\nconst { Group: RadioGroup, Button: RadioButton } = Radio\nconst ButtonGroup = Button.Group\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_IconTextItalic = _resolveComponent(\"IconTextItalic\")!\n const _component_IconTextUnderline = _resolveComponent(\"IconTextUnderline\")!\n const _component_IconStrikethrough = _resolveComponent(\"IconStrikethrough\")!\n const _component_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_IconAlignTextLeft = _resolveComponent(\"IconAlignTextLeft\")!\n const _component_IconAlignTextCenter = _resolveComponent(\"IconAlignTextCenter\")!\n const _component_IconAlignTextRight = _resolveComponent(\"IconAlignTextRight\")!\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(CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(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(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(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(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(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\"+\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\"-\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_unref(Divider), { style: {\"margin\":\"20px 0\"} }),\n _createVNode(_unref(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(_unref(RadioButton), {\n value: \"left\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextLeft)\n ]),\n _: 1\n }),\n _createVNode(_unref(RadioButton), {\n value: \"center\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextCenter)\n ]),\n _: 1\n }),\n _createVNode(_unref(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(_unref(Divider), { style: {\"margin\":\"20px 0\"} }),\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createElementVNode(\"div\", _hoisted_8, [\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_9)\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createElementVNode(\"div\", _hoisted_12, [\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_13)\n }), 64))\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (activeTab.value === 'common')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n _createVNode(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\" 复制\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 删除\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_unref(Divider), { style: {\"margin\":\"20px 0\"} }),\n _createVNode(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\" 置顶\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 置底\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 上移\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 下移\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_unref(Divider), { style: {\"margin\":\"20px 0\"} }),\n _createVNode(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\" 左对齐\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 水平居中\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 右对齐\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_unref(ButtonGroup), { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_unref(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 _createTextVNode(\" 上对齐\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 垂直居中\")\n ]),\n _: 1\n }),\n _createVNode(_unref(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 _createTextVNode(\" 下对齐\")\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=2633262b&lang=scss&scoped=true\"\n\nimport exportComponent 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-2633262b\"]])\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-8639f30e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mobile-editor-header\" }\nconst _hoisted_2 = { class: \"history\" }\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 _createTextVNode(\" 撤销\")\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 _createTextVNode(\" 重做\")\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 _createTextVNode(\" 退出编辑\")\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=8639f30e&lang=scss&scoped=true\"\n\nimport exportComponent 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-8639f30e\"]])\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\" }\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 _createTextVNode(\" 退出播放\")\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-1c8bce03\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"thumbnail-list\" }\nconst _hoisted_2 = { class: \"menu\" }\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'\nimport { Divider } from 'ant-design-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\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_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 - 20,\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 _createTextVNode(\" 编辑\")\n ]),\n _createVNode(_unref(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 _createTextVNode(\" 播放\")\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=1c8bce03&lang=scss&scoped=true\"\n\nimport exportComponent 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-1c8bce03\"]])\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 { deleteDiscardedDB } from '@/utils/database'\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(async () => {\n await deleteDiscardedDB()\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=685e8c72&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 Up,\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 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 TextRotationNone,\n TextRotationDown,\n FormatBrush,\n PreviewOpen,\n PreviewClose,\n StopwatchStart,\n} from '@icon-park/vue-next'\n\nexport const icons = {\n IconPlayOne: PlayOne,\n IconFullScreenPlay: FullScreenPlay,\n IconLock: Lock,\n IconUnlock: Unlock,\n IconPpt: Ppt,\n IconFormat: Format,\n IconPicture: Picture,\n IconFullScreen: FullScreen,\n IconList: List,\n IconOrderedList: OrderedList,\n IconHelpcenter: Helpcenter,\n IconFlipVertically: FlipVertically,\n IconFlipHorizontally: FlipHorizontally,\n IconFontSize: FontSize,\n IconCode: Code,\n IconTextBold: TextBold,\n IconTextItalic: TextItalic,\n IconTextUnderline: TextUnderline,\n IconStrikethrough: Strikethrough,\n IconEdit: Edit,\n IconQuote: Quote,\n IconBackgroundColor: BackgroundColor,\n IconGroup: Group,\n IconUngroup: Ungroup,\n IconBack: Back,\n IconNext: Next,\n IconFullwidth: Fullwidth,\n IconAlignTop: AlignTop,\n IconAlignLeft: AlignLeft,\n IconAlignRight: AlignRight,\n IconAlignBottom: AlignBottom,\n IconAlignVertically: AlignVertically,\n IconAlignHorizontally: AlignHorizontally,\n IconBringToFront: BringToFront,\n IconSendToBack: SendToBack,\n IconAlignTextLeft: AlignTextLeft,\n IconAlignTextRight: AlignTextRight,\n IconAlignTextCenter: AlignTextCenter,\n IconRowHeight: RowHeight,\n IconWrite: Write,\n IconInsertTable: InsertTable,\n IconAddText: AddText,\n IconFill: Fill,\n IconTailoring: Tailoring,\n IconEffects: Effects,\n IconColorFilter: ColorFilter,\n IconUp: Up,\n IconDown: Down,\n IconPlus: Plus,\n IconMinus: Minus,\n IconConnection: Connection,\n IconBringToFrontOne: BringToFrontOne,\n IconSentToBack: SentToBack,\n IconGithub: Github,\n IconChartProportion: ChartProportion,\n IconChartHistogram: ChartHistogram,\n IconChartHistogramOne: ChartHistogramOne,\n IconChartLineArea: ChartLineArea,\n IconChartRing: ChartRing,\n IconChartScatter: ChartScatter,\n IconChartLine: ChartLine,\n IconChartPie: ChartPie,\n IconText: Text,\n IconRotate: Rotate,\n IconLeftTwo: LeftTwo,\n IconRightTwo: RightTwo,\n IconPlatte: Platte,\n IconClose: Close,\n IconCloseSmall: CloseSmall,\n IconUndo: Undo,\n IconTransform: Transform,\n IconClick: Click,\n IconTheme: Theme,\n IconArrowCircleLeft: ArrowCircleLeft,\n IconGraphicDesign: GraphicDesign,\n IconLogout: Logout,\n IconErase: Erase,\n IconClear: Clear,\n IconFolderClose: FolderClose,\n IconAlignTextTopOne: AlignTextTopOne,\n IconAlignTextBottomOne: AlignTextBottomOne,\n IconAlignTextMiddleOne: AlignTextMiddleOne,\n IconPause: Pause,\n IconVolumeMute: VolumeMute,\n IconVolumeNotice: VolumeNotice,\n IconVolumeSmall: VolumeSmall,\n IconVideoTwo: VideoTwo,\n IconFormula: Formula,\n IconLinkOne: LinkOne,\n IconFullScreenOne: FullScreenOne,\n IconOffScreenOne: OffScreenOne,\n IconPower: Power,\n IconListView: ListView,\n IconMagic: Magic,\n IconHighLight: HighLight,\n IconShare: Share,\n IconIndentLeft: IndentLeft,\n IconIndentRight: IndentRight,\n IconVerticalSpacingBetweenItems: VerticalSpacingBetweenItems,\n IconCopy: Copy,\n IconDelete: Delete,\n IconSquare: Square,\n IconRound: Round,\n IconNeedle: Needle,\n IconTextRotationNone: TextRotationNone,\n IconTextRotationDown: TextRotationDown,\n IconFormatBrush: FormatBrush,\n IconPreviewOpen: PreviewOpen,\n IconPreviewClose: PreviewClose,\n IconStopwatchStart: StopwatchStart,\n}\n\nexport default {\n install(app: App) {\n for (const key of Object.keys(icons)) {\n app.component(key, icons[key])\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 Directive from '@/plugins/directive'\n\nconst app = createApp(App)\n\napp.use(Icon)\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!./FullscreenSpin.vue?vue&type=style&index=0&id=5a56d59c&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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=1c8bce03&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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!./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!./index.vue?vue&type=style&index=0&id=0b2b16da&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=61d61c80&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=3b4a02d8&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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!./GridLines.vue?vue&type=style&index=0&id=aebac580&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./SelectPanel.vue?vue&type=style&index=0&id=64f9ccca&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=105f4640&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=4e5f883a&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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=802e1e06&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/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=73760920&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/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!./BaseTableElement.vue?vue&type=style&index=0&id=6b8ce0be&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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!./TableStylePanel.vue?vue&type=style&index=0&id=79a422e5&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/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=0f6bb088&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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!./ElementOpacity.vue?vue&type=style&index=0&id=54aad0f0&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/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\""],"sourceRoot":""} \ No newline at end of file