diff --git a/dist/css/app.24092851.css b/dist/css/app.24092851.css
deleted file mode 100644
index 45247ce8..00000000
--- a/dist/css/app.24092851.css
+++ /dev/null
@@ -1 +0,0 @@
-.hotkey-doc[data-v-47d0351b]{height:100%;overflow:auto;font-size:12px}.title[data-v-47d0351b]{font-size:14px;font-weight:700;border-bottom:1px solid #e5e5e5;padding:15px 0 5px 0}.hotkey-item[data-v-47d0351b]{border-bottom:1px solid #e5e5e5;padding:15px 0 5px 0;display:flex;align-items:center}.label[data-v-47d0351b]{width:140px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}svg[data-v-8d85e878],svg[data-v-4126ab7f],svg[data-v-6655f0f0]{overflow:visible;position:absolute;z-index:2;top:0;left:0}.base-element-image[data-v-75104890]{position:absolute}.rotate-wrapper[data-v-75104890]{width:100%;height:100%}.element-content[data-v-75104890]{width:100%;height:100%;position:relative}.element-content .image-content[data-v-75104890]{width:100%;height:100%;overflow:hidden;position:relative}.element-content img[data-v-75104890]{position:absolute}svg[data-v-2ddaa919]{overflow:visible;position:absolute;top:0;left:0}.base-element-text[data-v-10405ba6]{position:absolute}.rotate-wrapper[data-v-10405ba6]{width:100%;height:100%}.element-content[data-v-10405ba6]{position:relative;padding:10px;line-height:1.5;word-break:break-word}.element-content .text[data-v-10405ba6]{position:relative}.base-element-shape[data-v-062b8ef4]{position:absolute}.rotate-wrapper[data-v-062b8ef4]{width:100%;height:100%}.element-content[data-v-062b8ef4]{width:100%;height:100%;position:relative}.element-content svg[data-v-062b8ef4]{transform-origin:0 0;overflow:visible}.editable-element-shape[data-v-56b0510c]{position:absolute}.element-content[data-v-56b0510c]{width:100%;height:100%;position:relative}.element-content svg[data-v-56b0510c]{transform-origin:0 0;overflow:visible}.base-element-chart[data-v-2d25f60a]{position:absolute}.element-content[data-v-2d25f60a]{width:100%;height:100%;opacity:.5;display:flex;justify-content:center;align-items:center}.static-table[data-v-01f791ba],table[data-v-01f791ba]{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}table[data-v-01f791ba]{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 tr:nth-child(2n) .cell[data-v-01f791ba]{background-color:var(--subThemeColor1)}table.theme tr:nth-child(odd) .cell[data-v-01f791ba]{background-color:var(--subThemeColor2)}table.theme.col-footer tr .cell[data-v-01f791ba]:last-child,table.theme.col-header tr .cell[data-v-01f791ba]:first-child,table.theme.row-footer tr:last-child .cell[data-v-01f791ba],table.theme.row-header tr:first-child .cell[data-v-01f791ba]{background-color:var(--themeColor)}table tr[data-v-01f791ba]{height:36px}table .cell[data-v-01f791ba]{position:relative;white-space:normal;word-wrap:break-word;vertical-align:middle}table .cell-text[data-v-01f791ba]{min-height:32px;padding:5px;border:0;outline:0;line-height:1.5;font-size:14px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.base-element-table[data-v-dea016ac]{position:absolute}.element-content[data-v-dea016ac]{width:100%;height:100%;position:relative}.thumbnail-slide[data-v-4e59015e]{background-color:#fff;overflow:hidden}.elements[data-v-4e59015e]{transform-origin:0 0}.background[data-v-4e59015e]{width:100%;height:100%;background-position:50%;position:absolute}.export-dialog[data-v-47e95e66]{height:500px}.tabs[data-v-47e95e66]{height:40px;font-size:12px;display:flex;margin:-24px -24px 20px -24px}.tab[data-v-47e95e66]{flex:1;display:flex;justify-content:center;align-items:center;background-color:#f9f9f9;border-bottom:1px solid #eee;cursor:pointer}.tab.active[data-v-47e95e66]{background-color:#fff;border-bottom-color:#fff}.tab+.tab[data-v-47e95e66]{border-left:1px solid #eee}.content[data-v-47e95e66]{height:calc(100% - 60px);display:flex;justify-content:center;position:relative;overflow:hidden}.json-preview[data-v-47e95e66]{width:460px;height:100%;overflow:auto;margin-right:20px;background-color:#2d2d30;color:#fff}.json-preview pre[data-v-47e95e66]{width:100%;height:100%}.json-configs[data-v-47e95e66]{flex:1}.json-configs .btn[data-v-47e95e66]{width:100%;margin-bottom:10px}.thumbnails-view[data-v-47e95e66],.thumbnails-view[data-v-47e95e66]:after{position:absolute;top:0;bottom:0;left:0;right:0}.thumbnails-view[data-v-47e95e66]:after{content:"";background-color:#fff}.configs[data-v-47e95e66]{display:flex;flex-direction:column;justify-content:center;align-items:center}.configs .btn[data-v-47e95e66]{width:240px;margin-bottom:12px}.spinning[data-v-47e95e66]{position:absolute;top:0;bottom:0;left:0;right:0;display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#fff}.spinning .tip[data-v-47e95e66]{margin-top:10px;color:#d14424}.editor-header[data-v-772225af]{background-color:#fff;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-bottom:1px solid #eee;display:flex;justify-content:space-between;padding:0 10px}.left[data-v-772225af],.menu-item[data-v-772225af],.right[data-v-772225af]{display:flex;justify-content:center;align-items:center}.menu-item[data-v-772225af]{height:100%;font-size:14px;padding:0 10px;transition:background-color .2s;cursor:pointer}.menu-item .text[data-v-772225af]{margin-left:4px}.left .menu-item[data-v-772225af]:hover{background-color:#f9f9f9}.image-clip-handler[data-v-1d9b5032]{width:100%;height:100%;position:relative}.image-clip-handler .bottom-img[data-v-1d9b5032]{top:0;left:0;width:100%;height:100%;opacity:.5}.image-clip-handler img[data-v-1d9b5032]{width:100%;height:100%}.image-clip-handler .top-image-content[data-v-1d9b5032]{position:absolute;overflow:hidden}.image-clip-handler .top-image-content img[data-v-1d9b5032]{position:absolute}.operate[data-v-1d9b5032]{position:absolute;width:100%;height:100%;top:0;left:0;cursor:move}.clip-point[data-v-1d9b5032]{position:absolute;width:16px;height:16px;left:0;top:0;transform-origin:0 0;display:flex;justify-content:center;align-items:center}.clip-point svg[data-v-1d9b5032]{overflow:visible}.clip-point.t-l[data-v-1d9b5032]{left:0;top:0;cursor:nwse-resize}.clip-point.t-r[data-v-1d9b5032]{left:100%;top:0;transform:rotate(90deg);cursor:nesw-resize}.clip-point.b-l[data-v-1d9b5032]{left:0;top:100%;transform:rotate(-90deg);cursor:nesw-resize}.clip-point.b-r[data-v-1d9b5032]{left:100%;top:100%;transform:rotate(180deg);cursor:nwse-resize}.editable-element-image[data-v-4aec836a]{position:absolute}.editable-element-image.lock .element-content[data-v-4aec836a]{cursor:default}.rotate-wrapper[data-v-4aec836a]{width:100%;height:100%}.element-content[data-v-4aec836a]{width:100%;height:100%;position:relative;cursor:move}.element-content .image-content[data-v-4aec836a]{width:100%;height:100%;overflow:hidden;position:relative}.element-content img[data-v-4aec836a]{position:absolute}.editable-element-text[data-v-a7eb4f98]{position:absolute;cursor:move}.editable-element-text.lock .element-content[data-v-a7eb4f98]{cursor:default}.rotate-wrapper[data-v-a7eb4f98]{width:100%;height:100%}.element-content[data-v-a7eb4f98]{position:relative;padding:10px;line-height:1.5;word-break:break-word}.element-content .text[data-v-a7eb4f98]{position:relative;cursor:text}.editable-element-shape[data-v-264ed0d8]{position:absolute;cursor:move}.editable-element-shape.lock .element-content[data-v-264ed0d8]{cursor:default}.rotate-wrapper[data-v-264ed0d8]{width:100%;height:100%}.element-content[data-v-264ed0d8]{width:100%;height:100%;position:relative}.element-content svg[data-v-264ed0d8]{transform-origin:0 0;overflow:visible}.editable-element-shape[data-v-7d3d40d6]{position:absolute}.editable-element-shape.lock .line-path[data-v-7d3d40d6]{cursor:default}.element-content[data-v-7d3d40d6]{width:100%;height:100%;position:relative}.element-content svg[data-v-7d3d40d6]{transform-origin:0 0;overflow:visible}.line-path[data-v-7d3d40d6]{cursor:move}.chart-content[data-v-233b1dc8]{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)}.editable-element-chart[data-v-6277fc70]{position:absolute;cursor:move}.editable-element-chart.lock .element-content[data-v-6277fc70]{cursor:default}.element-content[data-v-6277fc70]{width:100%;height:100%;overflow:hidden}.custom-textarea[data-v-0d17e957]{border:0;outline:0}.editable-table[data-v-70bdbb7e],table[data-v-70bdbb7e]{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}table[data-v-70bdbb7e]{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 tr:nth-child(2n) .cell[data-v-70bdbb7e]{background-color:var(--subThemeColor1)}table.theme tr:nth-child(odd) .cell[data-v-70bdbb7e]{background-color:var(--subThemeColor2)}table.theme.col-footer tr .cell[data-v-70bdbb7e]:last-child,table.theme.col-header tr .cell[data-v-70bdbb7e]:first-child,table.theme.row-footer tr:last-child .cell[data-v-70bdbb7e],table.theme.row-header tr:first-child .cell[data-v-70bdbb7e]{background-color:var(--themeColor)}table tr[data-v-70bdbb7e]{height:36px}table .cell[data-v-70bdbb7e]{position:relative;white-space:normal;word-wrap:break-word;vertical-align:middle;font-size:14px;cursor:default}table .cell.selected[data-v-70bdbb7e]:after{content:"";width:100%;height:100%;position:absolute;top:0;left:0;background-color:hsla(0,0%,40%,.4)}table .cell-text[data-v-70bdbb7e]{min-height:32px;padding:5px;line-height:1.5;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:text}table .cell-text.active[data-v-70bdbb7e]{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.drag-line[data-v-70bdbb7e]{position:absolute;top:0;bottom:0;width:3px;background-color:#d14424;margin-left:-1px;opacity:0;z-index:2;cursor:col-resize}.drag-line[data-v-70bdbb7e]:hover{opacity:1}.editable-element-table[data-v-c0edfdac]{position:absolute;cursor:move}.editable-element-table.lock .element-content[data-v-c0edfdac]{cursor:default}.element-content[data-v-c0edfdac]{width:100%;height:100%;position:relative}.table-mask[data-v-c0edfdac]{position:absolute;top:0;bottom:0;left:0;right:0;opacity:0;transition:opacity .2s}.table-mask .mask-tip[data-v-c0edfdac]{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-c0edfdac]:hover:not(.lock){opacity:.9}.mouse-selection[data-v-1619c258]{position:absolute;background-color:rgba(209,68,36,.1);border:1px solid #d14424;z-index:200}.mouse-selection.quadrant-1[data-v-1619c258]{transform-origin:0 0;transform:rotate(180deg)}.mouse-selection.quadrant-2[data-v-1619c258]{transform-origin:50% 0;transform:rotate(180deg)}.mouse-selection.quadrant-3[data-v-1619c258]{transform-origin:0 50%;transform:rotate(180deg)}.mouse-selection.quadrant-4[data-v-1619c258]{transform-origin:0 0;transform:rotate(0deg)}.grid-lines[data-v-fbcac4e2]{width:100%;height:100%;position:absolute;top:0;left:0;bottom:0;right:0;overflow:visible}.viewport-background[data-v-a9ca1b50]{width:100%;height:100%;background-position:50%;position:absolute}.alignment-line[data-v-2d3eddf5]{position:absolute;z-index:100}.alignment-line .line[data-v-2d3eddf5]{width:0;height:0;border:0 dashed #d14424}.alignment-line .line.vertical[data-v-2d3eddf5]{transform:translateY(-.5px);border-left-width:1px}.alignment-line .line.horizontal[data-v-2d3eddf5]{transform:translateX(-.5px);border-top-width:1px}.element-create-selection[data-v-3c5b7aac]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;cursor:crosshair}.selection[data-v-3c5b7aac]{position:absolute;opacity:.8}.selection[data-v-3c5b7aac]:not(.line){border:1px solid #d14424}.resize-handler[data-v-1c2a68d0]{position:absolute;width:10px;height:10px;left:0;top:0;margin:-5px 0 0 -5px;border:1px solid #d14424;background-color:#fff;border-radius:1px}.resize-handler.left-top[data-v-1c2a68d0]{cursor:nwse-resize}.resize-handler.top[data-v-1c2a68d0]{cursor:ns-resize}.resize-handler.right-top[data-v-1c2a68d0]{cursor:nesw-resize}.resize-handler.left[data-v-1c2a68d0],.resize-handler.right[data-v-1c2a68d0]{cursor:ew-resize}.resize-handler.left-bottom[data-v-1c2a68d0]{cursor:nesw-resize}.resize-handler.bottom[data-v-1c2a68d0]{cursor:ns-resize}.resize-handler.right-bottom[data-v-1c2a68d0]{cursor:nwse-resize}.border-line[data-v-630e246b]{position:absolute;width:0;height:0;left:0;top:0;border:0 dashed #d14424}.border-line.top[data-v-630e246b]{border-top-width:1px}.border-line.bottom[data-v-630e246b]{border-bottom-width:1px}.border-line.left[data-v-630e246b]{border-left-width:1px}.border-line.right[data-v-630e246b]{border-right-width:1px}.border-line.wide[data-v-630e246b]:before{content:"";position:absolute;background:transparent;cursor:move}.border-line.wide.top[data-v-630e246b]:before{top:-8px;left:-8px;width:calc(100% + 16px);height:16px}.border-line.wide.bottom[data-v-630e246b]:before{bottom:-8px;left:-8px;width:calc(100% + 16px);height:16px}.border-line.wide.left[data-v-630e246b]:before{top:-8px;left:-8px;width:16px;height:calc(100% + 16px)}.border-line.wide.right[data-v-630e246b]:before{top:-8px;right:-8px;width:16px;height:calc(100% + 16px)}.multi-select-operate[data-v-4def6455]{position:absolute;top:0;left:0;z-index:101}.rotate-handler[data-v-9a549510]{position:absolute;width:10px;height:10px;top:-25px;margin-left:-5px;border:1px solid #d14424;background-color:#fff;border-radius:1px;cursor:-webkit-grab;cursor:grab}.rotate-handler[data-v-9a549510]:active{cursor:-webkit-grabbing;cursor:grabbing}.image-element-operate.cliping[data-v-5b0628aa]{visibility:hidden}.operate[data-v-558a94fe]{position:absolute;z-index:100;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.operate.multi-select[data-v-558a94fe]{opacity:0}.animation-index[data-v-558a94fe]{position:absolute;top:0;left:-24px;font-size:12px;width:18px;height:18px;background-color:#fff;color:#d14424;border:1px solid #d14424;display:flex;justify-content:center;align-items:center;margin-bottom:3px}.canvas[data-v-17169d5c]{height:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;background-color:#f9f9f9;position:relative}.viewport-wrapper[data-v-17169d5c]{position:absolute;box-shadow:0 0 15px 0 rgba(0,0,0,.1)}.viewport[data-v-17169d5c]{position:absolute;top:0;left:0;transform-origin:0 0}.shape-pool[data-v-5aabd717]{width:340px;max-height:540px;overflow:auto;margin-bottom:-12px;margin-right:-12px;padding-right:12px}.category-name[data-v-5aabd717]{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-5aabd717]{display:flex;flex-wrap:wrap;margin-bottom:10px}.shape-item[data-v-5aabd717]{width:8%;margin-bottom:2.22222%;height:0;padding-bottom:8%;flex-shrink:0;position:relative;cursor:pointer}.shape-item[data-v-5aabd717]:not(:nth-child(10n)){margin-right:2.22222%}.shape-content[data-v-5aabd717]{position:absolute;top:0;bottom:0;left:0;right:0;display:flex;justify-content:center;align-items:center}.shape-content:hover .shape-path[data-v-5aabd717]{stroke:#d14424}.shape-content svg[data-v-5aabd717]:not(:root){overflow:visible}.line-pool[data-v-5087394c]{width:220px;overflow:auto;margin-bottom:-12px;margin-right:-12px;padding-right:12px}.category-name[data-v-5087394c]{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-5087394c]{display:flex;flex-wrap:wrap;margin-bottom:10px}.line-item[data-v-5087394c]{width:19%;margin-bottom:1.25%;height:0;padding-bottom:19%;flex-shrink:0;position:relative;cursor:pointer}.line-item[data-v-5087394c]:not(:nth-child(5n)){margin-right:1.25%}.line-content[data-v-5087394c]{position:absolute;top:0;bottom:0;left:0;right:0;display:flex;justify-content:center;align-items:center;color:#999}.line-content[data-v-5087394c]:hover{color:#d14424}.line-content svg[data-v-5087394c]:not(:root){overflow:visible}.chart-pool[data-v-0028f4b9]{width:120px;margin-bottom:-5px;display:flex;flex-wrap:wrap}.chart-item[data-v-0028f4b9]{width:32%;margin-bottom:2%;height:0;padding-bottom:32%;flex-shrink:0;position:relative;cursor:pointer}.chart-item[data-v-0028f4b9]:not(:nth-child(3n)){margin-right:2%}.chart-content[data-v-0028f4b9]{position:absolute;top:0;bottom:0;left:0;right:0;display:flex;justify-content:center;align-items:center;color:#999}.chart-content[data-v-0028f4b9]:hover{color:#d14424}.table-generator[data-v-576c614c]{width:100%;margin-top:-12px}.title[data-v-576c614c]{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}.title .right[data-v-576c614c]{cursor:pointer}.title .right[data-v-576c614c]:hover{color:#d14424}table[data-v-576c614c]{border-collapse:separate}td[data-v-576c614c]{width:23px;height:23px;line-height:23px;border:2px solid #fff;background-color:#f7f7f7}.cell[data-v-576c614c]{width:100%;height:100%;border:1px solid #dcdcdc}.cell.active[data-v-576c614c]{background-color:rgba(209,68,36,.1);border-color:#d14424}.custom[data-v-576c614c]{width:230px}.custom .row[data-v-576c614c]{display:flex;align-items:center}.custom .row+.row[data-v-576c614c]{margin-top:10px}.btns[data-v-576c614c]{margin-top:10px;text-align:right}.btns .btn[data-v-576c614c]{margin-left:10px}.canvas-tool[data-v-59ae6536]{position:relative;border-bottom:1px solid #eee;background-color:#fff;display:flex;justify-content:space-between;padding:0 10px;font-size:13px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.left-handler[data-v-59ae6536]{display:flex;align-items:center}.add-element-handler[data-v-59ae6536]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex}.handler-item[data-v-59ae6536]{margin:0 10px;font-size:14px;cursor:pointer}.handler-item.disable[data-v-59ae6536]{opacity:.5}.right-handler[data-v-59ae6536]{display:flex;align-items:center}.right-handler .text[data-v-59ae6536]{width:40px;text-align:center}.right-handler .viewport-size[data-v-59ae6536]{font-size:13px}.thumbnails[data-v-6596d0d5]{border-right:1px solid #eee;background-color:#fff;display:flex;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.add-slide[data-v-6596d0d5]{height:40px;font-size:12px;display:flex;justify-content:center;align-items:center;flex-shrink:0;border-bottom:1px solid #eee;cursor:pointer}.add-slide .icon[data-v-6596d0d5]{margin-right:3px;font-size:14px}.thumbnail-list[data-v-6596d0d5]{padding:5px 0;flex:1;overflow:auto}.thumbnail-item[data-v-6596d0d5]{display:flex;justify-content:center;align-items:center;padding:5px 0}.thumbnail-item .thumbnail[data-v-6596d0d5]{outline:1px solid rgba(209,68,36,.15)}.thumbnail-item.active .label[data-v-6596d0d5]{color:#d14424}.thumbnail-item.active .thumbnail[data-v-6596d0d5],.thumbnail-item.selected .thumbnail[data-v-6596d0d5]{outline-color:#d14424}.label[data-v-6596d0d5]{font-size:12px;color:#999;width:20px;cursor:-webkit-grab;cursor:grab}.label[data-v-6596d0d5]:active{cursor:-webkit-grabbing;cursor:grabbing}.row[data-v-b884607e]{width:100%;display:flex;align-items:center;margin-bottom:10px}.color-btn[data-v-39016b60]{display:flex;align-items:center;justify-content:center;padding:0!important}.color-block[data-v-39016b60]{height:20px;margin-left:8px;flex:1;outline:1px dashed hsla(0,0%,40%,.12)}.color-btn-icon[data-v-39016b60]{width:30px;font-size:12px;margin-top:2px;color:#bfbfbf}.row[data-v-2d8ce9c0]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-2d8ce9c0]{text-align:right}.row[data-v-5cca6474]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-5cca6474]{text-align:right}.text-style-panel[data-v-43fccffc]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.row[data-v-43fccffc]{width:100%;display:flex;align-items:center;margin-bottom:10px}.preset-style[data-v-43fccffc]{display:flex;flex-wrap:wrap;margin-bottom:10px}.preset-style-item[data-v-43fccffc]{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-43fccffc]:hover{border-color:#d14424;color:#d14424;z-index:1}.preset-style-item[data-v-43fccffc]:nth-child(2n){margin-left:-1px}.preset-style-item[data-v-43fccffc]:nth-child(n+3){margin-top:-1px}.text-color-btn[data-v-43fccffc]{display:flex;flex-direction:column;justify-content:center;align-items:center}.text-color-block[data-v-43fccffc]{width:16px;height:3px;margin-top:1px}.row[data-v-4a631c86],.row[data-v-c1cc1cba]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-c1cc1cba]{text-align:right}.origin-image[data-v-c1cc1cba]{height:100px;background-size:contain;background-repeat:no-repeat;background-position:50%;background-color:#f9f9f9;margin-bottom:10px}.full-width-btn[data-v-c1cc1cba]{width:100%;margin-bottom:10px}.btn-icon[data-v-c1cc1cba]{margin-right:3px}.filter[data-v-c1cc1cba]{width:280px;font-size:12px}.filter-item[data-v-c1cc1cba]{padding:8px 5px;display:flex;justify-content:center;align-items:center}.filter-item .name[data-v-c1cc1cba]{width:60px}.filter-item .filter-slider[data-v-c1cc1cba]{flex:1;margin:0 6px}.filter-item .value[data-v-c1cc1cba]{width:40px;text-align:right}.clip[data-v-c1cc1cba]{width:260px;font-size:12px}.clip .title[data-v-c1cc1cba]{margin-bottom:5px}.shape-clip[data-v-c1cc1cba]{margin-bottom:10px;display:flex;flex-wrap:wrap}.shape-clip-item[data-v-c1cc1cba]{display:flex;justify-content:center;align-items:center;cursor:pointer;width:16%;margin-bottom:5%}.shape-clip-item[data-v-c1cc1cba]:not(:nth-child(5n)){margin-right:5%}.shape-clip-item .shape[data-v-c1cc1cba]{width:40px;height:40px;background-position:50%;background-repeat:no-repeat;background-size:cover}.row[data-v-65b24fb3],.row[data-v-998a7a02]{width:100%;display:flex;align-items:center;margin-bottom:10px}.line-btn[data-v-65b24fb3]{display:flex;align-items:center;justify-content:space-between;padding:0!important}.line-btn .line-wrapper[data-v-65b24fb3]{margin-left:8px}.line-wrapper[data-v-65b24fb3]{overflow:visible}.line-btn-icon[data-v-65b24fb3]{width:30px;font-size:12px;margin-top:2px;color:#bfbfbf}.preset-point-style[data-v-65b24fb3]{padding:0 10px}.preset-point-style+.preset-point-style[data-v-65b24fb3]{margin-top:10px}.chart-data-editor[data-v-42e69ec4]{width:600px;position:relative}.editor-content[data-v-42e69ec4]{width:100%;height:360px;overflow:auto;overflow:overlay;position:relative;border-right:1px solid #ccc;border-bottom:1px solid #ccc}.range-box[data-v-42e69ec4]{position:absolute;top:0;left:0;z-index:100;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.temp-range[data-v-42e69ec4]{position:absolute;top:0;left:0;width:0;height:0;background-color:hsla(0,0%,53.3%,.3)}.range-line[data-v-42e69ec4]{position:absolute;width:0;height:0;left:0;top:0;border:0 solid #d14424}.range-line.t[data-v-42e69ec4]{border-top-width:1px}.range-line.b[data-v-42e69ec4]{border-bottom-width:1px}.range-line.l[data-v-42e69ec4]{border-left-width:1px}.range-line.r[data-v-42e69ec4]{border-right-width:1px}.resizable[data-v-42e69ec4]{position:absolute;width:12px;height:12px;left:0;top:0;margin:-9px 0 0 -9px;cursor:nwse-resize}.resizable[data-v-42e69ec4]:after{content:"";position:absolute;width:4px;height:12px;right:0;top:0;background-color:#d14424}.resizable[data-v-42e69ec4]:before{content:"";position:absolute;width:12px;height:4px;right:0;bottom:0;background-color:#d14424}table[data-v-42e69ec4]{width:100%;height:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;table-layout:fixed}table td[data-v-42e69ec4]{text-align:center;border:1px solid #ccc;vertical-align:middle;width:100px;height:32px}table td.head[data-v-42e69ec4]{background-color:rgba(209,68,36,.1)}table .item[data-v-42e69ec4]{width:100%;height:100%;border:0;outline:0;font-size:13px;text-align:center;background-color:transparent}table .item.selected[data-v-42e69ec4]{background-color:rgba(209,68,36,.02)}.btns[data-v-42e69ec4]{margin-top:10px;text-align:right}.btns .btn[data-v-42e69ec4]{margin-left:10px}.row[data-v-4dd87e36]{width:100%;display:flex;align-items:center;margin-bottom:10px}.full-width-btn[data-v-4dd87e36]{width:100%}.btn-icon[data-v-4dd87e36]{margin-right:3px}.row[data-v-2db32cac]{width:100%;display:flex;align-items:center;margin-bottom:10px}.theme-switch[data-v-2db32cac]{margin-bottom:18px}.switch-wrapper[data-v-2db32cac]{text-align:right}.text-color-btn[data-v-2db32cac]{display:flex;flex-direction:column;justify-content:center;align-items:center}.text-color-block[data-v-2db32cac]{width:16px;height:3px;margin-top:1px}.row[data-v-15c9ddcc]{width:100%;display:flex;align-items:center;margin-bottom:10px}.label[data-v-15c9ddcc]{text-align:center}.icon-btn[data-v-15c9ddcc]{cursor:pointer}.element-animation-btn[data-v-2a95eecd]{width:100%}.tip[data-v-2a95eecd]{text-align:center;font-style:italic;padding-top:12px}.animation-pool[data-v-2a95eecd]{width:400px;height:500px;overflow-y:auto;overflow-x:hidden;font-size:12px;margin-right:-12px;padding-right:12px}.type-title[data-v-2a95eecd]{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-2a95eecd]{display:flex;flex-wrap:wrap}.pool-item[data-v-2a95eecd]{width:24%;margin-bottom:1.33333%;margin-bottom:10px;height:40px;line-height:40px;text-align:center;cursor:pointer}.pool-item[data-v-2a95eecd]:not(:nth-child(4n)){margin-right:1.33333%}.animation-box[data-v-2a95eecd]{background-color:#f9f9f9}.sequence-item[data-v-2a95eecd]{height:36px;display:flex;align-items:center;border:1px solid #eee;padding:6px;border-radius:2px;margin-bottom:8px;cursor:-webkit-grab;cursor:grab}.sequence-item[data-v-2a95eecd]:active{cursor:-webkit-grabbing;cursor:grabbing}.sequence-item.active[data-v-2a95eecd]{border-color:#d14424}.sequence-item .index[data-v-2a95eecd]{flex:1}.sequence-item .text[data-v-2a95eecd]{flex:6}.sequence-item .handler[data-v-2a95eecd]{flex:2;font-size:15px;text-align:right}.sequence-item .handler-btn[data-v-2a95eecd]{margin-left:8px;cursor:pointer}.row[data-v-2e49fc42]{width:100%;display:flex;align-items:center;margin-bottom:10px}.background-image-wrapper[data-v-2e49fc42],.title[data-v-2e49fc42]{margin-bottom:10px}.background-image[data-v-2e49fc42]{height:0;padding-bottom:56.25%;border:1px dashed #eee;border-radius:2px;position:relative;transition:all .2s}.background-image[data-v-2e49fc42]:hover{border-color:#d14424;color:#d14424}.background-image .content[data-v-2e49fc42]{position:absolute;top:0;bottom:0;left:0;right: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-2e49fc42]{display:flex;flex-wrap:wrap}.theme-item[data-v-2e49fc42]{width:22%;margin-bottom:4%;padding-bottom:22%;border-radius:2px;position:relative;cursor:pointer}.theme-item[data-v-2e49fc42]:not(:nth-child(4n)){margin-right:4%}.theme-item .theme-item-content[data-v-2e49fc42]{position:absolute;top:0;bottom:0;left:0;right:0;display:flex;flex-direction:column;justify-content:center;align-items:center;transition:box-shadow .2s}.theme-item .theme-item-content[data-v-2e49fc42]:hover{box-shadow:0 0 4px #888}.theme-item .text[data-v-2e49fc42]{font-size:16px}.theme-item .color-block[data-v-2e49fc42]{width:28px;height:10px;margin-top:5px}.animation-pool[data-v-6e3028f1]{display:flex;flex-wrap:wrap;margin-bottom:10px}.animation-item[data-v-6e3028f1]{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-6e3028f1]{border-color:#d14424;z-index:1}.animation-item[data-v-6e3028f1]:nth-child(2n){margin-left:-1px}.animation-item[data-v-6e3028f1]:nth-child(n+3){margin-top:-1px}.animation-block[data-v-6e3028f1]{width:64px;height:36px;background:#666;position:relative;overflow:hidden}.animation-block.fade[data-v-6e3028f1]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:fade-6e3028f1 .3s linear;animation:fade-6e3028f1 .3s linear}.animation-block.slideX[data-v-6e3028f1]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:slideX-6e3028f1 .3s linear;animation:slideX-6e3028f1 .3s linear}.animation-block.slideY[data-v-6e3028f1]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:slideY-6e3028f1 .3s linear;animation:slideY-6e3028f1 .3s linear}.animation-text[data-v-6e3028f1]{font-size:12px;color:#333;text-align:center}@-webkit-keyframes fade-6e3028f1{0%{opacity:0}to{opacity:1}}@keyframes fade-6e3028f1{0%{opacity:0}to{opacity:1}}@-webkit-keyframes slideX-6e3028f1{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slideX-6e3028f1{0%{transform:translateX(100%)}to{transform:translateX(0)}}@-webkit-keyframes slideY-6e3028f1{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideY-6e3028f1{0%{transform:translateY(100%)}to{transform:translateY(0)}}.row[data-v-153f2e6e]{width:100%;display:flex;align-items:center;margin-bottom:10px}.toolbar[data-v-f790671e]{border-left:1px solid #eee;background-color:#fff;display:flex;flex-direction:column}.tabs[data-v-f790671e]{height:40px;font-size:12px;flex-shrink:0;display:flex}.tab[data-v-f790671e]{flex:1;display:flex;justify-content:center;align-items:center;background-color:#f9f9f9;border-bottom:1px solid #eee;cursor:pointer}.tab.active[data-v-f790671e]{background-color:#fff;border-bottom-color:#fff}.tab+.tab[data-v-f790671e]{border-left:1px solid #eee}.content[data-v-f790671e]{padding:12px;font-size:13px;overflow:auto;overflow:overlay}.remark[data-v-89372f4a]{position:relative;border-top:1px solid #eee;background-color:#f9f9f9}.remark textarea[data-v-89372f4a]{width:100%;height:100%;position:absolute;left:0;right:0;top:0;bottom:0;overflow-y:auto;resize:none;border:0;outline:0;padding:8px;font-size:12px;background-color:transparent}.resize-handler[data-v-89372f4a]{height:7px;position:absolute;top:-3px;left:0;right:0;cursor:n-resize;z-index:2}.pptist-editor[data-v-55178b6a]{height:100%}.layout-header[data-v-55178b6a]{height:40px}.layout-content[data-v-55178b6a]{height:calc(100% - 40px);display:flex}.layout-content-left[data-v-55178b6a]{width:160px;height:100%;flex-shrink:0}.layout-content-center[data-v-55178b6a]{width:calc(100% - 420px)}.layout-content-center .center-top[data-v-55178b6a]{height:40px}.layout-content-right[data-v-55178b6a]{width:260px;height:100%}.screen-element-chart[data-v-1423f8c2]{position:absolute}.element-content[data-v-1423f8c2]{width:100%;height:100%}.screen-slide[data-v-a094625a]{position:absolute;top:0;left:0;transform-origin:0 0}.background[data-v-a094625a]{width:100%;height:100%;background-position:50%;position:absolute}.slide-thumbnails[data-v-9174b3bc]{width:100%;height:100%;position:fixed;top:0;left:0;background-color:#1a1a1a;z-index:99}.return-button[data-v-9174b3bc]{height:60px;padding:20px 30px 0}.return-button .icon[data-v-9174b3bc]{color:#fff;font-size:36px;cursor:pointer}.return-button .icon[data-v-9174b3bc]:hover{color:#d14424}.slide-thumbnails-content[data-v-9174b3bc]{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-9174b3bc]{width:150px;outline:2px solid #aaa;margin-right:12px;margin-bottom:12px}.slide-thumbnails-content .thumbnail[data-v-9174b3bc]:hover{outline-color:#d14424}.slide-thumbnails-content .thumbnail.active[data-v-9174b3bc]{outline-width:3px;outline-color:#d14424}.writing-board[data-v-4ddc4b2c]{position:fixed;top:0;bottom:0;left:0;right:0;z-index:8;cursor:none}.eraser[data-v-4ddc4b2c],.pen[data-v-4ddc4b2c]{pointer-events:none;position:fixed;z-index:9}.eraser .icon[data-v-4ddc4b2c],.pen .icon[data-v-4ddc4b2c]{filter:drop-shadow(2px 2px 2px #555)}.eraser[data-v-4ddc4b2c]{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-f34025bc]{font-size:12px}.writing-board-tool .tools[data-v-f34025bc]{height:50px;position:fixed;bottom:5px;left:5px;z-index:11;padding:12px;background-color:#eee;border-radius:2px;display:flex;align-items:center}.writing-board-tool .btn[data-v-f34025bc]{padding:5px 10px;cursor:pointer}.writing-board-tool .btn[data-v-f34025bc]:hover{color:#d14424}.writing-board-tool .btn.active[data-v-f34025bc]{background-color:rgba(209,68,36,.5);color:#fff}.writing-board-tool .icon[data-v-f34025bc]{font-size:20px}.writing-board-tool .colors[data-v-f34025bc]{display:flex;padding:0 10px}.writing-board-tool .color[data-v-f34025bc]{width:16px;height:16px;border-radius:2px;cursor:pointer}.writing-board-tool .color[data-v-f34025bc]:hover{transform:scale(1.15)}.writing-board-tool .color.active[data-v-f34025bc]{transform:scale(1.3)}.writing-board-tool .color+.color[data-v-f34025bc]{margin-left:8px}.pptist-screen[data-v-5e85dd68]{width:100%;height:100%;position:relative;background-color:#111}.slide-list[data-v-5e85dd68]{background:#1d1d1d;position:relative;width:100%;height:100%}.slide-item[data-v-5e85dd68]{position:absolute;top:0;left:0;width:100%;height:100%}.slide-item.current[data-v-5e85dd68]{z-index:2}.slide-item.hide[data-v-5e85dd68]{opacity:0}.slide-item.turning-mode-no.before[data-v-5e85dd68]{transform:translateY(-100%)}.slide-item.turning-mode-no.after[data-v-5e85dd68]{transform:translateY(100%)}.slide-item.turning-mode-fade[data-v-5e85dd68]{transition:opacity .75s}.slide-item.turning-mode-fade.after[data-v-5e85dd68],.slide-item.turning-mode-fade.before[data-v-5e85dd68]{pointer-events:none;opacity:0}.slide-item.turning-mode-slideX[data-v-5e85dd68]{transition:transform .35s}.slide-item.turning-mode-slideX.before[data-v-5e85dd68]{transform:translateX(-100%)}.slide-item.turning-mode-slideX.after[data-v-5e85dd68]{transform:translateX(100%)}.slide-item.turning-mode-slideY[data-v-5e85dd68]{transition:transform .35s}.slide-item.turning-mode-slideY.before[data-v-5e85dd68]{transform:translateY(-100%)}.slide-item.turning-mode-slideY.after[data-v-5e85dd68]{transform:translateY(100%)}.slide-content[data-v-5e85dd68]{background-color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;justify-content:center;align-items:center}.tools[data-v-5e85dd68]{position:fixed;bottom:8px;left:8px;font-size:25px;color:#666;z-index:10;cursor:pointer}.tool-btn[data-v-5e85dd68]{opacity:.35}.tool-btn[data-v-5e85dd68]:hover{opacity:.9}.tool-btn+.tool-btn[data-v-5e85dd68]{margin-left:8px}.page-number[data-v-5e85dd68]{position:fixed;bottom:8px;right:8px;padding:8px 12px;color:#666;background-color:#eee;border-radius:2px;z-index:10;cursor:pointer}#app{height:100%}.ProseMirror,.ProseMirror-static{outline:0;border:0;font-size:20px;word-break:break-word}.ProseMirror-static:not(.ProseMirror-static),.ProseMirror:not(.ProseMirror-static){-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ProseMirror-static ::-moz-selection,.ProseMirror ::-moz-selection{background-color:rgba(209,68,36,.3);color:inherit}.ProseMirror-static ::selection,.ProseMirror ::selection{background-color:rgba(209,68,36,.3);color:inherit}.ProseMirror-static p+p,.ProseMirror p+p{margin-top:5px}.ProseMirror-static ul,.ProseMirror ul{list-style-type:disc;-webkit-padding-start:20px;padding-inline-start:20px}.ProseMirror-static ul li,.ProseMirror ul li{list-style-type:disc}.ProseMirror-static ol,.ProseMirror ol{list-style-type:decimal;-webkit-padding-start:20px;padding-inline-start:20px}.ProseMirror-static ol li,.ProseMirror ol li{list-style-type:decimal}.ProseMirror-static code,.ProseMirror code{background-color:#eee;padding:1px 3px;margin:0 1px;border-radius:2px;font-family:inherit}.ProseMirror-static blockquote,.ProseMirror blockquote{overflow:hidden;padding-right:1.2em;padding-left:1.2em;margin-left:0;margin-right:0;font-style:italic;border-left:5px solid #ccc}.ProseMirror-selectednode{outline:none!important}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font-size:100%;vertical-align:baseline;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol}body,html{height:100%;overflow:hidden;background-color:#fff;color:#41464b}li,ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:""}table{border-collapse:collapse;border-spacing:0}a{text-decoration:none}::-webkit-scrollbar{width:5px;height:5px;background-color:#fff}::-webkit-scrollbar-thumb{background-color:#c1c1c1}.ant-popover{padding-top:5px!important}.ant-popover-arrow{display:none}.ant-popover-inner{box-shadow:3px 3px 3px rgba(0,0,0,.15);border:1px solid #eee}.ant-popover-inner-content{padding:12px!important}.ant-dropdown{min-width:120px}.ant-dropdown-menu{box-shadow:3px 3px 3px rgba(0,0,0,.15)}.ant-dropdown-menu-item:hover{background-color:rgba(209,68,36,.2)}.ant-btn.no-padding{padding:0}.ant-radio-button-wrapper{text-align:center}.ant-slider-track{background-color:#d14424}.ant-slider-handle{border-color:#d14424}.ant-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-select-item-option-active:not(.ant-select-item-option-disabled){background-color:rgba(209,68,36,.2)}.ant-tooltip-inner{font-size:12px}@font-face{font-family:仓耳小丸子;src:url(../fonts/仓耳小丸子.676e187a.ttf)}@font-face{font-family:优设标题黑;src:url(../fonts/优设标题黑.1726685c.ttf)}@font-face{font-family:峰广明锐体;src:url(../fonts/峰广明锐体.8bdb14f7.ttf)}@font-face{font-family:摄图摩登小方体;src:url(../fonts/摄图摩登小方体.de722238.ttf)}@font-face{font-family:站酷快乐体;src:url(../fonts/站酷快乐体.0aceab97.ttf)}@font-face{font-family:站酷酷黑体;src:url(../fonts/站酷酷黑体.6b4f114c.ttf)}@font-face{font-family:素材集市康康体;src:url(../fonts/素材集市康康体.8db9d61f.ttf)}@font-face{font-family:联盟起艺卢帅正锐黑体;src:url(../fonts/联盟起艺卢帅正锐黑体.42cb84f9.ttf)}@font-face{font-family:谦度手写楷体;src:url(../fonts/谦度手写楷体.7bfb15ee.ttf)}@font-face{font-family:途牛类圆体;src:url(../fonts/途牛类圆体.abaea3c4.ttf)}@font-face{font-family:锐字真言体;src:url(../fonts/锐字真言体.1583afec.ttf)}@font-face{font-family:问藏书房;src:url(../fonts/问藏书房.59a94370.ttf)}.menu-content[data-v-5490894e]{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-5490894e]{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-5490894e]{display:block}.menu-item:not(.disable):hover>.has-children.has-handler[data-v-5490894e]:after{transform:scale(1)}.menu-item[data-v-5490894e]:hover:not(.disable){background-color:rgba(209,68,36,.2)}.menu-item.divider[data-v-5490894e]{height:1px;overflow:hidden;margin:5px;background-color:#e5e5e5;line-height:0;padding:0}.menu-item.disable[data-v-5490894e]{color:#b1b1b1;cursor:no-drop}.menu-item-content[data-v-5490894e]{display:flex;align-items:center;justify-content:space-between;position:relative}.menu-item-content.has-children[data-v-5490894e]: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-5490894e]: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-5490894e]{opacity:.6}.menu-item-content .sub-menu[data-v-5490894e]{width:120px;position:absolute;display:none;left:112%;top:-6px}.mask{position:fixed;left:0;top:0;width:100vw;height:100vh;z-index:9998}.contextmenu{position:fixed;z-index:9999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.input[data-v-bf80565c]{display:none}.checkbox-button[data-v-7cae2b90]{outline:0;background-color:#fff;border:1px solid #d9d9d9;font-size:13px;padding:0 15px;height:32px;text-align:center;cursor:pointer}.checkbox-button[data-v-7cae2b90]:hover{color:#d14424}.checkbox-button.checked[data-v-7cae2b90]{color:#fff;background-color:#d14424;border-color:#d14424}.checkbox-button.checked[data-v-7cae2b90]:hover{background:rgba(209,68,36,.9);border-color:rgba(209,68,36,.9)}.checkbox-button-group[data-v-7dafd0a9]{display:flex;align-items:center}.checkbox-button-group[data-v-7dafd0a9] .checkbox-button{border-radius:0;border-left-width:0;border-right-width:0;display:inline-block}.checkbox-button-group[data-v-7dafd0a9] .checkbox-button+.checkbox-button{border-left-width:1px}.checkbox-button-group[data-v-7dafd0a9] .checkbox-button:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px;border-left-width:1px}.checkbox-button-group[data-v-7dafd0a9] .checkbox-button:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right-width:1px}.checkerboard[data-v-e9a0ac98]{background-size:contain}.alpha-checkboard-wrap[data-v-ecf7d10e],.alpha[data-v-ecf7d10e],.checkerboard[data-v-e9a0ac98]{position:absolute;top:0;right:0;bottom:0;left:0}.alpha-checkboard-wrap[data-v-ecf7d10e]{overflow:hidden}.alpha-gradient[data-v-ecf7d10e]{position:absolute;top:0;right:0;bottom:0;left:0}.alpha-container[data-v-ecf7d10e]{cursor:pointer;position:relative;z-index:2;height:100%;margin:0 3px}.alpha-pointer[data-v-ecf7d10e]{z-index:2;position:absolute}.alpha-picker[data-v-ecf7d10e]{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-7b983451]{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.hue-container[data-v-7b983451]{cursor:pointer;margin:0 2px;position:relative;height:100%}.hue-pointer[data-v-7b983451]{z-index:2;position:absolute;top:0}.hue-picker[data-v-7b983451]{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-5310dbb4],.saturation-white[data-v-5310dbb4],.saturation[data-v-5310dbb4]{position:absolute;top:0;left:0;right:0;bottom:0;cursor:pointer}.saturation-white[data-v-5310dbb4]{background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.saturation-black[data-v-5310dbb4]{background:linear-gradient(0deg,#000,transparent)}.saturation-pointer[data-v-5310dbb4]{cursor:pointer;position:absolute}.saturation-circle[data-v-5310dbb4]{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-0311fdee]{width:100%;position:relative;overflow:hidden;text-align:center;font-size:14px}.input-content[data-v-0311fdee]{width:100%;padding:3px;border:0;border-bottom:1px solid #ddd;outline:none;text-align:center}.input-label[data-v-0311fdee]{text-transform:capitalize}.color-picker[data-v-20575236]{position:relative;width:240px;background:#fff;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-bottom:-10px}.picker-saturation-wrap[data-v-20575236]{width:100%;padding-bottom:50%;position:relative;overflow:hidden}.picker-controls[data-v-20575236]{display:flex}.picker-sliders[data-v-20575236]{padding:4px 0;flex:1}.picker-hue-wrap[data-v-20575236]{position:relative;height:10px}.picker-alpha-wrap[data-v-20575236]{position:relative;height:10px;margin-top:4px;overflow:hidden}.picker-color-wrap[data-v-20575236]{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-20575236]{background-size:auto}.picker-current-color[data-v-20575236]{position:absolute;top:0;left:0;right:0;bottom:0;z-index:2}.picker-field[data-v-20575236]{margin-bottom:8px}.picker-presets[data-v-20575236]{display:flex;flex-wrap:wrap}.picker-presets-color[data-v-20575236]{width:7%;margin-bottom:3.33333%;height:0;padding-bottom:7%;flex-shrink:0;position:relative;cursor:pointer}.picker-presets-color[data-v-20575236]:not(:nth-child(10n)){margin-right:3.33333%}.picker-gradient-presets[data-v-20575236]{display:flex;flex-wrap:wrap}.picker-gradient-col[data-v-20575236]{width:7%;margin-bottom:3.33333%;display:flex;flex-direction:column}.picker-gradient-col[data-v-20575236]:not(:nth-child(10n)){margin-right:3.33333%}.picker-gradient-color[data-v-20575236]{width:100%;height:0;padding-bottom:100%;position:relative;cursor:pointer}.recent-colors-title[data-v-20575236]{font-size:12px;margin-bottom:4px}.recent-colors[data-v-20575236]{display:flex;flex-wrap:wrap}
\ No newline at end of file
diff --git a/dist/css/chunk-vendors.dbf85e2c.css b/dist/css/chunk-vendors.dbf85e2c.css
deleted file mode 100644
index 91e5265b..00000000
--- a/dist/css/chunk-vendors.dbf85e2c.css
+++ /dev/null
@@ -1,7 +0,0 @@
-[class*=ant-]::-ms-clear,[class*=ant-] input::-ms-clear,[class*=ant-] input::-ms-reveal,[class^=ant-]::-ms-clear,[class^=ant-] input::-ms-clear,[class^=ant-] input::-ms-reveal{display:none}[class*=ant-],[class*=ant-] *,[class*=ant-] :after,[class*=ant-] :before,[class^=ant-],[class^=ant-] *,[class^=ant-] :after,[class^=ant-] :before{box-sizing:border-box}body,html{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}body{margin:0;color:#41464b;font-size:13px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variant:tabular-nums;line-height:1.5715;background-color:#fff;font-feature-settings:"tnum"}[tabindex="-1"]:focus{outline:none!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;color:rgba(0,0,0,.85);font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;border-bottom:0;cursor:help}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=number],input[type=password],input[type=text],textarea{-webkit-appearance:none}dl,ol,ul{margin-top:0;margin-bottom:1em}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#d14424;text-decoration:none;background-color:transparent;outline:none;cursor:pointer;transition:color .3s;-webkit-text-decoration-skip:objects}a:hover{color:#de6949}a:active{color:#ab2b15}a:active,a:focus,a:hover{text-decoration:none;outline:0}a[disabled]{color:rgba(0,0,0,.25);cursor:not-allowed;pointer-events:none}code,kbd,pre,samp{font-size:1em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input:not([type=range]),label,select,summary,textarea{touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;color:rgba(0,0,0,.45);text-align:left;caption-side:bottom}th{text-align:inherit}button,input,optgroup,select,textarea{margin:0;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;margin:0;padding:0;border:0}legend{display:block;width:100%;max-width:100%;margin-bottom:.5em;padding:0;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6}::-moz-selection{color:#fff;background:#d14424}::selection{color:#fff;background:#d14424}.clearfix{zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}.anticon{display:inline-block;color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.anticon>*{line-height:1}.anticon svg{display:inline-block}.anticon:before{display:none}.anticon .anticon-icon{display:block}.anticon[tabindex]{cursor:pointer}.anticon-spin,.anticon-spin:before{display:inline-block;-webkit-animation:loadingCircle 1s linear infinite;animation:loadingCircle 1s linear infinite}.fade-appear,.fade-enter,.fade-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.fade-appear.fade-appear-active,.fade-enter.fade-enter-active{-webkit-animation-name:antFadeIn;animation-name:antFadeIn;-webkit-animation-play-state:running;animation-play-state:running}.fade-leave.fade-leave-active{-webkit-animation-name:antFadeOut;animation-name:antFadeOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.fade-appear,.fade-enter{opacity:0}.fade-appear,.fade-enter,.fade-leave{-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes antFadeIn{0%{opacity:0}to{opacity:1}}@keyframes antFadeIn{0%{opacity:0}to{opacity:1}}@-webkit-keyframes antFadeOut{0%{opacity:1}to{opacity:0}}@keyframes antFadeOut{0%{opacity:1}to{opacity:0}}.move-up-appear,.move-up-enter,.move-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-up-appear.move-up-appear-active,.move-up-enter.move-up-enter-active{-webkit-animation-name:antMoveUpIn;animation-name:antMoveUpIn;-webkit-animation-play-state:running;animation-play-state:running}.move-up-leave.move-up-leave-active{-webkit-animation-name:antMoveUpOut;animation-name:antMoveUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-up-appear,.move-up-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-up-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-down-appear,.move-down-enter,.move-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-down-appear.move-down-appear-active,.move-down-enter.move-down-enter-active{-webkit-animation-name:antMoveDownIn;animation-name:antMoveDownIn;-webkit-animation-play-state:running;animation-play-state:running}.move-down-leave.move-down-leave-active{-webkit-animation-name:antMoveDownOut;animation-name:antMoveDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-down-appear,.move-down-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-down-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-left-appear,.move-left-enter,.move-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-left-appear.move-left-appear-active,.move-left-enter.move-left-enter-active{-webkit-animation-name:antMoveLeftIn;animation-name:antMoveLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.move-left-leave.move-left-leave-active{-webkit-animation-name:antMoveLeftOut;animation-name:antMoveLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-left-appear,.move-left-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-left-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-right-appear,.move-right-enter,.move-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-right-appear.move-right-appear-active,.move-right-enter.move-right-enter-active{-webkit-animation-name:antMoveRightIn;animation-name:antMoveRightIn;-webkit-animation-play-state:running;animation-play-state:running}.move-right-leave.move-right-leave-active{-webkit-animation-name:antMoveRightOut;animation-name:antMoveRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-right-appear,.move-right-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-right-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}@-webkit-keyframes antMoveDownIn{0%{transform:translateY(100%);transform-origin:0 0;opacity:0}to{transform:translateY(0);transform-origin:0 0;opacity:1}}@keyframes antMoveDownIn{0%{transform:translateY(100%);transform-origin:0 0;opacity:0}to{transform:translateY(0);transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveDownOut{0%{transform:translateY(0);transform-origin:0 0;opacity:1}to{transform:translateY(100%);transform-origin:0 0;opacity:0}}@keyframes antMoveDownOut{0%{transform:translateY(0);transform-origin:0 0;opacity:1}to{transform:translateY(100%);transform-origin:0 0;opacity:0}}@-webkit-keyframes antMoveLeftIn{0%{transform:translateX(-100%);transform-origin:0 0;opacity:0}to{transform:translateX(0);transform-origin:0 0;opacity:1}}@keyframes antMoveLeftIn{0%{transform:translateX(-100%);transform-origin:0 0;opacity:0}to{transform:translateX(0);transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveLeftOut{0%{transform:translateX(0);transform-origin:0 0;opacity:1}to{transform:translateX(-100%);transform-origin:0 0;opacity:0}}@keyframes antMoveLeftOut{0%{transform:translateX(0);transform-origin:0 0;opacity:1}to{transform:translateX(-100%);transform-origin:0 0;opacity:0}}@-webkit-keyframes antMoveRightIn{0%{transform:translateX(100%);transform-origin:0 0;opacity:0}to{transform:translateX(0);transform-origin:0 0;opacity:1}}@keyframes antMoveRightIn{0%{transform:translateX(100%);transform-origin:0 0;opacity:0}to{transform:translateX(0);transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveRightOut{0%{transform:translateX(0);transform-origin:0 0;opacity:1}to{transform:translateX(100%);transform-origin:0 0;opacity:0}}@keyframes antMoveRightOut{0%{transform:translateX(0);transform-origin:0 0;opacity:1}to{transform:translateX(100%);transform-origin:0 0;opacity:0}}@-webkit-keyframes antMoveUpIn{0%{transform:translateY(-100%);transform-origin:0 0;opacity:0}to{transform:translateY(0);transform-origin:0 0;opacity:1}}@keyframes antMoveUpIn{0%{transform:translateY(-100%);transform-origin:0 0;opacity:0}to{transform:translateY(0);transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveUpOut{0%{transform:translateY(0);transform-origin:0 0;opacity:1}to{transform:translateY(-100%);transform-origin:0 0;opacity:0}}@keyframes antMoveUpOut{0%{transform:translateY(0);transform-origin:0 0;opacity:1}to{transform:translateY(-100%);transform-origin:0 0;opacity:0}}@-webkit-keyframes loadingCircle{to{transform:rotate(1turn)}}@keyframes loadingCircle{to{transform:rotate(1turn)}}[ant-click-animating-without-extra-node=true],[ant-click-animating=true]{position:relative}html{--antd-wave-shadow-color:#d14424}.ant-click-animating-node,[ant-click-animating-without-extra-node=true]:after{position:absolute;top:0;right:0;bottom:0;left:0;display:block;border-radius:inherit;box-shadow:0 0 0 0 #d14424;box-shadow:0 0 0 0 var(--antd-wave-shadow-color);opacity:.2;-webkit-animation:fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);animation:fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;content:"";pointer-events:none}@-webkit-keyframes waveEffect{to{box-shadow:0 0 0 #d14424;box-shadow:0 0 0 6px var(--antd-wave-shadow-color)}}@keyframes waveEffect{to{box-shadow:0 0 0 #d14424;box-shadow:0 0 0 6px var(--antd-wave-shadow-color)}}@-webkit-keyframes fadeEffect{to{opacity:0}}@keyframes fadeEffect{to{opacity:0}}.slide-up-appear,.slide-up-enter,.slide-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-up-appear.slide-up-appear-active,.slide-up-enter.slide-up-enter-active{-webkit-animation-name:antSlideUpIn;animation-name:antSlideUpIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-up-leave.slide-up-leave-active{-webkit-animation-name:antSlideUpOut;animation-name:antSlideUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-up-appear,.slide-up-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-up-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-down-appear,.slide-down-enter,.slide-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-down-appear.slide-down-appear-active,.slide-down-enter.slide-down-enter-active{-webkit-animation-name:antSlideDownIn;animation-name:antSlideDownIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-down-leave.slide-down-leave-active{-webkit-animation-name:antSlideDownOut;animation-name:antSlideDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-down-appear,.slide-down-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-down-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-left-appear,.slide-left-enter,.slide-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-left-appear.slide-left-appear-active,.slide-left-enter.slide-left-enter-active{-webkit-animation-name:antSlideLeftIn;animation-name:antSlideLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-left-leave.slide-left-leave-active{-webkit-animation-name:antSlideLeftOut;animation-name:antSlideLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-left-appear,.slide-left-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-left-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-right-appear,.slide-right-enter,.slide-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-right-appear.slide-right-appear-active,.slide-right-enter.slide-right-enter-active{-webkit-animation-name:antSlideRightIn;animation-name:antSlideRightIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-right-leave.slide-right-leave-active{-webkit-animation-name:antSlideRightOut;animation-name:antSlideRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-right-appear,.slide-right-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-right-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}@-webkit-keyframes antSlideUpIn{0%{transform:scaleY(.8);transform-origin:0 0;opacity:0}to{transform:scaleY(1);transform-origin:0 0;opacity:1}}@keyframes antSlideUpIn{0%{transform:scaleY(.8);transform-origin:0 0;opacity:0}to{transform:scaleY(1);transform-origin:0 0;opacity:1}}@-webkit-keyframes antSlideUpOut{0%{transform:scaleY(1);transform-origin:0 0;opacity:1}to{transform:scaleY(.8);transform-origin:0 0;opacity:0}}@keyframes antSlideUpOut{0%{transform:scaleY(1);transform-origin:0 0;opacity:1}to{transform:scaleY(.8);transform-origin:0 0;opacity:0}}@-webkit-keyframes antSlideDownIn{0%{transform:scaleY(.8);transform-origin:100% 100%;opacity:0}to{transform:scaleY(1);transform-origin:100% 100%;opacity:1}}@keyframes antSlideDownIn{0%{transform:scaleY(.8);transform-origin:100% 100%;opacity:0}to{transform:scaleY(1);transform-origin:100% 100%;opacity:1}}@-webkit-keyframes antSlideDownOut{0%{transform:scaleY(1);transform-origin:100% 100%;opacity:1}to{transform:scaleY(.8);transform-origin:100% 100%;opacity:0}}@keyframes antSlideDownOut{0%{transform:scaleY(1);transform-origin:100% 100%;opacity:1}to{transform:scaleY(.8);transform-origin:100% 100%;opacity:0}}@-webkit-keyframes antSlideLeftIn{0%{transform:scaleX(.8);transform-origin:0 0;opacity:0}to{transform:scaleX(1);transform-origin:0 0;opacity:1}}@keyframes antSlideLeftIn{0%{transform:scaleX(.8);transform-origin:0 0;opacity:0}to{transform:scaleX(1);transform-origin:0 0;opacity:1}}@-webkit-keyframes antSlideLeftOut{0%{transform:scaleX(1);transform-origin:0 0;opacity:1}to{transform:scaleX(.8);transform-origin:0 0;opacity:0}}@keyframes antSlideLeftOut{0%{transform:scaleX(1);transform-origin:0 0;opacity:1}to{transform:scaleX(.8);transform-origin:0 0;opacity:0}}@-webkit-keyframes antSlideRightIn{0%{transform:scaleX(.8);transform-origin:100% 0;opacity:0}to{transform:scaleX(1);transform-origin:100% 0;opacity:1}}@keyframes antSlideRightIn{0%{transform:scaleX(.8);transform-origin:100% 0;opacity:0}to{transform:scaleX(1);transform-origin:100% 0;opacity:1}}@-webkit-keyframes antSlideRightOut{0%{transform:scaleX(1);transform-origin:100% 0;opacity:1}to{transform:scaleX(.8);transform-origin:100% 0;opacity:0}}@keyframes antSlideRightOut{0%{transform:scaleX(1);transform-origin:100% 0;opacity:1}to{transform:scaleX(.8);transform-origin:100% 0;opacity:0}}.swing-appear,.swing-enter{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.swing-appear.swing-appear-active,.swing-enter.swing-enter-active{-webkit-animation-name:antSwingIn;animation-name:antSwingIn;-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes antSwingIn{0%,to{transform:translateX(0)}20%{transform:translateX(-10px)}40%{transform:translateX(10px)}60%{transform:translateX(-5px)}80%{transform:translateX(5px)}}@keyframes antSwingIn{0%,to{transform:translateX(0)}20%{transform:translateX(-10px)}40%{transform:translateX(10px)}60%{transform:translateX(-5px)}80%{transform:translateX(5px)}}.zoom-appear,.zoom-enter,.zoom-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-appear.zoom-appear-active,.zoom-enter.zoom-enter-active{-webkit-animation-name:antZoomIn;animation-name:antZoomIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-leave.zoom-leave-active{-webkit-animation-name:antZoomOut;animation-name:antZoomOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-appear,.zoom-enter{transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-appear-prepare,.zoom-enter-prepare{transform:none}.zoom-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-big-appear,.zoom-big-enter,.zoom-big-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-big-appear.zoom-big-appear-active,.zoom-big-enter.zoom-big-enter-active{-webkit-animation-name:antZoomBigIn;animation-name:antZoomBigIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-big-leave.zoom-big-leave-active{-webkit-animation-name:antZoomBigOut;animation-name:antZoomBigOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-big-appear,.zoom-big-enter{transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-big-appear-prepare,.zoom-big-enter-prepare{transform:none}.zoom-big-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-big-fast-appear,.zoom-big-fast-enter,.zoom-big-fast-leave{-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-big-fast-appear.zoom-big-fast-appear-active,.zoom-big-fast-enter.zoom-big-fast-enter-active{-webkit-animation-name:antZoomBigIn;animation-name:antZoomBigIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-big-fast-leave.zoom-big-fast-leave-active{-webkit-animation-name:antZoomBigOut;animation-name:antZoomBigOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-big-fast-appear,.zoom-big-fast-enter{transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-big-fast-appear-prepare,.zoom-big-fast-enter-prepare{transform:none}.zoom-big-fast-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-up-appear,.zoom-up-enter,.zoom-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-up-appear.zoom-up-appear-active,.zoom-up-enter.zoom-up-enter-active{-webkit-animation-name:antZoomUpIn;animation-name:antZoomUpIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-up-leave.zoom-up-leave-active{-webkit-animation-name:antZoomUpOut;animation-name:antZoomUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-up-appear,.zoom-up-enter{transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-up-appear-prepare,.zoom-up-enter-prepare{transform:none}.zoom-up-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-down-appear,.zoom-down-enter,.zoom-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-down-appear.zoom-down-appear-active,.zoom-down-enter.zoom-down-enter-active{-webkit-animation-name:antZoomDownIn;animation-name:antZoomDownIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-down-leave.zoom-down-leave-active{-webkit-animation-name:antZoomDownOut;animation-name:antZoomDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-down-appear,.zoom-down-enter{transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-down-appear-prepare,.zoom-down-enter-prepare{transform:none}.zoom-down-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-left-appear,.zoom-left-enter,.zoom-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-left-appear.zoom-left-appear-active,.zoom-left-enter.zoom-left-enter-active{-webkit-animation-name:antZoomLeftIn;animation-name:antZoomLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-left-leave.zoom-left-leave-active{-webkit-animation-name:antZoomLeftOut;animation-name:antZoomLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-left-appear,.zoom-left-enter{transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-left-appear-prepare,.zoom-left-enter-prepare{transform:none}.zoom-left-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-right-appear,.zoom-right-enter,.zoom-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-right-appear.zoom-right-appear-active,.zoom-right-enter.zoom-right-enter-active{-webkit-animation-name:antZoomRightIn;animation-name:antZoomRightIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-right-leave.zoom-right-leave-active{-webkit-animation-name:antZoomRightOut;animation-name:antZoomRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-right-appear,.zoom-right-enter{transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-right-appear-prepare,.zoom-right-enter-prepare{transform:none}.zoom-right-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}@-webkit-keyframes antZoomIn{0%{transform:scale(.2);opacity:0}to{transform:scale(1);opacity:1}}@keyframes antZoomIn{0%{transform:scale(.2);opacity:0}to{transform:scale(1);opacity:1}}@-webkit-keyframes antZoomOut{0%{transform:scale(1)}to{transform:scale(.2);opacity:0}}@keyframes antZoomOut{0%{transform:scale(1)}to{transform:scale(.2);opacity:0}}@-webkit-keyframes antZoomBigIn{0%{transform:none;opacity:0}5%{transform:scale(.2);opacity:0}to{transform:scale(1);opacity:1}}@keyframes antZoomBigIn{0%{transform:none;opacity:0}5%{transform:scale(.2);opacity:0}to{transform:scale(1);opacity:1}}@-webkit-keyframes antZoomBigOut{0%{transform:scale(1)}to{transform:scale(.8);opacity:0}}@keyframes antZoomBigOut{0%{transform:scale(1)}to{transform:scale(.8);opacity:0}}@-webkit-keyframes antZoomUpIn{0%{transform:scale(.8);transform-origin:50% 0;opacity:0}to{transform:scale(1);transform-origin:50% 0}}@keyframes antZoomUpIn{0%{transform:scale(.8);transform-origin:50% 0;opacity:0}to{transform:scale(1);transform-origin:50% 0}}@-webkit-keyframes antZoomUpOut{0%{transform:scale(1);transform-origin:50% 0}to{transform:scale(.8);transform-origin:50% 0;opacity:0}}@keyframes antZoomUpOut{0%{transform:scale(1);transform-origin:50% 0}to{transform:scale(.8);transform-origin:50% 0;opacity:0}}@-webkit-keyframes antZoomLeftIn{0%{transform:scale(.8);transform-origin:0 50%;opacity:0}to{transform:scale(1);transform-origin:0 50%}}@keyframes antZoomLeftIn{0%{transform:scale(.8);transform-origin:0 50%;opacity:0}to{transform:scale(1);transform-origin:0 50%}}@-webkit-keyframes antZoomLeftOut{0%{transform:scale(1);transform-origin:0 50%}to{transform:scale(.8);transform-origin:0 50%;opacity:0}}@keyframes antZoomLeftOut{0%{transform:scale(1);transform-origin:0 50%}to{transform:scale(.8);transform-origin:0 50%;opacity:0}}@-webkit-keyframes antZoomRightIn{0%{transform:scale(.8);transform-origin:100% 50%;opacity:0}to{transform:scale(1);transform-origin:100% 50%}}@keyframes antZoomRightIn{0%{transform:scale(.8);transform-origin:100% 50%;opacity:0}to{transform:scale(1);transform-origin:100% 50%}}@-webkit-keyframes antZoomRightOut{0%{transform:scale(1);transform-origin:100% 50%}to{transform:scale(.8);transform-origin:100% 50%;opacity:0}}@keyframes antZoomRightOut{0%{transform:scale(1);transform-origin:100% 50%}to{transform:scale(.8);transform-origin:100% 50%;opacity:0}}@-webkit-keyframes antZoomDownIn{0%{transform:scale(.8);transform-origin:50% 100%;opacity:0}to{transform:scale(1);transform-origin:50% 100%}}@keyframes antZoomDownIn{0%{transform:scale(.8);transform-origin:50% 100%;opacity:0}to{transform:scale(1);transform-origin:50% 100%}}@-webkit-keyframes antZoomDownOut{0%{transform:scale(1);transform-origin:50% 100%}to{transform:scale(.8);transform-origin:50% 100%;opacity:0}}@keyframes antZoomDownOut{0%{transform:scale(1);transform-origin:50% 100%}to{transform:scale(.8);transform-origin:50% 100%;opacity:0}}.ant-motion-collapse-legacy{overflow:hidden}.ant-motion-collapse,.ant-motion-collapse-legacy-active{transition:height .2s cubic-bezier(.645,.045,.355,1),opacity .2s cubic-bezier(.645,.045,.355,1)!important}.ant-motion-collapse{overflow:hidden}.ant-spin{box-sizing:border-box;margin:0;padding:0;color:#41464b;font-size:13px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";position:absolute;display:none;color:#d14424;text-align:center;vertical-align:middle;opacity:0;transition:transform .3s cubic-bezier(.78,.14,.15,.86)}.ant-spin-spinning{position:static;display:inline-block;opacity:1}.ant-spin-nested-loading{position:relative}.ant-spin-nested-loading>div>.ant-spin{position:absolute;top:0;left:0;z-index:4;display:block;width:100%;height:100%;max-height:400px}.ant-spin-nested-loading>div>.ant-spin .ant-spin-dot{position:absolute;top:50%;left:50%;margin:-10px}.ant-spin-nested-loading>div>.ant-spin .ant-spin-text{position:absolute;top:50%;width:100%;padding-top:5.5px;text-shadow:0 1px 2px #fff}.ant-spin-nested-loading>div>.ant-spin.ant-spin-show-text .ant-spin-dot{margin-top:-20px}.ant-spin-nested-loading>div>.ant-spin-sm .ant-spin-dot{margin:-7px}.ant-spin-nested-loading>div>.ant-spin-sm .ant-spin-text{padding-top:2.5px}.ant-spin-nested-loading>div>.ant-spin-sm.ant-spin-show-text .ant-spin-dot{margin-top:-17px}.ant-spin-nested-loading>div>.ant-spin-lg .ant-spin-dot{margin:-16px}.ant-spin-nested-loading>div>.ant-spin-lg .ant-spin-text{padding-top:11.5px}.ant-spin-nested-loading>div>.ant-spin-lg.ant-spin-show-text .ant-spin-dot{margin-top:-26px}.ant-spin-container{position:relative;transition:opacity .3s}.ant-spin-container:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;display:none\9;width:100%;height:100%;background:#fff;opacity:0;transition:all .3s;content:"";pointer-events:none}.ant-spin-blur{clear:both;overflow:hidden;opacity:.5;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none}.ant-spin-blur:after{opacity:.4;pointer-events:auto}.ant-spin-tip{color:rgba(0,0,0,.45)}.ant-spin-dot{position:relative;display:inline-block;font-size:20px;width:1em;height:1em}.ant-spin-dot-item{position:absolute;display:block;width:9px;height:9px;background-color:#d14424;border-radius:100%;transform:scale(.75);transform-origin:50% 50%;opacity:.3;-webkit-animation:antSpinMove 1s linear infinite alternate;animation:antSpinMove 1s linear infinite alternate}.ant-spin-dot-item:first-child{top:0;left:0}.ant-spin-dot-item:nth-child(2){top:0;right:0;-webkit-animation-delay:.4s;animation-delay:.4s}.ant-spin-dot-item:nth-child(3){right:0;bottom:0;-webkit-animation-delay:.8s;animation-delay:.8s}.ant-spin-dot-item:nth-child(4){bottom:0;left:0;-webkit-animation-delay:1.2s;animation-delay:1.2s}.ant-spin-dot-spin{transform:rotate(45deg);-webkit-animation:antRotate 1.2s linear infinite;animation:antRotate 1.2s linear infinite}.ant-spin-sm .ant-spin-dot{font-size:14px}.ant-spin-sm .ant-spin-dot i{width:6px;height:6px}.ant-spin-lg .ant-spin-dot{font-size:32px}.ant-spin-lg .ant-spin-dot i{width:14px;height:14px}.ant-spin.ant-spin-show-text .ant-spin-text{display:block}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.ant-spin-blur{background:#fff;opacity:.5}}@-webkit-keyframes antSpinMove{to{opacity:1}}@keyframes antSpinMove{to{opacity:1}}@-webkit-keyframes antRotate{to{transform:rotate(405deg)}}@keyframes antRotate{to{transform:rotate(405deg)}}.ant-drawer{position:fixed;z-index:1000;width:0;height:100%;transition:transform .3s cubic-bezier(.7,.3,.1,1),height 0s ease .3s,width 0s ease .3s}.ant-drawer>*{transition:transform .3s cubic-bezier(.7,.3,.1,1),box-shadow .3s cubic-bezier(.7,.3,.1,1)}.ant-drawer-content-wrapper{position:absolute}.ant-drawer .ant-drawer-content{width:100%;height:100%}.ant-drawer-left,.ant-drawer-right{top:0;width:0;height:100%}.ant-drawer-left .ant-drawer-content-wrapper,.ant-drawer-right .ant-drawer-content-wrapper{height:100%}.ant-drawer-left.ant-drawer-open,.ant-drawer-right.ant-drawer-open{width:100%;transition:transform .3s cubic-bezier(.7,.3,.1,1)}.ant-drawer-left.ant-drawer-open.no-mask,.ant-drawer-right.ant-drawer-open.no-mask{width:0}.ant-drawer-left.ant-drawer-open .ant-drawer-content-wrapper{box-shadow:2px 0 8px rgba(0,0,0,.15)}.ant-drawer-right,.ant-drawer-right .ant-drawer-content-wrapper{right:0}.ant-drawer-right.ant-drawer-open .ant-drawer-content-wrapper{box-shadow:-2px 0 8px rgba(0,0,0,.15)}.ant-drawer-right.ant-drawer-open.no-mask{right:1px;transform:translateX(1px)}.ant-drawer-bottom,.ant-drawer-top{left:0;width:100%;height:0%}.ant-drawer-bottom .ant-drawer-content-wrapper,.ant-drawer-top .ant-drawer-content-wrapper{width:100%}.ant-drawer-bottom.ant-drawer-open,.ant-drawer-top.ant-drawer-open{height:100%;transition:transform .3s cubic-bezier(.7,.3,.1,1)}.ant-drawer-bottom.ant-drawer-open.no-mask,.ant-drawer-top.ant-drawer-open.no-mask{height:0%}.ant-drawer-top{top:0}.ant-drawer-top.ant-drawer-open .ant-drawer-content-wrapper{box-shadow:0 2px 8px rgba(0,0,0,.15)}.ant-drawer-bottom,.ant-drawer-bottom .ant-drawer-content-wrapper{bottom:0}.ant-drawer-bottom.ant-drawer-open .ant-drawer-content-wrapper{box-shadow:0 -2px 8px rgba(0,0,0,.15)}.ant-drawer-bottom.ant-drawer-open.no-mask{bottom:1px;transform:translateY(1px)}.ant-drawer.ant-drawer-open .ant-drawer-mask{height:100%;opacity:1;transition:none;-webkit-animation:antdDrawerFadeIn .3s cubic-bezier(.7,.3,.1,1);animation:antdDrawerFadeIn .3s cubic-bezier(.7,.3,.1,1)}.ant-drawer-title{margin:0;color:rgba(0,0,0,.85);font-weight:500;font-size:15px;line-height:22px}.ant-drawer-content{position:relative;z-index:1;overflow:auto;background-color:#fff;background-clip:padding-box;border:0}.ant-drawer-close{position:absolute;top:0;right:0;z-index:10;display:block;width:56px;height:56px;padding:0;color:rgba(0,0,0,.45);font-weight:700;font-size:15px;font-style:normal;line-height:56px;text-align:center;text-transform:none;text-decoration:none;background:transparent;border:0;outline:0;cursor:pointer;transition:color .3s;text-rendering:auto}.ant-drawer-close:focus,.ant-drawer-close:hover{color:rgba(0,0,0,.75);text-decoration:none}.ant-drawer-header{position:relative;padding:16px 24px;border-bottom:1px solid #f0f0f0;border-radius:2px 2px 0 0}.ant-drawer-header,.ant-drawer-header-no-title{color:#41464b;background:#fff}.ant-drawer-body{padding:24px;font-size:13px;line-height:1.5715;word-wrap:break-word}.ant-drawer-wrapper-body{height:100%;overflow:auto}.ant-drawer-mask{position:absolute;top:0;left:0;width:100%;height:0;background-color:rgba(0,0,0,.45);opacity:0;filter:alpha(opacity=45);transition:opacity .3s linear,height 0s ease .3s}.ant-drawer-open-content{box-shadow:0 4px 12px rgba(0,0,0,.15)}@-webkit-keyframes antdDrawerFadeIn{0%{opacity:0}to{opacity:1}}@keyframes antdDrawerFadeIn{0%{opacity:0}to{opacity:1}}@-webkit-keyframes antCheckboxEffect{0%{transform:scale(1);opacity:.5}to{transform:scale(1.6);opacity:0}}@keyframes antCheckboxEffect{0%{transform:scale(1);opacity:.5}to{transform:scale(1.6);opacity:0}}.ant-checkbox{box-sizing:border-box;margin:0;padding:0;color:#41464b;font-size:13px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";position:relative;top:-.09em;display:inline-block;line-height:1;white-space:nowrap;vertical-align:middle;outline:none;cursor:pointer}.ant-checkbox-input:focus+.ant-checkbox-inner,.ant-checkbox-wrapper:hover .ant-checkbox-inner,.ant-checkbox:hover .ant-checkbox-inner{border-color:#d14424}.ant-checkbox-checked:after{position:absolute;top:0;left:0;width:100%;height:100%;border:1px solid #d14424;border-radius:2px;visibility:hidden;-webkit-animation:antCheckboxEffect .36s ease-in-out;animation:antCheckboxEffect .36s ease-in-out;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards;content:""}.ant-checkbox-wrapper:hover .ant-checkbox:after,.ant-checkbox:hover:after{visibility:visible}.ant-checkbox-inner{position:relative;top:0;left:0;display:block;width:16px;height:16px;background-color:#fff;border:1px solid #d9d9d9;border-radius:2px;border-collapse:separate;transition:all .3s}.ant-checkbox-inner:after{position:absolute;top:50%;left:22%;display:table;width:5.71428571px;height:9.14285714px;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(0) translate(-50%,-50%);opacity:0;transition:all .1s cubic-bezier(.71,-.46,.88,.6),opacity .1s;content:" "}.ant-checkbox-input{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;width:100%;height:100%;cursor:pointer;opacity:0}.ant-checkbox-checked .ant-checkbox-inner:after{position:absolute;display:table;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(1) translate(-50%,-50%);opacity:1;transition:all .2s cubic-bezier(.12,.4,.29,1.46) .1s;content:" "}.ant-checkbox-checked .ant-checkbox-inner{background-color:#d14424;border-color:#d14424}.ant-checkbox-disabled{cursor:not-allowed}.ant-checkbox-disabled.ant-checkbox-checked .ant-checkbox-inner:after{border-color:rgba(0,0,0,.25);-webkit-animation-name:none;animation-name:none}.ant-checkbox-disabled .ant-checkbox-input{cursor:not-allowed}.ant-checkbox-disabled .ant-checkbox-inner{background-color:#f5f5f5;border-color:#d9d9d9!important}.ant-checkbox-disabled .ant-checkbox-inner:after{border-color:#f5f5f5;border-collapse:separate;-webkit-animation-name:none;animation-name:none}.ant-checkbox-disabled+span{color:rgba(0,0,0,.25);cursor:not-allowed}.ant-checkbox-disabled:hover:after,.ant-checkbox-wrapper:hover .ant-checkbox-disabled:after{visibility:hidden}.ant-checkbox-wrapper{box-sizing:border-box;margin:0;padding:0;color:#41464b;font-size:13px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";display:inline-block;line-height:unset;cursor:pointer}.ant-checkbox-wrapper.ant-checkbox-wrapper-disabled{cursor:not-allowed}.ant-checkbox-wrapper+.ant-checkbox-wrapper{margin-left:8px}.ant-checkbox+span{padding-right:8px;padding-left:8px}.ant-checkbox-group{box-sizing:border-box;margin:0;padding:0;color:#41464b;font-size:13px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";display:inline-block}.ant-checkbox-group-item{display:inline-block;margin-right:8px}.ant-checkbox-group-item:last-child{margin-right:0}.ant-checkbox-group-item+.ant-checkbox-group-item{margin-left:0}.ant-checkbox-indeterminate .ant-checkbox-inner{background-color:#fff;border-color:#d9d9d9}.ant-checkbox-indeterminate .ant-checkbox-inner:after{top:50%;left:50%;width:8px;height:8px;background-color:#d14424;border:0;transform:translate(-50%,-50%) scale(1);opacity:1;content:" "}.ant-checkbox-indeterminate.ant-checkbox-disabled .ant-checkbox-inner:after{background-color:rgba(0,0,0,.25);border-color:rgba(0,0,0,.25)}.ant-menu{box-sizing:border-box;margin:0;padding:0;font-size:13px;font-variant:tabular-nums;line-height:1.5715;font-feature-settings:"tnum";margin-bottom:0;padding-left:0;color:#41464b;line-height:0;list-style:none;background:#fff;outline:none;box-shadow:0 2px 8px rgba(0,0,0,.15);transition:background .3s,width .3s cubic-bezier(.2,0,0,1) 0s;zoom:1}.ant-menu:after,.ant-menu:before{display:table;content:""}.ant-menu:after{clear:both}.ant-menu ol,.ant-menu ul{margin:0;padding:0;list-style:none}.ant-menu-hidden{display:none}.ant-menu-item-group-title{padding:8px 16px;color:rgba(0,0,0,.45);font-size:13px;line-height:1.5715;transition:all .3s}.ant-menu-submenu,.ant-menu-submenu-inline{transition:border-color .3s cubic-bezier(.645,.045,.355,1),background .3s cubic-bezier(.645,.045,.355,1),padding .15s cubic-bezier(.645,.045,.355,1)}.ant-menu-submenu-selected{color:#d14424}.ant-menu-item:active,.ant-menu-submenu-title:active{background:#fff5f0}.ant-menu-submenu .ant-menu-sub{cursor:auto;transition:background .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.ant-menu-item>a{display:block;color:#41464b}.ant-menu-item>a:hover{color:#d14424}.ant-menu-item>a:before{position:absolute;top:0;right:0;bottom:0;left:0;background-color:transparent;content:""}.ant-menu-item>.ant-badge>a{color:#41464b}.ant-menu-item>.ant-badge>a:hover{color:#d14424}.ant-menu-item-divider{height:1px;overflow:hidden;line-height:0;background-color:#f0f0f0}.ant-menu-item-active,.ant-menu-item:hover,.ant-menu-submenu-active,.ant-menu-submenu-title:hover,.ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open{color:#d14424}.ant-menu-horizontal .ant-menu-item,.ant-menu-horizontal .ant-menu-submenu{margin-top:-1px}.ant-menu-horizontal>.ant-menu-item-active,.ant-menu-horizontal>.ant-menu-item:hover,.ant-menu-horizontal>.ant-menu-submenu .ant-menu-submenu-title:hover{background-color:transparent}.ant-menu-item-selected,.ant-menu-item-selected>a,.ant-menu-item-selected>a:hover{color:#d14424}.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected{background-color:#fff5f0}.ant-menu-inline,.ant-menu-vertical,.ant-menu-vertical-left{border-right:1px solid #f0f0f0}.ant-menu-vertical-right{border-left:1px solid #f0f0f0}.ant-menu-vertical-left.ant-menu-sub,.ant-menu-vertical-right.ant-menu-sub,.ant-menu-vertical.ant-menu-sub{min-width:160px;padding:0;border-right:0;transform-origin:0 0}.ant-menu-vertical-left.ant-menu-sub .ant-menu-item,.ant-menu-vertical-right.ant-menu-sub .ant-menu-item,.ant-menu-vertical.ant-menu-sub .ant-menu-item{left:0;margin-left:0;border-right:0}.ant-menu-vertical-left.ant-menu-sub .ant-menu-item:after,.ant-menu-vertical-right.ant-menu-sub .ant-menu-item:after,.ant-menu-vertical.ant-menu-sub .ant-menu-item:after{border-right:0}.ant-menu-vertical-left.ant-menu-sub>.ant-menu-item,.ant-menu-vertical-left.ant-menu-sub>.ant-menu-submenu,.ant-menu-vertical-right.ant-menu-sub>.ant-menu-item,.ant-menu-vertical-right.ant-menu-sub>.ant-menu-submenu,.ant-menu-vertical.ant-menu-sub>.ant-menu-item,.ant-menu-vertical.ant-menu-sub>.ant-menu-submenu{transform-origin:0 0}.ant-menu-horizontal.ant-menu-sub{min-width:114px}.ant-menu-item,.ant-menu-submenu-title{position:relative;display:block;margin:0;padding:0 20px;white-space:nowrap;cursor:pointer;transition:color .3s cubic-bezier(.645,.045,.355,1),border-color .3s cubic-bezier(.645,.045,.355,1),background .3s cubic-bezier(.645,.045,.355,1),padding .15s cubic-bezier(.645,.045,.355,1)}.ant-menu-item .anticon,.ant-menu-submenu-title .anticon{min-width:14px;margin-right:10px;font-size:13px;transition:font-size .15s cubic-bezier(.215,.61,.355,1),margin .3s cubic-bezier(.645,.045,.355,1)}.ant-menu-item .anticon+span,.ant-menu-submenu-title .anticon+span{opacity:1;transition:opacity .3s cubic-bezier(.645,.045,.355,1),width .3s cubic-bezier(.645,.045,.355,1)}.ant-menu>.ant-menu-item-divider{height:1px;margin:1px 0;padding:0;overflow:hidden;line-height:0;background-color:#f0f0f0}.ant-menu-submenu-popup{position:absolute;z-index:1050;border-radius:2px}.ant-menu-submenu-popup .submenu-title-wrapper{padding-right:20px}.ant-menu-submenu-popup:before{position:absolute;top:-7px;right:0;bottom:0;left:0;opacity:.0001;content:" "}.ant-menu-submenu>.ant-menu{background-color:#fff;border-radius:2px}.ant-menu-submenu>.ant-menu-submenu-title:after{transition:transform .3s cubic-bezier(.645,.045,.355,1)}.ant-menu-submenu-inline>.ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu-submenu-vertical>.ant-menu-submenu-title .ant-menu-submenu-arrow{position:absolute;top:50%;right:16px;width:10px;transition:transform .3s cubic-bezier(.645,.045,.355,1)}.ant-menu-submenu-inline>.ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu-submenu-inline>.ant-menu-submenu-title .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical>.ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical>.ant-menu-submenu-title .ant-menu-submenu-arrow:before{position:absolute;width:6px;height:1.5px;background:#fff;background:#41464b\9;background-image:linear-gradient(90deg,#41464b,#41464b);background-image:none\9;border-radius:2px;transition:background .3s cubic-bezier(.645,.045,.355,1),transform .3s cubic-bezier(.645,.045,.355,1),top .3s cubic-bezier(.645,.045,.355,1);content:""}.ant-menu-submenu-inline>.ant-menu-submenu-title .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical>.ant-menu-submenu-title .ant-menu-submenu-arrow:before{transform:rotate(45deg) translateY(-2px)}.ant-menu-submenu-inline>.ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical>.ant-menu-submenu-title .ant-menu-submenu-arrow:after{transform:rotate(-45deg) translateY(2px)}.ant-menu-submenu-inline>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-inline>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before{background:linear-gradient(90deg,#d14424,#d14424)}.ant-menu-submenu-inline>.ant-menu-submenu-title .ant-menu-submenu-arrow:before{transform:rotate(-45deg) translateX(2px)}.ant-menu-submenu-inline>.ant-menu-submenu-title .ant-menu-submenu-arrow:after{transform:rotate(45deg) translateX(-2px)}.ant-menu-submenu-open.ant-menu-submenu-inline>.ant-menu-submenu-title .ant-menu-submenu-arrow{transform:translateY(-2px)}.ant-menu-submenu-open.ant-menu-submenu-inline>.ant-menu-submenu-title .ant-menu-submenu-arrow:after{transform:rotate(-45deg) translateX(-2px)}.ant-menu-submenu-open.ant-menu-submenu-inline>.ant-menu-submenu-title .ant-menu-submenu-arrow:before{transform:rotate(45deg) translateX(2px)}.ant-menu-vertical-left .ant-menu-submenu-selected,.ant-menu-vertical-left .ant-menu-submenu-selected>a,.ant-menu-vertical-right .ant-menu-submenu-selected,.ant-menu-vertical-right .ant-menu-submenu-selected>a,.ant-menu-vertical .ant-menu-submenu-selected,.ant-menu-vertical .ant-menu-submenu-selected>a{color:#d14424}.ant-menu-horizontal{line-height:46px;white-space:nowrap;border:0;border-bottom:1px solid #f0f0f0;box-shadow:none}.ant-menu-horizontal>.ant-menu-item,.ant-menu-horizontal>.ant-menu-submenu{position:relative;top:1px;display:inline-block;vertical-align:bottom;border-bottom:2px solid transparent}.ant-menu-horizontal>.ant-menu-item-active,.ant-menu-horizontal>.ant-menu-item-open,.ant-menu-horizontal>.ant-menu-item-selected,.ant-menu-horizontal>.ant-menu-item:hover,.ant-menu-horizontal>.ant-menu-submenu-active,.ant-menu-horizontal>.ant-menu-submenu-open,.ant-menu-horizontal>.ant-menu-submenu-selected,.ant-menu-horizontal>.ant-menu-submenu:hover{color:#d14424;border-bottom:2px solid #d14424}.ant-menu-horizontal>.ant-menu-item>a{display:block;color:#41464b}.ant-menu-horizontal>.ant-menu-item>a:hover{color:#d14424}.ant-menu-horizontal>.ant-menu-item>a:before{bottom:-2px}.ant-menu-horizontal>.ant-menu-item-selected>a{color:#d14424}.ant-menu-horizontal:after{display:block;clear:both;height:0;content:"\20"}.ant-menu-inline .ant-menu-item,.ant-menu-vertical-left .ant-menu-item,.ant-menu-vertical-right .ant-menu-item,.ant-menu-vertical .ant-menu-item{position:relative}.ant-menu-inline .ant-menu-item:after,.ant-menu-vertical-left .ant-menu-item:after,.ant-menu-vertical-right .ant-menu-item:after,.ant-menu-vertical .ant-menu-item:after{position:absolute;top:0;right:0;bottom:0;border-right:3px solid #d14424;transform:scaleY(.0001);opacity:0;transition:transform .15s cubic-bezier(.215,.61,.355,1),opacity .15s cubic-bezier(.215,.61,.355,1);content:""}.ant-menu-inline .ant-menu-item,.ant-menu-inline .ant-menu-submenu-title,.ant-menu-vertical-left .ant-menu-item,.ant-menu-vertical-left .ant-menu-submenu-title,.ant-menu-vertical-right .ant-menu-item,.ant-menu-vertical-right .ant-menu-submenu-title,.ant-menu-vertical .ant-menu-item,.ant-menu-vertical .ant-menu-submenu-title{height:40px;margin-top:4px;margin-bottom:4px;padding:0 16px;overflow:hidden;font-size:13px;line-height:40px;text-overflow:ellipsis}.ant-menu-inline .ant-menu-submenu,.ant-menu-vertical-left .ant-menu-submenu,.ant-menu-vertical-right .ant-menu-submenu,.ant-menu-vertical .ant-menu-submenu{padding-bottom:.02px}.ant-menu-inline .ant-menu-item:not(:last-child),.ant-menu-vertical-left .ant-menu-item:not(:last-child),.ant-menu-vertical-right .ant-menu-item:not(:last-child),.ant-menu-vertical .ant-menu-item:not(:last-child){margin-bottom:8px}.ant-menu-inline>.ant-menu-item,.ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title,.ant-menu-vertical-left>.ant-menu-item,.ant-menu-vertical-left>.ant-menu-submenu>.ant-menu-submenu-title,.ant-menu-vertical-right>.ant-menu-item,.ant-menu-vertical-right>.ant-menu-submenu>.ant-menu-submenu-title,.ant-menu-vertical>.ant-menu-item,.ant-menu-vertical>.ant-menu-submenu>.ant-menu-submenu-title{height:40px;line-height:40px}.ant-menu-inline{width:100%}.ant-menu-inline .ant-menu-item-selected:after,.ant-menu-inline .ant-menu-selected:after{transform:scaleY(1);opacity:1;transition:transform .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1)}.ant-menu-inline .ant-menu-item,.ant-menu-inline .ant-menu-submenu-title{width:calc(100% + 1px)}.ant-menu-inline .ant-menu-submenu-title{padding-right:34px}.ant-menu-inline-collapsed{width:80px}.ant-menu-inline-collapsed>.ant-menu-item,.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item,.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title,.ant-menu-inline-collapsed>.ant-menu-submenu>.ant-menu-submenu-title{left:0;padding:0 32.5px!important;text-overflow:clip}.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .ant-menu-submenu-arrow,.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu-inline-collapsed>.ant-menu-item .ant-menu-submenu-arrow,.ant-menu-inline-collapsed>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-arrow{display:none}.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .anticon,.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .anticon,.ant-menu-inline-collapsed>.ant-menu-item .anticon,.ant-menu-inline-collapsed>.ant-menu-submenu>.ant-menu-submenu-title .anticon{margin:0;font-size:15px;line-height:40px}.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .anticon+span,.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .anticon+span,.ant-menu-inline-collapsed>.ant-menu-item .anticon+span,.ant-menu-inline-collapsed>.ant-menu-submenu>.ant-menu-submenu-title .anticon+span{display:inline-block;max-width:0;opacity:0}.ant-menu-inline-collapsed-tooltip{pointer-events:none}.ant-menu-inline-collapsed-tooltip .anticon{display:none}.ant-menu-inline-collapsed-tooltip a{color:hsla(0,0%,100%,.85)}.ant-menu-inline-collapsed .ant-menu-item-group-title{padding-right:4px;padding-left:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ant-menu-item-group-list{margin:0;padding:0}.ant-menu-item-group-list .ant-menu-item,.ant-menu-item-group-list .ant-menu-submenu-title{padding:0 16px 0 28px}.ant-menu-root.ant-menu-inline,.ant-menu-root.ant-menu-vertical,.ant-menu-root.ant-menu-vertical-left,.ant-menu-root.ant-menu-vertical-right{box-shadow:none}.ant-menu-sub.ant-menu-inline{padding:0;border:0;border-radius:0;box-shadow:none}.ant-menu-sub.ant-menu-inline>.ant-menu-item,.ant-menu-sub.ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title{height:40px;line-height:40px;list-style-position:inside;list-style-type:disc}.ant-menu-sub.ant-menu-inline .ant-menu-item-group-title{padding-left:32px}.ant-menu-item-disabled,.ant-menu-submenu-disabled{color:rgba(0,0,0,.25)!important;background:none;border-color:transparent!important;cursor:not-allowed}.ant-menu-item-disabled>a,.ant-menu-submenu-disabled>a{color:rgba(0,0,0,.25)!important;pointer-events:none}.ant-menu-item-disabled>.ant-menu-submenu-title,.ant-menu-submenu-disabled>.ant-menu-submenu-title{color:rgba(0,0,0,.25)!important;cursor:not-allowed}.ant-menu-item-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-item-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-submenu-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-submenu-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before{background:rgba(0,0,0,.25)!important}.ant-menu-dark,.ant-menu-dark .ant-menu-sub{color:hsla(0,0%,100%,.65);background:#001529}.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow{opacity:.45;transition:all .3s}.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow:before{background:#fff}.ant-menu-dark.ant-menu-submenu-popup{background:transparent}.ant-menu-dark .ant-menu-inline.ant-menu-sub{background:#000c17;box-shadow:inset 0 2px 8px rgba(0,0,0,.45)}.ant-menu-dark.ant-menu-horizontal{border-bottom:0}.ant-menu-dark.ant-menu-horizontal>.ant-menu-item,.ant-menu-dark.ant-menu-horizontal>.ant-menu-submenu{top:0;margin-top:0;border-color:#001529;border-bottom:0}.ant-menu-dark.ant-menu-horizontal>.ant-menu-item>a:before{bottom:0}.ant-menu-dark .ant-menu-item,.ant-menu-dark .ant-menu-item-group-title,.ant-menu-dark .ant-menu-item>a{color:hsla(0,0%,100%,.65)}.ant-menu-dark.ant-menu-inline,.ant-menu-dark.ant-menu-vertical,.ant-menu-dark.ant-menu-vertical-left,.ant-menu-dark.ant-menu-vertical-right{border-right:0}.ant-menu-dark.ant-menu-inline .ant-menu-item,.ant-menu-dark.ant-menu-vertical-left .ant-menu-item,.ant-menu-dark.ant-menu-vertical-right .ant-menu-item,.ant-menu-dark.ant-menu-vertical .ant-menu-item{left:0;margin-left:0;border-right:0}.ant-menu-dark.ant-menu-inline .ant-menu-item:after,.ant-menu-dark.ant-menu-vertical-left .ant-menu-item:after,.ant-menu-dark.ant-menu-vertical-right .ant-menu-item:after,.ant-menu-dark.ant-menu-vertical .ant-menu-item:after{border-right:0}.ant-menu-dark.ant-menu-inline .ant-menu-item,.ant-menu-dark.ant-menu-inline .ant-menu-submenu-title{width:100%}.ant-menu-dark .ant-menu-item-active,.ant-menu-dark .ant-menu-item:hover,.ant-menu-dark .ant-menu-submenu-active,.ant-menu-dark .ant-menu-submenu-open,.ant-menu-dark .ant-menu-submenu-selected,.ant-menu-dark .ant-menu-submenu-title:hover{color:#fff;background-color:transparent}.ant-menu-dark .ant-menu-item-active>a,.ant-menu-dark .ant-menu-item:hover>a,.ant-menu-dark .ant-menu-submenu-active>a,.ant-menu-dark .ant-menu-submenu-open>a,.ant-menu-dark .ant-menu-submenu-selected>a,.ant-menu-dark .ant-menu-submenu-title:hover>a{color:#fff}.ant-menu-dark .ant-menu-item-active>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-item-active>.ant-menu-submenu-title>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-item:hover>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-item:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-active>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-active>.ant-menu-submenu-title>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-open>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-open>.ant-menu-submenu-title>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-selected>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-selected>.ant-menu-submenu-title>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-title:hover>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-title:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow{opacity:1}.ant-menu-dark .ant-menu-item-active>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-item-active>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-item-active>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-item-active>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-item:hover>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-item:hover>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-item:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-item:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-active>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-active>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-active>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-active>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-open>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-open>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-open>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-open>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-selected>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-selected>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-selected>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-selected>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-title:hover>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-title:hover>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-title:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-title:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before{background:#fff}.ant-menu-dark .ant-menu-item:hover{background-color:transparent}.ant-menu-dark .ant-menu-item-selected{color:#fff;border-right:0}.ant-menu-dark .ant-menu-item-selected:after{border-right:0}.ant-menu-dark .ant-menu-item-selected .anticon,.ant-menu-dark .ant-menu-item-selected .anticon+span,.ant-menu-dark .ant-menu-item-selected>a,.ant-menu-dark .ant-menu-item-selected>a:hover{color:#fff}.ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected,.ant-menu.ant-menu-dark .ant-menu-item-selected{background-color:#d14424}.ant-menu-dark .ant-menu-item-disabled,.ant-menu-dark .ant-menu-item-disabled>a,.ant-menu-dark .ant-menu-submenu-disabled,.ant-menu-dark .ant-menu-submenu-disabled>a{color:hsla(0,0%,100%,.35)!important;opacity:.8}.ant-menu-dark .ant-menu-item-disabled>.ant-menu-submenu-title,.ant-menu-dark .ant-menu-submenu-disabled>.ant-menu-submenu-title{color:hsla(0,0%,100%,.35)!important}.ant-menu-dark .ant-menu-item-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-item-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before{background:hsla(0,0%,100%,.35)!important}.ant-tooltip{box-sizing:border-box;margin:0;padding:0;color:#41464b;font-size:13px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";position:absolute;z-index:1060;display:block;max-width:250px;visibility:visible}.ant-tooltip-hidden{display:none}.ant-tooltip-placement-top,.ant-tooltip-placement-topLeft,.ant-tooltip-placement-topRight{padding-bottom:8px}.ant-tooltip-placement-right,.ant-tooltip-placement-rightBottom,.ant-tooltip-placement-rightTop{padding-left:8px}.ant-tooltip-placement-bottom,.ant-tooltip-placement-bottomLeft,.ant-tooltip-placement-bottomRight{padding-top:8px}.ant-tooltip-placement-left,.ant-tooltip-placement-leftBottom,.ant-tooltip-placement-leftTop{padding-right:8px}.ant-tooltip-inner{min-width:30px;min-height:32px;padding:6px 8px;color:#fff;text-align:left;text-decoration:none;word-wrap:break-word;background-color:rgba(0,0,0,.75);border-radius:2px;box-shadow:0 2px 8px rgba(0,0,0,.15)}.ant-tooltip-arrow{position:absolute;display:block;width:13.07106781px;height:13.07106781px;overflow:hidden;background:transparent;pointer-events:none}.ant-tooltip-arrow-content{position:absolute;top:0;right:0;bottom:0;left:0;display:block;width:5px;height:5px;margin:auto;background-color:rgba(0,0,0,.75);content:"";pointer-events:auto}.ant-tooltip-placement-top .ant-tooltip-arrow,.ant-tooltip-placement-topLeft .ant-tooltip-arrow,.ant-tooltip-placement-topRight .ant-tooltip-arrow{bottom:-5.07106781px}.ant-tooltip-placement-top .ant-tooltip-arrow-content,.ant-tooltip-placement-topLeft .ant-tooltip-arrow-content,.ant-tooltip-placement-topRight .ant-tooltip-arrow-content{box-shadow:3px 3px 7px rgba(0,0,0,.07);transform:translateY(-6.53553391px) rotate(45deg)}.ant-tooltip-placement-top .ant-tooltip-arrow{left:50%;transform:translateX(-50%)}.ant-tooltip-placement-topLeft .ant-tooltip-arrow{left:13px}.ant-tooltip-placement-topRight .ant-tooltip-arrow{right:13px}.ant-tooltip-placement-right .ant-tooltip-arrow,.ant-tooltip-placement-rightBottom .ant-tooltip-arrow,.ant-tooltip-placement-rightTop .ant-tooltip-arrow{left:-5.07106781px}.ant-tooltip-placement-right .ant-tooltip-arrow-content,.ant-tooltip-placement-rightBottom .ant-tooltip-arrow-content,.ant-tooltip-placement-rightTop .ant-tooltip-arrow-content{box-shadow:-3px 3px 7px rgba(0,0,0,.07);transform:translateX(6.53553391px) rotate(45deg)}.ant-tooltip-placement-right .ant-tooltip-arrow{top:50%;transform:translateY(-50%)}.ant-tooltip-placement-rightTop .ant-tooltip-arrow{top:5px}.ant-tooltip-placement-rightBottom .ant-tooltip-arrow{bottom:5px}.ant-tooltip-placement-left .ant-tooltip-arrow,.ant-tooltip-placement-leftBottom .ant-tooltip-arrow,.ant-tooltip-placement-leftTop .ant-tooltip-arrow{right:-5.07106781px}.ant-tooltip-placement-left .ant-tooltip-arrow-content,.ant-tooltip-placement-leftBottom .ant-tooltip-arrow-content,.ant-tooltip-placement-leftTop .ant-tooltip-arrow-content{box-shadow:3px -3px 7px rgba(0,0,0,.07);transform:translateX(-6.53553391px) rotate(45deg)}.ant-tooltip-placement-left .ant-tooltip-arrow{top:50%;transform:translateY(-50%)}.ant-tooltip-placement-leftTop .ant-tooltip-arrow{top:5px}.ant-tooltip-placement-leftBottom .ant-tooltip-arrow{bottom:5px}.ant-tooltip-placement-bottom .ant-tooltip-arrow,.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow,.ant-tooltip-placement-bottomRight .ant-tooltip-arrow{top:-5.07106781px}.ant-tooltip-placement-bottom .ant-tooltip-arrow-content,.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow-content,.ant-tooltip-placement-bottomRight .ant-tooltip-arrow-content{box-shadow:-3px -3px 7px rgba(0,0,0,.07);transform:translateY(6.53553391px) rotate(45deg)}.ant-tooltip-placement-bottom .ant-tooltip-arrow{left:50%;transform:translateX(-50%)}.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow{left:13px}.ant-tooltip-placement-bottomRight .ant-tooltip-arrow{right:13px}.ant-tooltip-magenta .ant-tooltip-arrow-content,.ant-tooltip-magenta .ant-tooltip-inner,.ant-tooltip-pink .ant-tooltip-arrow-content,.ant-tooltip-pink .ant-tooltip-inner{background-color:#eb2f96}.ant-tooltip-red .ant-tooltip-arrow-content,.ant-tooltip-red .ant-tooltip-inner{background-color:#f5222d}.ant-tooltip-volcano .ant-tooltip-arrow-content,.ant-tooltip-volcano .ant-tooltip-inner{background-color:#fa541c}.ant-tooltip-orange .ant-tooltip-arrow-content,.ant-tooltip-orange .ant-tooltip-inner{background-color:#fa8c16}.ant-tooltip-yellow .ant-tooltip-arrow-content,.ant-tooltip-yellow .ant-tooltip-inner{background-color:#fadb14}.ant-tooltip-gold .ant-tooltip-arrow-content,.ant-tooltip-gold .ant-tooltip-inner{background-color:#faad14}.ant-tooltip-cyan .ant-tooltip-arrow-content,.ant-tooltip-cyan .ant-tooltip-inner{background-color:#13c2c2}.ant-tooltip-lime .ant-tooltip-arrow-content,.ant-tooltip-lime .ant-tooltip-inner{background-color:#a0d911}.ant-tooltip-green .ant-tooltip-arrow-content,.ant-tooltip-green .ant-tooltip-inner{background-color:#52c41a}.ant-tooltip-blue .ant-tooltip-arrow-content,.ant-tooltip-blue .ant-tooltip-inner{background-color:#1890ff}.ant-tooltip-geekblue .ant-tooltip-arrow-content,.ant-tooltip-geekblue .ant-tooltip-inner{background-color:#2f54eb}.ant-tooltip-purple .ant-tooltip-arrow-content,.ant-tooltip-purple .ant-tooltip-inner{background-color:#722ed1}.ant-dropdown{box-sizing:border-box;margin:0;padding:0;color:#41464b;font-size:13px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";position:absolute;top:-9999px;left:-9999px;z-index:1050;display:block}.ant-dropdown:before{position:absolute;top:-4px;right:0;bottom:-4px;left:-7px;z-index:-9999;opacity:.0001;content:" "}.ant-dropdown-wrap{position:relative}.ant-dropdown-wrap .ant-btn>.anticon-down{display:inline-block;font-size:12px;font-size:10px\9;transform:scale(.83333333) rotate(0deg)}:root .ant-dropdown-wrap .ant-btn>.anticon-down{font-size:12px}.ant-dropdown-wrap .anticon-down:before{transition:transform .2s}.ant-dropdown-wrap-open .anticon-down:before{transform:rotate(180deg)}.ant-dropdown-hidden,.ant-dropdown-menu-hidden{display:none}.ant-dropdown-menu{position:relative;margin:0;padding:4px 0;text-align:left;list-style-type:none;background-color:#fff;background-clip:padding-box;border-radius:2px;outline:none;box-shadow:0 2px 8px rgba(0,0,0,.15);-webkit-transform:translateZ(0)}.ant-dropdown-menu-item-group-title{padding:5px 12px;color:rgba(0,0,0,.45);transition:all .3s}.ant-dropdown-menu-submenu-popup{position:absolute;z-index:1050}.ant-dropdown-menu-submenu-popup>.ant-dropdown-menu{transform-origin:0 0}.ant-dropdown-menu-submenu-popup li,.ant-dropdown-menu-submenu-popup ul{list-style:none}.ant-dropdown-menu-submenu-popup ul{margin-right:.3em;margin-left:.3em;padding:0}.ant-dropdown-menu-item,.ant-dropdown-menu-submenu-title{clear:both;margin:0;padding:5px 12px;color:#41464b;font-weight:400;font-size:13px;line-height:22px;white-space:nowrap;cursor:pointer;transition:all .3s}.ant-dropdown-menu-item>.anticon:first-child,.ant-dropdown-menu-item>span>.anticon:first-child,.ant-dropdown-menu-submenu-title>.anticon:first-child,.ant-dropdown-menu-submenu-title>span>.anticon:first-child{min-width:12px;margin-right:8px;font-size:12px}.ant-dropdown-menu-item>a,.ant-dropdown-menu-submenu-title>a{display:block;margin:-5px -12px;padding:5px 12px;color:#41464b;transition:all .3s}.ant-dropdown-menu-item>a:hover,.ant-dropdown-menu-submenu-title>a:hover{color:#41464b}.ant-dropdown-menu-item-selected,.ant-dropdown-menu-item-selected>a,.ant-dropdown-menu-submenu-title-selected,.ant-dropdown-menu-submenu-title-selected>a{color:#d14424;background-color:#fff5f0}.ant-dropdown-menu-item:hover,.ant-dropdown-menu-submenu-title:hover{background-color:#f5f5f5}.ant-dropdown-menu-item-disabled,.ant-dropdown-menu-submenu-title-disabled{color:rgba(0,0,0,.25);cursor:not-allowed}.ant-dropdown-menu-item-disabled:hover,.ant-dropdown-menu-submenu-title-disabled:hover{color:rgba(0,0,0,.25);background-color:#fff;cursor:not-allowed}.ant-dropdown-menu-item-divider,.ant-dropdown-menu-submenu-title-divider{height:1px;margin:4px 0;overflow:hidden;line-height:0;background-color:#f0f0f0}.ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow,.ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow{position:absolute;right:8px}.ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow-icon,.ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon{color:rgba(0,0,0,.45);font-style:normal;display:inline-block;font-size:12px;font-size:10px\9;transform:scale(.83333333) rotate(0deg)}:root .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow-icon,:root .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon{font-size:12px}.ant-dropdown-menu-item-group-list{margin:0 8px;padding:0;list-style:none}.ant-dropdown-menu-submenu-title{padding-right:26px}.ant-dropdown-menu-submenu-vertical{position:relative}.ant-dropdown-menu-submenu-vertical>.ant-dropdown-menu{position:absolute;top:0;left:100%;min-width:100%;margin-left:4px;transform-origin:0 0}.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title,.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon{color:rgba(0,0,0,.25);background-color:#fff;cursor:not-allowed}.ant-dropdown-menu-submenu-selected .ant-dropdown-menu-submenu-title{color:#d14424}.ant-dropdown.slide-down-appear.slide-down-appear-active.ant-dropdown-placement-bottomCenter,.ant-dropdown.slide-down-appear.slide-down-appear-active.ant-dropdown-placement-bottomLeft,.ant-dropdown.slide-down-appear.slide-down-appear-active.ant-dropdown-placement-bottomRight,.ant-dropdown.slide-down-enter.slide-down-enter-active.ant-dropdown-placement-bottomCenter,.ant-dropdown.slide-down-enter.slide-down-enter-active.ant-dropdown-placement-bottomLeft,.ant-dropdown.slide-down-enter.slide-down-enter-active.ant-dropdown-placement-bottomRight{-webkit-animation-name:antSlideUpIn;animation-name:antSlideUpIn}.ant-dropdown.slide-up-appear.slide-up-appear-active.ant-dropdown-placement-topCenter,.ant-dropdown.slide-up-appear.slide-up-appear-active.ant-dropdown-placement-topLeft,.ant-dropdown.slide-up-appear.slide-up-appear-active.ant-dropdown-placement-topRight,.ant-dropdown.slide-up-enter.slide-up-enter-active.ant-dropdown-placement-topCenter,.ant-dropdown.slide-up-enter.slide-up-enter-active.ant-dropdown-placement-topLeft,.ant-dropdown.slide-up-enter.slide-up-enter-active.ant-dropdown-placement-topRight{-webkit-animation-name:antSlideDownIn;animation-name:antSlideDownIn}.ant-dropdown.slide-down-leave.slide-down-leave-active.ant-dropdown-placement-bottomCenter,.ant-dropdown.slide-down-leave.slide-down-leave-active.ant-dropdown-placement-bottomLeft,.ant-dropdown.slide-down-leave.slide-down-leave-active.ant-dropdown-placement-bottomRight{-webkit-animation-name:antSlideUpOut;animation-name:antSlideUpOut}.ant-dropdown.slide-up-leave.slide-up-leave-active.ant-dropdown-placement-topCenter,.ant-dropdown.slide-up-leave.slide-up-leave-active.ant-dropdown-placement-topLeft,.ant-dropdown.slide-up-leave.slide-up-leave-active.ant-dropdown-placement-topRight{-webkit-animation-name:antSlideDownOut;animation-name:antSlideDownOut}.ant-dropdown-link>.anticon.anticon-down,.ant-dropdown-trigger>.anticon.anticon-down{display:inline-block;font-size:12px;font-size:10px\9;transform:scale(.83333333) rotate(0deg)}:root .ant-dropdown-link>.anticon.anticon-down,:root .ant-dropdown-trigger>.anticon.anticon-down{font-size:12px}.ant-dropdown-button{white-space:nowrap}.ant-dropdown-button.ant-btn-group>.ant-btn:last-child:not(:first-child){padding-right:8px;padding-left:8px}.ant-dropdown-button .anticon.anticon-down{display:inline-block;font-size:12px;font-size:10px\9;transform:scale(.83333333) rotate(0deg)}:root .ant-dropdown-button .anticon.anticon-down{font-size:12px}.ant-dropdown-menu-dark,.ant-dropdown-menu-dark .ant-dropdown-menu{background:#001529}.ant-dropdown-menu-dark .ant-dropdown-menu-item,.ant-dropdown-menu-dark .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow:after,.ant-dropdown-menu-dark .ant-dropdown-menu-item>a,.ant-dropdown-menu-dark .ant-dropdown-menu-item>a .ant-dropdown-menu-submenu-arrow:after,.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title,.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow:after{color:hsla(0,0%,100%,.65)}.ant-dropdown-menu-dark .ant-dropdown-menu-item:hover,.ant-dropdown-menu-dark .ant-dropdown-menu-item>a:hover,.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title:hover{color:#fff;background:transparent}.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected,.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected:hover,.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected>a{color:#fff;background:#d14424}.ant-btn{line-height:1.5715;position:relative;display:inline-block;font-weight:400;white-space:nowrap;text-align:center;background-image:none;border:1px solid transparent;box-shadow:0 2px 0 rgba(0,0,0,.015);cursor:pointer;transition:all .3s cubic-bezier(.645,.045,.355,1);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;touch-action:manipulation;height:32px;padding:0 15px;font-size:13px;border-radius:2px;color:#41464b;background-color:#fff;border-color:#d9d9d9}.ant-btn>.anticon{line-height:1}.ant-btn,.ant-btn:active,.ant-btn:focus{outline:0}.ant-btn:not([disabled]):hover{text-decoration:none}.ant-btn:not([disabled]):active{outline:0;box-shadow:none}.ant-btn.disabled,.ant-btn[disabled]{cursor:not-allowed}.ant-btn.disabled>*,.ant-btn[disabled]>*{pointer-events:none}.ant-btn-lg{height:40px;padding:0 15px;font-size:15px;border-radius:2px}.ant-btn-sm{height:24px;padding:0 7px;font-size:13px;border-radius:2px}.ant-btn>a:only-child{color:currentColor}.ant-btn>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn:focus,.ant-btn:hover{color:#de6949;background-color:#fff;border-color:#de6949}.ant-btn:focus>a:only-child,.ant-btn:hover>a:only-child{color:currentColor}.ant-btn:focus>a:only-child:after,.ant-btn:hover>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn.active,.ant-btn:active{color:#ab2b15;background-color:#fff;border-color:#ab2b15}.ant-btn.active>a:only-child,.ant-btn:active>a:only-child{color:currentColor}.ant-btn.active>a:only-child:after,.ant-btn:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-disabled,.ant-btn-disabled.active,.ant-btn-disabled:active,.ant-btn-disabled:focus,.ant-btn-disabled:hover,.ant-btn.disabled,.ant-btn.disabled.active,.ant-btn.disabled:active,.ant-btn.disabled:focus,.ant-btn.disabled:hover,.ant-btn[disabled],.ant-btn[disabled].active,.ant-btn[disabled]:active,.ant-btn[disabled]:focus,.ant-btn[disabled]:hover{color:rgba(0,0,0,.25);background-color:#f5f5f5;border-color:#d9d9d9;text-shadow:none;box-shadow:none}.ant-btn-disabled.active>a:only-child,.ant-btn-disabled:active>a:only-child,.ant-btn-disabled:focus>a:only-child,.ant-btn-disabled:hover>a:only-child,.ant-btn-disabled>a:only-child,.ant-btn.disabled.active>a:only-child,.ant-btn.disabled:active>a:only-child,.ant-btn.disabled:focus>a:only-child,.ant-btn.disabled:hover>a:only-child,.ant-btn.disabled>a:only-child,.ant-btn[disabled].active>a:only-child,.ant-btn[disabled]:active>a:only-child,.ant-btn[disabled]:focus>a:only-child,.ant-btn[disabled]:hover>a:only-child,.ant-btn[disabled]>a:only-child{color:currentColor}.ant-btn-disabled.active>a:only-child:after,.ant-btn-disabled:active>a:only-child:after,.ant-btn-disabled:focus>a:only-child:after,.ant-btn-disabled:hover>a:only-child:after,.ant-btn-disabled>a:only-child:after,.ant-btn.disabled.active>a:only-child:after,.ant-btn.disabled:active>a:only-child:after,.ant-btn.disabled:focus>a:only-child:after,.ant-btn.disabled:hover>a:only-child:after,.ant-btn.disabled>a:only-child:after,.ant-btn[disabled].active>a:only-child:after,.ant-btn[disabled]:active>a:only-child:after,.ant-btn[disabled]:focus>a:only-child:after,.ant-btn[disabled]:hover>a:only-child:after,.ant-btn[disabled]>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn.active,.ant-btn:active,.ant-btn:focus,.ant-btn:hover{text-decoration:none;background:#fff}.ant-btn>i,.ant-btn>span{display:inline-block;transition:margin-left .3s cubic-bezier(.645,.045,.355,1);pointer-events:none}.ant-btn-primary{color:#fff;background-color:#d14424;border-color:#d14424;text-shadow:0 -1px 0 rgba(0,0,0,.12);box-shadow:0 2px 0 rgba(0,0,0,.045)}.ant-btn-primary>a:only-child{color:currentColor}.ant-btn-primary>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-primary:focus,.ant-btn-primary:hover{color:#fff;background-color:#de6949;border-color:#de6949}.ant-btn-primary:focus>a:only-child,.ant-btn-primary:hover>a:only-child{color:currentColor}.ant-btn-primary:focus>a:only-child:after,.ant-btn-primary:hover>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-primary.active,.ant-btn-primary:active{color:#fff;background-color:#ab2b15;border-color:#ab2b15}.ant-btn-primary.active>a:only-child,.ant-btn-primary:active>a:only-child{color:currentColor}.ant-btn-primary.active>a:only-child:after,.ant-btn-primary:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-primary-disabled,.ant-btn-primary-disabled.active,.ant-btn-primary-disabled:active,.ant-btn-primary-disabled:focus,.ant-btn-primary-disabled:hover,.ant-btn-primary.disabled,.ant-btn-primary.disabled.active,.ant-btn-primary.disabled:active,.ant-btn-primary.disabled:focus,.ant-btn-primary.disabled:hover,.ant-btn-primary[disabled],.ant-btn-primary[disabled].active,.ant-btn-primary[disabled]:active,.ant-btn-primary[disabled]:focus,.ant-btn-primary[disabled]:hover{color:rgba(0,0,0,.25);background-color:#f5f5f5;border-color:#d9d9d9;text-shadow:none;box-shadow:none}.ant-btn-primary-disabled.active>a:only-child,.ant-btn-primary-disabled:active>a:only-child,.ant-btn-primary-disabled:focus>a:only-child,.ant-btn-primary-disabled:hover>a:only-child,.ant-btn-primary-disabled>a:only-child,.ant-btn-primary.disabled.active>a:only-child,.ant-btn-primary.disabled:active>a:only-child,.ant-btn-primary.disabled:focus>a:only-child,.ant-btn-primary.disabled:hover>a:only-child,.ant-btn-primary.disabled>a:only-child,.ant-btn-primary[disabled].active>a:only-child,.ant-btn-primary[disabled]:active>a:only-child,.ant-btn-primary[disabled]:focus>a:only-child,.ant-btn-primary[disabled]:hover>a:only-child,.ant-btn-primary[disabled]>a:only-child{color:currentColor}.ant-btn-primary-disabled.active>a:only-child:after,.ant-btn-primary-disabled:active>a:only-child:after,.ant-btn-primary-disabled:focus>a:only-child:after,.ant-btn-primary-disabled:hover>a:only-child:after,.ant-btn-primary-disabled>a:only-child:after,.ant-btn-primary.disabled.active>a:only-child:after,.ant-btn-primary.disabled:active>a:only-child:after,.ant-btn-primary.disabled:focus>a:only-child:after,.ant-btn-primary.disabled:hover>a:only-child:after,.ant-btn-primary.disabled>a:only-child:after,.ant-btn-primary[disabled].active>a:only-child:after,.ant-btn-primary[disabled]:active>a:only-child:after,.ant-btn-primary[disabled]:focus>a:only-child:after,.ant-btn-primary[disabled]:hover>a:only-child:after,.ant-btn-primary[disabled]>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child){border-right-color:#de6949;border-left-color:#de6949}.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child):disabled{border-color:#d9d9d9}.ant-btn-group .ant-btn-primary:first-child:not(:last-child){border-right-color:#de6949}.ant-btn-group .ant-btn-primary:first-child:not(:last-child)[disabled]{border-right-color:#d9d9d9}.ant-btn-group .ant-btn-primary+.ant-btn-primary,.ant-btn-group .ant-btn-primary:last-child:not(:first-child){border-left-color:#de6949}.ant-btn-group .ant-btn-primary+.ant-btn-primary[disabled],.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled]{border-left-color:#d9d9d9}.ant-btn-ghost{color:#41464b;background-color:transparent;border-color:#d9d9d9}.ant-btn-ghost>a:only-child{color:currentColor}.ant-btn-ghost>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-ghost:focus,.ant-btn-ghost:hover{color:#de6949;background-color:transparent;border-color:#de6949}.ant-btn-ghost:focus>a:only-child,.ant-btn-ghost:hover>a:only-child{color:currentColor}.ant-btn-ghost:focus>a:only-child:after,.ant-btn-ghost:hover>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-ghost.active,.ant-btn-ghost:active{color:#ab2b15;background-color:transparent;border-color:#ab2b15}.ant-btn-ghost.active>a:only-child,.ant-btn-ghost:active>a:only-child{color:currentColor}.ant-btn-ghost.active>a:only-child:after,.ant-btn-ghost:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-ghost-disabled,.ant-btn-ghost-disabled.active,.ant-btn-ghost-disabled:active,.ant-btn-ghost-disabled:focus,.ant-btn-ghost-disabled:hover,.ant-btn-ghost.disabled,.ant-btn-ghost.disabled.active,.ant-btn-ghost.disabled:active,.ant-btn-ghost.disabled:focus,.ant-btn-ghost.disabled:hover,.ant-btn-ghost[disabled],.ant-btn-ghost[disabled].active,.ant-btn-ghost[disabled]:active,.ant-btn-ghost[disabled]:focus,.ant-btn-ghost[disabled]:hover{color:rgba(0,0,0,.25);background-color:#f5f5f5;border-color:#d9d9d9;text-shadow:none;box-shadow:none}.ant-btn-ghost-disabled.active>a:only-child,.ant-btn-ghost-disabled:active>a:only-child,.ant-btn-ghost-disabled:focus>a:only-child,.ant-btn-ghost-disabled:hover>a:only-child,.ant-btn-ghost-disabled>a:only-child,.ant-btn-ghost.disabled.active>a:only-child,.ant-btn-ghost.disabled:active>a:only-child,.ant-btn-ghost.disabled:focus>a:only-child,.ant-btn-ghost.disabled:hover>a:only-child,.ant-btn-ghost.disabled>a:only-child,.ant-btn-ghost[disabled].active>a:only-child,.ant-btn-ghost[disabled]:active>a:only-child,.ant-btn-ghost[disabled]:focus>a:only-child,.ant-btn-ghost[disabled]:hover>a:only-child,.ant-btn-ghost[disabled]>a:only-child{color:currentColor}.ant-btn-ghost-disabled.active>a:only-child:after,.ant-btn-ghost-disabled:active>a:only-child:after,.ant-btn-ghost-disabled:focus>a:only-child:after,.ant-btn-ghost-disabled:hover>a:only-child:after,.ant-btn-ghost-disabled>a:only-child:after,.ant-btn-ghost.disabled.active>a:only-child:after,.ant-btn-ghost.disabled:active>a:only-child:after,.ant-btn-ghost.disabled:focus>a:only-child:after,.ant-btn-ghost.disabled:hover>a:only-child:after,.ant-btn-ghost.disabled>a:only-child:after,.ant-btn-ghost[disabled].active>a:only-child:after,.ant-btn-ghost[disabled]:active>a:only-child:after,.ant-btn-ghost[disabled]:focus>a:only-child:after,.ant-btn-ghost[disabled]:hover>a:only-child:after,.ant-btn-ghost[disabled]>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dashed{color:#41464b;background-color:#fff;border-color:#d9d9d9;border-style:dashed}.ant-btn-dashed>a:only-child{color:currentColor}.ant-btn-dashed>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dashed:focus,.ant-btn-dashed:hover{color:#de6949;background-color:#fff;border-color:#de6949}.ant-btn-dashed:focus>a:only-child,.ant-btn-dashed:hover>a:only-child{color:currentColor}.ant-btn-dashed:focus>a:only-child:after,.ant-btn-dashed:hover>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dashed.active,.ant-btn-dashed:active{color:#ab2b15;background-color:#fff;border-color:#ab2b15}.ant-btn-dashed.active>a:only-child,.ant-btn-dashed:active>a:only-child{color:currentColor}.ant-btn-dashed.active>a:only-child:after,.ant-btn-dashed:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-dashed-disabled,.ant-btn-dashed-disabled.active,.ant-btn-dashed-disabled:active,.ant-btn-dashed-disabled:focus,.ant-btn-dashed-disabled:hover,.ant-btn-dashed.disabled,.ant-btn-dashed.disabled.active,.ant-btn-dashed.disabled:active,.ant-btn-dashed.disabled:focus,.ant-btn-dashed.disabled:hover,.ant-btn-dashed[disabled],.ant-btn-dashed[disabled].active,.ant-btn-dashed[disabled]:active,.ant-btn-dashed[disabled]:focus,.ant-btn-dashed[disabled]:hover{color:rgba(0,0,0,.25);background-color:#f5f5f5;border-color:#d9d9d9;text-shadow:none;box-shadow:none}.ant-btn-dashed-disabled.active>a:only-child,.ant-btn-dashed-disabled:active>a:only-child,.ant-btn-dashed-disabled:focus>a:only-child,.ant-btn-dashed-disabled:hover>a:only-child,.ant-btn-dashed-disabled>a:only-child,.ant-btn-dashed.disabled.active>a:only-child,.ant-btn-dashed.disabled:active>a:only-child,.ant-btn-dashed.disabled:focus>a:only-child,.ant-btn-dashed.disabled:hover>a:only-child,.ant-btn-dashed.disabled>a:only-child,.ant-btn-dashed[disabled].active>a:only-child,.ant-btn-dashed[disabled]:active>a:only-child,.ant-btn-dashed[disabled]:focus>a:only-child,.ant-btn-dashed[disabled]:hover>a:only-child,.ant-btn-dashed[disabled]>a:only-child{color:currentColor}.ant-btn-dashed-disabled.active>a:only-child:after,.ant-btn-dashed-disabled:active>a:only-child:after,.ant-btn-dashed-disabled:focus>a:only-child:after,.ant-btn-dashed-disabled:hover>a:only-child:after,.ant-btn-dashed-disabled>a:only-child:after,.ant-btn-dashed.disabled.active>a:only-child:after,.ant-btn-dashed.disabled:active>a:only-child:after,.ant-btn-dashed.disabled:focus>a:only-child:after,.ant-btn-dashed.disabled:hover>a:only-child:after,.ant-btn-dashed.disabled>a:only-child:after,.ant-btn-dashed[disabled].active>a:only-child:after,.ant-btn-dashed[disabled]:active>a:only-child:after,.ant-btn-dashed[disabled]:focus>a:only-child:after,.ant-btn-dashed[disabled]:hover>a:only-child:after,.ant-btn-dashed[disabled]>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-danger{color:#fff;background-color:#ff7875;border-color:#ff7875;text-shadow:0 -1px 0 rgba(0,0,0,.12);box-shadow:0 2px 0 rgba(0,0,0,.045)}.ant-btn-danger>a:only-child{color:currentColor}.ant-btn-danger>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-danger:focus,.ant-btn-danger:hover{color:#fff;background-color:#ffa39e;border-color:#ffa39e}.ant-btn-danger:focus>a:only-child,.ant-btn-danger:hover>a:only-child{color:currentColor}.ant-btn-danger:focus>a:only-child:after,.ant-btn-danger:hover>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-danger.active,.ant-btn-danger:active{color:#fff;background-color:#d9595b;border-color:#d9595b}.ant-btn-danger.active>a:only-child,.ant-btn-danger:active>a:only-child{color:currentColor}.ant-btn-danger.active>a:only-child:after,.ant-btn-danger:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-danger-disabled,.ant-btn-danger-disabled.active,.ant-btn-danger-disabled:active,.ant-btn-danger-disabled:focus,.ant-btn-danger-disabled:hover,.ant-btn-danger.disabled,.ant-btn-danger.disabled.active,.ant-btn-danger.disabled:active,.ant-btn-danger.disabled:focus,.ant-btn-danger.disabled:hover,.ant-btn-danger[disabled],.ant-btn-danger[disabled].active,.ant-btn-danger[disabled]:active,.ant-btn-danger[disabled]:focus,.ant-btn-danger[disabled]:hover{color:rgba(0,0,0,.25);background-color:#f5f5f5;border-color:#d9d9d9;text-shadow:none;box-shadow:none}.ant-btn-danger-disabled.active>a:only-child,.ant-btn-danger-disabled:active>a:only-child,.ant-btn-danger-disabled:focus>a:only-child,.ant-btn-danger-disabled:hover>a:only-child,.ant-btn-danger-disabled>a:only-child,.ant-btn-danger.disabled.active>a:only-child,.ant-btn-danger.disabled:active>a:only-child,.ant-btn-danger.disabled:focus>a:only-child,.ant-btn-danger.disabled:hover>a:only-child,.ant-btn-danger.disabled>a:only-child,.ant-btn-danger[disabled].active>a:only-child,.ant-btn-danger[disabled]:active>a:only-child,.ant-btn-danger[disabled]:focus>a:only-child,.ant-btn-danger[disabled]:hover>a:only-child,.ant-btn-danger[disabled]>a:only-child{color:currentColor}.ant-btn-danger-disabled.active>a:only-child:after,.ant-btn-danger-disabled:active>a:only-child:after,.ant-btn-danger-disabled:focus>a:only-child:after,.ant-btn-danger-disabled:hover>a:only-child:after,.ant-btn-danger-disabled>a:only-child:after,.ant-btn-danger.disabled.active>a:only-child:after,.ant-btn-danger.disabled:active>a:only-child:after,.ant-btn-danger.disabled:focus>a:only-child:after,.ant-btn-danger.disabled:hover>a:only-child:after,.ant-btn-danger.disabled>a:only-child:after,.ant-btn-danger[disabled].active>a:only-child:after,.ant-btn-danger[disabled]:active>a:only-child:after,.ant-btn-danger[disabled]:focus>a:only-child:after,.ant-btn-danger[disabled]:hover>a:only-child:after,.ant-btn-danger[disabled]>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-link{color:#d14424;background-color:transparent;border-color:transparent;box-shadow:none}.ant-btn-link>a:only-child{color:currentColor}.ant-btn-link>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-link:focus,.ant-btn-link:hover{color:#de6949;background-color:transparent;border-color:#de6949}.ant-btn-link:focus>a:only-child,.ant-btn-link:hover>a:only-child{color:currentColor}.ant-btn-link:focus>a:only-child:after,.ant-btn-link:hover>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-link.active,.ant-btn-link:active{color:#ab2b15;background-color:transparent;border-color:#ab2b15}.ant-btn-link.active>a:only-child,.ant-btn-link:active>a:only-child{color:currentColor}.ant-btn-link.active>a:only-child:after,.ant-btn-link:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-link-disabled,.ant-btn-link-disabled.active,.ant-btn-link-disabled:active,.ant-btn-link-disabled:focus,.ant-btn-link-disabled:hover,.ant-btn-link.disabled,.ant-btn-link.disabled.active,.ant-btn-link.disabled:active,.ant-btn-link.disabled:focus,.ant-btn-link.disabled:hover,.ant-btn-link[disabled],.ant-btn-link[disabled].active,.ant-btn-link[disabled]:active,.ant-btn-link[disabled]:focus,.ant-btn-link[disabled]:hover{background-color:#f5f5f5;border-color:#d9d9d9}.ant-btn-link:active,.ant-btn-link:focus,.ant-btn-link:hover{border-color:transparent}.ant-btn-link-disabled,.ant-btn-link-disabled.active,.ant-btn-link-disabled:active,.ant-btn-link-disabled:focus,.ant-btn-link-disabled:hover,.ant-btn-link.disabled,.ant-btn-link.disabled.active,.ant-btn-link.disabled:active,.ant-btn-link.disabled:focus,.ant-btn-link.disabled:hover,.ant-btn-link[disabled],.ant-btn-link[disabled].active,.ant-btn-link[disabled]:active,.ant-btn-link[disabled]:focus,.ant-btn-link[disabled]:hover{color:rgba(0,0,0,.25);background-color:transparent;border-color:transparent;text-shadow:none;box-shadow:none}.ant-btn-link-disabled.active>a:only-child,.ant-btn-link-disabled:active>a:only-child,.ant-btn-link-disabled:focus>a:only-child,.ant-btn-link-disabled:hover>a:only-child,.ant-btn-link-disabled>a:only-child,.ant-btn-link.disabled.active>a:only-child,.ant-btn-link.disabled:active>a:only-child,.ant-btn-link.disabled:focus>a:only-child,.ant-btn-link.disabled:hover>a:only-child,.ant-btn-link.disabled>a:only-child,.ant-btn-link[disabled].active>a:only-child,.ant-btn-link[disabled]:active>a:only-child,.ant-btn-link[disabled]:focus>a:only-child,.ant-btn-link[disabled]:hover>a:only-child,.ant-btn-link[disabled]>a:only-child{color:currentColor}.ant-btn-link-disabled.active>a:only-child:after,.ant-btn-link-disabled:active>a:only-child:after,.ant-btn-link-disabled:focus>a:only-child:after,.ant-btn-link-disabled:hover>a:only-child:after,.ant-btn-link-disabled>a:only-child:after,.ant-btn-link.disabled.active>a:only-child:after,.ant-btn-link.disabled:active>a:only-child:after,.ant-btn-link.disabled:focus>a:only-child:after,.ant-btn-link.disabled:hover>a:only-child:after,.ant-btn-link.disabled>a:only-child:after,.ant-btn-link[disabled].active>a:only-child:after,.ant-btn-link[disabled]:active>a:only-child:after,.ant-btn-link[disabled]:focus>a:only-child:after,.ant-btn-link[disabled]:hover>a:only-child:after,.ant-btn-link[disabled]>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-icon-only{width:32px;height:32px;padding:0;font-size:15px;border-radius:2px}.ant-btn-icon-only.ant-btn-lg{width:40px;height:40px;padding:0;font-size:17px;border-radius:2px}.ant-btn-icon-only.ant-btn-sm{width:24px;height:24px;padding:0;font-size:13px;border-radius:2px}.ant-btn-icon-only>i{vertical-align:middle}.ant-btn-round{height:32px;padding:0 16px;font-size:13px;border-radius:32px}.ant-btn-round.ant-btn-lg{height:40px;padding:0 20px;font-size:15px;border-radius:40px}.ant-btn-round.ant-btn-sm{height:24px;padding:0 12px;font-size:13px;border-radius:24px}.ant-btn-round.ant-btn-icon-only{width:auto}.ant-btn-circle,.ant-btn-circle-outline{min-width:32px;padding-right:0;padding-left:0;text-align:center;border-radius:50%}.ant-btn-circle-outline.ant-btn-lg,.ant-btn-circle.ant-btn-lg{min-width:40px;border-radius:50%}.ant-btn-circle-outline.ant-btn-sm,.ant-btn-circle.ant-btn-sm{min-width:24px;border-radius:50%}.ant-btn:before{position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;z-index:1;display:none;background:#fff;border-radius:inherit;opacity:.35;transition:opacity .2s;content:"";pointer-events:none}.ant-btn .anticon{transition:margin-left .3s cubic-bezier(.645,.045,.355,1)}.ant-btn .anticon.anticon-minus>svg,.ant-btn .anticon.anticon-plus>svg{shape-rendering:optimizeSpeed}.ant-btn.ant-btn-loading{position:relative}.ant-btn.ant-btn-loading:not([disabled]){pointer-events:none}.ant-btn.ant-btn-loading:before{display:block}.ant-btn.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline):not(.ant-btn-icon-only){padding-left:29px}.ant-btn.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline):not(.ant-btn-icon-only) .anticon:not(:last-child){margin-left:-14px}.ant-btn-sm.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline):not(.ant-btn-icon-only){padding-left:24px}.ant-btn-sm.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline):not(.ant-btn-icon-only) .anticon{margin-left:-17px}.ant-btn-group{display:inline-flex}.ant-btn-group,.ant-btn-group>.ant-btn,.ant-btn-group>span>.ant-btn{position:relative}.ant-btn-group>.ant-btn.active,.ant-btn-group>.ant-btn:active,.ant-btn-group>.ant-btn:focus,.ant-btn-group>.ant-btn:hover,.ant-btn-group>span>.ant-btn.active,.ant-btn-group>span>.ant-btn:active,.ant-btn-group>span>.ant-btn:focus,.ant-btn-group>span>.ant-btn:hover{z-index:2}.ant-btn-group>.ant-btn:disabled,.ant-btn-group>span>.ant-btn:disabled{z-index:0}.ant-btn-group>.ant-btn-icon-only{font-size:13px}.ant-btn-group-lg>.ant-btn,.ant-btn-group-lg>span>.ant-btn{height:40px;padding:0 15px;font-size:15px;border-radius:0;line-height:38px}.ant-btn-group-lg>.ant-btn.ant-btn-icon-only{width:40px;height:40px;padding-right:0;padding-left:0}.ant-btn-group-sm>.ant-btn,.ant-btn-group-sm>span>.ant-btn{height:24px;padding:0 7px;font-size:13px;border-radius:0;line-height:22px}.ant-btn-group-sm>.ant-btn>.anticon,.ant-btn-group-sm>span>.ant-btn>.anticon{font-size:13px}.ant-btn-group-sm>.ant-btn.ant-btn-icon-only{width:24px;height:24px;padding-right:0;padding-left:0}.ant-btn+.ant-btn-group,.ant-btn-group+.ant-btn,.ant-btn-group+.ant-btn-group,.ant-btn-group .ant-btn+.ant-btn,.ant-btn-group .ant-btn+span,.ant-btn-group>span+span,.ant-btn-group span+.ant-btn{margin-left:-1px}.ant-btn-group .ant-btn-primary+.ant-btn:not(.ant-btn-primary):not([disabled]){border-left-color:transparent}.ant-btn-group .ant-btn{border-radius:0}.ant-btn-group>.ant-btn:first-child,.ant-btn-group>span:first-child>.ant-btn{margin-left:0}.ant-btn-group>.ant-btn:only-child,.ant-btn-group>span:only-child>.ant-btn{border-radius:2px}.ant-btn-group>.ant-btn:first-child:not(:last-child),.ant-btn-group>span:first-child:not(:last-child)>.ant-btn{border-top-left-radius:2px;border-bottom-left-radius:2px}.ant-btn-group>.ant-btn:last-child:not(:first-child),.ant-btn-group>span:last-child:not(:first-child)>.ant-btn{border-top-right-radius:2px;border-bottom-right-radius:2px}.ant-btn-group-sm>.ant-btn:only-child,.ant-btn-group-sm>span:only-child>.ant-btn{border-radius:2px}.ant-btn-group-sm>.ant-btn:first-child:not(:last-child),.ant-btn-group-sm>span:first-child:not(:last-child)>.ant-btn{border-top-left-radius:2px;border-bottom-left-radius:2px}.ant-btn-group-sm>.ant-btn:last-child:not(:first-child),.ant-btn-group-sm>span:last-child:not(:first-child)>.ant-btn{border-top-right-radius:2px;border-bottom-right-radius:2px}.ant-btn-group>.ant-btn-group{float:left}.ant-btn-group>.ant-btn-group:not(:first-child):not(:last-child)>.ant-btn{border-radius:0}.ant-btn-group>.ant-btn-group:first-child:not(:last-child)>.ant-btn:last-child{padding-right:8px;border-top-right-radius:0;border-bottom-right-radius:0}.ant-btn-group>.ant-btn-group:last-child:not(:first-child)>.ant-btn:first-child{padding-left:8px;border-top-left-radius:0;border-bottom-left-radius:0}.ant-btn:active>span,.ant-btn:focus>span{position:relative}.ant-btn>.anticon+span,.ant-btn>span+.anticon{margin-left:8px}.ant-btn-background-ghost{color:#fff;background:transparent!important;border-color:#fff}.ant-btn-background-ghost.ant-btn-primary{color:#d14424;background-color:transparent;border-color:#d14424;text-shadow:none}.ant-btn-background-ghost.ant-btn-primary>a:only-child{color:currentColor}.ant-btn-background-ghost.ant-btn-primary>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-primary:focus,.ant-btn-background-ghost.ant-btn-primary:hover{color:#de6949;background-color:transparent;border-color:#de6949}.ant-btn-background-ghost.ant-btn-primary:focus>a:only-child,.ant-btn-background-ghost.ant-btn-primary:hover>a:only-child{color:currentColor}.ant-btn-background-ghost.ant-btn-primary:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary:hover>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-primary.active,.ant-btn-background-ghost.ant-btn-primary:active{color:#ab2b15;background-color:transparent;border-color:#ab2b15}.ant-btn-background-ghost.ant-btn-primary.active>a:only-child,.ant-btn-background-ghost.ant-btn-primary:active>a:only-child{color:currentColor}.ant-btn-background-ghost.ant-btn-primary.active>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-primary-disabled,.ant-btn-background-ghost.ant-btn-primary-disabled.active,.ant-btn-background-ghost.ant-btn-primary-disabled:active,.ant-btn-background-ghost.ant-btn-primary-disabled:focus,.ant-btn-background-ghost.ant-btn-primary-disabled:hover,.ant-btn-background-ghost.ant-btn-primary.disabled,.ant-btn-background-ghost.ant-btn-primary.disabled.active,.ant-btn-background-ghost.ant-btn-primary.disabled:active,.ant-btn-background-ghost.ant-btn-primary.disabled:focus,.ant-btn-background-ghost.ant-btn-primary.disabled:hover,.ant-btn-background-ghost.ant-btn-primary[disabled],.ant-btn-background-ghost.ant-btn-primary[disabled].active,.ant-btn-background-ghost.ant-btn-primary[disabled]:active,.ant-btn-background-ghost.ant-btn-primary[disabled]:focus,.ant-btn-background-ghost.ant-btn-primary[disabled]:hover{color:rgba(0,0,0,.25);background-color:#f5f5f5;border-color:#d9d9d9;text-shadow:none;box-shadow:none}.ant-btn-background-ghost.ant-btn-primary-disabled.active>a:only-child,.ant-btn-background-ghost.ant-btn-primary-disabled:active>a:only-child,.ant-btn-background-ghost.ant-btn-primary-disabled:focus>a:only-child,.ant-btn-background-ghost.ant-btn-primary-disabled:hover>a:only-child,.ant-btn-background-ghost.ant-btn-primary-disabled>a:only-child,.ant-btn-background-ghost.ant-btn-primary.disabled.active>a:only-child,.ant-btn-background-ghost.ant-btn-primary.disabled:active>a:only-child,.ant-btn-background-ghost.ant-btn-primary.disabled:focus>a:only-child,.ant-btn-background-ghost.ant-btn-primary.disabled:hover>a:only-child,.ant-btn-background-ghost.ant-btn-primary.disabled>a:only-child,.ant-btn-background-ghost.ant-btn-primary[disabled].active>a:only-child,.ant-btn-background-ghost.ant-btn-primary[disabled]:active>a:only-child,.ant-btn-background-ghost.ant-btn-primary[disabled]:focus>a:only-child,.ant-btn-background-ghost.ant-btn-primary[disabled]:hover>a:only-child,.ant-btn-background-ghost.ant-btn-primary[disabled]>a:only-child{color:currentColor}.ant-btn-background-ghost.ant-btn-primary-disabled.active>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary-disabled:active>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary-disabled:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary-disabled:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary-disabled>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary.disabled.active>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary.disabled:active>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary.disabled:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary.disabled:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary.disabled>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary[disabled].active>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary[disabled]:active>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary[disabled]:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary[disabled]:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary[disabled]>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-danger{color:#ff7875;background-color:transparent;border-color:#ff7875;text-shadow:none}.ant-btn-background-ghost.ant-btn-danger>a:only-child{color:currentColor}.ant-btn-background-ghost.ant-btn-danger>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-danger:focus,.ant-btn-background-ghost.ant-btn-danger:hover{color:#ffa39e;background-color:transparent;border-color:#ffa39e}.ant-btn-background-ghost.ant-btn-danger:focus>a:only-child,.ant-btn-background-ghost.ant-btn-danger:hover>a:only-child{color:currentColor}.ant-btn-background-ghost.ant-btn-danger:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger:hover>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-danger.active,.ant-btn-background-ghost.ant-btn-danger:active{color:#d9595b;background-color:transparent;border-color:#d9595b}.ant-btn-background-ghost.ant-btn-danger.active>a:only-child,.ant-btn-background-ghost.ant-btn-danger:active>a:only-child{color:currentColor}.ant-btn-background-ghost.ant-btn-danger.active>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-danger-disabled,.ant-btn-background-ghost.ant-btn-danger-disabled.active,.ant-btn-background-ghost.ant-btn-danger-disabled:active,.ant-btn-background-ghost.ant-btn-danger-disabled:focus,.ant-btn-background-ghost.ant-btn-danger-disabled:hover,.ant-btn-background-ghost.ant-btn-danger.disabled,.ant-btn-background-ghost.ant-btn-danger.disabled.active,.ant-btn-background-ghost.ant-btn-danger.disabled:active,.ant-btn-background-ghost.ant-btn-danger.disabled:focus,.ant-btn-background-ghost.ant-btn-danger.disabled:hover,.ant-btn-background-ghost.ant-btn-danger[disabled],.ant-btn-background-ghost.ant-btn-danger[disabled].active,.ant-btn-background-ghost.ant-btn-danger[disabled]:active,.ant-btn-background-ghost.ant-btn-danger[disabled]:focus,.ant-btn-background-ghost.ant-btn-danger[disabled]:hover{color:rgba(0,0,0,.25);background-color:#f5f5f5;border-color:#d9d9d9;text-shadow:none;box-shadow:none}.ant-btn-background-ghost.ant-btn-danger-disabled.active>a:only-child,.ant-btn-background-ghost.ant-btn-danger-disabled:active>a:only-child,.ant-btn-background-ghost.ant-btn-danger-disabled:focus>a:only-child,.ant-btn-background-ghost.ant-btn-danger-disabled:hover>a:only-child,.ant-btn-background-ghost.ant-btn-danger-disabled>a:only-child,.ant-btn-background-ghost.ant-btn-danger.disabled.active>a:only-child,.ant-btn-background-ghost.ant-btn-danger.disabled:active>a:only-child,.ant-btn-background-ghost.ant-btn-danger.disabled:focus>a:only-child,.ant-btn-background-ghost.ant-btn-danger.disabled:hover>a:only-child,.ant-btn-background-ghost.ant-btn-danger.disabled>a:only-child,.ant-btn-background-ghost.ant-btn-danger[disabled].active>a:only-child,.ant-btn-background-ghost.ant-btn-danger[disabled]:active>a:only-child,.ant-btn-background-ghost.ant-btn-danger[disabled]:focus>a:only-child,.ant-btn-background-ghost.ant-btn-danger[disabled]:hover>a:only-child,.ant-btn-background-ghost.ant-btn-danger[disabled]>a:only-child{color:currentColor}.ant-btn-background-ghost.ant-btn-danger-disabled.active>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger-disabled:active>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger-disabled:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger-disabled:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger-disabled>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger.disabled.active>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger.disabled:active>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger.disabled:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger.disabled:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger.disabled>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger[disabled].active>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger[disabled]:active>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger[disabled]:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger[disabled]:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger[disabled]>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-link{color:#d14424;background-color:transparent;border-color:transparent;text-shadow:none;color:#fff}.ant-btn-background-ghost.ant-btn-link>a:only-child{color:currentColor}.ant-btn-background-ghost.ant-btn-link>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-link:focus,.ant-btn-background-ghost.ant-btn-link:hover{color:#de6949;background-color:transparent;border-color:transparent}.ant-btn-background-ghost.ant-btn-link:focus>a:only-child,.ant-btn-background-ghost.ant-btn-link:hover>a:only-child{color:currentColor}.ant-btn-background-ghost.ant-btn-link:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-link:hover>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-link.active,.ant-btn-background-ghost.ant-btn-link:active{color:#ab2b15;background-color:transparent;border-color:transparent}.ant-btn-background-ghost.ant-btn-link.active>a:only-child,.ant-btn-background-ghost.ant-btn-link:active>a:only-child{color:currentColor}.ant-btn-background-ghost.ant-btn-link.active>a:only-child:after,.ant-btn-background-ghost.ant-btn-link:active>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-background-ghost.ant-btn-link-disabled,.ant-btn-background-ghost.ant-btn-link-disabled.active,.ant-btn-background-ghost.ant-btn-link-disabled:active,.ant-btn-background-ghost.ant-btn-link-disabled:focus,.ant-btn-background-ghost.ant-btn-link-disabled:hover,.ant-btn-background-ghost.ant-btn-link.disabled,.ant-btn-background-ghost.ant-btn-link.disabled.active,.ant-btn-background-ghost.ant-btn-link.disabled:active,.ant-btn-background-ghost.ant-btn-link.disabled:focus,.ant-btn-background-ghost.ant-btn-link.disabled:hover,.ant-btn-background-ghost.ant-btn-link[disabled],.ant-btn-background-ghost.ant-btn-link[disabled].active,.ant-btn-background-ghost.ant-btn-link[disabled]:active,.ant-btn-background-ghost.ant-btn-link[disabled]:focus,.ant-btn-background-ghost.ant-btn-link[disabled]:hover{color:rgba(0,0,0,.25);background-color:#f5f5f5;border-color:#d9d9d9;text-shadow:none;box-shadow:none}.ant-btn-background-ghost.ant-btn-link-disabled.active>a:only-child,.ant-btn-background-ghost.ant-btn-link-disabled:active>a:only-child,.ant-btn-background-ghost.ant-btn-link-disabled:focus>a:only-child,.ant-btn-background-ghost.ant-btn-link-disabled:hover>a:only-child,.ant-btn-background-ghost.ant-btn-link-disabled>a:only-child,.ant-btn-background-ghost.ant-btn-link.disabled.active>a:only-child,.ant-btn-background-ghost.ant-btn-link.disabled:active>a:only-child,.ant-btn-background-ghost.ant-btn-link.disabled:focus>a:only-child,.ant-btn-background-ghost.ant-btn-link.disabled:hover>a:only-child,.ant-btn-background-ghost.ant-btn-link.disabled>a:only-child,.ant-btn-background-ghost.ant-btn-link[disabled].active>a:only-child,.ant-btn-background-ghost.ant-btn-link[disabled]:active>a:only-child,.ant-btn-background-ghost.ant-btn-link[disabled]:focus>a:only-child,.ant-btn-background-ghost.ant-btn-link[disabled]:hover>a:only-child,.ant-btn-background-ghost.ant-btn-link[disabled]>a:only-child{color:currentColor}.ant-btn-background-ghost.ant-btn-link-disabled.active>a:only-child:after,.ant-btn-background-ghost.ant-btn-link-disabled:active>a:only-child:after,.ant-btn-background-ghost.ant-btn-link-disabled:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-link-disabled:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-link-disabled>a:only-child:after,.ant-btn-background-ghost.ant-btn-link.disabled.active>a:only-child:after,.ant-btn-background-ghost.ant-btn-link.disabled:active>a:only-child:after,.ant-btn-background-ghost.ant-btn-link.disabled:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-link.disabled:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-link.disabled>a:only-child:after,.ant-btn-background-ghost.ant-btn-link[disabled].active>a:only-child:after,.ant-btn-background-ghost.ant-btn-link[disabled]:active>a:only-child:after,.ant-btn-background-ghost.ant-btn-link[disabled]:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-link[disabled]:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-link[disabled]>a:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;content:""}.ant-btn-two-chinese-chars:first-letter{letter-spacing:.34em}.ant-btn-two-chinese-chars>:not(.anticon){margin-right:-.34em;letter-spacing:.34em}.ant-btn-block{width:100%}.ant-btn:empty{vertical-align:top}a.ant-btn{padding-top:.1px;line-height:30px}a.ant-btn-lg{line-height:38px}a.ant-btn-sm{line-height:22px}.ant-modal{box-sizing:border-box;margin:0;padding:0;color:#41464b;font-size:13px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";position:relative;top:100px;width:auto;margin:0 auto;padding-bottom:24px;pointer-events:none}.ant-modal-wrap{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;overflow:auto;outline:0;-webkit-overflow-scrolling:touch}.ant-modal-title{margin:0;color:rgba(0,0,0,.85);font-weight:500;font-size:15px;line-height:22px;word-wrap:break-word}.ant-modal-content{position:relative;background-color:#fff;background-clip:padding-box;border:0;border-radius:2px;box-shadow:0 4px 12px rgba(0,0,0,.15);pointer-events:auto}.ant-modal-close{position:absolute;top:0;right:0;z-index:10;padding:0;color:rgba(0,0,0,.45);font-weight:700;line-height:1;text-decoration:none;background:transparent;border:0;outline:0;cursor:pointer;transition:color .3s}.ant-modal-close-x{display:block;width:56px;height:56px;font-size:15px;font-style:normal;line-height:56px;text-align:center;text-transform:none;text-rendering:auto}.ant-modal-close:focus,.ant-modal-close:hover{color:rgba(0,0,0,.75);text-decoration:none}.ant-modal-header{padding:16px 24px;color:#41464b;background:#fff;border-bottom:1px solid #f0f0f0;border-radius:2px 2px 0 0}.ant-modal-body{padding:24px;font-size:13px;line-height:1.5715;word-wrap:break-word}.ant-modal-footer{padding:10px 16px;text-align:right;background:transparent;border-top:1px solid #f0f0f0;border-radius:0 0 2px 2px}.ant-modal-footer button+button{margin-bottom:0;margin-left:8px}.ant-modal.zoom-appear,.ant-modal.zoom-enter{transform:none;opacity:0;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;height:100%;background-color:rgba(0,0,0,.45);filter:alpha(opacity=50)}.ant-modal-mask-hidden{display:none}.ant-modal-open{overflow:hidden}.ant-modal-centered{text-align:center}.ant-modal-centered:before{display:inline-block;width:0;height:100%;vertical-align:middle;content:""}.ant-modal-centered .ant-modal{top:0;display:inline-block;text-align:left;vertical-align:middle}@media (max-width:767px){.ant-modal{max-width:calc(100vw - 16px);margin:8px auto}.ant-modal-centered .ant-modal{flex:1}}.ant-modal-confirm .ant-modal-header{display:none}.ant-modal-confirm .ant-modal-body{padding:32px 32px 24px}.ant-modal-confirm-body-wrapper{zoom:1}.ant-modal-confirm-body-wrapper:after,.ant-modal-confirm-body-wrapper:before{display:table;content:""}.ant-modal-confirm-body-wrapper:after{clear:both}.ant-modal-confirm-body .ant-modal-confirm-title{display:block;overflow:hidden;color:rgba(0,0,0,.85);font-weight:500;font-size:15px;line-height:1.4}.ant-modal-confirm-body .ant-modal-confirm-content{margin-top:8px;color:#41464b;font-size:13px}.ant-modal-confirm-body>.anticon{float:left;margin-right:16px;font-size:22px}.ant-modal-confirm-body>.anticon+.ant-modal-confirm-title+.ant-modal-confirm-content{margin-left:38px}.ant-modal-confirm .ant-modal-confirm-btns{float:right;margin-top:24px}.ant-modal-confirm .ant-modal-confirm-btns button+button{margin-bottom:0;margin-left:8px}.ant-modal-confirm-error .ant-modal-confirm-body>.anticon{color:#ff4d4f}.ant-modal-confirm-confirm .ant-modal-confirm-body>.anticon,.ant-modal-confirm-warning .ant-modal-confirm-body>.anticon{color:#faad14}.ant-modal-confirm-info .ant-modal-confirm-body>.anticon{color:#d14424}.ant-modal-confirm-success .ant-modal-confirm-body>.anticon{color:#52c41a}.ant-input-affix-wrapper{display:inline-block;transition:all .3s}.ant-input-affix-wrapper::-moz-placeholder{color:#bfbfbf;opacity:1}.ant-input-affix-wrapper:-ms-input-placeholder{color:#bfbfbf}.ant-input-affix-wrapper::-webkit-input-placeholder{color:#bfbfbf}.ant-input-affix-wrapper:-moz-placeholder-shown{text-overflow:ellipsis}.ant-input-affix-wrapper:-ms-input-placeholder{text-overflow:ellipsis}.ant-input-affix-wrapper:placeholder-shown{text-overflow:ellipsis}.ant-input-affix-wrapper:focus{border-color:#de6949;border-right-width:1px!important;outline:0;box-shadow:0 0 0 2px rgba(209,68,36,.2)}.ant-input-affix-wrapper[disabled]{color:rgba(0,0,0,.25);background-color:#f5f5f5;cursor:not-allowed;opacity:1}.ant-input-affix-wrapper[disabled]:hover{border-color:#d9d9d9;border-right-width:1px!important}textarea.ant-input-affix-wrapper{max-width:100%;height:auto;min-height:32px;line-height:1.5715;vertical-align:bottom;transition:all .3s,height 0s}.ant-input-affix-wrapper-disabled .ant-input[disabled]{background:transparent}.ant-input-affix-wrapper>input.ant-input{padding:0;border:none;outline:none}.ant-input-affix-wrapper>input.ant-input:focus{box-shadow:none}.ant-input-affix-wrapper:before{width:0;visibility:hidden;content:"\a0"}.ant-input-prefix,.ant-input-suffix{display:flex;flex:none;align-items:center}.ant-input-prefix{margin-right:4px}.ant-input-suffix{margin-left:4px}.ant-input{box-sizing:border-box;margin:0;padding:0;font-variant:tabular-nums;list-style:none;font-feature-settings:"tnum";position:relative;display:inline-block;width:100%;padding:4px 11px;color:#41464b;font-size:13px;line-height:1.5715;background-color:#fff;background-image:none;border:1px solid #d9d9d9;border-radius:2px;transition:all .3s}.ant-input::-moz-placeholder{color:#bfbfbf;opacity:1}.ant-input:-ms-input-placeholder{color:#bfbfbf}.ant-input::-webkit-input-placeholder{color:#bfbfbf}.ant-input:-moz-placeholder-shown{text-overflow:ellipsis}.ant-input:-ms-input-placeholder{text-overflow:ellipsis}.ant-input:placeholder-shown{text-overflow:ellipsis}.ant-input:focus,.ant-input:hover{border-color:#de6949;border-right-width:1px!important}.ant-input:focus{outline:0;box-shadow:0 0 0 2px rgba(209,68,36,.2)}.ant-input-disabled{color:rgba(0,0,0,.25);background-color:#f5f5f5;cursor:not-allowed;opacity:1}.ant-input-disabled:hover{border-color:#d9d9d9;border-right-width:1px!important}.ant-input[disabled]{color:rgba(0,0,0,.25);background-color:#f5f5f5;cursor:not-allowed;opacity:1}.ant-input[disabled]:hover{border-color:#d9d9d9;border-right-width:1px!important}textarea.ant-input{max-width:100%;height:auto;min-height:32px;line-height:1.5715;vertical-align:bottom;transition:all .3s,height 0s}.ant-input-lg{padding:6.5px 11px;font-size:15px}.ant-input-sm{padding:0 7px}.ant-input-group{box-sizing:border-box;margin:0;padding:0;color:#41464b;font-size:13px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";position:relative;display:table;width:100%;border-collapse:separate;border-spacing:0}.ant-input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.ant-input-group>[class*=col-]{padding-right:8px}.ant-input-group>[class*=col-]:last-child{padding-right:0}.ant-input-group-addon,.ant-input-group-wrap,.ant-input-group>.ant-input{display:table-cell}.ant-input-group-addon:not(:first-child):not(:last-child),.ant-input-group-wrap:not(:first-child):not(:last-child),.ant-input-group>.ant-input:not(:first-child):not(:last-child){border-radius:0}.ant-input-group-addon,.ant-input-group-wrap{width:1px;white-space:nowrap;vertical-align:middle}.ant-input-group-wrap>*{display:block!important}.ant-input-group .ant-input{float:left;width:100%;margin-bottom:0;text-align:inherit}.ant-input-group .ant-input:focus,.ant-input-group .ant-input:hover{z-index:1;border-right-width:1px}.ant-input-group-addon{position:relative;padding:0 11px;color:#41464b;font-weight:400;font-size:13px;text-align:center;background-color:#fafafa;border:1px solid #d9d9d9;border-radius:2px;transition:all .3s}.ant-input-group-addon .ant-select{margin:-5px -11px}.ant-input-group-addon .ant-select.ant-select-single:not(.ant-select-customize-input) .ant-select-selector{background-color:inherit;border:1px solid transparent;box-shadow:none}.ant-input-group-addon .ant-select-focused .ant-select-selector,.ant-input-group-addon .ant-select-open .ant-select-selector{color:#d14424}.ant-input-group-addon>i:only-child:after{position:absolute;top:0;right:0;bottom:0;left:0;content:""}.ant-input-group-addon:first-child,.ant-input-group-addon:first-child .ant-select .ant-select-selector,.ant-input-group>.ant-input:first-child,.ant-input-group>.ant-input:first-child .ant-select .ant-select-selector{border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-group>.ant-input-affix-wrapper:not(:first-child) .ant-input{border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-group>.ant-input-affix-wrapper:not(:last-child) .ant-input{border-top-right-radius:0;border-bottom-right-radius:0}.ant-input-group-addon:first-child{border-right:0}.ant-input-group-addon:last-child{border-left:0}.ant-input-group-addon:last-child,.ant-input-group-addon:last-child .ant-select .ant-select-selector,.ant-input-group>.ant-input:last-child,.ant-input-group>.ant-input:last-child .ant-select .ant-select-selector{border-top-left-radius:0;border-bottom-left-radius:0}.ant-input-group-lg .ant-input,.ant-input-group-lg>.ant-input-group-addon{padding:6.5px 11px;font-size:15px}.ant-input-group-sm .ant-input,.ant-input-group-sm>.ant-input-group-addon{padding:0 7px}.ant-input-group-lg .ant-select-single .ant-select-selector{height:40px}.ant-input-group-sm .ant-select-single .ant-select-selector{height:24px}.ant-input-group.ant-input-group-compact{display:block;zoom:1}.ant-input-group.ant-input-group-compact:after,.ant-input-group.ant-input-group-compact:before{display:table;content:""}.ant-input-group.ant-input-group-compact:after{clear:both}.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child),.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child),.ant-input-group.ant-input-group-compact>.ant-input:not(:first-child):not(:last-child){border-right-width:1px}.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):focus,.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):hover,.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):focus,.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):hover,.ant-input-group.ant-input-group-compact>.ant-input:not(:first-child):not(:last-child):focus,.ant-input-group.ant-input-group-compact>.ant-input:not(:first-child):not(:last-child):hover{z-index:1}.ant-input-group.ant-input-group-compact>*{display:inline-block;float:none;vertical-align:top;border-radius:0}.ant-input-group.ant-input-group-compact>.ant-input-affix-wrapper{display:inline-flex}.ant-input-group.ant-input-group-compact>:not(:last-child){margin-right:-1px;border-right-width:1px}.ant-input-group.ant-input-group-compact .ant-input{float:none}.ant-input-group.ant-input-group-compact>.ant-calendar-picker .ant-input,.ant-input-group.ant-input-group-compact>.ant-cascader-picker .ant-input,.ant-input-group.ant-input-group-compact>.ant-input-group-wrapper .ant-input,.ant-input-group.ant-input-group-compact>.ant-mention-wrapper .ant-mention-editor,.ant-input-group.ant-input-group-compact>.ant-select-auto-complete .ant-input,.ant-input-group.ant-input-group-compact>.ant-select>.ant-select-selector,.ant-input-group.ant-input-group-compact>.ant-time-picker .ant-time-picker-input{border-right-width:1px;border-radius:0}.ant-input-group.ant-input-group-compact>.ant-calendar-picker .ant-input:focus,.ant-input-group.ant-input-group-compact>.ant-calendar-picker .ant-input:hover,.ant-input-group.ant-input-group-compact>.ant-cascader-picker .ant-input:focus,.ant-input-group.ant-input-group-compact>.ant-cascader-picker .ant-input:hover,.ant-input-group.ant-input-group-compact>.ant-input-group-wrapper .ant-input:focus,.ant-input-group.ant-input-group-compact>.ant-input-group-wrapper .ant-input:hover,.ant-input-group.ant-input-group-compact>.ant-mention-wrapper .ant-mention-editor:focus,.ant-input-group.ant-input-group-compact>.ant-mention-wrapper .ant-mention-editor:hover,.ant-input-group.ant-input-group-compact>.ant-select-auto-complete .ant-input:focus,.ant-input-group.ant-input-group-compact>.ant-select-auto-complete .ant-input:hover,.ant-input-group.ant-input-group-compact>.ant-select-focused,.ant-input-group.ant-input-group-compact>.ant-select>.ant-select-selector:focus,.ant-input-group.ant-input-group-compact>.ant-select>.ant-select-selector:hover,.ant-input-group.ant-input-group-compact>.ant-time-picker .ant-time-picker-input:focus,.ant-input-group.ant-input-group-compact>.ant-time-picker .ant-time-picker-input:hover{z-index:1}.ant-input-group.ant-input-group-compact>.ant-calendar-picker:first-child .ant-input,.ant-input-group.ant-input-group-compact>.ant-cascader-picker:first-child .ant-input,.ant-input-group.ant-input-group-compact>.ant-mention-wrapper:first-child .ant-mention-editor,.ant-input-group.ant-input-group-compact>.ant-select-auto-complete:first-child .ant-input,.ant-input-group.ant-input-group-compact>.ant-select:first-child>.ant-select-selector,.ant-input-group.ant-input-group-compact>.ant-time-picker:first-child .ant-time-picker-input,.ant-input-group.ant-input-group-compact>:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px}.ant-input-group.ant-input-group-compact>.ant-calendar-picker:last-child .ant-input,.ant-input-group.ant-input-group-compact>.ant-cascader-picker-focused:last-child .ant-input,.ant-input-group.ant-input-group-compact>.ant-cascader-picker:last-child .ant-input,.ant-input-group.ant-input-group-compact>.ant-mention-wrapper:last-child .ant-mention-editor,.ant-input-group.ant-input-group-compact>.ant-select-auto-complete:last-child .ant-input,.ant-input-group.ant-input-group-compact>.ant-select:last-child>.ant-select-selector,.ant-input-group.ant-input-group-compact>.ant-time-picker:last-child .ant-time-picker-input,.ant-input-group.ant-input-group-compact>:last-child{border-right-width:1px;border-top-right-radius:2px;border-bottom-right-radius:2px}.ant-input-group.ant-input-group-compact>.ant-select-auto-complete .ant-input{vertical-align:top}.ant-input-group-wrapper{display:inline-block;width:100%;text-align:start;vertical-align:top}.ant-input-affix-wrapper{box-sizing:border-box;margin:0;padding:0;font-variant:tabular-nums;list-style:none;font-feature-settings:"tnum";position:relative;display:inline-flex;border:1px solid #d9d9d9;border-radius:2px;padding:4px 11px;width:100%;text-align:start;background-color:#fff;background-image:none;color:#41464b;font-size:13px;line-height:1.5715}.ant-input-affix-wrapper:hover{border-color:#de6949;border-right-width:1px!important}.ant-input-affix-wrapper-disabled{color:rgba(0,0,0,.25);background-color:#f5f5f5;cursor:not-allowed;opacity:1}.ant-input-affix-wrapper-disabled:hover{border-color:#d9d9d9;border-right-width:1px!important}.ant-input-affix-wrapper-focused{border-color:#de6949;border-right-width:1px!important;outline:0;box-shadow:0 0 0 2px rgba(209,68,36,.2)}.ant-input-affix-wrapper-lg{padding:6.5px 11px;font-size:15px}.ant-input-affix-wrapper-sm{padding:0 7px}.ant-input-affix-wrapper .ant-input{position:relative;text-align:inherit;border:none;padding:0}.ant-input-affix-wrapper .ant-input:focus{border:none;outline:none;box-shadow:none}.ant-input-affix-wrapper .ant-input-prefix,.ant-input-affix-wrapper .ant-input-suffix{display:flex;align-items:center;color:#41464b;white-space:nowrap}.ant-input-affix-wrapper .ant-input-prefix :not(.anticon),.ant-input-affix-wrapper .ant-input-suffix :not(.anticon){line-height:1.5715}.ant-input-affix-wrapper .ant-input-disabled~.ant-input-suffix .anticon{color:rgba(0,0,0,.25);cursor:not-allowed}.ant-input-affix-wrapper .ant-input-prefix{margin-right:4px}.ant-input-affix-wrapper .ant-input-suffix{margin-left:4px}.ant-input-password-icon{color:rgba(0,0,0,.45);cursor:pointer;transition:all .3s}.ant-input-password-icon:hover{color:rgba(0,0,0,.85)}.ant-input-clear-icon{color:rgba(0,0,0,.25);font-size:12px;cursor:pointer;transition:color .3s;margin:0 4px;vertical-align:0}.ant-input-clear-icon:hover{color:rgba(0,0,0,.45)}.ant-input-clear-icon:active{color:#41464b}.ant-input-clear-icon+i{margin-left:6px}.ant-input-clear-icon-hidden,.ant-input-textarea-clear-icon-hidden{visibility:hidden}.ant-input-textarea-clear-icon{color:rgba(0,0,0,.25);font-size:12px;cursor:pointer;transition:color .3s;margin:0 4px;position:absolute;top:0;right:0;margin:8px 8px 0 0}.ant-input-textarea-clear-icon:hover{color:rgba(0,0,0,.45)}.ant-input-textarea-clear-icon:active{color:#41464b}.ant-input-textarea-clear-icon+i{margin-left:6px}.ant-input-textarea-show-count:after{display:block;color:rgba(0,0,0,.45);text-align:right;content:attr(data-count)}.ant-input-search-icon{color:rgba(0,0,0,.45);cursor:pointer;transition:all .3s}.ant-input-search-icon:hover{color:rgba(0,0,0,.85)}.ant-input-search-enter-button input{border-right:0}.ant-input-search-enter-button+.ant-input-group-addon,.ant-input-search-enter-button input+.ant-input-group-addon{padding:0;border:0}.ant-input-search-enter-button+.ant-input-group-addon .ant-input-search-button,.ant-input-search-enter-button input+.ant-input-group-addon .ant-input-search-button{border-top-left-radius:0;border-bottom-left-radius:0}.ant-radio-group{box-sizing:border-box;margin:0;padding:0;color:#41464b;font-size:13px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";display:inline-block}.ant-radio-wrapper{margin:0;margin-right:8px}.ant-radio,.ant-radio-wrapper{box-sizing:border-box;padding:0;color:#41464b;font-size:13px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";position:relative;display:inline-block;white-space:nowrap;cursor:pointer}.ant-radio{margin:0;line-height:1;vertical-align:sub;outline:none}.ant-radio-input:focus+.ant-radio-inner,.ant-radio-wrapper:hover .ant-radio,.ant-radio:hover .ant-radio-inner{border-color:#d14424}.ant-radio-input:focus+.ant-radio-inner{box-shadow:0 0 0 3px rgba(209,68,36,.08)}.ant-radio-checked:after{position:absolute;top:0;left:0;width:100%;height:100%;border:1px solid #d14424;border-radius:50%;visibility:hidden;-webkit-animation:antRadioEffect .36s ease-in-out;animation:antRadioEffect .36s ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both;content:""}.ant-radio-wrapper:hover .ant-radio:after,.ant-radio:hover:after{visibility:visible}.ant-radio-inner{position:relative;top:0;left:0;display:block;width:16px;height:16px;background-color:#fff;border-color:#d9d9d9;border-style:solid;border-width:1px;border-radius:100px;transition:all .3s}.ant-radio-inner:after{position:absolute;top:3px;left:3px;display:table;width:8px;height:8px;background-color:#d14424;border-top:0;border-left:0;border-radius:8px;transform:scale(0);opacity:0;transition:all .3s cubic-bezier(.78,.14,.15,.86);content:" "}.ant-radio-input{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;cursor:pointer;opacity:0}.ant-radio-checked .ant-radio-inner{border-color:#d14424}.ant-radio-checked .ant-radio-inner:after{transform:scale(1);opacity:1;transition:all .3s cubic-bezier(.78,.14,.15,.86)}.ant-radio-disabled .ant-radio-inner{background-color:#f5f5f5;border-color:#d9d9d9!important;cursor:not-allowed}.ant-radio-disabled .ant-radio-inner:after{background-color:rgba(0,0,0,.2)}.ant-radio-disabled .ant-radio-input{cursor:not-allowed}.ant-radio-disabled+span{color:rgba(0,0,0,.25);cursor:not-allowed}span.ant-radio+*{padding-right:8px;padding-left:8px}.ant-radio-button-wrapper{position:relative;display:inline-block;height:32px;margin:0;padding:0 15px;color:#41464b;line-height:30px;background:#fff;border:1px solid #d9d9d9;border-top-width:1.02px;border-left:0;cursor:pointer;transition:color .3s,background .3s,border-color .3s}.ant-radio-button-wrapper a{color:#41464b}.ant-radio-button-wrapper>.ant-radio-button{display:block;width:0;height:0;margin-left:0}.ant-radio-group-large .ant-radio-button-wrapper{height:40px;font-size:15px;line-height:38px}.ant-radio-group-small .ant-radio-button-wrapper{height:24px;padding:0 7px;line-height:22px}.ant-radio-button-wrapper:not(:first-child):before{position:absolute;top:0;left:-1px;display:block;width:1px;height:100%;background-color:#d9d9d9;content:""}.ant-radio-button-wrapper:first-child{border-left:1px solid #d9d9d9;border-radius:2px 0 0 2px}.ant-radio-button-wrapper:last-child{border-radius:0 2px 2px 0}.ant-radio-button-wrapper:first-child:last-child{border-radius:2px}.ant-radio-button-wrapper:hover{position:relative;color:#d14424}.ant-radio-button-wrapper:focus-within{outline:3px solid rgba(209,68,36,.06)}.ant-radio-button-wrapper .ant-radio-inner,.ant-radio-button-wrapper input[type=checkbox],.ant-radio-button-wrapper input[type=radio]{width:0;height:0;opacity:0;pointer-events:none}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){z-index:1;color:#d14424;background:#fff;border-color:#d14424;box-shadow:-1px 0 0 0 #d14424}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):before{background-color:#d14424!important;opacity:.1}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child{border-color:#d14424;box-shadow:none!important}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover{color:#de6949;border-color:#de6949;box-shadow:-1px 0 0 0 #de6949}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active{color:#ab2b15;border-color:#ab2b15;box-shadow:-1px 0 0 0 #ab2b15}.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within{outline:3px solid rgba(209,68,36,.06)}.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){color:#fff;background:#d14424;border-color:#d14424}.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover{color:#fff;background:#de6949;border-color:#de6949}.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active{color:#fff;background:#ab2b15;border-color:#ab2b15}.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within{outline:3px solid rgba(209,68,36,.06)}.ant-radio-button-wrapper-disabled{cursor:not-allowed}.ant-radio-button-wrapper-disabled,.ant-radio-button-wrapper-disabled:first-child,.ant-radio-button-wrapper-disabled:hover{color:rgba(0,0,0,.25);background-color:#f5f5f5;border-color:#d9d9d9}.ant-radio-button-wrapper-disabled:first-child{border-left-color:#d9d9d9}.ant-radio-button-wrapper-disabled.ant-radio-button-wrapper-checked{color:rgba(0,0,0,.25);background-color:#e6e6e6;border-color:#d9d9d9;box-shadow:none}@-webkit-keyframes antRadioEffect{0%{transform:scale(1);opacity:.5}to{transform:scale(1.6);opacity:0}}@keyframes antRadioEffect{0%{transform:scale(1);opacity:.5}to{transform:scale(1.6);opacity:0}}@supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal){.ant-radio{vertical-align:text-bottom}}.ant-switch{margin:0;padding:0;color:#41464b;font-size:13px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";position:relative;display:inline-block;box-sizing:border-box;min-width:44px;height:22px;line-height:20px;vertical-align:middle;background-color:rgba(0,0,0,.25);border:1px solid transparent;border-radius:100px;cursor:pointer;transition:all .36s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-switch-inner{display:block;margin-right:6px;margin-left:24px;color:#fff;font-size:12px}.ant-switch-loading-icon,.ant-switch:after{position:absolute;top:1px;left:1px;width:18px;height:18px;background-color:#fff;border-radius:18px;cursor:pointer;transition:all .36s cubic-bezier(.78,.14,.15,.86);content:" "}.ant-switch:after{box-shadow:0 2px 4px 0 rgba(0,35,11,.2)}.ant-switch:not(.ant-switch-disabled):active:after,.ant-switch:not(.ant-switch-disabled):active:before{width:24px}.ant-switch-loading-icon{z-index:1;display:none;font-size:12px;background:transparent}.ant-switch-loading-icon svg{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto}.ant-switch-loading .ant-switch-loading-icon{display:inline-block;color:#41464b}.ant-switch-checked.ant-switch-loading .ant-switch-loading-icon{color:#d14424}.ant-switch:focus{outline:0;box-shadow:0 0 0 2px rgba(209,68,36,.2)}.ant-switch:focus:hover{box-shadow:none}.ant-switch-small{min-width:28px;height:16px;line-height:14px}.ant-switch-small .ant-switch-inner{margin-right:3px;margin-left:18px;font-size:12px}.ant-switch-small:after{width:12px;height:12px}.ant-switch-small:active:after,.ant-switch-small:active:before{width:16px}.ant-switch-small .ant-switch-loading-icon{width:12px;height:12px}.ant-switch-small.ant-switch-checked .ant-switch-inner{margin-right:18px;margin-left:3px}.ant-switch-small.ant-switch-checked .ant-switch-loading-icon{left:100%;margin-left:-13px}.ant-switch-small.ant-switch-loading .ant-switch-loading-icon{font-weight:700;transform:scale(.66667)}.ant-switch-checked{background-color:#d14424}.ant-switch-checked .ant-switch-inner{margin-right:24px;margin-left:6px}.ant-switch-checked:after{left:100%;margin-left:-1px;transform:translateX(-100%)}.ant-switch-checked .ant-switch-loading-icon{left:100%;margin-left:-19px}.ant-switch-disabled,.ant-switch-loading{cursor:not-allowed;opacity:.4}.ant-switch-disabled *,.ant-switch-disabled:after,.ant-switch-disabled:before,.ant-switch-loading *,.ant-switch-loading:after,.ant-switch-loading:before{cursor:not-allowed}@-webkit-keyframes AntSwitchSmallLoadingCircle{0%{transform:rotate(0deg) scale(.66667);transform-origin:50% 50%}to{transform:rotate(1turn) scale(.66667);transform-origin:50% 50%}}@keyframes AntSwitchSmallLoadingCircle{0%{transform:rotate(0deg) scale(.66667);transform-origin:50% 50%}to{transform:rotate(1turn) scale(.66667);transform-origin:50% 50%}}.ant-select-single .ant-select-selector{display:flex}.ant-select-single .ant-select-selector .ant-select-selection-search{position:absolute;top:0;right:11px;bottom:0;left:11px}.ant-select-single .ant-select-selector .ant-select-selection-search-input{width:100%}.ant-select-single .ant-select-selector .ant-select-selection-item,.ant-select-single .ant-select-selector .ant-select-selection-placeholder{padding:0;line-height:30px;transition:all .3s}@supports (-moz-appearance:meterbar){.ant-select-single .ant-select-selector .ant-select-selection-item,.ant-select-single .ant-select-selector .ant-select-selection-placeholder{line-height:30px}}.ant-select-single .ant-select-selector .ant-select-selection-item{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-select-single .ant-select-selector .ant-select-selection-placeholder{pointer-events:none}.ant-select-single .ant-select-selector .ant-select-selection-item:after,.ant-select-single .ant-select-selector .ant-select-selection-placeholder:after,.ant-select-single .ant-select-selector:after{display:inline-block;width:0;visibility:hidden;content:"\a0"}.ant-select-single.ant-select-show-arrow .ant-select-selection-search{right:24px}.ant-select-single.ant-select-show-arrow .ant-select-selection-item,.ant-select-single.ant-select-show-arrow .ant-select-selection-placeholder{padding-right:17px}.ant-select-single.ant-select-open .ant-select-selection-item{color:#bfbfbf}.ant-select-single:not(.ant-select-customize-input) .ant-select-selector{position:relative;background-color:#fff;border:1px solid #d9d9d9;border-radius:2px;transition:all .3s cubic-bezier(.645,.045,.355,1);width:100%;height:32px;padding:0 11px}.ant-select-single:not(.ant-select-customize-input) .ant-select-selector input{cursor:pointer}.ant-select-show-search.ant-select-single:not(.ant-select-customize-input) .ant-select-selector{cursor:text}.ant-select-show-search.ant-select-single:not(.ant-select-customize-input) .ant-select-selector input{cursor:auto}.ant-select-focused:not(.ant-select-disabled).ant-select-single:not(.ant-select-customize-input) .ant-select-selector{border-color:#de6949;border-right-width:1px!important;outline:0;box-shadow:0 0 0 2px rgba(209,68,36,.2)}.ant-select-disabled.ant-select-single:not(.ant-select-customize-input) .ant-select-selector{color:rgba(0,0,0,.25);background:#f5f5f5;cursor:not-allowed}.ant-select-disabled.ant-select-single:not(.ant-select-customize-input) .ant-select-selector input{cursor:not-allowed}.ant-select-single:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input{margin:0;padding:0;background:transparent;border:none;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.ant-select-single:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input::-webkit-search-cancel-button{display:none;-webkit-appearance:none}.ant-select-single:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input{height:30px}.ant-select-single:not(.ant-select-customize-input) .ant-select-selector:after{line-height:30px}.ant-select-single.ant-select-customize-input .ant-select-selector:after{display:none}.ant-select-single.ant-select-customize-input .ant-select-selector .ant-select-selection-search{position:static;width:100%}.ant-select-single.ant-select-customize-input .ant-select-selector .ant-select-selection-placeholder{position:absolute;right:0;left:0;padding:0 11px}.ant-select-single.ant-select-customize-input .ant-select-selector .ant-select-selection-placeholder:after{display:none}.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector{height:40px}.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-item,.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-placeholder,.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector:after{line-height:38px}.ant-select-single.ant-select-lg:not(.ant-select-customize-input):not(.ant-select-customize-input) .ant-select-selection-search-input{height:38px}.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector{height:24px}.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-item,.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-placeholder,.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector:after{line-height:22px}.ant-select-single.ant-select-sm:not(.ant-select-customize-input):not(.ant-select-customize-input) .ant-select-selection-search-input{height:22px}.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selection-search{right:7px;left:7px}.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector{padding:0 7px}.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-search{right:26.5px}.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-item,.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-placeholder{padding-right:19.5px}.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector{padding:0 11px}.ant-select-multiple .ant-select-selector{position:relative;background-color:#fff;border:1px solid #d9d9d9;border-radius:2px;transition:all .3s cubic-bezier(.645,.045,.355,1);display:flex;flex-wrap:wrap;align-items:center;padding:1px 4px}.ant-select-multiple .ant-select-selector input{cursor:pointer}.ant-select-show-search.ant-select-multiple .ant-select-selector input{cursor:auto}.ant-select-focused:not(.ant-select-disabled).ant-select-multiple .ant-select-selector{border-color:#de6949;border-right-width:1px!important;outline:0;box-shadow:0 0 0 2px rgba(209,68,36,.2)}.ant-select-disabled.ant-select-multiple .ant-select-selector{color:rgba(0,0,0,.25)}.ant-select-disabled.ant-select-multiple .ant-select-selector input{cursor:not-allowed}.ant-select-multiple .ant-select-selector .ant-select-selection-search-input{margin:0;padding:0;background:transparent;border:none;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.ant-select-multiple .ant-select-selector .ant-select-selection-search-input::-webkit-search-cancel-button{display:none;-webkit-appearance:none}.ant-select-show-search.ant-select-multiple .ant-select-selector{cursor:text}.ant-select-disabled.ant-select-multiple .ant-select-selector{background:#f5f5f5;cursor:not-allowed}.ant-select-multiple .ant-select-selector:after{display:inline-block;width:0;margin:2px 0;line-height:24px;content:"\a0"}.ant-select-multiple.ant-select-allow-clear .ant-select-selector,.ant-select-multiple.ant-select-show-arrow .ant-select-selector{padding-right:24px}.ant-select-multiple .ant-select-selection-item{position:relative;display:flex;flex:none;box-sizing:border-box;max-width:100%;height:24px;margin-top:2px;margin-right:4px;margin-bottom:2px;padding:0 4px 0 8px;line-height:22px;background:#f5f5f5;border:1px solid #f0f0f0;border-radius:2px;cursor:default;transition:font-size .3s,line-height .3s,height .3s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-select-disabled.ant-select-multiple .ant-select-selection-item{color:#bfbfbf;border-color:#d9d9d9;cursor:not-allowed}.ant-select-multiple .ant-select-selection-item-content{display:inline-block;margin-right:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ant-select-multiple .ant-select-selection-item-remove{color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:rgba(0,0,0,.45);font-weight:700;line-height:inherit;cursor:pointer;display:inline-block;font-size:12px;font-size:10px\9;transform:scale(.83333333) rotate(0deg)}.ant-select-multiple .ant-select-selection-item-remove>*{line-height:1}.ant-select-multiple .ant-select-selection-item-remove svg{display:inline-block}.ant-select-multiple .ant-select-selection-item-remove:before{display:none}.ant-select-multiple .ant-select-selection-item-remove .ant-select-multiple .ant-select-selection-item-remove-icon{display:block}:root .ant-select-multiple .ant-select-selection-item-remove{font-size:12px}.ant-select-multiple .ant-select-selection-item-remove>.anticon{vertical-align:-.2em}.ant-select-multiple .ant-select-selection-item-remove:hover{color:rgba(0,0,0,.75)}.ant-select-multiple .ant-select-selection-search{position:relative;margin-left:.5px}.ant-select-multiple .ant-select-selection-search-input,.ant-select-multiple .ant-select-selection-search-mirror{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5715;transition:all .3s}.ant-select-multiple .ant-select-selection-search-input{width:100%;min-width:4.1px}.ant-select-multiple .ant-select-selection-search-mirror{position:absolute;top:0;left:0;z-index:999;white-space:nowrap;visibility:hidden}.ant-select-multiple .ant-select-selection-search:first-child .ant-select-selection-search-input{margin-left:6.5px}.ant-select-multiple .ant-select-selection-placeholder{position:absolute;top:50%;right:11px;left:11px;transform:translateY(-50%);transition:all .3s}.ant-select-multiple.ant-select-lg .ant-select-selector:after{line-height:32px}.ant-select-multiple.ant-select-lg .ant-select-selection-item{line-height:30px}.ant-select-multiple.ant-select-lg .ant-select-selection-search{height:33px;line-height:33px}.ant-select-multiple.ant-select-lg .ant-select-selection-search-input,.ant-select-multiple.ant-select-lg .ant-select-selection-search-mirror{height:32px;line-height:30px}.ant-select-multiple.ant-select-sm .ant-select-selector:after{line-height:16px}.ant-select-multiple.ant-select-sm .ant-select-selection-item{height:16px;line-height:14px}.ant-select-multiple.ant-select-sm .ant-select-selection-search{height:17px;line-height:17px}.ant-select-multiple.ant-select-sm .ant-select-selection-search-input,.ant-select-multiple.ant-select-sm .ant-select-selection-search-mirror{height:16px;line-height:14px}.ant-select-multiple.ant-select-sm .ant-select-selection-placeholder{left:7px}.ant-select-multiple.ant-select-sm .ant-select-selection-search:first-child .ant-select-selection-search-input{margin-left:3px}.ant-select-multiple.ant-select-lg .ant-select-selection-item{height:32px;line-height:32px}.ant-select-disabled .ant-select-selection-item-remove{display:none}.ant-select{box-sizing:border-box;margin:0;padding:0;color:#41464b;font-size:13px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";position:relative;display:inline-block;cursor:pointer}.ant-select:not(.ant-select-disabled):hover .ant-select-selector{border-color:#de6949;border-right-width:1px!important}.ant-select-selection-item{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}@media (-ms-high-contrast:none){.ant-select-selection-item,.ant-select-selection-item ::-ms-backdrop{flex:auto}}.ant-select-selection-placeholder{flex:1;overflow:hidden;color:#bfbfbf;white-space:nowrap;text-overflow:ellipsis}@media (-ms-high-contrast:none){.ant-select-selection-placeholder,.ant-select-selection-placeholder ::-ms-backdrop{flex:auto}}.ant-select-arrow{display:inline-block;color:inherit;font-style:normal;line-height:0;text-transform:none;vertical-align:-.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;top:53%;right:11px;width:12px;height:12px;margin-top:-6px;color:rgba(0,0,0,.25);font-size:12px;line-height:1;text-align:center;pointer-events:none}.ant-select-arrow>*{line-height:1}.ant-select-arrow svg{display:inline-block}.ant-select-arrow:before{display:none}.ant-select-arrow .ant-select-arrow-icon{display:block}.ant-select-arrow .anticon{vertical-align:top;transition:transform .3s}.ant-select-arrow .anticon>svg{vertical-align:top}.ant-select-arrow .anticon:not(.ant-select-suffix){pointer-events:auto}.ant-select-disabled .ant-select-arrow{cursor:not-allowed}.ant-select-clear{position:absolute;top:50%;right:11px;z-index:1;display:inline-block;width:12px;height:12px;margin-top:-6px;color:rgba(0,0,0,.25);font-size:12px;font-style:normal;line-height:1;text-align:center;text-transform:none;background:#fff;cursor:pointer;opacity:0;transition:color .3s ease,opacity .15s ease;text-rendering:auto}.ant-select-clear:before{display:block}.ant-select-clear:hover{color:rgba(0,0,0,.45)}.ant-select:hover .ant-select-clear{opacity:1}.ant-select-dropdown{margin:0;padding:0;color:#41464b;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";position:absolute;top:-9999px;left:-9999px;z-index:1050;box-sizing:border-box;padding:4px 0;overflow:hidden;font-size:13px;font-variant:normal;background-color:#fff;border-radius:2px;outline:none;box-shadow:0 2px 8px rgba(0,0,0,.15)}.ant-select-dropdown.slide-up-appear.slide-up-appear-active.ant-select-dropdown-placement-bottomLeft,.ant-select-dropdown.slide-up-enter.slide-up-enter-active.ant-select-dropdown-placement-bottomLeft{-webkit-animation-name:antSlideUpIn;animation-name:antSlideUpIn}.ant-select-dropdown.slide-up-appear.slide-up-appear-active.ant-select-dropdown-placement-topLeft,.ant-select-dropdown.slide-up-enter.slide-up-enter-active.ant-select-dropdown-placement-topLeft{-webkit-animation-name:antSlideDownIn;animation-name:antSlideDownIn}.ant-select-dropdown.slide-up-leave.slide-up-leave-active.ant-select-dropdown-placement-bottomLeft{-webkit-animation-name:antSlideUpOut;animation-name:antSlideUpOut}.ant-select-dropdown.slide-up-leave.slide-up-leave-active.ant-select-dropdown-placement-topLeft{-webkit-animation-name:antSlideDownOut;animation-name:antSlideDownOut}.ant-select-dropdown-hidden{display:none}.ant-select-dropdown-empty{color:rgba(0,0,0,.25)}.ant-select-item-empty{color:#41464b;color:rgba(0,0,0,.25)}.ant-select-item,.ant-select-item-empty{position:relative;display:block;min-height:32px;padding:5px 12px;font-weight:400;font-size:13px;line-height:22px}.ant-select-item{color:#41464b;cursor:pointer;transition:background .3s ease}.ant-select-item-group{color:rgba(0,0,0,.45);font-size:12px;cursor:default}.ant-select-item-option{display:flex}.ant-select-item-option-content{flex:auto;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ant-select-item-option-state{flex:none}.ant-select-item-option-active:not(.ant-select-item-option-disabled){background-color:#f5f5f5}.ant-select-item-option-selected:not(.ant-select-item-option-disabled){color:#41464b;font-weight:600;background-color:#fff5f0}.ant-select-item-option-selected:not(.ant-select-item-option-disabled) .ant-select-item-option-state{color:#d14424}.ant-select-item-option-disabled{color:rgba(0,0,0,.25);cursor:not-allowed}.ant-select-item-option-grouped{padding-left:24px}.ant-select-lg{font-size:15px}.ant-select-borderless .ant-select-selector{background-color:transparent!important;border-color:transparent!important;box-shadow:none!important}.ant-select-rtl{direction:rtl}.ant-select-rtl .ant-select-arrow,.ant-select-rtl .ant-select-clear{right:auto;left:11px}.ant-select-dropdown-rtl{direction:rtl}.ant-select-dropdown-rtl .ant-select-item-option-grouped{padding-right:24px;padding-left:12px}.ant-select-rtl.ant-select-multiple.ant-select-allow-clear .ant-select-selector,.ant-select-rtl.ant-select-multiple.ant-select-show-arrow .ant-select-selector{padding-right:4px;padding-left:24px}.ant-select-rtl.ant-select-multiple .ant-select-selection-item{margin-right:0;margin-left:4px;padding:0 8px 0 4px;text-align:right}.ant-select-rtl.ant-select-multiple .ant-select-selection-item-content{margin-right:0;margin-left:4px;text-align:right}.ant-select-rtl.ant-select-multiple .ant-select-selection-search{margin-right:.5px;margin-left:4px}.ant-select-rtl.ant-select-multiple .ant-select-selection-search-mirror{right:0;left:auto}.ant-select-rtl.ant-select-multiple .ant-select-selection-placeholder{right:11px;left:auto}.ant-select-rtl.ant-select-multiple.ant-select-sm .ant-select-selection-placeholder{right:7px}.ant-select-rtl.ant-select-single .ant-select-selector .ant-select-selection-item,.ant-select-rtl.ant-select-single .ant-select-selector .ant-select-selection-placeholder{right:0;left:9px;text-align:right}.ant-select-rtl.ant-select-single.ant-select-show-arrow .ant-select-selection-search{right:11px;left:24px}.ant-select-rtl.ant-select-single.ant-select-show-arrow .ant-select-selection-item,.ant-select-rtl.ant-select-single.ant-select-show-arrow .ant-select-selection-placeholder{padding-right:0;padding-left:17px}.ant-select-rtl.ant-select-single:not(.ant-select-customize-input) .ant-select-selector{padding:0 11px}.ant-select-rtl.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-search{right:0}.ant-select-rtl.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-item,.ant-select-rtl.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-placeholder{padding-right:0;padding-left:19.5px}.ant-empty{margin:0 8px;font-size:13px;line-height:22px;text-align:center}.ant-empty-image{height:100px;margin-bottom:8px}.ant-empty-image img{height:100%}.ant-empty-image svg{height:100%;margin:auto}.ant-empty-description{margin:0}.ant-empty-footer{margin-top:16px}.ant-empty-normal{margin:32px 0;color:rgba(0,0,0,.25)}.ant-empty-normal .ant-empty-image{height:40px}.ant-empty-small{margin:8px 0;color:rgba(0,0,0,.25)}.ant-empty-small .ant-empty-image{height:35px}.ant-empty-img-default-ellipse{fill-opacity:.8;fill:#f5f5f5}.ant-empty-img-default-path-1{fill:#aeb8c2}.ant-empty-img-default-path-2{fill:url(#linearGradient-1)}.ant-empty-img-default-path-3{fill:#f5f5f7}.ant-empty-img-default-path-4,.ant-empty-img-default-path-5{fill:#dce0e6}.ant-empty-img-default-g{fill:#fff}.ant-empty-img-simple-ellipse{fill:#f5f5f5}.ant-empty-img-simple-g{stroke:#d9d9d9}.ant-empty-img-simple-path{fill:#fafafa}.ant-slider{box-sizing:border-box;margin:0;padding:0;color:#41464b;font-size:13px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";position:relative;height:12px;margin:14px 6px 10px;padding:4px 0;cursor:pointer;touch-action:none}.ant-slider-vertical{width:12px;height:100%;margin:6px 10px;padding:0 4px}.ant-slider-vertical .ant-slider-rail{width:4px;height:100%}.ant-slider-vertical .ant-slider-track{width:4px}.ant-slider-vertical .ant-slider-handle{margin-top:-6px;margin-left:-5px}.ant-slider-vertical .ant-slider-mark{top:0;left:12px;width:18px;height:100%}.ant-slider-vertical .ant-slider-mark-text{left:4px;white-space:nowrap}.ant-slider-vertical .ant-slider-step{width:4px;height:100%}.ant-slider-vertical .ant-slider-dot{top:auto;left:2px;margin-bottom:-4px}.ant-slider-tooltip .ant-tooltip-inner{min-width:unset}.ant-slider-with-marks{margin-bottom:28px}.ant-slider-rail{width:100%;background-color:#f5f5f5}.ant-slider-rail,.ant-slider-track{position:absolute;height:4px;border-radius:2px;transition:background-color .3s}.ant-slider-track{background-color:#f7b9a1}.ant-slider-handle{position:absolute;width:14px;height:14px;margin-top:-5px;background-color:#fff;border:2px solid #f7b9a1;border-radius:50%;box-shadow:0;cursor:pointer;transition:border-color .3s,box-shadow .6s,transform .3s cubic-bezier(.18,.89,.32,1.28)}.ant-slider-handle:focus{border-color:#da6950;outline:none;box-shadow:0 0 0 5px rgba(209,68,36,.2)}.ant-slider-handle.ant-tooltip-open{border-color:#d14424}.ant-slider:hover .ant-slider-rail{background-color:#e1e1e1}.ant-slider:hover .ant-slider-track{background-color:#eb9173}.ant-slider:hover .ant-slider-handle:not(.ant-tooltip-open){border-color:#eb9173}.ant-slider-mark{position:absolute;top:14px;left:0;width:100%;font-size:13px}.ant-slider-mark-text{position:absolute;display:inline-block;color:rgba(0,0,0,.45);text-align:center;word-break:keep-all;cursor:pointer}.ant-slider-mark-text-active{color:#41464b}.ant-slider-step{position:absolute;width:100%;height:4px;background:transparent}.ant-slider-dot{position:absolute;top:-2px;width:8px;height:8px;background-color:#fff;border:2px solid #f0f0f0;border-radius:50%;cursor:pointer}.ant-slider-dot,.ant-slider-dot:first-child,.ant-slider-dot:last-child{margin-left:-4px}.ant-slider-dot-active{border-color:#e8a292}.ant-slider-disabled{cursor:not-allowed}.ant-slider-disabled .ant-slider-track{background-color:rgba(0,0,0,.25)!important}.ant-slider-disabled .ant-slider-dot,.ant-slider-disabled .ant-slider-handle{background-color:#fff;border-color:rgba(0,0,0,.25)!important;box-shadow:none;cursor:not-allowed}.ant-slider-disabled .ant-slider-dot,.ant-slider-disabled .ant-slider-mark-text{cursor:not-allowed!important}.ant-popover{box-sizing:border-box;margin:0;padding:0;color:#41464b;font-size:13px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";position:absolute;top:0;left:0;z-index:1030;font-weight:400;white-space:normal;text-align:left;cursor:auto;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ant-popover:after{position:absolute;background:hsla(0,0%,100%,.01);content:""}.ant-popover-hidden{display:none}.ant-popover-placement-top,.ant-popover-placement-topLeft,.ant-popover-placement-topRight{padding-bottom:10px}.ant-popover-placement-right,.ant-popover-placement-rightBottom,.ant-popover-placement-rightTop{padding-left:10px}.ant-popover-placement-bottom,.ant-popover-placement-bottomLeft,.ant-popover-placement-bottomRight{padding-top:10px}.ant-popover-placement-left,.ant-popover-placement-leftBottom,.ant-popover-placement-leftTop{padding-right:10px}.ant-popover-inner{background-color:#fff;background-clip:padding-box;border-radius:2px;box-shadow:0 2px 8px rgba(0,0,0,.15);box-shadow:0 0 8px rgba(0,0,0,.15)\9}@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active){.ant-popover-inner{box-shadow:0 2px 8px rgba(0,0,0,.15)}}.ant-popover-title{min-width:177px;min-height:32px;margin:0;padding:5px 16px 4px;color:rgba(0,0,0,.85);font-weight:500;border-bottom:1px solid #f0f0f0}.ant-popover-inner-content{padding:12px 16px;color:#41464b}.ant-popover-message{position:relative;padding:4px 0 12px;color:#41464b;font-size:13px}.ant-popover-message>.anticon{position:absolute;top:8px;color:#faad14;font-size:13px}.ant-popover-message-title{padding-left:21px}.ant-popover-buttons{margin-bottom:4px;text-align:right}.ant-popover-buttons button{margin-left:8px}.ant-popover-arrow{position:absolute;display:block;width:8.48528137px;height:8.48528137px;background:transparent;border-style:solid;border-width:4.24264069px;transform:rotate(45deg)}.ant-popover-placement-top>.ant-popover-content>.ant-popover-arrow,.ant-popover-placement-topLeft>.ant-popover-content>.ant-popover-arrow,.ant-popover-placement-topRight>.ant-popover-content>.ant-popover-arrow{bottom:6.2px;border-top-color:transparent;border-right-color:#fff;border-bottom-color:#fff;border-left-color:transparent;box-shadow:3px 3px 7px rgba(0,0,0,.07)}.ant-popover-placement-top>.ant-popover-content>.ant-popover-arrow{left:50%;transform:translateX(-50%) rotate(45deg)}.ant-popover-placement-topLeft>.ant-popover-content>.ant-popover-arrow{left:16px}.ant-popover-placement-topRight>.ant-popover-content>.ant-popover-arrow{right:16px}.ant-popover-placement-right>.ant-popover-content>.ant-popover-arrow,.ant-popover-placement-rightBottom>.ant-popover-content>.ant-popover-arrow,.ant-popover-placement-rightTop>.ant-popover-content>.ant-popover-arrow{left:6px;border-top-color:transparent;border-right-color:transparent;border-bottom-color:#fff;border-left-color:#fff;box-shadow:-3px 3px 7px rgba(0,0,0,.07)}.ant-popover-placement-right>.ant-popover-content>.ant-popover-arrow{top:50%;transform:translateY(-50%) rotate(45deg)}.ant-popover-placement-rightTop>.ant-popover-content>.ant-popover-arrow{top:12px}.ant-popover-placement-rightBottom>.ant-popover-content>.ant-popover-arrow{bottom:12px}.ant-popover-placement-bottom>.ant-popover-content>.ant-popover-arrow,.ant-popover-placement-bottomLeft>.ant-popover-content>.ant-popover-arrow,.ant-popover-placement-bottomRight>.ant-popover-content>.ant-popover-arrow{top:6px;border-top-color:#fff;border-right-color:transparent;border-bottom-color:transparent;border-left-color:#fff;box-shadow:-2px -2px 5px rgba(0,0,0,.06)}.ant-popover-placement-bottom>.ant-popover-content>.ant-popover-arrow{left:50%;transform:translateX(-50%) rotate(45deg)}.ant-popover-placement-bottomLeft>.ant-popover-content>.ant-popover-arrow{left:16px}.ant-popover-placement-bottomRight>.ant-popover-content>.ant-popover-arrow{right:16px}.ant-popover-placement-left>.ant-popover-content>.ant-popover-arrow,.ant-popover-placement-leftBottom>.ant-popover-content>.ant-popover-arrow,.ant-popover-placement-leftTop>.ant-popover-content>.ant-popover-arrow{right:6px;border-top-color:#fff;border-right-color:#fff;border-bottom-color:transparent;border-left-color:transparent;box-shadow:3px -3px 7px rgba(0,0,0,.07)}.ant-popover-placement-left>.ant-popover-content>.ant-popover-arrow{top:50%;transform:translateY(-50%) rotate(45deg)}.ant-popover-placement-leftTop>.ant-popover-content>.ant-popover-arrow{top:12px}.ant-popover-placement-leftBottom>.ant-popover-content>.ant-popover-arrow{bottom:12px}.ant-divider{box-sizing:border-box;margin:0;padding:0;color:#41464b;font-size:13px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";background:#f0f0f0}.ant-divider,.ant-divider-vertical{position:relative;top:-.06em;display:inline-block;width:1px;height:.9em;margin:0 8px;vertical-align:middle}.ant-divider-horizontal{display:block;clear:both;width:100%;min-width:100%;height:1px;margin:24px 0}.ant-divider-horizontal.ant-divider-with-text-center,.ant-divider-horizontal.ant-divider-with-text-left,.ant-divider-horizontal.ant-divider-with-text-right{display:table;margin:16px 0;color:rgba(0,0,0,.85);font-weight:500;font-size:15px;white-space:nowrap;text-align:center;background:transparent}.ant-divider-horizontal.ant-divider-with-text-center:after,.ant-divider-horizontal.ant-divider-with-text-center:before,.ant-divider-horizontal.ant-divider-with-text-left:after,.ant-divider-horizontal.ant-divider-with-text-left:before,.ant-divider-horizontal.ant-divider-with-text-right:after,.ant-divider-horizontal.ant-divider-with-text-right:before{position:relative;top:50%;display:table-cell;width:50%;border-top:1px solid #f0f0f0;transform:translateY(50%);content:""}.ant-divider-horizontal.ant-divider-with-text-left .ant-divider-inner-text,.ant-divider-horizontal.ant-divider-with-text-right .ant-divider-inner-text{display:inline-block;padding:0 10px}.ant-divider-horizontal.ant-divider-with-text-left:before{top:50%;width:5%}.ant-divider-horizontal.ant-divider-with-text-left:after,.ant-divider-horizontal.ant-divider-with-text-right:before{top:50%;width:95%}.ant-divider-horizontal.ant-divider-with-text-right:after{top:50%;width:5%}.ant-divider-inner-text{display:inline-block;padding:0 1em}.ant-divider-dashed{background:none;border-color:rgba(0,0,0,.06);border-style:dashed;border-width:1px 0 0}.ant-divider-horizontal.ant-divider-with-text-center.ant-divider-dashed,.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-dashed,.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-dashed{border-top:0}.ant-divider-horizontal.ant-divider-with-text-center.ant-divider-dashed:after,.ant-divider-horizontal.ant-divider-with-text-center.ant-divider-dashed:before,.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-dashed:after,.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-dashed:before,.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-dashed:after,.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-dashed:before{border-style:dashed none none}.ant-divider-vertical.ant-divider-dashed{border-width:0 0 0 1px}.ant-input-number{box-sizing:border-box;font-variant:tabular-nums;list-style:none;font-feature-settings:"tnum";position:relative;width:100%;padding:4px 11px;color:#41464b;font-size:13px;line-height:1.5715;background-color:#fff;background-image:none;transition:all .3s;display:inline-block;width:90px;margin:0;padding:0;border:1px solid #d9d9d9;border-radius:2px}.ant-input-number::-moz-placeholder{color:#bfbfbf;opacity:1}.ant-input-number:-ms-input-placeholder{color:#bfbfbf}.ant-input-number::-webkit-input-placeholder{color:#bfbfbf}.ant-input-number:-moz-placeholder-shown{text-overflow:ellipsis}.ant-input-number:-ms-input-placeholder{text-overflow:ellipsis}.ant-input-number:placeholder-shown{text-overflow:ellipsis}.ant-input-number:focus{border-color:#de6949;border-right-width:1px!important;outline:0;box-shadow:0 0 0 2px rgba(209,68,36,.2)}.ant-input-number[disabled]{color:rgba(0,0,0,.25);background-color:#f5f5f5;cursor:not-allowed;opacity:1}.ant-input-number[disabled]:hover{border-color:#d9d9d9;border-right-width:1px!important}textarea.ant-input-number{max-width:100%;height:auto;min-height:32px;line-height:1.5715;vertical-align:bottom;transition:all .3s,height 0s}.ant-input-number-lg{padding:6.5px 11px}.ant-input-number-sm{padding:0 7px}.ant-input-number-handler{position:relative;display:block;width:100%;height:50%;overflow:hidden;color:rgba(0,0,0,.45);font-weight:700;line-height:0;text-align:center;transition:all .1s linear}.ant-input-number-handler:active{background:#f4f4f4}.ant-input-number-handler:hover .ant-input-number-handler-down-inner,.ant-input-number-handler:hover .ant-input-number-handler-up-inner{color:#de6949}.ant-input-number-handler-down-inner,.ant-input-number-handler-up-inner{display:inline-block;color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;right:4px;width:12px;height:12px;color:rgba(0,0,0,.45);line-height:12px;transition:all .1s linear;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-input-number-handler-down-inner>*,.ant-input-number-handler-up-inner>*{line-height:1}.ant-input-number-handler-down-inner svg,.ant-input-number-handler-up-inner svg{display:inline-block}.ant-input-number-handler-down-inner:before,.ant-input-number-handler-up-inner:before{display:none}.ant-input-number-handler-down-inner .ant-input-number-handler-down-inner-icon,.ant-input-number-handler-down-inner .ant-input-number-handler-up-inner-icon,.ant-input-number-handler-up-inner .ant-input-number-handler-down-inner-icon,.ant-input-number-handler-up-inner .ant-input-number-handler-up-inner-icon{display:block}.ant-input-number-focused,.ant-input-number:hover{border-color:#de6949;border-right-width:1px!important}.ant-input-number-focused{outline:0;box-shadow:0 0 0 2px rgba(209,68,36,.2)}.ant-input-number-disabled{color:rgba(0,0,0,.25);background-color:#f5f5f5;cursor:not-allowed;opacity:1}.ant-input-number-disabled:hover{border-color:#d9d9d9;border-right-width:1px!important}.ant-input-number-disabled .ant-input-number-input{cursor:not-allowed}.ant-input-number-disabled .ant-input-number-handler-wrap{display:none}.ant-input-number-input{width:100%;height:30px;padding:0 11px;text-align:left;background-color:transparent;border:0;border-radius:2px;outline:0;transition:all .3s linear;-moz-appearance:textfield!important}.ant-input-number-input::-moz-placeholder{color:#bfbfbf;opacity:1}.ant-input-number-input:-ms-input-placeholder{color:#bfbfbf}.ant-input-number-input::-webkit-input-placeholder{color:#bfbfbf}.ant-input-number-input:-moz-placeholder-shown{text-overflow:ellipsis}.ant-input-number-input:-ms-input-placeholder{text-overflow:ellipsis}.ant-input-number-input:placeholder-shown{text-overflow:ellipsis}.ant-input-number-input[type=number]::-webkit-inner-spin-button,.ant-input-number-input[type=number]::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}.ant-input-number-lg{padding:0;font-size:15px}.ant-input-number-lg input{height:38px}.ant-input-number-sm{padding:0}.ant-input-number-sm input{height:22px;padding:0 7px}.ant-input-number-handler-wrap{position:absolute;top:0;right:0;width:22px;height:100%;background:#fff;border-left:1px solid #d9d9d9;border-radius:0 2px 2px 0;opacity:0;transition:opacity .24s linear .1s}.ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-down-inner,.ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-up-inner{display:inline-block;font-size:12px;font-size:7px\9;transform:scale(.58333333) rotate(0deg);min-width:auto;margin-right:0}:root .ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-down-inner,:root .ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-up-inner{font-size:12px}.ant-input-number-handler-wrap:hover .ant-input-number-handler{height:40%}.ant-input-number:hover .ant-input-number-handler-wrap{opacity:1}.ant-input-number-handler-up{border-top-right-radius:2px;cursor:pointer}.ant-input-number-handler-up-inner{top:50%;margin-top:-5px;text-align:center}.ant-input-number-handler-up:hover{height:60%!important}.ant-input-number-handler-down{top:0;border-top:1px solid #d9d9d9;border-bottom-right-radius:2px;cursor:pointer}.ant-input-number-handler-down-inner{top:50%;margin-top:-6px;text-align:center}.ant-input-number-handler-down:hover{height:60%!important}.ant-input-number-handler-down-disabled,.ant-input-number-handler-up-disabled{cursor:not-allowed}.ant-input-number-handler-down-disabled:hover .ant-input-number-handler-down-inner,.ant-input-number-handler-up-disabled:hover .ant-input-number-handler-up-inner{color:rgba(0,0,0,.25)}.ant-message{box-sizing:border-box;margin:0;padding:0;color:#41464b;font-size:13px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";position:fixed;top:16px;left:0;z-index:1010;width:100%;pointer-events:none}.ant-message-notice{padding:8px;text-align:center}.ant-message-notice:first-child{margin-top:-8px}.ant-message-notice-content{display:inline-block;padding:10px 16px;background:#fff;border-radius:2px;box-shadow:0 4px 12px rgba(0,0,0,.15);pointer-events:all}.ant-message-success .anticon{color:#52c41a}.ant-message-error .anticon{color:#ff4d4f}.ant-message-warning .anticon{color:#faad14}.ant-message-info .anticon,.ant-message-loading .anticon{color:#d14424}.ant-message .anticon{position:relative;top:1px;margin-right:8px;font-size:15px}.ant-message-notice.move-up-leave.move-up-leave-active{overflow:hidden;-webkit-animation-name:MessageMoveOut;animation-name:MessageMoveOut;-webkit-animation-duration:.3s;animation-duration:.3s}@-webkit-keyframes MessageMoveOut{0%{max-height:150px;padding:8px;opacity:1}to{max-height:0;padding:0;opacity:0}}@keyframes MessageMoveOut{0%{max-height:150px;padding:8px;opacity:1}to{max-height:0;padding:0;opacity:0}}.ct-label{fill:rgba(0,0,0,.4);color:rgba(0,0,0,.4);font-size:.75rem;line-height:1}.ct-chart-bar .ct-label,.ct-chart-line .ct-label{display:block;display:flex}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{dominant-baseline:central}.ct-label.ct-horizontal.ct-start{align-items:flex-end;justify-content:flex-start;text-align:left;text-anchor:start}.ct-label.ct-horizontal.ct-end{align-items:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-label.ct-vertical.ct-start{align-items:flex-end;justify-content:flex-end;text-align:right;text-anchor:end}.ct-label.ct-vertical.ct-end{align-items:flex-end;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar .ct-label.ct-horizontal.ct-start{align-items:flex-end;justify-content:center;text-align:center;text-anchor:start}.ct-chart-bar .ct-label.ct-horizontal.ct-end{align-items:flex-start;justify-content:center;text-align:center;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-start{align-items:flex-end;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-end{align-items:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-start{align-items:center;justify-content:flex-end;text-align:right;text-anchor:end}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-end{align-items:center;justify-content:flex-start;text-align:left;text-anchor:end}.ct-grid{stroke:rgba(0,0,0,.2);stroke-width:1px;stroke-dasharray:2px}.ct-grid-background{fill:none}.ct-point{stroke-width:10px;stroke-linecap:round}.ct-line{fill:none;stroke-width:4px}.ct-area{stroke:none;fill-opacity:.1}.ct-bar{fill:none;stroke-width:10px}.ct-slice-donut{fill:none;stroke-width:60px}.ct-series-a .ct-bar,.ct-series-a .ct-line,.ct-series-a .ct-point,.ct-series-a .ct-slice-donut{stroke:#d70206}.ct-series-a .ct-area,.ct-series-a .ct-slice-donut-solid,.ct-series-a .ct-slice-pie{fill:#d70206}.ct-series-b .ct-bar,.ct-series-b .ct-line,.ct-series-b .ct-point,.ct-series-b .ct-slice-donut{stroke:#f05b4f}.ct-series-b .ct-area,.ct-series-b .ct-slice-donut-solid,.ct-series-b .ct-slice-pie{fill:#f05b4f}.ct-series-c .ct-bar,.ct-series-c .ct-line,.ct-series-c .ct-point,.ct-series-c .ct-slice-donut{stroke:#f4c63d}.ct-series-c .ct-area,.ct-series-c .ct-slice-donut-solid,.ct-series-c .ct-slice-pie{fill:#f4c63d}.ct-series-d .ct-bar,.ct-series-d .ct-line,.ct-series-d .ct-point,.ct-series-d .ct-slice-donut{stroke:#d17905}.ct-series-d .ct-area,.ct-series-d .ct-slice-donut-solid,.ct-series-d .ct-slice-pie{fill:#d17905}.ct-series-e .ct-bar,.ct-series-e .ct-line,.ct-series-e .ct-point,.ct-series-e .ct-slice-donut{stroke:#453d3f}.ct-series-e .ct-area,.ct-series-e .ct-slice-donut-solid,.ct-series-e .ct-slice-pie{fill:#453d3f}.ct-series-f .ct-bar,.ct-series-f .ct-line,.ct-series-f .ct-point,.ct-series-f .ct-slice-donut{stroke:#59922b}.ct-series-f .ct-area,.ct-series-f .ct-slice-donut-solid,.ct-series-f .ct-slice-pie{fill:#59922b}.ct-series-g .ct-bar,.ct-series-g .ct-line,.ct-series-g .ct-point,.ct-series-g .ct-slice-donut{stroke:#0544d3}.ct-series-g .ct-area,.ct-series-g .ct-slice-donut-solid,.ct-series-g .ct-slice-pie{fill:#0544d3}.ct-series-h .ct-bar,.ct-series-h .ct-line,.ct-series-h .ct-point,.ct-series-h .ct-slice-donut{stroke:#6b0392}.ct-series-h .ct-area,.ct-series-h .ct-slice-donut-solid,.ct-series-h .ct-slice-pie{fill:#6b0392}.ct-series-i .ct-bar,.ct-series-i .ct-line,.ct-series-i .ct-point,.ct-series-i .ct-slice-donut{stroke:#f05b4f}.ct-series-i .ct-area,.ct-series-i .ct-slice-donut-solid,.ct-series-i .ct-slice-pie{fill:#f05b4f}.ct-series-j .ct-bar,.ct-series-j .ct-line,.ct-series-j .ct-point,.ct-series-j .ct-slice-donut{stroke:#dda458}.ct-series-j .ct-area,.ct-series-j .ct-slice-donut-solid,.ct-series-j .ct-slice-pie{fill:#dda458}.ct-series-k .ct-bar,.ct-series-k .ct-line,.ct-series-k .ct-point,.ct-series-k .ct-slice-donut{stroke:#eacf7d}.ct-series-k .ct-area,.ct-series-k .ct-slice-donut-solid,.ct-series-k .ct-slice-pie{fill:#eacf7d}.ct-series-l .ct-bar,.ct-series-l .ct-line,.ct-series-l .ct-point,.ct-series-l .ct-slice-donut{stroke:#86797d}.ct-series-l .ct-area,.ct-series-l .ct-slice-donut-solid,.ct-series-l .ct-slice-pie{fill:#86797d}.ct-series-m .ct-bar,.ct-series-m .ct-line,.ct-series-m .ct-point,.ct-series-m .ct-slice-donut{stroke:#b2c326}.ct-series-m .ct-area,.ct-series-m .ct-slice-donut-solid,.ct-series-m .ct-slice-pie{fill:#b2c326}.ct-series-n .ct-bar,.ct-series-n .ct-line,.ct-series-n .ct-point,.ct-series-n .ct-slice-donut{stroke:#6188e2}.ct-series-n .ct-area,.ct-series-n .ct-slice-donut-solid,.ct-series-n .ct-slice-pie{fill:#6188e2}.ct-series-o .ct-bar,.ct-series-o .ct-line,.ct-series-o .ct-point,.ct-series-o .ct-slice-donut{stroke:#a748ca}.ct-series-o .ct-area,.ct-series-o .ct-slice-donut-solid,.ct-series-o .ct-slice-pie{fill:#a748ca}.ct-square{display:block;position:relative;width:100%}.ct-square:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:100%}.ct-square:after{content:"";display:table;clear:both}.ct-square>svg{display:block;position:absolute;top:0;left:0}.ct-minor-second{display:block;position:relative;width:100%}.ct-minor-second:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:93.75%}.ct-minor-second:after{content:"";display:table;clear:both}.ct-minor-second>svg{display:block;position:absolute;top:0;left:0}.ct-major-second{display:block;position:relative;width:100%}.ct-major-second:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:88.8888888889%}.ct-major-second:after{content:"";display:table;clear:both}.ct-major-second>svg{display:block;position:absolute;top:0;left:0}.ct-minor-third{display:block;position:relative;width:100%}.ct-minor-third:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:83.3333333333%}.ct-minor-third:after{content:"";display:table;clear:both}.ct-minor-third>svg{display:block;position:absolute;top:0;left:0}.ct-major-third{display:block;position:relative;width:100%}.ct-major-third:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:80%}.ct-major-third:after{content:"";display:table;clear:both}.ct-major-third>svg{display:block;position:absolute;top:0;left:0}.ct-perfect-fourth{display:block;position:relative;width:100%}.ct-perfect-fourth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:75%}.ct-perfect-fourth:after{content:"";display:table;clear:both}.ct-perfect-fourth>svg{display:block;position:absolute;top:0;left:0}.ct-perfect-fifth{display:block;position:relative;width:100%}.ct-perfect-fifth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:66.6666666667%}.ct-perfect-fifth:after{content:"";display:table;clear:both}.ct-perfect-fifth>svg{display:block;position:absolute;top:0;left:0}.ct-minor-sixth{display:block;position:relative;width:100%}.ct-minor-sixth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:62.5%}.ct-minor-sixth:after{content:"";display:table;clear:both}.ct-minor-sixth>svg{display:block;position:absolute;top:0;left:0}.ct-golden-section{display:block;position:relative;width:100%}.ct-golden-section:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:61.804697157%}.ct-golden-section:after{content:"";display:table;clear:both}.ct-golden-section>svg{display:block;position:absolute;top:0;left:0}.ct-major-sixth{display:block;position:relative;width:100%}.ct-major-sixth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:60%}.ct-major-sixth:after{content:"";display:table;clear:both}.ct-major-sixth>svg{display:block;position:absolute;top:0;left:0}.ct-minor-seventh{display:block;position:relative;width:100%}.ct-minor-seventh:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:56.25%}.ct-minor-seventh:after{content:"";display:table;clear:both}.ct-minor-seventh>svg{display:block;position:absolute;top:0;left:0}.ct-major-seventh{display:block;position:relative;width:100%}.ct-major-seventh:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:53.3333333333%}.ct-major-seventh:after{content:"";display:table;clear:both}.ct-major-seventh>svg{display:block;position:absolute;top:0;left:0}.ct-octave{display:block;position:relative;width:100%}.ct-octave:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:50%}.ct-octave:after{content:"";display:table;clear:both}.ct-octave>svg{display:block;position:absolute;top:0;left:0}.ct-major-tenth{display:block;position:relative;width:100%}.ct-major-tenth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:40%}.ct-major-tenth:after{content:"";display:table;clear:both}.ct-major-tenth>svg{display:block;position:absolute;top:0;left:0}.ct-major-eleventh{display:block;position:relative;width:100%}.ct-major-eleventh:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:37.5%}.ct-major-eleventh:after{content:"";display:table;clear:both}.ct-major-eleventh>svg{display:block;position:absolute;top:0;left:0}.ct-major-twelfth{display:block;position:relative;width:100%}.ct-major-twelfth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:33.3333333333%}.ct-major-twelfth:after{content:"";display:table;clear:both}.ct-major-twelfth>svg{display:block;position:absolute;top:0;left:0}.ct-double-octave{display:block;position:relative;width:100%}.ct-double-octave:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:25%}.ct-double-octave:after{content:"";display:table;clear:both}.ct-double-octave>svg{display:block;position:absolute;top:0;left:0}.i-icon{display:inline-block;color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.i-icon-spin svg{-webkit-animation:i-icon-spin 1s linear infinite;animation:i-icon-spin 1s linear infinite}.i-icon-rtl{transform:scaleX(-1)}@keyframes i-icon-spin{to{transform:rotate(1turn)}}@-webkit-keyframes i-icon-spin{to{transform:rotate(1turn)}}.ProseMirror{position:relative;word-wrap:break-word;white-space:pre-wrap;white-space:break-spaces;font-variant-ligatures:none;font-feature-settings:"liga" 0}.ProseMirror pre{white-space:pre-wrap}.ProseMirror li{position:relative}.ProseMirror-hideselection ::selection{background:transparent}.ProseMirror-hideselection ::-moz-selection{background:transparent}.ProseMirror-hideselection{caret-color:transparent}.ProseMirror-selectednode{outline:2px solid #8cf}li.ProseMirror-selectednode{outline:none}li.ProseMirror-selectednode:after{content:"";position:absolute;left:-32px;right:-2px;top:-2px;bottom:-2px;border:2px solid #8cf;pointer-events:none}/*!
- * animate.css - https://animate.style/
- * Version - 4.1.1
- * Licensed under the MIT license - http://opensource.org/licenses/MIT
- *
- * Copyright (c) 2020 Animate.css
- */:root{--animate-duration:1s;--animate-delay:1s;--animate-repeat:1}.animate__animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-duration:var(--animate-duration);animation-duration:var(--animate-duration);-webkit-animation-fill-mode:both;animation-fill-mode:both}.animate__animated.animate__infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animate__animated.animate__repeat-1{-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-iteration-count:var(--animate-repeat);animation-iteration-count:var(--animate-repeat)}.animate__animated.animate__repeat-2{-webkit-animation-iteration-count:2;animation-iteration-count:2;-webkit-animation-iteration-count:calc(var(--animate-repeat)*2);animation-iteration-count:calc(var(--animate-repeat)*2)}.animate__animated.animate__repeat-3{-webkit-animation-iteration-count:3;animation-iteration-count:3;-webkit-animation-iteration-count:calc(var(--animate-repeat)*3);animation-iteration-count:calc(var(--animate-repeat)*3)}.animate__animated.animate__delay-1s{-webkit-animation-delay:1s;animation-delay:1s;-webkit-animation-delay:var(--animate-delay);animation-delay:var(--animate-delay)}.animate__animated.animate__delay-2s{-webkit-animation-delay:2s;animation-delay:2s;-webkit-animation-delay:calc(var(--animate-delay)*2);animation-delay:calc(var(--animate-delay)*2)}.animate__animated.animate__delay-3s{-webkit-animation-delay:3s;animation-delay:3s;-webkit-animation-delay:calc(var(--animate-delay)*3);animation-delay:calc(var(--animate-delay)*3)}.animate__animated.animate__delay-4s{-webkit-animation-delay:4s;animation-delay:4s;-webkit-animation-delay:calc(var(--animate-delay)*4);animation-delay:calc(var(--animate-delay)*4)}.animate__animated.animate__delay-5s{-webkit-animation-delay:5s;animation-delay:5s;-webkit-animation-delay:calc(var(--animate-delay)*5);animation-delay:calc(var(--animate-delay)*5)}.animate__animated.animate__faster{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-duration:calc(var(--animate-duration)/2);animation-duration:calc(var(--animate-duration)/2)}.animate__animated.animate__fast{-webkit-animation-duration:.8s;animation-duration:.8s;-webkit-animation-duration:calc(var(--animate-duration)*0.8);animation-duration:calc(var(--animate-duration)*0.8)}.animate__animated.animate__slow{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-duration:calc(var(--animate-duration)*2);animation-duration:calc(var(--animate-duration)*2)}.animate__animated.animate__slower{-webkit-animation-duration:3s;animation-duration:3s;-webkit-animation-duration:calc(var(--animate-duration)*3);animation-duration:calc(var(--animate-duration)*3)}@media (prefers-reduced-motion:reduce),print{.animate__animated{-webkit-animation-duration:1ms!important;animation-duration:1ms!important;-webkit-transition-duration:1ms!important;transition-duration:1ms!important;-webkit-animation-iteration-count:1!important;animation-iteration-count:1!important}.animate__animated[class*=Out]{opacity:0}}@-webkit-keyframes bounce{0%,20%,53%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0) scaleY(1.1);transform:translate3d(0,-30px,0) scaleY(1.1)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0) scaleY(1.05);transform:translate3d(0,-15px,0) scaleY(1.05)}80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0) scaleY(.95);transform:translateZ(0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-4px,0) scaleY(1.02);transform:translate3d(0,-4px,0) scaleY(1.02)}}@keyframes bounce{0%,20%,53%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0) scaleY(1.1);transform:translate3d(0,-30px,0) scaleY(1.1)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0) scaleY(1.05);transform:translate3d(0,-15px,0) scaleY(1.05)}80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0) scaleY(.95);transform:translateZ(0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-4px,0) scaleY(1.02);transform:translate3d(0,-4px,0) scaleY(1.02)}}.animate__bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}.animate__flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__pulse{-webkit-animation-name:pulse;animation-name:pulse;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shakeX{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shakeX{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.animate__shakeX{-webkit-animation-name:shakeX;animation-name:shakeX}@-webkit-keyframes shakeY{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}20%,40%,60%,80%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}}@keyframes shakeY{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}20%,40%,60%,80%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}}.animate__shakeY{-webkit-animation-name:shakeY;animation-name:shakeY}@-webkit-keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}.animate__headShake{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-name:headShake;animation-name:headShake}@-webkit-keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}.animate__swing{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}@keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.animate__jello{-webkit-animation-name:jello;animation-name:jello;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}.animate__heartBeat{-webkit-animation-name:heartBeat;animation-name:heartBeat;-webkit-animation-duration:1.3s;animation-duration:1.3s;-webkit-animation-duration:calc(var(--animate-duration)*1.3);animation-duration:calc(var(--animate-duration)*1.3);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes backInDown{0%{-webkit-transform:translateY(-1200px) scale(.7);transform:translateY(-1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInDown{0%{-webkit-transform:translateY(-1200px) scale(.7);transform:translateY(-1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInDown{-webkit-animation-name:backInDown;animation-name:backInDown}@-webkit-keyframes backInLeft{0%{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInLeft{0%{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInLeft{-webkit-animation-name:backInLeft;animation-name:backInLeft}@-webkit-keyframes backInRight{0%{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInRight{0%{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInRight{-webkit-animation-name:backInRight;animation-name:backInRight}@-webkit-keyframes backInUp{0%{-webkit-transform:translateY(1200px) scale(.7);transform:translateY(1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInUp{0%{-webkit-transform:translateY(1200px) scale(.7);transform:translateY(1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInUp{-webkit-animation-name:backInUp;animation-name:backInUp}@-webkit-keyframes backOutDown{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(700px) scale(.7);transform:translateY(700px) scale(.7);opacity:.7}}@keyframes backOutDown{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(700px) scale(.7);transform:translateY(700px) scale(.7);opacity:.7}}.animate__backOutDown{-webkit-animation-name:backOutDown;animation-name:backOutDown}@-webkit-keyframes backOutLeft{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}}@keyframes backOutLeft{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}}.animate__backOutLeft{-webkit-animation-name:backOutLeft;animation-name:backOutLeft}@-webkit-keyframes backOutRight{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}}@keyframes backOutRight{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}}.animate__backOutRight{-webkit-animation-name:backOutRight;animation-name:backOutRight}@-webkit-keyframes backOutUp{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(-700px) scale(.7);transform:translateY(-700px) scale(.7);opacity:.7}}@keyframes backOutUp{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(-700px) scale(.7);transform:translateY(-700px) scale(.7);opacity:.7}}.animate__backOutUp{-webkit-animation-name:backOutUp;animation-name:backOutUp}@-webkit-keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__bounceIn{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0) scaleY(3);transform:translate3d(0,-3000px,0) scaleY(3)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0) scaleY(.9);transform:translate3d(0,25px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,-10px,0) scaleY(.95);transform:translate3d(0,-10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,5px,0) scaleY(.985);transform:translate3d(0,5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0) scaleY(3);transform:translate3d(0,-3000px,0) scaleY(3)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0) scaleY(.9);transform:translate3d(0,25px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,-10px,0) scaleY(.95);transform:translate3d(0,-10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,5px,0) scaleY(.985);transform:translate3d(0,5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0) scaleX(3);transform:translate3d(-3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0) scaleX(1);transform:translate3d(25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(-10px,0,0) scaleX(.98);transform:translate3d(-10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(5px,0,0) scaleX(.995);transform:translate3d(5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0) scaleX(3);transform:translate3d(-3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0) scaleX(1);transform:translate3d(25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(-10px,0,0) scaleX(.98);transform:translate3d(-10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(5px,0,0) scaleX(.995);transform:translate3d(5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0) scaleX(3);transform:translate3d(3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0) scaleX(1);transform:translate3d(-25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(10px,0,0) scaleX(.98);transform:translate3d(10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(-5px,0,0) scaleX(.995);transform:translate3d(-5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0) scaleX(3);transform:translate3d(3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0) scaleX(1);transform:translate3d(-25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(10px,0,0) scaleX(.98);transform:translate3d(10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(-5px,0,0) scaleX(.995);transform:translate3d(-5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0) scaleY(5);transform:translate3d(0,3000px,0) scaleY(5)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,10px,0) scaleY(.95);transform:translate3d(0,10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-5px,0) scaleY(.985);transform:translate3d(0,-5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0) scaleY(5);transform:translate3d(0,3000px,0) scaleY(5)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,10px,0) scaleY(.95);transform:translate3d(0,10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-5px,0) scaleY(.985);transform:translate3d(0,-5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.animate__bounceOut{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0) scaleY(.985);transform:translate3d(0,10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0) scaleY(3);transform:translate3d(0,2000px,0) scaleY(3)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0) scaleY(.985);transform:translate3d(0,10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0) scaleY(3);transform:translate3d(0,2000px,0) scaleY(3)}}.animate__bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0) scaleX(.9);transform:translate3d(20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0) scaleX(2);transform:translate3d(-2000px,0,0) scaleX(2)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0) scaleX(.9);transform:translate3d(20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0) scaleX(2);transform:translate3d(-2000px,0,0) scaleX(2)}}.animate__bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0) scaleX(.9);transform:translate3d(-20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0) scaleX(2);transform:translate3d(2000px,0,0) scaleX(2)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0) scaleX(.9);transform:translate3d(-20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0) scaleX(2);transform:translate3d(2000px,0,0) scaleX(2)}}.animate__bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0) scaleY(.985);transform:translate3d(0,-10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0) scaleY(.9);transform:translate3d(0,20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0) scaleY(3);transform:translate3d(0,-2000px,0) scaleY(3)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0) scaleY(.985);transform:translate3d(0,-10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0) scaleY(.9);transform:translate3d(0,20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0) scaleY(3);transform:translate3d(0,-2000px,0) scaleY(3)}}.animate__bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate__fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeInTopLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInTopLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInTopLeft{-webkit-animation-name:fadeInTopLeft;animation-name:fadeInTopLeft}@-webkit-keyframes fadeInTopRight{0%{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInTopRight{0%{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInTopRight{-webkit-animation-name:fadeInTopRight;animation-name:fadeInTopRight}@-webkit-keyframes fadeInBottomLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInBottomLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInBottomLeft{-webkit-animation-name:fadeInBottomLeft;animation-name:fadeInBottomLeft}@-webkit-keyframes fadeInBottomRight{0%{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInBottomRight{0%{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInBottomRight{-webkit-animation-name:fadeInBottomRight;animation-name:fadeInBottomRight}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.animate__fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.animate__fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.animate__fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.animate__fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.animate__fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.animate__fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.animate__fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.animate__fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.animate__fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes fadeOutTopLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}}@keyframes fadeOutTopLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}}.animate__fadeOutTopLeft{-webkit-animation-name:fadeOutTopLeft;animation-name:fadeOutTopLeft}@-webkit-keyframes fadeOutTopRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}}@keyframes fadeOutTopRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}}.animate__fadeOutTopRight{-webkit-animation-name:fadeOutTopRight;animation-name:fadeOutTopRight}@-webkit-keyframes fadeOutBottomRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}}@keyframes fadeOutBottomRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}}.animate__fadeOutBottomRight{-webkit-animation-name:fadeOutBottomRight;animation-name:fadeOutBottomRight}@-webkit-keyframes fadeOutBottomLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}}@keyframes fadeOutBottomLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}}.animate__fadeOutBottomLeft{-webkit-animation-name:fadeOutBottomLeft;animation-name:fadeOutBottomLeft}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animate__animated.animate__flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.animate__flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.animate__flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}.animate__flipOutX{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}.animate__flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedInRight{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes lightSpeedInRight{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__lightSpeedInRight{-webkit-animation-name:lightSpeedInRight;animation-name:lightSpeedInRight;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedInLeft{0%{-webkit-transform:translate3d(-100%,0,0) skewX(30deg);transform:translate3d(-100%,0,0) skewX(30deg);opacity:0}60%{-webkit-transform:skewX(-20deg);transform:skewX(-20deg);opacity:1}80%{-webkit-transform:skewX(5deg);transform:skewX(5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes lightSpeedInLeft{0%{-webkit-transform:translate3d(-100%,0,0) skewX(30deg);transform:translate3d(-100%,0,0) skewX(30deg);opacity:0}60%{-webkit-transform:skewX(-20deg);transform:skewX(-20deg);opacity:1}80%{-webkit-transform:skewX(5deg);transform:skewX(5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__lightSpeedInLeft{-webkit-animation-name:lightSpeedInLeft;animation-name:lightSpeedInLeft;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOutRight{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOutRight{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.animate__lightSpeedOutRight{-webkit-animation-name:lightSpeedOutRight;animation-name:lightSpeedOutRight;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes lightSpeedOutLeft{0%{opacity:1}to{-webkit-transform:translate3d(-100%,0,0) skewX(-30deg);transform:translate3d(-100%,0,0) skewX(-30deg);opacity:0}}@keyframes lightSpeedOutLeft{0%{opacity:1}to{-webkit-transform:translate3d(-100%,0,0) skewX(-30deg);transform:translate3d(-100%,0,0) skewX(-30deg);opacity:0}}.animate__lightSpeedOutLeft{-webkit-animation-name:lightSpeedOutLeft;animation-name:lightSpeedOutLeft;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateIn{0%{-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateOut{0%{opacity:1}to{-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}@keyframes rotateOut{0%{opacity:1}to{-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}.animate__rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes rotateOutDownLeft{0%{opacity:1}to{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{opacity:1}to{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}.animate__rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateOutDownRight{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.animate__rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateOutUpLeft{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.animate__rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateOutUpRight{0%{opacity:1}to{-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}@keyframes rotateOutUpRight{0%{opacity:1}to{-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}.animate__rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.animate__hinge{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-duration:calc(var(--animate-duration)*2);animation-duration:calc(var(--animate-duration)*2);-webkit-animation-name:hinge;animation-name:hinge;-webkit-transform-origin:top left;transform-origin:top left}@-webkit-keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.animate__jackInTheBox{-webkit-animation-name:jackInTheBox;animation-name:jackInTheBox}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}@keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}.animate__rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.animate__zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}.animate__zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0)}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0)}}.animate__zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft;-webkit-transform-origin:left center;transform-origin:left center}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0)}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0)}}.animate__zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight;-webkit-transform-origin:right center;transform-origin:right center}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.animate__slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.animate__slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.animate__slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.animate__slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}
\ No newline at end of file
diff --git a/dist/favicon.ico b/dist/favicon.ico
deleted file mode 100644
index 7335c22e..00000000
Binary files a/dist/favicon.ico and /dev/null differ
diff --git a/dist/fonts/仓耳小丸子.676e187a.ttf b/dist/fonts/仓耳小丸子.676e187a.ttf
deleted file mode 100644
index a8786a4d..00000000
Binary files a/dist/fonts/仓耳小丸子.676e187a.ttf and /dev/null differ
diff --git a/dist/fonts/优设标题黑.1726685c.ttf b/dist/fonts/优设标题黑.1726685c.ttf
deleted file mode 100644
index 3729151a..00000000
Binary files a/dist/fonts/优设标题黑.1726685c.ttf and /dev/null differ
diff --git a/dist/fonts/峰广明锐体.8bdb14f7.ttf b/dist/fonts/峰广明锐体.8bdb14f7.ttf
deleted file mode 100644
index 0cd0e2d0..00000000
Binary files a/dist/fonts/峰广明锐体.8bdb14f7.ttf and /dev/null differ
diff --git a/dist/fonts/摄图摩登小方体.de722238.ttf b/dist/fonts/摄图摩登小方体.de722238.ttf
deleted file mode 100644
index cde0e4c9..00000000
Binary files a/dist/fonts/摄图摩登小方体.de722238.ttf and /dev/null differ
diff --git a/dist/fonts/站酷快乐体.0aceab97.ttf b/dist/fonts/站酷快乐体.0aceab97.ttf
deleted file mode 100644
index ba2ad8a7..00000000
Binary files a/dist/fonts/站酷快乐体.0aceab97.ttf and /dev/null differ
diff --git a/dist/fonts/站酷酷黑体.6b4f114c.ttf b/dist/fonts/站酷酷黑体.6b4f114c.ttf
deleted file mode 100644
index 8d2a1d7f..00000000
Binary files a/dist/fonts/站酷酷黑体.6b4f114c.ttf and /dev/null differ
diff --git a/dist/fonts/素材集市康康体.8db9d61f.ttf b/dist/fonts/素材集市康康体.8db9d61f.ttf
deleted file mode 100644
index 6adc515a..00000000
Binary files a/dist/fonts/素材集市康康体.8db9d61f.ttf and /dev/null differ
diff --git a/dist/fonts/联盟起艺卢帅正锐黑体.42cb84f9.ttf b/dist/fonts/联盟起艺卢帅正锐黑体.42cb84f9.ttf
deleted file mode 100644
index 5a530444..00000000
Binary files a/dist/fonts/联盟起艺卢帅正锐黑体.42cb84f9.ttf and /dev/null differ
diff --git a/dist/fonts/谦度手写楷体.7bfb15ee.ttf b/dist/fonts/谦度手写楷体.7bfb15ee.ttf
deleted file mode 100644
index 3b46caa3..00000000
Binary files a/dist/fonts/谦度手写楷体.7bfb15ee.ttf and /dev/null differ
diff --git a/dist/fonts/途牛类圆体.abaea3c4.ttf b/dist/fonts/途牛类圆体.abaea3c4.ttf
deleted file mode 100644
index a411dd42..00000000
Binary files a/dist/fonts/途牛类圆体.abaea3c4.ttf and /dev/null differ
diff --git a/dist/fonts/锐字真言体.1583afec.ttf b/dist/fonts/锐字真言体.1583afec.ttf
deleted file mode 100644
index 7c1e7de6..00000000
Binary files a/dist/fonts/锐字真言体.1583afec.ttf and /dev/null differ
diff --git a/dist/fonts/问藏书房.59a94370.ttf b/dist/fonts/问藏书房.59a94370.ttf
deleted file mode 100644
index b6df44fd..00000000
Binary files a/dist/fonts/问藏书房.59a94370.ttf and /dev/null differ
diff --git a/dist/index.html b/dist/index.html
deleted file mode 100644
index 2486569a..00000000
--- a/dist/index.html
+++ /dev/null
@@ -1 +0,0 @@
-
PPTIST - 在线演示文稿
\ No newline at end of file
diff --git a/dist/js/app.5cfeacff.js b/dist/js/app.5cfeacff.js
deleted file mode 100644
index 14ba895e..00000000
--- a/dist/js/app.5cfeacff.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(function(e){function t(t){for(var o,r,l=t[0],i=t[1],u=t[2],s=0,f=[];sPPTIST"},{type:"text",id:"7stmVP",left:355,top:253.25,width:585,height:56,content:"基于 Vue 3.x + TypeScript 的在线演示文稿应用
"},{type:"line",id:"FnpZs4",left:361,top:238,start:[0,0],end:[549,0],points:["",""],color:"#d14424",style:"solid",width:2}],background:{type:"solid",color:"#ffffff"}}],S={activeElementIdList:[],handleElementId:"",canvasPercentage:90,canvasScale:1,thumbnailsFocus:!1,editorAreaFocus:!1,disableHotkeys:!1,showGridLines:!1,creatingElement:null,availableFonts:[],toolbarState:"slideStyle",theme:{themeColor:"#d14424",fontColor:"#333",fontName:"微软雅黑",backgroundColor:"#fff"},viewportRatio:.5625,slides:I,slideIndex:0,selectedSlidesIndex:[],snapshotCursor:-1,snapshotLength:0,ctrlKeyState:!1,shiftKeyState:!1,screening:!1,clipingImageElementId:""},C=(n("d81d"),n("4de4"),n("caad"),n("2532"),n("7db0"),{currentSlide:function(e){return e.slides[e.slideIndex]||null},currentSlideAnimations:function(e){var t=e.slides[e.slideIndex];if(!t)return null;var n=t.animations;if(!n)return null;var o=t.elements,c=o.map((function(e){return e.id}));return n.filter((function(e){return c.includes(e.elId)}))},activeElementList:function(e){var t=e.slides[e.slideIndex];return t&&t.elements?t.elements.filter((function(t){return e.activeElementIdList.includes(t.id)})):[]},handleElement:function(e){var t=e.slides[e.slideIndex];return t&&t.elements&&t.elements.find((function(t){return e.handleElementId===t.id}))||null},canUndo:function(e){return e.snapshotCursor>0},canRedo:function(e){return e.snapshotCursor=0&&n.snapshotCursor20&&(a.push(c[0]),l--),l>=2&&M.snapshots.update(c[l-2],{index:n.slideIndex}),t.next=14,M.snapshots.bulkDelete(a);case 14:o(y.SET_SNAPSHOT_CURSOR,l-1),o(y.SET_SNAPSHOT_LENGTH,l);case 16:case"end":return t.stop()}}),t)})))()})),Object(N["a"])(T,k.UN_DO,(function(e){return Object(x["a"])(regeneratorRuntime.mark((function t(){var n,o,c,a,r,l,i,u;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(n=e.state,o=e.commit,!(n.snapshotCursor<=0)){t.next=3;break}return t.abrupt("return");case 3:return c=n.snapshotCursor-1,t.next=6,M.snapshots.orderBy("id").toArray();case 6:a=t.sent,r=a[c],l=r.index,i=r.slides,u=l>i.length-1?i.length-1:l,o(y.SET_SLIDES,i),o(y.UPDATE_SLIDE_INDEX,u),o(y.SET_SNAPSHOT_CURSOR,c),o(y.SET_ACTIVE_ELEMENT_ID_LIST,[]);case 14:case"end":return t.stop()}}),t)})))()})),Object(N["a"])(T,k.RE_DO,(function(e){return Object(x["a"])(regeneratorRuntime.mark((function t(){var n,o,c,a,r,l,i,u;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(n=e.state,o=e.commit,!(n.snapshotCursor>=n.snapshotLength-1)){t.next=3;break}return t.abrupt("return");case 3:return c=n.snapshotCursor+1,t.next=6,M.snapshots.orderBy("id").toArray();case 6:a=t.sent,r=a[c],l=r.index,i=r.slides,u=l>i.length-1?i.length-1:l,o(y.SET_SLIDES,i),o(y.UPDATE_SLIDE_INDEX,u),o(y.SET_SNAPSHOT_CURSOR,c),o(y.SET_ACTIVE_ELEMENT_ID_LIST,[]);case 14:case"end":return t.stop()}}),t)})))()})),T),P=n("2909"),R=n("5530"),F=(n("a434"),n("99af"),n("c740"),n("3eea")),H=n.n(F),z=[{label:"Arial",value:"Arial"},{label:"微软雅黑",value:"Microsoft Yahei"},{label:"宋体",value:"SimSun"},{label:"黑体",value:"SimHei"},{label:"楷体",value:"KaiTi"},{label:"新宋体",value:"NSimSun"},{label:"仿宋",value:"FangSong"},{label:"苹方",value:"PingFang SC"},{label:"华文黑体",value:"STHeiti"},{label:"华文楷体",value:"STKaiti"},{label:"华文宋体",value:"STSong"},{label:"华文仿宋",value:"STFangSong"},{label:"华文中宋",value:"STZhongSong"},{label:"华文琥珀",value:"STHupo"},{label:"华文新魏",value:"STXinwei"},{label:"华文隶书",value:"STLiti"},{label:"华文行楷",value:"STXingkai"},{label:"冬青黑体",value:"Hiragino Sans GB"},{label:"兰亭黑",value:"Lantinghei SC"},{label:"偏偏体",value:"Hanzipen SC"},{label:"手札体",value:"Hannotate SC"},{label:"宋体",value:"Songti SC"},{label:"娃娃体",value:"Wawati SC"},{label:"行楷",value:"Xingkai SC"},{label:"圆体",value:"Yuanti SC"},{label:"华文细黑",value:"STXihei"},{label:"幼圆",value:"YouYuan"},{label:"隶书",value:"LiSu"}],U=[{label:"仓耳小丸子",value:"仓耳小丸子"},{label:"优设标题黑",value:"优设标题黑"},{label:"峰广明锐体",value:"峰广明锐体"},{label:"摄图摩登小方体",value:"摄图摩登小方体"},{label:"站酷快乐体",value:"站酷快乐体"},{label:"站酷酷黑体",value:"站酷酷黑体"},{label:"素材集市康康体",value:"素材集市康康体"},{label:"联盟起艺卢帅正锐黑体",value:"联盟起艺卢帅正锐黑体"},{label:"谦度手写楷体",value:"谦度手写楷体"},{label:"途牛类圆体",value:"途牛类圆体"},{label:"锐字真言体",value:"锐字真言体"},{label:"问藏书房",value:"问藏书房"}],G=(n("a15b"),function(e){if("string"!==typeof e)return!1;var t="Arial";if(e.toLowerCase()===t.toLowerCase())return!0;var n=100,o=100,c=100,a="a",r=document.createElement("canvas"),l=r.getContext("2d");if(!l)return!1;r.width=o,r.height=c,l.textAlign="center",l.fillStyle="black",l.textBaseline="middle";var i=function(e){l.clearRect(0,0,o,c),l.font="".concat(n,"px ").concat(e,", ").concat(t),l.fillText(a,o/2,c/2);var r=l.getImageData(0,0,o,c).data;return[].slice.call(r).filter((function(e){return 0!==e}))};return i(t).join("")!==i(e).join("")}),q=(L={},Object(N["a"])(L,y.SET_ACTIVE_ELEMENT_ID_LIST,(function(e,t){1===t.length?e.handleElementId=t[0]:e.handleElementId="",e.activeElementIdList=t})),Object(N["a"])(L,y.SET_HANDLE_ELEMENT_ID,(function(e,t){e.handleElementId=t})),Object(N["a"])(L,y.SET_CANVAS_PERCENTAGE,(function(e,t){e.canvasPercentage=t})),Object(N["a"])(L,y.SET_CANVAS_SCALE,(function(e,t){e.canvasScale=t})),Object(N["a"])(L,y.SET_THUMBNAILS_FOCUS,(function(e,t){e.thumbnailsFocus=t})),Object(N["a"])(L,y.SET_EDITORAREA_FOCUS,(function(e,t){e.editorAreaFocus=t})),Object(N["a"])(L,y.SET_DISABLE_HOTKEYS_STATE,(function(e,t){e.disableHotkeys=t})),Object(N["a"])(L,y.SET_GRID_LINES_STATE,(function(e,t){e.showGridLines=t})),Object(N["a"])(L,y.SET_CREATING_ELEMENT,(function(e,t){e.creatingElement=t})),Object(N["a"])(L,y.SET_AVAILABLE_FONTS,(function(e){e.availableFonts=z.filter((function(e){return G(e.value)}))})),Object(N["a"])(L,y.SET_TOOLBAR_STATE,(function(e,t){e.toolbarState=t})),Object(N["a"])(L,y.SET_CLIPING_IMAGE_ELEMENT_ID,(function(e,t){e.clipingImageElementId=t})),Object(N["a"])(L,y.SET_THEME,(function(e,t){e.theme=Object(R["a"])(Object(R["a"])({},e.theme),t)})),Object(N["a"])(L,y.SET_VIEWPORT_RATIO,(function(e,t){e.viewportRatio=t})),Object(N["a"])(L,y.SET_SLIDES,(function(e,t){e.slides=t})),Object(N["a"])(L,y.ADD_SLIDE,(function(e,t){var n,o=Array.isArray(t)?t:[t],c=e.slideIndex+1;(n=e.slides).splice.apply(n,[c,0].concat(Object(P["a"])(o))),e.slideIndex=c})),Object(N["a"])(L,y.UPDATE_SLIDE,(function(e,t){var n=e.slideIndex;e.slides[n]=Object(R["a"])(Object(R["a"])({},e.slides[n]),t)})),Object(N["a"])(L,y.DELETE_SLIDE,(function(e,t){for(var n=Array.isArray(t)?t:[t],o=[],c=function(t){var c=e.slides.findIndex((function(e){return e.id===n[t]}));o.push(c)},a=0;al&&(r=l),e.slideIndex=r,e.slides=e.slides.filter((function(e){return!n.includes(e.id)}))})),Object(N["a"])(L,y.UPDATE_SLIDE_INDEX,(function(e,t){e.slideIndex=t})),Object(N["a"])(L,y.UPDATE_SELECTED_SLIDES_INDEX,(function(e,t){e.selectedSlidesIndex=t})),Object(N["a"])(L,y.ADD_ELEMENT,(function(e,t){var n=Array.isArray(t)?t:[t],o=e.slides[e.slideIndex].elements,c=[].concat(Object(P["a"])(o),Object(P["a"])(n));e.slides[e.slideIndex].elements=c})),Object(N["a"])(L,y.UPDATE_ELEMENT,(function(e,t){var n=t.id,o=t.props,c="string"===typeof n?[n]:n,a=e.slideIndex,r=e.slides[a],l=r.elements.map((function(e){return c.includes(e.id)?Object(R["a"])(Object(R["a"])({},e),o):e}));e.slides[a].elements=l})),Object(N["a"])(L,y.REMOVE_ELEMENT_PROPS,(function(e,t){var n=t.id,o=t.propName,c="string"===typeof o?[o]:o,a=e.slideIndex,r=e.slides[a],l=r.elements.map((function(e){return e.id===n?H()(e,c):e}));e.slides[a].elements=l})),Object(N["a"])(L,y.SET_SNAPSHOT_CURSOR,(function(e,t){e.snapshotCursor=t})),Object(N["a"])(L,y.SET_SNAPSHOT_LENGTH,(function(e,t){e.snapshotLength=t})),Object(N["a"])(L,y.SET_CTRL_KEY_STATE,(function(e,t){e.ctrlKeyState=t})),Object(N["a"])(L,y.SET_SHIFT_KEY_STATE,(function(e,t){e.shiftKeyState=t})),Object(N["a"])(L,y.SET_SCREENING,(function(e,t){e.screening=t})),L),X=Symbol(),W=Object(E["a"])({state:S,getters:C,mutations:q,actions:A}),Y=function(){return Object(E["b"])(X)},Z=Object(j["withScopeId"])("data-v-55178b6a");Object(j["pushScopeId"])("data-v-55178b6a");var J={class:"pptist-editor"},K={class:"layout-content"},Q={class:"layout-content-center"};Object(j["popScopeId"])();var $,ee,te,ne,oe,ce,ae=Z((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("EditorHeader"),l=Object(j["resolveComponent"])("Thumbnails"),i=Object(j["resolveComponent"])("CanvasTool"),u=Object(j["resolveComponent"])("Canvas"),d=Object(j["resolveComponent"])("Remark"),s=Object(j["resolveComponent"])("Toolbar");return Object(j["openBlock"])(),Object(j["createBlock"])("div",J,[Object(j["createVNode"])(r,{class:"layout-header"}),Object(j["createVNode"])("div",K,[Object(j["createVNode"])(l,{class:"layout-content-left"}),Object(j["createVNode"])("div",Q,[Object(j["createVNode"])(i,{class:"center-top"}),Object(j["createVNode"])(u,{class:"center-body",style:{height:"calc(100% - ".concat(e.remarkHeight+40,"px)")}},null,8,["style"]),Object(j["createVNode"])(d,{class:"center-bottom",height:e.remarkHeight,"onUpdate:height":t[1]||(t[1]=function(t){return e.remarkHeight=t}),style:{height:"".concat(e.remarkHeight,"px")}},null,8,["height","style"])]),Object(j["createVNode"])(s,{class:"layout-content-right"})])])}));(function(e){e["UP"]="up",e["DOWN"]="down",e["TOP"]="top",e["BOTTOM"]="bottom"})($||($={})),function(e){e["TOP"]="top",e["BOTTOM"]="bottom",e["LEFT"]="left",e["RIGHT"]="right",e["VERTICAL"]="vertical",e["HORIZONTAL"]="horizontal",e["CENTER"]="center"}(ee||(ee={})),function(e){e["T"]="top",e["B"]="bottom",e["L"]="left",e["R"]="right"}(te||(te={})),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"}(ne||(ne={})),function(e){e["START"]="start",e["END"]="end",e["MID"]="mid"}(oe||(oe={})),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["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"}(ce||(ce={}));var re=[{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"}]},{type:"幻灯片放映",children:[{label:"开始放映幻灯片",value:"Ctrl + F"},{label:"切换上一页",value:"↑ / ←"},{label:"切换下一页",value:"↓ / → / Enter / Space"},{label:"退出放映",value:"ESC"}]},{type:"幻灯片编辑",children:[{label:"新建幻灯片",value:"Enter"},{label:"缩放画布",value:"Ctrl + 鼠标滚动"},{label:"放大画布",value:"Ctrl + ="},{label:"缩小画布",value:"Ctrl + -"},{label:"缩放画布到合适大小",value:"Ctrl + 0"},{label:"编辑上一页",value:"↑ / ←"},{label:"编辑下一页",value:"↓ / →"}]},{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:"Enter"}]},{type:"表格编辑",children:[{label:"聚焦到下一个单元格",value:"Tab"},{label:"在上方插入一行",value:"Ctrl + ↑"},{label:"在下方插入一行",value:"Ctrl + ↓"},{label:"在左侧插入一列",value:"Ctrl + ←"},{label:"在右侧插入一列",value:"Ctrl + →"}]},{type:"文本编辑",children:[{label:"加粗",value:"Ctrl + B"},{label:"斜体",value:"Ctrl + I"},{label:"下划线",value:"Ctrl + U"},{label:"删除线",value:"Ctrl + D"}]}],le=(n("3b18"),n("f64c")),ie=(n("a630"),n("3ca3"),n("4106")),ue=n.n(ie),de=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:6,t="_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",n=t.length,o="",c=0;cLe?(n=Le,c=n*a):c>Le*o.value&&(c=Le*o.value,n=c/a),r({type:"image",id:de(),src:e,width:n,height:c,left:(Le-n)/2,top:(Le*o.value-c)/2,fixedRatio:!0})}))},i=function(e){r({type:"chart",id:de(),chartType:e,left:300,top:81.25,width:400,height:400,themeColor:t.value,gridColor:n.value,data:{labels:["类别1","类别2","类别3","类别4","类别5"],series:[[12,19,5,2,18]]}})},u=function(e,n){var c=new Array(n).fill({id:de(),colspan:1,rowspan:1,text:""}),a=new Array(e).fill(c),l=100,i=36,u=new Array(n).fill(1/n),d=n*l,s=e*i;r({type:"table",id:de(),width:d,height:s,colWidths:u,data:a,left:(Le-d)/2,top:(Le*o.value-s)/2,outline:{width:2,style:"solid",color:"#eeece1"},theme:{color:t.value,rowHeader:!0,rowFooter:!1,colHeader:!1,colFooter:!1}})},d=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"请输入内容",n=e.left,o=e.top,c=e.width,a=e.height;r({type:"text",id:de(),left:n,top:o,width:c,height:a,content:t})},s=function(e,n){var o=e.left,c=e.top,a=e.width,l=e.height;r({type:"shape",id:de(),left:o,top:c,width:a,height:l,viewBox:n.viewBox,path:n.path,fill:t.value,fixedRatio:!1})},f=function(e,n){var o=e.left,c=e.top,a=e.start,l=e.end,i={type:"line",id:de(),left:o,top:c,start:a,end:l,points:n.points,color:t.value,style:n.style,width:2};n.isBroken&&(i.broken=[(a[0]+l[0])/2,(a[1]+l[1])/2]),n.isCurve&&(i.curve=[(a[0]+l[0])/2,(a[1]+l[1])/2]),r(i)};return{createImageElement:l,createChartElement:i,createTableElement:u,createTextElement:d,createShapeElement:s,createLineElement:f}},Ve=function(){var e=Y(),t=Object(j["computed"])((function(){return e.getters.currentSlide})),n=Ne(),o=n.addHistorySnapshot,c=we(),a=c.createTextElement,r=function(n){var c,a={},r={},l=Object(ke["a"])(n);try{for(l.s();!(c=l.n()).done;){var i=c.value,u=i.groupId;u&&!a[u]&&(a[u]=de()),r[i.id]=de()}}catch(m){l.e(m)}finally{l.f()}var d,s=t.value.elements.map((function(e){return e.id})),f=Object(ke["a"])(n);try{for(f.s();!(d=f.n()).done;){var p=d.value,b=s.includes(p.id);p.id=r[p.id],b&&(p.left=p.left+10,p.top=p.top+10),p.groupId&&(p.groupId=a[p.groupId])}}catch(m){f.e(m)}finally{f.f()}e.commit(y.ADD_ELEMENT,n),e.commit(y.SET_ACTIVE_ELEMENT_ID_LIST,Object.values(r)),o()},l=function(t){var n=t.map((function(e){return Object(R["a"])(Object(R["a"])({},e),{},{id:de(8)})}));e.commit(y.ADD_SLIDE,n),o()},i=function(e){a({left:0,top:0,width:600,height:50},e)},u=function(e,t){var n,o=(null===t||void 0===t?void 0:t.onlySlide)||!1,c=(null===t||void 0===t?void 0:t.onlyElements)||!1;try{n=JSON.parse(ge(e))}catch(s){n=e}if("object"===Object(ye["a"])(n)){var a=n,u=a.type,d=a.data;"elements"!==u||o?"slides"!==u||c||l(d):r(d)}else c||o||i(n)};return{pasteTextClipboardData:u}},_e=function(){var e=Y(),t=Object(j["computed"])((function(){return e.state.slideIndex})),n=Object(j["computed"])((function(){return e.state.theme})),o=Object(j["computed"])((function(){return e.state.slides})),c=Object(j["computed"])((function(){return e.getters.currentSlide})),a=Object(j["computed"])((function(){return[].concat(Object(P["a"])(e.state.selectedSlidesIndex),[t.value])})),r=Object(j["computed"])((function(){return o.value.filter((function(e,t){return a.value.includes(t)}))})),l=Object(j["computed"])((function(){return r.value.map((function(e){return e.id}))})),i=Ve(),u=i.pasteTextClipboardData,d=Ne(),s=d.addHistorySnapshot,f=function(){e.commit(y.UPDATE_SLIDE_INDEX,0),e.commit(y.SET_ACTIVE_ELEMENT_ID_LIST,[]),e.commit(y.SET_SLIDES,[{id:de(8),elements:[]}])},p=function(n){var c=0;n===ce.UP&&t.value>0?c=t.value-1:n===ce.DOWN&&t.value0&&void 0!==arguments[0]?arguments[0]:l.value;o.value.length===t.length?f():e.commit(y.DELETE_SLIDE,t),e.commit(y.UPDATE_SELECTED_SLIDES_INDEX,[]),s()},g=function(){var e=Object(P["a"])(l.value);b(),h(e)},k=function(){var t=Array.from(Array(o.value.length),(function(e,t){return t}));e.commit(y.SET_ACTIVE_ELEMENT_ID_LIST,[]),e.commit(y.UPDATE_SELECTED_SLIDES_INDEX,t)};return{resetSlides:f,updateSlideIndex:p,copySlide:b,pasteSlide:m,createSlide:v,copyAndPasteSlide:O,deleteSlide:h,cutSlide:g,selectAllSlide:k}},Be=function(){var e=Y(),t=Object(j["computed"])((function(){return e.state.activeElementIdList})),n=Object(j["computed"])((function(){return e.getters.currentSlide})),o=Ne(),c=o.addHistorySnapshot,a=function(){var o,a=JSON.parse(JSON.stringify(n.value.elements)),r=Object(ke["a"])(a);try{for(r.s();!(o=r.n()).done;){var l=o.value;t.value.includes(l.id)&&(l.lock=!0)}}catch(i){r.e(i)}finally{r.f()}e.commit(y.UPDATE_SLIDE,{elements:a}),e.commit(y.SET_ACTIVE_ELEMENT_ID_LIST,[]),c()},r=function(t){var o=JSON.parse(JSON.stringify(n.value.elements));if(t.groupId){var a,r=Object(ke["a"])(o);try{for(r.s();!(a=r.n()).done;){var l=a.value;l.groupId===t.groupId&&(l.lock=!1)}}catch(s){r.e(s)}finally{r.f()}return o}var i,u=Object(ke["a"])(o);try{for(u.s();!(i=u.n()).done;){var d=i.value;if(d.id===t.id){d.lock=!1;break}}}catch(s){u.e(s)}finally{u.f()}e.commit(y.UPDATE_SLIDE,{elements:o}),e.commit(y.SET_ACTIVE_ELEMENT_ID_LIST,[t.id]),c()};return{lockElement:a,unlockElement:r}},De=function(){var e=Y(),t=Object(j["computed"])((function(){return e.state.activeElementIdList})),n=Object(j["computed"])((function(){return e.getters.currentSlide})),o=Ne(),c=o.addHistorySnapshot,a=function(){if(t.value.length){var o=n.value.elements.filter((function(e){return!t.value.includes(e.id)}));e.commit(y.SET_ACTIVE_ELEMENT_ID_LIST,[]),e.commit(y.UPDATE_SLIDE,{elements:o}),c()}},r=function(){n.value.elements.length&&(e.commit(y.SET_ACTIVE_ELEMENT_ID_LIST,[]),e.commit(y.UPDATE_SLIDE,{elements:[]}),c())};return{deleteElement:a,deleteAllElements:r}},Me=function(){var e=Y(),t=Object(j["computed"])((function(){return e.state.activeElementIdList})),n=Object(j["computed"])((function(){return e.getters.activeElementList})),o=Object(j["computed"])((function(){return e.getters.currentSlide})),c=Object(j["computed"])((function(){return e.state.handleElementId})),a=Ne(),r=a.addHistorySnapshot,l=function(){var c;if(n.value.length){var a,l=JSON.parse(JSON.stringify(o.value.elements)),i=de(),u=[],d=Object(ke["a"])(l);try{for(d.s();!(a=d.n()).done;){var s=a.value;t.value.includes(s.id)&&(s.groupId=i,u.push(s))}}catch(m){d.e(m)}finally{d.f()}var f=l.findIndex((function(e){return e.id===u[u.length-1].id})),p=u.map((function(e){return e.id}));l=l.filter((function(e){return!p.includes(e.id)}));var b=f-u.length+1;(c=l).splice.apply(c,[b,0].concat(u)),e.commit(y.UPDATE_SLIDE,{elements:l}),r()}},i=function(){if(n.value.length){var a=n.value.some((function(e){return e.groupId}));if(a){var l,i=JSON.parse(JSON.stringify(o.value.elements)),u=Object(ke["a"])(i);try{for(u.s();!(l=u.n()).done;){var d=l.value;t.value.includes(d.id)&&d.groupId&&delete d.groupId}}catch(f){u.e(f)}finally{u.f()}e.commit(y.UPDATE_SLIDE,{elements:i});var s=c.value?[c.value]:[];e.commit(y.SET_ACTIVE_ELEMENT_ID_LIST,s),r()}}};return{combineElements:l,uncombineElements:i}},Ae=function(){var e=Y(),t=Object(j["computed"])((function(){return e.state.activeElementIdList})),n=Object(j["computed"])((function(){return e.getters.activeElementList})),o=Ve(),c=o.pasteTextClipboardData,a=De(),r=a.deleteElement,l=function(){if(t.value.length){var o=je(JSON.stringify({type:"elements",data:n.value}));be(o).then((function(){e.commit(y.SET_EDITORAREA_FOCUS,!0)}))}},i=function(){l(),r()},u=function(){me().then((function(e){c(e)})).catch((function(e){return le["a"].warning(e)}))},d=function(){l(),u()};return{copyElement:l,cutElement:i,pasteElement:u,quickCopyElement:d}},Pe=function(){var e=Y(),t=Object(j["computed"])((function(){return e.getters.currentSlide})),n=function(){var n=t.value.elements.filter((function(e){return!e.lock})),o=n.map((function(e){return e.id}));e.commit(y.SET_ACTIVE_ELEMENT_ID_LIST,o)};return{selectAllElement:n}},Re=function(){var e=Y(),t=Object(j["computed"])((function(){return e.state.activeElementIdList})),n=Object(j["computed"])((function(){return e.getters.currentSlide})),o=Ne(),c=o.addHistorySnapshot,a=function(o){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=n.value.elements.map((function(e){if(t.value.includes(e.id)){var n=e.left,c=e.top;switch(o){case ce.LEFT:n-=a;break;case ce.RIGHT:n+=a;break;case ce.UP:c-=a;break;case ce.DOWN:c+=a;break;default:break}return Object(R["a"])(Object(R["a"])({},e),{},{left:n,top:c})}return e}));e.commit(y.UPDATE_SLIDE,{elements:r}),c()};return{moveElement:a}},Fe=function(){var e=Y(),t=Object(j["computed"])((function(){return e.getters.currentSlide})),n=Ne(),o=n.addHistorySnapshot,c=function(e,t){return{minLevel:e.findIndex((function(e){return e.id===t[0].id})),maxLevel:e.findIndex((function(e){return e.id===t[t.length-1].id}))}},a=function(e,t){var n=JSON.parse(JSON.stringify(e));if(t.groupId){var o=n.filter((function(e){return e.groupId===t.groupId})),a=c(e,o),r=a.minLevel,l=a.maxLevel;if(l===e.length-1)return;var i=n[l+1],u=n.splice(r,o.length);if(i.groupId){var d=n.filter((function(e){return e.groupId===i.groupId}));n.splice.apply(n,[r+d.length,0].concat(Object(P["a"])(u)))}else n.splice.apply(n,[r+1,0].concat(Object(P["a"])(u)))}else{var s=e.findIndex((function(e){return e.id===t.id}));if(s===e.length-1)return;var f=n[s+1],p=n.splice(s,1)[0];if(f.groupId){var b=n.filter((function(e){return e.groupId===f.groupId}));n.splice(s+b.length,0,p)}else n.splice(s+1,0,p)}return n},r=function(e,t){var n=JSON.parse(JSON.stringify(e));if(t.groupId){var o=n.filter((function(e){return e.groupId===t.groupId})),a=c(e,o),r=a.minLevel;if(0===r)return;var l=n[r-1],i=n.splice(r,o.length);if(l.groupId){var u=n.filter((function(e){return e.groupId===l.groupId}));n.splice.apply(n,[r-u.length,0].concat(Object(P["a"])(i)))}else n.splice.apply(n,[r-1,0].concat(Object(P["a"])(i)))}else{var d=e.findIndex((function(e){return e.id===t.id}));if(0===d)return;var s=n[d-1],f=n.splice(d,1)[0];if(s.groupId){var p=n.filter((function(e){return e.groupId===s.groupId}));n.splice(d-p.length,0,f)}else n.splice(d-1,0,f)}return n},l=function(e,t){var n=JSON.parse(JSON.stringify(e));if(t.groupId){var o=n.filter((function(e){return e.groupId===t.groupId})),a=c(e,o),r=a.minLevel,l=a.maxLevel;if(l===e.length-1)return null;var i=n.splice(r,o.length);n.push.apply(n,Object(P["a"])(i))}else{var u=e.findIndex((function(e){return e.id===t.id}));if(u===e.length-1)return null;n.splice(u,1),n.push(t)}return n},i=function(e,t){var n=JSON.parse(JSON.stringify(e));if(t.groupId){var o=n.filter((function(e){return e.groupId===t.groupId})),a=c(e,o),r=a.minLevel;if(0===r)return;var l=n.splice(r,o.length);n.unshift.apply(n,Object(P["a"])(l))}else{var i=e.findIndex((function(e){return e.id===t.id}));if(0===i)return;n.splice(i,1),n.unshift(t)}return n},u=function(n,c){var u;c===$.UP?u=a(t.value.elements,n):c===$.DOWN?u=r(t.value.elements,n):c===$.TOP?u=l(t.value.elements,n):c===$.BOTTOM&&(u=i(t.value.elements,n)),u&&(e.commit(y.UPDATE_SLIDE,{elements:u}),o())};return{orderElement:u}},He=function(){var e=document.documentElement;e.requestFullscreen?e.requestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullScreen&&e.webkitRequestFullScreen()},ze=function(){document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitCancelFullScreen&&document.webkitCancelFullScreen()},Ue=function(){return document.mozFullScreen||document.webkitIsFullScreen||document.webkitFullScreen},Ge=function(){var e=Y(),t=function(){He(),e.commit(y.SET_SCREENING,!0)},n=function(){e.commit(y.UPDATE_SLIDE_INDEX,0),t()},o=function(){e.commit(y.SET_SCREENING,!1),Ue()&&ze()};return{enterScreening:t,enterScreeningFromStart:n,exitScreening:o}},qe=function(){var e=Y(),t=Object(j["computed"])((function(){return e.state.canvasPercentage})),n=function(n){var o=t.value,c=5,a=120,r=60;"+"===n&&o<=a&&(o+=c),"-"===n&&o>=r&&(o-=c),e.commit(y.SET_CANVAS_PERCENTAGE,o)},o=function(t){e.commit(y.SET_CANVAS_PERCENTAGE,t)};return{scaleCanvas:n,setCanvasPercentage:o}},Xe=function(){var e=Y(),t=Object(j["computed"])((function(){return e.state.ctrlKeyState})),n=Object(j["computed"])((function(){return e.state.shiftKeyState})),o=Object(j["computed"])((function(){return e.state.disableHotkeys})),c=Object(j["computed"])((function(){return e.state.activeElementIdList})),a=Object(j["computed"])((function(){return e.getters.handleElement})),r=Object(j["computed"])((function(){return e.state.editorAreaFocus})),l=Object(j["computed"])((function(){return e.state.thumbnailsFocus})),i=_e(),u=i.updateSlideIndex,d=i.copySlide,s=i.createSlide,f=i.deleteSlide,p=i.cutSlide,b=i.copyAndPasteSlide,m=i.selectAllSlide,v=Me(),O=v.combineElements,h=v.uncombineElements,g=De(),k=g.deleteElement,E=Be(),I=E.lockElement,S=Ae(),C=S.copyElement,N=S.cutElement,x=S.quickCopyElement,T=Pe(),L=T.selectAllElement,w=Re(),V=w.moveElement,_=Fe(),B=_.orderElement,D=Ne(),M=D.redo,A=D.undo,P=Ge(),R=P.enterScreening,F=qe(),H=F.scaleCanvas,z=F.setCanvasPercentage,U=function(){c.value.length?C():l.value&&d()},G=function(){c.value.length?N():l.value&&p()},q=function(){c.value.length?x():l.value&&b()},X=function(){r.value&&L(),l.value&&m()},W=function(){r.value&&I()},Z=function(){r.value&&O()},J=function(){r.value&&h()},K=function(){c.value.length?k():l.value&&f()},Q=function(e){c.value.length?V(e):e!==ce.UP&&e!==ce.DOWN||u(e)},ee=function(e){a.value&&B(a.value,e)},te=function(){l.value&&s()},ne=function(c){var a=c.ctrlKey,i=c.shiftKey,u=c.altKey,d=c.metaKey,s=c.key.toUpperCase();if(a&&!t.value&&e.commit(y.SET_CTRL_KEY_STATE,!0),i&&!n.value&&e.commit(y.SET_SHIFT_KEY_STATE,!0),a&&s===ce.F&&(c.preventDefault(),R(),e.commit(y.SET_CTRL_KEY_STATE,!1)),r.value||l.value){if((a||d)&&s===ce.C){if(o.value)return;c.preventDefault(),U()}if(a&&s===ce.X){if(o.value)return;c.preventDefault(),G()}if(a&&s===ce.D){if(o.value)return;c.preventDefault(),q()}if(a&&s===ce.Z){if(o.value)return;c.preventDefault(),A()}if(a&&s===ce.Y){if(o.value)return;c.preventDefault(),M()}if(a&&s===ce.A){if(o.value)return;c.preventDefault(),X()}if(a&&s===ce.L){if(o.value)return;c.preventDefault(),W()}if(!i&&a&&s===ce.G){if(o.value)return;c.preventDefault(),Z()}if(i&&a&&s===ce.G){if(o.value)return;c.preventDefault(),J()}if(u&&s===ce.F){if(o.value)return;c.preventDefault(),ee($.TOP)}if(u&&s===ce.B){if(o.value)return;c.preventDefault(),ee($.BOTTOM)}if(s===ce.DELETE||s===ce.BACKSPACE){if(o.value)return;c.preventDefault(),K()}if(s===ce.UP){if(o.value)return;c.preventDefault(),Q(ce.UP)}if(s===ce.DOWN){if(o.value)return;c.preventDefault(),Q(ce.DOWN)}if(s===ce.LEFT){if(o.value)return;c.preventDefault(),Q(ce.LEFT)}if(s===ce.RIGHT){if(o.value)return;c.preventDefault(),Q(ce.RIGHT)}if(s===ce.ENTER){if(o.value)return;c.preventDefault(),te()}if(s===ce.MINUS){if(o.value)return;c.preventDefault(),H("-")}if(s===ce.EQUAL){if(o.value)return;c.preventDefault(),H("+")}if(s===ce.DIGIT_0){if(o.value)return;c.preventDefault(),z(90)}}},oe=function(){t.value&&e.commit(y.SET_CTRL_KEY_STATE,!1),n.value&&e.commit(y.SET_SHIFT_KEY_STATE,!1)};Object(j["onMounted"])((function(){document.addEventListener("keydown",ne),document.addEventListener("keyup",oe),window.addEventListener("blur",oe)})),Object(j["onUnmounted"])((function(){document.removeEventListener("keydown",ne),document.removeEventListener("keyup",oe),window.removeEventListener("blur",oe)}))},We=function(){var e=Y(),t=Object(j["computed"])((function(){return e.state.editorAreaFocus})),n=Object(j["computed"])((function(){return e.state.thumbnailsFocus})),o=Object(j["computed"])((function(){return e.state.disableHotkeys})),c=Ve(),a=c.pasteTextClipboardData,r=we(),l=r.createImageElement,i=function(e){Te(e).then((function(e){return l(e)}))},u=function(e){if((t.value||n.value)&&!o.value&&e.clipboardData){var c=e.clipboardData.items,r=c[0];if(r){var l,u=Object(ke["a"])(c);try{for(u.s();!(l=u.n()).done;){var d=l.value;if("file"===d.kind&&-1!==d.type.indexOf("image")){var s=d.getAsFile();return void(s&&i(s))}}}catch(f){u.e(f)}finally{u.f()}"string"===r.kind&&"text/plain"===r.type&&r.getAsString((function(e){return a(e)}))}}};Object(j["onMounted"])((function(){document.addEventListener("paste",u)})),Object(j["onUnmounted"])((function(){document.removeEventListener("paste",u)}))},Ye=Object(j["withScopeId"])("data-v-772225af");Object(j["pushScopeId"])("data-v-772225af");var Ze={class:"editor-header"},Je={class:"left"},Ke={class:"menu-item"},Qe=Object(j["createTextVNode"])(),$e=Object(j["createVNode"])("span",{class:"text"},"编辑",-1),et=Object(j["createTextVNode"])("撤销"),tt=Object(j["createTextVNode"])("重做"),nt=Object(j["createTextVNode"])("添加页面"),ot=Object(j["createTextVNode"])("删除页面"),ct=Object(j["createTextVNode"])("重置幻灯片"),at=Object(j["createTextVNode"])("导出为"),rt={class:"menu-item"},lt=Object(j["createTextVNode"])(),it=Object(j["createVNode"])("span",{class:"text"},"演示",-1),ut=Object(j["createTextVNode"])("从头开始"),dt=Object(j["createTextVNode"])("从当前页开始"),st={class:"menu-item"},ft=Object(j["createTextVNode"])(),pt=Object(j["createVNode"])("span",{class:"text"},"帮助",-1),bt=Object(j["createTextVNode"])("开发文档"),mt=Object(j["createTextVNode"])("快捷键"),vt={class:"right"},Ot={href:"https://github.com/pipipi-pikachu/PPTist",target:"_blank"},ht={class:"menu-item"};Object(j["popScopeId"])();var jt=Ye((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconEdit"),l=Object(j["resolveComponent"])("MenuItem"),i=Object(j["resolveComponent"])("Menu"),u=Object(j["resolveComponent"])("Dropdown"),d=Object(j["resolveComponent"])("IconPpt"),s=Object(j["resolveComponent"])("IconHelpcenter"),f=Object(j["resolveComponent"])("Tooltip"),p=Object(j["resolveComponent"])("IconGithub"),b=Object(j["resolveComponent"])("HotkeyDoc"),m=Object(j["resolveComponent"])("Drawer"),v=Object(j["resolveComponent"])("ExportDialog"),O=Object(j["resolveComponent"])("Modal");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Ze,[Object(j["createVNode"])("div",Je,[Object(j["createVNode"])(u,{trigger:["click"]},{overlay:Ye((function(){return[Object(j["createVNode"])(i,null,{default:Ye((function(){return[Object(j["createVNode"])(l,{onClick:t[1]||(t[1]=function(t){return e.undo()})},{default:Ye((function(){return[et]})),_:1}),Object(j["createVNode"])(l,{onClick:t[2]||(t[2]=function(t){return e.redo()})},{default:Ye((function(){return[tt]})),_:1}),Object(j["createVNode"])(l,{onClick:t[3]||(t[3]=function(t){return e.createSlide()})},{default:Ye((function(){return[nt]})),_:1}),Object(j["createVNode"])(l,{onClick:t[4]||(t[4]=function(t){return e.deleteSlide()})},{default:Ye((function(){return[ot]})),_:1}),Object(j["createVNode"])(l,{onClick:t[5]||(t[5]=function(t){return e.toggleGridLines()})},{default:Ye((function(){return[Object(j["createTextVNode"])(Object(j["toDisplayString"])(e.showGridLines?"关闭网格线":"打开网格线"),1)]})),_:1}),Object(j["createVNode"])(l,{onClick:t[6]||(t[6]=function(t){return e.resetSlides()})},{default:Ye((function(){return[ct]})),_:1}),Object(j["createVNode"])(l,{onClick:t[7]||(t[7]=function(t){return e.exportDialogVisible=!0})},{default:Ye((function(){return[at]})),_:1})]})),_:1})]})),default:Ye((function(){return[Object(j["createVNode"])("div",Ke,[Object(j["createVNode"])(r),Qe,$e])]})),_:1}),Object(j["createVNode"])(u,{trigger:["click"]},{overlay:Ye((function(){return[Object(j["createVNode"])(i,null,{default:Ye((function(){return[Object(j["createVNode"])(l,{onClick:t[8]||(t[8]=function(t){return e.enterScreeningFromStart()})},{default:Ye((function(){return[ut]})),_:1}),Object(j["createVNode"])(l,{onClick:t[9]||(t[9]=function(t){return e.enterScreening()})},{default:Ye((function(){return[dt]})),_:1})]})),_:1})]})),default:Ye((function(){return[Object(j["createVNode"])("div",rt,[Object(j["createVNode"])(d),lt,it])]})),_:1}),Object(j["createVNode"])(u,{trigger:["click"]},{overlay:Ye((function(){return[Object(j["createVNode"])(i,null,{default:Ye((function(){return[Object(j["createVNode"])(l,{onClick:t[10]||(t[10]=function(t){return e.openDoc()})},{default:Ye((function(){return[bt]})),_:1}),Object(j["createVNode"])(l,{onClick:t[11]||(t[11]=function(t){return e.hotkeyDrawerVisible=!0})},{default:Ye((function(){return[mt]})),_:1})]})),_:1})]})),default:Ye((function(){return[Object(j["createVNode"])("div",st,[Object(j["createVNode"])(s),ft,pt])]})),_:1})]),Object(j["createVNode"])("div",vt,[Object(j["createVNode"])(f,{mouseLeaveDelay:0,title:"幻灯片放映"},{default:Ye((function(){return[Object(j["createVNode"])("div",{class:"menu-item",onClick:t[12]||(t[12]=function(t){return e.enterScreening()})},[Object(j["createVNode"])(d,{size:"18",fill:"#666",style:{"margin-top":"2px"}})])]})),_:1}),Object(j["createVNode"])("a",Ot,[Object(j["createVNode"])("div",ht,[Object(j["createVNode"])(p,{size:"18",fill:"#666"})])])]),Object(j["createVNode"])(m,{width:"320",placement:"right",visible:e.hotkeyDrawerVisible,onClose:t[13]||(t[13]=function(t){return e.hotkeyDrawerVisible=!1})},{default:Ye((function(){return[Object(j["createVNode"])(b)]})),_:1},8,["visible"]),Object(j["createVNode"])(O,{visible:e.exportDialogVisible,"onUpdate:visible":t[15]||(t[15]=function(t){return e.exportDialogVisible=t}),footer:null,centered:"",closable:!1,width:680,destroyOnClose:""},{default:Ye((function(){return[Object(j["createVNode"])(v,{onClose:t[14]||(t[14]=function(t){return e.exportDialogVisible=!1})})]})),_:1},8,["visible"])])})),gt=Object(j["withScopeId"])("data-v-47d0351b");Object(j["pushScopeId"])("data-v-47d0351b");var yt={class:"hotkey-doc"},kt={class:"title"},Et={class:"label"},It={class:"value"};Object(j["popScopeId"])();var St=gt((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",yt,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.hotkeys,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:e.type},[Object(j["createVNode"])("div",kt,Object(j["toDisplayString"])(e.type),1),(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.children,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"hotkey-item",key:e.label},[Object(j["createVNode"])("div",Et,Object(j["toDisplayString"])(e.label),1),Object(j["createVNode"])("div",It,Object(j["toDisplayString"])(e.value),1)])})),128))],64)})),128))])})),Ct=re,Nt=Object(j["defineComponent"])({name:"hotkey-doc",setup:function(){return{hotkeys:Ct}}});n("ef0f");Nt.render=St,Nt.__scopeId="data-v-47d0351b";var xt=Nt,Tt=Object(j["withScopeId"])("data-v-47e95e66");Object(j["pushScopeId"])("data-v-47e95e66");var Lt={class:"export-dialog"},wt={class:"tabs"},Vt={key:0,class:"content json"},_t={class:"json-preview"},Bt={class:"json-configs"},Dt=Object(j["createTextVNode"])("导出 JSON 文件"),Mt=Object(j["createTextVNode"])("关闭"),At={key:1,class:"content image"},Pt={class:"thumbnails-view"},Rt={class:"thumbnails",ref:"imageThumbnailsRef"},Ft={class:"configs"},Ht=Object(j["createTextVNode"])("导出 PNG 图片"),zt=Object(j["createTextVNode"])("导出 JPEG 图片"),Ut=Object(j["createTextVNode"])("关闭"),Gt={key:0,class:"spinning"},qt=Object(j["createVNode"])("div",{class:"tip"},"正在导出,请稍等...",-1);Object(j["popScopeId"])();var Xt,Wt=Tt((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("Button"),l=Object(j["resolveComponent"])("ThumbnailSlide"),i=Object(j["resolveComponent"])("Spin");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Lt,[Object(j["createVNode"])("div",wt,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.tabs,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["tab",{active:t.value===e.currentTab}],key:t.value,onClick:function(n){return e.currentTab=t.value}},Object(j["toDisplayString"])(t.label),11,["onClick"])})),128))]),"json"===e.currentTab?(Object(j["openBlock"])(),Object(j["createBlock"])("div",Vt,[Object(j["createVNode"])("div",_t,[Object(j["createVNode"])("pre",null,Object(j["toDisplayString"])(e.slides),1)]),Object(j["createVNode"])("div",Bt,[Object(j["createVNode"])(r,{class:"btn",type:"primary",onClick:t[1]||(t[1]=function(t){return e.exportJSON()})},{default:Tt((function(){return[Dt]})),_:1}),Object(j["createVNode"])(r,{class:"btn",onClick:t[2]||(t[2]=function(t){return e.emit("close")})},{default:Tt((function(){return[Mt]})),_:1})])])):Object(j["createCommentVNode"])("",!0),"image"===e.currentTab?(Object(j["openBlock"])(),Object(j["createBlock"])("div",At,[Object(j["createVNode"])("div",Pt,[Object(j["createVNode"])("div",Rt,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.slides,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{class:"thumbnail",key:e.id,slide:e,size:1600},null,8,["slide"])})),128))],512)]),Object(j["createVNode"])("div",Ft,[Object(j["createVNode"])(r,{class:"btn",type:"primary",onClick:t[3]||(t[3]=function(t){return e.exportImage("png")})},{default:Tt((function(){return[Ht]})),_:1}),Object(j["createVNode"])(r,{class:"btn",type:"primary",onClick:t[4]||(t[4]=function(t){return e.exportImage("jpeg")})},{default:Tt((function(){return[zt]})),_:1}),Object(j["createVNode"])(r,{class:"btn",onClick:t[5]||(t[5]=function(t){return e.emit("close")})},{default:Tt((function(){return[Ut]})),_:1})]),e.spinning?(Object(j["openBlock"])(),Object(j["createBlock"])("div",Gt,[Object(j["createVNode"])(i),qt])):Object(j["createCommentVNode"])("",!0)])):Object(j["createCommentVNode"])("",!0)])})),Yt=n("21a6"),Zt=n("e774"),Jt=Object(j["withScopeId"])("data-v-4e59015e"),Kt=Jt((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ThumbnailElement");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"thumbnail-slide",style:{width:e.size+"px",height:e.size*e.viewportRatio+"px"}},[Object(j["createVNode"])("div",{class:"elements",style:{width:e.VIEWPORT_SIZE+"px",height:e.VIEWPORT_SIZE*e.viewportRatio+"px",transform:"scale(".concat(e.scale,")")}},[Object(j["createVNode"])("div",{class:"background",style:e.backgroundStyle},null,4),(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.slide.elements,(function(e,t){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:e.id,elementInfo:e,elementIndex:t+1},null,8,["elementInfo","elementIndex"])})),128))],4)],4)})),Qt=(n("a9e3"),function(e){var t=Object(j["computed"])((function(){if(!e.value)return{backgroundColor:"#fff"};var t=e.value,n=t.type,o=t.color,c=t.image,a=t.imageSize,r=t.gradientColor,l=t.gradientRotate,i=t.gradientType;if("solid"===n)return{backgroundColor:o};if("image"===n)return c?"repeat"===a?{backgroundImage:"url(".concat(c),backgroundRepeat:"repeat",backgroundSize:"initial"}:{backgroundImage:"url(".concat(c),backgroundRepeat:"no-repeat",backgroundSize:a||"cover"}:{backgroundColor:"#fff"};if("gradient"===n){var u=l||0,d=r?r[0]:"#fff",s=r?r[1]:"#fff";return"radial"===i?{backgroundImage:"radial-gradient(".concat(d,", ").concat(s)}:{backgroundImage:"linear-gradient(".concat(u,"deg, ").concat(d,", ").concat(s)}}return{backgroundColor:"#fff"}}));return{backgroundStyle:t}});function $t(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"base-element",style:{zIndex:e.elementIndex,color:e.theme.fontColor,fontFamily:e.theme.fontName}},[(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentElementComponent),{elementInfo:e.elementInfo,target:"thumbnail"},null,8,["elementInfo"]))],4)}(function(e){e["TEXT"]="text",e["IMAGE"]="image",e["SHAPE"]="shape",e["LINE"]="line",e["CHART"]="chart",e["TABLE"]="table"})(Xt||(Xt={}));var en,tn,nn=Object(j["withScopeId"])("data-v-75104890"),on=nn((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ImageOutline");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"base-element-image",style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px",transform:"rotate(".concat(e.elementInfo.rotate,"deg)")}},[Object(j["createVNode"])("div",{class:"rotate-wrapper",style:{transform:"rotate(".concat(e.elementInfo.rotate,"deg)")}},[Object(j["createVNode"])("div",{class:"element-content",style:{filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):"",transform:e.flipStyle}},[Object(j["createVNode"])(r,{elementInfo:e.elementInfo},null,8,["elementInfo"]),Object(j["createVNode"])("div",{class:"image-content",style:{clipPath:e.clipShape.style}},[Object(j["createVNode"])("img",{src:e.elementInfo.src,draggable:!1,style:{top:e.imgPosition.top,left:e.imgPosition.left,width:e.imgPosition.width,height:e.imgPosition.height,filter:e.filter},alt:""},null,12,["src"])],4)],4)],4)],4)})),cn=function(e){var t=Object(j["computed"])((function(){if(e.value){var t=e.value,n=t.h,o=t.v,c=t.blur,a=t.color;return"".concat(n,"px ").concat(o,"px ").concat(c,"px ").concat(a)}return""}));return{shadowStyle:t}},an=function(e){var t=Object(j["computed"])((function(){if(e.value){var t="",n=e.value,o=n.x,c=n.y;return o&&c?t="rotateX(".concat(o,"deg) rotateY(").concat(c,"deg)"):o?t="rotateX(".concat(o,"deg)"):c&&(t="rotateY(".concat(c,"deg)")),t}return""}));return{flipStyle:t}},rn=n("3835");(function(e){e["RECT"]="rect",e["ELLIPSE"]="ellipse",e["POLYGON"]="polygon"})(en||(en={})),function(e){e["RECT"]="rect",e["ROUNDRECT"]="roundRect",e["ELLIPSE"]="ellipse",e["TRIANGLE"]="triangle",e["PENTAGON"]="pentagon",e["RHOMBUS"]="rhombus",e["STAR"]="star"}(tn||(tn={}));var ln={rect:{name:"矩形",type:en.RECT,radius:"0",style:""},rect2:{name:"矩形2",type:en.POLYGON,style:"polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 0 100%)",createPath:function(e,t){return"M 0 0 L ".concat(.8*e," 0 L ").concat(e," ").concat(.2*t," L ").concat(e," ").concat(t," L 0 ").concat(t," Z")}},rect3:{name:"矩形3",type:en.POLYGON,style:"polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 20% 100%, 0% 80%)",createPath:function(e,t){return"M 0 0 L ".concat(.8*e," 0 L ").concat(e," ").concat(.2*t," L ").concat(e," ").concat(t," L ").concat(.2*e," ").concat(t," L 0 ").concat(.8*t," Z")}},roundRect:{name:"圆角矩形",type:en.RECT,radius:"10%",style:"inset(0 0 0 0 round 10% 10% 10% 10%)"},ellipse:{name:"圆形",type:en.ELLIPSE,style:"ellipse(50% 50% at 50% 50%)"},triangle:{name:"三角形",type:en.POLYGON,style:"polygon(50% 0%, 0% 100%, 100% 100%)",createPath:function(e,t){return"M ".concat(.5*e," 0 L 0 ").concat(t," L ").concat(e," ").concat(t," Z")}},triangle2:{name:"三角形2",type:en.POLYGON,style:"polygon(50% 100%, 0% 0%, 100% 0%)",createPath:function(e,t){return"M ".concat(.5*e," ").concat(t," L 0 0 L ").concat(e," 0 Z")}},triangle3:{name:"三角形3",type:en.POLYGON,style:"polygon(0% 0%, 0% 100%, 100% 100%)",createPath:function(e,t){return"M 0 0 L 0 ".concat(t," L ").concat(e," ").concat(t," Z")}},rhombus:{name:"菱形",type:en.POLYGON,style:"polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)",createPath:function(e,t){return"M ".concat(.5*e," 0 L ").concat(e," ").concat(.5*t," L ").concat(.5*e," ").concat(t," L 0 ").concat(.5*t," Z")}},hexagon:{name:"六边形",type:en.POLYGON,style:"polygon(20% 0%, 80% 0%, 100% 50%, 80% 100%, 20% 100%, 0% 50%)",createPath:function(e,t){return"M ".concat(.2*e," 0 L ").concat(.8*e," 0 L ").concat(e," ").concat(.5*t," L ").concat(.8*e," ").concat(t," L ").concat(.2*e," ").concat(t," L 0 ").concat(.5*t," Z")}},pentagon:{name:"五边形",type:en.POLYGON,style:"polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%)",createPath:function(e,t){return"M ".concat(.5*e," 0 L ").concat(e," ").concat(.38*t," L ").concat(.82*e," ").concat(t," L ").concat(.18*e," ").concat(t," L 0 ").concat(.38*t," Z")}},parallelogram:{name:"平行四边形",type:en.POLYGON,style:"polygon(30% 0%, 100% 0%, 70% 100%, 0% 100%)",createPath:function(e,t){return"M ".concat(.3*e," 0 L ").concat(e," 0 L ").concat(.7*e," ").concat(t," L 0 ").concat(t," Z")}},parallelogram2:{name:"平行四边形2",type:en.POLYGON,style:"polygon(30% 100%, 100% 100%, 70% 0%, 0% 0%)",createPath:function(e,t){return"M ".concat(.3*e," ").concat(t," L ").concat(e," ").concat(t," L ").concat(.7*e," 0 L 0 0 Z")}},trapezoid:{name:"梯形",type:en.POLYGON,style:"polygon(25% 0%, 75% 0%, 100% 100%, 0% 100%)",createPath:function(e,t){return"M ".concat(.25*e," 0 L ").concat(.75*e," 0 L ").concat(e," ").concat(t," L 0 ").concat(t," Z")}},trapezoid2:{name:"梯形2",type:en.POLYGON,style:"polygon(0% 0%, 100% 0%, 75% 100%, 25% 100%)",createPath:function(e,t){return"M 0 0 L ".concat(e," 0 L ").concat(.75*e," ").concat(t," L ").concat(.25*e," ").concat(t," Z")}}},un=function(e){var t=Object(j["computed"])((function(){if(!e.value)return ln.rect;var t=e.value.shape||en.RECT;return ln[t]})),n=Object(j["computed"])((function(){if(!e.value)return{top:"0",left:"0",width:"100%",height:"100%"};var t=Object(rn["a"])(e.value.range,2),n=t[0],o=t[1],c=(o[0]-n[0])/100,a=(o[1]-n[1])/100,r=n[0]/c,l=n[1]/a;return{left:-r+"%",top:-l+"%",width:100/c+"%",height:100/a+"%"}}));return{clipShape:t,imgPosition:n}},dn=(n("b64b"),function(e){var t=Object(j["computed"])((function(){if(!e.value)return"";for(var t="",n=0,o=Object.keys(e.value);n1||a.rowspan>1)for(var r=n;r1?(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:0,elementList:e.elementList,scaleMultiElement:e.scaleMultiElement},null,8,["elementList","scaleMultiElement"])):Object(j["createCommentVNode"])("",!0),(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.elementList,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(u,{key:t.id,elementInfo:t,isSelected:e.activeElementIdList.includes(t.id),isActive:e.handleElementId===t.id,isActiveGroupElement:e.activeGroupElementId===t.id,isMultiSelect:e.activeElementIdList.length>1,rotateElement:e.rotateElement,scaleElement:e.scaleElement,dragLineElement:e.dragLineElement},null,8,["elementInfo","isSelected","isActive","isActiveGroupElement","isMultiSelect","rotateElement","scaleElement","dragLineElement"])})),128)),Object(j["createVNode"])(d)]),Object(j["createVNode"])("div",{class:"viewport",ref:"viewportRef",style:{transform:"scale(".concat(e.canvasScale,")")}},[e.mouseSelectionState.isShow?(Object(j["openBlock"])(),Object(j["createBlock"])(s,{key:0,top:e.mouseSelectionState.top,left:e.mouseSelectionState.left,width:e.mouseSelectionState.width,height:e.mouseSelectionState.height,quadrant:e.mouseSelectionState.quadrant},null,8,["top","left","width","height","quadrant"])):Object(j["createCommentVNode"])("",!0),(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.elementList,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])(f,{key:t.id,elementInfo:t,elementIndex:n+1,isMultiSelect:e.activeElementIdList.length>1,selectElement:e.selectElement},null,8,["elementInfo","elementIndex","isMultiSelect","selectElement"])})),128))],4)],4)],544)),[[p,e.contextmenus],[b,e.removeEditorAreaFocus]])})),Vo=function(){var e=window.getSelection();e&&e.removeAllRanges()},_o=function(e){var t=Object(j["ref"])(0),n=Object(j["ref"])(0),o=Y(),c=Object(j["computed"])((function(){return o.state.canvasPercentage})),a=Object(j["computed"])((function(){return o.state.viewportRatio})),r=function(){if(e.value){var r=e.value.clientWidth,l=e.value.clientHeight;if(l/r>a.value){var i=r*(c.value/100);o.commit(y.SET_CANVAS_SCALE,i/Le),t.value=(r-i)/2,n.value=(l-i*a.value)/2}else{var u=l*(c.value/100);o.commit(y.SET_CANVAS_SCALE,u/(Le*a.value)),t.value=(r-u/a.value)/2,n.value=(l-u)/2}}};Object(j["watch"])([c,a],r);var l=Object(j["computed"])((function(){return{width:Le,height:Le*a.value,left:t.value,top:n.value}})),i=new ResizeObserver(r);return Object(j["onMounted"])((function(){e.value&&i.observe(e.value)})),Object(j["onUnmounted"])((function(){e.value&&i.unobserve(e.value)})),{viewportStyles:l}},Bo=(n("159b"),function(e){var t=e.left,n=e.top,o=e.width,c=e.height,a=e.rotate,r=void 0===a?0:a,l=Math.sqrt(Math.pow(o,2)+Math.pow(c,2))/2,i=180*Math.atan(c/o)/Math.PI,u=(180-r-i)*Math.PI/180,d=(i-r)*Math.PI/180,s=t+o/2,f=n+c/2,p=[s+l*Math.cos(u),s+l*Math.cos(d),s-l*Math.cos(u),s-l*Math.cos(d)],b=[f-l*Math.sin(u),f-l*Math.sin(d),f+l*Math.sin(u),f+l*Math.sin(d)];return{xRange:[Math.min.apply(Math,p),Math.max.apply(Math,p)],yRange:[Math.min.apply(Math,b),Math.max.apply(Math,b)]}}),Do=function(e){var t=Bo({left:e.left,top:e.top,width:e.width,height:e.height,rotate:0}),n=t.xRange,o=t.yRange,c=Bo({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),a=c.xRange,r=c.yRange;return{offsetX:a[0]-n[0],offsetY:r[0]-o[0]}},Mo=function(e){var t,n,o,c;if("line"===e.type)t=e.left,n=e.left+Math.max(e.start[0],e.end[0]),o=e.top,c=e.top+Math.max(e.start[1],e.end[1]);else if("rotate"in e&&e.rotate){var a=e.left,r=e.top,l=e.width,i=e.height,u=e.rotate,d=Bo({left:a,top:r,width:l,height:i,rotate:u}),s=d.xRange,f=d.yRange;t=s[0],n=s[1],o=f[0],c=f[1]}else t=e.left,n=e.left+e.width,o=e.top,c=e.top+e.height;return{minX:t,maxX:n,minY:o,maxY:c}},Ao=function(e){var t=[],n=[],o=[],c=[];e.forEach((function(e){var a=Mo(e),r=a.minX,l=a.maxX,i=a.minY,u=a.maxY;t.push(r),n.push(i),o.push(l),c.push(u)}));var a=Math.min.apply(Math,t),r=Math.max.apply(Math,o),l=Math.min.apply(Math,n),i=Math.max.apply(Math,c);return{minX:a,maxX:r,minY:l,maxY:i}},Po=function(e){var t=[];return e.forEach((function(e){var n=t.findIndex((function(t){return t.value===e.value}));if(-1===n)t.push(e);else{var o=t[n],c=Math.min(o.range[0],e.range[0]),a=Math.max(o.range[1],e.range[1]),r=[c,a],l={value:e.value,range:r};t[n]=l}})),t},Ro=function(e,t){var n=Y(),o=Object(j["computed"])((function(){return n.state.canvasScale})),c=Object(j["reactive"])({isShow:!1,top:0,left:0,width:0,height:0,quadrant:1}),a=function(a){if(t.value){var r=!0,l=t.value.getBoundingClientRect(),i=5,u=a.pageX,d=a.pageY,s=(u-l.x)/o.value,f=(d-l.y)/o.value;c.isShow=!1,c.quadrant=4,c.top=f,c.left=s,c.width=0,c.height=0,document.onmousemove=function(e){if(r){var t=e.pageX,n=e.pageY,a=(t-u)/o.value,l=(n-d)/o.value,s=Math.abs(a),f=Math.abs(l);if(!(s0&&l>0?p=4:a<0&&l<0?p=1:a>0&&l<0?p=2:a<0&&l>0&&(p=3),c.isShow=!0,c.quadrant=p,c.width=s,c.height=f}}},document.onmouseup=function(){document.onmousemove=null,document.onmouseup=null,r=!1;for(var t=[],o=0;ol&&bi&&vl-u&&bi-d&&vl&&bi-d&&vl-u&&bi&&v0&&Math.abs(l-45)<=d?l-=l-45:l<0&&Math.abs(l+45)<=d?l-=l+45:l>0&&Math.abs(l-90)<=d?l-=l-90:l<0&&Math.abs(l+90)<=d?l-=l+90:l>0&&Math.abs(l-135)<=d?l-=l-135:l<0&&Math.abs(l+135)<=d?l-=l+135:l>0&&Math.abs(l-180)<=d?l-=l-180:l<0&&Math.abs(l+180)<=d&&(l-=l+180),e.value=e.value.map((function(e){return c.id===e.id?Object(R["a"])(Object(R["a"])({},e),{},{rotate:l}):e}))}},document.onmouseup=function(){r=!1,document.onmousemove=null,document.onmouseup=null,i!==l&&(n.commit(y.UPDATE_SLIDE,{elements:e.value}),a())}}};return{rotateElement:r}},Uo=n("14b7");(function(e){e["UPDATE_TEXT_STATE"]="UPDATE_TEXT_STATE",e["EXEC_TEXT_COMMAND"]="EXEC_TEXT_COMMAND",e["UPDATE_TABLE_SELECTED_CELL"]="UPDATE_TABLE_SELECTED_CELL",e["SCALE_ELEMENT_STATE"]="SCALE_ELEMENT_STATE"})(Lo||(Lo={}));var Go=Object(Uo["a"])(),qo=Go,Xo={text:"文本",image:"图片",shape:"形状",line:"线条",chart:"图表",table:"表格"},Wo={text:20,image:20,shape:15,chart:200,table:20},Yo=function(e,t){var n=e.left,o=e.top,c=e.width,a=e.height,r=Math.sqrt(Math.pow(c,2)+Math.pow(a,2))/2,l=180*Math.atan(a/c)/Math.PI,i=(180-t-l)*Math.PI/180,u=(l-t)*Math.PI/180,d=(90-t)*Math.PI/180,s=t*Math.PI/180,f=c/2,p=a/2,b=n+f,m=o+p,v={left:b+r*Math.cos(i),top:m-r*Math.sin(i)},O={left:b+p*Math.cos(d),top:m-p*Math.sin(d)},h={left:b+r*Math.cos(u),top:m-r*Math.sin(u)},j={left:b+f*Math.cos(s),top:m+f*Math.sin(s)},g={left:b-r*Math.cos(i),top:m+r*Math.sin(i)},y={left:b-p*Math.sin(s),top:m+p*Math.cos(s)},k={left:b-r*Math.cos(u),top:m+r*Math.sin(u)},E={left:b-f*Math.cos(s),top:m-f*Math.sin(s)};return{leftTopPoint:v,topPoint:O,rightTopPoint:h,rightPoint:j,rightBottomPoint:g,bottomPoint:y,leftBottomPoint:k,leftPoint:E}},Zo=function(e,t){var n,o=(n={},Object(N["a"])(n,ne.RIGHT_BOTTOM,t.leftTopPoint),Object(N["a"])(n,ne.LEFT_BOTTOM,t.rightTopPoint),Object(N["a"])(n,ne.LEFT_TOP,t.rightBottomPoint),Object(N["a"])(n,ne.RIGHT_TOP,t.leftBottomPoint),Object(N["a"])(n,ne.TOP,t.bottomPoint),Object(N["a"])(n,ne.BOTTOM,t.topPoint),Object(N["a"])(n,ne.LEFT,t.rightPoint),Object(N["a"])(n,ne.RIGHT,t.leftPoint),n);return o[e]},Jo=function(e,t,n){var o=Y(),c=Object(j["computed"])((function(){return o.state.activeElementIdList})),a=Object(j["computed"])((function(){return o.state.canvasScale})),r=Object(j["computed"])((function(){return o.state.viewportRatio})),l=Object(j["computed"])((function(){return o.getters.ctrlOrShiftKeyActive})),i=Ne(),u=i.addHistorySnapshot,d=function(i,d,s){var f=!0;qo.emit(Lo.SCALE_ELEMENT_STATE,!0);var p,b=d.left,m=d.top,v=d.width,O=d.height,h="rotate"in d&&d.rotate?d.rotate:0,j=Math.PI*h/180,g=l.value||"fixedRatio"in d&&d.fixedRatio,k=v/O,E=i.pageX,I=i.pageY,S=Wo[d.type]||20,C=function(e){return e2&&void 0!==arguments[2])||arguments[2];if(r.value||o.commit(y.SET_EDITORAREA_FOCUS,!0),c.value.includes(u.id)){if(l.value){var s=[];if(u.groupId){var f=[];e.value.forEach((function(e){e.groupId===u.groupId&&f.push(e.id)})),s=c.value.filter((function(e){return!f.includes(e)}))}else s=c.value.filter((function(e){return e!==u.id}));s.length>0&&o.commit(y.SET_ACTIVE_ELEMENT_ID_LIST,s)}else if(a.value!==u.id)o.commit(y.SET_HANDLE_ELEMENT_ID,u.id);else if(t.value!==u.id){var p=i.pageX,b=i.pageY;i.target.onmouseup=function(e){var n=e.pageX,o=e.pageY;p===n&&b===o&&(t.value=u.id,e.target.onmouseup=null)}}}else{var m=[];if(m=l.value?[].concat(Object(P["a"])(c.value),[u.id]):[u.id],u.groupId){var v=[];e.value.forEach((function(e){e.groupId===u.groupId&&v.push(e.id)})),m=[].concat(Object(P["a"])(m),v)}o.commit(y.SET_ACTIVE_ELEMENT_ID_LIST,Qo()(m)),o.commit(y.SET_HANDLE_ELEMENT_ID,u.id)}d&&n(i,u)},u=function(){var t=e.value.filter((function(e){return!e.lock})),n=t.map((function(e){return e.id}));o.commit(y.SET_ACTIVE_ELEMENT_ID_LIST,n)};return{selectElement:i,selectAllElement:u}},ec=function(e,t,n){var o=Y(),c=Object(j["computed"])((function(){return o.state.activeElementIdList})),a=Object(j["computed"])((function(){return o.state.canvasScale})),r=Object(j["computed"])((function(){return o.state.viewportRatio})),l=Ne(),i=l.addHistorySnapshot,u=function(l,u){if(c.value.includes(u.id)){var d,s=!0,f=Le,p=Le*r.value,b=5,m=JSON.parse(JSON.stringify(e.value)),v=m.filter((function(e){return c.value.includes(e.id)})),O=u.left,h=u.top,j=u.width,g="height"in u&&u.height?u.height:0,k="rotate"in u&&u.rotate?u.rotate:0,E=l.pageX,I=l.pageY,S=null,C=u.id===t.value,N=[],x=[],T=Object(ke["a"])(e.value);try{for(T.s();!(d=T.n()).done;){var L=d.value;if("line"!==L.type&&((!C||L.id!==u.id)&&(C||!c.value.includes(L.id)))){var w=void 0,V=void 0,_=void 0,B=void 0;if("rotate"in L&&L.rotate){var D=Bo({left:L.left,top:L.top,width:L.width,height:L.height,rotate:L.rotate}),M=D.xRange,A=D.yRange;w=M[0],V=A[0],_=M[1]-M[0],B=A[1]-A[0]}else w=L.left,V=L.top,_=L.width,B=L.height;var F=w+_,H=V+B,z=V+B/2,U=w+_/2,G={value:V,range:[w,F]},q={value:H,range:[w,F]},X={value:z,range:[w,F]},W={value:w,range:[V,H]},Y={value:F,range:[V,H]},Z={value:U,range:[V,H]};N.push(G,q,X),x.push(W,Y,Z)}}}catch(ne){T.e(ne)}finally{T.f()}var J={value:0,range:[0,f]},K={value:p,range:[0,f]},Q={value:p/2,range:[0,f]},$={value:0,range:[0,p]},ee={value:f,range:[0,p]},te={value:f/2,range:[0,p]};N.push(J,K,Q),x.push($,ee,te),N=Po(N),x=Po(x),document.onmousemove=function(t){var o=t.pageX,r=t.pageY;if(!1!==S&&(S=Math.abs(E-o)v&&(D[0]=_-w,M[0]=0),m>O&&(D[1]=B-V,M[1]=0),e.value=e.value.map((function(e){if(e.id===a.id){var t=Object(R["a"])(Object(R["a"])({},e),{},{left:w,top:V,start:D,end:M});return r!==oe.MID?(a.broken&&(t.broken=[(D[0]+M[0])/2,(D[1]+M[1])/2]),a.curve&&(t.curve=[(D[0]+M[0])/2,(D[1]+M[1])/2])):(a.broken&&(t.broken=[j-w,g-V]),a.curve&&(t.curve=[j-w,g-V])),t}return e}))}},document.onmouseup=function(n){l=!1,document.onmousemove=null,document.onmouseup=null;var o=n.pageX,a=n.pageY;u===o&&d===a||(t.commit(y.UPDATE_SLIDE,{elements:e.value}),c())}};return{dragLineElement:a}},nc=function(e){var t=Y(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return t.state.creatingElement})),c=function(t){var o=t.start,c=t.end;if(e.value){var a=e.value.getBoundingClientRect(),r=Object(rn["a"])(o,2),l=r[0],i=r[1],u=Object(rn["a"])(c,2),d=u[0],s=u[1],f=Math.min(l,d),p=Math.max(l,d),b=Math.min(i,s),m=Math.max(i,s),v=(f-a.x)/n.value,O=(b-a.y)/n.value,h=(p-f)/n.value,j=(m-b)/n.value;return{left:v,top:O,width:h,height:j}}},a=function(t){var o=t.start,c=t.end;if(e.value){var a=e.value.getBoundingClientRect(),r=Object(rn["a"])(o,2),l=r[0],i=r[1],u=Object(rn["a"])(c,2),d=u[0],s=u[1],f=Math.min(l,d),p=Math.max(l,d),b=Math.min(i,s),m=Math.max(i,s),v=(f-a.x)/n.value,O=(b-a.y)/n.value,h=(p-f)/n.value,j=(m-b)/n.value,g=[l===f?0:h,i===b?0:j],y=[d===f?0:h,s===b?0:j];return{left:v,top:O,start:g,end:y}}},r=we(),l=r.createTextElement,i=r.createShapeElement,u=r.createLineElement,d=function(e){if(o.value){var n=o.value.type;if("text"===n){var r=c(e);r&&l(r)}else if("shape"===n){var d=c(e);d&&i(d,o.value.data)}else if("line"===n){var s=a(e);s&&u(s,o.value.data)}t.commit(y.SET_CREATING_ELEMENT,null)}};return{insertElementFromCreateSelection:d}};function oc(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"editable-element",ref:"elementRef",id:"editable-element-".concat(e.elementInfo.id),style:{zIndex:e.elementIndex,color:e.theme.fontColor,fontFamily:e.theme.fontName}},[(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentElementComponent),{elementInfo:e.elementInfo,selectElement:e.selectElement,contextmenus:e.contextmenus},null,8,["elementInfo","selectElement","contextmenus"]))],12,["id"])}var cc=function(){var e=Y(),t=Object(j["computed"])((function(){return e.state.activeElementIdList})),n=Object(j["computed"])((function(){return e.state.viewportRatio})),o=Object(j["computed"])((function(){return e.getters.activeElementList})),c=Object(j["computed"])((function(){return e.getters.currentSlide})),a=Ne(),r=a.addHistorySnapshot,l=function(a){var l,i=Le,u=Le*n.value,d=Ao(o.value),s=d.minX,f=d.maxX,p=d.minY,b=d.maxY,m=JSON.parse(JSON.stringify(c.value.elements)),v=Object(ke["a"])(m);try{for(v.s();!(l=v.n()).done;){var O=l.value;if(t.value.includes(O.id)){if(a===ee.CENTER){var h=p+(b-p)/2-u/2,j=s+(f-s)/2-i/2;O.top=O.top-h,O.left=O.left-j}if(a===ee.TOP){var g=p-0;O.top=O.top-g}else if(a===ee.VERTICAL){var k=p+(b-p)/2-u/2;O.top=O.top-k}else if(a===ee.BOTTOM){var E=b-u;O.top=O.top-E}else if(a===ee.LEFT){var I=s-0;O.left=O.left-I}else if(a===ee.HORIZONTAL){var S=s+(f-s)/2-i/2;O.left=O.left-S}else if(a===ee.RIGHT){var C=f-i;O.left=O.left-C}}}}catch(N){v.e(N)}finally{v.f()}e.commit(y.UPDATE_SLIDE,{elements:m}),r()};return{alignElementToCanvas:l}},ac=Object(j["withScopeId"])("data-v-4aec836a"),rc=ac((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ImageClipHandler"),l=Object(j["resolveComponent"])("ImageOutline"),i=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["editable-element-image",{lock:e.elementInfo.lock}],style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"},onMousedown:t[3]||(t[3]=function(t){return e.handleSelectElement(t)})},[Object(j["createVNode"])("div",{class:"rotate-wrapper",style:{transform:"rotate(".concat(e.elementInfo.rotate,"deg)")}},[e.isCliping?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,src:e.elementInfo.src,clipData:e.elementInfo.clip,width:e.elementInfo.width,height:e.elementInfo.height,top:e.elementInfo.top,left:e.elementInfo.left,clipPath:e.clipShape.style,onClip:t[1]||(t[1]=function(t){return e.handleClip(t)})},null,8,["src","clipData","width","height","top","left","clipPath"])):Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createBlock"])("div",{key:1,class:"element-content",style:{filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):"",transform:e.flipStyle}},[Object(j["createVNode"])(l,{elementInfo:e.elementInfo},null,8,["elementInfo"]),Object(j["createVNode"])("div",{class:"image-content",style:{clipPath:e.clipShape.style}},[Object(j["createVNode"])("img",{src:e.elementInfo.src,draggable:!1,style:{top:e.imgPosition.top,left:e.imgPosition.left,width:e.imgPosition.width,height:e.imgPosition.height,filter:e.filter},onDragstart:t[2]||(t[2]=Object(j["withModifiers"])((function(){}),["prevent"])),alt:""},null,44,["src"])],4)],4)),[[i,e.contextmenus]])],4)],38)})),lc=Object(j["withScopeId"])("data-v-1d9b5032");Object(j["pushScopeId"])("data-v-1d9b5032");var ic=Object(j["createVNode"])("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"},null,-1);Object(j["popScopeId"])();var uc=lc((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("SvgWrapper"),l=Object(j["resolveDirective"])("click-outside");return Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"image-clip-handler",style:e.clipWrapperPositionStyle},[Object(j["createVNode"])("img",{class:"bottom-img",src:e.src,draggable:!1,alt:"",style:e.bottomImgPositionStyle},null,12,["src"]),Object(j["createVNode"])("div",{class:"top-image-content",style:Object(R["a"])(Object(R["a"])({},e.topImgWrapperPositionStyle),{},{clipPath:e.clipPath})},[Object(j["createVNode"])("img",{class:"top-img",src:e.src,draggable:!1,alt:"",style:e.topImgPositionStyle},null,12,["src"])],4),Object(j["createVNode"])("div",{class:"operate",style:e.topImgWrapperPositionStyle,onMousedown:t[1]||(t[1]=Object(j["withModifiers"])((function(t){return e.moveClipRange(t)}),["stop"]))},[(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(["t-l","t-r","b-l","b-r"],(function(t){return Object(j["createVNode"])("div",{class:["clip-point",t],key:t,onMousedown:Object(j["withModifiers"])((function(n){return e.scaleClipRange(n,t)}),["stop"])},[Object(j["createVNode"])(r,{width:"16",height:"16",fill:"#fff",stroke:"#333"},{default:lc((function(){return[ic]})),_:1})],42,["onMousedown"])})),64))],36)],4)),[[l,e.handleClip]])})),dc=Object(j["defineComponent"])({name:"image-clip-handler",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}},setup:function(e,t){var n=t.emit,o=Y(),c=Object(j["computed"])((function(){return o.state.canvasScale})),a=Object(j["computed"])((function(){return o.getters.ctrlOrShiftKeyActive})),r=Object(j["reactive"])({top:"0",left:"0"}),l=Object(j["ref"])(!1),i=Object(j["ref"])(null),u=function(){var t=e.clipData?e.clipData.range:[[0,0],[100,100]],n=Object(rn["a"])(t,2),o=n[0],c=n[1],a=(c[0]-o[0])/100,r=(c[1]-o[1])/100,l=o[0]/a,i=o[1]/r;return{widthScale:a,heightScale:r,left:l,top:i}},d=Object(j["computed"])((function(){var e=u(),t=e.widthScale,n=e.heightScale,o=e.left,c=e.top;return{left:-o,top:-c,width:100/t,height:100/n}})),s=Object(j["computed"])((function(){return{top:d.value.top+"%",left:d.value.left+"%",width:d.value.width+"%",height:d.value.height+"%"}})),f=Object(j["reactive"])({top:0,left:0,width:0,height:0}),p=Object(j["computed"])((function(){return{top:f.top+"%",left:f.left+"%",width:f.width+"%",height:f.height+"%"}})),b=Object(j["computed"])((function(){var e=d.value.width,t=d.value.height,n=f.left,o=f.top,c=f.width,a=f.height;return{left:100/c*-n+"%",top:100/a*-o+"%",width:e/c*100+"%",height:t/a*100+"%"}})),m=function(){var e=u(),t=e.left,n=e.top;f.left=t,f.top=n,f.width=100,f.height=100,r.top=-n+"%",r.left=-t+"%"},v=function(){if(!l.value)if(i.value){var t=u(),o=t.left,c=t.top,a={left:(f.left-o)/100*e.width,top:(f.top-c)/100*e.height,width:(f.width-100)/100*e.width,height:(f.height-100)/100*e.height},r={range:i.value,position:a};n("clip",r)}else n("clip",null)},O=function(e){var t=e.key.toUpperCase();t===ce.ENTER&&v()};Object(j["onMounted"])((function(){m(),document.addEventListener("keydown",O)})),Object(j["onUnmounted"])((function(){document.removeEventListener("keydown",O)}));var h=function(){var e={left:parseInt(b.value.left),top:parseInt(b.value.top),width:parseInt(b.value.width),height:parseInt(b.value.height)},t=100/e.width,n=100/e.height,o=[-e.left*t,-e.top*n],c=[100*t+o[0],100*n+o[1]];i.value=[o,c]},g=function(t){l.value=!0;var n=!0,o=t.pageX,a=t.pageY,r=d.value,i={left:f.left,top:f.top,width:f.width,height:f.height};document.onmousemove=function(t){if(n){var l=t.pageX,u=t.pageY,d=(l-o)/c.value/e.width*100,s=(u-a)/c.value/e.height*100,p=i.left+d,b=i.top+s;p<0?p=0:p+i.width>r.width&&(p=r.width-i.width),b<0?b=0:b+i.height>r.height&&(b=r.height-i.height),f.left=p,f.top=b}},document.onmouseup=function(){n=!1,document.onmousemove=null,document.onmouseup=null,h(),setTimeout((function(){l.value=!1}),0)}},y=function(t,n){l.value=!0;var o=!0,r=50/e.width*100,i=50/e.height*100,u=t.pageX,s=t.pageY,p=d.value,b={left:f.left,top:f.top,width:f.width,height:f.height},m=f.width/f.height;document.onmousemove=function(t){if(o){var l,d,v,O,h=t.pageX,j=t.pageY,g=(h-u)/c.value/e.width*100,y=(j-s)/c.value/e.height*100;a.value&&("b-r"!==n&&"t-l"!==n||(y=g/m),"b-l"!==n&&"t-r"!==n||(y=-g/m)),"t-l"===n?(b.left+g<0&&(g=-b.left),b.top+y<0&&(y=-b.top),b.width-gp.width&&(g=p.width-(b.left+b.width)),b.top+y<0&&(y=-b.top),b.width+gp.height&&(y=p.height-(b.top+b.height)),b.width-gp.width&&(g=p.width-(b.left+b.width)),b.top+b.height+y>p.height&&(y=p.height-(b.top+b.height)),b.width+g\s$/,e)},xc=function(e){return Object(Sc["g"])(/^(\d+)\.\s$/,e,(function(e){return{order:+e[1]}}),(function(e,t){return t.childCount+t.attrs.order===+e[1]}))},Tc=function(e){return Object(Sc["g"])(/^\s*([-+*])\s$/,e)},Lc=function(e){return Object(Sc["e"])(/^```$/,e)},wc=function(e){var t=[].concat(Object(P["a"])(Sc["d"]),[Sc["a"],Sc["b"]]);return t.push(Nc(e.nodes.blockquote)),t.push(xc(e.nodes.ordered_list)),t.push(Tc(e.nodes.bullet_list)),t.push(Lc(e.nodes.code_block)),Object(Sc["c"])({rules:t})},Vc=function(e){return[wc(e),Object(gc["b"])(Cc(e)),Object(gc["b"])(vc["a"]),Object(kc["a"])(),Object(Ec["a"])(),Object(yc["a"])()]},_c=n("2210"),Bc=Object(R["a"])(Object(R["a"])({},Ic["d"]),{},{content:"list_item+",group:"block"}),Dc=Object(R["a"])(Object(R["a"])({},Ic["a"]),{},{content:"list_item+",group:"block"}),Mc=Object(R["a"])(Object(R["a"])({},Ic["c"]),{},{content:"paragraph block*",group:"block"}),Ac={attrs:{align:{default:""}},content:"inline*",group:"block",parseDOM:[{tag:"p",getAttrs:function(e){var t=e.style.textAlign,n=e.getAttribute("align")||t||"";return n=/(left|right|center|justify)/.test(n)?n:"",{align:n}}}],toDOM:function(e){var t=e.attrs.align,n="";return t&&"left"!==t&&(n+="text-align: ".concat(t,";")),["p",{style:n},0]}},Pc=Object(R["a"])(Object(R["a"])({},_c["b"]),{},{ordered_list:Bc,bullet_list:Dc,list_item:Mc,paragraph:Ac}),Rc=(n("5319"),n("ac1f"),{excludes:"subscript",parseDOM:[{tag:"sub"},{style:"vertical-align",getAttrs:function(e){return"sub"===e&&null}}],toDOM:function(){return["sub",0]}}),Fc={excludes:"superscript",parseDOM:[{tag:"sup"},{style:"vertical-align",getAttrs:function(e){return"super"===e&&null}}],toDOM:function(){return["sup",0]}},Hc={parseDOM:[{tag:"strike"},{style:"text-decoration",getAttrs:function(e){return"line-through"===e&&null}},{style:"text-decoration-line",getAttrs:function(e){return"line-through"===e&&null}}],toDOM:function(){return["span",{style:"text-decoration-line: line-through"},0]}},zc={parseDOM:[{tag:"u"},{style:"text-decoration",getAttrs:function(e){return"underline"===e&&null}},{style:"text-decoration-line",getAttrs:function(e){return"underline"===e&&null}}],toDOM:function(){return["span",{style:"text-decoration: underline"},0]}},Uc={attrs:{color:{}},parseDOM:[{style:"color",getAttrs:function(e){return e?{color:e}:{}}}],toDOM:function(e){var t=e.attrs.color,n="";return t&&(n+="color: ".concat(t,";")),["span",{style:n},0]}},Gc={attrs:{backcolor:{}},inline:!0,group:"inline",parseDOM:[{tag:"span[style*=background-color]",getAttrs:function(e){return e?{backcolor:e}:{}}}],toDOM:function(e){var t=e.attrs.backcolor,n="";return t&&(n+="background-color: ".concat(t,";")),["span",{style:n},0]}},qc={attrs:{fontsize:{}},inline:!0,group:"inline",parseDOM:[{style:"font-size",getAttrs:function(e){return e?{fontsize:e}:{}}}],toDOM:function(e){var t=e.attrs.fontsize,n="";return t&&(n+="font-size: ".concat(t)),["span",{style:n},0]}},Xc={attrs:{fontname:{}},inline:!0,group:"inline",parseDOM:[{style:"font-family",getAttrs:function(e){return{fontname:e&&"string"===typeof e?e.replace(/[\"\']/g,""):""}}}],toDOM:function(e){var t=e.attrs.fontname,n="";return t&&(n+="font-family: ".concat(t)),["span",{style:n},0]}},Wc=Object(R["a"])(Object(R["a"])({},_c["a"]),{},{subscript:Rc,superscript:Fc,strikethrough:Hc,underline:zc,forecolor:Uc,backcolor:Gc,fontsize:qc,fontname:Xc}),Yc=Pc,Zc=Wc,Jc=new jc["i"]({nodes:Yc,marks:Zc}),Kc=function(e){var t="".concat(e,"
"),n=new window.DOMParser,o=n.parseFromString(t,"text/html").body.firstElementChild;return jc["a"].fromSchema(Jc).parse(o)},Qc=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return new hc["c"](e,Object(R["a"])({state:Oc["b"].create({doc:Kc(t),plugins:Vc(Jc)})},n))},$c=(n("b0c0"),function(e,t){return Array.isArray(e)&&e.indexOf(t.type)>-1||t.type===e}),ea=function(e,t){for(var n=e.depth;n>0;n--){var o=e.node(n);if(t(o))return{pos:n>0?e.before(n):0,start:e.start(n),depth:n,node:o}}},ta=function(e){return function(t){return ea(t.$from,e)}},na=function(e){return function(t){return ta((function(t){return $c(e,t)}))(t)}},oa=function(e,t){var n=t.schema.nodes[e];return!!na(n)(t.selection)},ca=function(e){var t=e.state,n=t.selection,o=t.doc,c=n.from,a=o.nodeAt(c);return(null===a||void 0===a?void 0:a.marks)||[]},aa=function(e,t,n){var o,c=ca(e),a=Object(ke["a"])(c);try{for(a.s();!(o=a.n()).done;){var r=o.value;if(r.type.name===t&&r.attrs[n])return r.attrs[n]}}catch(l){a.e(l)}finally{a.f()}return null},ra=function(e,t){var n,o=ca(e),c=Object(ke["a"])(o);try{for(c.s();!(n=c.n()).done;){var a=n.value;if(a.type.name===t)return!0}}catch(r){c.e(r)}finally{c.f()}return!1},la=function(e,t){var n=e.state,o=n.selection,c=n.doc,a=o.from,r=o.to,l=!0,i="";return c.nodesBetween(a,r,(function(e){return l&&e.attrs[t]&&(l=!1,i=e.attrs[t]),l})),i},ia=function(e){var t=ra(e,"strong"),n=ra(e,"em"),o=ra(e,"underline"),c=ra(e,"strikethrough"),a=ra(e,"superscript"),r=ra(e,"subscript"),l=ra(e,"code"),i=aa(e,"forecolor","color")||"#000",u=aa(e,"backcolor","backcolor")||"#000",d=aa(e,"fontsize","fontsize")||"20px",s=aa(e,"fontname","fontname")||"微软雅黑",f=la(e,"align")||"left",p=oa("bullet_list",e.state),b=oa("ordered_list",e.state),m=oa("blockquote",e.state);return{bold:t,em:n,underline:o,strikethrough:c,superscript:a,subscript:r,code:l,color:i,backcolor:u,fontsize:d,fontname:s,align:f,bulletList:p,orderedList:b,blockquote:m}},ua=(n("6062"),function(e,t,n){var o=e,c=o.selection,a=o.doc;if(!c||!a)return e;var r=c.from,l=c.to,i=t.nodes,u=i.blockquote,d=i.list_item,s=i.paragraph,f=[];n=n||"";var p=new Set([u,d,s]);return a.nodesBetween(r,l,(function(e,t){var o=e.type,c=e.attrs.align||"";return c!==n&&p.has(o)&&f.push({node:e,pos:t,nodeType:o}),!0})),f.length?(f.forEach((function(t){var o=t.node,c=t.pos,a=t.nodeType,r=o.attrs;r=n?Object(R["a"])(Object(R["a"])({},r),{},{align:n}):Object(R["a"])(Object(R["a"])({},r),{},{align:null}),e=e.setNodeMarkup(c,a,r,o.marks)})),e):e}),da=function(e,t){var n=e.state,o=n.schema,c=n.selection,a=ua(n.tr.setSelection(c),o,t);e.dispatch(a)},sa=function(e,t){return e.type===t.nodes.bullet_list||e.type===t.nodes.ordered_list},fa=function(e,t){return function(n,o){var c=n.schema,a=n.selection,r=a.$from,l=a.$to,i=r.blockRange(l);if(!i)return!1;var u=ta((function(e){return sa(e,c)}))(a);if(i.depth>=1&&u&&i.depth-u.depth<=1){if(u.node.type===e)return Object(Ic["b"])(t)(n,o);if(sa(u.node,c)&&e.validContent(u.node.content)){var d=n.tr;return d.setNodeMarkup(u.pos,e),o&&o(d),!1}}return Object(Ic["g"])(e)(n,o)}},pa=Object(j["defineComponent"])({name:"editable-element-text",components:{ElementOutline:Dn},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t,n=Y(),o=Ne(),c=o.addHistorySnapshot,a=Object(j["ref"])(),r=Object(j["ref"])(!1),l=Object(j["ref"])(-1),i=Object(j["ref"])(),u=Object(j["computed"])((function(){return e.elementInfo.shadow})),d=cn(u),s=d.shadowStyle,f=Object(j["computed"])((function(){return n.state.handleElementId})),p=function(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo,n))},b=function(t){r.value=t,t||-1===l.value||(n.commit(y.UPDATE_ELEMENT,{id:e.elementInfo.id,props:{height:l.value}}),l.value=-1)};qo.on(Lo.SCALE_ELEMENT_STATE,(function(e){return b(e)})),Object(j["onUnmounted"])((function(){qo.off(Lo.SCALE_ELEMENT_STATE,(function(e){return b(e)}))}));var m=function(t){var o=t[0].contentRect;if(a.value){var c=o.height;e.elementInfo.height!==c&&(r.value?l.value=c:n.commit(y.UPDATE_ELEMENT,{id:e.elementInfo.id,props:{height:c}}))}},v=new ResizeObserver(m);Object(j["onMounted"])((function(){a.value&&v.observe(a.value)})),Object(j["onUnmounted"])((function(){a.value&&v.unobserve(a.value)}));var O=Ie()((function(){n.commit(y.UPDATE_ELEMENT,{id:e.elementInfo.id,props:{content:t.dom.innerHTML}}),c()}),300,{trailing:!0}),h=function(){"请输入内容"===e.elementInfo.content&&(t.dom.innerHTML="",O()),n.commit(y.SET_DISABLE_HOTKEYS_STATE,!0)},g=function(){n.commit(y.SET_DISABLE_HOTKEYS_STATE,!1)},k=Ie()((function(){var e=ia(t);qo.emit(Lo.UPDATE_TEXT_STATE,e)}),30,{trailing:!0}),E=function(){O(),k()},I=Object(j["computed"])((function(){return e.elementInfo.content}));Object(j["watch"])(I,(function(){t&&(t.hasFocus()||(t.dom.innerHTML=I.value))}));var S=Object(j["computed"])((function(){return!e.elementInfo.lock}));Object(j["watch"])(S,(function(){t.setProps({editable:function(){return S.value}})})),Object(j["onMounted"])((function(){t=Qc(i.value,I.value,{handleDOMEvents:{focus:h,blur:g,keydown:E,click:k},editable:function(){return S.value}})})),Object(j["onUnmounted"])((function(){t&&t.destroy()}));var C=function(n){if(f.value===e.elementInfo.id){var o,c="command"in n?[n]:n,a=Object(ke["a"])(c);try{for(a.s();!(o=a.n()).done;){var r=o.value;if("fontname"===r.command&&r.value){var l=t.state.schema.marks.fontname.create({fontname:r.value}),i=t.state.selection.empty;i&&Object(vc["d"])(t.state,t.dispatch);var u=t.state.selection,d=u.$from,s=u.$to;t.dispatch(t.state.tr.addMark(d.pos,s.pos,l))}else if("fontsize"===r.command&&r.value){var p=t.state.schema.marks.fontsize.create({fontsize:r.value}),b=t.state.selection.empty;b&&Object(vc["d"])(t.state,t.dispatch);var m=t.state.selection,v=m.$from,h=m.$to;t.dispatch(t.state.tr.addMark(v.pos,h.pos,p))}else if("color"===r.command&&r.value){var j=t.state.schema.marks.forecolor.create({color:r.value}),g=t.state.selection.empty;g&&Object(vc["d"])(t.state,t.dispatch);var y=t.state.selection,E=y.$from,I=y.$to;t.dispatch(t.state.tr.addMark(E.pos,I.pos,j))}else if("backcolor"===r.command&&r.value){var S=t.state.schema.marks.backcolor.create({backcolor:r.value}),C=t.state.selection.empty;C&&Object(vc["d"])(t.state,t.dispatch);var N=t.state.selection,x=N.$from,T=N.$to;t.dispatch(t.state.tr.addMark(x.pos,T.pos,S))}else if("bold"===r.command){var L=t.state.selection.empty;L&&Object(vc["d"])(t.state,t.dispatch),Object(vc["f"])(t.state.schema.marks.strong)(t.state,t.dispatch)}else if("em"===r.command){var w=t.state.selection.empty;w&&Object(vc["d"])(t.state,t.dispatch),Object(vc["f"])(t.state.schema.marks.em)(t.state,t.dispatch)}else if("underline"===r.command){var V=t.state.selection.empty;V&&Object(vc["d"])(t.state,t.dispatch),Object(vc["f"])(t.state.schema.marks.underline)(t.state,t.dispatch)}else if("strikethrough"===r.command){var _=t.state.selection.empty;_&&Object(vc["d"])(t.state,t.dispatch),Object(vc["f"])(t.state.schema.marks.strikethrough)(t.state,t.dispatch)}else if("subscript"===r.command)Object(vc["f"])(t.state.schema.marks.subscript)(t.state,t.dispatch);else if("superscript"===r.command)Object(vc["f"])(t.state.schema.marks.superscript)(t.state,t.dispatch);else if("blockquote"===r.command)Object(vc["g"])(t.state.schema.nodes.blockquote)(t.state,t.dispatch);else if("code"===r.command)Object(vc["f"])(t.state.schema.marks.code)(t.state,t.dispatch);else if("align"===r.command&&r.value)da(t,r.value);else if("bulletList"===r.command){var B=t.state.schema.nodes,D=B.bullet_list,M=B.list_item;fa(D,M)(t.state,t.dispatch)}else if("orderedList"===r.command){var A=t.state.schema.nodes,P=A.ordered_list,R=A.list_item;fa(P,R)(t.state,t.dispatch)}else if("clear"===r.command){var F=t.state.selection.empty;F&&Object(vc["d"])(t.state,t.dispatch);var H=t.state.selection,z=H.$from,U=H.$to;t.dispatch(t.state.tr.removeMark(z.pos,U.pos))}}}catch(G){a.e(G)}finally{a.f()}t.focus(),O(),k()}};return qo.on(Lo.EXEC_TEXT_COMMAND,(function(e){return C(e)})),Object(j["onUnmounted"])((function(){qo.off(Lo.EXEC_TEXT_COMMAND,(function(e){return C(e)}))})),{elementRef:a,editorViewRef:i,handleSelectElement:p,shadowStyle:s}}});n("e49b");pa.render=mc,pa.__scopeId="data-v-a7eb4f98";var ba=pa,ma=Object(j["withScopeId"])("data-v-264ed0d8");Object(j["pushScopeId"])("data-v-264ed0d8");var va={key:0};Object(j["popScopeId"])();var Oa=ma((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("GradientDefs"),l=Object(j["resolveComponent"])("SvgWrapper"),i=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["editable-element-shape",{lock:e.elementInfo.lock}],style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"},onMousedown:t[1]||(t[1]=function(t){return e.handleSelectElement(t)})},[Object(j["createVNode"])("div",{class:"rotate-wrapper",style:{transform:"rotate(".concat(e.elementInfo.rotate,"deg)")}},[Object(j["withDirectives"])(Object(j["createVNode"])("div",{class:"element-content",style:{opacity:e.elementInfo.opacity,filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):"",transform:e.flipStyle}},[Object(j["createVNode"])(l,{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height},{default:ma((function(){return[e.elementInfo.gradient?(Object(j["openBlock"])(),Object(j["createBlock"])("defs",va,[Object(j["createVNode"])(r,{id:"editabel-gradient-".concat(e.elementInfo.id),type:e.elementInfo.gradient.type,color1:e.elementInfo.gradient.color[0],color2:e.elementInfo.gradient.color[1],rotate:e.elementInfo.gradient.rotate},null,8,["id","type","color1","color2","rotate"])])):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])("g",{transform:"scale(".concat(e.elementInfo.width/e.elementInfo.viewBox,", ").concat(e.elementInfo.height/e.elementInfo.viewBox,") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(j["createVNode"])("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8","stroke-linejoin":"",d:e.elementInfo.path,fill:e.elementInfo.gradient?"url(#editabel-gradient-".concat(e.elementInfo.id,")"):e.elementInfo.fill,stroke:e.outlineColor,"stroke-width":e.outlineWidth,"stroke-dasharray":"dashed"===e.outlineStyle?"10 6":"0 0"},null,8,["d","fill","stroke","stroke-width","stroke-dasharray"])],8,["transform"])]})),_:1},8,["width","height"])],4),[[i,e.contextmenus]])],4)],38)})),ha=Object(j["defineComponent"])({name:"editable-element-shape",components:{GradientDefs:Un},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))},n=Object(j["computed"])((function(){return e.elementInfo.outline})),o=mn(n),c=o.outlineWidth,a=o.outlineStyle,r=o.outlineColor,l=Object(j["computed"])((function(){return e.elementInfo.shadow})),i=cn(l),u=i.shadowStyle,d=Object(j["computed"])((function(){return e.elementInfo.flip})),s=an(d),f=s.flipStyle;return{handleSelectElement:t,shadowStyle:u,outlineWidth:c,outlineStyle:a,outlineColor:r,flipStyle:f}}});n("3244");ha.render=Oa,ha.__scopeId="data-v-264ed0d8";var ja=ha,ga=Object(j["withScopeId"])("data-v-7d3d40d6"),ya=ga((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("LinePointMarker"),l=Object(j["resolveComponent"])("SvgWrapper"),i=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["editable-element-shape",{lock:e.elementInfo.lock}],style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px"}},[Object(j["createVNode"])("div",{class:"element-content",style:{filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):""}},[Object(j["createVNode"])(l,{overflow:"visible",width:e.svgWidth,height:e.svgHeight},{default:ga((function(){return[Object(j["createVNode"])("defs",null,[e.elementInfo.points[0]?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,id:e.elementInfo.id,position:"start",type:e.elementInfo.points[0],color:e.elementInfo.color,baseSize:e.elementInfo.width},null,8,["id","type","color","baseSize"])):Object(j["createCommentVNode"])("",!0),e.elementInfo.points[1]?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:1,id:e.elementInfo.id,position:"end",type:e.elementInfo.points[1],color:e.elementInfo.color,baseSize:e.elementInfo.width},null,8,["id","type","color","baseSize"])):Object(j["createCommentVNode"])("",!0)]),Object(j["createVNode"])("path",{d:e.path,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.width,"stroke-dasharray":e.lineDashArray,fill:"none","stroke-linecap":"","stroke-linejoin":"","stroke-miterlimit":"","marker-start":e.elementInfo.points[0]?"url(#".concat(e.elementInfo.id,"-").concat(e.elementInfo.points[0],"-start)"):"","marker-end":e.elementInfo.points[1]?"url(#".concat(e.elementInfo.id,"-").concat(e.elementInfo.points[1],"-end)"):""},null,8,["d","stroke","stroke-width","stroke-dasharray","marker-start","marker-end"]),Object(j["withDirectives"])(Object(j["createVNode"])("path",{class:"line-path",d:e.path,stroke:"transparent","stroke-width":"20",fill:"none",onMousedown:t[1]||(t[1]=function(t){return e.handleSelectElement(t)})},null,40,["d"]),[[i,e.contextmenus]])]})),_:1},8,["width","height"])],4)],6)})),ka=Object(j["defineComponent"])({name:"editable-element-shape",components:{LinePointMarker:Qn},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))},n=Object(j["computed"])((function(){return e.elementInfo.shadow})),o=cn(n),c=o.shadowStyle,a=Object(j["computed"])((function(){var t=Math.abs(e.elementInfo.start[0]-e.elementInfo.end[0]);return t<24?24:t})),r=Object(j["computed"])((function(){var t=Math.abs(e.elementInfo.start[1]-e.elementInfo.end[1]);return t<24?24:t})),l=Object(j["computed"])((function(){return"dashed"===e.elementInfo.style?"10 6":"0 0"})),i=Object(j["computed"])((function(){var t=e.elementInfo.start.join(","),n=e.elementInfo.end.join(",");if(e.elementInfo.broken){var o=e.elementInfo.broken.join(",");return"M".concat(t," L").concat(o," L").concat(n)}if(e.elementInfo.curve){var c=e.elementInfo.curve.join(",");return"M".concat(t," Q").concat(c," ").concat(n)}return"M".concat(t," L").concat(n)}));return{handleSelectElement:t,shadowStyle:c,svgWidth:a,svgHeight:r,lineDashArray:l,path:i}}});n("b7b4");ka.render=ya,ka.__scopeId="data-v-7d3d40d6";var Ea=ka,Ia=Object(j["withScopeId"])("data-v-6277fc70"),Sa=Ia((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ElementOutline"),l=Object(j["resolveComponent"])("Chart"),i=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["editable-element-chart",{lock:e.elementInfo.lock}],style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"},onMousedown:t[1]||(t[1]=function(t){return e.handleSelectElement(t)})},[Object(j["withDirectives"])(Object(j["createVNode"])("div",{class:"element-content",style:{backgroundColor:e.elementInfo.fill}},[Object(j["createVNode"])(r,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(j["createVNode"])(l,{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},null,8,["width","height","type","data","options","themeColor","gridColor"])],4),[[i,e.contextmenus]])],38)})),Ca=Object(j["withScopeId"])("data-v-233b1dc8");Object(j["pushScopeId"])("data-v-233b1dc8");var Na={class:"chart"};Object(j["popScopeId"])();var xa=Ca((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",Na,[Object(j["createVNode"])("div",{class:"chart-content",ref:"chartRef",style:{width:e.width+"px",height:e.height+"px",transform:"scale(".concat(1/e.slideScale,")")}},null,4)])})),Ta=n("8103"),La=n.n(Ta),wa=n("ba48"),Va=n.n(wa),_a=(n("aa97"),Object(j["defineComponent"])({name:"chart",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},type:{type:String,required:!0},data:{type:Object,required:!0},options:{type:Object},themeColor:{type:String,required:!0},gridColor:{type:String}},setup:function(e){var t,n=Object(j["ref"])(),o=Object(j["inject"])("slideScale")||Object(j["ref"])(1),c=function(){var t=e.options||{},n=Object(R["a"])(Object(R["a"])({},t),{},{width:e.width*o.value,height:e.height*o.value}),c="pie"===e.type?Object(R["a"])(Object(R["a"])({},e.data),{},{series:e.data.series[0]}):e.data;return{data:c,options:n}},a=function(){if(n.value){var o=La()(e.type),a=c(),r=a.data,l=a.options;t=new Va.a[o](n.value,r,l)}},r=function(){if(t){var e=c(),n=e.data,o=e.options;t.update(n,o)}else a()};Object(j["watch"])([function(){return e.width},function(){return e.height},function(){return e.data},o],r),Object(j["onMounted"])(a);var l=function(){if(n.value)for(var t=bo()(e.themeColor).analogous(10),o=0;o<10;o++){var c=t[o].toRgbString();n.value.style.setProperty("--theme-color-".concat(o+1),c)}};Object(j["watch"])((function(){return e.themeColor}),l),Object(j["onMounted"])(l);var i=function(){n.value&&e.gridColor&&n.value.style.setProperty("--grid-color",e.gridColor)};return Object(j["watch"])((function(){return e.gridColor}),i),Object(j["onMounted"])(i),{slideScale:o,chartRef:n}}}));n("a902"),n("32d8");_a.render=xa,_a.__scopeId="data-v-233b1dc8";var Ba=_a,Da=Object(j["defineComponent"])({name:"editable-element-chart",components:{ElementOutline:Dn,Chart:Ba},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))};return{handleSelectElement:t}}});n("ea33");Da.render=Sa,Da.__scopeId="data-v-6277fc70";var Ma=Da,Aa=Object(j["withScopeId"])("data-v-c0edfdac");Object(j["pushScopeId"])("data-v-c0edfdac");var Pa={class:"element-content"};Object(j["popScopeId"])();var Ra=Aa((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("EditableTable"),l=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["editable-element-table",{lock:e.elementInfo.lock}],ref:"elementRef",style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"}},[Object(j["withDirectives"])(Object(j["createVNode"])("div",Pa,[Object(j["createVNode"])(r,{onMousedown:t[1]||(t[1]=Object(j["withModifiers"])((function(){}),["stop"])),data:e.elementInfo.data,width:e.elementInfo.width,colWidths:e.elementInfo.colWidths,outline:e.elementInfo.outline,theme:e.elementInfo.theme,editable:e.editable,onChange:t[2]||(t[2]=function(t){return e.updateTableCells(t)}),onChangeColWidths:t[3]||(t[3]=function(t){return e.updateColWidths(t)}),onChangeSelectedCells:t[4]||(t[4]=function(t){return e.updateSelectedCells(t)})},null,8,["data","width","colWidths","outline","theme","editable"]),!e.editable||e.elementInfo.lock?(Object(j["openBlock"])(),Object(j["createBlock"])("div",{key:0,class:["table-mask",{lock:e.elementInfo.lock}],onDblclick:t[5]||(t[5]=function(t){return e.startEdit()}),onMousedown:t[6]||(t[6]=function(t){return e.handleSelectElement(t)})},[Object(j["createVNode"])("div",{class:"mask-tip",style:{transform:"scale(".concat(1/e.canvasScale,")")}},"双击编辑",4)],34)):Object(j["createCommentVNode"])("",!0)],512),[[l,e.contextmenus]])],6)})),Fa=Object(j["withScopeId"])("data-v-70bdbb7e");Object(j["pushScopeId"])("data-v-70bdbb7e");var Ha={key:0,class:"handler"};Object(j["popScopeId"])();var za=Fa((function(e,t,n,o,c,a){var r,l,i,u,d,s=Object(j["resolveComponent"])("CustomTextarea"),f=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"editable-table",style:{width:e.totalWidth+"px"}},[e.editable?(Object(j["openBlock"])(),Object(j["createBlock"])("div",Ha,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.dragLinePosition,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"drag-line",key:n,style:{left:t+"px"},onMousedown:function(t){return e.handleMousedownColHandler(t,n)}},null,44,["onMousedown"])})),128))])):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])("table",{class:{theme:e.theme,"row-header":null===(r=e.theme)||void 0===r?void 0:r.rowHeader,"row-footer":null===(l=e.theme)||void 0===l?void 0:l.rowFooter,"col-header":null===(i=e.theme)||void 0===i?void 0:i.colHeader,"col-footer":null===(u=e.theme)||void 0===u?void 0:u.colFooter},style:"--themeColor: ".concat(null===(d=e.theme)||void 0===d?void 0:d.color,"; --subThemeColor1: ").concat(e.subThemeColor[0],"; --subThemeColor2: ").concat(e.subThemeColor[1])},[Object(j["createVNode"])("colgroup",null,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.colSizeList,(function(e,t){return Object(j["openBlock"])(),Object(j["createBlock"])("col",{span:"1",key:t,width:e},null,8,["width"])})),128))]),Object(j["createVNode"])("tbody",null,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.tableCells,(function(n,o){return Object(j["openBlock"])(),Object(j["createBlock"])("tr",{key:o},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(n,(function(n,c){return Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createBlock"])("td",{class:["cell",{selected:e.selectedCells.includes("".concat(o,"_").concat(c))&&e.selectedCells.length>1,active:e.activedCell==="".concat(o,"_").concat(c)}],style:Object(R["a"])({borderStyle:e.outline.style,borderColor:e.outline.color,borderWidth:e.outline.width+"px"},e.getTextStyle(n.style)),key:n.id,rowspan:n.rowspan,colspan:n.colspan,"data-cell-index":"".concat(o,"_").concat(c),onMousedown:function(t){return e.handleCellMousedown(t,o,c)},onMouseenter:function(t){return e.handleCellMouseenter(o,c)}},[Object(j["createVNode"])(s,{class:["cell-text",{active:e.activedCell==="".concat(o,"_").concat(c)}],contenteditable:e.activedCell==="".concat(o,"_").concat(c)&&"plaintext-only",modelValue:n.text,"onUpdate:modelValue":[function(e){return n.text=e},t[1]||(t[1]=function(t){return e.handleInput()})]},null,8,["class","contenteditable","modelValue","onUpdate:modelValue"])],46,["rowspan","colspan","data-cell-index","onMousedown","onMouseenter"])),[[j["vShow"],!e.hideCells.includes("".concat(o,"_").concat(c))],[f,function(t){return e.contextmenus(t)}]])})),128))])})),128))])],6)],4)})),Ua=(n("1276"),Object(j["withScopeId"])("data-v-0d17e957")),Ga=Ua((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"custom-textarea",ref:"textareaRef",contenteditable:e.contenteditable,onFocus:t[1]||(t[1]=function(){return e.handleFocus&&e.handleFocus.apply(e,arguments)}),onBlur:t[2]||(t[2]=function(){return e.handleBlur&&e.handleBlur.apply(e,arguments)}),onInput:t[3]||(t[3]=function(t){return e.handleInput(t)}),innerHTML:e.text},null,40,["contenteditable","innerHTML"])})),qa=Object(j["defineComponent"])({name:"custom-textarea",props:{modelValue:{type:String,default:""},contenteditable:{type:[Boolean,String],default:!1}},setup:function(e,t){var n=t.emit,o=Object(j["ref"])(),c=Object(j["ref"])(""),a=Object(j["ref"])(!1);Object(j["watch"])((function(){return e.modelValue}),(function(){a.value||(c.value=e.modelValue,o.value&&(o.value.innerHTML=e.modelValue))}),{immediate:!0});var r=function(){if(o.value){var e=o.value.innerHTML;n("update:modelValue",e)}},l=function(){a.value=!0,o.value&&(o.value.onpaste=function(e){if(e.preventDefault(),e.clipboardData){var t=e.clipboardData.items[0];t&&"string"===t.kind&&"text/plain"===t.type&&t.getAsString((function(e){return n("update:modelValue",e)}))}})},i=function(){a.value=!1,o.value&&(o.value.onpaste=null)};return Object(j["onUnmounted"])((function(){o.value&&(o.value.onpaste=null)})),{textareaRef:o,handleFocus:l,handleInput:r,handleBlur:i,text:c}}});n("90b2");qa.render=Ga,qa.__scopeId="data-v-0d17e957";var Xa=qa,Wa=Object(j["defineComponent"])({name:"editable-table",components:{CustomTextarea:Xa},props:{data:{type:Array,required:!0},width:{type:Number,required:!0},colWidths:{type:Array,required:!0},outline:{type:Object,required:!0},theme:{type:Object},editable:{type:Boolean,default:!0}},setup:function(e,t){var n=t.emit,o=Y(),c=Object(j["computed"])((function(){return o.state.canvasScale})),a=Object(j["ref"])(!1),r=Object(j["ref"])([]),l=Object(j["ref"])([]),i=Object(j["computed"])({get:function(){return e.data},set:function(e){n("change",e)}}),u=Object(j["computed"])((function(){return e.theme})),d=mo(u),s=d.subThemeColor,f=Object(j["ref"])([]),p=Object(j["computed"])((function(){return f.value.reduce((function(e,t){return e+t}))}));Object(j["watch"])([function(){return e.colWidths},function(){return e.width}],(function(){f.value=e.colWidths.map((function(t){return t*e.width}))}),{immediate:!0});var b=function(){r.value=[],l.value=[]};Object(j["watch"])((function(){return e.editable}),(function(){e.editable||b()}));var m=Object(j["computed"])((function(){for(var e=[],t=1;t=d&&b<=f&&v>=s&&v<=p&&u.push("".concat(b,"_").concat(v));return u}));Object(j["watch"])(g,(function(){n("changeSelectedCells",g.value)}));var y=Object(j["computed"])((function(){return g.value.length>1?null:g.value[0]})),k=Object(j["computed"])((function(){if(!r.value.length)return null;var e=Object(rn["a"])(r.value,2),t=e[0],n=e[1];if(!l.value.length)return{row:[t,t],col:[n,n]};var o=Object(rn["a"])(l.value,2),c=o[0],a=o[1];if(t===c&&n===a)return{row:[t,t],col:[n,n]};var i=Math.min(t,c),u=Math.min(n,a),d=Math.max(t,c),s=Math.max(n,a);return{row:[i,d],col:[u,s]}})),E=function(){return a.value=!1},I=function(e,t,n){0===e.button&&(l.value=[],a.value=!0,r.value=[t,n])},S=function(e,t){a.value&&(l.value=[e,t])};Object(j["onMounted"])((function(){document.addEventListener("mouseup",E)})),Object(j["onUnmounted"])((function(){document.removeEventListener("mouseup",E)}));var C=function(e,t){return h.value.includes("".concat(e,"_").concat(t))},N=function(e){var t=i.value.length-1;r.value=[0,e],l.value=[t,e]},x=function(e){var t=i.value[e].length-1;r.value=[e,0],l.value=[e,t]},T=function(){var e=i.value.length-1,t=i.value[e].length-1;r.value=[0,0],l.value=[e,t]},L=function(e){for(var t=JSON.parse(JSON.stringify(i.value)),n=i.value[e],o=[],c=0;c=0;u--)if(!C(u,l)){t[u][l].rowspan=t[u][l].rowspan-1;break}t.splice(e,1),i.value=t},w=function(e){for(var t=JSON.parse(JSON.stringify(i.value)),o=[],c=0;c=0;u--)if(!C(l,u)){t[l][u].colspan=t[l][u].colspan-1;break}i.value=t.map((function(t){return t.splice(e,1),t})),f.value.splice(e,1),n("changeColWidths",f.value)},V=function(e){for(var t=JSON.parse(JSON.stringify(i.value)),n=[],o=0;o1,n=e[0].length>1;return{canDeleteRow:t,canDeleteCol:n}},U=function(e,t){var n=g.value.length>1,o=i.value[e][t],c=n,a=!n&&(o.rowspan>1||o.colspan>1);return{canMerge:c,canSplit:a}},G=function(e){var t=e.dataset.cellIndex,n=+t.split("_")[0],o=+t.split("_")[1];g.value.includes("".concat(n,"_").concat(o))||(r.value=[n,o],l.value=[]);var c=U(n,o),a=c.canMerge,i=c.canSplit,u=z(),d=u.canDeleteRow,s=u.canDeleteCol;return[{text:"插入列",children:[{text:"到左侧",handler:function(){return _(o)}},{text:"到右侧",handler:function(){return _(o+1)}}]},{text:"插入行",children:[{text:"到上方",handler:function(){return V(n)}},{text:"到下方",handler:function(){return V(n+1)}}]},{text:"删除列",disable:!s,handler:function(){return w(o)}},{text:"删除行",disable:!d,handler:function(){return L(n)}},{divider:!0},{text:"合并单元格",disable:!a,handler:B},{text:"取消合并单元格",disable:!i,handler:function(){return D(n,o)}},{divider:!0},{text:"选中当前列",handler:function(){return N(o)}},{text:"选中当前行",handler:function(){return x(n)}},{text:"选中全部单元格",handler:T}]};return{getTextStyle:so,dragLinePosition:m,tableCells:i,colSizeList:f,totalWidth:p,hideCells:h,selectedCells:g,activedCell:y,selectedRange:k,handleCellMousedown:I,handleCellMouseenter:S,selectCol:N,selectRow:x,handleMousedownColHandler:M,contextmenus:G,handleInput:F,subThemeColor:s}}});n("9fed");Wa.render=za,Wa.__scopeId="data-v-70bdbb7e";var Ya=Wa,Za=Object(j["defineComponent"])({name:"editable-element-table",components:{EditableTable:Ya},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=Y(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return t.state.handleElementId})),c=Object(j["ref"])(),a=Ne(),r=a.addHistorySnapshot,l=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))},i=Object(j["ref"])(!1);Object(j["watch"])(o,(function(){o.value!==e.elementInfo.id&&(i.value=!1)})),Object(j["watch"])(i,(function(){t.commit(y.SET_DISABLE_HOTKEYS_STATE,i.value)}));var u=function(){e.elementInfo.lock||(i.value=!0)},d=Object(j["ref"])(!1),s=Object(j["ref"])(-1),f=function(n){d.value=n,n&&(i.value=!1),n||-1===s.value||(t.commit(y.UPDATE_ELEMENT,{id:e.elementInfo.id,props:{height:s.value}}),s.value=-1)};qo.on(Lo.SCALE_ELEMENT_STATE,(function(e){return f(e)})),Object(j["onUnmounted"])((function(){qo.off(Lo.SCALE_ELEMENT_STATE,(function(e){return f(e)}))}));var p=function(n){var o=n[0].contentRect;if(c.value){var a=o.height;e.elementInfo.height!==a&&(d.value?s.value=a:t.commit(y.UPDATE_ELEMENT,{id:e.elementInfo.id,props:{height:a}}))}},b=new ResizeObserver(p);Object(j["onMounted"])((function(){c.value&&b.observe(c.value)})),Object(j["onUnmounted"])((function(){c.value&&b.unobserve(c.value)}));var m=function(n){t.commit(y.UPDATE_ELEMENT,{id:e.elementInfo.id,props:{data:n}}),r()},v=function(n){var o=n.reduce((function(e,t){return e+t})),c=n.map((function(e){return e/o}));t.commit(y.UPDATE_ELEMENT,{id:e.elementInfo.id,props:{width:o,colWidths:c}}),r()},O=function(e){Object(j["nextTick"])((function(){return qo.emit(Lo.UPDATE_TABLE_SELECTED_CELL,e)}))};return{elementRef:c,canvasScale:n,handleSelectElement:l,updateTableCells:m,updateColWidths:v,editable:i,startEdit:u,updateSelectedCells:O}}});n("254e");Za.render=Ra,Za.__scopeId="data-v-c0edfdac";var Ja=Za,Ka=Object(j["defineComponent"])({name:"editable-element",props:{elementInfo:{type:Object,required:!0},elementIndex:{type:Number,required:!0},isMultiSelect:{type:Boolean,required:!0},selectElement:{type:Function,required:!0}},setup:function(e){var t=Y(),n=Object(j["computed"])((function(){return t.state.theme})),o=Object(j["computed"])((function(){var t,n=(t={},Object(N["a"])(t,Xt.IMAGE,pc),Object(N["a"])(t,Xt.TEXT,ba),Object(N["a"])(t,Xt.SHAPE,ja),Object(N["a"])(t,Xt.LINE,Ea),Object(N["a"])(t,Xt.CHART,Ma),Object(N["a"])(t,Xt.TABLE,Ja),t);return n[e.elementInfo.type]||null})),c=Fe(),a=c.orderElement,r=cc(),l=r.alignElementToCanvas,i=Me(),u=i.combineElements,d=i.uncombineElements,s=De(),f=s.deleteElement,p=Be(),b=p.lockElement,m=p.unlockElement,v=Ae(),O=v.copyElement,h=v.pasteElement,g=v.cutElement,y=Pe(),k=y.selectAllElement,E=function(){return e.elementInfo.lock?[{text:"解锁",handler:function(){return m(e.elementInfo)}}]:[{text:"剪切",subText:"Ctrl + X",handler:g},{text:"复制",subText:"Ctrl + C",handler:O},{text:"粘贴",subText:"Ctrl + V",handler:h},{divider:!0},{text:"水平居中",handler:function(){return l(ee.HORIZONTAL)},children:[{text:"水平垂直居中",handler:function(){return l(ee.CENTER)}},{text:"水平居中",handler:function(){return l(ee.HORIZONTAL)}},{text:"左对齐",handler:function(){return l(ee.LEFT)}},{text:"右对齐",handler:function(){return l(ee.RIGHT)}}]},{text:"垂直居中",handler:function(){return l(ee.VERTICAL)},children:[{text:"水平垂直居中",handler:function(){return l(ee.CENTER)}},{text:"垂直居中",handler:function(){return l(ee.VERTICAL)}},{text:"顶部对齐",handler:function(){return l(ee.TOP)}},{text:"底部对齐",handler:function(){return l(ee.BOTTOM)}}]},{divider:!0},{text:"置于顶层",disable:e.isMultiSelect&&!e.elementInfo.groupId,handler:function(){return a(e.elementInfo,$.TOP)},children:[{text:"置于顶层",handler:function(){return a(e.elementInfo,$.TOP)}},{text:"上移一层",handler:function(){return a(e.elementInfo,$.UP)}}]},{text:"置于底层",disable:e.isMultiSelect&&!e.elementInfo.groupId,handler:function(){return a(e.elementInfo,$.BOTTOM)},children:[{text:"置于底层",handler:function(){return a(e.elementInfo,$.BOTTOM)}},{text:"下移一层",handler:function(){return a(e.elementInfo,$.DOWN)}}]},{divider:!0},{text:e.elementInfo.groupId?"取消组合":"组合",subText:"Ctrl + G",handler:e.elementInfo.groupId?d:u,hide:!e.isMultiSelect},{text:"全选",subText:"Ctrl + A",handler:k},{text:"锁定",subText:"Ctrl + L",handler:b},{text:"删除",subText:"Delete",handler:f}]};return{currentElementComponent:o,contextmenus:E,theme:n}}});Ka.render=oc;var Qa=Ka,$a=Object(j["withScopeId"])("data-v-1619c258"),er=$a((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"mouse-selection quadrant-".concat(n.quadrant),style:{top:n.top+"px",left:n.left+"px",width:n.width+"px",height:n.height+"px"}},null,6)})),tr={name:"mouse-selection",props:{top:{type:Number,required:!0},left:{type:Number,required:!0},width:{type:Number,required:!0},height:{type:Number,required:!0},quadrant:{type:Number,required:!0,validator:function(e){return[1,2,3,4].includes(e)}}}};n("2007");tr.render=er,tr.__scopeId="data-v-1619c258";var nr=tr,or=Object(j["withScopeId"])("data-v-a9ca1b50"),cr=or((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("GridLines");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"viewport-background",style:e.backgroundStyle},[e.showGridLines?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0})):Object(j["createCommentVNode"])("",!0)],4)})),ar=Object(j["withScopeId"])("data-v-fbcac4e2"),rr=ar((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("SvgWrapper");return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"grid-lines"},{default:ar((function(){return[Object(j["createVNode"])("path",{style:{transform:"scale(".concat(e.canvasScale,")")},d:e.path,fill:"none",stroke:e.gridColor,"stroke-width":"0.3","stroke-dasharray":"5"},null,12,["d","stroke"])]})),_:1})})),lr=Object(j["defineComponent"])({name:"grid-lines",setup:function(){var e=Y(),t=Object(j["computed"])((function(){return e.state.canvasScale})),n=Object(j["computed"])((function(){return e.state.viewportRatio})),o=Object(j["computed"])((function(){var t;return null===(t=e.getters.currentSlide)||void 0===t?void 0:t.background})),c=Object(j["computed"])((function(){if(!o.value||"image"===o.value.type)return"rgba(100, 100, 100, 0.5)";var e=o.value.color,t=bo()(e).toRgb(),n={r:t.r>128?t.r-128:t.r+127,g:t.g>128?t.g-128:t.g+127,b:t.b>128?t.b-128:t.b+127,a:.5};return"rgba(".concat([n.r,n.g,n.b,n.a].join(","),")")})),a=50,r=function(){for(var e=Le,t=Le*n.value,o="",c=0;c<=Math.floor(t/a);c++)o+="M0 ".concat(c*a," L").concat(e," ").concat(c*a," ");for(var r=0;r<=Math.floor(e/a);r++)o+="M".concat(r*a," 0 L").concat(r*a," ").concat(t," ");return o};return{canvasScale:t,gridColor:c,width:Le,height:Le*n.value,path:r()}}});n("c5c4");lr.render=rr,lr.__scopeId="data-v-fbcac4e2";var ir=lr,ur=Object(j["defineComponent"])({name:"viewport-background",components:{GridLines:ir},setup:function(){var e=Y(),t=Object(j["computed"])((function(){return e.state.showGridLines})),n=Object(j["computed"])((function(){var t;return null===(t=e.getters.currentSlide)||void 0===t?void 0:t.background})),o=Qt(n),c=o.backgroundStyle;return{showGridLines:t,backgroundStyle:c}}});n("f802");ur.render=cr,ur.__scopeId="data-v-a9ca1b50";var dr=ur,sr=Object(j["withScopeId"])("data-v-2d3eddf5"),fr=sr((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"alignment-line",style:{left:e.left,top:e.top}},[Object(j["createVNode"])("div",{class:["line",e.type],style:e.sizeStyle},null,6)],4)})),pr=Object(j["defineComponent"])({name:"alignment-line",props:{type:{type:String,required:!0},axis:{type:Object,required:!0},length:{type:Number,required:!0}},setup:function(e){var t=Y(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return e.axis.x*n.value+"px"})),c=Object(j["computed"])((function(){return e.axis.y*n.value+"px"})),a=Object(j["computed"])((function(){return"vertical"===e.type?{height:e.length*n.value+"px"}:{width:e.length*n.value+"px"}}));return{left:o,top:c,sizeStyle:a}}});n("92ad");pr.render=fr,pr.__scopeId="data-v-2d3eddf5";var br=pr,mr=Object(j["withScopeId"])("data-v-3c5b7aac"),vr=mr((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("SvgWrapper");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"element-create-selection",ref:"selectionRef",onMousedown:t[1]||(t[1]=Object(j["withModifiers"])((function(t){return e.createSelection(t)}),["stop"]))},[e.start&&e.end?(Object(j["openBlock"])(),Object(j["createBlock"])("div",{key:0,class:["selection",e.creatingElement.type],style:e.position},["line"===e.creatingElement.type&&e.lineData?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,overflow:"visible",width:e.lineData.svgWidth,height:e.lineData.svgHeight},{default:mr((function(){return[Object(j["createVNode"])("path",{d:e.lineData.path,stroke:"#d14424",fill:"none","stroke-width":"1","stroke-linecap":"","stroke-linejoin":"","stroke-miterlimit":""},null,8,["d"])]})),_:1},8,["width","height"])):Object(j["createCommentVNode"])("",!0)],6)):Object(j["createCommentVNode"])("",!0)],544)})),Or=Object(j["defineComponent"])({name:"element-create-selection",setup:function(e,t){var n=t.emit,o=Y(),c=Object(j["computed"])((function(){return o.getters.ctrlOrShiftKeyActive})),a=Object(j["computed"])((function(){return o.state.creatingElement})),r=Object(j["ref"])(),l=Object(j["ref"])(),i=Object(j["ref"])(),u=Object(j["reactive"])({x:0,y:0});Object(j["onMounted"])((function(){if(i.value){var e=i.value.getBoundingClientRect(),t=e.x,n=e.y;u.x=t,u.y=n}}));var d=function(e){var t=!0,o=e.pageX,i=e.pageY;r.value=[o,i],document.onmousemove=function(e){if(a.value&&t){var n=e.pageX,r=e.pageY;if(c.value){var u=n-o,d=r-i,s=Math.abs(u),f=Math.abs(d);if("shape"===a.value.type){var p=d>0&&u<0||d<0&&u>0;s>f?r=p?i-u:i+u:n=p?o-d:o+d}else"line"===a.value.type&&(s>f?r=i:n=o)}l.value=[n,r]}},document.onmouseup=function(e){var c,u;document.onmousemove=null,document.onmouseup=null,t=!1;var d=e.pageX,s=e.pageY,f=30;if("line"===(null===(c=a.value)||void 0===c?void 0:c.type)&&(Math.abs(d-o)>=f||Math.abs(s-i)>=f))n("created",{start:r.value,end:l.value});else if("line"!==(null===(u=a.value)||void 0===u?void 0:u.type)&&Math.abs(d-o)>=f&&Math.abs(s-i)>=f)n("created",{start:r.value,end:l.value});else{var p=200,b=Math.min(d,o),m=Math.min(s,i),v=Math.max(d,o),O=Math.max(s,i),h=v-b>=f?v-b:p,j=O-m>=f?O-m:p;n("created",{start:[b,m],end:[b+h,m+j]})}}},s=Object(j["computed"])((function(){if(!r.value||!l.value)return null;if(!a.value||"line"!==a.value.type)return null;var e=Object(rn["a"])(r.value,2),t=e[0],n=e[1],o=Object(rn["a"])(l.value,2),c=o[0],i=o[1],u=Math.min(t,c),d=Math.max(t,c),s=Math.min(n,i),f=Math.max(n,i),p=d-u>=24?d-u:24,b=f-s>=24?f-s:24,m=t===u?0:d-u,v=n===s?0:f-s,O=c===u?0:d-u,h=i===s?0:f-s,j="M".concat(m,", ").concat(v," L").concat(O,", ").concat(h);return{svgWidth:p,svgHeight:b,startX:m,startY:v,endX:O,endY:h,path:j}})),f=Object(j["computed"])((function(){if(!r.value||!l.value)return{};var e=Object(rn["a"])(r.value,2),t=e[0],n=e[1],o=Object(rn["a"])(l.value,2),c=o[0],a=o[1],i=Math.min(t,c),d=Math.max(t,c),s=Math.min(n,a),f=Math.max(n,a),p=d-i,b=f-s;return{left:i-u.x+"px",top:s-u.y+"px",width:p+"px",height:b+"px"}}));return{selectionRef:i,start:r,end:l,creatingElement:a,createSelection:d,lineData:s,position:f}}});n("1949");Or.render=vr,Or.__scopeId="data-v-3c5b7aac";var hr=Or,jr=Object(j["withScopeId"])("data-v-4def6455"),gr=jr((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("BorderLine"),l=Object(j["resolveComponent"])("ResizeHandler");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"multi-select-operate",style:{left:e.minX*e.canvasScale+"px",top:e.minY*e.canvasScale+"px"}},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:e.type,type:e.type,style:e.style},null,8,["type","style"])})),128)),e.disableResize?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],{key:0},Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:t.direction,type:t.direction,style:t.style,onMousedown:Object(j["withModifiers"])((function(n){return e.scaleMultiElement(n,{minX:e.minX,maxX:e.maxX,minY:e.minY,maxY:e.maxY},t.direction)}),["stop"])},null,8,["type","style","onMousedown"])})),128))],4)})),yr=function(e,t){var n=Object(j["computed"])((function(){return[{direction:ne.LEFT_TOP,style:{}},{direction:ne.TOP,style:{left:e.value/2+"px"}},{direction:ne.RIGHT_TOP,style:{left:e.value+"px"}},{direction:ne.LEFT,style:{top:t.value/2+"px"}},{direction:ne.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}},{direction:ne.LEFT_BOTTOM,style:{top:t.value+"px"}},{direction:ne.BOTTOM,style:{left:e.value/2+"px",top:t.value+"px"}},{direction:ne.RIGHT_BOTTOM,style:{left:e.value+"px",top:t.value+"px"}}]})),o=Object(j["computed"])((function(){return[{direction:ne.LEFT,style:{top:t.value/2+"px"}},{direction:ne.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}}]})),c=Object(j["computed"])((function(){return[{type:te.T,style:{width:e.value+"px"}},{type:te.B,style:{top:t.value+"px",width:e.value+"px"}},{type:te.L,style:{height:t.value+"px"}},{type:te.R,style:{left:e.value+"px",height:t.value+"px"}}]}));return{resizeHandlers:n,textElementResizeHandlers:o,borderLines:c}},kr=Object(j["withScopeId"])("data-v-1c2a68d0"),Er=kr((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["resize-handler",n.type]},null,2)})),Ir={name:"resize-handler",props:{type:{type:String,default:""}}};n("a933");Ir.render=Er,Ir.__scopeId="data-v-1c2a68d0";var Sr=Ir,Cr=Object(j["withScopeId"])("data-v-630e246b"),Nr=Cr((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["border-line",n.type,{wide:n.isWide}]},null,2)})),xr={name:"border-line",props:{type:{type:String,required:!0},isWide:{type:Boolean,default:!1}}};n("fb1d");xr.render=Nr,xr.__scopeId="data-v-630e246b";var Tr=xr,Lr=Object(j["defineComponent"])({name:"multi-select-operate",components:{ResizeHandler:Sr,BorderLine:Tr},props:{elementList:{type:Array,required:!0},scaleMultiElement:{type:Function,required:!0}},setup:function(e){var t=Y(),n=Object(j["computed"])((function(){return t.state.activeElementIdList})),o=Object(j["computed"])((function(){return t.state.canvasScale})),c=Object(j["computed"])((function(){return e.elementList.filter((function(e){return n.value.includes(e.id)}))})),a=Object(j["reactive"])({minX:0,maxX:0,minY:0,maxY:0}),r=Object(j["computed"])((function(){return(a.maxX-a.minX)*o.value})),l=Object(j["computed"])((function(){return(a.maxY-a.minY)*o.value})),i=yr(r,l),u=i.resizeHandlers,d=i.borderLines,s=function(){var e=Ao(c.value),t=e.minX,n=e.maxX,o=e.minY,r=e.maxY;a.minX=t,a.maxX=n,a.minY=o,a.maxY=r};Object(j["watchEffect"])(s);var f=Object(j["computed"])((function(){return c.value.some((function(e){return!!("image"!==e.type&&"shape"!==e.type||e.rotate)}))}));return Object(R["a"])(Object(R["a"])({},Object(j["toRefs"])(a)),{},{canvasScale:o,borderLines:d,disableResize:f,resizeHandlers:u})}});n("de7c");Lr.render=gr,Lr.__scopeId="data-v-4def6455";var wr=Lr,Vr=Object(j["withScopeId"])("data-v-558a94fe");Object(j["pushScopeId"])("data-v-558a94fe");var _r={key:1,class:"animation-index"};Object(j["popScopeId"])();var Br=Vr((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["operate",{"multi-select":e.isMultiSelect&&!e.isActive}],style:{top:e.elementInfo.top*e.canvasScale+"px",left:e.elementInfo.left*e.canvasScale+"px",transform:"rotate(".concat(e.elementInfo.rotate,"deg)"),transformOrigin:"".concat(e.elementInfo.width*e.canvasScale/2,"px ").concat(e.elementInfo.height*e.canvasScale/2,"px")}},[e.isSelected?(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentOperateComponent),{key:0,elementInfo:e.elementInfo,isActiveGroupElement:e.isActiveGroupElement,isMultiSelect:e.isMultiSelect,rotateElement:e.rotateElement,scaleElement:e.scaleElement,dragLineElement:e.dragLineElement},null,8,["elementInfo","isActiveGroupElement","isMultiSelect","rotateElement","scaleElement","dragLineElement"])):Object(j["createCommentVNode"])("",!0),"elAnimation"===e.toolbarState&&-1!==e.elementIndexInAnimation?(Object(j["openBlock"])(),Object(j["createBlock"])("div",_r,Object(j["toDisplayString"])(e.elementIndexInAnimation+1),1)):Object(j["createCommentVNode"])("",!0)],6)})),Dr=Object(j["withScopeId"])("data-v-5b0628aa"),Mr=Dr((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("BorderLine"),l=Object(j["resolveComponent"])("ResizeHandler"),i=Object(j["resolveComponent"])("RotateHandler");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["image-element-operate",{cliping:e.isCliping}]},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-border-line",key:e.type,type:e.type,style:e.style},null,8,["type","style"])})),128)),e.elementInfo.lock||!e.isActiveGroupElement&&e.isMultiSelect?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{class:"operate-resize-handler",key:t.direction,type:t.direction,style:t.style,onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","style","onMousedown"])})),128)),Object(j["createVNode"])(i,{class:"operate-rotate-handler",style:{left:e.scaleWidth/2+"px"},onMousedown:t[1]||(t[1]=Object(j["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64))],2)})),Ar=Object(j["withScopeId"])("data-v-9a549510");Object(j["pushScopeId"])("data-v-9a549510");var Pr={class:"rotate-handler"};Object(j["popScopeId"])();var Rr=Ar((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",Pr)})),Fr={name:"rotate-handler"};n("8754");Fr.render=Rr,Fr.__scopeId="data-v-9a549510";var Hr=Fr,zr=Object(j["defineComponent"])({name:"image-element-operate",inheritAttrs:!1,components:{RotateHandler:Hr,ResizeHandler:Sr,BorderLine:Tr},props:{elementInfo:{type:Object,required:!0},isActiveGroupElement:{type:Boolean,required:!0},isMultiSelect:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=Y(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return t.state.clipingImageElementId})),c=Object(j["computed"])((function(){return o.value===e.elementInfo.id})),a=Object(j["computed"])((function(){return e.elementInfo.width*n.value})),r=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),l=yr(a,r),i=l.resizeHandlers,u=l.borderLines;return{isCliping:c,scaleWidth:a,resizeHandlers:i,borderLines:u}}});n("5c02");zr.render=Mr,zr.__scopeId="data-v-5b0628aa";var Ur=zr,Gr={class:"text-element-operate"};function qr(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("BorderLine"),l=Object(j["resolveComponent"])("ResizeHandler"),i=Object(j["resolveComponent"])("RotateHandler");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Gr,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-border-line",key:e.type,type:e.type,style:e.style},null,8,["type","style"])})),128)),e.elementInfo.lock||!e.isActiveGroupElement&&e.isMultiSelect?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.textElementResizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{class:"operate-resize-handler",key:t.direction,type:t.direction,style:t.style,onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","style","onMousedown"])})),128)),Object(j["createVNode"])(i,{class:"operate-rotate-handler",style:{left:e.scaleWidth/2+"px"},onMousedown:t[1]||(t[1]=Object(j["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64))])}var Xr=Object(j["defineComponent"])({name:"text-element-operate",inheritAttrs:!1,components:{RotateHandler:Hr,ResizeHandler:Sr,BorderLine:Tr},props:{elementInfo:{type:Object,required:!0},isActiveGroupElement:{type:Boolean,required:!0},isMultiSelect:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=Y(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return e.elementInfo.width*n.value})),c=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),a=yr(o,c),r=a.textElementResizeHandlers,l=a.borderLines;return{scaleWidth:o,textElementResizeHandlers:r,borderLines:l}}});Xr.render=qr;var Wr=Xr,Yr={class:"shape-element-operate"};function Zr(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("BorderLine"),l=Object(j["resolveComponent"])("ResizeHandler"),i=Object(j["resolveComponent"])("RotateHandler");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Yr,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-border-line",key:e.type,type:e.type,style:e.style},null,8,["type","style"])})),128)),e.elementInfo.lock||!e.isActiveGroupElement&&e.isMultiSelect?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{class:"operate-resize-handler",key:t.direction,type:t.direction,style:t.style,onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","style","onMousedown"])})),128)),Object(j["createVNode"])(i,{class:"operate-rotate-handler",style:{left:e.scaleWidth/2+"px"},onMousedown:t[1]||(t[1]=Object(j["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64))])}var Jr=Object(j["defineComponent"])({name:"shape-element-operate",inheritAttrs:!1,components:{RotateHandler:Hr,ResizeHandler:Sr,BorderLine:Tr},props:{elementInfo:{type:Object,required:!0},isActiveGroupElement:{type:Boolean,required:!0},isMultiSelect:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=Y(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return e.elementInfo.width*n.value})),c=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),a=yr(o,c),r=a.resizeHandlers,l=a.borderLines;return{scaleWidth:o,resizeHandlers:r,borderLines:l}}});Jr.render=Zr;var Kr=Jr,Qr={class:"text-element-operate"};function $r(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ResizeHandler");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Qr,[e.elementInfo.lock||!e.isActiveGroupElement&&e.isMultiSelect?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],{key:0},Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,style:t.style,onMousedown:Object(j["withModifiers"])((function(n){return e.dragLineElement(n,e.elementInfo,t.handler)}),["stop"])},null,8,["type","style","onMousedown"])})),128))])}var el=Object(j["defineComponent"])({name:"text-element-operate",inheritAttrs:!1,components:{ResizeHandler:Sr},props:{elementInfo:{type:Object,required:!0},isActiveGroupElement:{type:Boolean,required:!0},isMultiSelect:{type:Boolean,required:!0},dragLineElement:{type:Function,required:!0}},setup:function(e){var t=Y(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){var t=[{handler:oe.START,style:{left:e.elementInfo.start[0]*n.value+"px",top:e.elementInfo.start[1]*n.value+"px"}},{handler:oe.END,style:{left:e.elementInfo.end[0]*n.value+"px",top:e.elementInfo.end[1]*n.value+"px"}}];if(e.elementInfo.curve||e.elementInfo.broken){var o=e.elementInfo.curve||e.elementInfo.broken;t.push({handler:oe.MID,style:{left:o[0]*n.value+"px",top:o[1]*n.value+"px"}})}return t}));return{resizeHandlers:o}}});el.render=$r;var tl=el,nl={class:"chart-element-operate"};function ol(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("BorderLine"),l=Object(j["resolveComponent"])("ResizeHandler");return Object(j["openBlock"])(),Object(j["createBlock"])("div",nl,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-border-line",key:e.type,type:e.type,style:e.style},null,8,["type","style"])})),128)),e.elementInfo.lock||!e.isActiveGroupElement&&e.isMultiSelect?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],{key:0},Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{class:"operate-resize-handler",key:t.direction,type:t.direction,style:t.style,onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","style","onMousedown"])})),128))])}var cl=Object(j["defineComponent"])({name:"chart-element-operate",inheritAttrs:!1,components:{ResizeHandler:Sr,BorderLine:Tr},props:{elementInfo:{type:Object,required:!0},isActiveGroupElement:{type:Boolean,required:!0},isMultiSelect:{type:Boolean,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=Y(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return e.elementInfo.width*n.value})),c=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),a=yr(o,c),r=a.resizeHandlers,l=a.borderLines;return{scaleWidth:o,resizeHandlers:r,borderLines:l}}});cl.render=ol;var al=cl,rl={class:"table-element-operate"};function ll(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("BorderLine"),l=Object(j["resolveComponent"])("ResizeHandler");return Object(j["openBlock"])(),Object(j["createBlock"])("div",rl,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-border-line",key:e.type,type:e.type,style:e.style},null,8,["type","style"])})),128)),e.elementInfo.lock||!e.isActiveGroupElement&&e.isMultiSelect?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],{key:0},Object(j["renderList"])(e.textElementResizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{class:"operate-resize-handler",key:t.direction,type:t.direction,style:t.style,onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","style","onMousedown"])})),128))])}var il=Object(j["defineComponent"])({name:"table-element-operate",inheritAttrs:!1,components:{ResizeHandler:Sr,BorderLine:Tr},props:{elementInfo:{type:Object,required:!0},isActiveGroupElement:{type:Boolean,required:!0},isMultiSelect:{type:Boolean,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=Y(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return e.elementInfo.outline.width||1})),c=Object(j["computed"])((function(){return(e.elementInfo.width+o.value)*n.value})),a=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),r=yr(c,a),l=r.textElementResizeHandlers,i=r.borderLines;return{scaleWidth:c,textElementResizeHandlers:l,borderLines:i}}});il.render=ll;var ul=il,dl=Object(j["defineComponent"])({name:"operate",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}},setup:function(e){var t=Y(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return t.state.toolbarState})),c=Object(j["computed"])((function(){return t.getters.currentSlide})),a=Object(j["computed"])((function(){var t,n=(t={},Object(N["a"])(t,Xt.IMAGE,Ur),Object(N["a"])(t,Xt.TEXT,Wr),Object(N["a"])(t,Xt.SHAPE,Kr),Object(N["a"])(t,Xt.LINE,tl),Object(N["a"])(t,Xt.CHART,al),Object(N["a"])(t,Xt.TABLE,ul),t);return n[e.elementInfo.type]||null})),r=Object(j["computed"])((function(){var t=c.value.animations||[];return t.findIndex((function(t){return t.elId===e.elementInfo.id}))}));return{currentOperateComponent:a,canvasScale:n,toolbarState:o,elementIndexInAnimation:r}}});n("9884");dl.render=Br,dl.__scopeId="data-v-558a94fe";var sl=dl,fl=Object(j["defineComponent"])({name:"editor-canvas",components:{EditableElement:Qa,MouseSelection:nr,ViewportBackground:dr,AlignmentLine:br,ElementCreateSelection:hr,MultiSelectOperate:wr,Operate:sl},setup:function(){var e=Y(),t=Object(j["computed"])((function(){return e.state.activeElementIdList})),n=Object(j["computed"])((function(){return e.state.handleElementId})),o=Object(j["computed"])((function(){return e.state.editorAreaFocus})),c=Object(j["computed"])((function(){return e.state.ctrlKeyState})),a=Object(j["computed"])((function(){return e.getters.ctrlOrShiftKeyActive})),r=Object(j["ref"])(),l=Object(j["ref"])([]),i=Object(j["ref"])("");Object(j["watch"])(n,(function(){return i.value=""}));var u=Object(j["computed"])((function(){return e.getters.currentSlide})),d=Object(j["ref"])([]),s=function(){d.value=u.value?JSON.parse(JSON.stringify(u.value.elements)):[]};Object(j["watchEffect"])(s);var f=Object(j["ref"])(),p=Object(j["computed"])((function(){return e.state.canvasScale})),b=_o(f),m=b.viewportStyles;Fo(f);var v=Ro(d,r),O=v.mouseSelectionState,h=v.updateMouseSelection,g=ec(d,i,l),k=g.dragElement,E=tc(d),I=E.dragLineElement,S=$o(d,i,k),C=S.selectElement,N=Jo(d,i,l),x=N.scaleElement,T=N.scaleMultiElement,L=zo(d,r),w=L.rotateElement,V=Pe(),_=V.selectAllElement,B=De(),D=B.deleteAllElements,M=Ae(),A=M.pasteElement,P=Ge(),R=P.enterScreening,F=function(t){e.commit(y.SET_ACTIVE_ELEMENT_ID_LIST,[]),a.value||h(t),o.value||e.commit(y.SET_EDITORAREA_FOCUS,!0),Vo()},H=function(){o.value&&e.commit(y.SET_EDITORAREA_FOCUS,!1)},z=qe(),U=z.scaleCanvas,G=Ce()(U,100,{leading:!0,trailing:!1}),q=function(e){c.value&&(e.preventDefault(),e.deltaY>0?G("-"):e.deltaY<0&&G("+"))},X=Object(j["computed"])((function(){return e.state.showGridLines})),W=function(){e.commit(y.SET_GRID_LINES_STATE,!X.value)},Z=Object(j["computed"])((function(){return e.state.creatingElement})),J=nc(r),K=J.insertElementFromCreateSelection,Q=function(){return[{text:"粘贴",subText:"Ctrl + V",handler:A},{text:"全选",subText:"Ctrl + A",handler:_},{text:"网格线",subText:X.value?"√":"",handler:W},{text:"重置当前页",handler:D},{divider:!0},{text:"从当前页演示",subText:"Ctrl+F",handler:R}]};return Object(j["provide"])("slideScale",p),{elementList:d,activeElementIdList:t,handleElementId:n,activeGroupElementId:i,canvasRef:f,viewportRef:r,viewportStyles:m,canvasScale:p,mouseSelectionState:O,handleClickBlankArea:F,removeEditorAreaFocus:H,currentSlide:u,creatingElement:Z,insertElementFromCreateSelection:K,alignmentLines:l,selectElement:C,rotateElement:w,scaleElement:x,dragLineElement:I,scaleMultiElement:T,mousewheelScaleCanvas:q,contextmenus:Q}}});n("0b92");fl.render=wo,fl.__scopeId="data-v-17169d5c";var pl=fl,bl=Object(j["withScopeId"])("data-v-59ae6536");Object(j["pushScopeId"])("data-v-59ae6536");var ml={class:"canvas-tool"},vl={class:"left-handler"},Ol={class:"add-element-handler"},hl={class:"right-handler"},jl={class:"text"};Object(j["popScopeId"])();var gl=bl((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconBack"),l=Object(j["resolveComponent"])("Tooltip"),i=Object(j["resolveComponent"])("IconNext"),u=Object(j["resolveComponent"])("IconFontSize"),d=Object(j["resolveComponent"])("IconPicture"),s=Object(j["resolveComponent"])("FileInput"),f=Object(j["resolveComponent"])("ShapePool"),p=Object(j["resolveComponent"])("IconGraphicDesign"),b=Object(j["resolveComponent"])("Popover"),m=Object(j["resolveComponent"])("LinePool"),v=Object(j["resolveComponent"])("IconConnection"),O=Object(j["resolveComponent"])("ChartPool"),h=Object(j["resolveComponent"])("IconChartProportion"),g=Object(j["resolveComponent"])("TableGenerator"),y=Object(j["resolveComponent"])("IconInsertTable"),k=Object(j["resolveComponent"])("IconMinus"),E=Object(j["resolveComponent"])("IconPlus"),I=Object(j["resolveComponent"])("IconFullScreen");return Object(j["openBlock"])(),Object(j["createBlock"])("div",ml,[Object(j["createVNode"])("div",vl,[Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"撤销"},{default:bl((function(){return[Object(j["createVNode"])(r,{class:["handler-item",{disable:!e.canUndo}],onClick:t[1]||(t[1]=function(t){return e.undo()})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"重做"},{default:bl((function(){return[Object(j["createVNode"])(i,{class:["handler-item",{disable:!e.canRedo}],onClick:t[2]||(t[2]=function(t){return e.redo()})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"])]),Object(j["createVNode"])("div",Ol,[Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入文字"},{default:bl((function(){return[Object(j["createVNode"])(u,{class:"handler-item",onClick:t[3]||(t[3]=function(t){return e.drawText()})})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(s,{onChange:t[4]||(t[4]=function(t){return e.insertImageElement(t)})},{default:bl((function(){return[Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入图片"},{default:bl((function(){return[Object(j["createVNode"])(d,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(b,{trigger:"click",visible:e.shapePoolVisible,"onUpdate:visible":t[6]||(t[6]=function(t){return e.shapePoolVisible=t})},{content:bl((function(){return[Object(j["createVNode"])(f,{onSelect:t[5]||(t[5]=function(t){return e.drawShape(t)})})]})),default:bl((function(){return[Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入形状"},{default:bl((function(){return[Object(j["createVNode"])(p,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(j["createVNode"])(b,{trigger:"click",visible:e.linePoolVisible,"onUpdate:visible":t[8]||(t[8]=function(t){return e.linePoolVisible=t})},{content:bl((function(){return[Object(j["createVNode"])(m,{onSelect:t[7]||(t[7]=function(t){return e.drawLine(t)})})]})),default:bl((function(){return[Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入线条"},{default:bl((function(){return[Object(j["createVNode"])(v,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(j["createVNode"])(b,{trigger:"click",visible:e.chartPoolVisible,"onUpdate:visible":t[10]||(t[10]=function(t){return e.chartPoolVisible=t})},{content:bl((function(){return[Object(j["createVNode"])(O,{onSelect:t[9]||(t[9]=function(t){e.createChartElement(t),e.chartPoolVisible=!1})})]})),default:bl((function(){return[Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入图表"},{default:bl((function(){return[Object(j["createVNode"])(h,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(j["createVNode"])(b,{trigger:"click",visible:e.tableGeneratorVisible,"onUpdate:visible":t[13]||(t[13]=function(t){return e.tableGeneratorVisible=t})},{content:bl((function(){return[Object(j["createVNode"])(g,{onClose:t[11]||(t[11]=function(t){return e.tableGeneratorVisible=!1}),onInsert:t[12]||(t[12]=function(t){var n=t.row,o=t.col;e.createTableElement(n,o),e.tableGeneratorVisible=!1})})]})),default:bl((function(){return[Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入表格"},{default:bl((function(){return[Object(j["createVNode"])(y,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"])]),Object(j["createVNode"])("div",hl,[Object(j["createVNode"])(k,{class:"handler-item viewport-size",onClick:t[14]||(t[14]=function(t){return e.scaleCanvas("-")})}),Object(j["createVNode"])("span",jl,Object(j["toDisplayString"])(e.canvasScalePercentage),1),Object(j["createVNode"])(E,{class:"handler-item viewport-size",onClick:t[15]||(t[15]=function(t){return e.scaleCanvas("+")})}),Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"适配屏幕"},{default:bl((function(){return[Object(j["createVNode"])(I,{class:"handler-item viewport-size-adaptation",onClick:t[16]||(t[16]=function(t){return e.setCanvasPercentage(90)})})]})),_:1},8,["mouseEnterDelay"])])])})),yl=Object(j["withScopeId"])("data-v-5aabd717");Object(j["pushScopeId"])("data-v-5aabd717");var kl={class:"shape-pool"},El={class:"category-name"},Il={class:"shape-list"};Object(j["popScopeId"])();var Sl=yl((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("SvgWrapper");return Object(j["openBlock"])(),Object(j["createBlock"])("div",kl,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.shapeList,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"category",key:t.type},[Object(j["createVNode"])("div",El,Object(j["toDisplayString"])(t.type),1),Object(j["createVNode"])("div",Il,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(t.children,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"shape-item",key:n},[Object(j["createVNode"])("div",{class:"shape-content",onClick:function(n){return e.selectShape(t)}},[Object(j["createVNode"])(r,{overflow:"visible",width:"18",height:"18"},{default:yl((function(){return[Object(j["createVNode"])("g",{transform:"scale(".concat(18/t.viewBox,", ").concat(18/t.viewBox,") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(j["createVNode"])("path",{class:"shape-path","vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8","stroke-linejoin":"",fill:"transparent",stroke:"#999","stroke-width":"2",d:t.path},null,8,["d"])],8,["transform"])]})),_:2},1024)],8,["onClick"])])})),128))])])})),128))])})),Cl=[{type:"矩形",children:[{viewBox:200,path:"M 0 0 L 200 0 L 200 200 L 0 200 Z"},{viewBox:200,path:"M 20 0 L 180 0 Q 200 0 200 20 L 200 180 Q 200 200 180 200 L 20 200 Q 0 200 0 180 L 0 20 Q 0 0 20 0 Z"},{viewBox:200,path:"M 0 150 L 0 0 L 150 0 L 200 50 L 200 200 L 50 200 L 0 150 Z"},{viewBox:200,path:"M 0 200 L 0 0 L 150 0 L 200 50 L 200 200 L 0 200"},{viewBox:200,path:"M 0 50 L 50 0 L 150 0 L 200 50 L 200 200 L 0 200 L 0 50 Z"},{viewBox:200,path:"M 0 0 L 140 0 Q 200 0 200 60 L 200 200 L 60 200 Q 0 200 0 140 L 0 0 Z"},{viewBox:200,path:"M 0 0 L 140 0 Q 200 0 200 60 L 200 200 L 0 200 L 0 0 Z"},{viewBox:200,path:"M 0 50 Q 0 0 50 0 L 150 0 Q 200 0 200 50 L 200 200 L 0 200 L 0 50 Z"}]},{type:"常用形状",children:[{viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z"},{viewBox:200,path:"M 100 0 A 100 100 102 1 0 200 100 L 100 100 L 100 0 Z"},{viewBox:200,path:"M 100 0 A 100 100 102 1 0 200 100 L 100 0 Z"},{viewBox:200,path:"M 100 0 A 100 100 102 1 0 200 100 L 200 0 L 100 0 Z"},{viewBox:200,path:"M 0 0 L 200 0 Q 200 200 0 200 L 0 0 Z"},{viewBox:200,path:"M 100 0 L 0 200 L 200 200 L 100 0 Z"},{viewBox:200,path:"M 0 0 L 0 200 L 200 200 Z"},{viewBox:200,path:"M 50 0 L 200 0 L 150 200 L 0 200 L 50 0 Z"},{viewBox:200,path:"M 0 0 L 150 0 L 200 200 L 50 200 L 0 0 Z"},{viewBox:200,path:"M 50 0 L 150 0 L 200 200 L 0 200 L 50 0 Z"},{viewBox:200,path:"M 100 0 L 0 100 L 100 200 L 200 100 L 100 0 Z"},{viewBox:200,path:"M 100 0 L 0 90 L 50 200 L 150 200 L 200 90 L 100 0 Z"},{viewBox:200,path:"M 100 0 L 0 60 L 0 140 L 100 200 L 200 140 L 200 60 L 100 0 Z"},{viewBox:200,path:"M 60 0 L 140 0 L 200 60 L 200 140 L 140 200 L 60 200 L 0 140 L 0 60 L 60 0 Z"},{viewBox:200,path:"M 75 0 L 125 0 L 175 25 L 200 75 L 200 125 L 175 175 L 125 200 L 75 200 L 25 175 L 0 125 L 0 75 L 25 25 L 75 0 Z"},{viewBox:200,path:"M 100 0 L 0 50 L 0 200 L 200 200 L 200 50 L 100 0 Z"},{viewBox:200,path:"M 150 0 A 50 100 0 1 1 150 200 L 0 200 L 0 0 L 150 0 Z"},{viewBox:200,path:"M 150 0 A 50 100 0 1 1 150 200 L 0 200 A 50 100 0 0 0 0 0 L 150 0 Z"},{viewBox:200,path:"M 200 100 L 150 0 L 0 0 L 50 100 L 0 200 L 150 200 L 200 100 Z"},{viewBox:200,path:"M 200 0 L 200 200 L 0 200 L 0 100 L 200 0 Z"},{viewBox:200,path:"M 0 0 L 200 100 L 200 200 L 0 200 L 0 0 Z"},{viewBox:200,path:"M 200 0 L 100 0 L 0 100 L 0 200 L 200 0 Z"},{viewBox:200,path:"M 50 0 L 150 0 L 150 50 L 200 50 L 200 150 L 150 150 L 150 200 L 50 200 L 50 150 L 0 150 L 0 50 L 50 50 L 50 0 Z"},{viewBox:200,path:"M 0 0 L 0 200 L 200 200 L 200 140 L 60 140 L 60 0 L 0 0 Z"},{viewBox:200,path:"M0 0 L200 0 L200 200 L0 200 L0 0 Z M50 50 L50 150 L150 150 L150 50 Z"},{viewBox:200,path:"M0 100 A100 100 0 1 1 0 101 Z M150 100 A50 50 0 1 0 150 101 Z"},{viewBox:200,path:"M 70 0 L 70 70 L 0 70 L 0 130 L 70 130 L 70 200 L 130 200 L 130 130 L 200 130 L 200 70 L 130 70 L 130 0 L 70 0 Z"},{viewBox:200,path:"M 40 0 L 0 40 L 60 100 L 0 160 L 40 200 L 100 140 L 160 200 L 200 160 L 140 100 L 200 40 L 160 0 L 100 60 L 40 0 Z"},{viewBox:200,path:"M 0 0 L 200 0 L 200 160 L 100 160 L 60 200 L 60 160 L 0 160 L 0 0 Z"},{viewBox:200,path:"M 0 40 Q 0 0 40 0 L 160 0 Q 200 0 200 40 L 200 120 Q 200 160 160 160 L 100 160 L 60 200 L 60 160 L 40 160 Q 0 160 0 120 L 0 40 Z"},{viewBox:200,path:"M 180 160 A 100 100 0 1 0 100 200 L 200 200 L 200 160 L 180 160 Z"},{viewBox:200,path:"M 200 0 L 0 0 L 200 200 L 0 200 L 200 0 Z"}]},{type:"箭头",children:[{viewBox:200,path:"M 100 0 L 0 100 L 50 100 L 50 200 L 150 200 L 150 100 L 200 100 L 100 0 Z"},{viewBox:200,path:"M 100 200 L 200 100 L 150 100 L 150 0 L 50 0 L 50 100 L 0 100 L 100 200 Z"},{viewBox:200,path:"M 0 100 L 100 0 L 100 50 L 200 50 L 200 150 L 100 150 L 100 200 L 0 100 Z"},{viewBox:200,path:"M 200 100 L 100 0 L 100 50 L 0 50 L 0 150 L 100 150 L 100 200 L 200 100 Z"},{viewBox:200,path:"M 100 0 L 0 60 L 60 60 L 60 140 L 0 140 L 100 200 L 200 140 L 140 140 L 140 60 L 200 60 L 100 0 Z"},{viewBox:200,path:"M 0 100 L 60 0 L 60 60 L 140 60 L 140 0 L 200 100 L 140 200 L 140 140 L 60 140 L 60 200 L 0 100 Z"},{viewBox:200,path:"M 100 0 L 60 40 L 80 40 L 80 80 L 40 80 L 40 60 L 0 100 L 40 140 L 40 120 L 80 120 L 80 160 L 60 160 L 100 200 L 140 160 L 120 160 L 120 120 L 160 120 L 160 140 L 200 100 L 160 60 L 160 80 L 120 80 L 120 40 L 140 40 L 100 0 Z"},{viewBox:200,path:"M 0 100 L 100 0 L 100 50 L 200 50 L 150 100 L 200 150 L 100 150 L 100 200 L 0 100 Z"},{viewBox:200,path:"M 200 100 L 100 0 L 100 50 L 0 50 L 50 100 L 0 150 L 100 150 L 100 200 L 200 100 Z"},{viewBox:200,path:"M 0 100 L 80 20 L 80 80 L 120 80 L 120 0 L 200 0 L 200 200 L 120 200 L 120 120 L 80 120 L 80 180 L 0 100 Z"},{viewBox:200,path:"M 200 100 L 120 20 L 120 80 L 80 80 L 80 0 L 0 0 L 0 200 L 80 200 L 80 120 L 120 120 L 120 180 L 200 100 Z"},{viewBox:200,path:"M 0 0 L 120 0 L 200 100 L 120 200 L 0 200 L 80 100 L 0 0 Z"},{viewBox:200,path:"M 80 0 L 200 0 L 120 100 L 200 200 L 80 200 L 0 100 L 80 0 Z"},{viewBox:200,path:"M 0 0 L 140 0 L 200 100 L 140 200 L 0 200 L 0 100 L 0 0 Z"},{viewBox:200,path:"M 60 0 L 200 0 L 200 100 L 200 200 L 60 200 L 0 100 L 60 0 Z"},{viewBox:200,path:"M 0 0 L 200 100 L 0 200 L 60 100 L 0 0 Z"},{viewBox:200,path:"M 200 0 L 0 100 L 200 200 L 140 100 L 200 0 Z"},{viewBox:200,path:"M 0 0 L 80 0 L 200 100 L 80 200 L 0 200 L 120 100 L 0 0 Z"},{viewBox:200,path:"M 200 0 L 120 0 L 0 100 L 120 200 L 200 200 L 80 100 L 200 0 Z"},{viewBox:200,path:"M 0 200 L 180 200 L 180 40 L 200 40 L 160 0 L 120 40 L 140 40 L 140 160 L 0 160 L 0 200 Z"},{viewBox:200,path:"M 0 200 L 0 20 L 160 20 L 160 0 L 200 40 L 160 80 L 160 60 L 40 60 L 40 200 L 0 200 Z"},{viewBox:200,path:"M 40 180 L 180 180 L 180 40 L 200 40 L 160 0 L 120 40 L 140 40 L 140 140 L 40 140 L 40 120 L 0 160 L 40 200 L 40 180 Z"},{viewBox:1024,path:"M398.208 302.912V64L0 482.112l398.208 418.176V655.36c284.48 0 483.584 95.552 625.792 304.64-56.896-298.688-227.584-597.312-625.792-657.088z"},{viewBox:1024,path:"M625.792 302.912V64L1024 482.112l-398.208 418.176V655.36C341.312 655.36 142.208 750.912 0 960c56.896-298.688 227.584-597.312 625.792-657.088z"}]},{type:"其他形状",children:[{viewBox:1024,path:"M995.336 243.4016c-15.7584-36.5736-38.3376-69.26639999-66.91440001-97.37280001-28.5768-27.98879999-61.73999999-49.8624-98.78399999-65.26799998-38.22-15.876-78.6744-23.8728-120.4224-23.87280001-57.97680001 0-114.5424 15.876-163.69919999 45.864-11.76 7.17360001-22.932 15.05279999-33.51600001 23.63760001-10.584-8.5848-21.75600001-16.46400001-33.51600001-23.63760001-49.1568-29.98799999-105.7224-45.86399999-163.69919999-45.864-41.74799999 0-82.2024 7.9968-120.4224 23.87280001-36.9264 15.28799999-70.2072 37.27919999-98.78399999 65.26799998-28.6944 28.10640001-51.156 60.79919999-66.91440001 97.37280001-16.34639999 37.9848-24.696 78.3216-24.696 119.83439999 0 39.1608 7.9968 79.96800001 23.8728 121.48080001 13.28880001 34.692 32.34000001 70.67760001 56.6832 107.016 38.57279999 57.5064 91.61040001 117.4824 157.4664 178.28160001 109.1328 100.78319999 217.2072 170.4024 221.79359999 173.22479998l27.87120001 17.8752c12.348 7.8792 28.224 7.8792 40.572 0l27.87119999-17.8752c4.58639999-2.94 112.54319999-72.44159999 221.79360001-173.22479998 65.85599999-60.79919999 118.89359999-120.7752 157.4664-178.28160001 24.3432-36.33839999 43.512-72.324 56.68319999-107.016 15.876-41.5128 23.8728-82.32 23.87280001-121.48080001 0.1176-41.5128-8.232-81.8496-24.5784-119.83439999z"},{viewBox:1024,path:"M985.20746667 343.50079998l-303.32586667-44.08319999L546.28693333 24.5248c-3.70346666-7.5264-9.79626667-13.6192-17.32266665-17.32266668-18.87573334-9.3184-41.81333333-1.55306667-51.25120001 17.32266668L342.1184 299.41759999l-303.32586667 44.08319999c-8.36266667 1.19466667-16.00853333 5.13706667-21.8624 11.11040001-14.69440001 15.17226667-14.45546667 39.30453334 0.71679999 54.1184l219.46026668 213.9648-51.84853333 302.1312c-1.43359999 8.24320001-0.11946667 16.8448 3.82293333 24.25173333 9.79626667 18.6368 32.9728 25.92426667 51.6096 16.00853334L512 822.44266665l271.3088 142.64320001c7.40693333 3.9424 16.00853333 5.25653333 24.25173333 3.82293333 20.78719999-3.584 34.7648-23.296 31.1808-44.0832l-51.84853333-302.1312 219.46026668-213.9648c5.97333334-5.85386666 9.91573333-13.49973334 11.11039999-21.8624 3.2256-20.90666667-11.34933333-40.26026667-32.256-43.36640001z"},{viewBox:1024,path:"M852.65066667 405.84533333C800.54044445 268.40177778 667.76177778 170.66666667 512.22755555 170.66666667S223.91466667 268.288 171.80444445 405.73155555C74.29688889 431.33155555 2.27555555 520.07822222 2.27555555 625.77777778c0 125.72444445 101.83111111 227.55555555 227.44177778 227.55555555h564.56533334C919.89333333 853.33333333 1021.72444445 751.50222222 1021.72444445 625.77777778c0-105.472-71.79377778-194.21866667-169.07377778-219.93244445z"},{viewBox:1024,path:"M926.25224691 323.7371485H654.6457886L898.88200917 15.14388241c5.05486373-6.53433603 0.49315743-16.02761669-7.76722963-16.02761668H418.30008701c-3.45210206 0-6.78091476 1.84934039-8.50696579 4.93157436L90.35039154 555.76772251c-3.82197013 6.53433603 0.86302552 14.7947231 8.50696578 14.79472311h215.01664245l-110.22068713 440.88274851c-2.34249783 9.61657002 9.24670194 16.39748478 16.39748477 9.49328065L933.03316167 340.62779071c6.41104668-6.0411786 2.09591911-16.8906422-6.78091476-16.89064221z"},{viewBox:1024,path:"M878.47822222 463.30311111c-22.18666667-49.83466667-53.93066667-93.98044445-94.32177777-131.072l-33.10933334-30.37866666c-4.89244445-4.32355555-12.62933333-2.38933333-14.79111111 3.75466666l-14.79111111 42.43911111c-9.216 26.624-26.16888889 53.81688889-50.176 80.55466667-1.59288889 1.70666667-3.41333333 2.16177778-4.66488889 2.27555556-1.25155555 0.11377778-3.18577778-0.11377778-4.89244445-1.70666667-1.59288889-1.36533333-2.38933333-3.41333333-2.27555555-5.46133333 4.20977778-68.49422222-16.27022222-145.74933333-61.09866667-229.83111112C561.26577778 124.01777778 509.72444445 69.51822222 445.32622222 31.51644445l-46.99022222-27.648c-6.144-3.64088889-13.99466667 1.13777778-13.65333333 8.30577777l2.50311111 54.61333333c1.70666667 37.31911111-2.61688889 70.31466667-12.85688889 97.73511112-12.51555555 33.56444445-30.49244445 64.73955555-53.47555556 92.72888888-16.15644445 19.56977778-34.24711111 37.20533333-54.04444444 52.45155556-47.90044445 36.75022222-87.38133333 84.65066667-114.11911111 138.24C125.72444445 502.10133333 111.50222222 562.74488889 111.50222222 623.50222222c0 53.70311111 10.58133333 105.69955555 31.51644445 154.73777778 20.25244445 47.21777778 49.152 89.77066667 85.90222222 126.17955555 36.864 36.40888889 79.64444445 65.08088889 127.31733333 84.992C405.61777778 1010.11911111 457.95555555 1020.58666667 512 1020.58666667s106.38222222-10.46755555 155.76177778-31.06133334c47.67288889-19.91111111 90.56711111-48.46933333 127.31733333-84.992 36.864-36.40888889 65.76355555-78.96177778 85.90222222-126.17955555 20.93511111-49.03822222 31.51644445-101.03466667 31.51644445-154.73777778 0-55.52355555-11.37777778-109.45422222-34.01955556-160.31288889z"},{viewBox:1024,path:"M968.20337778 20.11591112H705.44042667c-22.17301333 0-41.92483556 15.16430222-47.14951111 37.33731555C642.36202666 124.73685332 582.08711111 173.03324444 512 173.03324444s-130.36202666-48.29639112-146.29091556-115.58001777c-5.22467555-22.17301333-24.84906667-37.33731556-47.14951111-37.33731555H55.79662222c-30.96576 0-56.06968889 25.10392889-56.06968888 56.06968888v321.12639999c0 30.96576 25.10392889 56.06968889 56.06968888 56.06968889h95.57333334v494.43271112c0 30.96576 25.10392889 56.06968889 56.06968889 56.06968888h609.1207111c30.96576 0 56.06968889-25.10392889 56.06968889-56.06968888V453.38168888h95.57333334c30.96576 0 56.06968889-25.10392889 56.06968888-56.06968889V76.1856c0-30.96576-25.10392889-56.06968889-56.06968888-56.06968888z"},{viewBox:1024,path:"M980.94648889 239.80714666H523.46880001L373.99210666 96.82944c-1.91146667-1.78403556-4.46008889-2.80348444-7.00871111-2.80348445H43.05351111c-22.55530667 0-40.77795555 18.22264888-40.77795555 40.77795557v754.39217776c0 22.55530667 18.22264888 40.77795555 40.77795555 40.77795557h937.89297778c22.55530667 0 40.77795555-18.22264888 40.77795555-40.77795557V280.58510222c0-22.55530667-18.22264888-40.77795555-40.77795555-40.77795556z"},{viewBox:1024,path:"M972.60904597 164.57058577L841.30587843 33.39070759c-18.86327195-18.86327195-44.1375906-29.34286748-70.64480282-29.3428675-26.75379095 0-51.90482023 10.47959553-70.76809219 29.3428675L558.60337778 174.68031322c-18.86327195 18.86327195-29.34286748 44.1375906-29.34286749 70.64480283 0 26.75379095 10.47959553 51.90482023 29.34286749 70.76809218l103.31648301 103.31648302c-24.28800376 53.50758189-57.69942011 101.59043198-99.24793416 143.13894603-41.42522469 41.67180341-89.63136414 75.08321976-143.13894603 99.61780223L316.21649759 558.84995649c-18.86327195-18.86327195-44.1375906-29.34286748-70.64480283-29.34286747-26.75379095 0-51.90482023 10.47959553-70.76809217 29.34286747L33.39070759 700.01627278c-18.86327195 18.86327195-29.34286748 44.1375906-29.3428675 70.76809217 0 26.75379095 10.47959553 51.90482023 29.3428675 70.76809219l131.05658883 131.05658883c30.08260365 30.205893 71.63111769 47.34311394 114.28923598 47.34311394 9.00012323 0 17.63037836-0.73973616 26.13734414-2.21920846 166.19405621-27.37023774 331.03192945-115.76870829 464.06114804-248.67463751C901.84095379 636.27567408 990.11613498 471.56109018 1017.85624079 304.87387654c8.38367642-50.91850535-8.50696579-103.31648302-45.24719482-140.30329077z"},{viewBox:1024,path:"M910.60451556 640.96028445c-20.38897778-65.49959112-43.83630221-120.54983112-79.89930667-210.64362666C836.31217778 193.67708444 737.93535999 2.27555556 511.36284444 2.27555556 282.24170667 2.27555556 186.03121778 197.50001778 192.14791111 430.31665779c-36.19043555 90.22122667-59.51032888 144.88917333-79.89930667 210.64362666-43.32657778 139.53706668-29.30915556 197.26336001-18.60494222 198.53767111 22.9376 2.80348444 89.32920888-105.00323556 89.32920889-105.00323556 0 62.44124445 32.11264001 143.86972444 101.69002667 202.61546667-33.64181333 10.32192-109.20846222 38.10190221-91.24067556 68.55793777 14.52714667 24.59420444 250.01984 15.67402668 317.94062222 8.02816 67.92078222 7.64586667 303.41347556 16.56604444 317.94062223-8.02816 17.96778667-30.32860444-57.72629333-58.23601779-91.24067555-68.55793777 69.57738667-58.87317334 101.69002667-140.30165333 101.69002667-202.61546667 0 0 66.39160889 107.80672 89.32920888 105.00323556 10.83164445-1.40174222 24.84906667-59.12803556-18.47751111-198.53767111z"},{viewBox:1024,path:"M1016.86992592 199.24764445c-37.13706667 16.01991111-77.55093333 27.54939259-119.17842962 32.03982222 42.96248889-25.60758518 75.60912592-66.02145185 91.02222222-114.08118519-39.68568889 23.66577778-84.58998518 41.02068148-131.31472593 50.00154074C819.53374815 126.79395555 765.76995555 101.79318518 706.18074075 101.79318518c-114.688 0-206.92385185 92.96402963-206.92385186 207.04521482 0 16.01991111 1.94180741 32.03982222 5.09724444 47.45291852-171.72859259-8.98085925-324.88865185-91.02222222-426.71217778-216.63288889-17.96171852 30.82619259-28.15620741 66.02145185-28.1562074 104.49351112 0 71.84687408 36.53025185 135.19834075 92.23585185 172.45677036-33.98162963-1.33499259-66.02145185-10.92266667-93.57084445-26.33576296v2.54862222c0 100.6098963 71.1186963 183.98625185 165.90317037 203.1616-17.3549037 4.49042963-35.92343703 7.03905185-54.49197037 7.03905185-13.47128889 0-26.2144-1.33499259-39.07887407-3.15543704C146.69748148 681.90814815 223.03478518 741.49736297 313.93564445 743.43917037c-71.1186963 55.7056-160.19911111 88.4736-256.9253926 88.4736-17.3549037 0-33.37481482-0.60681482-50.00154074-2.54862222C98.75911111 888.22518518 207.62168889 922.20681482 324.85831111 922.20681482 705.45256297 922.20681482 913.71140741 606.90583703 913.71140741 333.23235555c0-8.98085925 0-17.96171852-0.60681482-26.94257777 40.2925037-29.4912 75.60912592-66.02145185 103.76533333-107.04213333z"},{viewBox:1024,path:"M917.96720197 1.08889505H106.03279803C53.56084718 1.08889505 9.37393998 45.27580225 9.37393998 97.74775309v5.52336372c0 19.33177108 8.28504494 41.42522469 22.0934536 55.23363205l331.40179753 392.15879462v325.87843379c0 16.57008987 8.28504494 30.37849854 22.09345359 35.90186098l209.88780469 104.94390299 2.76168121 2.76168121c27.61681602 11.04672615 55.23363335-8.28504494 55.23363335-38.66354218V550.66354348l331.40179753-392.15879462c35.90186097-41.42522469 30.37849854-102.18222047-11.04672616-135.32240022-11.04672615-13.80840865-33.14017975-22.0934536-55.23363335-22.09345359z"},{viewBox:1024,path:"M491.70164031 97.48884502a25.89076502 25.89076502 0 0 1 40.59671938 0L745.66415762 367.01171317a25.89076502 25.89076502 0 0 0 30.49932208 7.72839349l208.00640948-89.14190458a25.89076502 25.89076502 0 0 1 35.56096592 29.06238339l-115.18801541 554.96855704A103.56306132 103.56306132 0 0 1 803.14165689 952.14301275H220.85834311a103.56306132 103.56306132 0 0 1-101.4011828-82.51387024l-115.18801541-554.96855704a25.89076502 25.89076502 0 0 1 35.54802012-29.06238339l208.01935528 89.14190458a25.89076502 25.89076502 0 0 0 30.49932208-7.72839349l213.36579793-269.52286815z"},{viewBox:1024,path:"M643.02466884 387.7801525c19.85376751-88.69205333 33.718272-152.84087467 41.61900049-192.57389433C704.52292267 95.17283515 652.90057916 2.27555515 550.58614084 2.27555515c-92.26012484 0-138.59407685 45.84971417-165.91530666 137.49816969l-0.70087152 2.67605334c-16.40038399 74.13942085-41.47882668 131.61085116-74.6746315 172.73287031a189.06953915 189.06953915 0 0 1-143.04142182 70.44391902l-26.17434983 0.5606965C77.66380049 387.52529067 27.76177817 438.90551468 27.76177817 501.84374084V881.55022182c0 77.4144 62.25009818 140.17422182 139.05282766 140.17422303h492.82707951c101.23127467 0 191.59267516-63.995904 225.93535999-159.98976l102.37815468-286.22301868c26.04691951-72.82688-11.39234134-153.15945284-83.63303784-179.42300483a138.04612267 138.04612267 0 0 0-47.17499733-8.30850884H643.02466884z"},{viewBox:1024,path:"M512 512c140.82958222 0 254.86222222-114.03264 254.86222222-254.86222222S652.82958222 2.27555555 512 2.27555555a254.78940445 254.78940445 0 0 0-254.86222222 254.86222223C257.13777778 397.96736 371.17041778 512 512 512z m0 72.81777778c-170.10232889 0-509.72444445 97.57582222-509.72444445 291.27111111v145.63555556h1019.4488889v-145.63555556c0-193.69528889-339.62211555-291.27111111-509.72444445-291.27111111z"},{viewBox:1024,path:"M1019.81297778 564.50161779l-138.89991111-472.51456c-8.66531556-25.99594668-29.43658667-43.45400889-57.21656889-43.45400891s-50.33528889 15.67402668-59.00060446 41.66997334l-92.00526221 274.48661334H351.69166222L259.6864 90.33045333c-8.66531556-25.99594668-31.22062222-41.66997333-59.00060444-41.66997332s-50.33528889 17.33063112-57.2165689 43.45400887L4.69674667 564.50161779c-5.22467555 17.33063112 1.78403556 36.44529778 15.67402667 46.89464887l491.11950221 368.27591113 492.77610666-368.27591113c13.76256-10.32192 20.77127111-29.43658667 15.54659557-46.89464887z"},{viewBox:1024,path:"M927.78951111 340.39277037c-12.01493333-47.81700741 12.01493333-124.03294815 89.08041481-150.97552592l-82.40545184-4.36906667s-31.19028148-109.22666667-174.27721483-118.9357037c-143.08693333-9.8304-236.65777778-3.64088889-236.65777777-3.6408889s106.07122963 67.47780741 63.5941926 187.74850371c-31.06891852 63.71555555-79.85682963 116.02299259-132.04290371 175.61220741-1.57771852 1.57771852-3.03407408 3.15543703-4.2477037 4.49042962C278.25493333 624.86755555 7.13007408 934.34311111 7.13007408 934.34311111c298.43152592 78.15774815 498.43768889-7.64586667 616.76657777-110.56165926 24.87940741-0.24272592 43.5693037-0.36408889 56.19105185-0.36408888 164.8109037 0 304.13558518-142.72284445 298.43152593-301.4656-3.88361482-109.1053037-38.71478518-133.74198518-50.72971852-181.5589926z"}]}],Nl=Object(j["defineComponent"])({name:"shape-pool",setup:function(e,t){var n=t.emit,o=Cl,c=function(e){n("select",e)};return{shapeList:o,selectShape:c}}});n("3041");Nl.render=Sl,Nl.__scopeId="data-v-5aabd717";var xl=Nl,Tl=Object(j["withScopeId"])("data-v-5087394c");Object(j["pushScopeId"])("data-v-5087394c");var Ll={class:"line-pool"},wl={class:"category-name"},Vl={class:"line-list"};Object(j["popScopeId"])();var _l=Tl((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("LinePointMarker"),l=Object(j["resolveComponent"])("SvgWrapper");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Ll,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.lineList,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"category",key:t.type},[Object(j["createVNode"])("div",wl,Object(j["toDisplayString"])(t.type),1),Object(j["createVNode"])("div",Vl,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(t.children,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"line-item",key:n},[Object(j["createVNode"])("div",{class:"line-content",onClick:function(n){return e.selectLine(t)}},[Object(j["createVNode"])(l,{overflow:"visible",width:"20",height:"20"},{default:Tl((function(){return[Object(j["createVNode"])("defs",null,[t.points[0]?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,class:"line-marker",id:"preset-line-".concat(n),position:"start",type:t.points[0],color:"currentColor",baseSize:2},null,8,["id","type"])):Object(j["createCommentVNode"])("",!0),t.points[1]?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:1,class:"line-marker",id:"preset-line-".concat(n),position:"end",type:t.points[1],color:"currentColor",baseSize:2},null,8,["id","type"])):Object(j["createCommentVNode"])("",!0)]),Object(j["createVNode"])("path",{class:"line-path",d:t.path,stroke:"currentColor",fill:"none","stroke-width":"2","stroke-dasharray":"solid"===t.style?"0, 0":"4, 1","stroke-linecap":"","stroke-linejoin":"","stroke-miterlimit":"","marker-start":t.points[0]?"url(#".concat("preset-line-".concat(n),"-",t.points[0],"-start)"):"","marker-end":t.points[1]?"url(#".concat("preset-line-".concat(n),"-",t.points[1],"-end)"):""},null,8,["d","stroke-dasharray","marker-start","marker-end"])]})),_:2},1024)],8,["onClick"])])})),128))])])})),128))])})),Bl=[{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}]}],Dl=Object(j["defineComponent"])({name:"line-pool",components:{LinePointMarker:Qn},setup:function(e,t){var n=t.emit,o=Bl,c=function(e){n("select",e)};return{lineList:o,selectLine:c}}});n("6530");Dl.render=_l,Dl.__scopeId="data-v-5087394c";var Ml=Dl,Al=Object(j["withScopeId"])("data-v-0028f4b9");Object(j["pushScopeId"])("data-v-0028f4b9");var Pl={class:"chart-pool"};Object(j["popScopeId"])();var Rl=Al((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconChartLine"),l=Object(j["resolveComponent"])("IconChartHistogram"),i=Object(j["resolveComponent"])("IconChartPie");return Object(j["openBlock"])(),Object(j["createBlock"])("ul",Pl,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.chartList,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("li",{class:"chart-item",key:n},[Object(j["createVNode"])("div",{class:"chart-content",onClick:function(n){return e.selectChart(t)}},["line"===t?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,size:"24"})):"bar"===t?(Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:1,size:"24"})):"pie"===t?(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:2,size:"24"})):Object(j["createCommentVNode"])("",!0)],8,["onClick"])])})),128))])})),Fl=Object(j["defineComponent"])({name:"chart-pool",setup:function(e,t){var n=t.emit,o=["bar","line","pie"],c=function(e){n("select",e)};return{chartList:o,selectChart:c}}});n("f558");Fl.render=Rl,Fl.__scopeId="data-v-0028f4b9";var Hl=Fl,zl=Object(j["withScopeId"])("data-v-576c614c");Object(j["pushScopeId"])("data-v-576c614c");var Ul={class:"table-generator"},Gl={class:"title"},ql={class:"lef"},Xl={key:1,class:"custom"},Wl={class:"row"},Yl=Object(j["createVNode"])("div",{class:"label",style:{flex:"1"}},"行数:",-1),Zl={class:"row"},Jl=Object(j["createVNode"])("div",{class:"label",style:{flex:"1"}},"列数:",-1),Kl={class:"btns"},Ql=Object(j["createTextVNode"])("取消"),$l=Object(j["createTextVNode"])("确认");Object(j["popScopeId"])();var ei=zl((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("InputNumber"),l=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Ul,[Object(j["createVNode"])("div",Gl,[Object(j["createVNode"])("div",ql,"表格 "+Object(j["toDisplayString"])(e.endCell.length?"".concat(e.endCell[0]," x ").concat(e.endCell[1]):""),1),Object(j["createVNode"])("div",{class:"right",onClick:t[1]||(t[1]=function(t){return e.isCustom=!e.isCustom})},Object(j["toDisplayString"])(e.isCustom?"返回":"自定义"),1)]),e.isCustom?(Object(j["openBlock"])(),Object(j["createBlock"])("div",Xl,[Object(j["createVNode"])("div",Wl,[Yl,Object(j["createVNode"])(r,{min:1,max:20,value:e.customRow,"onUpdate:value":t[4]||(t[4]=function(t){return e.customRow=t}),style:{flex:"3"}},null,8,["value"])]),Object(j["createVNode"])("div",Zl,[Jl,Object(j["createVNode"])(r,{min:1,max:20,value:e.customCol,"onUpdate:value":t[5]||(t[5]=function(t){return e.customCol=t}),style:{flex:"3"}},null,8,["value"])]),Object(j["createVNode"])("div",Kl,[Object(j["createVNode"])(l,{class:"btn",onClick:t[6]||(t[6]=function(t){return e.close()})},{default:zl((function(){return[Ql]})),_:1}),Object(j["createVNode"])(l,{class:"btn",type:"primary",onClick:t[7]||(t[7]=function(t){return e.insertCustomTable()})},{default:zl((function(){return[$l]})),_:1})])])):(Object(j["openBlock"])(),Object(j["createBlock"])("table",{key:0,onMouseleave:t[2]||(t[2]=function(t){return e.endCell=[]}),onClick:t[3]||(t[3]=function(t){return e.handleClickTable()})},[Object(j["createVNode"])("tbody",null,[(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(10,(function(t){return Object(j["createVNode"])("tr",{key:t},[(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(10,(function(n){return Object(j["createVNode"])("td",{onMouseenter:function(o){return e.endCell=[t,n]},key:n},[Object(j["createVNode"])("div",{class:["cell",{active:e.endCell.length&&t<=e.endCell[0]&&n<=e.endCell[1]}]},null,2)],40,["onMouseenter"])})),64))])})),64))])],32))])})),ti=Object(j["defineComponent"])({name:"table-generator",setup:function(e,t){var n=t.emit,o=Object(j["ref"])([]),c=Object(j["ref"])(3),a=Object(j["ref"])(3),r=Object(j["ref"])(!1),l=function(){if(o.value.length){var e=Object(rn["a"])(o.value,2),t=e[0],c=e[1];n("insert",{row:t,col:c})}},i=function(){return c.value<1||c.value>20||a.value<1||a.value>20?le["a"].warning("行数/列数必须在0~20之间!"):(n("insert",{row:c.value,col:a.value}),void(r.value=!1))},u=function(){n("close"),r.value=!1};return{endCell:o,customRow:c,customCol:a,handleClickTable:l,insertCustomTable:i,isCustom:r,close:u}}});n("b61d");ti.render=ei,ti.__scopeId="data-v-576c614c";var ni=ti,oi=Object(j["defineComponent"])({name:"canvas-tool",components:{ShapePool:xl,LinePool:Ml,ChartPool:Hl,TableGenerator:ni},setup:function(){var e=Y(),t=Object(j["computed"])((function(){return e.state.canvasScale})),n=Object(j["computed"])((function(){return e.getters.canUndo})),o=Object(j["computed"])((function(){return e.getters.canRedo})),c=Object(j["computed"])((function(){return parseInt(100*t.value+"")+"%"})),a=qe(),r=a.scaleCanvas,l=a.setCanvasPercentage,i=Ne(),u=i.redo,d=i.undo,s=we(),f=s.createImageElement,p=s.createChartElement,b=s.createTableElement,m=function(e){var t=e[0];t&&Te(t).then((function(e){return f(e)}))},v=Object(j["ref"])(!1),O=Object(j["ref"])(!1),h=Object(j["ref"])(!1),g=Object(j["ref"])(!1),k=function(){e.commit(y.SET_CREATING_ELEMENT,{type:"text",data:null})},E=function(t){e.commit(y.SET_CREATING_ELEMENT,{type:"shape",data:t}),v.value=!1},I=function(t){e.commit(y.SET_CREATING_ELEMENT,{type:"line",data:t}),O.value=!1};return{scaleCanvas:r,setCanvasPercentage:l,canvasScalePercentage:c,canUndo:n,canRedo:o,redo:u,undo:d,insertImageElement:m,shapePoolVisible:v,linePoolVisible:O,chartPoolVisible:h,tableGeneratorVisible:g,drawText:k,drawShape:E,drawLine:I,createChartElement:p,createTableElement:b}}});n("f91d");oi.render=gl,oi.__scopeId="data-v-59ae6536";var ci=oi,ai=Object(j["withScopeId"])("data-v-6596d0d5");Object(j["pushScopeId"])("data-v-6596d0d5");var ri=Object(j["createTextVNode"])("添加幻灯片"),li={class:"label"};Object(j["popScopeId"])();var ii=ai((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconPlus"),l=Object(j["resolveComponent"])("ThumbnailSlide"),i=Object(j["resolveComponent"])("Draggable"),u=Object(j["resolveDirective"])("contextmenu"),d=Object(j["resolveDirective"])("click-outside");return Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"thumbnails",onMousedown:t[2]||(t[2]=function(){return e.setThumbnailsFocus(!0)})},[Object(j["createVNode"])("div",{class:"add-slide",onClick:t[1]||(t[1]=function(t){return e.createSlide()})},[Object(j["createVNode"])(r,{class:"icon"}),ri]),Object(j["createVNode"])(i,{class:"thumbnail-list",modelValue:e.slides,animation:300,scroll:!0,scrollSensitivity:50,onEnd:e.handleDragEnd,itemKey:"id"},{item:ai((function(t){var n=t.element,o=t.index;return[Object(j["withDirectives"])(Object(j["createVNode"])("div",{class:["thumbnail-item",{active:e.slideIndex===o,selected:e.selectedSlidesIndex.includes(o)}],onMousedown:function(t){return e.handleClickSlideThumbnail(o)}},[Object(j["createVNode"])("div",li,Object(j["toDisplayString"])(e.fillDigit(o+1,2)),1),Object(j["createVNode"])(l,{class:"thumbnail",slide:n,size:120},null,8,["slide"])],42,["onMousedown"]),[[u,e.contextmenusThumbnailItem]])]})),_:1},8,["modelValue","onEnd"])],544)),[[d,function(){return e.setThumbnailsFocus(!1)}],[u,e.contextmenusThumbnails]])})),ui=n("b76a"),di=n.n(ui),si=Object(j["defineComponent"])({name:"thumbnails",components:{Draggable:di.a,ThumbnailSlide:Eo},setup:function(){var e=Y(),t=Object(j["computed"])((function(){return e.state.slides})),n=Object(j["computed"])((function(){return e.state.slideIndex})),o=Object(j["computed"])((function(){return e.state.ctrlKeyState})),c=Object(j["computed"])((function(){return e.state.shiftKeyState})),a=Object(j["computed"])((function(){return[].concat(Object(P["a"])(e.state.selectedSlidesIndex),[n.value])})),r=_e(),l=r.copySlide,i=r.pasteSlide,u=r.createSlide,d=r.copyAndPasteSlide,s=r.deleteSlide,f=r.cutSlide,p=r.selectAllSlide,b=function(t){e.commit(y.SET_ACTIVE_ELEMENT_ID_LIST,[]),n.value!==t&&e.commit(y.UPDATE_SLIDE_INDEX,t)},m=function(t){var r=a.value.length>1;if(o.value)if(n.value===t){if(!r)return;var l=a.value.filter((function(e){return e!==t}));e.commit(y.UPDATE_SELECTED_SLIDES_INDEX,l),b(a.value[0])}else if(a.value.includes(t)){var i=a.value.filter((function(e){return e!==t}));e.commit(y.UPDATE_SELECTED_SLIDES_INDEX,i)}else{var u=[].concat(Object(P["a"])(a.value),[t]);e.commit(y.UPDATE_SELECTED_SLIDES_INDEX,u),b(t)}else if(c.value){if(n.value===t&&!r)return;var d=Math.min.apply(Math,Object(P["a"])(a.value)),s=t;t1&&void 0!==arguments[1]?arguments[1]:0,c=u(),a=c.originClipRange,l=c.originWidth,d=c.originHeight,s=c.originLeft,f=c.originTop;if(o){var p,b=d/l,m=0,v=100;if(b>o){var O=(1-o/b)/2*100;p=[[m,O],[v,v-O]]}else{var h=(1-b/o)/2*100;p=[[h,m],[v-h,v]]}e.commit(y.UPDATE_ELEMENT,{id:t.value.id,props:{clip:Object(R["a"])(Object(R["a"])({},t.value.clip),{},{shape:n,range:p}),left:s+l*(p[0][0]/100),top:f+d*(p[0][1]/100),width:l*(p[1][0]-p[0][0])/100,height:d*(p[1][1]-p[0][1])/100}})}else e.commit(y.UPDATE_ELEMENT,{id:t.value.id,props:{clip:Object(R["a"])(Object(R["a"])({},t.value.clip),{},{shape:n,range:a})}});i(),r()},s=function(n){var o=n[0];o&&(Te(o).then((function(n){var o={src:n};e.commit(y.UPDATE_ELEMENT,{id:t.value.id,props:o})})),r())},f=function(){if(t.value.clip){var n=u(),o=n.originWidth,c=n.originHeight,a=n.originLeft,l=n.originTop;e.commit(y.UPDATE_ELEMENT,{id:t.value.id,props:{left:a,top:l,width:o,height:c}})}e.commit(y.REMOVE_ELEMENT_PROPS,{id:t.value.id,propName:["clip","outline","flip","shadow","filters"]}),r()},p=function(){var o=Object(R["a"])(Object(R["a"])({},n.value.background),{},{type:"image",image:t.value.src,imageSize:"cover"});e.commit(y.UPDATE_SLIDE,{background:o}),r()};return{clipPanelVisible:o,shapeClipPathOptions:Xu,ratioClipOptions:Wu,filterOptions:c,handleElement:t,updateFilter:l,clipImage:i,presetImageClip:d,replaceImage:s,resetImage:f,setBackgroundImage:p}}});n("83fa");Yu.render=Au,Yu.__scopeId="data-v-c1cc1cba";var Zu=Yu,Ju=Object(j["withScopeId"])("data-v-998a7a02");Object(j["pushScopeId"])("data-v-998a7a02");var Ku={class:"shape-style-panel"},Qu={class:"row"},$u=Object(j["createTextVNode"])("纯色填充"),ed=Object(j["createTextVNode"])("渐变填充"),td=Object(j["createVNode"])("div",{style:{flex:"1"}},null,-1),nd=Object(j["createTextVNode"])("线性渐变"),od=Object(j["createTextVNode"])("径向渐变"),cd={class:"row"},ad=Object(j["createVNode"])("div",{style:{flex:"2"}},"起点颜色:",-1),rd={class:"row"},ld=Object(j["createVNode"])("div",{style:{flex:"2"}},"终点颜色:",-1),id={key:0,class:"row"},ud=Object(j["createVNode"])("div",{style:{flex:"2"}},"渐变角度:",-1);Object(j["popScopeId"])();var dd=Ju((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("SelectOption"),l=Object(j["resolveComponent"])("Select"),i=Object(j["resolveComponent"])("ColorPicker"),u=Object(j["resolveComponent"])("ColorButton"),d=Object(j["resolveComponent"])("Popover"),s=Object(j["resolveComponent"])("Slider"),f=Object(j["resolveComponent"])("ElementFlip"),p=Object(j["resolveComponent"])("Divider"),b=Object(j["resolveComponent"])("ElementOutline"),m=Object(j["resolveComponent"])("ElementShadow"),v=Object(j["resolveComponent"])("ElementOpacity");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Ku,[Object(j["createVNode"])("div",Qu,[Object(j["createVNode"])(l,{style:{flex:"10"},value:e.fillType,onChange:t[1]||(t[1]=function(t){return e.updateFillType(t)})},{default:Ju((function(){return[Object(j["createVNode"])(r,{value:"fill"},{default:Ju((function(){return[$u]})),_:1}),Object(j["createVNode"])(r,{value:"gradient"},{default:Ju((function(){return[ed]})),_:1})]})),_:1},8,["value"]),td,"fill"===e.fillType?(Object(j["openBlock"])(),Object(j["createBlock"])(d,{key:0,trigger:"click"},{content:Ju((function(){return[Object(j["createVNode"])(i,{modelValue:e.fill,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.updateFill(t)})},null,8,["modelValue"])]})),default:Ju((function(){return[Object(j["createVNode"])(u,{color:e.fill,style:{flex:"10"}},null,8,["color"])]})),_:1})):(Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:1,style:{flex:"10"},value:e.gradient.type,onChange:t[3]||(t[3]=function(t){return e.updateGradient({type:t})})},{default:Ju((function(){return[Object(j["createVNode"])(r,{value:"linear"},{default:Ju((function(){return[nd]})),_:1}),Object(j["createVNode"])(r,{value:"radial"},{default:Ju((function(){return[od]})),_:1})]})),_:1},8,["value"]))]),"gradient"===e.fillType?(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[Object(j["createVNode"])("div",cd,[ad,Object(j["createVNode"])(d,{trigger:"click"},{content:Ju((function(){return[Object(j["createVNode"])(i,{modelValue:e.gradient.color[0],"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.updateGradient({color:[t,e.gradient.color[1]]})})},null,8,["modelValue"])]})),default:Ju((function(){return[Object(j["createVNode"])(u,{color:e.gradient.color[0],style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])("div",rd,[ld,Object(j["createVNode"])(d,{trigger:"click"},{content:Ju((function(){return[Object(j["createVNode"])(i,{modelValue:e.gradient.color[1],"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.updateGradient({color:[e.gradient.color[0],t]})})},null,8,["modelValue"])]})),default:Ju((function(){return[Object(j["createVNode"])(u,{color:e.gradient.color[1],style:{flex:"3"}},null,8,["color"])]})),_:1})]),"linear"===e.gradient.type?(Object(j["openBlock"])(),Object(j["createBlock"])("div",id,[ud,Object(j["createVNode"])(s,{min:0,max:360,step:15,value:e.gradient.rotate,style:{flex:"3"},onChange:t[6]||(t[6]=function(t){return e.updateGradient({rotate:t})})},null,8,["value"])])):Object(j["createCommentVNode"])("",!0)],64)):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])(f),Object(j["createVNode"])(p),Object(j["createVNode"])(b),Object(j["createVNode"])(p),Object(j["createVNode"])(m),Object(j["createVNode"])(p),Object(j["createVNode"])(v)])})),sd=Object(j["defineComponent"])({name:"shape-style-panel",components:{ElementOpacity:Mi,ElementOutline:nu,ElementShadow:hu,ElementFlip:Gu,ColorButton:eu},setup:function(){var e=Y(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["ref"])(),o=Object(j["ref"])(),c=Object(j["ref"])("fill");Object(j["watch"])(t,(function(){t.value&&"shape"===t.value.type&&(n.value=t.value.fill||"#000",o.value=t.value.gradient||{type:"linear",rotate:0,color:[n.value,"#fff"]},c.value=t.value.gradient?"gradient":"fill")}),{deep:!0,immediate:!0});var a=Ne(),r=a.addHistorySnapshot,l=function(n){if("fill"===n)e.commit(y.REMOVE_ELEMENT_PROPS,{id:t.value.id,propName:"gradient"});else{var c={gradient:o.value};e.commit(y.UPDATE_ELEMENT,{id:t.value.id,props:c})}r()},i=function(n){var c={gradient:Object(R["a"])(Object(R["a"])({},o.value),n)};e.commit(y.UPDATE_ELEMENT,{id:t.value.id,props:c}),r()},u=function(n){var o={fill:n};e.commit(y.UPDATE_ELEMENT,{id:t.value.id,props:o}),r()};return{fill:n,gradient:o,fillType:c,updateFillType:l,updateFill:u,updateGradient:i}}});n("6f16");sd.render=dd,sd.__scopeId="data-v-998a7a02";var fd=sd,pd=Object(j["withScopeId"])("data-v-65b24fb3");Object(j["pushScopeId"])("data-v-65b24fb3");var bd={class:"line-style-panel"},md={class:"row"},vd=Object(j["createVNode"])("div",{style:{flex:"2"}},"线条样式:",-1),Od=Object(j["createTextVNode"])("实线"),hd=Object(j["createTextVNode"])("虚线"),jd={class:"row"},gd=Object(j["createVNode"])("div",{style:{flex:"2"}},"线条颜色:",-1),yd={class:"row"},kd=Object(j["createVNode"])("div",{style:{flex:"2"}},"线条宽度:",-1),Ed={class:"row"},Id=Object(j["createVNode"])("div",{style:{flex:"2"}},"起点样式:",-1),Sd=Object(j["createTextVNode"])("无"),Cd=Object(j["createTextVNode"])("箭头"),Nd=Object(j["createTextVNode"])("圆点"),xd={class:"row"},Td=Object(j["createVNode"])("div",{style:{flex:"2"}},"终点样式:",-1),Ld=Object(j["createTextVNode"])("无"),wd=Object(j["createTextVNode"])("箭头"),Vd=Object(j["createTextVNode"])("圆点");Object(j["popScopeId"])();var _d=pd((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("SelectOption"),l=Object(j["resolveComponent"])("Select"),i=Object(j["resolveComponent"])("ColorPicker"),u=Object(j["resolveComponent"])("ColorButton"),d=Object(j["resolveComponent"])("Popover"),s=Object(j["resolveComponent"])("InputNumber"),f=Object(j["resolveComponent"])("Divider"),p=Object(j["resolveComponent"])("ElementShadow");return Object(j["openBlock"])(),Object(j["createBlock"])("div",bd,[Object(j["createVNode"])("div",md,[vd,Object(j["createVNode"])(l,{style:{flex:"3"},value:e.handleElement.style,onChange:t[1]||(t[1]=function(t){return e.updateLine({style:t})})},{default:pd((function(){return[Object(j["createVNode"])(r,{value:"solid"},{default:pd((function(){return[Od]})),_:1}),Object(j["createVNode"])(r,{value:"dashed"},{default:pd((function(){return[hd]})),_:1})]})),_:1},8,["value"])]),Object(j["createVNode"])("div",jd,[gd,Object(j["createVNode"])(d,{trigger:"click"},{content:pd((function(){return[Object(j["createVNode"])(i,{modelValue:e.handleElement.color,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.updateLine({color:t})})},null,8,["modelValue"])]})),default:pd((function(){return[Object(j["createVNode"])(u,{color:e.handleElement.color,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])("div",yd,[kd,Object(j["createVNode"])(s,{value:e.handleElement.width,onChange:t[3]||(t[3]=function(t){return e.updateLine({width:t})}),style:{flex:"3"}},null,8,["value"])]),Object(j["createVNode"])("div",Ed,[Id,Object(j["createVNode"])(l,{style:{flex:"3"},value:e.handleElement.points[0],onChange:t[4]||(t[4]=function(t){return e.updateLine({points:[t,e.handleElement.points[1]]})})},{default:pd((function(){return[Object(j["createVNode"])(r,{value:""},{default:pd((function(){return[Sd]})),_:1}),Object(j["createVNode"])(r,{value:"arrow"},{default:pd((function(){return[Cd]})),_:1}),Object(j["createVNode"])(r,{value:"dot"},{default:pd((function(){return[Nd]})),_:1})]})),_:1},8,["value"])]),Object(j["createVNode"])("div",xd,[Td,Object(j["createVNode"])(l,{style:{flex:"3"},value:e.handleElement.points[1],onChange:t[5]||(t[5]=function(t){return e.updateLine({points:[e.handleElement.points[0],t]})})},{default:pd((function(){return[Object(j["createVNode"])(r,{value:""},{default:pd((function(){return[Ld]})),_:1}),Object(j["createVNode"])(r,{value:"arrow"},{default:pd((function(){return[wd]})),_:1}),Object(j["createVNode"])(r,{value:"dot"},{default:pd((function(){return[Vd]})),_:1})]})),_:1},8,["value"])]),Object(j["createVNode"])(f),Object(j["createVNode"])(p)])})),Bd=Object(j["defineComponent"])({name:"line-style-panel",components:{ElementShadow:hu,ColorButton:eu},setup:function(){var e=Y(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Ne(),o=n.addHistorySnapshot,c=function(n){e.commit(y.UPDATE_ELEMENT,{id:t.value.id,props:n}),o()};return{handleElement:t,updateLine:c}}});n("8df8e");Bd.render=_d,Bd.__scopeId="data-v-65b24fb3";var Dd=Bd,Md=Object(j["withScopeId"])("data-v-4dd87e36");Object(j["pushScopeId"])("data-v-4dd87e36");var Ad={class:"chart-style-panel"},Pd=Object(j["createTextVNode"])(" 编辑图表数据 "),Rd={class:"row"},Fd=Object(j["createTextVNode"])("面积图样式"),Hd=Object(j["createTextVNode"])("散点图样式"),zd={class:"row"},Ud=Object(j["createTextVNode"])("使用平滑曲线"),Gd={key:1,class:"row"},qd=Object(j["createTextVNode"])("条形图样式"),Xd={key:2,class:"row"},Wd=Object(j["createTextVNode"])("环形图样式"),Yd={class:"row"},Zd=Object(j["createVNode"])("div",{style:{flex:"2"}},"背景填充:",-1),Jd={class:"row"},Kd=Object(j["createVNode"])("div",{style:{flex:"2"}},"主题配色:",-1),Qd={class:"row"},$d=Object(j["createVNode"])("div",{style:{flex:"2"}},"网格颜色:",-1);Object(j["popScopeId"])();var es=Md((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconEdit"),l=Object(j["resolveComponent"])("Button"),i=Object(j["resolveComponent"])("Divider"),u=Object(j["resolveComponent"])("Checkbox"),d=Object(j["resolveComponent"])("ColorPicker"),s=Object(j["resolveComponent"])("ColorButton"),f=Object(j["resolveComponent"])("Popover"),p=Object(j["resolveComponent"])("ElementOutline"),b=Object(j["resolveComponent"])("ChartDataEditor"),m=Object(j["resolveComponent"])("Modal");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Ad,[Object(j["createVNode"])(l,{class:"full-width-btn",onClick:t[1]||(t[1]=function(t){return e.chartDataEditorVisible=!0})},{default:Md((function(){return[Object(j["createVNode"])(r,{class:"btn-icon"}),Pd]})),_:1}),Object(j["createVNode"])(i),"line"===e.handleElement.chartType?(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[Object(j["createVNode"])("div",Rd,[Object(j["createVNode"])(u,{onChange:t[2]||(t[2]=function(t){return e.updateOptions({showArea:t.target.checked})}),checked:e.showArea,style:{flex:"1"}},{default:Md((function(){return[Fd]})),_:1},8,["checked"]),Object(j["createVNode"])(u,{onChange:t[3]||(t[3]=function(t){return e.updateOptions({showLine:!t.target.checked})}),checked:!e.showLine,style:{flex:"1"}},{default:Md((function(){return[Hd]})),_:1},8,["checked"])]),Object(j["createVNode"])("div",zd,[Object(j["createVNode"])(u,{onChange:t[4]||(t[4]=function(t){return e.updateOptions({lineSmooth:t.target.checked})}),checked:e.lineSmooth},{default:Md((function(){return[Ud]})),_:1},8,["checked"])])],64)):Object(j["createCommentVNode"])("",!0),"bar"===e.handleElement.chartType?(Object(j["openBlock"])(),Object(j["createBlock"])("div",Gd,[Object(j["createVNode"])(u,{onChange:t[5]||(t[5]=function(t){return e.updateOptions({horizontalBars:t.target.checked})}),checked:e.horizontalBars},{default:Md((function(){return[qd]})),_:1},8,["checked"])])):Object(j["createCommentVNode"])("",!0),"pie"===e.handleElement.chartType?(Object(j["openBlock"])(),Object(j["createBlock"])("div",Xd,[Object(j["createVNode"])(u,{onChange:t[6]||(t[6]=function(t){return e.updateOptions({donut:t.target.checked})}),checked:e.donut},{default:Md((function(){return[Wd]})),_:1},8,["checked"])])):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])(i),Object(j["createVNode"])("div",Yd,[Zd,Object(j["createVNode"])(f,{trigger:"click"},{content:Md((function(){return[Object(j["createVNode"])(d,{modelValue:e.fill,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.updateFill(t)})},null,8,["modelValue"])]})),default:Md((function(){return[Object(j["createVNode"])(s,{color:e.fill,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])("div",Jd,[Kd,Object(j["createVNode"])(f,{trigger:"click"},{content:Md((function(){return[Object(j["createVNode"])(d,{modelValue:e.themeColor,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.updateTheme(t)})},null,8,["modelValue"])]})),default:Md((function(){return[Object(j["createVNode"])(s,{color:e.themeColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])("div",Qd,[$d,Object(j["createVNode"])(f,{trigger:"click"},{content:Md((function(){return[Object(j["createVNode"])(d,{modelValue:e.gridColor,"onUpdate:modelValue":t[9]||(t[9]=function(t){return e.updateGridColor(t)})},null,8,["modelValue"])]})),default:Md((function(){return[Object(j["createVNode"])(s,{color:e.gridColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])(i),Object(j["createVNode"])(p),Object(j["createVNode"])(m,{visible:e.chartDataEditorVisible,"onUpdate:visible":t[12]||(t[12]=function(t){return e.chartDataEditorVisible=t}),footer:null,centered:"",closable:!1,width:648,destroyOnClose:""},{default:Md((function(){return[Object(j["createVNode"])(b,{data:e.handleElement.data,onClose:t[10]||(t[10]=function(t){return e.chartDataEditorVisible=!1}),onSave:t[11]||(t[11]=function(t){return e.updateData(t)})},null,8,["data"])]})),_:1},8,["visible"])])})),ts=Object(j["withScopeId"])("data-v-42e69ec4");Object(j["pushScopeId"])("data-v-42e69ec4");var ns={class:"chart-data-editor"},os={class:"editor-content"},cs={class:"range-box"},as={class:"btns"},rs=Object(j["createTextVNode"])("取消"),ls=Object(j["createTextVNode"])("确认");Object(j["popScopeId"])();var is=ts((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createBlock"])("div",ns,[Object(j["createVNode"])("div",os,[Object(j["createVNode"])("div",cs,[Object(j["createVNode"])("div",{class:"temp-range",style:{width:e.tempRangeSize.width+"px",height:e.tempRangeSize.height+"px"}},null,4),(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.rangeLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["range-line",e.type],key:e.type,style:e.style},null,6)})),128)),Object(j["createVNode"])("div",{class:"resizable",style:e.resizablePointStyle,onMousedown:t[1]||(t[1]=Object(j["withModifiers"])((function(t){return e.changeSelectRange(t)}),["stop"]))},null,36)]),Object(j["createVNode"])("table",null,[Object(j["createVNode"])("tbody",null,[(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(30,(function(t){return Object(j["createVNode"])("tr",{key:t},[(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(7,(function(n){return Object(j["createVNode"])("td",{key:n,class:{head:1===n&&t<=e.selectedRange[1]}},[Object(j["createVNode"])("input",{class:["item",{selected:t<=e.selectedRange[1]&&n<=e.selectedRange[0]}],id:"cell-".concat(t-1,"-").concat(n-1),autocomplete:"off"},null,10,["id"])],2)})),64))])})),64))])])]),Object(j["createVNode"])("div",as,[Object(j["createVNode"])(r,{class:"btn",onClick:t[2]||(t[2]=function(t){return e.closeEditor()})},{default:ts((function(){return[rs]})),_:1}),Object(j["createVNode"])(r,{type:"primary",class:"btn",onClick:t[3]||(t[3]=function(t){return e.getTableData()})},{default:ts((function(){return[ls]})),_:1})])])})),us=100,ds=32,ss=Object(j["defineComponent"])({name:"chart-data-editor",props:{data:{type:Object,required:!0}},setup:function(e,t){var n=t.emit,o=Object(j["ref"])([0,0]),c=Object(j["ref"])({width:0,height:0}),a=Object(j["computed"])((function(){var e=o.value[0]*us,t=o.value[1]*ds;return[{type:"t",style:{width:e+"px"}},{type:"b",style:{top:t+"px",width:e+"px"}},{type:"l",style:{height:t+"px"}},{type:"r",style:{left:e+"px",height:t+"px"}}]})),r=Object(j["computed"])((function(){var e=o.value[0]*us,t=o.value[1]*ds;return{left:e+"px",top:t+"px"}})),l=function(){for(var t=[],n=e.data,c=n.labels,a=n.series,r=c.length,l=a.length,i=0;i.5*us&&(i+=us-i%us),u%ds>.5*ds&&(u+=ds-u%ds);var d=Math.round(u/ds),s=Math.round(i/us);d<3&&(d=3),s<2&&(s=2),o.value=[s,d],c.value={width:0,height:0}}}};return{tempRangeSize:c,rangeLines:a,resizablePointStyle:r,changeSelectRange:d,selectedRange:o,getTableData:i,closeEditor:u}}});n("f14f");ss.render=is,ss.__scopeId="data-v-42e69ec4";var fs=ss,ps=Object(j["defineComponent"])({name:"chart-style-panel",components:{ElementOutline:nu,ChartDataEditor:fs,ColorButton:eu},setup:function(){var e=Y(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["ref"])(!1),o=Ne(),c=o.addHistorySnapshot,a=Object(j["ref"])(),r=Object(j["ref"])(""),l=Object(j["ref"])(""),i=Object(j["ref"])(!0),u=Object(j["ref"])(!0),d=Object(j["ref"])(!1),s=Object(j["ref"])(!1),f=Object(j["ref"])(!1);Object(j["watch"])(t,(function(){if(t.value&&"chart"===t.value.type){if(a.value=t.value.fill||"#000",t.value.options){var e=t.value.options,n=e.lineSmooth,o=e.showLine,c=e.showArea,p=e.horizontalBars,b=e.donut;void 0!==n&&(i.value=n),void 0!==o&&(u.value=o),void 0!==c&&(d.value=c),void 0!==p&&(s.value=p),void 0!==b&&(f.value=b)}r.value=t.value.themeColor,l.value=t.value.gridColor||"rgba(0, 0, 0, 0.4)"}}),{deep:!0,immediate:!0});var p=function(o){n.value=!1;var a={data:o};e.commit(y.UPDATE_ELEMENT,{id:t.value.id,props:a}),c()},b=function(n){var o={fill:n};e.commit(y.UPDATE_ELEMENT,{id:t.value.id,props:o}),c()},m=function(n){var o=t.value.options||{},a=Object(R["a"])(Object(R["a"])({},o),n),r={options:a};e.commit(y.UPDATE_ELEMENT,{id:t.value.id,props:r}),c()},v=function(n){var o={themeColor:n};e.commit(y.UPDATE_ELEMENT,{id:t.value.id,props:o}),c()},O=function(n){var o={gridColor:n};e.commit(y.UPDATE_ELEMENT,{id:t.value.id,props:o}),c()};return{chartDataEditorVisible:n,handleElement:t,updateData:p,fill:a,updateFill:b,lineSmooth:i,showLine:u,showArea:d,horizontalBars:s,donut:f,updateOptions:m,themeColor:r,gridColor:l,updateTheme:v,updateGridColor:O}}});n("167e");ps.render=es,ps.__scopeId="data-v-4dd87e36";var bs=ps,ms=Object(j["withScopeId"])("data-v-2db32cac");Object(j["pushScopeId"])("data-v-2db32cac");var vs={class:"table-style-panel"},Os={class:"row"},hs=Object(j["createVNode"])("div",{style:{flex:"2"}},"行数:",-1),js={class:"row"},gs=Object(j["createVNode"])("div",{style:{flex:"2"}},"列数:",-1),ys={class:"row theme-switch"},ks=Object(j["createVNode"])("div",{style:{flex:"2"}},"启用主题表格:",-1),Es={class:"switch-wrapper",style:{flex:"3"}},Is={class:"row"},Ss=Object(j["createTextVNode"])("标题行"),Cs=Object(j["createTextVNode"])("汇总行"),Ns={class:"row"},xs=Object(j["createTextVNode"])("第一列"),Ts=Object(j["createTextVNode"])("最后一列"),Ls={class:"row"},ws=Object(j["createVNode"])("div",{style:{flex:"2"}},"主题颜色:",-1);Object(j["popScopeId"])();var Vs=ms((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconFontSize"),l=Object(j["resolveComponent"])("SelectOption"),i=Object(j["resolveComponent"])("SelectOptGroup"),u=Object(j["resolveComponent"])("Select"),d=Object(j["resolveComponent"])("IconAddText"),s=Object(j["resolveComponent"])("InputGroup"),f=Object(j["resolveComponent"])("ColorPicker"),p=Object(j["resolveComponent"])("IconText"),b=Object(j["resolveComponent"])("Button"),m=Object(j["resolveComponent"])("Tooltip"),v=Object(j["resolveComponent"])("Popover"),O=Object(j["resolveComponent"])("IconFill"),h=Object(j["resolveComponent"])("ButtonGroup"),g=Object(j["resolveComponent"])("IconTextBold"),y=Object(j["resolveComponent"])("CheckboxButton"),k=Object(j["resolveComponent"])("IconTextItalic"),E=Object(j["resolveComponent"])("IconTextUnderline"),I=Object(j["resolveComponent"])("IconStrikethrough"),S=Object(j["resolveComponent"])("CheckboxButtonGroup"),C=Object(j["resolveComponent"])("IconAlignTextLeft"),N=Object(j["resolveComponent"])("RadioButton"),x=Object(j["resolveComponent"])("IconAlignTextCenter"),T=Object(j["resolveComponent"])("IconAlignTextRight"),L=Object(j["resolveComponent"])("RadioGroup"),w=Object(j["resolveComponent"])("Divider"),V=Object(j["resolveComponent"])("ElementOutline"),_=Object(j["resolveComponent"])("InputNumber"),B=Object(j["resolveComponent"])("Switch"),D=Object(j["resolveComponent"])("Checkbox"),M=Object(j["resolveComponent"])("ColorButton");return Object(j["openBlock"])(),Object(j["createBlock"])("div",vs,[Object(j["createVNode"])(s,{compact:"",class:"row"},{default:ms((function(){return[Object(j["createVNode"])(u,{style:{flex:"3"},value:e.textAttrs.fontname,onChange:t[1]||(t[1]=function(t){return e.updateTextAttrs({fontname:t})})},{suffixIcon:ms((function(){return[Object(j["createVNode"])(r)]})),default:ms((function(){return[Object(j["createVNode"])(i,{label:"系统字体"},{default:ms((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.availableFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:e.value,value:e.value},{default:ms((function(){return[Object(j["createVNode"])("span",{style:{fontFamily:e.value}},Object(j["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(j["createVNode"])(i,{label:"在线字体"},{default:ms((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.webFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:e.value,value:e.value},{default:ms((function(){return[Object(j["createVNode"])("span",null,Object(j["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"]),Object(j["createVNode"])(u,{style:{flex:"2"},value:e.textAttrs.fontsize,onChange:t[2]||(t[2]=function(t){return e.updateTextAttrs({fontsize:t})})},{suffixIcon:ms((function(){return[Object(j["createVNode"])(d)]})),default:ms((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.fontSizeOptions,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:e,value:e},{default:ms((function(){return[Object(j["createTextVNode"])(Object(j["toDisplayString"])(e),1)]})),_:2},1032,["value"])})),128))]})),_:1},8,["value"])]})),_:1}),Object(j["createVNode"])(h,{class:"row"},{default:ms((function(){return[Object(j["createVNode"])(v,{trigger:"click"},{content:ms((function(){return[Object(j["createVNode"])(f,{modelValue:e.textAttrs.color,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.updateTextAttrs({color:t})})},null,8,["modelValue"])]})),default:ms((function(){return[Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:ms((function(){return[Object(j["createVNode"])(b,{class:"text-color-btn",style:{flex:"1"}},{default:ms((function(){return[Object(j["createVNode"])(p),Object(j["createVNode"])("div",{class:"text-color-block",style:{backgroundColor:e.textAttrs.color}},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(v,{trigger:"click"},{content:ms((function(){return[Object(j["createVNode"])(f,{modelValue:e.textAttrs.backcolor,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.updateTextAttrs({backcolor:t})})},null,8,["modelValue"])]})),default:ms((function(){return[Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"单元格填充"},{default:ms((function(){return[Object(j["createVNode"])(b,{class:"text-color-btn",style:{flex:"1"}},{default:ms((function(){return[Object(j["createVNode"])(O),Object(j["createVNode"])("div",{class:"text-color-block",style:{backgroundColor:e.textAttrs.backcolor}},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1})]})),_:1}),Object(j["createVNode"])(S,{class:"row"},{default:ms((function(){return[Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"加粗"},{default:ms((function(){return[Object(j["createVNode"])(y,{style:{flex:"1"},checked:e.textAttrs.bold,onClick:t[5]||(t[5]=function(t){return e.updateTextAttrs({bold:!e.textAttrs.bold})})},{default:ms((function(){return[Object(j["createVNode"])(g)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"斜体"},{default:ms((function(){return[Object(j["createVNode"])(y,{style:{flex:"1"},checked:e.textAttrs.em,onClick:t[6]||(t[6]=function(t){return e.updateTextAttrs({em:!e.textAttrs.em})})},{default:ms((function(){return[Object(j["createVNode"])(k)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下划线"},{default:ms((function(){return[Object(j["createVNode"])(y,{style:{flex:"1"},checked:e.textAttrs.underline,onClick:t[7]||(t[7]=function(t){return e.updateTextAttrs({underline:!e.textAttrs.underline})})},{default:ms((function(){return[Object(j["createVNode"])(E)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除线"},{default:ms((function(){return[Object(j["createVNode"])(y,{style:{flex:"1"},checked:e.textAttrs.strikethrough,onClick:t[8]||(t[8]=function(t){return e.updateTextAttrs({strikethrough:!e.textAttrs.strikethrough})})},{default:ms((function(){return[Object(j["createVNode"])(I)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(L,{class:"row","button-style":"solid",value:e.textAttrs.align,onChange:t[9]||(t[9]=function(t){return e.updateTextAttrs({align:t.target.value})})},{default:ms((function(){return[Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:ms((function(){return[Object(j["createVNode"])(N,{value:"left",style:{flex:"1"}},{default:ms((function(){return[Object(j["createVNode"])(C)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:ms((function(){return[Object(j["createVNode"])(N,{value:"center",style:{flex:"1"}},{default:ms((function(){return[Object(j["createVNode"])(x)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:ms((function(){return[Object(j["createVNode"])(N,{value:"right",style:{flex:"1"}},{default:ms((function(){return[Object(j["createVNode"])(T)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"]),Object(j["createVNode"])(w),Object(j["createVNode"])(V,{fixed:!0}),Object(j["createVNode"])(w),Object(j["createVNode"])("div",Os,[hs,Object(j["createVNode"])(_,{min:e.minRowCount,max:20,value:e.rowCount,"onUpdate:value":t[10]||(t[10]=function(t){return e.rowCount=t}),onPressEnter:t[11]||(t[11]=function(t){return e.setTableRow(t)}),onBlur:t[12]||(t[12]=function(t){return e.setTableRow(t)}),style:{flex:"3"}},null,8,["min","value"])]),Object(j["createVNode"])("div",js,[gs,Object(j["createVNode"])(_,{min:e.minColCount,max:20,value:e.colCount,"onUpdate:value":t[13]||(t[13]=function(t){return e.colCount=t}),onPressEnter:t[14]||(t[14]=function(t){return e.setTableCol(t)}),onBlur:t[15]||(t[15]=function(t){return e.setTableCol(t)}),style:{flex:"3"}},null,8,["min","value"])]),Object(j["createVNode"])(w),Object(j["createVNode"])("div",ys,[ks,Object(j["createVNode"])("div",Es,[Object(j["createVNode"])(B,{checked:e.hasTheme,onChange:t[16]||(t[16]=function(t){return e.toggleTheme(t)})},null,8,["checked"])])]),e.hasTheme?(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[Object(j["createVNode"])("div",Is,[Object(j["createVNode"])(D,{onChange:t[17]||(t[17]=function(t){return e.updateTheme({rowHeader:t.target.checked})}),checked:e.theme.rowHeader,style:{flex:"1"}},{default:ms((function(){return[Ss]})),_:1},8,["checked"]),Object(j["createVNode"])(D,{onChange:t[18]||(t[18]=function(t){return e.updateTheme({rowFooter:t.target.checked})}),checked:e.theme.rowFooter,style:{flex:"1"}},{default:ms((function(){return[Cs]})),_:1},8,["checked"])]),Object(j["createVNode"])("div",Ns,[Object(j["createVNode"])(D,{onChange:t[19]||(t[19]=function(t){return e.updateTheme({colHeader:t.target.checked})}),checked:e.theme.colHeader,style:{flex:"1"}},{default:ms((function(){return[xs]})),_:1},8,["checked"]),Object(j["createVNode"])(D,{onChange:t[20]||(t[20]=function(t){return e.updateTheme({colFooter:t.target.checked})}),checked:e.theme.colFooter,style:{flex:"1"}},{default:ms((function(){return[Ts]})),_:1},8,["checked"])]),Object(j["createVNode"])("div",Ls,[ws,Object(j["createVNode"])(v,{trigger:"click"},{content:ms((function(){return[Object(j["createVNode"])(f,{modelValue:e.theme.color,"onUpdate:modelValue":t[21]||(t[21]=function(t){return e.updateTheme({color:t})})},null,8,["modelValue"])]})),default:ms((function(){return[Object(j["createVNode"])(M,{color:e.theme.color,style:{flex:"3"}},null,8,["color"])]})),_:1})])],64)):Object(j["createCommentVNode"])("",!0)])})),_s=U,Bs=Object(j["defineComponent"])({name:"table-style-panel",components:{ElementOutline:nu,ColorButton:eu},setup:function(){var e=Y(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["computed"])((function(){return e.state.availableFonts})),o=["12px","14px","16px","18px","20px","22px","24px","28px","32px"],c=Object(j["ref"])({bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"#000",fontsize:"12px",fontname:"微软雅黑",align:"left"}),a=Object(j["ref"])(),r=Object(j["ref"])(!1),l=Object(j["ref"])(0),i=Object(j["ref"])(0),u=Object(j["ref"])(0),d=Object(j["ref"])(0);Object(j["watch"])(t,(function(){t.value&&"table"===t.value.type&&(a.value=t.value.theme,r.value=!!a.value,l.value=t.value.data.length,i.value=t.value.data[0].length,u.value=t.value.data.length,d.value=t.value.data[0].length)}),{deep:!0,immediate:!0});var s=Ne(),f=s.addHistorySnapshot,p=Object(j["ref"])([]),b=function(){if(t.value){var e=0,n=0;if(p.value.length){var o=p.value[0];e=+o.split("_")[0],n=+o.split("_")[1]}var a=t.value.data[e][n].style;c.value=a?{bold:!!a.bold,em:!!a.em,underline:!!a.underline,strikethrough:!!a.strikethrough,color:a.color||"#000",backcolor:a.backcolor||"#000",fontsize:a.fontsize||"12px",fontname:a.fontname||"微软雅黑",align:a.align||"left"}:{bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"#000",fontsize:"12px",fontname:"微软雅黑",align:"left"}}},m=function(e){p.value=e,b()};qo.on(Lo.UPDATE_TABLE_SELECTED_CELL,(function(e){return m(e)})),Object(j["onUnmounted"])((function(){qo.off(Lo.UPDATE_TABLE_SELECTED_CELL,(function(e){return m(e)}))}));var v=function(n){for(var o=JSON.parse(JSON.stringify(t.value.data)),c=0;cX
Y
',1),Gs={class:"row"},qs=Object(j["createVNode"])("div",{style:{flex:"3"}},"大小:",-1),Xs={key:1,style:{flex:"1"}},Ws=Object(j["createStaticVNode"])('',1),Ys={class:"row"},Zs=Object(j["createVNode"])("div",{style:{flex:"3"}},"旋转:",-1),Js=Object(j["createVNode"])("div",{style:{flex:"1"}},null,-1);Object(j["popScopeId"])();var Ks=Ps((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconSendToBack"),l=Object(j["resolveComponent"])("Button"),i=Object(j["resolveComponent"])("Tooltip"),u=Object(j["resolveComponent"])("IconBringToFrontOne"),d=Object(j["resolveComponent"])("IconBringToFront"),s=Object(j["resolveComponent"])("IconSentToBack"),f=Object(j["resolveComponent"])("ButtonGroup"),p=Object(j["resolveComponent"])("IconAlignLeft"),b=Object(j["resolveComponent"])("IconAlignVertically"),m=Object(j["resolveComponent"])("IconAlignRight"),v=Object(j["resolveComponent"])("IconAlignTop"),O=Object(j["resolveComponent"])("IconAlignHorizontally"),h=Object(j["resolveComponent"])("IconAlignBottom"),g=Object(j["resolveComponent"])("Divider"),y=Object(j["resolveComponent"])("InputNumber"),k=Object(j["resolveComponent"])("IconLock"),E=Object(j["resolveComponent"])("IconUnlock"),I=Object(j["resolveComponent"])("IconRotate");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Rs,[Object(j["createVNode"])(f,{class:"row"},{default:Ps((function(){return[Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"置顶层"},{default:Ps((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[1]||(t[1]=function(t){return e.orderElement(e.handleElement,"top")})},{default:Ps((function(){return[Object(j["createVNode"])(r)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"置底层"},{default:Ps((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[2]||(t[2]=function(t){return e.orderElement(e.handleElement,"bottom")})},{default:Ps((function(){return[Object(j["createVNode"])(u)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上移一层"},{default:Ps((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[3]||(t[3]=function(t){return e.orderElement(e.handleElement,"up")})},{default:Ps((function(){return[Object(j["createVNode"])(d)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下移一层"},{default:Ps((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[4]||(t[4]=function(t){return e.orderElement(e.handleElement,"down")})},{default:Ps((function(){return[Object(j["createVNode"])(s)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(f,{class:"row"},{default:Ps((function(){return[Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Ps((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[5]||(t[5]=function(t){return e.alignElementToCanvas("left")})},{default:Ps((function(){return[Object(j["createVNode"])(p)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"水平居中"},{default:Ps((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[6]||(t[6]=function(t){return e.alignElementToCanvas("horizontal")})},{default:Ps((function(){return[Object(j["createVNode"])(b)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Ps((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[7]||(t[7]=function(t){return e.alignElementToCanvas("right")})},{default:Ps((function(){return[Object(j["createVNode"])(m)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(f,{class:"row"},{default:Ps((function(){return[Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上对齐"},{default:Ps((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[8]||(t[8]=function(t){return e.alignElementToCanvas("top")})},{default:Ps((function(){return[Object(j["createVNode"])(v)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"垂直居中"},{default:Ps((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[9]||(t[9]=function(t){return e.alignElementToCanvas("vertical")})},{default:Ps((function(){return[Object(j["createVNode"])(O)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下对齐"},{default:Ps((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[10]||(t[10]=function(t){return e.alignElementToCanvas("bottom")})},{default:Ps((function(){return[Object(j["createVNode"])(h)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(g),Object(j["createVNode"])("div",Fs,[Hs,Object(j["createVNode"])(y,{step:5,value:e.left,onChange:t[11]||(t[11]=function(t){return e.updateLeft(t)}),style:{flex:"4"}},null,8,["value"]),zs,Object(j["createVNode"])(y,{step:5,value:e.top,onChange:t[12]||(t[12]=function(t){return e.updateTop(t)}),style:{flex:"4"}},null,8,["value"])]),Us,"line"!==e.handleElement.type?(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[Object(j["createVNode"])("div",Gs,[qs,Object(j["createVNode"])(y,{min:e.minSize,max:1500,step:5,value:e.width,onChange:t[13]||(t[13]=function(t){return e.updateWidth(t)}),style:{flex:"4"}},null,8,["min","value"]),["image","shape"].includes(e.handleElement.type)?(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[e.fixedRatio?(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:0,mouseLeaveDelay:0,mouseEnterDelay:.5,title:"解除宽高比锁定"},{default:Ps((function(){return[Object(j["createVNode"])(k,{style:{flex:"1"},class:"icon-btn",onClick:t[14]||(t[14]=function(t){return e.updateFixedRatio(!1)})})]})),_:1},8,["mouseEnterDelay"])):(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:1,mouseLeaveDelay:0,mouseEnterDelay:.5,title:"宽高比锁定"},{default:Ps((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},class:"icon-btn",onClick:t[15]||(t[15]=function(t){return e.updateFixedRatio(!0)})})]})),_:1},8,["mouseEnterDelay"]))],64)):(Object(j["openBlock"])(),Object(j["createBlock"])("div",Xs)),Object(j["createVNode"])(y,{min:e.minSize,max:800,step:5,disabled:"text"===e.handleElement.type,value:e.height,onChange:t[16]||(t[16]=function(t){return e.updateHeight(t)}),style:{flex:"4"}},null,8,["min","disabled","value"])]),Ws],64)):Object(j["createCommentVNode"])("",!0),["text","image","shape"].includes(e.handleElement.type)?(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:1},[Object(j["createVNode"])(g),Object(j["createVNode"])("div",Ys,[Zs,Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"逆时针旋转"},{default:Ps((function(){return[Object(j["createVNode"])(I,{class:"icon-btn",onClick:t[17]||(t[17]=function(t){return e.updateRotate45("-")}),style:{flex:"2"}})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"顺时针旋转"},{default:Ps((function(){return[Object(j["createVNode"])(I,{class:"icon-btn",onClick:t[18]||(t[18]=function(t){return e.updateRotate45("+")}),style:{flex:2,transform:"rotateY(180deg)"}},null,8,["style"])]})),_:1},8,["mouseEnterDelay"]),Js,Object(j["createVNode"])(y,{min:-180,max:180,step:5,value:e.rotate,onChange:t[19]||(t[19]=function(t){return e.updateRotate(t)}),style:{flex:"4"}},null,8,["value"])])],64)):Object(j["createCommentVNode"])("",!0)])})),Qs=n("b69c"),$s=n.n(Qs),ef=Object(j["defineComponent"])({name:"element-positopn-panel",setup:function(){var e=Y(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["ref"])(0),o=Object(j["ref"])(0),c=Object(j["ref"])(0),a=Object(j["ref"])(0),r=Object(j["ref"])(0),l=Object(j["ref"])(!1),i=Object(j["computed"])((function(){return t.value&&Wo[t.value.type]||20}));Object(j["watch"])(t,(function(){t.value&&(n.value=$s()(t.value.left,1),o.value=$s()(t.value.top,1),l.value="fixedRatio"in t.value&&!!t.value.fixedRatio,"line"!==t.value.type&&(c.value=$s()(t.value.width,1),a.value=$s()(t.value.height,1),r.value="rotate"in t.value&&void 0!==t.value.rotate?$s()(t.value.rotate,1):0))}),{deep:!0,immediate:!0});var u=Fe(),d=u.orderElement,s=cc(),f=s.alignElementToCanvas,p=Ne(),b=p.addHistorySnapshot,m=function(n){var o={left:n};e.commit(y.UPDATE_ELEMENT,{id:t.value.id,props:o}),b()},v=function(n){var o={top:n};e.commit(y.UPDATE_ELEMENT,{id:t.value.id,props:o}),b()},O=function(n){var o={width:n};e.commit(y.UPDATE_ELEMENT,{id:t.value.id,props:o}),b()},h=function(n){var o={height:n};e.commit(y.UPDATE_ELEMENT,{id:t.value.id,props:o}),b()},g=function(n){var o={rotate:n};e.commit(y.UPDATE_ELEMENT,{id:t.value.id,props:o}),b()},k=function(n){var o={fixedRatio:n};e.commit(y.UPDATE_ELEMENT,{id:t.value.id,props:o}),b()},E=function(n){var o=45*Math.floor(r.value/45);"+"===n?o+=45:"-"===n&&(o-=45),o<-180&&(o=-180),o>180&&(o=180);var c={rotate:o};e.commit(y.UPDATE_ELEMENT,{id:t.value.id,props:c}),b()};return{handleElement:t,orderElement:d,alignElementToCanvas:f,left:n,top:o,width:c,height:a,rotate:r,fixedRatio:l,minSize:i,updateLeft:m,updateTop:v,updateWidth:O,updateHeight:h,updateRotate:g,updateFixedRatio:k,updateRotate45:E}}});n("b7a1");ef.render=Ks,ef.__scopeId="data-v-15c9ddcc";var tf=ef,nf=Object(j["withScopeId"])("data-v-2a95eecd");Object(j["pushScopeId"])("data-v-2a95eecd");var of={class:"element-animation-panel"},cf={key:0,class:"element-animation"},af={class:"animation-pool"},rf={class:"type-title"},lf={class:"pool-item-wrapper"},uf=Object(j["createTextVNode"])(" 图表元素暂不支持动画 "),df={key:1,class:"tip"},sf=Object(j["createTextVNode"])(" 选中画布中的元素添加动画"),ff={class:"index"},pf={class:"text"},bf={class:"handler"};Object(j["popScopeId"])();var mf,vf=nf((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconEffects"),l=Object(j["resolveComponent"])("Button"),i=Object(j["resolveComponent"])("Popover"),u=Object(j["resolveComponent"])("IconClick"),d=Object(j["resolveComponent"])("Divider"),s=Object(j["resolveComponent"])("IconPlayOne"),f=Object(j["resolveComponent"])("Tooltip"),p=Object(j["resolveComponent"])("IconCloseSmall"),b=Object(j["resolveComponent"])("Draggable");return Object(j["openBlock"])(),Object(j["createBlock"])("div",of,[e.handleElement?(Object(j["openBlock"])(),Object(j["createBlock"])("div",cf,["chart"!==e.handleElement.type?(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:0,trigger:"click",visible:e.animationPoolVisible,"onUpdate:visible":t[2]||(t[2]=function(t){return e.animationPoolVisible=t})},{content:nf((function(){return[Object(j["createVNode"])("div",af,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.animations,(function(n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"pool-type",key:n.name},[Object(j["createVNode"])("div",rf,Object(j["toDisplayString"])(n.name)+":",1),Object(j["createVNode"])("div",lf,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(n.children,(function(n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"pool-item",key:n.name,onMouseenter:function(t){return e.hoverPreviewAnimation=n.value},onMouseleave:t[1]||(t[1]=function(t){return e.hoverPreviewAnimation=""}),onClick:function(t){return e.addAnimation(n.value)}},[Object(j["createVNode"])("div",{class:["animation-box",["animate__animated","animate__faster",e.hoverPreviewAnimation===n.value&&"animate__".concat(n.value)]]},Object(j["toDisplayString"])(n.name),3)],40,["onMouseenter","onClick"])})),128))])])})),128))])]})),default:nf((function(){return[Object(j["createVNode"])(l,{class:"element-animation-btn"},{default:nf((function(){return[Object(j["createVNode"])(r,{style:{"margin-right":"5px"}}),Object(j["createTextVNode"])(" "+Object(j["toDisplayString"])(e.handleElementAnimation||"点击选择动画"),1)]})),_:1})]})),_:1},8,["visible"])):(Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:1,class:"element-animation-btn",disabled:""},{default:nf((function(){return[Object(j["createVNode"])(r,{style:{"margin-right":"5px"}}),uf]})),_:1}))])):(Object(j["openBlock"])(),Object(j["createBlock"])("div",df,[Object(j["createVNode"])(u),sf])),Object(j["createVNode"])(d),Object(j["createVNode"])(b,{class:"animation-sequence",modelValue:e.animationSequence,animation:300,scroll:!0,scrollSensitivity:50,onEnd:e.handleDragEnd,itemKey:"id"},{item:nf((function(t){var n,o=t.element,c=t.index;return[Object(j["createVNode"])("div",{class:["sequence-item",{active:(null===(n=e.handleElement)||void 0===n?void 0:n.id)===o.elId}]},[Object(j["createVNode"])("div",ff,Object(j["toDisplayString"])(c+1),1),Object(j["createVNode"])("div",pf,"【"+Object(j["toDisplayString"])(o.elType)+"】"+Object(j["toDisplayString"])(o.animationType),1),Object(j["createVNode"])("div",bf,[Object(j["createVNode"])(f,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"预览"},{default:nf((function(){return[Object(j["createVNode"])(s,{class:"handler-btn",onClick:function(t){return e.runAnimation(o.elId,o.type)}},null,8,["onClick"])]})),_:2},1032,["mouseEnterDelay"]),Object(j["createVNode"])(f,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除"},{default:nf((function(){return[Object(j["createVNode"])(p,{class:"handler-btn",onClick:function(t){return e.deleteAnimation(o.elId)}},null,8,["onClick"])]})),_:2},1032,["mouseEnterDelay"])])],2)]})),_:1},8,["modelValue","onEnd"])])})),Of=[{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"}]}],hf={},jf=Object(ke["a"])(Of);try{for(jf.s();!(mf=jf.n()).done;){var gf,yf=mf.value,kf=Object(ke["a"])(yf.children);try{for(kf.s();!(gf=kf.n()).done;){var Ef=gf.value;hf[Ef.value]=Ef.name}}catch(qO){kf.e(qO)}finally{kf.f()}}}catch(qO){jf.e(qO)}finally{jf.f()}var If=Object(j["defineComponent"])({name:"element-animation-panel",components:{Draggable:di.a},setup:function(){var e=Y(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["computed"])((function(){return e.getters.currentSlideAnimations})),o=Object(j["computed"])((function(){return e.getters.currentSlide})),c=Object(j["ref"])(""),a=Object(j["ref"])(!1),r=Ne(),l=r.addHistorySnapshot,i=Of,u=Object(j["computed"])((function(){if(!n.value)return[];var e,t=[],c=Object(ke["a"])(n.value);try{var a=function(){var n=e.value,c=o.value.elements.find((function(e){return e.id===n.elId}));if(!c)return"continue";var a=Xo[c.type],r=hf[n.type];t.push(Object(R["a"])(Object(R["a"])({},n),{},{elType:a,animationType:r}))};for(c.s();!(e=c.n()).done;)a()}catch(qO){c.e(qO)}finally{c.f()}return t})),d=Object(j["computed"])((function(){if(!t.value)return null;var e=n.value||[],o=e.find((function(e){return e.elId===t.value.id}));return o?hf[o.type]:null})),s=function(t){var o=n.value.filter((function(e){return e.elId!==t}));e.commit(y.UPDATE_SLIDE,{animations:o}),l()},f=function(t){var o=t.newIndex,c=t.oldIndex;if(c!==o){var a=JSON.parse(JSON.stringify(n.value)),r=a[c];a.splice(c,1),a.splice(o,0,r),e.commit(y.UPDATE_SLIDE,{animations:a}),l()}},p=function(e,t){var n="animate__",o=document.querySelector("#editable-element-".concat(e," [class^=editable-element-]"));if(o){var c="".concat(n).concat(t);o.classList.add("".concat(n,"animated"),c);var a=function(){o.classList.remove("".concat(n,"animated"),c)};o.addEventListener("animationend",a,{once:!0})}},b=function(o){var c=n.value.map((function(e){return e.elId===t.value.id?Object(R["a"])(Object(R["a"])({},e),{},{type:o}):e}));e.commit(y.UPDATE_SLIDE,{animations:c}),a.value=!1,l(),p(t.value.id,o)},m=function(o){if(d.value)b(o);else{var c=n.value?JSON.parse(JSON.stringify(n.value)):[];c.push({elId:t.value.id,type:o,duration:1e3}),e.commit(y.UPDATE_SLIDE,{animations:c}),a.value=!1,l(),p(t.value.id,o)}};return{handleElement:t,animationPoolVisible:a,animations:i,animationSequence:u,hoverPreviewAnimation:c,handleElementAnimation:d,addAnimation:m,deleteAnimation:s,handleDragEnd:f,runAnimation:p}}});n("967d");If.render=vf,If.__scopeId="data-v-2a95eecd";var Sf=If,Cf=Object(j["withScopeId"])("data-v-2e49fc42");Object(j["pushScopeId"])("data-v-2e49fc42");var Nf={class:"slide-style-panel"},xf=Object(j["createVNode"])("div",{class:"title"},"背景填充",-1),Tf={class:"row"},Lf=Object(j["createTextVNode"])("纯色填充"),wf=Object(j["createTextVNode"])("图片填充"),Vf=Object(j["createTextVNode"])("渐变填充"),_f=Object(j["createVNode"])("div",{style:{flex:"1"}},null,-1),Bf=Object(j["createTextVNode"])("原始大小"),Df=Object(j["createTextVNode"])("缩放"),Mf=Object(j["createTextVNode"])("拼贴"),Af=Object(j["createTextVNode"])("缩放铺满"),Pf=Object(j["createTextVNode"])("线性渐变"),Rf=Object(j["createTextVNode"])("径向渐变"),Ff={key:0,class:"background-image-wrapper"},Hf={class:"background-image"},zf={key:1,class:"background-gradient-wrapper"},Uf={class:"row"},Gf=Object(j["createVNode"])("div",{style:{flex:"2"}},"起点颜色:",-1),qf={class:"row"},Xf=Object(j["createVNode"])("div",{style:{flex:"2"}},"终点颜色:",-1),Wf={key:0,class:"row"},Yf=Object(j["createVNode"])("div",{style:{flex:"2"}},"渐变角度:",-1),Zf={class:"row"},Jf=Object(j["createTextVNode"])("应用背景到全部"),Kf={class:"row"},Qf=Object(j["createVNode"])("div",{style:{flex:"2"}},"画布尺寸:",-1),$f=Object(j["createTextVNode"])("宽屏 16 : 9"),ep=Object(j["createTextVNode"])("宽屏 16 :10"),tp=Object(j["createTextVNode"])("标准 4 :3"),np=Object(j["createVNode"])("div",{class:"title"},"全局主题",-1),op={class:"row"},cp=Object(j["createVNode"])("div",{style:{flex:"2"}},"字体:",-1),ap={class:"row"},rp=Object(j["createVNode"])("div",{style:{flex:"2"}},"字体颜色:",-1),lp={class:"row"},ip=Object(j["createVNode"])("div",{style:{flex:"2"}},"背景颜色:",-1),up={class:"row"},dp=Object(j["createVNode"])("div",{style:{flex:"2"}},"主题色:",-1),sp=Object(j["createVNode"])("div",{class:"title",style:{"margin-top":"20px"}},"预置主题:",-1),fp={class:"theme-list"},pp={class:"theme-item-content"},bp={class:"row"},mp=Object(j["createTextVNode"])("应用主题到全部");Object(j["popScopeId"])();var vp=Cf((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("SelectOption"),l=Object(j["resolveComponent"])("Select"),i=Object(j["resolveComponent"])("ColorPicker"),u=Object(j["resolveComponent"])("ColorButton"),d=Object(j["resolveComponent"])("Popover"),s=Object(j["resolveComponent"])("IconPlus"),f=Object(j["resolveComponent"])("FileInput"),p=Object(j["resolveComponent"])("Slider"),b=Object(j["resolveComponent"])("Button"),m=Object(j["resolveComponent"])("Divider"),v=Object(j["resolveComponent"])("SelectOptGroup");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Nf,[xf,Object(j["createVNode"])("div",Tf,[Object(j["createVNode"])(l,{style:{flex:"10"},value:e.background.type,onChange:t[1]||(t[1]=function(t){return e.updateBackgroundType(t)})},{default:Cf((function(){return[Object(j["createVNode"])(r,{value:"solid"},{default:Cf((function(){return[Lf]})),_:1}),Object(j["createVNode"])(r,{value:"image"},{default:Cf((function(){return[wf]})),_:1}),Object(j["createVNode"])(r,{value:"gradient"},{default:Cf((function(){return[Vf]})),_:1})]})),_:1},8,["value"]),_f,"solid"===e.background.type?(Object(j["openBlock"])(),Object(j["createBlock"])(d,{key:0,trigger:"click"},{content:Cf((function(){return[Object(j["createVNode"])(i,{modelValue:e.background.color,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.updateBackground({color:t})})},null,8,["modelValue"])]})),default:Cf((function(){return[Object(j["createVNode"])(u,{color:e.background.color||"#fff",style:{flex:"10"}},null,8,["color"])]})),_:1})):"image"===e.background.type?(Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:1,style:{flex:"10"},value:e.background.size||"cover",onChange:t[3]||(t[3]=function(t){return e.updateBackground({imageSize:t})})},{default:Cf((function(){return[Object(j["createVNode"])(r,{value:"initial"},{default:Cf((function(){return[Bf]})),_:1}),Object(j["createVNode"])(r,{value:"contain"},{default:Cf((function(){return[Df]})),_:1}),Object(j["createVNode"])(r,{value:"repeat"},{default:Cf((function(){return[Mf]})),_:1}),Object(j["createVNode"])(r,{value:"cover"},{default:Cf((function(){return[Af]})),_:1})]})),_:1},8,["value"])):(Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:2,style:{flex:"10"},value:e.background.gradientType,onChange:t[4]||(t[4]=function(t){return e.updateBackground({gradientType:t})})},{default:Cf((function(){return[Object(j["createVNode"])(r,{value:"linear"},{default:Cf((function(){return[Pf]})),_:1}),Object(j["createVNode"])(r,{value:"radial"},{default:Cf((function(){return[Rf]})),_:1})]})),_:1},8,["value"]))]),"image"===e.background.type?(Object(j["openBlock"])(),Object(j["createBlock"])("div",Ff,[Object(j["createVNode"])(f,{onChange:t[5]||(t[5]=function(t){return e.uploadBackgroundImage(t)})},{default:Cf((function(){return[Object(j["createVNode"])("div",Hf,[Object(j["createVNode"])("div",{class:"content",style:{backgroundImage:"url(".concat(e.background.image,")")}},[Object(j["createVNode"])(s)],4)])]})),_:1})])):Object(j["createCommentVNode"])("",!0),"gradient"===e.background.type?(Object(j["openBlock"])(),Object(j["createBlock"])("div",zf,[Object(j["createVNode"])("div",Uf,[Gf,Object(j["createVNode"])(d,{trigger:"click"},{content:Cf((function(){return[Object(j["createVNode"])(i,{modelValue:e.background.gradientColor[0],"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.updateBackground({gradientColor:[t,e.background.gradientColor[1]]})})},null,8,["modelValue"])]})),default:Cf((function(){return[Object(j["createVNode"])(u,{color:e.background.gradientColor[0],style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])("div",qf,[Xf,Object(j["createVNode"])(d,{trigger:"click"},{content:Cf((function(){return[Object(j["createVNode"])(i,{modelValue:e.background.gradientColor[1],"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.updateBackground({gradientColor:[e.background.gradientColor[0],t]})})},null,8,["modelValue"])]})),default:Cf((function(){return[Object(j["createVNode"])(u,{color:e.background.gradientColor[1],style:{flex:"3"}},null,8,["color"])]})),_:1})]),"linear"===e.background.gradientType?(Object(j["openBlock"])(),Object(j["createBlock"])("div",Wf,[Yf,Object(j["createVNode"])(p,{min:0,max:360,step:15,value:e.background.gradientRotate,style:{flex:"3"},onChange:t[8]||(t[8]=function(t){return e.updateBackground({gradientRotate:t})})},null,8,["value"])])):Object(j["createCommentVNode"])("",!0)])):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])("div",Zf,[Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[9]||(t[9]=function(t){return e.applyBackgroundAllSlide()})},{default:Cf((function(){return[Jf]})),_:1})]),Object(j["createVNode"])(m),Object(j["createVNode"])("div",Kf,[Qf,Object(j["createVNode"])(l,{style:{flex:"3"},value:e.viewportRatio,onChange:t[10]||(t[10]=function(t){return e.updateViewportRatio(t)})},{default:Cf((function(){return[Object(j["createVNode"])(r,{value:.5625},{default:Cf((function(){return[$f]})),_:1},8,["value"]),Object(j["createVNode"])(r,{value:.625},{default:Cf((function(){return[ep]})),_:1},8,["value"]),Object(j["createVNode"])(r,{value:.75},{default:Cf((function(){return[tp]})),_:1},8,["value"])]})),_:1},8,["value"])]),Object(j["createVNode"])(m),np,Object(j["createVNode"])("div",op,[cp,Object(j["createVNode"])(l,{style:{flex:"3"},value:e.theme.fontName,onChange:t[11]||(t[11]=function(t){return e.updateTheme({fontName:t})})},{default:Cf((function(){return[Object(j["createVNode"])(v,{label:"系统字体"},{default:Cf((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.availableFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:e.value,value:e.value},{default:Cf((function(){return[Object(j["createVNode"])("span",{style:{fontFamily:e.value}},Object(j["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(j["createVNode"])(v,{label:"在线字体"},{default:Cf((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.webFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:e.value,value:e.value},{default:Cf((function(){return[Object(j["createVNode"])("span",null,Object(j["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"])]),Object(j["createVNode"])("div",ap,[rp,Object(j["createVNode"])(d,{trigger:"click"},{content:Cf((function(){return[Object(j["createVNode"])(i,{modelValue:e.theme.fontColor,"onUpdate:modelValue":t[12]||(t[12]=function(t){return e.updateTheme({fontColor:t})})},null,8,["modelValue"])]})),default:Cf((function(){return[Object(j["createVNode"])(u,{color:e.theme.fontColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])("div",lp,[ip,Object(j["createVNode"])(d,{trigger:"click"},{content:Cf((function(){return[Object(j["createVNode"])(i,{modelValue:e.theme.backgroundColor,"onUpdate:modelValue":t[13]||(t[13]=function(t){return e.updateTheme({backgroundColor:t})})},null,8,["modelValue"])]})),default:Cf((function(){return[Object(j["createVNode"])(u,{color:e.theme.backgroundColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])("div",up,[dp,Object(j["createVNode"])(d,{trigger:"click"},{content:Cf((function(){return[Object(j["createVNode"])(i,{modelValue:e.theme.themeColor,"onUpdate:modelValue":t[14]||(t[14]=function(t){return e.updateTheme({themeColor:t})})},null,8,["modelValue"])]})),default:Cf((function(){return[Object(j["createVNode"])(u,{color:e.theme.themeColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),sp,Object(j["createVNode"])("div",fp,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.themes,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"theme-item",key:n,style:{backgroundColor:t.background},onClick:function(n){return e.updateTheme({fontColor:t.text,backgroundColor:t.background,themeColor:t.color})}},[Object(j["createVNode"])("div",pp,[Object(j["createVNode"])("div",{class:"text",style:{color:t.text}},"Aa",4),Object(j["createVNode"])("div",{class:"color-block",style:{backgroundColor:t.color}},null,4)])],12,["onClick"])})),128))]),Object(j["createVNode"])("div",bp,[Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[15]||(t[15]=function(t){return e.applyThemeAllSlide()})},{default:Cf((function(){return[mp]})),_:1})])])})),Op=[{color:"#d14424",background:"#ffffff",text:"#333"},{color:"#42464b",background:"#ffffff",text:"#333"},{color:"#5d82ba",background:"#ffffff",text:"#333"},{color:"#005a6f",background:"#ffffff",text:"#333"},{color:"#d0614c",background:"#dfb044",text:"#333"},{color:"#86a1ad",background:"#dfdbd4",text:"#333"},{color:"#697586",background:"#d5c4a4",text:"#333"},{color:"#333333",background:"#7acfa6",text:"#333"},{color:"#42464b",background:"#415065",text:"#fff"},{color:"#0c5999",background:"#35a2cd",text:"#fff"},{color:"#c49a41",background:"#8c4357",text:"#fff"},{color:"#dfaa00",background:"#2e4e7d",text:"#fff"},{color:"#d1ad88",background:"#f99070",text:"#fff"},{color:"#464d52",background:"#657984",text:"#fff"},{color:"#ffcfb6",background:"#1e4c6f",text:"#fff"},{color:"#c3a043",background:"#43292a",text:"#fff"},{color:"#464d52",background:"#60546f",text:"#fff"},{color:"#df9636",background:"#5b89a0",text:"#fff"},{color:"#b898a4",background:"#93716b",text:"#fff"},{color:"#c47a11",background:"#187db1",text:"#fff"},{color:"#333333",background:"#759564",text:"#fff"},{color:"#355b5e",background:"#424b50",text:"#fff"},{color:"#d29090",background:"#942a32",text:"#fff"},{color:"#00cfdf",background:"#3b434d",text:"#fff"},{color:"#424246",background:"#c70042",text:"#fff"},{color:"#2e4155",background:"#b35d44",text:"#fff"},{color:"#11bfce",background:"#8f98aa",text:"#fff"},{color:"#333333",background:"#549688",text:"#fff"}],hp=Op,jp=U,gp=Object(j["defineComponent"])({name:"slide-style-panel",components:{ColorButton:eu},setup:function(){var e=Y(),t=Object(j["computed"])((function(){return e.state.slides})),n=Object(j["computed"])((function(){return e.state.theme})),o=Object(j["computed"])((function(){return e.state.availableFonts})),c=Object(j["computed"])((function(){return e.state.viewportRatio})),a=Object(j["computed"])((function(){return e.getters.currentSlide})),r=Object(j["computed"])((function(){return a.value.background?a.value.background:{type:"solid",value:"#fff"}})),l=Ne(),i=l.addHistorySnapshot,u=function(t){if("solid"===t){var n=Object(R["a"])(Object(R["a"])({},r.value),{},{type:"solid",color:r.value.color||"#fff"});e.commit(y.UPDATE_SLIDE,{background:n})}else if("image"===t){var o=Object(R["a"])(Object(R["a"])({},r.value),{},{type:"image",image:r.value.image||"",imageSize:r.value.imageSize||"cover"});e.commit(y.UPDATE_SLIDE,{background:o})}else{var c=Object(R["a"])(Object(R["a"])({},r.value),{},{type:"gradient",gradientType:r.value.gradientType||"linear",gradientColor:r.value.gradientColor||["#fff","#fff"],gradientRotate:r.value.gradientRotate||0});e.commit(y.UPDATE_SLIDE,{background:c})}i()},d=function(t){e.commit(y.UPDATE_SLIDE,{background:Object(R["a"])(Object(R["a"])({},r.value),t)}),i()},s=function(e){var t=e[0];t&&Te(t).then((function(e){return d({image:e})}))},f=function(){var n=t.value.map((function(e){return Object(R["a"])(Object(R["a"])({},e),{},{background:a.value.background})}));e.commit(y.SET_SLIDES,n),i()},p=function(t){e.commit(y.SET_THEME,t)},b=function(){var o,c=JSON.parse(JSON.stringify(t.value)),a=n.value,r=a.themeColor,l=a.backgroundColor,u=a.fontColor,d=Object(ke["a"])(c);try{for(d.s();!(o=d.n()).done;){var s=o.value;s.background&&"image"===s.background.type||(s.background=Object(R["a"])(Object(R["a"])({},s.background),{},{type:"solid",color:l}));var f,p=s.elements,b=Object(ke["a"])(p);try{for(b.s();!(f=b.n()).done;){var m=f.value;"shape"===m.type?m.fill=r:"line"===m.type?m.color=r:"text"===m.type?m.fill&&(m.fill=r):"table"===m.type?m.theme&&(m.theme.color=r):"chart"===m.type&&(m.themeColor=r,m.gridColor=u)}}catch(qO){b.e(qO)}finally{b.f()}}}catch(qO){d.e(qO)}finally{d.f()}e.commit(y.SET_SLIDES,c),i()},m=function(t){e.commit(y.SET_VIEWPORT_RATIO,t)};return{availableFonts:o,background:r,updateBackgroundType:u,updateBackground:d,uploadBackgroundImage:s,applyBackgroundAllSlide:f,themes:hp,theme:n,webFonts:jp,updateTheme:p,applyThemeAllSlide:b,viewportRatio:c,updateViewportRatio:m}}});n("ef88");gp.render=vp,gp.__scopeId="data-v-2e49fc42";var yp=gp,kp=Object(j["withScopeId"])("data-v-6e3028f1");Object(j["pushScopeId"])("data-v-6e3028f1");var Ep={class:"slide-animation-panel"},Ip={class:"animation-pool"},Sp={class:"animation-text"},Cp=Object(j["createTextVNode"])("应用到全部");Object(j["popScopeId"])();var Np=kp((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Ep,[Object(j["createVNode"])("div",Ip,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.animations,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["animation-item",{active:e.currentTurningMode===t.value}],key:t.label,onClick:function(n){return e.updateTurningMode(t.value)}},[Object(j["createVNode"])("div",{class:["animation-block",t.value]},null,2),Object(j["createVNode"])("div",Sp,Object(j["toDisplayString"])(t.label),1)],10,["onClick"])})),128))]),Object(j["createVNode"])(r,{style:{width:"100%"},onClick:t[1]||(t[1]=function(t){return e.applyAllSlide()})},{default:kp((function(){return[Cp]})),_:1})])})),xp=Object(j["defineComponent"])({name:"slide-animation-panel",setup:function(){var e=Y(),t=Object(j["computed"])((function(){return e.state.slides})),n=Object(j["computed"])((function(){return e.getters.currentSlide})),o=Object(j["computed"])((function(){return n.value.turningMode||"slideY"})),c=[{label:"无",value:"no"},{label:"淡入淡出",value:"fade"},{label:"左右推移",value:"slideX"},{label:"上下推移",value:"slideY"}],a=Ne(),r=a.addHistorySnapshot,l=function(t){t!==o.value&&(e.commit(y.UPDATE_SLIDE,{turningMode:t}),r())},i=function(){var o=t.value.map((function(e){return Object(R["a"])(Object(R["a"])({},e),{},{turningMode:n.value.turningMode})}));e.commit(y.SET_SLIDES,o),r()};return{currentTurningMode:o,animations:c,updateTurningMode:l,applyAllSlide:i}}});n("5217");xp.render=Np,xp.__scopeId="data-v-6e3028f1";var Tp=xp,Lp=Object(j["withScopeId"])("data-v-153f2e6e");Object(j["pushScopeId"])("data-v-153f2e6e");var wp={class:"multi-position-panel"},Vp=Object(j["createTextVNode"])("水平均匀分布"),_p=Object(j["createTextVNode"])("垂直均匀分布"),Bp=Object(j["createTextVNode"])("组合"),Dp=Object(j["createTextVNode"])("取消组合");Object(j["popScopeId"])();var Mp=Lp((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconAlignLeft"),l=Object(j["resolveComponent"])("Button"),i=Object(j["resolveComponent"])("Tooltip"),u=Object(j["resolveComponent"])("IconAlignVertically"),d=Object(j["resolveComponent"])("IconAlignRight"),s=Object(j["resolveComponent"])("ButtonGroup"),f=Object(j["resolveComponent"])("IconAlignTop"),p=Object(j["resolveComponent"])("IconAlignHorizontally"),b=Object(j["resolveComponent"])("IconAlignBottom"),m=Object(j["resolveComponent"])("Divider"),v=Object(j["resolveComponent"])("IconGroup"),O=Object(j["resolveComponent"])("IconUngroup");return Object(j["openBlock"])(),Object(j["createBlock"])("div",wp,[Object(j["createVNode"])(s,{class:"row"},{default:Lp((function(){return[Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Lp((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[1]||(t[1]=function(t){return e.alignActiveElement("left")})},{default:Lp((function(){return[Object(j["createVNode"])(r)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"水平居中"},{default:Lp((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[2]||(t[2]=function(t){return e.alignActiveElement("horizontal")})},{default:Lp((function(){return[Object(j["createVNode"])(u)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Lp((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[3]||(t[3]=function(t){return e.alignActiveElement("right")})},{default:Lp((function(){return[Object(j["createVNode"])(d)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(s,{class:"row"},{default:Lp((function(){return[Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上对齐"},{default:Lp((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[4]||(t[4]=function(t){return e.alignActiveElement("top")})},{default:Lp((function(){return[Object(j["createVNode"])(f)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"垂直居中"},{default:Lp((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[5]||(t[5]=function(t){return e.alignActiveElement("vertical")})},{default:Lp((function(){return[Object(j["createVNode"])(p)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下对齐"},{default:Lp((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[6]||(t[6]=function(t){return e.alignActiveElement("bottom")})},{default:Lp((function(){return[Object(j["createVNode"])(b)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),e.activeElementList.length>2?(Object(j["openBlock"])(),Object(j["createBlock"])(s,{key:0,class:"row"},{default:Lp((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[7]||(t[7]=function(t){return e.uniformHorizontalDisplay()})},{default:Lp((function(){return[Vp]})),_:1}),Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[8]||(t[8]=function(t){return e.uniformVerticalDisplay()})},{default:Lp((function(){return[_p]})),_:1})]})),_:1})):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])(m),Object(j["createVNode"])(s,{class:"row"},{default:Lp((function(){return[Object(j["createVNode"])(l,{disabled:!e.canCombine,onClick:t[9]||(t[9]=function(t){return e.combineElements()}),style:{flex:"1"}},{default:Lp((function(){return[Object(j["createVNode"])(v,{style:{"margin-right":"3px"}}),Bp]})),_:1},8,["disabled"]),Object(j["createVNode"])(l,{disabled:e.canCombine,onClick:t[10]||(t[10]=function(t){return e.uncombineElements()}),style:{flex:"1"}},{default:Lp((function(){return[Object(j["createVNode"])(O,{style:{"margin-right":"3px"}}),Dp]})),_:1},8,["disabled"])]})),_:1})])})),Ap=function(){var e=Y(),t=Object(j["computed"])((function(){return e.state.activeElementIdList})),n=Object(j["computed"])((function(){return e.getters.activeElementList})),o=Object(j["computed"])((function(){return e.getters.currentSlide})),c=Ne(),a=c.addHistorySnapshot,r=function(c){var r,l=Ao(n.value),i=l.minX,u=l.maxX,d=l.minY,s=l.maxY,f=JSON.parse(JSON.stringify(o.value.elements)),p={},b=Object(ke["a"])(n.value);try{var m=function(){var e=r.value;if(e.groupId&&!p[e.groupId]){var t=n.value.filter((function(t){return t.groupId===e.groupId}));p[e.groupId]=Ao(t)}};for(b.s();!(r=b.n()).done;)m()}catch(qO){b.e(qO)}finally{b.f()}if(c===ee.LEFT)f.forEach((function(e){if(t.value.includes(e.id))if(e.groupId){var n=p[e.groupId],o=n.minX-i;e.left=e.left-o}else if("rotate"in e&&e.rotate){var c=Do({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),a=c.offsetX;e.left=i-a}else e.left=i}));else if(c===ee.RIGHT)f.forEach((function(e){if(t.value.includes(e.id))if(e.groupId){var n=p[e.groupId],o=n.maxX-u;e.left=e.left-o}else{var c="line"===e.type?Math.max(e.start[0],e.end[0]):e.width;if("rotate"in e&&e.rotate){var a=Do({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),r=a.offsetX;e.left=u-c+r}else e.left=u-c}}));else if(c===ee.TOP)f.forEach((function(e){if(t.value.includes(e.id))if(e.groupId){var n=p[e.groupId],o=n.minY-d;e.top=e.top-o}else if("rotate"in e&&e.rotate){var c=Do({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),a=c.offsetY;e.top=d-a}else e.top=d}));else if(c===ee.BOTTOM)f.forEach((function(e){if(t.value.includes(e.id))if(e.groupId){var n=p[e.groupId],o=n.maxY-s;e.top=e.top-o}else{var c="line"===e.type?Math.max(e.start[1],e.end[1]):e.height;if("rotate"in e&&e.rotate){var a=Do({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),r=a.offsetY;e.top=s-c+r}else e.top=s-c}}));else if(c===ee.HORIZONTAL){var v=(i+u)/2;f.forEach((function(e){if(t.value.includes(e.id))if(e.groupId){var n=p[e.groupId],o=(n.maxX+n.minX)/2,c=o-v;e.left=e.left-c}else{var a="line"===e.type?Math.max(e.start[0],e.end[0]):e.width;e.left=v-a/2}}))}else if(c===ee.VERTICAL){var O=(d+s)/2;f.forEach((function(e){if(t.value.includes(e.id))if(e.groupId){var n=p[e.groupId],o=(n.maxY+n.minY)/2,c=o-O;e.top=e.top-c}else{var a="line"===e.type?Math.max(e.start[1],e.end[1]):e.height;e.top=O-a/2}}))}e.commit(y.UPDATE_SLIDE,{elements:f}),a()};return{alignActiveElement:r}},Pp=function(){var e=Y(),t=Object(j["computed"])((function(){return e.state.activeElementIdList})),n=Object(j["computed"])((function(){return e.getters.activeElementList})),o=Object(j["computed"])((function(){return e.getters.currentSlide})),c=Ne(),a=c.addHistorySnapshot,r=function(){var c=Ao(n.value),r=c.minX,l=c.maxX,i=JSON.parse(JSON.stringify(n.value)),u=JSON.parse(JSON.stringify(o.value.elements));i.sort((function(e,t){var n=Mo(e),o=n.minX,c=Mo(t),a=c.minX;return o-a}));var d,s=0,f=Object(ke["a"])(n.value);try{for(f.s();!(d=f.n()).done;){var p=d.value,b=Mo(p),m=b.minX,v=b.maxX;s+=v-m}}catch(qO){f.e(qO)}finally{f.f()}var O,h=(l-r-s)/(n.value.length-1),j=[],g=Object(ke["a"])(i);try{for(g.s();!(O=g.n()).done;){var k=O.value;if(j.length){var E=j[j.length-1].el,I=j[j.length-1].pos,S=Mo(E),C=S.minX,N=S.maxX,x=N-C;j.push({el:k,pos:I+x+h})}else{var T=Mo(k),L=T.minX;j.push({el:k,pos:L})}}}catch(qO){g.e(qO)}finally{g.f()}var w,V=Object(ke["a"])(u);try{for(V.s();!(w=V.n()).done;){var _=w.value;if(t.value.includes(_.id)){var B,D=Object(ke["a"])(j);try{for(D.s();!(B=D.n()).done;){var M=B.value;if(M.el.id===_.id)if("rotate"in _&&_.rotate){var A=Do({left:_.left,top:_.top,width:_.width,height:_.height,rotate:_.rotate}),P=A.offsetX;_.left=M.pos-P}else _.left=M.pos}}catch(qO){D.e(qO)}finally{D.f()}}}}catch(qO){V.e(qO)}finally{V.f()}e.commit(y.UPDATE_SLIDE,{elements:u}),a()},l=function(){var c=Ao(n.value),r=c.minY,l=c.maxY,i=JSON.parse(JSON.stringify(n.value)),u=JSON.parse(JSON.stringify(o.value.elements));i.sort((function(e,t){var n=Mo(e),o=n.minY,c=Mo(t),a=c.minY;return o-a}));var d,s=0,f=Object(ke["a"])(n.value);try{for(f.s();!(d=f.n()).done;){var p=d.value,b=Mo(p),m=b.minY,v=b.maxY;s+=v-m}}catch(qO){f.e(qO)}finally{f.f()}var O,h=(l-r-s)/(n.value.length-1),j=[],g=Object(ke["a"])(i);try{for(g.s();!(O=g.n()).done;){var k=O.value;if(j.length){var E=j[j.length-1].el,I=j[j.length-1].pos,S=Mo(E),C=S.minY,N=S.maxY,x=N-C;j.push({el:k,pos:I+x+h})}else{var T=Mo(k),L=T.minY;j.push({el:k,pos:L})}}}catch(qO){g.e(qO)}finally{g.f()}var w,V=Object(ke["a"])(u);try{for(V.s();!(w=V.n()).done;){var _=w.value;if(t.value.includes(_.id)){var B,D=Object(ke["a"])(j);try{for(D.s();!(B=D.n()).done;){var M=B.value;if(M.el.id===_.id)if("rotate"in _&&_.rotate){var A=Do({left:_.left,top:_.top,width:_.width,height:_.height,rotate:_.rotate}),P=A.offsetY;_.top=M.pos-P}else _.top=M.pos}}catch(qO){D.e(qO)}finally{D.f()}}}}catch(qO){V.e(qO)}finally{V.f()}e.commit(y.UPDATE_SLIDE,{elements:u}),a()};return{uniformHorizontalDisplay:r,uniformVerticalDisplay:l}},Rp=Object(j["defineComponent"])({name:"multi-position-panel",setup:function(){var e=Y(),t=Object(j["computed"])((function(){return e.getters.activeElementList})),n=Me(),o=n.combineElements,c=n.uncombineElements,a=Ap(),r=a.alignActiveElement,l=Pp(),i=l.uniformHorizontalDisplay,u=l.uniformVerticalDisplay,d=Object(j["computed"])((function(){var e=t.value[0].groupId;if(!e)return!0;var n=t.value.every((function(t){return(t.groupId&&t.groupId)===e}));return!n}));return{activeElementList:t,canCombine:d,combineElements:o,uncombineElements:c,alignActiveElement:r,uniformHorizontalDisplay:i,uniformVerticalDisplay:u}}});n("66fa");Rp.render=Mp,Rp.__scopeId="data-v-153f2e6e";var Fp=Rp,Hp=Object(j["defineComponent"])({name:"toolbar",setup:function(){var e=Y(),t=Object(j["computed"])((function(){return e.state.toolbarState})),n=[{label:"样式",value:hi.EL_STYLE},{label:"位置",value:hi.EL_POSITION},{label:"动画",value:hi.EL_ANIMATION}],o=[{label:"页面样式",value:hi.SLIDE_STYLE},{label:"切换",value:hi.SLIDE_ANIMATION},{label:"动画",value:hi.EL_ANIMATION}],c=[{label:"位置",value:hi.MULTI_POSITION},{label:"样式",value:hi.EL_STYLE}],a=function(t){e.commit(y.SET_TOOLBAR_STATE,t)},r=Object(j["computed"])((function(){return e.state.activeElementIdList})),l=Object(j["computed"])((function(){return r.value.length?r.value.length>1?c:n:o}));Object(j["watch"])(l,(function(){var n=l.value.map((function(e){return e.value}));n.includes(t.value)||e.commit(y.SET_TOOLBAR_STATE,n[0])}));var i=Object(j["computed"])((function(){var e,n=(e={},Object(N["a"])(e,hi.EL_STYLE,As),Object(N["a"])(e,hi.EL_POSITION,tf),Object(N["a"])(e,hi.EL_ANIMATION,Sf),Object(N["a"])(e,hi.SLIDE_STYLE,yp),Object(N["a"])(e,hi.SLIDE_ANIMATION,Tp),Object(N["a"])(e,hi.MULTI_POSITION,Fp),e);return n[t.value]||null}));return{toolbarState:t,currentTabs:l,setToolbarState:a,currentPanelComponent:i}}});n("a5b8");Hp.render=Oi,Hp.__scopeId="data-v-f790671e";var zp=Hp,Up=Object(j["withScopeId"])("data-v-89372f4a");Object(j["pushScopeId"])("data-v-89372f4a");var Gp={class:"remark"};Object(j["popScopeId"])();var qp=Up((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",Gp,[Object(j["createVNode"])("div",{class:"resize-handler",onMousedown:t[1]||(t[1]=function(t){return e.resize(t)})},null,32),Object(j["createVNode"])("textarea",{value:e.remark,placeholder:"点击输入演讲者备注",onInput:t[2]||(t[2]=function(t){return e.handleInput(t)})},null,40,["value"])])})),Xp=Object(j["defineComponent"])({name:"remark",props:{height:{type:Number,required:!0}},setup:function(e,t){var n=t.emit,o=Y(),c=Object(j["computed"])((function(){return o.getters.currentSlide})),a=Object(j["computed"])((function(){var e;return(null===(e=c.value)||void 0===e?void 0:e.remark)||""})),r=function(e){var t=e.target.value;o.commit(y.UPDATE_SLIDE,{remark:t})},l=function(t){var o=!0,c=t.pageY,a=e.height;document.onmousemove=function(e){if(o){var t=e.pageY,r=t-c,l=-r+a;l<40&&(l=40),l>120&&(l=120),n("update:height",l)}},document.onmouseup=function(){o=!1,document.onmousemove=null,document.onmouseup=null}};return{remark:a,handleInput:r,resize:l}}});n("4615");Xp.render=qp,Xp.__scopeId="data-v-89372f4a";var Wp=Xp,Yp=Object(j["defineComponent"])({name:"editor",components:{EditorHeader:No,Canvas:pl,CanvasTool:ci,Thumbnails:fi,Toolbar:zp,Remark:Wp},setup:function(){var e=Object(j["ref"])(40);return Xe(),We(),{remarkHeight:e}}});n("1fecb");Yp.render=ae,Yp.__scopeId="data-v-55178b6a";var Zp=Yp,Jp=Object(j["withScopeId"])("data-v-5e85dd68");Object(j["pushScopeId"])("data-v-5e85dd68");var Kp={class:"pptist-screen"},Qp={class:"tools"};Object(j["popScopeId"])();var $p=Jp((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ScreenSlide"),l=Object(j["resolveComponent"])("SlideThumbnails"),i=Object(j["resolveComponent"])("WritingBoardTool"),u=Object(j["resolveComponent"])("IconLeftTwo"),d=Object(j["resolveComponent"])("IconRightTwo"),s=Object(j["resolveComponent"])("IconWrite"),f=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Kp,[Object(j["withDirectives"])(Object(j["createVNode"])("div",{class:"slide-list",onMousewheel:t[1]||(t[1]=function(t){return e.mousewheelListener(t)})},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.slides,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["slide-item","turning-mode-".concat(t.turningMode||"slideY"),{current:n===e.slideIndex,before:ne.slideIndex,hide:(n===e.slideIndex-1||n===e.slideIndex+1)&&t.turningMode!==e.currentSlide.turningMode}],key:t.id},[Object(j["createVNode"])("div",{class:"slide-content",style:{width:e.slideWidth+"px",height:e.slideHeight+"px"}},[Object(j["createVNode"])(r,{slide:t,scale:e.scale,animationIndex:e.animationIndex},null,8,["slide","scale","animationIndex"])],4)],2)})),128))],544),[[f,e.contextmenus]]),e.slideThumbnailModelVisible?(Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:0,turnSlideToIndex:e.turnSlideToIndex,onClose:t[2]||(t[2]=function(t){return e.slideThumbnailModelVisible=!1})},null,8,["turnSlideToIndex"])):Object(j["createCommentVNode"])("",!0),e.writingBoardToolVisible?(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:1,onClose:t[3]||(t[3]=function(t){return e.writingBoardToolVisible=!1})})):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])("div",Qp,[Object(j["createVNode"])(u,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:t[4]||(t[4]=function(t){return e.execPrev()})}),Object(j["createVNode"])(d,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:t[5]||(t[5]=function(t){return e.execNext()})}),Object(j["createVNode"])(s,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:t[6]||(t[6]=function(t){return e.writingBoardToolVisible=!0})})]),e.showPageNumber?(Object(j["openBlock"])(),Object(j["createBlock"])("div",{key:2,class:"page-number",onClick:t[7]||(t[7]=function(t){return e.slideThumbnailModelVisible=!0})},Object(j["toDisplayString"])(e.slideIndex+1)+" / "+Object(j["toDisplayString"])(e.slides.length),1)):Object(j["createCommentVNode"])("",!0)])})),eb=Object(j["withScopeId"])("data-v-a094625a"),tb=eb((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ScreenElement");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"screen-slide",style:{width:e.VIEWPORT_SIZE+"px",height:e.VIEWPORT_SIZE*e.viewportRatio+"px",transform:"scale(".concat(e.scale,")")}},[Object(j["createVNode"])("div",{class:"background",style:Object(R["a"])({},e.backgroundStyle)},null,4),(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.slide.elements,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:t.id,elementInfo:t,elementIndex:n+1,animationIndex:e.animationIndex},null,8,["elementInfo","elementIndex","animationIndex"])})),128))],4)}));function nb(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"screen-element",id:"screen-element-".concat(e.elementInfo.id),style:{zIndex:e.elementIndex,color:e.theme.fontColor,fontFamily:e.theme.fontName,visibility:e.needWaitAnimation?"hidden":"visible"}},[(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentElementComponent),{elementInfo:e.elementInfo},null,8,["elementInfo"]))],12,["id"])}var ob=Object(j["withScopeId"])("data-v-1423f8c2"),cb=ob((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ElementOutline"),l=Object(j["resolveComponent"])("Chart");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"screen-element-chart",style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"}},[Object(j["createVNode"])("div",{class:"element-content",style:{backgroundColor:e.elementInfo.fill}},[Object(j["createVNode"])(r,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(j["createVNode"])(l,{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},null,8,["width","height","type","data","options","themeColor","gridColor"])],4)],4)})),ab=Object(j["defineComponent"])({name:"screen-element-chart",components:{ElementOutline:Dn,Chart:Ba},props:{elementInfo:{type:Object,required:!0}}});n("1539");ab.render=cb,ab.__scopeId="data-v-1423f8c2";var rb=ab,lb=Object(j["defineComponent"])({name:"screen-element",props:{elementInfo:{type:Object,required:!0},elementIndex:{type:Number,required:!0},animationIndex:{type:Number,default:-1}},setup:function(e){var t=Object(j["computed"])((function(){var t,n=(t={},Object(N["a"])(t,Xt.IMAGE,Tn),Object(N["a"])(t,Xt.TEXT,An),Object(N["a"])(t,Xt.SHAPE,qn),Object(N["a"])(t,Xt.LINE,eo),Object(N["a"])(t,Xt.CHART,rb),Object(N["a"])(t,Xt.TABLE,jo),t);return n[e.elementInfo.type]||null})),n=Y(),o=Object(j["computed"])((function(){return n.state.theme})),c=Object(j["computed"])((function(){return n.getters.currentSlide})),a=Object(j["computed"])((function(){var t=c.value.animations||[],n=t.findIndex((function(t){return t.elId===e.elementInfo.id}));return-1!==n&&n>=e.animationIndex}));return{currentElementComponent:t,needWaitAnimation:a,theme:o}}});lb.render=nb;var ib=lb,ub=Object(j["defineComponent"])({name:"screen-slide",components:{ScreenElement:ib},props:{slide:{type:Object,required:!0},scale:{type:Number,required:!0},animationIndex:{type:Number,default:-1}},setup:function(e){var t=Y(),n=Object(j["computed"])((function(){return t.state.viewportRatio})),o=Object(j["computed"])((function(){return e.slide.background})),c=Qt(o),a=c.backgroundStyle;return{backgroundStyle:a,VIEWPORT_SIZE:Le,viewportRatio:n}}});n("7599");ub.render=tb,ub.__scopeId="data-v-a094625a";var db=ub,sb=Object(j["withScopeId"])("data-v-9174b3bc");Object(j["pushScopeId"])("data-v-9174b3bc");var fb={class:"slide-thumbnails"},pb={class:"return-button"},bb={class:"slide-thumbnails-content"};Object(j["popScopeId"])();var mb=sb((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconArrowCircleLeft"),l=Object(j["resolveComponent"])("ThumbnailSlide");return Object(j["openBlock"])(),Object(j["createBlock"])("div",fb,[Object(j["createVNode"])("div",pb,[Object(j["createVNode"])(r,{class:"icon",onClick:t[1]||(t[1]=function(t){return e.close()})})]),Object(j["createVNode"])("div",bb,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.slides,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["thumbnail",{active:n===e.slideIndex}],key:t.id,onClick:function(t){return e.turnSlideToIndex(n)}},[Object(j["createVNode"])(l,{slide:t,size:150},null,8,["slide"])],10,["onClick"])})),128))])])})),vb=Object(j["defineComponent"])({name:"slide-thumbnails",components:{ThumbnailSlide:Eo},props:{turnSlideToIndex:{type:Function}},setup:function(e,t){var n=t.emit,o=Y(),c=Object(j["computed"])((function(){return o.state.slides})),a=Object(j["computed"])((function(){return o.state.slideIndex})),r=function(){return n("close")};return{slides:c,slideIndex:a,close:r}}});n("fe34");vb.render=mb,vb.__scopeId="data-v-9174b3bc";var Ob=vb,hb=Object(j["withScopeId"])("data-v-f34025bc");Object(j["pushScopeId"])("data-v-f34025bc");var jb={class:"writing-board-tool"},gb={class:"tools"},yb={class:"colors"};Object(j["popScopeId"])();var kb=hb((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("WritingBoard"),l=Object(j["resolveComponent"])("IconWrite"),i=Object(j["resolveComponent"])("Tooltip"),u=Object(j["resolveComponent"])("IconErase"),d=Object(j["resolveComponent"])("IconClear"),s=Object(j["resolveComponent"])("IconClose");return Object(j["openBlock"])(),Object(j["createBlock"])("div",jb,[(Object(j["openBlock"])(),Object(j["createBlock"])(j["Teleport"],{to:"body"},[Object(j["createVNode"])(r,{ref:"writingBoardRef",color:e.writingBoardColor,model:e.writingBoardModel},null,8,["color","model"])])),Object(j["createVNode"])("div",gb,[Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"画笔"},{default:hb((function(){return[Object(j["createVNode"])("div",{class:["btn",{active:"pen"===e.writingBoardModel}],onClick:t[1]||(t[1]=function(t){return e.changePen()})},[Object(j["createVNode"])(l,{class:"icon"})],2)]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"橡皮擦"},{default:hb((function(){return[Object(j["createVNode"])("div",{class:["btn",{active:"eraser"===e.writingBoardModel}],onClick:t[2]||(t[2]=function(t){return e.changeEraser()})},[Object(j["createVNode"])(u,{class:"icon"})],2)]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"清除墨迹"},{default:hb((function(){return[Object(j["createVNode"])("div",{class:"btn",onClick:t[3]||(t[3]=function(t){return e.clearCanvas()})},[Object(j["createVNode"])(d,{class:"icon"})])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])("div",yb,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.writingBoardColors,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["color",{active:t===e.writingBoardColor}],key:t,style:{backgroundColor:t},onClick:function(n){return e.changeColor(t)}},null,14,["onClick"])})),128))]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.3,title:"关闭画笔"},{default:hb((function(){return[Object(j["createVNode"])("div",{class:"btn",onClick:t[4]||(t[4]=function(t){return e.closeWritingBoard()})},[Object(j["createVNode"])(s,{class:"icon"})])]})),_:1},8,["mouseEnterDelay"])])])})),Eb=Object(j["withScopeId"])("data-v-4ddc4b2c");Object(j["pushScopeId"])("data-v-4ddc4b2c");var Ib={class:"writing-board",ref:"writingBoardRef"};Object(j["popScopeId"])();var Sb=Eb((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconWrite");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Ib,[Object(j["createVNode"])("canvas",{class:"canvas",ref:"canvasRef",onMousedown:t[1]||(t[1]=function(t){return e.handleMousedown(t)}),onMousemove:t[2]||(t[2]=function(t){return e.handleMousemove(t)}),onMouseup:t[3]||(t[3]=function(t){return e.handleMouseup()}),onMouseleave:t[4]||(t[4]=function(t){e.handleMouseup(),e.mouseInCanvas=!1}),onMouseenter:t[5]||(t[5]=function(t){return e.mouseInCanvas=!0})},null,544),e.mouseInCanvas&&"pen"===e.model?(Object(j["openBlock"])(),Object(j["createBlock"])("div",{key:0,class:"pen",style:{left:e.mouse.x-e.penSize/2+"px",top:e.mouse.y-36+e.penSize/2+"px",color:e.color}},[Object(j["createVNode"])(r,{class:"icon",size:"36"})],4)):Object(j["createCommentVNode"])("",!0),e.mouseInCanvas&&"eraser"===e.model?(Object(j["openBlock"])(),Object(j["createBlock"])("div",{key:1,class:"eraser",style:{left:e.mouse.x-e.rubberSize/2+"px",top:e.mouse.y-e.rubberSize/2+"px",width:e.rubberSize+"px",height:e.rubberSize+"px"}},null,4)):Object(j["createCommentVNode"])("",!0)],512)})),Cb=6,Nb=80,xb=Object(j["defineComponent"])({name:"writing-board",props:{color:{type:String,default:"#ffcc00"},model:{type:String,default:"pen"}},setup:function(e){var t=null,n=Object(j["ref"])(),o=Object(j["ref"])(),c={x:0,y:0},a=!1,r=0,l=-1,i=Object(j["reactive"])({x:0,y:0}),u=function(e){i.x=e.pageX,i.y=e.pageY},d=Object(j["ref"])(!1),s=function(){o.value&&n.value&&(t=o.value.getContext("2d"),t&&(o.value.width=n.value.clientWidth,o.value.height=n.value.clientHeight,o.value.style.width=n.value.clientWidth+"px",o.value.style.height=n.value.clientHeight+"px",t.lineCap="round",t.lineJoin="round"))};Object(j["onMounted"])(s);var f=function(n,o,a){if(t){var r=c.x,l=c.y;t.lineWidth=a,t.strokeStyle=e.color,t.beginPath(),t.moveTo(r,l),t.lineTo(n,o),t.stroke(),t.closePath()}},p=function(e,n){var a,r,l,i;if(t&&o.value){var u=c.x,d=c.y,s=Nb/2,f=s*Math.sin(Math.atan((n-d)/(e-u))),p=s*Math.cos(Math.atan((n-d)/(e-u))),b=[u+f,d-p],m=[u-f,d+p],v=[e+f,n-p],O=[e-f,n+p];t.save(),t.beginPath(),t.arc(e,n,s,0,2*Math.PI),t.clip(),t.clearRect(0,0,o.value.width,o.value.height),t.restore(),t.save(),t.beginPath(),(a=t).moveTo.apply(a,b),(r=t).lineTo.apply(r,v),(l=t).lineTo.apply(l,O),(i=t).lineTo.apply(i,m),t.closePath(),t.clip(),t.clearRect(0,0,o.value.width,o.value.height),t.restore()}},b=function(e){a=!0,c={x:e.offsetX,y:e.offsetY},r=(new Date).getTime()},m=function(e,t){var n=c.x,o=c.y;return Math.sqrt((e-n)*(e-n)+(t-o)*(t-o))},v=function(e,t){var n,o=10,c=.1,a=Cb,r=3,i=e/t;return n=i<=c?a:i>=o?r:a-i/o*a,-1===l?n:1*n/3+2*l/3},O=function(t){if(u(t),a){var n=(new Date).getTime();if("pen"===e.model){var o=m(t.offsetX,t.offsetY),i=n-r,d=v(o,i);f(t.offsetX,t.offsetY,d),l=d}else p(t.offsetX,t.offsetY);c={x:t.offsetX,y:t.offsetY},r=(new Date).getTime()}},h=function(){a&&(a=!1)},g=function(){t&&o.value&&t.clearRect(0,0,o.value.width,o.value.height)};return{mouse:i,mouseInCanvas:d,penSize:Cb,rubberSize:Nb,writingBoardRef:n,canvasRef:o,handleMousedown:b,handleMousemove:O,handleMouseup:h,clearCanvas:g}}});n("6c26");xb.render=Sb,xb.__scopeId="data-v-4ddc4b2c";var Tb=xb,Lb=["#000000","#ffffff","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c"],wb=Object(j["defineComponent"])({name:"writing-board-tool",components:{WritingBoard:Tb},setup:function(e,t){var n=t.emit,o=Object(j["ref"])(),c=Object(j["ref"])("#e2534d"),a=Object(j["ref"])("pen"),r=function(){a.value="pen"},l=function(){a.value="eraser"},i=function(){o.value.clearCanvas()},u=function(e){"pen"!==a.value&&(a.value="pen"),c.value=e},d=function(){n("close")};return{writingBoardRef:o,writingBoardColors:Lb,writingBoardColor:c,writingBoardModel:a,changePen:r,changeEraser:l,clearCanvas:i,changeColor:u,closeWritingBoard:d}}});n("5f39");wb.render=kb,wb.__scopeId="data-v-f34025bc";var Vb=wb,_b=Object(j["defineComponent"])({name:"screen",components:{ScreenSlide:db,SlideThumbnails:Ob,WritingBoardTool:Vb},setup:function(){var e=Y(),t=Object(j["computed"])((function(){return e.state.slides})),n=Object(j["computed"])((function(){return e.state.slideIndex})),o=Object(j["computed"])((function(){return e.state.viewportRatio})),c=Object(j["computed"])((function(){return e.getters.currentSlide})),a=Object(j["ref"])(0),r=Object(j["ref"])(0),l=Object(j["computed"])((function(){return a.value/Le})),i=Object(j["ref"])(!1),u=Object(j["ref"])(!1),d=Object(j["ref"])(!1),s=function(){var e,t,n=document.body.clientWidth,c=document.body.clientHeight;c/n===o.value?(e=n,t=c):c/n>o.value?(e=n,t=n*o.value):(e=c/o.value,t=c),a.value=e,r.value=t},f=Ge(),p=f.exitScreening,b=function(){s(),Ue()||p()};Object(j["onMounted"])((function(){window.addEventListener("resize",b)})),Object(j["onUnmounted"])((function(){window.removeEventListener("resize",b)}));var m=Object(j["computed"])((function(){return c.value.animations||[]})),v=Object(j["ref"])(0),O=function(){var e="animate__",t=m.value[v.value];v.value+=1;var n=document.querySelector("#screen-element-".concat(t.elId," [class^=base-element-]"));if(n){var o="".concat(e).concat(t.type);n.classList.add("".concat(e,"animated"),o);var c=function(){n.classList.remove("".concat(e,"animated"),o)};n.addEventListener("animationend",c,{once:!0})}},h=Object(j["ref"])(0),g=function(){h.value&&(clearInterval(h.value),h.value=0)};Object(j["onUnmounted"])(g);var k=function(){if(m.value.length&&v.value>0)v.value-=1;else if(n.value>0){e.commit(y.UPDATE_SLIDE_INDEX,n.value-1);var t=m.value?m.value.length:0;v.value=t}else le["a"].success("已经是第一页了")},E=function(){m.value.length&&v.value0&&E()}),500,{leading:!0,trailing:!1}),C=function(e){var t=e.key.toUpperCase();t===ce.UP||t===ce.LEFT?k():t!==ce.DOWN&&t!==ce.RIGHT&&t!==ce.SPACE&&t!==ce.ENTER||E()};Object(j["onMounted"])((function(){document.addEventListener("keydown",C)})),Object(j["onUnmounted"])((function(){document.removeEventListener("keydown",C)}));var N=function(){e.commit(y.UPDATE_SLIDE_INDEX,n.value-1),v.value=0},x=function(){e.commit(y.UPDATE_SLIDE_INDEX,n.value+1),v.value=0},T=function(t){u.value=!1,e.commit(y.UPDATE_SLIDE_INDEX,t),v.value=0},L=function(){return[{text:"上一页",subText:"↑ ←",disable:n.value<=0,handler:function(){return N()}},{text:"下一页",subText:"↓ →",disable:n.value>=t.value.length-1,handler:function(){return x()}},{text:"第一页",disable:0===n.value,handler:function(){return T(0)}},{text:"最后一页",disable:n.value===t.value.length-1,handler:function(){return T(t.value.length-1)}},{divider:!0},{text:"显示页码",subText:i.value?"√":"",handler:function(){return i.value=!i.value}},{text:"查看所有幻灯片",handler:function(){return u.value=!0}},{text:"画笔",handler:function(){return d.value=!0}},{divider:!0},{text:h.value?"取消自动放映":"自动放映",handler:h.value?g:I},{text:"结束放映",subText:"ESC",handler:p}]};return Object(j["provide"])("slideScale",l),{slides:t,slideIndex:n,currentSlide:c,slideWidth:a,slideHeight:r,scale:l,mousewheelListener:S,animationIndex:v,contextmenus:L,execPrev:k,execNext:E,slideThumbnailModelVisible:u,turnSlideToIndex:T,writingBoardToolVisible:d,showPageNumber:i}}});n("9b75");_b.render=$p,_b.__scopeId="data-v-5e85dd68";var Bb=_b,Db=Object(j["defineComponent"])({name:"app",components:{Editor:Zp,Screen:Bb},setup:function(){var e=Y(),t=Object(j["computed"])((function(){return e.state.screening}));return window.onbeforeunload=function(){return!1},Object(j["onMounted"])((function(){e.commit(y.SET_AVAILABLE_FONTS),e.dispatch(k.INIT_SNAPSHOT_DATABASE)})),{screening:t}}});n("0679");Db.render=g;var Mb=Db;n("793f"),n("41ed"),n("5952"),n("c860"),n("ae3f"),n("8c56"),n("77ed");function Ab(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("MenuContent");return Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],null,[Object(j["createVNode"])("div",{class:"mask",onContextmenu:t[1]||(t[1]=Object(j["withModifiers"])((function(t){return e.removeContextmenu()}),["prevent"])),onMousedown:t[2]||(t[2]=function(t){return e.removeContextmenu()})},null,32),Object(j["createVNode"])("div",{class:"contextmenu",style:{left:e.style.left+"px",top:e.style.top+"px"},onContextmenu:t[3]||(t[3]=Object(j["withModifiers"])((function(){}),["prevent"]))},[Object(j["createVNode"])(r,{menus:e.menus,handleClickMenuItem:e.handleClickMenuItem},null,8,["menus","handleClickMenuItem"])],36)],64)}var Pb=Object(j["withScopeId"])("data-v-5490894e");Object(j["pushScopeId"])("data-v-5490894e");var Rb={class:"menu-content"},Fb={class:"text"},Hb={key:0,class:"sub-text"};Object(j["popScopeId"])();var zb=Pb((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("menu-content",!0);return Object(j["openBlock"])(),Object(j["createBlock"])("ul",Rb,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.menus,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:t.text||n},[t.hide?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createBlock"])("li",{key:0,class:["menu-item",{divider:t.divider,disable:t.disable}],onClick:Object(j["withModifiers"])((function(n){return e.handleClickMenuItem(t)}),["stop"])},[t.divider?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createBlock"])("div",{key:0,class:["menu-item-content",{"has-children":t.children,"has-handler":t.handler}]},[Object(j["createVNode"])("span",Fb,Object(j["toDisplayString"])(t.text),1),t.subText&&!t.children?(Object(j["openBlock"])(),Object(j["createBlock"])("span",Hb,Object(j["toDisplayString"])(t.subText),1)):Object(j["createCommentVNode"])("",!0),t.children&&t.children.length?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:1,class:"sub-menu",menus:t.children,handleClickMenuItem:e.handleClickMenuItem},null,8,["menus","handleClickMenuItem"])):Object(j["createCommentVNode"])("",!0)],2))],10,["onClick"]))],64)})),128))])})),Ub=Object(j["defineComponent"])({name:"menu-content",props:{menus:{type:Array,required:!0},handleClickMenuItem:{type:Function,required:!0}}});n("823f");Ub.render=zb,Ub.__scopeId="data-v-5490894e";var Gb=Ub,qb=Object(j["defineComponent"])({name:"contextmenu",components:{MenuContent:Gb},props:{axis:{type:Object,required:!0},el:{type:Object,required:!0},menus:{type:Array,required:!0},removeContextmenu:{type:Function,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){var t=170,n=30,o=11,c=5,a=e.axis,r=a.x,l=a.y,i=e.menus.filter((function(e){return!(e.divider||e.hide)})).length,u=e.menus.filter((function(e){return e.divider})).length,d=t,s=i*n+u*o+2*c,f=document.body.clientWidth,p=document.body.clientHeight;return{left:f<=r+d?r-d:r,top:p<=l+s?l-s:l}})),n=function(t){t.disable||t.children&&!t.handler||(t.handler&&t.handler(e.el),e.removeContextmenu())};return{style:t,handleClickMenuItem:n}}});n("b8378");qb.render=Ab;var Xb=qb,Wb="CTX_CONTEXTMENU_HANDLER",Yb=function(e,t,n){t.stopPropagation(),t.preventDefault();var o=n.value(e);if(o){var c=null,a=function t(){c&&(document.body.removeChild(c),c=null),e.classList.remove("contextmenu-active"),document.body.removeEventListener("scroll",t),window.removeEventListener("resize",t)},r={axis:{x:t.x,y:t.y},el:e,menus:o,removeContextmenu:a};c=document.createElement("div");var l=Object(j["createVNode"])(Xb,r,null);Object(j["render"])(l,c),document.body.appendChild(c),e.classList.add("contextmenu-active"),document.body.addEventListener("scroll",a),window.addEventListener("resize",a)}},Zb={mounted:function(e,t){e[Wb]=function(n){return Yb(e,n,t)},e.addEventListener("contextmenu",e[Wb])},unmounted:function(e){e&&e[Wb]&&(e.removeEventListener("contextmenu",e[Wb]),delete e[Wb])}},Jb=Zb,Kb="CTX_CLICK_OUTSIDE_HANDLER",Qb=function(e,t,n){var o=n.value,c=t.composedPath(),a=c?c.indexOf(e)<0:!e.contains(t.target);a&&o(t)},$b={mounted:function(e,t){e[Kb]=function(n){return Qb(e,n,t)},setTimeout((function(){document.addEventListener("click",e[Kb])}),0)},unmounted:function(e){e[Kb]&&(document.removeEventListener("click",e[Kb]),delete e[Kb])}},em=$b,tm=n("84e7"),nm=n("1e27"),om=n("8845"),cm=n("a3ef"),am=n("8331"),rm=n("4040"),lm=n("f745"),im=n("2e2d"),um=n("6010"),dm=n("1fcb"),sm=n("500e"),fm=n("0996"),pm=n("1646"),bm=n("fbe7"),mm=n("b8af"),vm=n("bf2c"),Om=n("fd52"),hm=n("f259"),jm=n("1b1c"),gm=n("bde2"),ym=n("23fa"),km=n("5a28"),Em=n("c53e"),Im=n("8377"),Sm=n("246f"),Cm=n("33a2"),Nm=n("fdbcb"),xm=n("ccc7"),Tm=n("e3b9"),Lm=n("3a3e"),wm=n("eac59"),Vm=n("694b"),_m=n("e9ec"),Bm=n("ea01"),Dm=n("74f3"),Mm=n("4bad"),Am=n("e7f4"),Pm=n("eb50"),Rm=n("0be2"),Fm=n("a90c"),Hm=n("c90a"),zm=n("d41d6"),Um=n("2c06"),Gm=n("a5dc"),qm=n("8678"),Xm=n("d7fb"),Wm=n("ce42"),Ym=n("7abc"),Zm=n("5b20"),Jm=n("69de"),Km=n("d0c6"),Qm=n("dcc2"),$m=n("f1d2"),ev=n("d16b"),tv=n("a5f1"),nv=n("df0d"),ov=n("70f2"),cv=n("b7c8"),av=n("f99d"),rv=n("40bb"),lv=n("ae33"),iv=n("8c1a"),uv=n("b7b3"),dv=n("96be"),sv=n("5a69"),fv=n("f9e5"),pv=n("bbce"),bv=n("77ad"),mv=n("46cd"),vv=n("3ee3"),Ov=n("dde4"),hv=n("cead"),jv=n("fa00"),gv=n("e970"),yv=n("f3c2"),kv=n("7312"),Ev=n("5294b"),Iv=n("9fbc"),Sv={install:function(e){e.component("IconFontSize",Iv["a"]),e.component("IconPicture",Ev["a"]),e.component("IconGraphicDesign",kv["a"]),e.component("IconConnection",yv["a"]),e.component("IconChartProportion",gv["a"]),e.component("IconInsertTable",jv["a"]),e.component("IconLock",hv["a"]),e.component("IconUnlock",Ov["a"]),e.component("IconFullScreen",vv["a"]),e.component("IconBack",mv["a"]),e.component("IconNext",bv["a"]),e.component("IconAlignTop",pv["a"]),e.component("IconAlignLeft",fv["a"]),e.component("IconAlignRight",sv["a"]),e.component("IconAlignBottom",dv["a"]),e.component("IconAlignVertically",uv["a"]),e.component("IconAlignHorizontally",iv["a"]),e.component("IconBringToFront",lv["a"]),e.component("IconSentToBack",rv["a"]),e.component("IconBringToFrontOne",av["a"]),e.component("IconSendToBack",cv["a"]),e.component("IconGroup",ov["a"]),e.component("IconUngroup",nv["a"]),e.component("IconFill",tv["a"]),e.component("IconBackgroundColor",ev["a"]),e.component("IconPlatte",$m["a"]),e.component("IconTailoring",Qm["a"]),e.component("IconColorFilter",Km["a"]),e.component("IconFlipVertically",Jm["a"]),e.component("IconFlipHorizontally",Zm["a"]),e.component("IconText",Ym["a"]),e.component("IconAddText",Wm["a"]),e.component("IconAlignTextLeft",Xm["a"]),e.component("IconAlignTextRight",qm["a"]),e.component("IconAlignTextCenter",Gm["a"]),e.component("IconRowHeight",Um["a"]),e.component("IconFullwidth",zm["a"]),e.component("IconCode",Hm["a"]),e.component("IconTextBold",Fm["a"]),e.component("IconTextItalic",Rm["a"]),e.component("IconTextUnderline",Pm["a"]),e.component("IconStrikethrough",Am["a"]),e.component("IconQuote",Mm["a"]),e.component("IconList",Dm["a"]),e.component("IconOrderedList",Bm["a"]),e.component("IconUpOne",_m["a"]),e.component("IconDownOne",Vm["a"]),e.component("IconFormat",wm["a"]),e.component("IconDown",Lm["a"]),e.component("IconLeftTwo",Tm["a"]),e.component("IconRightTwo",xm["a"]),e.component("IconPlus",Nm["a"]),e.component("IconMinus",Cm["a"]),e.component("IconClose",Sm["a"]),e.component("IconCloseSmall",Im["a"]),e.component("IconChartHistogram",Em["a"]),e.component("IconChartHistogramOne",km["a"]),e.component("IconChartLine",ym["a"]),e.component("IconChartLineArea",gm["a"]),e.component("IconChartScatter",jm["a"]),e.component("IconChartPie",hm["a"]),e.component("IconChartRing",Om["a"]),e.component("IconPlayOne",vm["a"]),e.component("IconPpt",mm["a"]),e.component("IconHelpcenter",bm["a"]),e.component("IconGithub",pm["a"]),e.component("IconWrite",fm["a"]),e.component("IconErase",sm["a"]),e.component("IconEffects",dm["a"]),e.component("IconRotate",um["a"]),e.component("IconEdit",im["a"]),e.component("IconUndo",lm["a"]),e.component("IconTransform",rm["a"]),e.component("IconClick",am["a"]),e.component("IconTheme",cm["a"]),e.component("IconArrowCircleLeft",om["a"]),e.component("IconLogout",nm["a"]),e.component("IconClear",tm["a"])}},Cv=Object(j["withScopeId"])("data-v-bf80565c"),Nv=Cv((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"file-input",onClick:t[2]||(t[2]=function(t){return e.handleClick()})},[Object(j["renderSlot"])(e.$slots,"default",{},void 0,!0),Object(j["createVNode"])("input",{class:"input",type:"file",name:"upload",ref:"inputRef",accept:e.accept,onChange:t[1]||(t[1]=function(t){return e.handleChange(t)})},null,40,["accept"])])})),xv=Object(j["defineComponent"])({name:"file-input",props:{accept:{type:String,default:"image/*"}},setup:function(e,t){var n=t.emit,o=Object(j["ref"])(),c=function(){o.value&&(o.value.value="",o.value.click())},a=function(e){var t=e.target.files;t&&n("change",t)};return{handleClick:c,handleChange:a,inputRef:o}}});n("e3f5");xv.render=Nv,xv.__scopeId="data-v-bf80565c";var Tv=xv,Lv={xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",version:"1.1"};function wv(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("svg",Lv,[Object(j["renderSlot"])(e.$slots,"default")])}var Vv={name:"svg-wrapper"};Vv.render=wv;var _v=Vv,Bv=Object(j["withScopeId"])("data-v-7cae2b90"),Dv=Bv((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("button",{class:["checkbox-button",{checked:n.checked}]},[Object(j["renderSlot"])(e.$slots,"default",{},void 0,!0)],2)})),Mv={name:"checkbox-button",props:{checked:{type:Boolean,default:!1}}};n("782e");Mv.render=Dv,Mv.__scopeId="data-v-7cae2b90";var Av=Mv,Pv=Object(j["withScopeId"])("data-v-7dafd0a9");Object(j["pushScopeId"])("data-v-7dafd0a9");var Rv={class:"checkbox-button-group"};Object(j["popScopeId"])();var Fv=Pv((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",Rv,[Object(j["renderSlot"])(e.$slots,"default",{},void 0,!0)])})),Hv={name:"checkbox-button-group"};n("69d58");Hv.render=Fv,Hv.__scopeId="data-v-7dafd0a9";var zv=Hv,Uv=Object(j["withScopeId"])("data-v-20575236");Object(j["pushScopeId"])("data-v-20575236");var Gv={class:"color-picker"},qv={class:"picker-saturation-wrap"},Xv={class:"picker-controls"},Wv={class:"picker-color-wrap"},Yv={class:"picker-sliders"},Zv={class:"picker-hue-wrap"},Jv={class:"picker-alpha-wrap"},Kv={class:"picker-field"},Qv={class:"picker-presets"},$v={class:"picker-gradient-presets"},eO={class:"picker-presets"},tO={key:0,class:"recent-colors-title"},nO={class:"recent-colors"};Object(j["popScopeId"])();var oO=Uv((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("Saturation"),l=Object(j["resolveComponent"])("Checkboard"),i=Object(j["resolveComponent"])("Hue"),u=Object(j["resolveComponent"])("Alpha"),d=Object(j["resolveComponent"])("EditableInput");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Gv,[Object(j["createVNode"])("div",qv,[Object(j["createVNode"])(r,{value:e.color,hue:e.hue,onColorChange:t[1]||(t[1]=function(t){return e.changeColor(t)})},null,8,["value","hue"])]),Object(j["createVNode"])("div",Xv,[Object(j["createVNode"])("div",Wv,[Object(j["createVNode"])("div",{class:"picker-current-color",style:{background:e.currentColor}},null,4),Object(j["createVNode"])(l)]),Object(j["createVNode"])("div",Yv,[Object(j["createVNode"])("div",Zv,[Object(j["createVNode"])(i,{value:e.color,hue:e.hue,onColorChange:t[2]||(t[2]=function(t){return e.changeColor(t)})},null,8,["value","hue"])]),Object(j["createVNode"])("div",Jv,[Object(j["createVNode"])(u,{value:e.color,onColorChange:t[3]||(t[3]=function(t){return e.changeColor(t)})},null,8,["value"])])])]),Object(j["createVNode"])("div",Kv,[Object(j["createVNode"])(d,{value:e.color,onColorChange:t[4]||(t[4]=function(t){return e.changeColor(t)})},null,8,["value"])]),Object(j["createVNode"])("div",Qv,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.themeColors,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"picker-presets-color",key:t,style:{background:t},onClick:function(n){return e.selectPresetColor(t)}},null,12,["onClick"])})),128))]),Object(j["createVNode"])("div",$v,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.presetColors,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"picker-gradient-col",key:n},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(t,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"picker-gradient-color",key:t,style:{background:t},onClick:function(n){return e.selectPresetColor(t)}},null,12,["onClick"])})),128))])})),128))]),Object(j["createVNode"])("div",eO,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.standardColors,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{key:t,class:"picker-presets-color",style:{background:t},onClick:function(n){return e.selectPresetColor(t)}},null,12,["onClick"])})),128))]),e.recentColors.length?(Object(j["openBlock"])(),Object(j["createBlock"])("div",tO,"最近使用:")):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])("div",nO,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.recentColors,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{key:t,class:"picker-presets-color",style:{background:t},onClick:function(n){return e.selectPresetColor(t)}},null,12,["onClick"])})),128))])])})),cO=Object(j["withScopeId"])("data-v-ecf7d10e");Object(j["pushScopeId"])("data-v-ecf7d10e");var aO={class:"alpha"},rO={class:"alpha-checkboard-wrap"},lO=Object(j["createVNode"])("div",{class:"alpha-picker"},null,-1);Object(j["popScopeId"])();var iO=cO((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("Checkboard");return Object(j["openBlock"])(),Object(j["createBlock"])("div",aO,[Object(j["createVNode"])("div",rO,[Object(j["createVNode"])(r)]),Object(j["createVNode"])("div",{class:"alpha-gradient",style:{background:e.gradientColor}},null,4),Object(j["createVNode"])("div",{class:"alpha-container",ref:"alphaRef",onMousedown:t[1]||(t[1]=function(t){return e.handleMouseDown(t)})},[Object(j["createVNode"])("div",{class:"alpha-pointer",style:{left:100*e.color.a+"%"}},[lO],4)],544)])})),uO=Object(j["withScopeId"])("data-v-e9a0ac98"),dO=uO((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"checkerboard",style:e.bgStyle},null,4)})),sO={},fO=function(e,t,n){var o=document.createElement("canvas");o.width=o.height=2*n;var c=o.getContext("2d");return c?(c.fillStyle=e,c.fillRect(0,0,o.width,o.height),c.fillStyle=t,c.fillRect(0,0,n,n),c.translate(n,n),c.fillRect(0,0,n,n),o.toDataURL()):null},pO=function(e,t,n){var o=e+","+t+","+n;if(sO[o])return sO[o];var c=fO(e,t,n);return sO[o]=c,c},bO=Object(j["defineComponent"])({name:"checkboard",props:{size:{type:Number,default:8},white:{type:String,default:"#fff"},grey:{type:String,default:"#e6e6e6"}},setup:function(e){var t=Object(j["computed"])((function(){var t=pO(e.white,e.grey,e.size);return{backgroundImage:"url(".concat(t,")")}}));return{bgStyle:t}}});n("62d8");bO.render=dO,bO.__scopeId="data-v-e9a0ac98";var mO=bO,vO=Object(j["defineComponent"])({name:"alpha",components:{Checkboard:mO},props:{value:{type:Object,required:!0}},setup:function(e,t){var n=t.emit,o=Object(j["computed"])((function(){return e.value})),c=Object(j["computed"])((function(){var e=[o.value.r,o.value.g,o.value.b].join(",");return"linear-gradient(to right, rgba(".concat(e,", 0) 0%, rgba(").concat(e,", 1) 100%)")})),a=Object(j["ref"])(),r=function(e){if(e.preventDefault(),a.value){var t,c=a.value.clientWidth,r=a.value.getBoundingClientRect().left+window.pageXOffset,l=e.pageX-r;t=l<0?0:l>c?1:Math.round(100*l/c)/100,o.value.a!==t&&n("colorChange",{r:o.value.r,g:o.value.g,b:o.value.b,a:t})}},l=function e(){window.removeEventListener("mousemove",r),window.removeEventListener("mouseup",e)},i=function(e){r(e),window.addEventListener("mousemove",r),window.addEventListener("mouseup",l)};return Object(j["onUnmounted"])(l),{alphaRef:a,gradientColor:c,handleMouseDown:i,color:o}}});n("5c5e");vO.render=iO,vO.__scopeId="data-v-ecf7d10e";var OO=vO,hO=Object(j["withScopeId"])("data-v-7b983451");Object(j["pushScopeId"])("data-v-7b983451");var jO={class:"hue"},gO=Object(j["createVNode"])("div",{class:"hue-picker"},null,-1);Object(j["popScopeId"])();var yO=hO((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",jO,[Object(j["createVNode"])("div",{class:"hue-container",ref:"hueRef",onMousedown:t[1]||(t[1]=function(t){return e.handleMouseDown(t)})},[Object(j["createVNode"])("div",{class:"hue-pointer",style:{left:e.pointerLeft}},[gO],4)],544)])})),kO=Object(j["defineComponent"])({name:"hue",props:{value:{type:Object,required:!0},hue:{type:Number,required:!0}},setup:function(e,t){var n=t.emit,o=Object(j["ref"])(0),c=Object(j["ref"])(""),a=Object(j["computed"])((function(){var t=bo()(e.value).toHsl();return 0===t.s&&(t.h=e.hue),t})),r=Object(j["computed"])((function(){return 0===a.value.h&&"right"===c.value?"100%":100*a.value.h/360+"%"}));Object(j["watch"])((function(){return e.value}),(function(){var t=bo()(e.value).toHsl(),n=0===t.s?e.hue:t.h;0!==n&&n-o.value>0&&(c.value="right"),0!==n&&n-o.value<0&&(c.value="left"),o.value=n}));var l=Object(j["ref"])(),i=function(e){if(e.preventDefault(),l.value){var t,o,c=l.value.clientWidth,r=l.value.getBoundingClientRect().left+window.pageXOffset,i=e.pageX-r;i<0?t=0:i>c?t=360:(o=100*i/c,t=360*o/100),a.value.h!==t&&n("colorChange",{h:t,l:a.value.l,s:a.value.s,a:a.value.a})}},u=function e(){window.removeEventListener("mousemove",i),window.removeEventListener("mouseup",e)},d=function(e){i(e),window.addEventListener("mousemove",i),window.addEventListener("mouseup",u)};return Object(j["onUnmounted"])(u),{hueRef:l,handleMouseDown:d,pointerLeft:r}}});n("a025");kO.render=yO,kO.__scopeId="data-v-7b983451";var EO=kO,IO=Object(j["withScopeId"])("data-v-5310dbb4");Object(j["pushScopeId"])("data-v-5310dbb4");var SO=Object(j["createVNode"])("div",{class:"saturation-white"},null,-1),CO=Object(j["createVNode"])("div",{class:"saturation-black"},null,-1),NO=Object(j["createVNode"])("div",{class:"saturation-circle"},null,-1);Object(j["popScopeId"])();var xO=IO((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"saturation",ref:"saturationRef",style:{background:e.bgColor},onMousedown:t[1]||(t[1]=function(t){return e.handleMouseDown(t)})},[SO,CO,Object(j["createVNode"])("div",{class:"saturation-pointer",style:{top:e.pointerTop,left:e.pointerLeft}},[NO],4)],36)})),TO=n("f678"),LO=n.n(TO),wO=Object(j["defineComponent"])({name:"saturation",props:{value:{type:Object,required:!0},hue:{type:Number,required:!0}},setup:function(e,t){var n=t.emit,o=Object(j["computed"])((function(){var t=bo()(e.value).toHsv();return 0===t.s&&(t.h=e.hue),t})),c=Object(j["computed"])((function(){return"hsl(".concat(o.value.h,", 100%, 50%)")})),a=Object(j["computed"])((function(){return-100*o.value.v+1+100+"%"})),r=Object(j["computed"])((function(){return 100*o.value.s+"%"})),l=Ce()((function(e){n("colorChange",e)}),20,{leading:!0,trailing:!1}),i=Object(j["ref"])(),u=function(e){if(e.preventDefault(),i.value){var t=i.value.clientWidth,n=i.value.clientHeight,c=i.value.getBoundingClientRect().left+window.pageXOffset,a=i.value.getBoundingClientRect().top+window.pageYOffset,r=LO()(e.pageX-c,0,t),u=LO()(e.pageY-a,0,n),d=r/t,s=LO()(-u/n+1,0,1);l({h:o.value.h,s:d,v:s,a:o.value.a})}},d=function e(){window.removeEventListener("mousemove",u),window.removeEventListener("mouseup",e)},s=function(e){u(e),window.addEventListener("mousemove",u),window.addEventListener("mouseup",d)};return Object(j["onUnmounted"])(d),{saturationRef:i,bgColor:c,handleMouseDown:s,pointerTop:a,pointerLeft:r}}});n("5070");wO.render=xO,wO.__scopeId="data-v-5310dbb4";var VO=wO,_O=Object(j["withScopeId"])("data-v-0311fdee");Object(j["pushScopeId"])("data-v-0311fdee");var BO={class:"editable-input"};Object(j["popScopeId"])();var DO=_O((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",BO,[Object(j["createVNode"])("input",{class:"input-content",value:e.val,onInput:t[1]||(t[1]=function(t){return e.handleInput(t)})},null,40,["value"])])})),MO=Object(j["defineComponent"])({name:"editable-input",props:{value:{type:Object,required:!0}},setup:function(e,t){var n=t.emit,o=Object(j["computed"])((function(){var t="";return t=e.value.a<1?bo()(e.value).toHex8String().toUpperCase():bo()(e.value).toHexString().toUpperCase(),t.replace("#","")})),c=function(e){var t=e.target.value;t.length>=6&&n("colorChange",bo()(t).toRgb())};return{val:o,handleInput:c}}});n("3706");MO.render=DO,MO.__scopeId="data-v-0311fdee";var AO=MO,PO="RECENT_COLORS",RO=[["#7f7f7f","#f2f2f2"],["#0d0d0d","#808080"],["#1c1a10","#ddd8c3"],["#0e243d","#c6d9f0"],["#233f5e","#dae5f0"],["#632623","#f2dbdb"],["#4d602c","#eaf1de"],["#3f3150","#e6e0ec"],["#1e5867","#d9eef3"],["#99490f","#fee9da"]],FO=function(e,t,n){for(var o=bo()(e).toRgb(),c=bo()(t).toRgb(),a=(c.r-o.r)/n,r=(c.g-o.g)/n,l=(c.b-o.b)/n,i=[],u=0;ut&&(c.value=c.value.slice(0,t))}}),300,{trailing:!0});Object(j["onMounted"])((function(){var e=localStorage.getItem(PO);e&&(c.value=JSON.parse(e))})),Object(j["watch"])(c,(function(){var e=JSON.stringify(c.value);localStorage.setItem(PO,e)}));var f=function(e){"h"in e?(o.value=e.h,a.value=bo()(e).toRgb()):a.value=e,s()};return{themeColors:r,standardColors:l,presetColors:i,color:a,hue:o,currentColor:u,changeColor:f,selectPresetColor:d,recentColors:c}}});n("90e5");zO.render=oO,zO.__scopeId="data-v-20575236";var UO=zO,GO=Object(j["createApp"])(Mb);GO.directive("contextmenu",Jb),GO.directive("click-outside",em),GO.use(Sv),GO.component("FileInput",Tv),GO.component("SvgWrapper",_v),GO.component("CheckboxButton",Av),GO.component("CheckboxButtonGroup",zv),GO.component("ColorPicker",UO),GO.component("InputNumber",h["a"]),GO.component("Divider",O["a"]),GO.component("Button",v["a"]),GO.component("ButtonGroup",v["a"].Group),GO.component("Tooltip",m["a"]),GO.component("Popover",b["a"]),GO.component("Slider",p["a"]),GO.component("Select",f["a"]),GO.component("SelectOption",f["a"].Option),GO.component("SelectOptGroup",f["a"].OptGroup),GO.component("Switch",s["a"]),GO.component("Radio",d["a"]),GO.component("RadioGroup",d["a"].Group),GO.component("RadioButton",d["a"].Button),GO.component("Input",u["a"]),GO.component("InputGroup",u["a"].Group),GO.component("Modal",i["a"]),GO.component("Dropdown",l["a"]),GO.component("Menu",r["a"]),GO.component("MenuItem",r["a"].Item),GO.component("Checkbox",a["a"]),GO.component("Drawer",c["a"]),GO.component("Spin",o["a"]),GO.use(W,X),GO.mount("#app")},d00a:function(e,t,n){},d14a:function(e,t,n){"use strict";n("169d")},d40f:function(e,t,n){},d5c6:function(e,t,n){},d948:function(e,t,n){},d9a3:function(e,t,n){"use strict";n("b9e7")},dad6:function(e,t,n){},de22:function(e,t,n){},de7c:function(e,t,n){"use strict";n("0e8e")},e325:function(e,t,n){},e3f5:function(e,t,n){"use strict";n("4ae8")},e49b:function(e,t,n){"use strict";n("296b")},e4d9:function(e,t,n){},e524:function(e,t,n){},e7e3:function(e,t,n){},e838:function(e,t,n){},e8c6:function(e,t,n){},ea33:function(e,t,n){"use strict";n("0ac6")},ebf3:function(e,t,n){},ee1f:function(e,t,n){},ef0f:function(e,t,n){"use strict";n("7374")},ef88:function(e,t,n){"use strict";n("757f")},f092:function(e,t,n){},f14f:function(e,t,n){"use strict";n("9fd0")},f22e:function(e,t,n){},f558:function(e,t,n){"use strict";n("ee1f")},f802:function(e,t,n){"use strict";n("fd22")},f91d:function(e,t,n){"use strict";n("7105")},fb1d:function(e,t,n){"use strict";n("86fb")},fd22:function(e,t,n){},fe1a:function(e,t,n){},fe34:function(e,t,n){"use strict";n("89cd")}});
-//# sourceMappingURL=app.5cfeacff.js.map
\ No newline at end of file
diff --git a/dist/js/app.5cfeacff.js.map b/dist/js/app.5cfeacff.js.map
deleted file mode 100644
index 7c50a929..00000000
--- a/dist/js/app.5cfeacff.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?4939","webpack:///./src/views/Editor/Canvas/index.vue?e4c5","webpack:///./src/views/components/element/ImageElement/BaseImageElement.vue?b011","webpack:///./src/views/Editor/Toolbar/common/ColorButton.vue?132a","webpack:///./src/views/components/element/ChartElement/ScreenChartElement.vue?c667","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue?e207","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue?aa3f","webpack:///./src/views/components/element/TableElement/StaticTable.vue?aa94","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue?5a86","webpack:///./src/views/Editor/index.vue?7f0f","webpack:///./src/views/Editor/Canvas/MouseSelection.vue?e987","webpack:///./src/views/components/element/TableElement/index.vue?b029","webpack:///./src/views/Editor/Thumbnails/index.vue?1d93","webpack:///./src/views/components/ThumbnailSlide/index.vue?7826","webpack:///./src/views/Editor/EditorHeader/index.vue?9ac4","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue?ba16","webpack:///./src/views/components/element/ShapeElement/index.vue?c5f8","webpack:///./src/views/components/element/ChartElement/Chart.vue?6670","webpack:///./src/views/components/element/ShapeElement/BaseShapeElement.vue?6038","webpack:///./src/components/ColorPicker/EditableInput.vue?5e9e","webpack:///./src/views/components/element/LineElement/BaseLineElement.vue?59f9","webpack:///./src/views/Editor/Remark/index.vue?3be5","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/components/ColorPicker/Saturation.vue?1873","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue?37ad","webpack:///./src/views/Editor/Canvas/Operate/ImageElementOperate.vue?7d2b","webpack:///./src/components/ColorPicker/Alpha.vue?d0ab","webpack:///./src/views/Screen/WritingBoardTool.vue?e205","webpack:///./src/components/ColorPicker/Checkboard.vue?e4e0","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue?9b25","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue?8a07","webpack:///./src/views/Editor/CanvasTool/LinePool.vue?1fca","webpack:///./src/views/Editor/Toolbar/MultiPositionPanel.vue?d328","webpack:///./src/components/CheckboxButtonGroup.vue?712b","webpack:///./src/views/components/element/ImageElement/ImageClipHandler.vue?a75a","webpack:///./src/views/Editor/EditorHeader/ExportDialog.vue?d6b2","webpack:///./src/components/WritingBoard.vue?2d4f","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue?e31f","webpack:///./src/views/Screen/ScreenSlide.vue?4650","webpack:///./src/views/Editor/Toolbar/common/ElementFlip.vue?fb08","webpack:///./src/components/CheckboxButton.vue?f04e","webpack:///./src/views/Editor/Toolbar/common/ElementOutline.vue?b185","webpack:///./src/components/Contextmenu/MenuContent.vue?b5c2","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue?ff58","webpack:///./src/views/Editor/Canvas/Operate/RotateHandler.vue?ed40","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue?a7f7","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue?fb9f","webpack:///./src/views/components/element/TableElement/CustomTextarea.vue?6165","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue?4db9","webpack:///./src/components/ColorPicker/index.vue?abd9","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue?dd6c","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue?aedb","webpack:///./src/views/Editor/Canvas/Operate/index.vue?0896","webpack:///./src/views/Screen/index.vue?531e","webpack:///./src/views/components/element/TableElement/EditableTable.vue?dc95","webpack:///./src/components/ColorPicker/Hue.vue?41f0","webpack:///./src/views/Editor/Toolbar/index.vue?d3c4","webpack:///./src/views/components/element/ChartElement/Chart.vue?4e2b","webpack:///./src/views/Editor/Canvas/Operate/ResizeHandler.vue?64a0","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue?d5e0","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue?1974","webpack:///./src/views/components/element/ChartElement/BaseChartElement.vue?9f74","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue?c9be","webpack:///./src/views/components/element/LineElement/index.vue?2cb3","webpack:///./src/components/Contextmenu/index.vue?e15a","webpack:///./src/views/components/element/TableElement/BaseTableElement.vue?81e7","webpack:///./src/views/components/element/TextElement/BaseTextElement.vue?c3ba","webpack:///./src/views/Editor/Toolbar/common/ElementShadow.vue?5fae","webpack:///./src/views/Editor/Canvas/GridLines.vue?de8b","webpack:///./src/App.vue","webpack:///./src/store/constants.ts","webpack:///./src/mocks/index.ts","webpack:///./src/store/state.ts","webpack:///./src/store/getters.ts","webpack:///./src/utils/database.ts","webpack:///./src/store/actions.ts","webpack:///./src/configs/font.ts","webpack:///./src/utils/fontFamily.ts","webpack:///./src/store/mutations.ts","webpack:///./src/store/index.ts","webpack:///./src/views/Editor/index.vue","webpack:///./src/types/edit.ts","webpack:///./src/configs/hotkey.ts","webpack:///./src/utils/common.ts","webpack:///./src/utils/clipboard.ts","webpack:///./src/utils/crypto.ts","webpack:///./src/hooks/useHistorySnapshot.ts","webpack:///./src/utils/image.ts","webpack:///./src/configs/canvas.ts","webpack:///./src/hooks/useCreateElement.ts","webpack:///./src/hooks/usePasteTextClipboardData.ts","webpack:///./src/hooks/useSlideHandler.ts","webpack:///./src/hooks/useLockElement.ts","webpack:///./src/hooks/useDeleteElement.ts","webpack:///./src/hooks/useCombineElement.ts","webpack:///./src/hooks/useCopyAndPasteElement.ts","webpack:///./src/hooks/useSelectAllElement.ts","webpack:///./src/hooks/useMoveElement.ts","webpack:///./src/hooks/useOrderElement.ts","webpack:///./src/utils/fullscreen.ts","webpack:///./src/hooks/useScreening.ts","webpack:///./src/hooks/useScaleCanvas.ts","webpack:///./src/hooks/useGlobalHotkey.ts","webpack:///./src/hooks/usePasteEvent.ts","webpack:///./src/views/Editor/EditorHeader/index.vue","webpack:///./src/views/Editor/EditorHeader/HotkeyDoc.vue","webpack:///./src/views/Editor/EditorHeader/HotkeyDoc.vue?05c6","webpack:///./src/views/Editor/EditorHeader/ExportDialog.vue","webpack:///./src/types/slides.ts","webpack:///./src/views/components/ThumbnailSlide/index.vue","webpack:///./src/hooks/useSlideBackgroundStyle.ts","webpack:///./src/views/components/ThumbnailSlide/ThumbnailElement.vue","webpack:///./src/configs/imageClip.ts","webpack:///./src/views/components/element/ImageElement/BaseImageElement.vue","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/ImageElement/ImageOutline/index.vue","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue","webpack:///./src/views/components/element/hooks/useElementOutline.ts","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue?ca8b","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue?97c1","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue?6dea","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue?6c20","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue?4522","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue?3bd9","webpack:///./src/views/components/element/ImageElement/ImageOutline/index.vue?1b24","webpack:///./src/views/components/element/ImageElement/ImageOutline/index.vue?c57b","webpack:///./src/views/components/element/ImageElement/BaseImageElement.vue?eb85","webpack:///./src/views/components/element/ImageElement/BaseImageElement.vue?7d64","webpack:///./src/views/components/element/TextElement/BaseTextElement.vue","webpack:///./src/views/components/element/ElementOutline.vue","webpack:///./src/views/components/element/ElementOutline.vue?88ba","webpack:///./src/views/components/element/ElementOutline.vue?9a18","webpack:///./src/views/components/element/TextElement/BaseTextElement.vue?3fe3","webpack:///./src/views/components/element/TextElement/BaseTextElement.vue?47a3","webpack:///./src/views/components/element/ShapeElement/BaseShapeElement.vue","webpack:///./src/views/components/element/ShapeElement/GradientDefs.vue","webpack:///./src/views/components/element/ShapeElement/GradientDefs.vue?4beb","webpack:///./src/views/components/element/ShapeElement/GradientDefs.vue?51b7","webpack:///./src/views/components/element/ShapeElement/BaseShapeElement.vue?7ec6","webpack:///./src/views/components/element/ShapeElement/BaseShapeElement.vue?bac4","webpack:///./src/views/components/element/LineElement/BaseLineElement.vue","webpack:///./src/views/components/element/LineElement/LinePointMarker.vue","webpack:///./src/views/components/element/LineElement/LinePointMarker.vue?1066","webpack:///./src/views/components/element/LineElement/LinePointMarker.vue?a5bd","webpack:///./src/views/components/element/LineElement/BaseLineElement.vue?2717","webpack:///./src/views/components/element/LineElement/BaseLineElement.vue?28e4","webpack:///./src/views/components/element/ChartElement/BaseChartElement.vue","webpack:///./src/views/components/element/ChartElement/BaseChartElement.vue?b209","webpack:///./src/views/components/element/ChartElement/BaseChartElement.vue?c8b6","webpack:///./src/views/components/element/TableElement/BaseTableElement.vue","webpack:///./src/views/components/element/TableElement/StaticTable.vue","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/StaticTable.vue?7e20","webpack:///./src/views/components/element/TableElement/StaticTable.vue?8cdd","webpack:///./src/views/components/element/TableElement/BaseTableElement.vue?845b","webpack:///./src/views/components/element/TableElement/BaseTableElement.vue?4472","webpack:///./src/views/components/ThumbnailSlide/ThumbnailElement.vue?075a","webpack:///./src/views/components/ThumbnailSlide/ThumbnailElement.vue?1c60","webpack:///./src/views/components/ThumbnailSlide/index.vue?6683","webpack:///./src/views/components/ThumbnailSlide/index.vue?0834","webpack:///./src/views/Editor/EditorHeader/ExportDialog.vue?b75b","webpack:///./src/views/Editor/EditorHeader/ExportDialog.vue?1d7e","webpack:///./src/views/Editor/EditorHeader/index.vue?118b","webpack:///./src/views/Editor/EditorHeader/index.vue?dc51","webpack:///./src/views/Editor/Canvas/index.vue","webpack:///./src/utils/emitter.ts","webpack:///./src/utils/selection.ts","webpack:///./src/views/Editor/Canvas/hooks/useViewportSize.ts","webpack:///./src/utils/element.ts","webpack:///./src/views/Editor/Canvas/hooks/useMouseSelection.ts","webpack:///./src/views/Editor/Canvas/hooks/useDropImageOrText.ts","webpack:///./src/views/Editor/Canvas/hooks/useRotateElement.ts","webpack:///./src/configs/element.ts","webpack:///./src/views/Editor/Canvas/hooks/useScaleElement.ts","webpack:///./src/views/Editor/Canvas/hooks/useSelectElement.ts","webpack:///./src/views/Editor/Canvas/hooks/useDragElement.ts","webpack:///./src/views/Editor/Canvas/hooks/useDragLineElement.ts","webpack:///./src/views/Editor/Canvas/hooks/useInsertFromCreateSelection.ts","webpack:///./src/views/Editor/Canvas/EditableElement.vue","webpack:///./src/hooks/useAlignElementToCanvas.ts","webpack:///./src/views/components/element/ImageElement/index.vue","webpack:///./src/views/components/element/ImageElement/ImageClipHandler.vue","webpack:///./src/views/components/element/ImageElement/ImageClipHandler.vue?0fb0","webpack:///./src/views/components/element/ImageElement/ImageClipHandler.vue?5956","webpack:///./src/views/components/element/ImageElement/index.vue?4787","webpack:///./src/views/components/element/ImageElement/index.vue?efba","webpack:///./src/views/components/element/TextElement/index.vue","webpack:///./src/prosemirror/plugins/keymap.ts","webpack:///./src/prosemirror/plugins/inputrules.ts","webpack:///./src/prosemirror/plugins/index.ts","webpack:///./src/prosemirror/schema/nodes.ts","webpack:///./src/prosemirror/schema/marks.ts","webpack:///./src/prosemirror/schema/index.ts","webpack:///./src/prosemirror/index.ts","webpack:///./src/prosemirror/utils.ts","webpack:///./src/prosemirror/commands/setTextAlign.ts","webpack:///./src/prosemirror/commands/toggleList.ts","webpack:///./src/views/components/element/TextElement/index.vue?2089","webpack:///./src/views/components/element/TextElement/index.vue?567a","webpack:///./src/views/components/element/ShapeElement/index.vue","webpack:///./src/views/components/element/ShapeElement/index.vue?df96","webpack:///./src/views/components/element/ShapeElement/index.vue?c339","webpack:///./src/views/components/element/LineElement/index.vue","webpack:///./src/views/components/element/LineElement/index.vue?7fb5","webpack:///./src/views/components/element/LineElement/index.vue?379b","webpack:///./src/views/components/element/ChartElement/index.vue","webpack:///./src/views/components/element/ChartElement/Chart.vue","webpack:///./src/views/components/element/ChartElement/Chart.vue?38ae","webpack:///./src/views/components/element/ChartElement/Chart.vue?3c24","webpack:///./src/views/components/element/ChartElement/index.vue?c1de","webpack:///./src/views/components/element/ChartElement/index.vue?377c","webpack:///./src/views/components/element/TableElement/index.vue","webpack:///./src/views/components/element/TableElement/EditableTable.vue","webpack:///./src/views/components/element/TableElement/CustomTextarea.vue","webpack:///./src/views/components/element/TableElement/CustomTextarea.vue?cc91","webpack:///./src/views/components/element/TableElement/CustomTextarea.vue?7a3a","webpack:///./src/views/components/element/TableElement/EditableTable.vue?1d79","webpack:///./src/views/components/element/TableElement/EditableTable.vue?ac51","webpack:///./src/views/components/element/TableElement/index.vue?5f9c","webpack:///./src/views/components/element/TableElement/index.vue?a679","webpack:///./src/views/Editor/Canvas/EditableElement.vue?766d","webpack:///./src/views/Editor/Canvas/EditableElement.vue?9dac","webpack:///./src/views/Editor/Canvas/MouseSelection.vue","webpack:///./src/views/Editor/Canvas/MouseSelection.vue?fa6b","webpack:///./src/views/Editor/Canvas/MouseSelection.vue?2538","webpack:///./src/views/Editor/Canvas/ViewportBackground.vue","webpack:///./src/views/Editor/Canvas/GridLines.vue","webpack:///./src/views/Editor/Canvas/GridLines.vue?2fa3","webpack:///./src/views/Editor/Canvas/GridLines.vue?80ef","webpack:///./src/views/Editor/Canvas/ViewportBackground.vue?d1af","webpack:///./src/views/Editor/Canvas/ViewportBackground.vue?231f","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue?7bcd","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue?3745","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue?ab01","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue?a6b0","webpack:///./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue","webpack:///./src/views/Editor/Canvas/hooks/useCommonOperate.ts","webpack:///./src/views/Editor/Canvas/Operate/ResizeHandler.vue","webpack:///./src/views/Editor/Canvas/Operate/ResizeHandler.vue?737d","webpack:///./src/views/Editor/Canvas/Operate/ResizeHandler.vue?b07f","webpack:///./src/views/Editor/Canvas/Operate/BorderLine.vue","webpack:///./src/views/Editor/Canvas/Operate/BorderLine.vue?b475","webpack:///./src/views/Editor/Canvas/Operate/BorderLine.vue?7f5e","webpack:///./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue?ede3","webpack:///./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue?e80f","webpack:///./src/views/Editor/Canvas/Operate/index.vue","webpack:///./src/views/Editor/Canvas/Operate/ImageElementOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/RotateHandler.vue","webpack:///./src/views/Editor/Canvas/Operate/RotateHandler.vue?d6c5","webpack:///./src/views/Editor/Canvas/Operate/RotateHandler.vue?0e19","webpack:///./src/views/Editor/Canvas/Operate/ImageElementOperate.vue?18d1","webpack:///./src/views/Editor/Canvas/Operate/ImageElementOperate.vue?cd4e","webpack:///./src/views/Editor/Canvas/Operate/TextElementOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/TextElementOperate.vue?c273","webpack:///./src/views/Editor/Canvas/Operate/TextElementOperate.vue?61d2","webpack:///./src/views/Editor/Canvas/Operate/ShapeElementOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/ShapeElementOperate.vue?88c8","webpack:///./src/views/Editor/Canvas/Operate/ShapeElementOperate.vue?6b15","webpack:///./src/views/Editor/Canvas/Operate/LineElementOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/LineElementOperate.vue?b447","webpack:///./src/views/Editor/Canvas/Operate/LineElementOperate.vue?2edf","webpack:///./src/views/Editor/Canvas/Operate/ChartElementOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/ChartElementOperate.vue?c7ed","webpack:///./src/views/Editor/Canvas/Operate/ChartElementOperate.vue?79fe","webpack:///./src/views/Editor/Canvas/Operate/TableElementOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/TableElementOperate.vue?88e9","webpack:///./src/views/Editor/Canvas/Operate/TableElementOperate.vue?a440","webpack:///./src/views/Editor/Canvas/Operate/index.vue?67ac","webpack:///./src/views/Editor/Canvas/Operate/index.vue?7188","webpack:///./src/views/Editor/Canvas/index.vue?dbb4","webpack:///./src/views/Editor/Canvas/index.vue?939f","webpack:///./src/views/Editor/CanvasTool/index.vue","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue","webpack:///./src/configs/shapes.ts","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue?6966","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue?722f","webpack:///./src/views/Editor/CanvasTool/LinePool.vue","webpack:///./src/configs/lines.ts","webpack:///./src/views/Editor/CanvasTool/LinePool.vue?f854","webpack:///./src/views/Editor/CanvasTool/LinePool.vue?4b76","webpack:///./src/views/Editor/CanvasTool/ChartPool.vue","webpack:///./src/views/Editor/CanvasTool/ChartPool.vue?d470","webpack:///./src/views/Editor/CanvasTool/ChartPool.vue?ffa5","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue?422c","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue?9616","webpack:///./src/views/Editor/CanvasTool/index.vue?3543","webpack:///./src/views/Editor/CanvasTool/index.vue?74a2","webpack:///./src/views/Editor/Thumbnails/index.vue","webpack:///./src/views/Editor/Thumbnails/index.vue?4607","webpack:///./src/views/Editor/Thumbnails/index.vue?de87","webpack:///./src/views/Editor/Toolbar/index.vue","webpack:///./src/types/toolbar.ts","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/index.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue?fd1f","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue?9d8f","webpack:///./src/views/Editor/Toolbar/common/ElementOutline.vue","webpack:///./src/views/Editor/Toolbar/common/ColorButton.vue","webpack:///./src/views/Editor/Toolbar/common/ColorButton.vue?f2fb","webpack:///./src/views/Editor/Toolbar/common/ColorButton.vue?e1b1","webpack:///./src/views/Editor/Toolbar/common/ElementOutline.vue?a83b","webpack:///./src/views/Editor/Toolbar/common/ElementOutline.vue?a882","webpack:///./src/views/Editor/Toolbar/common/ElementShadow.vue","webpack:///./src/views/Editor/Toolbar/common/ElementShadow.vue?81a4","webpack:///./src/views/Editor/Toolbar/common/ElementShadow.vue?74bc","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue?abf3","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue?29fb","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue","webpack:///./src/views/Editor/Toolbar/common/ElementFlip.vue","webpack:///./src/views/Editor/Toolbar/common/ElementFlip.vue?64aa","webpack:///./src/views/Editor/Toolbar/common/ElementFlip.vue?ad37","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue?7a5a","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue?ec01","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue?776c","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue?21f6","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue?3707","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue?6cd6","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue?42d7","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue?5921","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue?d8f4","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue?4c38","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue?e4c2","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue?dd2b","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/index.vue?42f2","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/index.vue?0f9b","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue?d056","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue?d4ea","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue","webpack:///./src/configs/animation.ts","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue?8891","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue?659a","webpack:///./src/views/Editor/Toolbar/SlideStylePanel.vue","webpack:///./src/configs/theme.ts","webpack:///./src/views/Editor/Toolbar/SlideStylePanel.vue?130f","webpack:///./src/views/Editor/Toolbar/SlideStylePanel.vue?64c6","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue?ccfb","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue?e0c3","webpack:///./src/views/Editor/Toolbar/MultiPositionPanel.vue","webpack:///./src/hooks/useAlignActiveElement.ts","webpack:///./src/hooks/useUniformDisplayElement.ts","webpack:///./src/views/Editor/Toolbar/MultiPositionPanel.vue?6614","webpack:///./src/views/Editor/Toolbar/MultiPositionPanel.vue?6189","webpack:///./src/views/Editor/Toolbar/index.vue?ce4b","webpack:///./src/views/Editor/Toolbar/index.vue?228e","webpack:///./src/views/Editor/Remark/index.vue","webpack:///./src/views/Editor/Remark/index.vue?4799","webpack:///./src/views/Editor/Remark/index.vue?4dd8","webpack:///./src/views/Editor/index.vue?4a1b","webpack:///./src/views/Editor/index.vue?c664","webpack:///./src/views/Screen/index.vue","webpack:///./src/views/Screen/ScreenSlide.vue","webpack:///./src/views/Screen/ScreenElement.vue","webpack:///./src/views/components/element/ChartElement/ScreenChartElement.vue","webpack:///./src/views/components/element/ChartElement/ScreenChartElement.vue?bc46","webpack:///./src/views/components/element/ChartElement/ScreenChartElement.vue?c9e1","webpack:///./src/views/Screen/ScreenElement.vue?1814","webpack:///./src/views/Screen/ScreenElement.vue?6d18","webpack:///./src/views/Screen/ScreenSlide.vue?af69","webpack:///./src/views/Screen/ScreenSlide.vue?29d1","webpack:///./src/views/Screen/SlideThumbnails.vue","webpack:///./src/views/Screen/SlideThumbnails.vue?657f","webpack:///./src/views/Screen/SlideThumbnails.vue?0255","webpack:///./src/views/Screen/WritingBoardTool.vue","webpack:///./src/components/WritingBoard.vue","webpack:///./src/components/WritingBoard.vue?fa65","webpack:///./src/components/WritingBoard.vue?21de","webpack:///./src/views/Screen/WritingBoardTool.vue?7c7d","webpack:///./src/views/Screen/WritingBoardTool.vue?d91a","webpack:///./src/views/Screen/index.vue?eb0f","webpack:///./src/views/Screen/index.vue?2234","webpack:///./src/App.vue?3acc","webpack:///./src/App.vue?dfb6","webpack:///./src/components/Contextmenu/index.vue","webpack:///./src/components/Contextmenu/MenuContent.vue","webpack:///./src/components/Contextmenu/MenuContent.vue?160d","webpack:///./src/components/Contextmenu/MenuContent.vue?c165","webpack:///./src/components/Contextmenu/index.vue?ac5d","webpack:///./src/components/Contextmenu/index.vue?b9ec","webpack:///./src/plugins/contextmenu.ts","webpack:///./src/plugins/clickOutside.ts","webpack:///./src/plugins/iconPark.ts","webpack:///./src/components/FileInput.vue","webpack:///./src/components/FileInput.vue?5ff6","webpack:///./src/components/FileInput.vue?2b50","webpack:///./src/components/SvgWrapper.vue","webpack:///./src/components/SvgWrapper.vue?79c0","webpack:///./src/components/SvgWrapper.vue?81b2","webpack:///./src/components/CheckboxButton.vue","webpack:///./src/components/CheckboxButton.vue?94a0","webpack:///./src/components/CheckboxButton.vue?4e7d","webpack:///./src/components/CheckboxButtonGroup.vue","webpack:///./src/components/CheckboxButtonGroup.vue?370e","webpack:///./src/components/CheckboxButtonGroup.vue?e0bc","webpack:///./src/components/ColorPicker/index.vue","webpack:///./src/components/ColorPicker/Alpha.vue","webpack:///./src/components/ColorPicker/Checkboard.vue","webpack:///./src/components/ColorPicker/Checkboard.vue?7d77","webpack:///./src/components/ColorPicker/Checkboard.vue?557a","webpack:///./src/components/ColorPicker/Alpha.vue?ed75","webpack:///./src/components/ColorPicker/Alpha.vue?a73b","webpack:///./src/components/ColorPicker/Hue.vue","webpack:///./src/components/ColorPicker/Hue.vue?8ac8","webpack:///./src/components/ColorPicker/Hue.vue?7ca0","webpack:///./src/components/ColorPicker/Saturation.vue","webpack:///./src/components/ColorPicker/Saturation.vue?45ee","webpack:///./src/components/ColorPicker/Saturation.vue?03b0","webpack:///./src/components/ColorPicker/EditableInput.vue","webpack:///./src/components/ColorPicker/EditableInput.vue?ec29","webpack:///./src/components/ColorPicker/EditableInput.vue?bec8","webpack:///./src/components/ColorPicker/index.vue?0a2f","webpack:///./src/components/ColorPicker/index.vue?7adb","webpack:///./src/main.ts","webpack:///./src/views/components/element/ImageElement/index.vue?bcdd","webpack:///./src/views/components/element/ElementOutline.vue?cbea","webpack:///./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue?b817","webpack:///./src/components/FileInput.vue?6403","webpack:///./src/views/components/element/TextElement/index.vue?46d9","webpack:///./src/views/components/element/ChartElement/index.vue?5c8f","webpack:///./src/views/Editor/EditorHeader/HotkeyDoc.vue?cbbe","webpack:///./src/views/Editor/Toolbar/SlideStylePanel.vue?898a","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue?5cd8","webpack:///./src/views/Editor/CanvasTool/ChartPool.vue?d724","webpack:///./src/views/Editor/Canvas/ViewportBackground.vue?95c8","webpack:///./src/views/Editor/CanvasTool/index.vue?7ec2","webpack:///./src/views/Editor/Canvas/Operate/BorderLine.vue?e0a1","webpack:///./src/views/Screen/SlideThumbnails.vue?4587"],"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","map","webpackContext","req","id","webpackContextResolve","e","Error","code","keys","resolve","screening","MutationTypes","ActionTypes","elements","type","left","top","width","height","viewBox","path","fill","fixedRatio","opacity","flip","x","y","content","start","end","points","color","style","background","activeElementIdList","handleElementId","canvasPercentage","canvasScale","thumbnailsFocus","editorAreaFocus","disableHotkeys","showGridLines","creatingElement","availableFonts","toolbarState","theme","themeColor","fontColor","fontName","backgroundColor","viewportRatio","slides","slideIndex","selectedSlidesIndex","snapshotCursor","snapshotLength","ctrlKeyState","shiftKeyState","clipingImageElementId","getters","currentSlide","state","currentSlideAnimations","animations","els","elIds","el","filter","animation","includes","elId","activeElementList","element","handleElement","find","canUndo","canRedo","ctrlOrShiftKeyActive","version","stores","snapshots","table","snapshotDB","actions","INIT_SNAPSHOT_DATABASE","commit","orderBy","toArray","lastSnapshot","clear","newFirstSnapshot","index","add","SET_SNAPSHOT_CURSOR","SET_SNAPSHOT_LENGTH","ADD_SNAPSHOT","allKeys","needDeleteKeys","snapshot","update","bulkDelete","UN_DO","SET_SLIDES","UPDATE_SLIDE_INDEX","SET_ACTIVE_ELEMENT_ID_LIST","RE_DO","SYS_FONTS","label","WEB_FONTS","isSupportFontFamily","fontFamily","arial","toLowerCase","size","str","canvas","document","createElement","ctx","getContext","textAlign","fillStyle","textBaseline","getDotArray","_fontFamily","clearRect","font","fillText","imageData","getImageData","item","join","mutations","SET_HANDLE_ELEMENT_ID","SET_CANVAS_PERCENTAGE","percentage","SET_CANVAS_SCALE","scale","SET_THUMBNAILS_FOCUS","isFocus","SET_EDITORAREA_FOCUS","SET_DISABLE_HOTKEYS_STATE","disable","SET_GRID_LINES_STATE","show","SET_CREATING_ELEMENT","SET_AVAILABLE_FONTS","SET_TOOLBAR_STATE","SET_CLIPING_IMAGE_ELEMENT_ID","SET_THEME","themeProps","SET_VIEWPORT_RATIO","ADD_SLIDE","slide","Array","isArray","addIndex","UPDATE_SLIDE","props","DELETE_SLIDE","slideId","slidesId","deleteSlidesIndex","findIndex","newIndex","Math","min","maxIndex","UPDATE_SELECTED_SLIDES_INDEX","ADD_ELEMENT","currentSlideEls","newEls","UPDATE_ELEMENT","elIdList","REMOVE_ELEMENT_PROPS","propName","propsNames","cursor","SET_CTRL_KEY_STATE","isActive","SET_SHIFT_KEY_STATE","SET_SCREENING","class","ElementOrderCommands","ElementAlignCommands","OperateBorderLines","OperateResizeHandlers","OperateLineHandlers","KEYS","remarkHeight","HOTKEY_DOC","children","createRandomCode","len","charset","maxLen","ret","randomIndex","floor","random","digit","Promise","reject","fakeElement","clipboard","text","action","container","body","on","destroy","appendChild","click","removeChild","readClipboard","navigator","readText","then","CRYPTO_KEY","msg","AES","encrypt","toString","ciphertext","bytes","decrypt","enc","Utf8","store","addHistorySnapshot","dispatch","trailing","redo","leading","undo","getImageSize","src","img","onload","imgWidth","clientWidth","imgHeight","clientHeight","onerror","getImageDataURL","file","reader","FileReader","addEventListener","readAsDataURL","VIEWPORT_SIZE","useHistorySnapshot","createImageElement","createChartElement","chartType","gridColor","labels","series","createTableElement","row","col","rowCells","colspan","rowspan","DEFAULT_CELL_WIDTH","DEFAULT_CELL_HEIGHT","colWidths","outline","rowHeader","rowFooter","colHeader","colFooter","createTextElement","position","createShapeElement","createLineElement","newElement","isBroken","broken","isCurve","curve","useCreateElement","pasteElement","groupIdMap","elIdMap","groupId","currentSlideElementIdList","inCurrentSlide","values","pasteSlides","newSlides","pasteText","pasteTextClipboardData","options","clipboardData","onlySlide","onlyElements","JSON","parse","selectedSlides","selectedSlidesId","usePasteTextClipboardData","resetSlides","updateSlideIndex","command","targetIndex","UP","DOWN","copySlide","stringify","pasteSlide","catch","err","message","warning","createSlide","emptySlide","copyAndPasteSlide","deleteSlide","targetSlidesId","cutSlide","selectAllSlide","newSelectedSlidesIndex","from","lockElement","newElementList","lock","unlockElement","deleteElement","deleteAllElements","combineElements","combineElementList","combineElementMaxLevel","_element","combineElementIdList","insertLevel","uncombineElements","hasElementInGroup","some","handleElementIdList","useDeleteElement","copyElement","cutElement","quickCopyElement","selectAllElement","unlockedElements","newActiveElementIdList","moveElement","step","LEFT","RIGHT","getCombineElementLevelRange","elementList","minLevel","maxLevel","moveUpElement","copyOfElementList","nextElement","movedElementList","nextCombineElementList","level","movedElement","moveDownElement","prevElement","prevCombineElementList","moveTopElement","moveBottomElement","unshift","orderElement","TOP","BOTTOM","enterFullscreen","docElm","documentElement","requestFullscreen","mozRequestFullScreen","webkitRequestFullScreen","exitFullscreen","mozCancelFullScreen","webkitCancelFullScreen","isFullscreen","mozFullScreen","webkitIsFullScreen","webkitFullScreen","enterScreening","enterScreeningFromStart","exitScreening","scaleCanvas","max","setCanvasPercentage","ctrlKeyActive","shiftKeyActive","useSlideHandler","useCombineElement","useLockElement","useCopyAndPasteElement","useSelectAllElement","useMoveElement","useOrderElement","useScreening","useScaleCanvas","copy","cut","quickCopy","selectAll","combine","uncombine","remove","move","order","keydownListener","ctrlKey","shiftKey","altKey","metaKey","toUpperCase","F","preventDefault","C","X","D","Z","Y","A","L","G","B","DELETE","BACKSPACE","ENTER","MINUS","EQUAL","DIGIT_0","keyupListener","removeEventListener","pasteImageFile","imageFile","dataURL","pasteListener","clipboardDataItems","items","clipboardDataFirstItem","kind","indexOf","getAsFile","getAsString","href","target","trigger","overlay","toggleGridLines","exportDialogVisible","openDoc","hotkeyDrawerVisible","mouseLeaveDelay","title","placement","visible","footer","centered","closable","destroyOnClose","hotkeys","hotkey","setup","render","__scopeId","ref","ElementTypes","tabs","tab","currentTab","exportJSON","emit","exportImage","spinning","backgroundStyle","elementInfo","elementIndex","image","imageSize","gradientColor","gradientRotate","gradientType","backgroundImage","backgroundRepeat","backgroundSize","rotate","color1","color2","currentElementComponent","ClipPathTypes","ClipPaths","clipShape","draggable","alt","shadow","shadowStyle","h","v","blur","flipStyle","CLIPPATHS","rect","RECT","radius","rect2","POLYGON","createPath","rect3","roundRect","ellipse","ELLIPSE","triangle","triangle2","triangle3","rhombus","hexagon","pentagon","parallelogram","parallelogram2","trapezoid","trapezoid2","clip","shape","imgPosition","range","widthScale","heightScale","filters","overflow","vector-effect","stroke-linecap","stroke-miterlimit","stroke-linejoin","rx","ry","stroke","outlineColor","stroke-width","outlineWidth","stroke-dasharray","outlineStyle","Number","required","String","default","useElementOutline","cx","cy","Function","components","ImageRectOutline","ImageEllipseOutline","ImagePolygonOutline","useClipImage","ImageOutline","useElementShadow","useElementFlip","useFilter","ElementOutline","gradient","transform","x1","y1","x2","y2","gradientTransform","offset","stop-color","GradientDefs","svgWidth","svgHeight","baseSize","lineDashArray","marker-start","marker-end","markerUnits","orient","markerWidth","markerHeight","refX","refY","pathMap","dot","arrow","rotateMap","LinePointMarker","abs","mid","strokeWidth","_chartType","_options","horizontalBars","showArea","showLine","donut","totalWidth","subThemeColor","colSizeList","span","rowIndex","cell","colIndex","hideCells","getTextStyle","bold","em","underline","strikethrough","backcolor","fontsize","fontname","align","textDecoration","fontWeight","fontStyle","fontSize","cells","rgba","toRgb","subRgba1","g","b","a","subRgba2","immediate","editable","Boolean","reduce","useHideCells","useSubThemeColor","StaticTable","elementTypeMap","IMAGE","BaseImageElement","TEXT","BaseTextElement","SHAPE","BaseShapeElement","LINE","BaseLineElement","CHART","BaseChartElement","TABLE","BaseTableElement","ThumbnailElement","useSlideBackgroundStyle","ThumbnailSlide","blob","Blob","imageThumbnailsRef","toImage","setTimeout","quality","dataUrl","error","HotkeyDoc","ExportDialog","EmitterEvents","$event","mousewheelScaleCanvas","handleClickBlankArea","insertElementFromCreateSelection","alignmentLines","line","axis","scaleMultiElement","isSelected","isActiveGroupElement","activeGroupElementId","isMultiSelect","rotateElement","scaleElement","dragLineElement","mouseSelectionState","isShow","quadrant","selectElement","contextmenus","removeEditorAreaFocus","removeAllRanges","selection","getSelection","canvasRef","viewportLeft","viewportTop","setViewportPosition","canvasWidth","canvasHeight","viewportActualWidth","viewportActualHeight","viewportStyles","resizeObserver","ResizeObserver","observe","unobserve","getRectRotatedRange","sqrt","pow","auxiliaryAngle","atan","PI","tlbraRadian","trblaRadian","middleLeft","middleTop","xAxis","cos","yAxis","sin","xRange","yRange","getRectRotatedOffset","originXRange","originYRange","rotatedXRange","rotatedYRange","offsetX","offsetY","getElementRange","minX","maxX","minY","maxY","getElementListRange","leftValues","topValues","rightValues","bottomValues","forEach","uniqAlignLines","lines","uniqLines","_line","uniqLine","rangeMin","rangeMax","viewportRef","updateMouseSelection","isMouseDown","viewportRect","getBoundingClientRect","minSelectionRange","startPageX","pageX","startPageY","pageY","onmousemove","currentPageX","currentPageY","offsetWidth","offsetHeight","onmouseup","inRangeElementList","mouseSelectionLeft","mouseSelectionTop","mouseSelectionWidth","mouseSelectionHeight","isInclude","inRangeElement","groupElementList","every","groupElement","inRangeElementIdList","elementRef","handleDrop","dataTransfer","dataTransferItem","ondragleave","ondrop","ondragenter","ondragover","getAngleFromCoordinate","radian","atan2","angle","elOriginRotate","elLeft","elTop","elWidth","elHeight","centerX","centerY","mouseX","mouseY","sorptionRange","emitter","ELEMENT_TYPE_ZH","chart","MIN_SIZE","getRotateElementPoints","taRadian","raRadian","halfWidth","halfHeight","leftTopPoint","topPoint","rightTopPoint","rightPoint","rightBottomPoint","bottomPoint","leftBottomPoint","leftPoint","direction","oppositeMap","RIGHT_BOTTOM","LEFT_BOTTOM","LEFT_TOP","RIGHT_TOP","SCALE_ELEMENT_STATE","elOriginLeft","elOriginTop","elOriginWidth","elOriginHeight","elRotate","rotateRadian","aspectRatio","minSize","getSizeWithinRange","baseLeft","baseTop","horizontalLines","verticalLines","oppositePoint","edgeWidth","edgeHeight","right","bottom","topLine","bottomLine","leftLine","rightLine","edgeTopLine","edgeBottomLine","edgeHorizontalCenterLine","edgeLeftLine","edgeRightLine","edgeVerticalCenterLine","alignedAdsorption","currentX","currentY","_alignmentLines","isVerticalAdsorbed","isHorizontalAdsorbed","correctionVal","revisedX","revisedY","currentPoints","currentOppositePoint","currentBaseLeft","currentBaseTop","moveX","moveY","operateWidth","operateHeight","originElementList","currentMinX","currentMaxX","currentMinY","currentMaxY","currentOppositeWidth","currentOppositeHeight","originElement","originEl","canMove","newActiveIdList","groupMembersId","dragElement","originActiveElementList","isMisoperation","horizontalCenterLine","verticalCenterLine","targetMinX","targetMaxX","targetMinY","targetMaxY","targetLeft","targetTop","targetCenterX","targetCenterY","adsorptionPoints","startX","startY","endX","endY","midX","midY","START","adsorptionPoint","END","newEl","MID","formatCreateSelection","selectionData","formatCreateSelectionForLine","_start","_end","alignElementToCanvas","viewportWidth","viewportHeight","CENTER","VERTICAL","HORIZONTAL","handleSelectElement","isCliping","clipData","clipPath","handleClip","shape-rendering","clipWrapperPositionStyle","bottomImgPositionStyle","topImgPositionStyle","topImgWrapperPositionStyle","moveClipRange","point","scaleClipRange","isSettingClipRange","currentRange","getClipDataTransformInfo","topImgWrapperPosition","bottomWidth","bottomHeight","topLeft","topTop","topWidth","topHeight","initClipPosition","clipedEmitData","keyboardListener","updateRange","retPosition","parseInt","bottomPosition","originPositopn","minWidth","minHeight","targetWidth","targetHeight","ImageClipHandler","stopPropagation","originClip","_props","schema","cmd","marks","strong","nodes","list_item","nodeType","match","node","childCount","attrs","rules","blockquote","ordered_list","bullet_list","code_block","_orderedList","group","_bulletList","parseDOM","tag","getAttrs","dom","getAttribute","test","toDOM","paragraph","subscript","excludes","superscript","forecolor","mark","inline","replace","schemaNodes","schemaMarks","htmlString","parser","DOMParser","parseFromString","firstElementChild","fromSchema","doc","plugins","equalNodeType","findParentNodeClosestToPos","$pos","predicate","depth","pos","before","findParentNode","_ref","$from","findParentNodeOfType","isActiveOfParentNodeType","getMarkAttrs","view","nodeAt","markType","attr","getAttrValueInSelection","to","keepChecking","nodesBetween","getTextAttrs","isBold","isEm","isUnderline","isStrikethrough","isSuperscript","isSubscript","isCode","isBulletList","isOrderedList","isBlockquote","bulletList","orderedList","tr","alignment","listItem","tasks","allowedNodeTypes","Set","has","task","setNodeMarkup","alignmentCommand","setSelection","isList","listType","itemType","$to","blockRange","parentList","validContent","editorView","isScaling","realHeightCache","editorViewRef","scaleElementStateListener","off","updateTextElementHeight","entries","contentRect","realHeight","handleInput","innerHTML","handleFocus","handleBlur","handleClick","UPDATE_TEXT_STATE","handleKeydown","textContent","hasFocus","setProps","handleDOMEvents","focus","keydown","execCommand","payload","commands","empty","addMark","removeMark","EXEC_TEXT_COMMAND","chartRef","slideScale","getDataAndOptions","propsOptopns","renderChart","updateChart","updateTheme","colors","analogous","toRgbString","setProperty","updateGridColor","Chart","updateTableCells","widths","updateColWidths","updateSelectedCells","startEdit","dragLinePosition","handleMousedownColHandler","tableCells","data-cell-index","handleCellMousedown","handleCellMouseenter","activedCell","contenteditable","modelValue","textareaRef","onpaste","CustomTextarea","isStartSelect","startCell","endCell","set","newData","removeSelectedCells","selectedCells","selectedRange","handleMouseup","button","isHideCell","selectCol","maxRow","selectRow","maxCol","deleteRow","_tableCells","targetCells","hideCellsPos","deleteCol","insertRow","insertCol","mergeCells","splitCells","originWidth","round","clearSelectedCellText","tabActiveCell","getNextCell","nextRow","nextCol","nextCell","textRef","querySelector","TAB","split","getEffectiveTableCells","effectiveTableCells","_rowCells","checkCanDeleteRowOrCol","canDeleteRow","canDeleteCol","checkCanMergeOrSplit","isMultiSelected","targetCell","canMerge","canSplit","cellIndex","dataset","handler","divider","EditableTable","updateTableElementHeight","UPDATE_TABLE_SELECTED_CELL","ImageElement","TextElement","ShapeElement","LineElement","ChartElement","TableElement","useAlignElementToCanvas","subText","hide","validator","newRgba","gridSize","getPath","GridLines","sizeStyle","createSelection","lineData","selectionRef","absX","absY","isOpposite","endPageX","endPageY","defaultSize","_startX","_startY","_endX","_endY","borderLines","disableResize","resizeHandlers","textElementResizeHandlers","T","R","isWide","ResizeHandler","BorderLine","localActiveElementList","useCommonOperate","setRange","currentOperateComponent","elementIndexInAnimation","scaleWidth","inheritAttrs","RotateHandler","scaleHeight","handlers","midHandler","ImageElementOperate","TextElementOperate","ShapeElementOperate","LineElementOperate","ChartElementOperate","TableElementOperate","EditableElement","MouseSelection","ViewportBackground","AlignmentLine","ElementCreateSelection","MultiSelectOperate","Operate","setLocalElementList","useViewportSize","useDropImageOrText","useMouseSelection","useDragElement","useDragLineElement","useSelectElement","useScaleElement","useRotateElement","throttleScaleCanvas","deltaY","useInsertFromCreateSelection","mouseEnterDelay","drawText","files","insertImageElement","shapePoolVisible","drawShape","linePoolVisible","drawLine","chartPoolVisible","tableGeneratorVisible","canvasScalePercentage","shapeList","selectShape","SHAPE_LIST","lineList","selectLine","LINE_LIST","chartList","selectChart","isCustom","customRow","customCol","close","insertCustomTable","handleClickTable","ShapePool","LinePool","ChartPool","TableGenerator","setThumbnailsFocus","scroll","scrollSensitivity","handleDragEnd","itemKey","handleClickSlideThumbnail","fillDigit","contextmenusThumbnailItem","contextmenusThumbnails","Draggable","changSlideIndex","minIndex","eventData","oldIndex","_slides","_slide","currentTabs","setToolbarState","currentPanelComponent","ToolbarStates","EL_ANIMATION","EL_STYLE","EL_POSITION","SLIDE_STYLE","SLIDE_ANIMATION","MULTI_POSITION","presetStyles","emitBatchRichTextCommand","compact","richTextAttrs","emitRichTextCommand","suffixIcon","webFonts","fontSizeOptions","updateFill","checked","button-style","lineHeight","updateLineHeight","lineHeightOptions","wordSpace","updateWordSpace","wordSpaceOptions","updateOpacity","undefined","deep","fixed","hasOutline","toggleOutline","updateOutline","ColorButton","outlineProps","hasShadow","toggleShadow","updateShadow","shadowProps","ElementOpacity","ElementShadow","updateRichTextAttrs","clipImage","clipPanelVisible","shapeClipPathOptions","presetImageClip","ratioClipOptions","ratio","filterOptions","updateFilter","replaceImage","resetImage","setBackgroundImage","updateFlip","defaultFilters","unit","ElementFlip","originFilters","getImageElementDataBeforeClip","imgLeft","imgTop","originClipRange","originHeight","originLeft","originTop","imageRatio","distance","fillType","updateFillType","updateGradient","gradientProps","updateLine","chartDataEditorVisible","updateOptions","lineSmooth","updateData","rangeLines","resizablePointStyle","changeSelectRange","autocomplete","closeEditor","getTableData","CELL_WIDTH","CELL_HEIGHT","tempRangeSize","initData","_data","rowCount","colCount","inputRef","labelsItem","labelInputRef","seriesItem","valueInputRef","ChartDataEditor","_lineSmooth","_showLine","_showArea","_horizontalBars","_donut","optionProps","newOptions","textAttrs","updateTextAttrs","minRowCount","setTableRow","minColCount","setTableCol","hasTheme","toggleTheme","updateTextAttrState","selectedCell","textAttrProp","themeProp","currentTheme","newTableCells","newColSizeList","panelMap","TextStylePanel","ImageStylePanel","ShapeStylePanel","LineStylePanel","ChartStylePanel","TableStylePanel","updateLeft","updateTop","updateWidth","updateFixedRatio","disabled","updateHeight","updateRotate45","updateRotate","_rotate","animationPoolVisible","hoverPreviewAnimation","addAnimation","handleElementAnimation","animationSequence","elType","animationType","runAnimation","deleteAnimation","ANIMATIONS","animationTypes","prefix","elRef","animationName","classList","handleAnimationEnd","once","updateElementAnimation","duration","updateBackgroundType","updateBackground","uploadBackgroundImage","applyBackgroundAllSlide","updateViewportRatio","themes","applyThemeAllSlide","PRESET_THEMES","newBackground","currentTurningMode","updateTurningMode","applyAllSlide","turningMode","alignActiveElement","uniformHorizontalDisplay","uniformVerticalDisplay","canCombine","groupElementRangeMap","activeElement","groupElements","horizontalCenter","center","verticalCenter","copyOfActiveElementList","sort","elementA","elementB","elAMinX","elBMinX","elMinX","elMaxX","sortedElementData","lastItemElement","lastItemPos","lastElementMinX","lastElementMaxX","lastElementWidth","firstElMinX","sortedItem","elAMinY","elBMinY","totalHeight","elMinY","elMaxY","lastElementMinY","lastElementMaxY","lastElementHeight","firstElMinY","useAlignActiveElement","useUniformDisplayElement","firstGroupId","inSameGroup","elementTabs","slideTabs","multiSelectTabs","currentTabsValue","ElementStylePanel","ElementPositionPanel","ElementAnimationPanel","SlideStylePanel","SlideAnimationPanel","MultiPositionPanel","resize","remark","placeholder","newHeight","EditorHeader","Canvas","CanvasTool","Thumbnails","Toolbar","Remark","useGlobalHotkey","usePasteEvent","mousewheelListener","animationIndex","slideThumbnailModelVisible","turnSlideToIndex","writingBoardToolVisible","execPrev","execNext","showPageNumber","ScreenChartElement","needWaitAnimation","ScreenElement","writingBoardColor","model","writingBoardModel","changePen","changeEraser","clearCanvas","writingBoardColors","changeColor","closeWritingBoard","handleMousedown","handleMousemove","mouseInCanvas","penSize","rubberSize","writingBoardRef","lastPos","lastTime","lastLineWidth","mouse","updateMousePosition","initCanvas","lineCap","lineJoin","draw","posX","posY","lineWidth","lastPosX","lastPosY","strokeStyle","beginPath","moveTo","lineTo","closePath","erase","sinRadius","cosRadius","rectPoint1","rectPoint2","rectPoint3","rectPoint4","save","arc","restore","Date","getTime","getDistance","getLineWidth","maxV","minV","maxWidth","time","WritingBoard","ScreenSlide","SlideThumbnails","WritingBoardTool","slideWidth","slideHeight","setSlideContentSize","winWidth","winHeight","windowResizeListener","autoPlayTimer","closeAutoPlay","clearInterval","lastIndex","success","autoPlay","setInterval","SPACE","turnPrevSlide","turnNextSlide","Editor","Screen","onbeforeunload","removeContextmenu","menus","handleClickMenuItem","menu","MenuContent","MENU_WIDTH","MENU_HEIGHT","DIVIDER_HEIGHT","PADDING","menuCount","dividerCount","menuWidth","menuHeight","screenWidth","screenHeight","CTX_CONTEXTMENU_HANDLER","event","binding","vm","Contextmenu","ContextmenuDirective","mounted","unmounted","CTX_CLICK_OUTSIDE_HANDLER","clickListener","composedPath","isClickOutside","contains","ClickOutsideDirective","install","app","component","accept","handleChange","xmlns","xmlnsXlink","hue","currentColor","themeColors","selectPresetColor","presetColors","standardColors","recentColors","handleMouseDown","bgStyle","checkboardCache","renderCheckboard","white","grey","fillRect","translate","toDataURL","getCheckboard","checkboard","Checkboard","rgbaStr","alphaRef","containerWidth","xOffset","pageXOffset","unbindEventListeners","pointerLeft","oldHue","pullDirection","hsla","toHsl","hueRef","percent","bgColor","hsva","toHsv","pointerTop","emitChangeEvent","param","saturationRef","containerHeight","yOffset","pageYOffset","saturation","bright","val","_hex","toHex8String","toHexString","RECENT_COLORS","presetColorConfig","startColor","endColor","_startColor","_endColor","rStep","gStep","bStep","gradientColorArr","Alpha","Hue","Saturation","EditableInput","rgbaString","colorString","updateRecentColorsCache","_color","maxLength","recentColorsCache","localStorage","getItem","setItem","App","directive","use","FileInput","SvgWrapper","CheckboxButton","CheckboxButtonGroup","ColorPicker","Group","Option","OptGroup","Button","Item","mount"],"mappings":"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fC,oBAAkB,IAClBC,kBAAA,GACAjgB,KAAK,cACLogB,OAAO,OACPE,eAAa,IACZrjB,EAAGsiB,EAAMxf,M,4FCnBfmsC,GAAa,CACxB,CACEzsC,KAAM,KACNiL,SAAU,CACR,CACE5K,QAAS,IACTC,KAAM,qCAER,CACED,QAAS,IACTC,KAAM,wGAER,CACED,QAAS,IACTC,KAAM,+DAER,CACED,QAAS,IACTC,KAAM,oDAER,CACED,QAAS,IACTC,KAAM,6DAER,CACED,QAAS,IACTC,KAAM,yEAER,CACED,QAAS,IACTC,KAAM,0DAER,CACED,QAAS,IACTC,KAAM,yEAKZ,CACEN,KAAM,OACNiL,SAAU,CACR,CACE5K,QAAS,IACTC,KAAM,uDAER,CACED,QAAS,IACTC,KAAM,yDAER,CACED,QAAS,IACTC,KAAM,+CAER,CACED,QAAS,IACTC,KAAM,uDAER,CACED,QAAS,IACTC,KAAM,yCAER,CACED,QAAS,IACTC,KAAM,uCAER,CACED,QAAS,IACTC,KAAM,6BAER,CACED,QAAS,IACTC,KAAM,6CAER,CACED,QAAS,IACTC,KAAM,4CAER,CACED,QAAS,IACTC,KAAM,6CAER,CACED,QAAS,IACTC,KAAM,iDAER,CACED,QAAS,IACTC,KAAM,wDAER,CACED,QAAS,IACTC,KAAM,iEAER,CACED,QAAS,IACTC,KAAM,gFAER,CACED,QAAS,IACTC,KAAM,oHAER,CACED,QAAS,IACTC,KAAM,uDAER,CACED,QAAS,IACTC,KAAM,0DAER,CACED,QAAS,IACTC,KAAM,uEAER,CACED,QAAS,IACTC,KAAM,kEAER,CACED,QAAS,IACTC,KAAM,+CAER,CACED,QAAS,IACTC,KAAM,6CAER,CACED,QAAS,IACTC,KAAM,6CAER,CACED,QAAS,IACTC,KAAM,oHAER,CACED,QAAS,IACTC,KAAM,6DAER,CACED,QAAS,IACTC,KAAM,wEAER,CACED,QAAS,IACTC,KAAM,iEAER,CACED,QAAS,IACTC,KAAM,oHAER,CACED,QAAS,IACTC,KAAM,sHAER,CACED,QAAS,IACTC,KAAM,uEAER,CACED,QAAS,IACTC,KAAM,oIAER,CACED,QAAS,IACTC,KAAM,qEAER,CACED,QAAS,IACTC,KAAM,+CAKZ,CACEN,KAAM,KACNiL,SAAU,CACR,CACE5K,QAAS,IACTC,KAAM,6EAER,CACED,QAAS,IACTC,KAAM,6EAER,CACED,QAAS,IACTC,KAAM,6EAER,CACED,QAAS,IACTC,KAAM,6EAER,CACED,QAAS,IACTC,KAAM,qGAER,CACED,QAAS,IACTC,KAAM,qGAER,CACED,QAAS,IACTC,KAAM,qOAER,CACED,QAAS,IACTC,KAAM,uFAER,CACED,QAAS,IACTC,KAAM,sFAER,CACED,QAAS,IACTC,KAAM,8GAER,CACED,QAAS,IACTC,KAAM,8GAER,CACED,QAAS,IACTC,KAAM,8DAER,CACED,QAAS,IACTC,KAAM,gEAER,CACED,QAAS,IACTC,KAAM,6DAER,CACED,QAAS,IACTC,KAAM,gEAER,CACED,QAAS,IACTC,KAAM,4CAER,CACED,QAAS,IACTC,KAAM,iDAER,CACED,QAAS,IACTC,KAAM,6DAER,CACED,QAAS,IACTC,KAAM,kEAER,CACED,QAAS,IACTC,KAAM,6FAER,CACED,QAAS,IACTC,KAAM,yFAER,CACED,QAAS,IACTC,KAAM,0HAER,CACED,QAAS,KACTC,KAAM,+IAER,CACED,QAAS,KACTC,KAAM,mJAKZ,CACEN,KAAM,OACNiL,SAAU,CACR,CACE5K,QAAS,KACTC,KAAM,svCAER,CACED,QAAS,KACTC,KAAM,62BAER,CACED,QAAS,KACTC,KAAM,kcAER,CACED,QAAS,KACTC,KAAM,ofAER,CACED,QAAS,KACTC,KAAM,ipDAER,CACED,QAAS,KACTC,KAAM,6uBAER,CACED,QAAS,KACTC,KAAM,ibAER,CACED,QAAS,KACTC,KAAM,usCAER,CACED,QAAS,KACTC,KAAM,y/BAER,CACED,QAAS,KACTC,KAAM,y3CAER,CACED,QAAS,KACTC,KAAM,ykBAER,CACED,QAAS,KACTC,KAAM,2jBAER,CACED,QAAS,KACTC,KAAM,syBAER,CACED,QAAS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","file":"js/app.5cfeacff.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([0,\"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--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./App.vue?vue&type=style&index=0&id=0af9d1a8&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=17169d5c&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./BaseImageElement.vue?vue&type=style&index=0&id=75104890&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ColorButton.vue?vue&type=style&index=0&id=39016b60&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ScreenChartElement.vue?vue&type=style&index=0&id=1423f8c2&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=4dd87e36&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ImageEllipseOutline.vue?vue&type=style&index=0&id=6655f0f0&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./StaticTable.vue?vue&type=style&index=0&id=01f791ba&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ElementCreateSelection.vue?vue&type=style&index=0&id=3c5b7aac&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=55178b6a&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./MouseSelection.vue?vue&type=style&index=0&id=1619c258&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=c0edfdac&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=6596d0d5&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=4e59015e&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=772225af&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ShapePool.vue?vue&type=style&index=0&id=5aabd717&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=264ed0d8&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Chart.vue?vue&type=style&index=1&id=233b1dc8&lang=scss\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./BaseShapeElement.vue?vue&type=style&index=0&id=062b8ef4&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./EditableInput.vue?vue&type=style&index=0&id=0311fdee&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./BaseLineElement.vue?vue&type=style&index=0&id=56b0510c&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=89372f4a&lang=scss&scoped=true\"","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn-bd\": \"9686\",\n\t\"./bn-bd.js\": \"9686\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-mx\": \"b5b7\",\n\t\"./es-mx.js\": \"b5b7\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Saturation.vue?vue&type=style&index=0&id=5310dbb4&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./SlideAnimationPanel.vue?vue&type=style&index=0&id=6e3028f1&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ImageElementOperate.vue?vue&type=style&index=0&id=5b0628aa&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Alpha.vue?vue&type=style&index=0&id=ecf7d10e&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./WritingBoardTool.vue?vue&type=style&index=0&id=f34025bc&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Checkboard.vue?vue&type=style&index=0&id=e9a0ac98&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ImagePolygonOutline.vue?vue&type=style&index=0&id=8d85e878&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ElementOpacity.vue?vue&type=style&index=0&id=b884607e&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./LinePool.vue?vue&type=style&index=0&id=5087394c&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./MultiPositionPanel.vue?vue&type=style&index=0&id=153f2e6e&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./CheckboxButtonGroup.vue?vue&type=style&index=0&id=7dafd0a9&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ImageClipHandler.vue?vue&type=style&index=0&id=1d9b5032&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ExportDialog.vue?vue&type=style&index=0&id=47e95e66&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./WritingBoard.vue?vue&type=style&index=0&id=4ddc4b2c&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ShapeStylePanel.vue?vue&type=style&index=0&id=998a7a02&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ScreenSlide.vue?vue&type=style&index=0&id=a094625a&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ElementFlip.vue?vue&type=style&index=0&id=4a631c86&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./CheckboxButton.vue?vue&type=style&index=0&id=7cae2b90&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ElementOutline.vue?vue&type=style&index=0&id=2d8ce9c0&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./MenuContent.vue?vue&type=style&index=0&id=5490894e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ImageStylePanel.vue?vue&type=style&index=0&id=c1cc1cba&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./RotateHandler.vue?vue&type=style&index=0&id=9a549510&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./TableStylePanel.vue?vue&type=style&index=0&id=2db32cac&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./LineStylePanel.vue?vue&type=style&index=0&id=65b24fb3&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./CustomTextarea.vue?vue&type=style&index=0&id=0d17e957&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./TextStylePanel.vue?vue&type=style&index=0&id=43fccffc&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=20575236&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./AlignmentLine.vue?vue&type=style&index=0&id=2d3eddf5&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ElementAnimationPanel.vue?vue&type=style&index=0&id=2a95eecd&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=558a94fe&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=5e85dd68&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./EditableTable.vue?vue&type=style&index=0&id=70bdbb7e&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Hue.vue?vue&type=style&index=0&id=7b983451&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=f790671e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Chart.vue?vue&type=style&index=0&id=233b1dc8&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ResizeHandler.vue?vue&type=style&index=0&id=1c2a68d0&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ImageRectOutline.vue?vue&type=style&index=0&id=4126ab7f&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./TableGenerator.vue?vue&type=style&index=0&id=576c614c&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./BaseChartElement.vue?vue&type=style&index=0&id=2d25f60a&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ElementPositionPanel.vue?vue&type=style&index=0&id=15c9ddcc&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=7d3d40d6&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=83da70aa&lang=scss\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./BaseTableElement.vue?vue&type=style&index=0&id=dea016ac&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./BaseTextElement.vue?vue&type=style&index=0&id=10405ba6&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ElementShadow.vue?vue&type=style&index=0&id=5cca6474&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridLines.vue?vue&type=style&index=0&id=fbcac4e2&lang=scss&scoped=true\"","\r\n \r\n \r\n\r\n\r\n\r\n\r\n","export const enum MutationTypes {\r\n\r\n // editor\r\n SET_ACTIVE_ELEMENT_ID_LIST = 'setActiveElementIdList',\r\n SET_HANDLE_ELEMENT_ID = 'setHandleElementId',\r\n SET_CANVAS_PERCENTAGE = 'setCanvasPercentage',\r\n SET_CANVAS_SCALE = 'setCanvasScale',\r\n SET_THUMBNAILS_FOCUS = 'setThumbnailsFocus',\r\n SET_EDITORAREA_FOCUS = 'setEditorAreaFocus',\r\n SET_DISABLE_HOTKEYS_STATE = 'setDisableHotkeysState',\r\n SET_GRID_LINES_STATE = 'setGridLinesState',\r\n SET_CREATING_ELEMENT = 'setCreatingElement',\r\n SET_AVAILABLE_FONTS = 'setAvailableFonts',\r\n SET_TOOLBAR_STATE = 'setToolbarState',\r\n SET_CLIPING_IMAGE_ELEMENT_ID = 'setClipingImageElementId',\r\n\r\n // slides\r\n SET_THEME = 'setTheme',\r\n SET_VIEWPORT_RATIO = 'setViewportRatio',\r\n SET_SLIDES = 'setSlides',\r\n ADD_SLIDE = 'addSlide',\r\n UPDATE_SLIDE = 'updateSlide',\r\n DELETE_SLIDE = 'deleteSlide',\r\n UPDATE_SLIDE_INDEX = 'updateSlideIndex',\r\n UPDATE_SELECTED_SLIDES_INDEX = 'updateSelectedSlidesIndex',\r\n ADD_ELEMENT = 'addElement',\r\n UPDATE_ELEMENT = 'updateElement',\r\n REMOVE_ELEMENT_PROPS = 'removeElementProps',\r\n\r\n // snapshot\r\n SET_SNAPSHOT_CURSOR = 'setSnapshotCursor',\r\n SET_SNAPSHOT_LENGTH = 'setSnapshotLength',\r\n\r\n // keyboard\r\n SET_CTRL_KEY_STATE = 'setCtrlKeyState',\r\n SET_SHIFT_KEY_STATE = 'setShiftKeyState',\r\n\r\n // screen\r\n SET_SCREENING = 'setScreening',\r\n}\r\n\r\nexport const enum ActionTypes {\r\n INIT_SNAPSHOT_DATABASE = 'initSnapshotDatabase',\r\n ADD_SNAPSHOT = 'addSnapshot',\r\n UN_DO = 'undo',\r\n RE_DO = 'redo',\r\n}","import { Slide } from '@/types/slides'\r\n\r\nexport const slides: Slide[] = [\r\n {\r\n id: 'test123456',\r\n elements: [\r\n {\r\n type: 'shape',\r\n id: '4cbRxp',\r\n left: 0,\r\n top: 200,\r\n width: 546,\r\n height: 362.5,\r\n viewBox: 200,\r\n path: 'M 0 0 L 0 200 L 200 200 Z',\r\n fill: '#d14424',\r\n fixedRatio: false,\r\n opacity: 0.7,\r\n },\r\n {\r\n type: 'shape',\r\n id: 'ookHrf',\r\n left: 0,\r\n top: 0,\r\n width: 300,\r\n height: 320,\r\n viewBox: 200,\r\n path: 'M 0 0 L 0 200 L 200 200 Z',\r\n fill: '#d14424',\r\n fixedRatio: false,\r\n flip: {\r\n x: 180,\r\n y: 0,\r\n },\r\n },\r\n {\r\n type: 'text',\r\n id: 'idn7Mx',\r\n left: 355,\r\n top: 65.25,\r\n width: 585,\r\n height: 188,\r\n content: 'PPTIST
',\r\n },\r\n {\r\n type: 'text',\r\n id: '7stmVP',\r\n left: 355,\r\n top: 253.25,\r\n width: 585,\r\n height: 56,\r\n content: '基于 Vue 3.x + TypeScript 的在线演示文稿应用
',\r\n },\r\n {\r\n type: 'line',\r\n id: 'FnpZs4',\r\n left: 361,\r\n top: 238,\r\n start: [0, 0],\r\n end: [549, 0],\r\n points: ['', ''],\r\n color: '#d14424',\r\n style: 'solid',\r\n width: 2,\r\n },\r\n ],\r\n background: {\r\n type: 'solid',\r\n color: '#ffffff',\r\n },\r\n }\r\n]","import { Slide, SlideTheme } from '@/types/slides'\r\nimport { CreatingElement } from '@/types/edit'\r\nimport { ToolbarState } from '@/types/toolbar'\r\nimport { slides } from '@/mocks/index'\r\nimport { SYS_FONTS } from '@/configs/font'\r\n\r\nexport interface State {\r\n activeElementIdList: string[];\r\n handleElementId: string;\r\n canvasPercentage: number;\r\n canvasScale: number;\r\n thumbnailsFocus: boolean;\r\n editorAreaFocus: boolean;\r\n disableHotkeys: boolean;\r\n showGridLines: boolean;\r\n creatingElement: CreatingElement | null;\r\n availableFonts: typeof SYS_FONTS;\r\n toolbarState: ToolbarState;\r\n theme: SlideTheme;\r\n viewportRatio: number;\r\n slides: Slide[];\r\n slideIndex: number;\r\n selectedSlidesIndex: number[];\r\n snapshotCursor: number;\r\n snapshotLength: number;\r\n ctrlKeyState: boolean;\r\n shiftKeyState: boolean;\r\n screening: boolean;\r\n clipingImageElementId: string;\r\n}\r\n\r\nexport const state: State = {\r\n activeElementIdList: [],\r\n handleElementId: '',\r\n canvasPercentage: 90,\r\n canvasScale: 1,\r\n thumbnailsFocus: false,\r\n editorAreaFocus: false,\r\n disableHotkeys: false,\r\n showGridLines: false,\r\n creatingElement: null,\r\n availableFonts: [],\r\n toolbarState: 'slideStyle',\r\n theme: {\r\n themeColor: '#d14424',\r\n fontColor: '#333',\r\n fontName: '微软雅黑',\r\n backgroundColor: '#fff',\r\n },\r\n viewportRatio: 0.5625,\r\n slides: slides,\r\n slideIndex: 0,\r\n selectedSlidesIndex: [],\r\n snapshotCursor: -1,\r\n snapshotLength: 0,\r\n ctrlKeyState: false,\r\n shiftKeyState: false,\r\n screening: false,\r\n clipingImageElementId: '',\r\n}","import { GetterTree } from 'vuex'\r\nimport { State } from './state'\r\n\r\nexport const getters: GetterTree = {\r\n currentSlide(state) {\r\n return state.slides[state.slideIndex] || null\r\n },\r\n\r\n currentSlideAnimations(state) {\r\n const currentSlide = state.slides[state.slideIndex]\r\n if (!currentSlide) return null\r\n const animations = currentSlide.animations\r\n if (!animations) return null\r\n\r\n const els = currentSlide.elements\r\n const elIds = els.map(el => el.id)\r\n return animations.filter(animation => elIds.includes(animation.elId))\r\n },\r\n\r\n activeElementList(state) {\r\n const currentSlide = state.slides[state.slideIndex]\r\n if (!currentSlide || !currentSlide.elements) return []\r\n return currentSlide.elements.filter(element => state.activeElementIdList.includes(element.id))\r\n },\r\n\r\n handleElement(state) {\r\n const currentSlide = state.slides[state.slideIndex]\r\n if (!currentSlide || !currentSlide.elements) return null\r\n return currentSlide.elements.find(element => state.handleElementId === element.id) || null\r\n },\r\n\r\n canUndo(state) {\r\n return state.snapshotCursor > 0\r\n },\r\n\r\n canRedo(state) {\r\n return state.snapshotCursor < state.snapshotLength - 1\r\n },\r\n\r\n ctrlOrShiftKeyActive(state) {\r\n return state.ctrlKeyState || state.shiftKeyState\r\n },\r\n}","import Dexie from 'dexie'\r\nimport { Slide } from '@/types/slides'\r\n\r\nexport interface Snapshot {\r\n index: number;\r\n slides: Slide[];\r\n}\r\n\r\nclass SnapshotDatabase extends Dexie {\r\n public snapshots: Dexie.Table\r\n\r\n public constructor() {\r\n super('SnapshotDatabase')\r\n this.version(1).stores({\r\n snapshots: '++id'\r\n })\r\n this.snapshots = this.table('snapshots')\r\n }\r\n}\r\n\r\nexport const snapshotDB = new SnapshotDatabase()","import { ActionTree } from 'vuex'\r\nimport { IndexableTypeArray } from 'dexie'\r\nimport { State } from './state'\r\nimport { ActionTypes, MutationTypes } from './constants'\r\nimport { snapshotDB, Snapshot } from '@/utils/database'\r\n\r\nexport const actions: ActionTree = {\r\n async [ActionTypes.INIT_SNAPSHOT_DATABASE]({ commit, state }) {\r\n const snapshots: Snapshot[] = await snapshotDB.snapshots.orderBy('id').toArray()\r\n const lastSnapshot = snapshots.slice(-1)[0]\r\n\r\n if (lastSnapshot) {\r\n snapshotDB.snapshots.clear()\r\n }\r\n\r\n const newFirstSnapshot = {\r\n index: state.slideIndex,\r\n slides: state.slides,\r\n }\r\n await snapshotDB.snapshots.add(newFirstSnapshot)\r\n commit(MutationTypes.SET_SNAPSHOT_CURSOR, 0)\r\n commit(MutationTypes.SET_SNAPSHOT_LENGTH, 1)\r\n },\r\n\r\n async [ActionTypes.ADD_SNAPSHOT]({ state, commit }) {\r\n const allKeys = await snapshotDB.snapshots.orderBy('id').keys()\r\n\r\n let needDeleteKeys: IndexableTypeArray = []\r\n\r\n if (state.snapshotCursor >= 0 && state.snapshotCursor < allKeys.length - 1) {\r\n needDeleteKeys = allKeys.slice(state.snapshotCursor + 1)\r\n }\r\n\r\n const snapshot = {\r\n index: state.slideIndex,\r\n slides: state.slides,\r\n }\r\n await snapshotDB.snapshots.add(snapshot)\r\n\r\n let snapshotLength = allKeys.length - needDeleteKeys.length + 1\r\n\r\n if (snapshotLength > 20) {\r\n needDeleteKeys.push(allKeys[0])\r\n snapshotLength--\r\n }\r\n if (snapshotLength >= 2) {\r\n snapshotDB.snapshots.update(allKeys[snapshotLength - 2] as number, { index: state.slideIndex })\r\n }\r\n\r\n await snapshotDB.snapshots.bulkDelete(needDeleteKeys)\r\n\r\n commit(MutationTypes.SET_SNAPSHOT_CURSOR, snapshotLength - 1)\r\n commit(MutationTypes.SET_SNAPSHOT_LENGTH, snapshotLength)\r\n },\r\n\r\n async [ActionTypes.UN_DO]({ state, commit }) {\r\n if (state.snapshotCursor <= 0) return\r\n\r\n const snapshotCursor = state.snapshotCursor - 1\r\n const snapshots: Snapshot[] = await snapshotDB.snapshots.orderBy('id').toArray()\r\n const snapshot = snapshots[snapshotCursor]\r\n const { index, slides } = snapshot\r\n\r\n const slideIndex = index > slides.length - 1 ? slides.length - 1 : index\r\n\r\n commit(MutationTypes.SET_SLIDES, slides)\r\n commit(MutationTypes.UPDATE_SLIDE_INDEX, slideIndex)\r\n commit(MutationTypes.SET_SNAPSHOT_CURSOR, snapshotCursor)\r\n commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, [])\r\n },\r\n\r\n async [ActionTypes.RE_DO]({ state, commit }) {\r\n if (state.snapshotCursor >= state.snapshotLength - 1) return\r\n\r\n const snapshotCursor = state.snapshotCursor + 1\r\n const snapshots: Snapshot[] = await snapshotDB.snapshots.orderBy('id').toArray()\r\n const snapshot = snapshots[snapshotCursor]\r\n const { index, slides } = snapshot\r\n\r\n const slideIndex = index > slides.length - 1 ? slides.length - 1 : index\r\n\r\n commit(MutationTypes.SET_SLIDES, slides)\r\n commit(MutationTypes.UPDATE_SLIDE_INDEX, slideIndex)\r\n commit(MutationTypes.SET_SNAPSHOT_CURSOR, snapshotCursor)\r\n commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, [])\r\n },\r\n}","export const SYS_FONTS = [\r\n { label: 'Arial', value: 'Arial' },\r\n { label: '微软雅黑', value: 'Microsoft Yahei' },\r\n { label: '宋体', value: 'SimSun' },\r\n { label: '黑体', value: 'SimHei' },\r\n { label: '楷体', value: 'KaiTi' },\r\n { label: '新宋体', value: 'NSimSun' },\r\n { label: '仿宋', value: 'FangSong' },\r\n { label: '苹方', value: 'PingFang SC' },\r\n { label: '华文黑体', value: 'STHeiti' },\r\n { label: '华文楷体', value: 'STKaiti' },\r\n { label: '华文宋体', value: 'STSong' },\r\n { label: '华文仿宋', value: 'STFangSong' },\r\n { label: '华文中宋', value: 'STZhongSong' },\r\n { label: '华文琥珀', value: 'STHupo' },\r\n { label: '华文新魏', value: 'STXinwei' },\r\n { label: '华文隶书', value: 'STLiti' },\r\n { label: '华文行楷', value: 'STXingkai' },\r\n { label: '冬青黑体', value: 'Hiragino Sans GB' },\r\n { label: '兰亭黑', value: 'Lantinghei SC' },\r\n { label: '偏偏体', value: 'Hanzipen SC' },\r\n { label: '手札体', value: 'Hannotate SC' },\r\n { label: '宋体', value: 'Songti SC' },\r\n { label: '娃娃体', value: 'Wawati SC' },\r\n { label: '行楷', value: 'Xingkai SC' },\r\n { label: '圆体', value: 'Yuanti SC' },\r\n { label: '华文细黑', value: 'STXihei' },\r\n { label: '幼圆', value: 'YouYuan' },\r\n { label: '隶书', value: 'LiSu' },\r\n]\r\n\r\nexport const WEB_FONTS = [\r\n { label: '仓耳小丸子', value: '仓耳小丸子' },\r\n { label: '优设标题黑', value: '优设标题黑' },\r\n { label: '峰广明锐体', value: '峰广明锐体' },\r\n { label: '摄图摩登小方体', value: '摄图摩登小方体' },\r\n { label: '站酷快乐体', value: '站酷快乐体' },\r\n { label: '站酷酷黑体', value: '站酷酷黑体' },\r\n { label: '素材集市康康体', value: '素材集市康康体' },\r\n { label: '联盟起艺卢帅正锐黑体', value: '联盟起艺卢帅正锐黑体' },\r\n { label: '谦度手写楷体', value: '谦度手写楷体' },\r\n { label: '途牛类圆体', value: '途牛类圆体' },\r\n { label: '锐字真言体', value: '锐字真言体' },\r\n { label: '问藏书房', value: '问藏书房' },\r\n]","/**\r\n * 判断操作系统是否存在某字体\r\n * @param fontFamily 字体名\r\n */\r\nexport const isSupportFontFamily = (fontFamily: string) => {\r\n if (typeof fontFamily !== 'string') return false\r\n\r\n const arial = 'Arial'\r\n if (fontFamily.toLowerCase() === arial.toLowerCase()) return true\r\n\r\n const size = 100\r\n const width = 100\r\n const height = 100\r\n const str = 'a'\r\n\r\n const canvas = document.createElement('canvas')\r\n const ctx = canvas.getContext('2d')\r\n\r\n if (!ctx) return false\r\n\r\n canvas.width = width\r\n canvas.height = height\r\n ctx.textAlign = 'center'\r\n ctx.fillStyle = 'black'\r\n ctx.textBaseline = 'middle'\r\n\r\n const getDotArray = (_fontFamily: string) => {\r\n ctx.clearRect(0, 0, width, height)\r\n ctx.font = `${size}px ${_fontFamily}, ${arial}`\r\n ctx.fillText(str, width / 2, height / 2)\r\n const imageData = ctx.getImageData(0, 0, width, height).data\r\n return [].slice.call(imageData).filter(item => item !== 0)\r\n }\r\n\r\n return getDotArray(arial).join('') !== getDotArray(fontFamily).join('')\r\n}","import { MutationTree } from 'vuex'\r\nimport omit from 'lodash/omit'\r\nimport { MutationTypes } from './constants'\r\nimport { State } from './state'\r\nimport { Slide, PPTElement, SlideTheme } from '@/types/slides'\r\nimport { CreatingElement } from '@/types/edit'\r\nimport { SYS_FONTS } from '@/configs/font'\r\nimport { isSupportFontFamily } from '@/utils/fontFamily'\r\n\r\ninterface RemoveElementPropData {\r\n id: string;\r\n propName: string | string[];\r\n}\r\n\r\ninterface UpdateElementData {\r\n id: string | string[];\r\n props: Partial;\r\n}\r\n\r\nexport const mutations: MutationTree = {\r\n\r\n // editor\r\n\r\n [MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST](state, activeElementIdList: string[]) {\r\n if (activeElementIdList.length === 1) state.handleElementId = activeElementIdList[0]\r\n else state.handleElementId = ''\r\n \r\n state.activeElementIdList = activeElementIdList\r\n },\r\n \r\n [MutationTypes.SET_HANDLE_ELEMENT_ID](state, handleElementId: string) {\r\n state.handleElementId = handleElementId\r\n },\r\n\r\n [MutationTypes.SET_CANVAS_PERCENTAGE](state, percentage: number) {\r\n state.canvasPercentage = percentage\r\n },\r\n\r\n [MutationTypes.SET_CANVAS_SCALE](state, scale: number) {\r\n state.canvasScale = scale\r\n },\r\n\r\n [MutationTypes.SET_THUMBNAILS_FOCUS](state, isFocus: boolean) {\r\n state.thumbnailsFocus = isFocus\r\n },\r\n\r\n [MutationTypes.SET_EDITORAREA_FOCUS](state, isFocus: boolean) {\r\n state.editorAreaFocus = isFocus\r\n },\r\n\r\n [MutationTypes.SET_DISABLE_HOTKEYS_STATE](state, disable: boolean) {\r\n state.disableHotkeys = disable\r\n },\r\n\r\n [MutationTypes.SET_GRID_LINES_STATE](state, show: boolean) {\r\n state.showGridLines = show\r\n },\r\n\r\n [MutationTypes.SET_CREATING_ELEMENT](state, element: CreatingElement | null) {\r\n state.creatingElement = element\r\n },\r\n\r\n [MutationTypes.SET_AVAILABLE_FONTS](state) {\r\n state.availableFonts = SYS_FONTS.filter(font => isSupportFontFamily(font.value))\r\n },\r\n\r\n [MutationTypes.SET_TOOLBAR_STATE](state, type) {\r\n state.toolbarState = type\r\n },\r\n\r\n [MutationTypes.SET_CLIPING_IMAGE_ELEMENT_ID](state, elId) {\r\n state.clipingImageElementId = elId\r\n },\r\n\r\n // slides\r\n\r\n [MutationTypes.SET_THEME](state, themeProps: Partial) {\r\n state.theme = { ...state.theme, ...themeProps }\r\n },\r\n\r\n [MutationTypes.SET_VIEWPORT_RATIO](state, viewportRatio: number) {\r\n state.viewportRatio = viewportRatio\r\n },\r\n\r\n [MutationTypes.SET_SLIDES](state, slides: Slide[]) {\r\n state.slides = slides\r\n },\r\n\r\n [MutationTypes.ADD_SLIDE](state, slide: Slide | Slide[]) {\r\n const slides = Array.isArray(slide) ? slide : [slide]\r\n const addIndex = state.slideIndex + 1\r\n state.slides.splice(addIndex, 0, ...slides)\r\n state.slideIndex = addIndex\r\n },\r\n\r\n [MutationTypes.UPDATE_SLIDE](state, props: Partial) {\r\n const slideIndex = state.slideIndex\r\n state.slides[slideIndex] = { ...state.slides[slideIndex], ...props }\r\n },\r\n\r\n [MutationTypes.DELETE_SLIDE](state, slideId: string | string[]) {\r\n const slidesId = Array.isArray(slideId) ? slideId : [slideId]\r\n\r\n const deleteSlidesIndex = []\r\n for (let i = 0; i < slidesId.length; i++) {\r\n const index = state.slides.findIndex(item => item.id === slidesId[i])\r\n deleteSlidesIndex.push(index)\r\n }\r\n let newIndex = Math.min(...deleteSlidesIndex)\r\n\r\n const maxIndex = state.slides.length - slidesId.length - 1\r\n if (newIndex > maxIndex) newIndex = maxIndex\r\n\r\n state.slideIndex = newIndex\r\n state.slides = state.slides.filter(item => !slidesId.includes(item.id))\r\n },\r\n\r\n [MutationTypes.UPDATE_SLIDE_INDEX](state, index: number) {\r\n state.slideIndex = index\r\n },\r\n\r\n [MutationTypes.UPDATE_SELECTED_SLIDES_INDEX](state, selectedSlidesIndex: number[]) {\r\n state.selectedSlidesIndex = selectedSlidesIndex\r\n },\r\n\r\n [MutationTypes.ADD_ELEMENT](state, element: PPTElement | PPTElement[]) {\r\n const elements = Array.isArray(element) ? element : [element]\r\n const currentSlideEls = state.slides[state.slideIndex].elements\r\n const newEls = [...currentSlideEls, ...elements]\r\n state.slides[state.slideIndex].elements = newEls\r\n },\r\n\r\n [MutationTypes.UPDATE_ELEMENT](state, data: UpdateElementData) {\r\n const { id, props } = data\r\n const elIdList = typeof id === 'string' ? [id] : id\r\n\r\n const slideIndex = state.slideIndex\r\n const slide = state.slides[slideIndex]\r\n const elements = slide.elements.map(el => {\r\n return elIdList.includes(el.id) ? { ...el, ...props } : el\r\n })\r\n state.slides[slideIndex].elements = (elements as PPTElement[])\r\n },\r\n\r\n [MutationTypes.REMOVE_ELEMENT_PROPS](state, data: RemoveElementPropData) {\r\n const { id, propName } = data\r\n const propsNames = typeof propName === 'string' ? [propName] : propName\r\n\r\n const slideIndex = state.slideIndex\r\n const slide = state.slides[slideIndex]\r\n const elements = slide.elements.map(el => {\r\n return el.id === id ? omit(el, propsNames) : el\r\n })\r\n state.slides[slideIndex].elements = (elements as PPTElement[])\r\n },\r\n\r\n // snapshot\r\n\r\n [MutationTypes.SET_SNAPSHOT_CURSOR](state, cursor: number) {\r\n state.snapshotCursor = cursor\r\n },\r\n\r\n [MutationTypes.SET_SNAPSHOT_LENGTH](state, length: number) {\r\n state.snapshotLength = length\r\n },\r\n\r\n // keyboard\r\n\r\n [MutationTypes.SET_CTRL_KEY_STATE](state, isActive: boolean) {\r\n state.ctrlKeyState = isActive\r\n },\r\n [MutationTypes.SET_SHIFT_KEY_STATE](state, isActive: boolean) {\r\n state.shiftKeyState = isActive\r\n },\r\n\r\n // screen\r\n\r\n [MutationTypes.SET_SCREENING](state, screening) {\r\n state.screening = screening\r\n },\r\n}","import { InjectionKey } from 'vue'\r\nimport { createStore, Store, useStore as baseUseStore } from 'vuex'\r\nimport { state, State } from './state'\r\nimport { getters } from './getters'\r\nimport { actions } from './actions'\r\nimport { mutations } from './mutations'\r\nimport { MutationTypes, ActionTypes } from './constants'\r\n\r\nexport { MutationTypes, ActionTypes }\r\n\r\nexport const key: InjectionKey> = Symbol()\r\n\r\nexport const store = createStore({\r\n state,\r\n getters,\r\n mutations,\r\n actions,\r\n})\r\n\r\nexport const useStore = () => baseUseStore(key)","\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","import { ShapePoolItem } from '@/configs/shapes'\r\nimport { LinePoolItem } from '@/configs/lines'\r\n\r\nexport type ElementOrderCommand = 'up' | 'down' | 'top' | 'bottom'\r\n\r\nexport const enum ElementOrderCommands {\r\n UP = 'up',\r\n DOWN = 'down',\r\n TOP = 'top',\r\n BOTTOM = 'bottom',\r\n}\r\n\r\nexport type ElementAlignCommand = 'top'| 'bottom' | 'left' | 'right' | 'vertical' | 'horizontal' | 'center'\r\n\r\nexport const enum ElementAlignCommands {\r\n TOP = 'top',\r\n BOTTOM = 'bottom',\r\n LEFT = 'left',\r\n RIGHT = 'right',\r\n VERTICAL = 'vertical',\r\n HORIZONTAL = 'horizontal',\r\n CENTER = 'center',\r\n}\r\n\r\nexport type OperateBorderLine = 'top' | 'bottom' | 'left' | 'right'\r\n\r\nexport const enum OperateBorderLines {\r\n T = 'top',\r\n B = 'bottom',\r\n L = 'left',\r\n R = 'right',\r\n}\r\n\r\nexport type OperateResizeHandler = '' | 'left-top' | 'top' | 'right-top' | 'left' | 'right' | 'left-bottom' | 'bottom' | 'right-bottom'\r\n\r\nexport const enum OperateResizeHandlers {\r\n LEFT_TOP = 'left-top',\r\n TOP = 'top',\r\n RIGHT_TOP = 'right-top',\r\n LEFT = 'left',\r\n RIGHT = 'right',\r\n LEFT_BOTTOM = 'left-bottom',\r\n BOTTOM = 'bottom',\r\n RIGHT_BOTTOM = 'right-bottom',\r\n}\r\n\r\nexport type OperateLineHandler = 'start' | 'end' | 'mid'\r\n\r\nexport const enum OperateLineHandlers {\r\n START = 'start',\r\n END = 'end',\r\n MID = 'mid',\r\n}\r\n\r\nexport interface AlignmentLineAxis {\r\n x: number; \r\n y: number;\r\n}\r\n\r\nexport interface AlignmentLineProps {\r\n type: 'vertical' | 'horizontal';\r\n axis: AlignmentLineAxis;\r\n length: number;\r\n}\r\n\r\nexport interface MultiSelectRange {\r\n minX: number;\r\n maxX: number;\r\n minY: number;\r\n maxY: number;\r\n}\r\n\r\nexport type ImageClipDataRange = [[number, number], [number, number]]\r\n\r\nexport interface ImageClipData {\r\n range: ImageClipDataRange;\r\n path: string;\r\n}\r\n\r\nexport interface ImageClipedEmitData {\r\n range: ImageClipDataRange;\r\n position: {\r\n left: number;\r\n top: number;\r\n width: number;\r\n height: number;\r\n };\r\n}\r\n\r\nexport interface CreateElementSelectionData {\r\n start: [number, number];\r\n end: [number, number];\r\n}\r\n\r\nexport interface CreatingTextElement {\r\n type: 'text';\r\n}\r\nexport interface CreatingShapeElement {\r\n type: 'shape';\r\n data: ShapePoolItem;\r\n}\r\nexport interface CreatingLineElement {\r\n type: 'line';\r\n data: LinePoolItem;\r\n}\r\nexport type CreatingElement = CreatingTextElement | CreatingShapeElement | CreatingLineElement","export const enum KEYS {\r\n C = 'C',\r\n X = 'X',\r\n Z = 'Z',\r\n Y = 'Y',\r\n A = 'A',\r\n G = 'G',\r\n L = 'L',\r\n F = 'F',\r\n D = 'D',\r\n B = 'B',\r\n MINUS = '-',\r\n EQUAL = '=',\r\n DIGIT_0 = '0',\r\n DELETE = 'DELETE',\r\n UP = 'ARROWUP',\r\n DOWN = 'ARROWDOWN',\r\n LEFT = 'ARROWLEFT',\r\n RIGHT = 'ARROWRIGHT',\r\n ENTER = 'ENTER',\r\n SPACE = ' ',\r\n TAB = 'TAB',\r\n BACKSPACE = 'BACKSPACE',\r\n}\r\n\r\nexport const HOTKEY_DOC = [\r\n {\r\n type: '通用',\r\n children: [\r\n { label: '剪切', value: 'Ctrl + X' },\r\n { label: '复制', value: 'Ctrl + C' },\r\n { label: '粘贴', value: 'Ctrl + V' },\r\n { label: '快速复制粘贴', value: 'Ctrl + D' },\r\n { label: '全选', value: 'Ctrl + A' },\r\n { label: '撤销', value: 'Ctrl + Z' },\r\n { label: '恢复', value: 'Ctrl + Y' },\r\n { label: '删除', value: 'Delete / Backspace' },\r\n { label: '多选', value: '按住 Ctrl 或 Shift' },\r\n ],\r\n },\r\n {\r\n type: '幻灯片放映',\r\n children: [\r\n { label: '开始放映幻灯片', value: 'Ctrl + F' },\r\n { label: '切换上一页', value: '↑ / ←' },\r\n { label: '切换下一页', value: '↓ / → / Enter / Space' },\r\n { label: '退出放映', value: 'ESC' },\r\n ],\r\n },\r\n {\r\n type: '幻灯片编辑',\r\n children: [\r\n { label: '新建幻灯片', value: 'Enter' },\r\n { label: '缩放画布', value: 'Ctrl + 鼠标滚动' },\r\n { label: '放大画布', value: 'Ctrl + =' },\r\n { label: '缩小画布', value: 'Ctrl + -' },\r\n { label: '缩放画布到合适大小', value: 'Ctrl + 0' },\r\n { label: '编辑上一页', value: '↑ / ←' },\r\n { label: '编辑下一页', value: '↓ / →' },\r\n ],\r\n },\r\n {\r\n type: '元素操作',\r\n children: [\r\n { label: '移动', value: '↑ / ← / ↓ / →' },\r\n { label: '锁定', value: 'Ctrl + L' },\r\n { label: '组合', value: 'Ctrl + G' },\r\n { label: '取消组合', value: 'Ctrl + Shift + G' },\r\n { label: '置顶层', value: 'Alt + F' },\r\n { label: '置底层', value: 'Alt + B' },\r\n { label: '锁定宽高比例', value: '按住 Ctrl 或 Shift' },\r\n { label: '创建水平 / 垂直线条', value: '按住 Ctrl 或 Shift' },\r\n { label: '确认图片裁剪', value: 'Enter' },\r\n ],\r\n },\r\n {\r\n type: '表格编辑',\r\n children: [\r\n { label: '聚焦到下一个单元格', value: 'Tab' },\r\n { label: '在上方插入一行', value: 'Ctrl + ↑' },\r\n { label: '在下方插入一行', value: 'Ctrl + ↓' },\r\n { label: '在左侧插入一列', value: 'Ctrl + ←' },\r\n { label: '在右侧插入一列', value: 'Ctrl + →' },\r\n ],\r\n },\r\n {\r\n type: '文本编辑',\r\n children: [\r\n { label: '加粗', value: 'Ctrl + B' },\r\n { label: '斜体', value: 'Ctrl + I' },\r\n { label: '下划线', value: 'Ctrl + U' },\r\n { label: '删除线', value: 'Ctrl + D' },\r\n ],\r\n },\r\n]","import padStart from 'lodash/padStart'\r\n\r\n/**\r\n * 生成随机码\r\n * @param len 随机码长度\r\n */\r\nexport const createRandomCode = (len = 6) => {\r\n const charset = `_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`\r\n const maxLen = charset.length\r\n let ret = ''\r\n for (let i = 0; i < len; i++) {\r\n const randomIndex = Math.floor(Math.random() * maxLen)\r\n ret += charset[randomIndex]\r\n }\r\n return ret\r\n}\r\n\r\n/**\r\n * 补足数字位数\r\n * @param digit 数字\r\n * @param len 位数\r\n */\r\nexport const fillDigit = (digit: number, len: number) => {\r\n return padStart('' + digit, len, '0')\r\n}","import Clipboard from 'clipboard'\r\n\r\n/**\r\n * 复制文本到剪贴板\r\n * @param text 文本内容\r\n */\r\nexport const copyText = (text: string) => {\r\n return new Promise((resolve, reject) => {\r\n const fakeElement = document.createElement('button')\r\n const clipboard = new Clipboard(fakeElement, {\r\n text: () => text,\r\n action: () => 'copy',\r\n container: document.body,\r\n })\r\n clipboard.on('success', e => {\r\n clipboard.destroy()\r\n resolve(e)\r\n })\r\n clipboard.on('error', e => {\r\n clipboard.destroy()\r\n reject(e)\r\n })\r\n document.body.appendChild(fakeElement)\r\n fakeElement.click()\r\n document.body.removeChild(fakeElement)\r\n })\r\n}\r\n\r\n// 读取剪贴板\r\nexport const readClipboard = (): Promise => {\r\n return new Promise((resolve, reject) => {\r\n if (navigator.clipboard?.readText) {\r\n navigator.clipboard.readText().then(text => {\r\n if (!text) reject('剪贴板为空或者不包含文本')\r\n return resolve(text)\r\n })\r\n }\r\n else reject('浏览器不支持或禁止访问剪贴板,请使用快捷键 Ctrl + V')\r\n })\r\n}","import CryptoJS from 'crypto-js'\r\n\r\nconst CRYPTO_KEY = 'pptist'\r\n\r\n/**\r\n * 加密\r\n * @param msg 待加密字符串\r\n */\r\nexport const encrypt = (msg: string) => {\r\n return CryptoJS.AES.encrypt(msg, CRYPTO_KEY).toString()\r\n}\r\n\r\n/**\r\n * 解密\r\n * @param ciphertext 待解密字符串\r\n */\r\nexport const decrypt = (ciphertext: string) => {\r\n const bytes = CryptoJS.AES.decrypt(ciphertext, CRYPTO_KEY)\r\n return bytes.toString(CryptoJS.enc.Utf8)\r\n}","import debounce from 'lodash/debounce'\r\nimport throttle from 'lodash/throttle'\r\nimport { ActionTypes, useStore } from '@/store'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n\r\n // 添加历史快照(历史记录)\r\n const addHistorySnapshot = debounce(function() {\r\n store.dispatch(ActionTypes.ADD_SNAPSHOT)\r\n }, 300, { trailing: true })\r\n\r\n // 重做\r\n const redo = throttle(function() {\r\n store.dispatch(ActionTypes.RE_DO)\r\n }, 100, { leading: true, trailing: false })\r\n\r\n // 撤销\r\n const undo = throttle(function() {\r\n store.dispatch(ActionTypes.UN_DO)\r\n }, 100, { leading: true, trailing: false })\r\n\r\n return {\r\n addHistorySnapshot,\r\n redo,\r\n undo,\r\n }\r\n}","interface ImageSize {\r\n width: number;\r\n height: number;\r\n}\r\n\r\n/**\r\n * 获取图片的原始宽高\r\n * @param src 图片地址\r\n */\r\nexport const getImageSize = (src: string): Promise => {\r\n return new Promise(resolve => {\r\n const img = document.createElement('img')\r\n img.src = src\r\n img.style.opacity = '0'\r\n document.body.appendChild(img)\r\n\r\n img.onload = () => {\r\n const imgWidth = img.clientWidth\r\n const imgHeight = img.clientHeight\r\n \r\n img.onload = null\r\n img.onerror = null\r\n\r\n document.body.removeChild(img)\r\n\r\n resolve({ width: imgWidth, height: imgHeight })\r\n }\r\n\r\n img.onerror = () => {\r\n img.onload = null\r\n img.onerror = null\r\n }\r\n })\r\n}\r\n\r\n/**\r\n * 读取图片文件的dataURL\r\n * @param file 图片文件\r\n */\r\nexport const getImageDataURL = (file: File): Promise => {\r\n return new Promise(resolve => {\r\n const reader = new FileReader()\r\n reader.addEventListener('load', () => {\r\n resolve(reader.result as string)\r\n })\r\n reader.readAsDataURL(file)\r\n })\r\n}","export const VIEWPORT_SIZE = 1000","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { createRandomCode } from '@/utils/common'\r\nimport { getImageSize } from '@/utils/image'\r\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\r\nimport { PPTLineElement, ChartType, PPTElement, TableCell } from '@/types/slides'\r\nimport { ShapePoolItem } from '@/configs/shapes'\r\nimport { LinePoolItem } from '@/configs/lines'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\ninterface CommonElementPosition {\r\n top: number;\r\n left: number;\r\n width: number;\r\n height: number;\r\n}\r\n\r\ninterface LineElementPosition {\r\n top: number;\r\n left: number;\r\n start: [number, number];\r\n end: [number, number];\r\n}\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const themeColor = computed(() => store.state.theme.themeColor)\r\n const fontColor = computed(() => store.state.theme.fontColor)\r\n const viewportRatio = computed(() => store.state.viewportRatio)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 创建(插入)一个元素并将其设置为被选中元素\r\n const createElement = (element: PPTElement) => {\r\n store.commit(MutationTypes.ADD_ELEMENT, element)\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, [element.id])\r\n addHistorySnapshot()\r\n }\r\n\r\n /**\r\n * 创建图片元素\r\n * @param src 图片地址\r\n */\r\n const createImageElement = (src: string) => {\r\n getImageSize(src).then(({ width, height }) => {\r\n const scale = height / width\r\n \r\n if (scale < viewportRatio.value && width > VIEWPORT_SIZE) {\r\n width = VIEWPORT_SIZE\r\n height = width * scale\r\n }\r\n else if (height > VIEWPORT_SIZE * viewportRatio.value) {\r\n height = VIEWPORT_SIZE * viewportRatio.value\r\n width = height / scale\r\n }\r\n\r\n createElement({\r\n type: 'image',\r\n id: createRandomCode(),\r\n src,\r\n width,\r\n height,\r\n left: (VIEWPORT_SIZE - width) / 2,\r\n top: (VIEWPORT_SIZE * viewportRatio.value - height) / 2,\r\n fixedRatio: true,\r\n })\r\n })\r\n }\r\n \r\n /**\r\n * 创建图表元素\r\n * @param chartType 图表类型\r\n */\r\n const createChartElement = (chartType: ChartType) => {\r\n createElement({\r\n type: 'chart',\r\n id: createRandomCode(),\r\n chartType,\r\n left: 300,\r\n top: 81.25,\r\n width: 400,\r\n height: 400,\r\n themeColor: themeColor.value,\r\n gridColor: fontColor.value,\r\n data: {\r\n labels: ['类别1', '类别2', '类别3', '类别4', '类别5'],\r\n series: [\r\n [12, 19, 5, 2, 18],\r\n ],\r\n },\r\n })\r\n }\r\n \r\n /**\r\n * 创建表格元素\r\n * @param row 行数\r\n * @param col 列数\r\n */\r\n const createTableElement = (row: number, col: number) => {\r\n const rowCells: TableCell[] = new Array(col).fill({ id: createRandomCode(), colspan: 1, rowspan: 1, text: '' })\r\n const data: TableCell[][] = new Array(row).fill(rowCells)\r\n\r\n const DEFAULT_CELL_WIDTH = 100\r\n const DEFAULT_CELL_HEIGHT = 36\r\n\r\n const colWidths: number[] = new Array(col).fill(1 / col)\r\n\r\n const width = col * DEFAULT_CELL_WIDTH\r\n const height = row * DEFAULT_CELL_HEIGHT\r\n\r\n createElement({\r\n type: 'table',\r\n id: createRandomCode(),\r\n width,\r\n height,\r\n colWidths,\r\n data,\r\n left: (VIEWPORT_SIZE - width) / 2,\r\n top: (VIEWPORT_SIZE * viewportRatio.value - height) / 2,\r\n outline: {\r\n width: 2,\r\n style: 'solid',\r\n color: '#eeece1',\r\n },\r\n theme: {\r\n color: themeColor.value,\r\n rowHeader: true,\r\n rowFooter: false,\r\n colHeader: false,\r\n colFooter: false,\r\n },\r\n })\r\n }\r\n \r\n /**\r\n * 创建文本元素\r\n * @param position 位置大小信息\r\n * @param content 文本内容\r\n */\r\n const createTextElement = (position: CommonElementPosition, content = '请输入内容') => {\r\n const { left, top, width, height } = position\r\n createElement({\r\n type: 'text',\r\n id: createRandomCode(),\r\n left, \r\n top, \r\n width, \r\n height,\r\n content,\r\n })\r\n }\r\n \r\n /**\r\n * 创建形状元素\r\n * @param position 位置大小信息\r\n * @param data 形状路径信息\r\n */\r\n const createShapeElement = (position: CommonElementPosition, data: ShapePoolItem) => {\r\n const { left, top, width, height } = position\r\n createElement({\r\n type: 'shape',\r\n id: createRandomCode(),\r\n left, \r\n top, \r\n width, \r\n height,\r\n viewBox: data.viewBox,\r\n path: data.path,\r\n fill: themeColor.value,\r\n fixedRatio: false,\r\n })\r\n }\r\n \r\n /**\r\n * 创建线条元素\r\n * @param position 位置大小信息\r\n * @param data 线条的路径和样式\r\n */\r\n const createLineElement = (position: LineElementPosition, data: LinePoolItem) => {\r\n const { left, top, start, end } = position\r\n\r\n const newElement: PPTLineElement = {\r\n type: 'line',\r\n id: createRandomCode(),\r\n left, \r\n top, \r\n start,\r\n end,\r\n points: data.points,\r\n color: themeColor.value,\r\n style: data.style,\r\n width: 2,\r\n }\r\n if (data.isBroken) newElement.broken = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]\r\n if (data.isCurve) newElement.curve = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]\r\n createElement(newElement)\r\n }\r\n\r\n return {\r\n createImageElement,\r\n createChartElement,\r\n createTableElement,\r\n createTextElement,\r\n createShapeElement,\r\n createLineElement,\r\n }\r\n}","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { decrypt } from '@/utils/crypto'\r\nimport { PPTElement, Slide } from '@/types/slides'\r\nimport { createRandomCode } from '@/utils/common'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\nimport useCreateElement from '@/hooks/useCreateElement'\r\n\r\ninterface PasteTextClipboardDataOptions {\r\n onlySlide?: boolean;\r\n onlyElements?: boolean;\r\n}\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n const { createTextElement } = useCreateElement()\r\n\r\n /**\r\n * 粘贴元素(一组)\r\n * @param elements 元素列表数据\r\n */\r\n const pasteElement = (elements: PPTElement[]) => {\r\n const groupIdMap = {}\r\n const elIdMap = {}\r\n for (const element of elements) {\r\n const groupId = element.groupId\r\n if (groupId && !groupIdMap[groupId]) {\r\n groupIdMap[groupId] = createRandomCode()\r\n }\r\n elIdMap[element.id] = createRandomCode()\r\n }\r\n const currentSlideElementIdList = currentSlide.value.elements.map(el => el.id)\r\n \r\n for (const element of elements) {\r\n const inCurrentSlide = currentSlideElementIdList.includes(element.id)\r\n \r\n element.id = elIdMap[element.id]\r\n\r\n if (inCurrentSlide) {\r\n element.left = element.left + 10\r\n element.top = element.top + 10\r\n }\r\n\r\n if (element.groupId) element.groupId = groupIdMap[element.groupId]\r\n }\r\n store.commit(MutationTypes.ADD_ELEMENT, elements)\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, Object.values(elIdMap))\r\n addHistorySnapshot()\r\n }\r\n\r\n /**\r\n * 粘贴页面\r\n * @param slide 页面数据\r\n */\r\n const pasteSlides = (slides: Slide[]) => {\r\n const newSlides = slides.map(slide => ({\r\n ...slide,\r\n id: createRandomCode(8),\r\n }))\r\n store.commit(MutationTypes.ADD_SLIDE, newSlides)\r\n addHistorySnapshot()\r\n }\r\n\r\n /**\r\n * 粘贴普通文本:创建为新的文本元素\r\n * @param text 文本\r\n */\r\n const pasteText = (text: string) => {\r\n createTextElement({\r\n left: 0,\r\n top: 0,\r\n width: 600,\r\n height: 50,\r\n }, text)\r\n }\r\n\r\n /**\r\n * 解析剪贴板内容,根据解析结果选择合适的粘贴方式\r\n * @param text 剪贴板内容\r\n * @param options 配置项:onlySlide -- 仅处理页面粘贴;onlyElements -- 仅处理元素粘贴;\r\n */\r\n const pasteTextClipboardData = (text: string, options?: PasteTextClipboardDataOptions) => {\r\n const onlySlide = options?.onlySlide || false\r\n const onlyElements = options?.onlyElements || false\r\n\r\n let clipboardData\r\n try {\r\n clipboardData = JSON.parse(decrypt(text))\r\n }\r\n catch {\r\n clipboardData = text\r\n }\r\n\r\n // 元素或页面\r\n if (typeof clipboardData === 'object') {\r\n const { type, data } = clipboardData\r\n\r\n if (type === 'elements' && !onlySlide) pasteElement(data)\r\n else if (type === 'slides' && !onlyElements) pasteSlides(data)\r\n }\r\n\r\n // 普通文本\r\n else if (!onlyElements && !onlySlide) pasteText(clipboardData)\r\n }\r\n\r\n return {\r\n pasteTextClipboardData,\r\n }\r\n}","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { Slide } from '@/types/slides'\r\nimport { createRandomCode } from '@/utils/common'\r\nimport { copyText, readClipboard } from '@/utils/clipboard'\r\nimport { encrypt } from '@/utils/crypto'\r\nimport { KEYS } from '@/configs/hotkey'\r\nimport { message } from 'ant-design-vue'\r\nimport usePasteTextClipboardData from '@/hooks/usePasteTextClipboardData'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const slideIndex = computed(() => store.state.slideIndex)\r\n const theme = computed(() => store.state.theme)\r\n const slides = computed(() => store.state.slides)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const selectedSlidesIndex = computed(() => [...store.state.selectedSlidesIndex, slideIndex.value])\r\n const selectedSlides = computed(() => slides.value.filter((item, index) => selectedSlidesIndex.value.includes(index)))\r\n const selectedSlidesId = computed(() => selectedSlides.value.map(item => item.id))\r\n\r\n const { pasteTextClipboardData } = usePasteTextClipboardData()\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 重置幻灯片\r\n const resetSlides = () => {\r\n store.commit(MutationTypes.UPDATE_SLIDE_INDEX, 0)\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, [])\r\n store.commit(MutationTypes.SET_SLIDES, [{\r\n id: createRandomCode(8),\r\n elements: [],\r\n }])\r\n }\r\n\r\n /**\r\n * 移动页面焦点\r\n * @param command 移动页面焦点命令:上移、下移\r\n */\r\n const updateSlideIndex = (command: string) => {\r\n let targetIndex = 0\r\n if (command === KEYS.UP && slideIndex.value > 0) {\r\n targetIndex = slideIndex.value - 1\r\n }\r\n else if (command === KEYS.DOWN && slideIndex.value < slides.value.length - 1) {\r\n targetIndex = slideIndex.value + 1\r\n }\r\n store.commit(MutationTypes.UPDATE_SLIDE_INDEX, targetIndex)\r\n }\r\n\r\n // 将当前页面数据加密后复制到剪贴板\r\n const copySlide = () => {\r\n const text = encrypt(JSON.stringify({\r\n type: 'slides',\r\n data: selectedSlides.value,\r\n }))\r\n\r\n copyText(text).then(() => {\r\n store.commit(MutationTypes.SET_THUMBNAILS_FOCUS, true)\r\n })\r\n }\r\n\r\n // 尝试将剪贴板页面数据解密后添加到下一页(粘贴)\r\n const pasteSlide = () => {\r\n readClipboard().then(text => {\r\n pasteTextClipboardData(text, { onlySlide: true })\r\n }).catch(err => message.warning(err))\r\n }\r\n\r\n // 创建一页空白页并添加到下一页\r\n const createSlide = () => {\r\n const emptySlide = {\r\n id: createRandomCode(8),\r\n elements: [],\r\n background: {\r\n type: 'solid',\r\n color: theme.value.backgroundColor,\r\n },\r\n }\r\n store.commit(MutationTypes.ADD_SLIDE, emptySlide)\r\n addHistorySnapshot()\r\n }\r\n\r\n // 将当前页复制一份到下一页\r\n const copyAndPasteSlide = () => {\r\n store.commit(MutationTypes.ADD_SLIDE, {\r\n ...currentSlide.value,\r\n id: createRandomCode(8),\r\n })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 删除当前页,若将删除全部页面,则执行重置幻灯片操作\r\n const deleteSlide = (targetSlidesId = selectedSlidesId.value) => {\r\n if (slides.value.length === targetSlidesId.length) resetSlides()\r\n else store.commit(MutationTypes.DELETE_SLIDE, targetSlidesId)\r\n\r\n store.commit(MutationTypes.UPDATE_SELECTED_SLIDES_INDEX, [])\r\n\r\n addHistorySnapshot()\r\n }\r\n\r\n // 将当前页复制后删除(剪切)\r\n // 由于复制操作会导致多选状态消失,所以需要提前将需要删除的页面ID进行缓存\r\n const cutSlide = () => {\r\n const targetSlidesId = [...selectedSlidesId.value]\r\n copySlide()\r\n deleteSlide(targetSlidesId)\r\n }\r\n\r\n // 选中全部幻灯片\r\n const selectAllSlide = () => {\r\n const newSelectedSlidesIndex = Array.from(Array(slides.value.length), (item, index) => index)\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, [])\r\n store.commit(MutationTypes.UPDATE_SELECTED_SLIDES_INDEX, newSelectedSlidesIndex)\r\n }\r\n\r\n return {\r\n resetSlides,\r\n updateSlideIndex,\r\n copySlide,\r\n pasteSlide,\r\n createSlide,\r\n copyAndPasteSlide,\r\n deleteSlide,\r\n cutSlide,\r\n selectAllSlide,\r\n }\r\n}","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement, Slide } from '@/types/slides'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 锁定选中的元素,并清空选中元素状态\r\n const lockElement = () => {\r\n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\r\n \r\n for (const element of newElementList) {\r\n if (activeElementIdList.value.includes(element.id)) element.lock = true\r\n }\r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: newElementList })\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, [])\r\n addHistorySnapshot()\r\n }\r\n\r\n /**\r\n * 解除元素的锁定状态,并将其设置为当前选择元素\r\n * @param handleElement 需要解锁的元素\r\n */\r\n const unlockElement = (handleElement: PPTElement) => {\r\n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\r\n\r\n if (handleElement.groupId) {\r\n for (const element of newElementList) {\r\n if (element.groupId === handleElement.groupId) element.lock = false\r\n }\r\n return newElementList\r\n }\r\n \r\n for (const element of newElementList) {\r\n if (element.id === handleElement.id) {\r\n element.lock = false\r\n break\r\n }\r\n }\r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: newElementList })\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, [handleElement.id])\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n lockElement,\r\n unlockElement,\r\n }\r\n}","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { Slide } from '@/types/slides'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 删除全部选中元素\r\n const deleteElement = () => {\r\n if (!activeElementIdList.value.length) return\r\n const newElementList = currentSlide.value.elements.filter(el => !activeElementIdList.value.includes(el.id))\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, [])\r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: newElementList })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 删除内面内全部元素(无论是否选中)\r\n const deleteAllElements = () => {\r\n if (!currentSlide.value.elements.length) return\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, [])\r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: [] })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n deleteElement,\r\n deleteAllElements,\r\n }\r\n}","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement, Slide } from '@/types/slides'\r\nimport { createRandomCode } from '@/utils/common'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const activeElementList = computed(() => store.getters.activeElementList)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n const handleElementId = computed(() => store.state.handleElementId)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n /**\r\n * 组合当前选中的元素:给当前选中的元素赋予一个相同的分组ID\r\n */\r\n const combineElements = () => {\r\n if (!activeElementList.value.length) return\r\n\r\n // 生成一个新元素列表进行后续操作\r\n let newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\r\n\r\n // 生成分组ID\r\n const groupId = createRandomCode()\r\n\r\n // 收集需要组合的元素列表,并赋上唯一分组ID\r\n const combineElementList: PPTElement[] = []\r\n for (const element of newElementList) {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n element.groupId = groupId\r\n combineElementList.push(element)\r\n }\r\n }\r\n\r\n // 确保该组合内所有元素成员的层级是连续的,具体操作方法为:\r\n // 先获取到该组合内最上层元素的层级,将本次需要组合的元素从新元素列表中移除,\r\n // 再根据最上层元素的层级位置,将上面收集到的需要组合的元素列表一起插入到新元素列表中合适的位置\r\n const combineElementMaxLevel = newElementList.findIndex(_element => _element.id === combineElementList[combineElementList.length - 1].id)\r\n const combineElementIdList = combineElementList.map(_element => _element.id)\r\n newElementList = newElementList.filter(_element => !combineElementIdList.includes(_element.id))\r\n\r\n const insertLevel = combineElementMaxLevel - combineElementList.length + 1\r\n newElementList.splice(insertLevel, 0, ...combineElementList)\r\n\r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: newElementList })\r\n addHistorySnapshot()\r\n }\r\n\r\n /**\r\n * 取消组合元素:移除选中元素的分组ID\r\n */\r\n const uncombineElements = () => {\r\n if (!activeElementList.value.length) return\r\n const hasElementInGroup = activeElementList.value.some(item => item.groupId)\r\n if (!hasElementInGroup) return\r\n \r\n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\r\n for (const element of newElementList) {\r\n if (activeElementIdList.value.includes(element.id) && element.groupId) delete element.groupId\r\n }\r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: newElementList })\r\n\r\n // 取消组合后,需要重置激活元素状态\r\n // 默认重置为当前正在操作的元素,如果不存在则重置为空\r\n const handleElementIdList = handleElementId.value ? [handleElementId.value] : []\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, handleElementIdList)\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n combineElements,\r\n uncombineElements,\r\n }\r\n}","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement } from '@/types/slides'\r\nimport { copyText, readClipboard } from '@/utils/clipboard'\r\nimport { encrypt } from '@/utils/crypto'\r\nimport { message } from 'ant-design-vue'\r\nimport usePasteTextClipboardData from '@/hooks/usePasteTextClipboardData'\r\nimport useDeleteElement from './useDeleteElement'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const activeElementList = computed(() => store.getters.activeElementList)\r\n\r\n const { pasteTextClipboardData } = usePasteTextClipboardData()\r\n const { deleteElement } = useDeleteElement()\r\n\r\n // 将选中元素数据加密后复制到剪贴板\r\n const copyElement = () => {\r\n if (!activeElementIdList.value.length) return\r\n\r\n const text = encrypt(JSON.stringify({\r\n type: 'elements',\r\n data: activeElementList.value,\r\n }))\r\n\r\n copyText(text).then(() => {\r\n store.commit(MutationTypes.SET_EDITORAREA_FOCUS, true)\r\n })\r\n }\r\n\r\n // 将选中元素复制后删除(剪切)\r\n const cutElement = () => {\r\n copyElement()\r\n deleteElement()\r\n }\r\n\r\n // 尝试将剪贴板元素数据解密后进行粘贴\r\n const pasteElement = () => {\r\n readClipboard().then(text => {\r\n pasteTextClipboardData(text)\r\n }).catch(err => message.warning(err))\r\n }\r\n\r\n // 将选中元素复制后立刻粘贴\r\n const quickCopyElement = () => {\r\n copyElement()\r\n pasteElement()\r\n }\r\n\r\n return {\r\n copyElement,\r\n cutElement,\r\n pasteElement,\r\n quickCopyElement,\r\n }\r\n}","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { Slide } from '@/types/slides'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n // 将当前页面全部元素设置为被选择状态\r\n const selectAllElement = () => {\r\n const unlockedElements = currentSlide.value.elements.filter(el => !el.lock)\r\n const newActiveElementIdList = unlockedElements.map(el => el.id)\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, newActiveElementIdList)\r\n }\r\n\r\n return {\r\n selectAllElement,\r\n }\r\n}","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { Slide } from '@/types/slides'\r\nimport { KEYS } from '@/configs/hotkey'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\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 const newElementList = currentSlide.value.elements.map(el => {\r\n if (activeElementIdList.value.includes(el.id)) {\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 return el\r\n })\r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: newElementList })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n moveElement,\r\n }\r\n}","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement, Slide } from '@/types/slides'\r\nimport { ElementOrderCommand, ElementOrderCommands } from '@/types/edit'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n /**\r\n * 获取组合元素层级范围\r\n * @param elementList 本页所有元素列表\r\n * @param combineElementList 组合元素列表\r\n */\r\n const getCombineElementLevelRange = (elementList: PPTElement[], combineElementList: PPTElement[]) => {\r\n return {\r\n minLevel: elementList.findIndex(_element => _element.id === combineElementList[0].id),\r\n maxLevel: elementList.findIndex(_element => _element.id === combineElementList[combineElementList.length - 1].id),\r\n }\r\n }\r\n\r\n /**\r\n * 上移一层\r\n * @param elementList 本页所有元素列表\r\n * @param element 当前操作的元素\r\n */\r\n const moveUpElement = (elementList: PPTElement[], element: PPTElement) => {\r\n const copyOfElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList))\r\n\r\n // 如果被操作的元素是组合元素成员,需要将该组合全部成员一起进行移动\r\n if (element.groupId) {\r\n\r\n // 获取到该组合全部成员,以及所有成员的层级范围\r\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === element.groupId)\r\n const { minLevel, maxLevel } = getCombineElementLevelRange(elementList, combineElementList)\r\n\r\n // 已经处在顶层,无法继续移动\r\n if (maxLevel === elementList.length - 1) return\r\n\r\n // 通过组合成员范围的最大值,获取到该组合上一层的元素,然后将该组合元素从元素列表中移除(并缓存被移除的元素列表)\r\n // 若上层元素处在另一个组合中,则将上述被移除的组合元素插入到该上层组合上方\r\n // 若上层元素不处于任何分组中,则将上述被移除的组合元素插入到该上层元素上方\r\n const nextElement = copyOfElementList[maxLevel + 1]\r\n const movedElementList = copyOfElementList.splice(minLevel, combineElementList.length)\r\n\r\n if (nextElement.groupId) {\r\n const nextCombineElementList = copyOfElementList.filter(_element => _element.groupId === nextElement.groupId)\r\n copyOfElementList.splice(minLevel + nextCombineElementList.length, 0, ...movedElementList)\r\n }\r\n else copyOfElementList.splice(minLevel + 1, 0, ...movedElementList)\r\n }\r\n\r\n // 如果被操作的元素不是组合元素成员\r\n else {\r\n\r\n // 获取该元素在列表中的层级\r\n const level = elementList.findIndex(item => item.id === element.id)\r\n\r\n // 已经处在顶层,无法继续移动\r\n if (level === elementList.length - 1) return\r\n\r\n // 获取到该组合上一层的元素,然后将该组合元素从元素列表中移除(并缓存被移除的元素列表)\r\n const nextElement = copyOfElementList[level + 1]\r\n const movedElement = copyOfElementList.splice(level, 1)[0]\r\n\r\n // 通过组合成员范围的最大值,获取到该组合上一层的元素,然后将该组合元素从元素列表中移除(并缓存被移除的元素列表)\r\n // 若上层元素处在另一个组合中,则将上述被移除的组合元素插入到该上层组合上方\r\n // 若上层元素不处于任何分组中,则将上述被移除的组合元素插入到该上层元素上方\r\n if (nextElement.groupId) {\r\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === nextElement.groupId)\r\n copyOfElementList.splice(level + combineElementList.length, 0, movedElement)\r\n }\r\n else copyOfElementList.splice(level + 1, 0, movedElement)\r\n }\r\n\r\n return copyOfElementList\r\n }\r\n\r\n /**\r\n * 下移一层,操作方式同上移\r\n * @param elementList 本页所有元素列表\r\n * @param element 当前操作的元素\r\n */\r\n const moveDownElement = (elementList: PPTElement[], element: PPTElement) => {\r\n const copyOfElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList))\r\n\r\n if (element.groupId) {\r\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === element.groupId)\r\n const { minLevel } = getCombineElementLevelRange(elementList, combineElementList)\r\n if (minLevel === 0) return\r\n\r\n const prevElement = copyOfElementList[minLevel - 1]\r\n const movedElementList = copyOfElementList.splice(minLevel, combineElementList.length)\r\n\r\n if (prevElement.groupId) {\r\n const prevCombineElementList = copyOfElementList.filter(_element => _element.groupId === prevElement.groupId)\r\n copyOfElementList.splice(minLevel - prevCombineElementList.length, 0, ...movedElementList)\r\n }\r\n else copyOfElementList.splice(minLevel - 1, 0, ...movedElementList)\r\n }\r\n\r\n else {\r\n const level = elementList.findIndex(item => item.id === element.id)\r\n if (level === 0) return\r\n\r\n const prevElement = copyOfElementList[level - 1]\r\n const movedElement = copyOfElementList.splice(level, 1)[0]\r\n\r\n if (prevElement.groupId) {\r\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === prevElement.groupId)\r\n copyOfElementList.splice(level - combineElementList.length, 0, movedElement)\r\n }\r\n else copyOfElementList.splice(level - 1, 0, movedElement)\r\n }\r\n\r\n return copyOfElementList\r\n }\r\n\r\n /**\r\n * 置顶层\r\n * @param elementList 本页所有元素列表\r\n * @param element 当前操作的元素\r\n */\r\n const moveTopElement = (elementList: PPTElement[], element: PPTElement) => {\r\n const copyOfElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList))\r\n\r\n // 如果被操作的元素是组合元素成员,需要将该组合全部成员一起进行移动\r\n if (element.groupId) {\r\n\r\n // 获取到该组合全部成员,以及所有成员的层级范围\r\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === element.groupId)\r\n const { minLevel, maxLevel } = getCombineElementLevelRange(elementList, combineElementList)\r\n\r\n // 已经处在顶层,无法继续移动\r\n if (maxLevel === elementList.length - 1) return null\r\n\r\n // 将该组合元素从元素列表中移除,然后将被移除的元素添加到元素列表顶部\r\n const movedElementList = copyOfElementList.splice(minLevel, combineElementList.length)\r\n copyOfElementList.push(...movedElementList)\r\n }\r\n\r\n // 如果被操作的元素不是组合元素成员\r\n else {\r\n\r\n // 获取该元素在列表中的层级\r\n const level = elementList.findIndex(item => item.id === element.id)\r\n\r\n // 已经处在顶层,无法继续移动\r\n if (level === elementList.length - 1) return null\r\n\r\n // 将该组合元素从元素列表中移除,然后将被移除的元素添加到元素列表底部\r\n copyOfElementList.splice(level, 1)\r\n copyOfElementList.push(element)\r\n }\r\n\r\n return copyOfElementList\r\n }\r\n\r\n /**\r\n * 置底层,操作方式同置顶\r\n * @param elementList 本页所有元素列表\r\n * @param element 当前操作的元素\r\n */\r\n const moveBottomElement = (elementList: PPTElement[], element: PPTElement) => {\r\n const copyOfElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList))\r\n\r\n if (element.groupId) {\r\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === element.groupId)\r\n const { minLevel } = getCombineElementLevelRange(elementList, combineElementList)\r\n if (minLevel === 0) return\r\n\r\n const movedElementList = copyOfElementList.splice(minLevel, combineElementList.length)\r\n copyOfElementList.unshift(...movedElementList)\r\n }\r\n\r\n else {\r\n const level = elementList.findIndex(item => item.id === element.id)\r\n if (level === 0) return\r\n\r\n copyOfElementList.splice(level, 1)\r\n copyOfElementList.unshift(element)\r\n }\r\n\r\n return copyOfElementList\r\n }\r\n\r\n /**\r\n * 调整元素层级\r\n * @param element 需要调整层级的元素\r\n * @param command 调整命令:上移、下移、置顶、置底\r\n */\r\n const orderElement = (element: PPTElement, command: ElementOrderCommand) => {\r\n let newElementList\r\n \r\n if (command === ElementOrderCommands.UP) newElementList = moveUpElement(currentSlide.value.elements, element)\r\n else if (command === ElementOrderCommands.DOWN) newElementList = moveDownElement(currentSlide.value.elements, element)\r\n else if (command === ElementOrderCommands.TOP) newElementList = moveTopElement(currentSlide.value.elements, element)\r\n else if (command === ElementOrderCommands.BOTTOM) newElementList = moveBottomElement(currentSlide.value.elements, element)\r\n\r\n if (!newElementList) return\r\n\r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: newElementList })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n orderElement,\r\n }\r\n}","// 进入全屏\r\nexport const enterFullscreen = () => {\r\n const docElm = document.documentElement\r\n if (docElm.requestFullscreen) docElm.requestFullscreen() \r\n else if (docElm.mozRequestFullScreen) docElm.mozRequestFullScreen() \r\n else if (docElm.webkitRequestFullScreen) docElm.webkitRequestFullScreen()\r\n}\r\n\r\n// 退出全屏\r\nexport const exitFullscreen = () => {\r\n if (document.exitFullscreen) document.exitFullscreen()\r\n else if (document.mozCancelFullScreen) document.mozCancelFullScreen()\r\n else if (document.webkitCancelFullScreen) document.webkitCancelFullScreen()\r\n}\r\n\r\n// 判断是否全屏\r\nexport const isFullscreen = () => (\r\n document.mozFullScreen || \r\n document.webkitIsFullScreen || \r\n document.webkitFullScreen\r\n)","import { MutationTypes, useStore } from '@/store'\r\nimport { enterFullscreen, exitFullscreen, isFullscreen } from '@/utils/fullscreen'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n\r\n // 进入放映状态(从当前页开始)\r\n const enterScreening = () => {\r\n enterFullscreen()\r\n store.commit(MutationTypes.SET_SCREENING, true)\r\n }\r\n\r\n // 进入放映状态(从第一页开始)\r\n const enterScreeningFromStart = () => {\r\n store.commit(MutationTypes.UPDATE_SLIDE_INDEX, 0)\r\n enterScreening()\r\n }\r\n\r\n // 退出放映状态\r\n const exitScreening = () => {\r\n store.commit(MutationTypes.SET_SCREENING, false)\r\n if (isFullscreen()) exitFullscreen()\r\n }\r\n\r\n return {\r\n enterScreening,\r\n enterScreeningFromStart,\r\n exitScreening,\r\n }\r\n}","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const canvasPercentage = computed(() => store.state.canvasPercentage)\r\n\r\n /**\r\n * 缩放画布百分比\r\n * @param command 缩放命令:放大、缩小\r\n */\r\n const scaleCanvas = (command: '+' | '-') => {\r\n let percentage = canvasPercentage.value\r\n const step = 5\r\n const max = 120\r\n const min = 60\r\n if (command === '+' && percentage <= max) percentage += step\r\n if (command === '-' && percentage >= min) percentage -= step\r\n \r\n store.commit(MutationTypes.SET_CANVAS_PERCENTAGE, percentage)\r\n }\r\n\r\n /**\r\n * 设置画笔百分比\r\n * @param percentage 百分比(小数形式,如0.8)\r\n */\r\n const setCanvasPercentage = (percentage: number) => {\r\n store.commit(MutationTypes.SET_CANVAS_PERCENTAGE, percentage)\r\n }\r\n \r\n return {\r\n scaleCanvas,\r\n setCanvasPercentage,\r\n }\r\n}","import { computed, onMounted, onUnmounted } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { ElementOrderCommand, ElementOrderCommands } from '@/types/edit'\r\nimport { PPTElement } from '@/types/slides'\r\nimport { KEYS } from '@/configs/hotkey'\r\n\r\nimport useSlideHandler from './useSlideHandler'\r\nimport useLockElement from './useLockElement'\r\nimport useDeleteElement from './useDeleteElement'\r\nimport useCombineElement from './useCombineElement'\r\nimport useCopyAndPasteElement from './useCopyAndPasteElement'\r\nimport useSelectAllElement from './useSelectAllElement'\r\nimport useMoveElement from './useMoveElement'\r\nimport useOrderElement from './useOrderElement'\r\nimport useHistorySnapshot from './useHistorySnapshot'\r\nimport useScreening from './useScreening'\r\nimport useScaleCanvas from './useScaleCanvas'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n\r\n const ctrlKeyActive = computed(() => store.state.ctrlKeyState)\r\n const shiftKeyActive = computed(() => store.state.shiftKeyState)\r\n const disableHotkeys = computed(() => store.state.disableHotkeys)\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const handleElement = computed(() => store.getters.handleElement)\r\n\r\n const editorAreaFocus = computed(() => store.state.editorAreaFocus)\r\n const thumbnailsFocus = computed(() => store.state.thumbnailsFocus)\r\n\r\n const {\r\n updateSlideIndex,\r\n copySlide,\r\n createSlide,\r\n deleteSlide,\r\n cutSlide,\r\n copyAndPasteSlide,\r\n selectAllSlide,\r\n } = useSlideHandler()\r\n\r\n const { combineElements, uncombineElements } = useCombineElement()\r\n const { deleteElement } = useDeleteElement()\r\n const { lockElement } = useLockElement()\r\n const { copyElement, cutElement, quickCopyElement } = useCopyAndPasteElement()\r\n const { selectAllElement } = useSelectAllElement()\r\n const { moveElement } = useMoveElement()\r\n const { orderElement } = useOrderElement()\r\n const { redo, undo } = useHistorySnapshot()\r\n const { enterScreening } = useScreening()\r\n const { scaleCanvas, setCanvasPercentage } = useScaleCanvas()\r\n\r\n const copy = () => {\r\n if (activeElementIdList.value.length) copyElement()\r\n else if (thumbnailsFocus.value) copySlide()\r\n }\r\n\r\n const cut = () => {\r\n if (activeElementIdList.value.length) cutElement()\r\n else if (thumbnailsFocus.value) cutSlide()\r\n }\r\n\r\n const quickCopy = () => {\r\n if (activeElementIdList.value.length) quickCopyElement()\r\n else if (thumbnailsFocus.value) copyAndPasteSlide()\r\n }\r\n\r\n const selectAll = () => {\r\n if (editorAreaFocus.value) selectAllElement()\r\n if (thumbnailsFocus.value) selectAllSlide()\r\n }\r\n\r\n const lock = () => {\r\n if (!editorAreaFocus.value) return\r\n lockElement()\r\n }\r\n const combine = () => {\r\n if (!editorAreaFocus.value) return\r\n combineElements()\r\n }\r\n\r\n const uncombine = () => {\r\n if (!editorAreaFocus.value) return\r\n uncombineElements()\r\n }\r\n\r\n const remove = () => {\r\n if (activeElementIdList.value.length) deleteElement()\r\n else if (thumbnailsFocus.value) deleteSlide()\r\n }\r\n\r\n const move = (key: string) => {\r\n if (activeElementIdList.value.length) moveElement(key)\r\n else if (key === KEYS.UP || key === KEYS.DOWN) updateSlideIndex(key)\r\n }\r\n\r\n const order = (command: ElementOrderCommand) => {\r\n if (!handleElement.value) return\r\n orderElement(handleElement.value, command)\r\n }\r\n\r\n const create = () => {\r\n if (!thumbnailsFocus.value) return\r\n createSlide()\r\n }\r\n\r\n const keydownListener = (e: KeyboardEvent) => {\r\n const { ctrlKey, shiftKey, altKey, metaKey } = e\r\n\r\n const key = e.key.toUpperCase()\r\n\r\n if (ctrlKey && !ctrlKeyActive.value) store.commit(MutationTypes.SET_CTRL_KEY_STATE, true)\r\n if (shiftKey && !shiftKeyActive.value) store.commit(MutationTypes.SET_SHIFT_KEY_STATE, true)\r\n\r\n if (ctrlKey && key === KEYS.F) {\r\n e.preventDefault()\r\n enterScreening()\r\n store.commit(MutationTypes.SET_CTRL_KEY_STATE, false)\r\n }\r\n \r\n if (!editorAreaFocus.value && !thumbnailsFocus.value) return \r\n\r\n if ((ctrlKey || metaKey) && key === KEYS.C) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n copy()\r\n }\r\n if (ctrlKey && key === KEYS.X) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n cut()\r\n }\r\n if (ctrlKey && key === KEYS.D) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n quickCopy()\r\n }\r\n if (ctrlKey && key === KEYS.Z) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n undo()\r\n }\r\n if (ctrlKey && key === KEYS.Y) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n redo()\r\n }\r\n if (ctrlKey && key === KEYS.A) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n selectAll()\r\n }\r\n if (ctrlKey && key === KEYS.L) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n lock()\r\n }\r\n if (!shiftKey && ctrlKey && key === KEYS.G) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n combine()\r\n }\r\n if (shiftKey && ctrlKey && key === KEYS.G) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n uncombine()\r\n }\r\n if (altKey && key === KEYS.F) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n order(ElementOrderCommands.TOP)\r\n }\r\n if (altKey && key === KEYS.B) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n order(ElementOrderCommands.BOTTOM)\r\n }\r\n if (key === KEYS.DELETE || key === KEYS.BACKSPACE) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n remove()\r\n }\r\n if (key === KEYS.UP) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n move(KEYS.UP)\r\n }\r\n if (key === KEYS.DOWN) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n move(KEYS.DOWN)\r\n }\r\n if (key === KEYS.LEFT) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n move(KEYS.LEFT)\r\n }\r\n if (key === KEYS.RIGHT) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n move(KEYS.RIGHT)\r\n }\r\n if (key === KEYS.ENTER) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n create()\r\n }\r\n if (key === KEYS.MINUS) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n scaleCanvas('-')\r\n }\r\n if (key === KEYS.EQUAL) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n scaleCanvas('+')\r\n }\r\n if (key === KEYS.DIGIT_0) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n setCanvasPercentage(90)\r\n }\r\n }\r\n \r\n const keyupListener = () => {\r\n if (ctrlKeyActive.value) store.commit(MutationTypes.SET_CTRL_KEY_STATE, false)\r\n if (shiftKeyActive.value) store.commit(MutationTypes.SET_SHIFT_KEY_STATE, false)\r\n }\r\n\r\n onMounted(() => {\r\n document.addEventListener('keydown', keydownListener)\r\n document.addEventListener('keyup', keyupListener)\r\n window.addEventListener('blur', keyupListener)\r\n })\r\n onUnmounted(() => {\r\n document.removeEventListener('keydown', keydownListener)\r\n document.removeEventListener('keyup', keyupListener)\r\n window.removeEventListener('blur', keyupListener)\r\n })\r\n}","import { computed, onMounted, onUnmounted } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { getImageDataURL } from '@/utils/image'\r\nimport usePasteTextClipboardData from './usePasteTextClipboardData'\r\nimport useCreateElement from './useCreateElement'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const editorAreaFocus = computed(() => store.state.editorAreaFocus)\r\n const thumbnailsFocus = computed(() => store.state.thumbnailsFocus)\r\n const disableHotkeys = computed(() => store.state.disableHotkeys)\r\n\r\n const { pasteTextClipboardData } = usePasteTextClipboardData()\r\n const { createImageElement } = useCreateElement()\r\n\r\n // 粘贴图片到幻灯片元素\r\n const pasteImageFile = (imageFile: File) => {\r\n getImageDataURL(imageFile).then(dataURL => createImageElement(dataURL))\r\n }\r\n\r\n /**\r\n * 粘贴事件监听\r\n * @param e ClipboardEvent\r\n */\r\n const pasteListener = (e: ClipboardEvent) => {\r\n if (!editorAreaFocus.value && !thumbnailsFocus.value) return\r\n if (disableHotkeys.value) return\r\n\r\n if (!e.clipboardData) return\r\n\r\n const clipboardDataItems = e.clipboardData.items\r\n const clipboardDataFirstItem = clipboardDataItems[0]\r\n\r\n if (!clipboardDataFirstItem) return\r\n\r\n // 如果剪贴板内有图片,优先尝试读取图片\r\n for (const item of clipboardDataItems) {\r\n if (item.kind === 'file' && item.type.indexOf('image') !== -1) {\r\n const imageFile = item.getAsFile()\r\n if (imageFile) pasteImageFile(imageFile)\r\n return\r\n }\r\n }\r\n \r\n // 如果剪贴板内没有图片,但有文字内容,尝试解析文字内容\r\n if (clipboardDataFirstItem.kind === 'string' && clipboardDataFirstItem.type === 'text/plain') {\r\n clipboardDataFirstItem.getAsString(text => pasteTextClipboardData(text))\r\n }\r\n }\r\n\r\n onMounted(() => {\r\n document.addEventListener('paste', pasteListener)\r\n })\r\n onUnmounted(() => {\r\n document.removeEventListener('paste', pasteListener)\r\n })\r\n}","\r\n \r\n\r\n\r\n\r\n\r\n","\r\n \r\n
\r\n {{item.type}}
\r\n \r\n
{{hotkey.label}}
\r\n
{{hotkey.value}}
\r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n","import { render } from \"./HotkeyDoc.vue?vue&type=template&id=47d0351b&scoped=true\"\nimport script from \"./HotkeyDoc.vue?vue&type=script&lang=js\"\nexport * from \"./HotkeyDoc.vue?vue&type=script&lang=js\"\n\nimport \"./HotkeyDoc.vue?vue&type=style&index=0&id=47d0351b&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-47d0351b\"\n\nexport default script","\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
正在导出,请稍等...
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","import { IBarChartOptions, ILineChartOptions, IPieChartOptions } from 'chartist'\r\n\r\nexport interface PPTElementShadow {\r\n h: number;\r\n v: number;\r\n blur: number;\r\n color: string;\r\n}\r\n\r\nexport const enum ElementTypes {\r\n TEXT = 'text',\r\n IMAGE = 'image',\r\n SHAPE = 'shape',\r\n LINE = 'line',\r\n CHART = 'chart',\r\n TABLE = 'table',\r\n}\r\n\r\nexport interface PPTElementOutline {\r\n style?: 'dashed' | 'solid';\r\n width?: number;\r\n color?: string;\r\n}\r\n\r\ninterface PPTBaseElement {\r\n id: string;\r\n left: number;\r\n top: number;\r\n lock?: boolean;\r\n groupId?: string;\r\n width: number;\r\n height: number;\r\n}\r\n\r\nexport interface PPTTextElement extends PPTBaseElement{\r\n type: 'text';\r\n content: string;\r\n rotate?: number;\r\n outline?: PPTElementOutline;\r\n fill?: string;\r\n lineHeight?: number;\r\n wordSpace?: number;\r\n opacity?: number;\r\n shadow?: PPTElementShadow;\r\n}\r\n\r\nexport interface ImageOrShapeFlip {\r\n x?: number;\r\n y?: number;\r\n}\r\nexport interface ImageElementFilters {\r\n 'blur'?: string;\r\n 'brightness'?: string;\r\n 'contrast'?: string;\r\n 'grayscale'?: string;\r\n 'saturate'?: string;\r\n 'hue-rotate'?: string;\r\n 'opacity'?: string;\r\n}\r\nexport interface ImageElementClip {\r\n range: [[number, number], [number, number]];\r\n shape: string;\r\n}\r\nexport interface PPTImageElement extends PPTBaseElement{\r\n type: 'image';\r\n fixedRatio: boolean;\r\n src: string;\r\n rotate?: number;\r\n outline?: PPTElementOutline;\r\n filters?: ImageElementFilters;\r\n clip?: ImageElementClip;\r\n flip?: ImageOrShapeFlip;\r\n shadow?: PPTElementShadow;\r\n}\r\n\r\nexport interface ShapeGradient {\r\n type: 'linear' | 'radial';\r\n color: [string, string];\r\n rotate: number;\r\n}\r\nexport interface PPTShapeElement extends PPTBaseElement{\r\n type: 'shape';\r\n viewBox: number;\r\n path: string;\r\n fixedRatio: boolean;\r\n fill: string;\r\n gradient?: ShapeGradient;\r\n rotate?: number;\r\n outline?: PPTElementOutline;\r\n opacity?: number;\r\n flip?: ImageOrShapeFlip;\r\n shadow?: PPTElementShadow;\r\n}\r\n\r\nexport interface PPTLineElement extends Omit{\r\n type: 'line';\r\n start: [number, number];\r\n end: [number, number];\r\n style: string;\r\n color: string;\r\n points: [string, string];\r\n shadow?: PPTElementShadow;\r\n broken?: [number, number];\r\n curve?: [number, number];\r\n}\r\n\r\nexport type ChartType = 'bar' | 'line' | 'pie'\r\nexport interface ChartData {\r\n labels: string[];\r\n series: number[][];\r\n}\r\nexport interface PPTChartElement extends PPTBaseElement{\r\n type: 'chart';\r\n fill?: string;\r\n chartType: ChartType;\r\n data: ChartData;\r\n options?: ILineChartOptions & IBarChartOptions & IPieChartOptions;\r\n outline?: PPTElementOutline;\r\n themeColor: string;\r\n gridColor?: string;\r\n}\r\n\r\nexport interface TableCellStyle {\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?: string;\r\n}\r\nexport interface TableCell {\r\n id: string;\r\n colspan: number;\r\n rowspan: number;\r\n text: string;\r\n style?: TableCellStyle;\r\n}\r\nexport interface TableTheme {\r\n color: string;\r\n rowHeader: boolean;\r\n rowFooter: boolean;\r\n colHeader: boolean;\r\n colFooter: boolean;\r\n} \r\nexport interface PPTTableElement extends PPTBaseElement{\r\n type: 'table';\r\n outline: PPTElementOutline;\r\n theme?: TableTheme;\r\n colWidths: number[];\r\n data: TableCell[][];\r\n}\r\n\r\nexport type PPTElement = PPTTextElement | PPTImageElement | PPTShapeElement | PPTLineElement | PPTChartElement | PPTTableElement\r\n\r\nexport interface PPTAnimation {\r\n elId: string;\r\n type: string;\r\n duration: number;\r\n}\r\n\r\nexport interface SlideBackground {\r\n type: 'solid' | 'image' | 'gradient';\r\n color?: string;\r\n image?: string;\r\n imageSize?: 'cover' | 'contain' | 'repeat' | 'initial';\r\n gradientType?: 'linear' | 'radial';\r\n gradientColor?: [string, string];\r\n gradientRotate?: number;\r\n}\r\n\r\nexport interface Slide {\r\n id: string;\r\n elements: PPTElement[];\r\n remark?: string;\r\n background?: SlideBackground;\r\n animations?: PPTAnimation[];\r\n turningMode?: 'no' | 'fade' | 'slideX' | 'slideY';\r\n}\r\n\r\nexport interface SlideTheme {\r\n backgroundColor: string;\r\n themeColor: string;\r\n fontColor: string;\r\n fontName: string;\r\n}","\r\n \r\n\r\n\r\n\r\n\r\n","import { Ref, computed } from 'vue'\r\nimport { SlideBackground } from '@/types/slides'\r\n\r\n// 将页面背景数据转换为css样式\r\nexport default (background: Ref) => {\r\n const backgroundStyle = computed(() => {\r\n if (!background.value) return { backgroundColor: '#fff' }\r\n\r\n const {\r\n type,\r\n color,\r\n image,\r\n imageSize,\r\n gradientColor,\r\n gradientRotate,\r\n gradientType,\r\n } = background.value\r\n\r\n // 纯色背景\r\n if (type === 'solid') return { backgroundColor: color }\r\n\r\n // 背景图模式\r\n // 包括:背景图、背景大小,是否重复\r\n else if (type === 'image') {\r\n if (!image) return { backgroundColor: '#fff' }\r\n if (imageSize === 'repeat') {\r\n return {\r\n backgroundImage: `url(${image}`,\r\n backgroundRepeat: 'repeat',\r\n backgroundSize: 'initial',\r\n }\r\n }\r\n return {\r\n backgroundImage: `url(${image}`,\r\n backgroundRepeat: 'no-repeat',\r\n backgroundSize: imageSize || 'cover',\r\n }\r\n }\r\n\r\n // 渐变色背景\r\n else if (type === 'gradient') {\r\n const rotate = gradientRotate || 0\r\n const color1 = gradientColor ? gradientColor[0] : '#fff'\r\n const color2 = gradientColor ? gradientColor[1] : '#fff'\r\n \r\n if (gradientType === 'radial') return { backgroundImage: `radial-gradient(${color1}, ${color2}` }\r\n return { backgroundImage: `linear-gradient(${rotate}deg, ${color1}, ${color2}` }\r\n }\r\n\r\n return { backgroundColor: '#fff' }\r\n })\r\n\r\n return {\r\n backgroundStyle,\r\n }\r\n}","\r\n \r\n \r\n
\r\n\r\n\r\n","export const enum ClipPathTypes {\r\n RECT = 'rect',\r\n ELLIPSE = 'ellipse',\r\n POLYGON = 'polygon',\r\n}\r\n\r\nexport const enum ClipPaths {\r\n RECT = 'rect',\r\n ROUNDRECT = 'roundRect',\r\n ELLIPSE = 'ellipse',\r\n TRIANGLE = 'triangle',\r\n PENTAGON = 'pentagon',\r\n RHOMBUS = 'rhombus',\r\n STAR = 'star',\r\n}\r\n\r\nexport const CLIPPATHS = {\r\n rect: {\r\n name: '矩形',\r\n type: ClipPathTypes.RECT,\r\n radius: '0',\r\n style: '',\r\n },\r\n rect2: {\r\n name: '矩形2',\r\n type: ClipPathTypes.POLYGON,\r\n style: 'polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 0 100%)',\r\n createPath: (width: number, height: number) => {\r\n return `M 0 0 L ${width * 0.8} 0 L ${width} ${height * 0.2} L ${width} ${height} L 0 ${height} Z`\r\n },\r\n },\r\n rect3: {\r\n name: '矩形3',\r\n type: ClipPathTypes.POLYGON,\r\n style: 'polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 20% 100%, 0% 80%)',\r\n createPath: (width: number, height: number) => {\r\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`\r\n },\r\n },\r\n roundRect: {\r\n name: '圆角矩形',\r\n type: ClipPathTypes.RECT,\r\n radius: '10%',\r\n style: 'inset(0 0 0 0 round 10% 10% 10% 10%)',\r\n },\r\n ellipse: {\r\n name: '圆形',\r\n type: ClipPathTypes.ELLIPSE,\r\n style: 'ellipse(50% 50% at 50% 50%)',\r\n },\r\n triangle: {\r\n name: '三角形',\r\n type: ClipPathTypes.POLYGON,\r\n style: 'polygon(50% 0%, 0% 100%, 100% 100%)',\r\n createPath: (width: number, height: number) => {\r\n return `M ${width * 0.5} 0 L 0 ${height} L ${width} ${height} Z`\r\n },\r\n },\r\n triangle2: {\r\n name: '三角形2',\r\n type: ClipPathTypes.POLYGON,\r\n style: 'polygon(50% 100%, 0% 0%, 100% 0%)',\r\n createPath: (width: number, height: number) => {\r\n return `M ${width * 0.5} ${height} L 0 0 L ${width} 0 Z`\r\n },\r\n },\r\n triangle3: {\r\n name: '三角形3',\r\n type: ClipPathTypes.POLYGON,\r\n style: 'polygon(0% 0%, 0% 100%, 100% 100%)',\r\n createPath: (width: number, height: number) => {\r\n return `M 0 0 L 0 ${height} L ${width} ${height} Z`\r\n },\r\n },\r\n rhombus: {\r\n name: '菱形',\r\n type: ClipPathTypes.POLYGON,\r\n style: 'polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)',\r\n createPath: (width: number, height: number) => {\r\n return `M ${width * 0.5} 0 L ${width} ${height * 0.5} L ${width * 0.5} ${height} L 0 ${height * 0.5} Z`\r\n },\r\n },\r\n hexagon: {\r\n name: '六边形',\r\n type: ClipPathTypes.POLYGON,\r\n style: 'polygon(20% 0%, 80% 0%, 100% 50%, 80% 100%, 20% 100%, 0% 50%)',\r\n createPath: (width: number, height: number) => {\r\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`\r\n },\r\n },\r\n pentagon: {\r\n name: '五边形',\r\n type: ClipPathTypes.POLYGON,\r\n style: 'polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%)',\r\n createPath: (width: number, height: number) => {\r\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`\r\n },\r\n },\r\n parallelogram: {\r\n name: '平行四边形',\r\n type: ClipPathTypes.POLYGON,\r\n style: 'polygon(30% 0%, 100% 0%, 70% 100%, 0% 100%)',\r\n createPath: (width: number, height: number) => {\r\n return `M ${width * 0.3} 0 L ${width} 0 L ${width * 0.7} ${height} L 0 ${height} Z`\r\n },\r\n },\r\n parallelogram2: {\r\n name: '平行四边形2',\r\n type: ClipPathTypes.POLYGON,\r\n style: 'polygon(30% 100%, 100% 100%, 70% 0%, 0% 0%)',\r\n createPath: (width: number, height: number) => {\r\n return `M ${width * 0.3} ${height} L ${width} ${height} L ${width * 0.7} 0 L 0 0 Z`\r\n },\r\n },\r\n trapezoid: {\r\n name: '梯形',\r\n type: ClipPathTypes.POLYGON,\r\n style: 'polygon(25% 0%, 75% 0%, 100% 100%, 0% 100%)',\r\n createPath: (width: number, height: number) => {\r\n return `M ${width * 0.25} 0 L ${width * 0.75} 0 L ${width} ${height} L 0 ${height} Z`\r\n },\r\n },\r\n trapezoid2: {\r\n name: '梯形2',\r\n type: ClipPathTypes.POLYGON,\r\n style: 'polygon(0% 0%, 100% 0%, 75% 100%, 25% 100%)',\r\n createPath: (width: number, height: number) => {\r\n return `M 0 0 L ${width} 0 L ${width * 0.75} ${height} L ${width * 0.25} ${height} Z`\r\n },\r\n },\r\n}","\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
![\"\"\r\n]()
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","import { computed, Ref } from 'vue'\r\nimport { PPTElementShadow } from '@/types/slides'\r\n\r\n// 计算元素的阴影样式\r\nexport default (shadow: Ref) => {\r\n const shadowStyle = computed(() => {\r\n if (shadow.value) {\r\n const { h, v, blur, color } = shadow.value\r\n return `${h}px ${v}px ${blur}px ${color}`\r\n }\r\n return ''\r\n })\r\n\r\n return {\r\n shadowStyle,\r\n }\r\n}","import { computed, Ref } from 'vue'\r\nimport { ImageOrShapeFlip } from '@/types/slides'\r\n\r\n// 计算元素的翻转样式\r\nexport default (flip: Ref) => {\r\n const flipStyle = computed(() => {\r\n if (flip.value) {\r\n let style = ''\r\n \r\n const { x, y } = flip.value\r\n if (x && y) style = `rotateX(${x}deg) rotateY(${y}deg)`\r\n else if (x) style = `rotateX(${x}deg)`\r\n else if (y) style = `rotateY(${y}deg)`\r\n\r\n return style\r\n }\r\n return ''\r\n })\r\n\r\n return {\r\n flipStyle,\r\n }\r\n}","import { computed, Ref } from 'vue'\r\nimport { CLIPPATHS, ClipPathTypes } from '@/configs/imageClip'\r\nimport { ImageElementClip } from '@/types/slides'\r\n\r\nexport default (clip: Ref) => {\r\n const clipShape = computed(() => {\r\n if (!clip.value) return CLIPPATHS.rect\r\n const shape = clip.value.shape || ClipPathTypes.RECT\r\n\r\n return CLIPPATHS[shape]\r\n })\r\n\r\n const imgPosition = computed(() => {\r\n if (!clip.value) {\r\n return {\r\n top: '0',\r\n left: '0',\r\n width: '100%',\r\n height: '100%',\r\n }\r\n }\r\n\r\n const [start, end] = clip.value.range\r\n\r\n const widthScale = (end[0] - start[0]) / 100\r\n const heightScale = (end[1] - start[1]) / 100\r\n const left = start[0] / widthScale\r\n const top = start[1] / heightScale\r\n\r\n return {\r\n left: -left + '%',\r\n top: -top + '%',\r\n width: 100 / widthScale + '%',\r\n height: 100 / heightScale + '%',\r\n }\r\n })\r\n\r\n return {\r\n clipShape,\r\n imgPosition,\r\n }\r\n}","import { computed, Ref } from 'vue'\r\nimport { ImageElementFilters } from '@/types/slides'\r\n\r\nexport default (filters: Ref) => {\r\n const filter = computed(() => {\r\n if (!filters.value) return ''\r\n let filter = ''\r\n for (const key of Object.keys(filters.value)) {\r\n filter += `${key}(${filters.value[key]}) `\r\n }\r\n return filter\r\n })\r\n\r\n return {\r\n filter,\r\n }\r\n}","\r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n","\r\n \r\n \r\n\t\r\n\r\n\r\n\r\n\r\n","import { computed, Ref } from 'vue'\r\nimport { PPTElementOutline } from '@/types/slides'\r\n\r\n// 计算边框相关属性值,主要是对默认值的处理\r\nexport default (outline: Ref) => {\r\n const outlineWidth = computed(() => outline.value?.width ?? 0)\r\n const outlineStyle = computed(() => outline.value?.style || 'solid')\r\n const outlineColor = computed(() => outline.value?.color || '#d14424')\r\n\r\n return {\r\n outlineWidth,\r\n outlineStyle,\r\n outlineColor,\r\n }\r\n}","\r\nimport { PropType, defineComponent, toRef } from 'vue'\r\nimport { PPTElementOutline } from '@/types/slides'\r\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\r\n\r\nexport default defineComponent({\r\n name: 'image-rect-outline',\r\n props: {\r\n width: {\r\n type: Number,\r\n required: true,\r\n },\r\n height: {\r\n type: Number,\r\n required: true,\r\n },\r\n outline: {\r\n type: Object as PropType\r\n },\r\n radius: {\r\n type: String,\r\n default: '0',\r\n },\r\n },\r\n setup(props) {\r\n const {\r\n outlineWidth,\r\n outlineStyle,\r\n outlineColor,\r\n } = useElementOutline(toRef(props, 'outline'))\r\n\r\n return {\r\n outlineWidth,\r\n outlineStyle,\r\n outlineColor,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ImageRectOutline.vue?vue&type=template&id=4126ab7f&scoped=true\"\nimport script from \"./ImageRectOutline.vue?vue&type=script&lang=ts\"\nexport * from \"./ImageRectOutline.vue?vue&type=script&lang=ts\"\n\nimport \"./ImageRectOutline.vue?vue&type=style&index=0&id=4126ab7f&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-4126ab7f\"\n\nexport default script","\r\n \r\n \r\n\t\r\n\r\n\r\n\r\n\r\n","\r\nimport { PropType, defineComponent, toRef } from 'vue'\r\nimport { PPTElementOutline } from '@/types/slides'\r\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\r\n\r\nexport default defineComponent({\r\n name: 'image-ellipse-outline',\r\n props: {\r\n width: {\r\n type: Number,\r\n required: true,\r\n },\r\n height: {\r\n type: Number,\r\n required: true,\r\n },\r\n outline: {\r\n type: Object as PropType\r\n },\r\n },\r\n setup(props) {\r\n const {\r\n outlineWidth,\r\n outlineStyle,\r\n outlineColor,\r\n } = useElementOutline(toRef(props, 'outline'))\r\n\r\n return {\r\n outlineWidth,\r\n outlineStyle,\r\n outlineColor,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ImageEllipseOutline.vue?vue&type=template&id=6655f0f0&scoped=true\"\nimport script from \"./ImageEllipseOutline.vue?vue&type=script&lang=ts\"\nexport * from \"./ImageEllipseOutline.vue?vue&type=script&lang=ts\"\n\nimport \"./ImageEllipseOutline.vue?vue&type=style&index=0&id=6655f0f0&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-6655f0f0\"\n\nexport default script","\r\n \r\n \r\n\t\r\n\r\n\r\n\r\n\r\n","\r\nimport { PropType, defineComponent, toRef } from 'vue'\r\nimport { PPTElementOutline } from '@/types/slides'\r\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\r\n\r\nexport default defineComponent({\r\n name: 'image-polygon-outline',\r\n props: {\r\n width: {\r\n type: Number,\r\n required: true,\r\n },\r\n height: {\r\n type: Number,\r\n required: true,\r\n },\r\n outline: {\r\n type: Object as PropType\r\n },\r\n createPath: {\r\n type: Function,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const {\r\n outlineWidth,\r\n outlineStyle,\r\n outlineColor,\r\n } = useElementOutline(toRef(props, 'outline'))\r\n\r\n return {\r\n outlineWidth,\r\n outlineStyle,\r\n outlineColor,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ImagePolygonOutline.vue?vue&type=template&id=8d85e878&scoped=true\"\nimport script from \"./ImagePolygonOutline.vue?vue&type=script&lang=ts\"\nexport * from \"./ImagePolygonOutline.vue?vue&type=script&lang=ts\"\n\nimport \"./ImagePolygonOutline.vue?vue&type=style&index=0&id=8d85e878&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-8d85e878\"\n\nexport default script","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { PPTImageElement } from '@/types/slides'\r\nimport useClipImage from '../useClipImage'\r\n\r\nimport ImageRectOutline from './ImageRectOutline.vue'\r\nimport ImageEllipseOutline from './ImageEllipseOutline.vue'\r\nimport ImagePolygonOutline from './ImagePolygonOutline.vue'\r\n\r\nexport default defineComponent({\r\n name: 'image-outline',\r\n components: {\r\n ImageRectOutline,\r\n ImageEllipseOutline,\r\n ImagePolygonOutline,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const clip = computed(() => props.elementInfo.clip)\r\n const { clipShape } = useClipImage(clip)\r\n\r\n return {\r\n clipShape,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=6b56be7d\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { PPTImageElement } from '@/types/slides'\r\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\r\nimport useElementFlip from '@/views/components/element/hooks/useElementFlip'\r\nimport useClipImage from './useClipImage'\r\nimport useFilter from './useFilter'\r\n\r\nimport ImageOutline from './ImageOutline/index.vue'\r\n\r\nexport default defineComponent({\r\n name: 'base-element-image',\r\n components: {\r\n ImageOutline,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const shadow = computed(() => props.elementInfo.shadow)\r\n const { shadowStyle } = useElementShadow(shadow)\r\n\r\n const flip = computed(() => props.elementInfo.flip)\r\n const { flipStyle } = useElementFlip(flip)\r\n \r\n const clip = computed(() => props.elementInfo.clip)\r\n const { clipShape, imgPosition } = useClipImage(clip)\r\n\r\n const filters = computed(() => props.elementInfo.filters)\r\n const { filter } = useFilter(filters)\r\n\r\n return {\r\n imgPosition,\r\n filter,\r\n flipStyle,\r\n shadowStyle,\r\n clipShape,\r\n }\r\n },\r\n})\r\n","import { render } from \"./BaseImageElement.vue?vue&type=template&id=75104890&scoped=true\"\nimport script from \"./BaseImageElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseImageElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseImageElement.vue?vue&type=style&index=0&id=75104890&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-75104890\"\n\nexport default script","\r\n \r\n\r\n\r\n\r\n\r\n\r\n","\r\n \r\n \r\n\t\r\n\r\n\r\n\r\n\r\n","\r\nimport { PropType, defineComponent, toRef } from 'vue'\r\nimport { PPTElementOutline } from '@/types/slides'\r\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\r\n\r\nexport default defineComponent({\r\n name: 'element-outline',\r\n props: {\r\n width: {\r\n type: Number,\r\n required: true,\r\n },\r\n height: {\r\n type: Number,\r\n required: true,\r\n },\r\n outline: {\r\n type: Object as PropType\r\n },\r\n },\r\n setup(props) {\r\n const {\r\n outlineWidth,\r\n outlineStyle,\r\n outlineColor,\r\n } = useElementOutline(toRef(props, 'outline'))\r\n\r\n return {\r\n outlineWidth,\r\n outlineStyle,\r\n outlineColor,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ElementOutline.vue?vue&type=template&id=2ddaa919&scoped=true\"\nimport script from \"./ElementOutline.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementOutline.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementOutline.vue?vue&type=style&index=0&id=2ddaa919&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-2ddaa919\"\n\nexport default script","\r\nimport { defineComponent, PropType, computed } from 'vue'\r\nimport { PPTTextElement } from '@/types/slides'\r\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\r\n\r\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\r\n\r\nexport default defineComponent({\r\n name: 'base-element-text',\r\n components: {\r\n ElementOutline,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const shadow = computed(() => props.elementInfo.shadow)\r\n const { shadowStyle } = useElementShadow(shadow)\r\n\r\n return {\r\n shadowStyle,\r\n }\r\n },\r\n})\r\n","import { render } from \"./BaseTextElement.vue?vue&type=template&id=10405ba6&scoped=true\"\nimport script from \"./BaseTextElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseTextElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseTextElement.vue?vue&type=style&index=0&id=10405ba6&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-10405ba6\"\n\nexport default script","\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n","\r\nimport { defineComponent, PropType } from 'vue'\r\n\r\nexport default defineComponent({\r\n name: 'gradient-defs',\r\n props: {\r\n id: {\r\n type: String,\r\n required: true,\r\n },\r\n type: {\r\n type: String as PropType<'linear' | 'radial'>,\r\n },\r\n color1: {\r\n type: String,\r\n required: true,\r\n },\r\n color2: {\r\n type: String,\r\n required: true,\r\n },\r\n rotate: {\r\n type: Number,\r\n default: 0,\r\n },\r\n },\r\n})\r\n","import { render } from \"./GradientDefs.vue?vue&type=template&id=b787d5ea\"\nimport script from \"./GradientDefs.vue?vue&type=script&lang=ts\"\nexport * from \"./GradientDefs.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { PPTShapeElement } from '@/types/slides'\r\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\r\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\r\nimport useElementFlip from '@/views/components/element/hooks/useElementFlip'\r\n\r\nimport GradientDefs from './GradientDefs.vue'\r\n\r\nexport default defineComponent({\r\n name: 'base-element-shape',\r\n components: {\r\n GradientDefs,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const outline = computed(() => props.elementInfo.outline)\r\n const { outlineWidth, outlineStyle, outlineColor } = useElementOutline(outline)\r\n \r\n const shadow = computed(() => props.elementInfo.shadow)\r\n const { shadowStyle } = useElementShadow(shadow)\r\n\r\n const flip = computed(() => props.elementInfo.flip)\r\n const { flipStyle } = useElementFlip(flip)\r\n\r\n return {\r\n shadowStyle,\r\n outlineWidth,\r\n outlineStyle,\r\n outlineColor,\r\n flipStyle,\r\n }\r\n },\r\n})\r\n","import { render } from \"./BaseShapeElement.vue?vue&type=template&id=062b8ef4&scoped=true\"\nimport script from \"./BaseShapeElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseShapeElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseShapeElement.vue?vue&type=style&index=0&id=062b8ef4&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-062b8ef4\"\n\nexport default script","\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n\t\t\t\t\r\n\t\t\t\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","\r\n \r\n\t\t\r\n\t\r\n\r\n\r\n","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\n\r\nconst pathMap = {\r\n dot: 'm0 5a5 5 0 1 0 10 0a5 5 0 1 0 -10 0z',\r\n arrow: 'M0,0 L10,5 0,10 Z',\r\n}\r\nconst rotateMap = {\r\n 'arrow-start': 180,\r\n 'arrow-end': 0,\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'line-point-marker',\r\n props: {\r\n id: {\r\n type: String,\r\n required: true,\r\n },\r\n position: {\r\n type: String as PropType<'start' | 'end'>,\r\n required: true,\r\n },\r\n type: {\r\n type: String as PropType<'dot' | 'arrow'>,\r\n required: true,\r\n },\r\n color: {\r\n type: String,\r\n },\r\n baseSize: {\r\n type: Number,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const path = computed(() => pathMap[props.type])\r\n const rotate = computed(() => rotateMap[`${props.type}-${props.position}`] || 0)\r\n const size = computed(() => props.baseSize < 2 ? 2 : props.baseSize)\r\n\r\n return {\r\n path,\r\n rotate,\r\n size,\r\n }\r\n },\r\n})\r\n","import { render } from \"./LinePointMarker.vue?vue&type=template&id=62085f5a\"\nimport script from \"./LinePointMarker.vue?vue&type=script&lang=ts\"\nexport * from \"./LinePointMarker.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { PPTLineElement } from '@/types/slides'\r\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\r\n\r\nimport LinePointMarker from './LinePointMarker.vue'\r\n\r\nexport default defineComponent({\r\n name: 'editable-element-shape',\r\n components: {\r\n LinePointMarker,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const shadow = computed(() => props.elementInfo.shadow)\r\n const { shadowStyle } = useElementShadow(shadow)\r\n\r\n const svgWidth = computed(() => {\r\n const width = Math.abs(props.elementInfo.start[0] - props.elementInfo.end[0])\r\n return width < 24 ? 24 : width\r\n })\r\n const svgHeight = computed(() => {\r\n const height = Math.abs(props.elementInfo.start[1] - props.elementInfo.end[1])\r\n return height < 24 ? 24 : height\r\n })\r\n\r\n const lineDashArray = computed(() => props.elementInfo.style === 'dashed' ? '10, 5' : '0, 0')\r\n\r\n const path = computed(() => {\r\n const start = props.elementInfo.start.join(',')\r\n const end = props.elementInfo.end.join(',')\r\n if (props.elementInfo.broken) {\r\n const mid = props.elementInfo.broken.join(',')\r\n return `M${start} L${mid} L${end}`\r\n }\r\n if (props.elementInfo.curve) {\r\n const mid = props.elementInfo.curve.join(',')\r\n return `M${start} Q${mid} ${end}`\r\n }\r\n return `M${start} L${end}`\r\n })\r\n\r\n return {\r\n shadowStyle,\r\n svgWidth,\r\n svgHeight,\r\n lineDashArray,\r\n path,\r\n }\r\n },\r\n})\r\n","import { render } from \"./BaseLineElement.vue?vue&type=template&id=56b0510c&scoped=true\"\nimport script from \"./BaseLineElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseLineElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseLineElement.vue?vue&type=style&index=0&id=56b0510c&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-56b0510c\"\n\nexport default script","\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { PPTChartElement } from '@/types/slides'\r\n\r\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\r\n\r\nexport default defineComponent({\r\n name: 'base-element-chart',\r\n components: {\r\n ElementOutline,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const size = computed(() => Math.min(props.elementInfo.width, props.elementInfo.height))\r\n\r\n const chartType = computed(() => {\r\n const _chartType = props.elementInfo.chartType\r\n const _options = props.elementInfo.options\r\n\r\n if (_chartType === 'bar') {\r\n if (_options?.horizontalBars) return 'horizontalBar'\r\n return 'bar'\r\n }\r\n else if (_chartType === 'line') {\r\n if (_options?.showArea) return 'area'\r\n else if (_options && _options.showLine === false) return 'scatter'\r\n return 'line'\r\n }\r\n else if (_chartType === 'pie') {\r\n if (_options?.donut) return 'ring'\r\n return 'pie'\r\n }\r\n\r\n return ''\r\n })\r\n\r\n return {\r\n size,\r\n chartType,\r\n }\r\n },\r\n})\r\n","import { render } from \"./BaseChartElement.vue?vue&type=template&id=2d25f60a&scoped=true\"\nimport script from \"./BaseChartElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseChartElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseChartElement.vue?vue&type=style&index=0&id=2d25f60a&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-2d25f60a\"\n\nexport default script","\r\n \r\n\r\n\r\n\r\n\r\n\r\n","\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n | \r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","import { TableCellStyle } from '@/types/slides'\r\n\r\n/**\r\n * 计算单元格文本样式\r\n * @param style 单元格文本样式原数据\r\n */\r\nexport const getTextStyle = (style?: TableCellStyle) => {\r\n if (!style) return {}\r\n const {\r\n bold,\r\n em,\r\n underline,\r\n strikethrough,\r\n color,\r\n backcolor,\r\n fontsize,\r\n fontname,\r\n align,\r\n } = style\r\n\r\n let textDecoration = `${underline ? 'underline' : ''} ${strikethrough ? 'line-through' : ''}`\r\n if (textDecoration === ' ') textDecoration = 'none'\r\n \r\n return {\r\n fontWeight: bold ? 'bold' : 'normal',\r\n fontStyle: em ? 'italic' : 'normal',\r\n textDecoration,\r\n color: color || '#000',\r\n backgroundColor: backcolor || '',\r\n fontSize: fontsize || '14px',\r\n fontFamily: fontname || '微软雅黑',\r\n textAlign: align || 'left',\r\n }\r\n}","import { computed, Ref } from 'vue'\r\nimport { TableCell } from '@/types/slides'\r\n\r\n// 计算无效的单元格位置(被合并的单元格位置)集合\r\n\r\nexport default (cells: Ref) => {\r\n const hideCells = computed(() => {\r\n const hideCells = []\r\n \r\n for (let i = 0; i < cells.value.length; i++) {\r\n const rowCells = cells.value[i]\r\n\r\n for (let j = 0; j < rowCells.length; j++) {\r\n const cell = rowCells[j]\r\n \r\n if (cell.colspan > 1 || cell.rowspan > 1) {\r\n for (let row = i; row < i + cell.rowspan; row++) {\r\n for (let col = row === i ? j + 1 : j; col < j + cell.colspan; col++) {\r\n hideCells.push(`${row}_${col}`)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return hideCells\r\n })\r\n\r\n return {\r\n hideCells,\r\n }\r\n}","import { ref, Ref, watch } from 'vue'\r\nimport tinycolor from 'tinycolor2'\r\nimport { TableTheme } from '@/types/slides'\r\n\r\n// 通过表格的主题色计算辅助颜色\r\n\r\nexport default (theme: Ref) => {\r\n const subThemeColor = ref(['', ''])\r\n watch(() => theme.value, () => {\r\n if (theme.value) {\r\n const rgba = tinycolor(theme.value.color).toRgb()\r\n const subRgba1 = { r: rgba.r, g: rgba.g, b: rgba.b, a: rgba.a * 0.3 }\r\n const subRgba2 = { r: rgba.r, g: rgba.g, b: rgba.b, a: rgba.a * 0.1 }\r\n subThemeColor.value = [\r\n `rgba(${[subRgba1.r, subRgba1.g, subRgba1.b, subRgba1.a].join(',')})`,\r\n `rgba(${[subRgba2.r, subRgba2.g, subRgba2.b, subRgba2.a].join(',')})`,\r\n ]\r\n }\r\n }, { immediate: true })\r\n\r\n return {\r\n subThemeColor,\r\n }\r\n}","\r\nimport { computed, defineComponent, PropType, ref, watch } from 'vue'\r\nimport { PPTElementOutline, TableCell, TableTheme } from '@/types/slides'\r\nimport { getTextStyle } from './utils'\r\nimport useHideCells from './useHideCells'\r\nimport useSubThemeColor from './useSubThemeColor'\r\n\r\nexport default defineComponent({\r\n name: 'static-table',\r\n props: {\r\n data: {\r\n type: Array as PropType,\r\n required: true,\r\n },\r\n width: {\r\n type: Number,\r\n required: true,\r\n },\r\n colWidths: {\r\n type: Array as PropType,\r\n required: true,\r\n },\r\n outline: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n theme: {\r\n type: Object as PropType,\r\n },\r\n editable: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n },\r\n setup(props) {\r\n const colSizeList = ref([])\r\n const totalWidth = computed(() => colSizeList.value.reduce((a, b) => a + b))\r\n\r\n watch([\r\n () => props.colWidths,\r\n () => props.width,\r\n ], () => {\r\n colSizeList.value = props.colWidths.map(item => item * props.width)\r\n }, { immediate: true })\r\n\r\n const cells = computed(() => props.data)\r\n const { hideCells } = useHideCells(cells)\r\n\r\n const theme = computed(() => props.theme)\r\n const { subThemeColor } = useSubThemeColor(theme)\r\n\r\n return {\r\n colSizeList,\r\n totalWidth,\r\n hideCells,\r\n getTextStyle,\r\n subThemeColor,\r\n }\r\n },\r\n})\r\n","import { render } from \"./StaticTable.vue?vue&type=template&id=01f791ba&scoped=true\"\nimport script from \"./StaticTable.vue?vue&type=script&lang=ts\"\nexport * from \"./StaticTable.vue?vue&type=script&lang=ts\"\n\nimport \"./StaticTable.vue?vue&type=style&index=0&id=01f791ba&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-01f791ba\"\n\nexport default script","\r\nimport { defineComponent, PropType } from 'vue'\r\nimport { PPTTableElement } from '@/types/slides'\r\n\r\nimport StaticTable from './StaticTable.vue'\r\n\r\nexport default defineComponent({\r\n name: 'base-element-table',\r\n components: {\r\n StaticTable,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n },\r\n})\r\n","import { render } from \"./BaseTableElement.vue?vue&type=template&id=dea016ac&scoped=true\"\nimport script from \"./BaseTableElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseTableElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseTableElement.vue?vue&type=style&index=0&id=dea016ac&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-dea016ac\"\n\nexport default script","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { ElementTypes, PPTElement } from '@/types/slides'\r\n\r\nimport BaseImageElement from '@/views/components/element/ImageElement/BaseImageElement.vue'\r\nimport BaseTextElement from '@/views/components/element/TextElement/BaseTextElement.vue'\r\nimport BaseShapeElement from '@/views/components/element/ShapeElement/BaseShapeElement.vue'\r\nimport BaseLineElement from '@/views/components/element/LineElement/BaseLineElement.vue'\r\nimport BaseChartElement from '@/views/components/element/ChartElement/BaseChartElement.vue'\r\nimport BaseTableElement from '@/views/components/element/TableElement/BaseTableElement.vue'\r\n\r\nexport default defineComponent({\r\n name: 'base-element',\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n elementIndex: {\r\n type: Number,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const theme = computed(() => store.state.theme)\r\n\r\n const currentElementComponent = computed(() => {\r\n const elementTypeMap = {\r\n [ElementTypes.IMAGE]: BaseImageElement,\r\n [ElementTypes.TEXT]: BaseTextElement,\r\n [ElementTypes.SHAPE]: BaseShapeElement,\r\n [ElementTypes.LINE]: BaseLineElement,\r\n [ElementTypes.CHART]: BaseChartElement,\r\n [ElementTypes.TABLE]: BaseTableElement,\r\n }\r\n return elementTypeMap[props.elementInfo.type] || null\r\n })\r\n\r\n return {\r\n currentElementComponent,\r\n theme,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ThumbnailElement.vue?vue&type=template&id=43292aca\"\nimport script from \"./ThumbnailElement.vue?vue&type=script&lang=ts\"\nexport * from \"./ThumbnailElement.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\nimport { computed, PropType, defineComponent } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { Slide } from '@/types/slides'\r\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\r\nimport useSlideBackgroundStyle from '@/hooks/useSlideBackgroundStyle'\r\n\r\nimport ThumbnailElement from './ThumbnailElement.vue'\r\n\r\nexport default defineComponent({\r\n name: 'thumbnail-slide',\r\n components: {\r\n ThumbnailElement,\r\n },\r\n props: {\r\n slide: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n size: {\r\n type: Number,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const viewportRatio = computed(() => store.state.viewportRatio)\r\n\r\n const background = computed(() => props.slide.background)\r\n const { backgroundStyle } = useSlideBackgroundStyle(background)\r\n\r\n const scale = computed(() => props.size / VIEWPORT_SIZE)\r\n\r\n return {\r\n scale,\r\n backgroundStyle,\r\n VIEWPORT_SIZE,\r\n viewportRatio,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=4e59015e&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=4e59015e&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-4e59015e\"\n\nexport default script","\r\nimport { computed, defineComponent, ref } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { saveAs } from 'file-saver'\r\nimport { toPng, toJpeg } from 'html-to-image'\r\n\r\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\r\nimport { message } from 'ant-design-vue'\r\n\r\nexport default defineComponent({\r\n name: 'export-dialog',\r\n components: {\r\n ThumbnailSlide,\r\n },\r\n setup(props, { emit }) {\r\n const store = useStore()\r\n const slides = computed(() => store.state.slides)\r\n\r\n const tabs = ref([\r\n { label: 'JSON', value: 'json' },\r\n { label: '图片', value: 'image' },\r\n ])\r\n\r\n const currentTab = ref('json')\r\n const spinning = ref(false)\r\n\r\n const exportJSON = () => {\r\n const blob = new Blob([JSON.stringify(slides.value)], { type: '' })\r\n saveAs(blob, 'pptist_slides.json')\r\n }\r\n\r\n const imageThumbnailsRef = ref()\r\n const exportImage = (type: string) => {\r\n spinning.value = true\r\n const toImage = type === 'png' ? toPng : toJpeg\r\n\r\n setTimeout(() => {\r\n if (!imageThumbnailsRef.value) return\r\n\r\n toImage(imageThumbnailsRef.value, {\r\n quality: 0.95,\r\n width: 1600,\r\n }).then(dataUrl => {\r\n spinning.value = false\r\n saveAs(dataUrl, `pptist_slides.${type}`)\r\n }).catch(() => {\r\n spinning.value = false\r\n message.error('导出图片失败')\r\n })\r\n }, 200)\r\n }\r\n\r\n return {\r\n tabs,\r\n currentTab,\r\n spinning,\r\n slides,\r\n exportJSON,\r\n exportImage,\r\n imageThumbnailsRef,\r\n emit,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ExportDialog.vue?vue&type=template&id=47e95e66&scoped=true\"\nimport script from \"./ExportDialog.vue?vue&type=script&lang=ts\"\nexport * from \"./ExportDialog.vue?vue&type=script&lang=ts\"\n\nimport \"./ExportDialog.vue?vue&type=style&index=0&id=47e95e66&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-47e95e66\"\n\nexport default script","\r\nimport { computed, defineComponent, ref } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport useScreening from '@/hooks/useScreening'\r\nimport useSlideHandler from '@/hooks/useSlideHandler'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport HotkeyDoc from './HotkeyDoc.vue'\r\nimport ExportDialog from './ExportDialog.vue'\r\n\r\nimport { message } from 'ant-design-vue'\r\n\r\nexport default defineComponent({\r\n name: 'editor-header',\r\n components: {\r\n HotkeyDoc,\r\n ExportDialog,\r\n },\r\n setup() {\r\n const store = useStore()\r\n\r\n const { enterScreening, enterScreeningFromStart } = useScreening()\r\n const { createSlide, deleteSlide, resetSlides } = useSlideHandler()\r\n const { redo, undo } = useHistorySnapshot()\r\n\r\n const showGridLines = computed(() => store.state.showGridLines)\r\n const toggleGridLines = () => {\r\n store.commit(MutationTypes.SET_GRID_LINES_STATE, !showGridLines.value)\r\n }\r\n\r\n const openDoc = () => {\r\n message.warning('作者努力编写中...')\r\n }\r\n\r\n const hotkeyDrawerVisible = ref(false)\r\n const exportDialogVisible = ref(false)\r\n\r\n return {\r\n enterScreening,\r\n enterScreeningFromStart,\r\n createSlide,\r\n deleteSlide,\r\n redo,\r\n undo,\r\n toggleGridLines,\r\n showGridLines,\r\n resetSlides,\r\n openDoc,\r\n hotkeyDrawerVisible,\r\n exportDialogVisible,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=772225af&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=772225af&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-772225af\"\n\nexport default script","\r\n mousewheelScaleCanvas($event)\"\r\n @mousedown=\"$event => handleClickBlankArea($event)\"\r\n v-contextmenu=\"contextmenus\"\r\n v-click-outside=\"removeEditorAreaFocus\"\r\n >\r\n
insertElementFromCreateSelection(data)\"\r\n />\r\n \r\n
\r\n
\r\n
1\"\r\n :elementList=\"elementList\"\r\n :scaleMultiElement=\"scaleMultiElement\"\r\n />\r\n 1\"\r\n :rotateElement=\"rotateElement\"\r\n :scaleElement=\"scaleElement\"\r\n :dragLineElement=\"dragLineElement\"\r\n />\r\n \r\n \r\n\r\n
\r\n \r\n 1\"\r\n :selectElement=\"selectElement\"\r\n />\r\n
\r\n
\r\n \r\n\r\n\r\n\r\n\r\n","import mitt, { Emitter } from 'mitt'\r\n\r\nexport const enum EmitterEvents {\r\n UPDATE_TEXT_STATE = 'UPDATE_TEXT_STATE',\r\n EXEC_TEXT_COMMAND = 'EXEC_TEXT_COMMAND',\r\n UPDATE_TABLE_SELECTED_CELL = 'UPDATE_TABLE_SELECTED_CELL',\r\n SCALE_ELEMENT_STATE = 'SCALE_ELEMENT_STATE',\r\n}\r\n\r\nconst emitter: Emitter = mitt()\r\n\r\nexport default emitter","// 清除文字选区\r\nexport const removeAllRanges = () => {\r\n const selection = window.getSelection()\r\n selection && selection.removeAllRanges()\r\n}","import { ref, computed, onMounted, onUnmounted, Ref, watch } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\r\n\r\nexport default (canvasRef: Ref) => {\r\n const viewportLeft = ref(0)\r\n const viewportTop = ref(0)\r\n\r\n const store = useStore()\r\n const canvasPercentage = computed(() => store.state.canvasPercentage)\r\n const viewportRatio = computed(() => store.state.viewportRatio)\r\n\r\n // 计算画布可视区域的位置\r\n const setViewportPosition = () => {\r\n if (!canvasRef.value) return\r\n const canvasWidth = canvasRef.value.clientWidth\r\n const canvasHeight = canvasRef.value.clientHeight\r\n\r\n if (canvasHeight / canvasWidth > viewportRatio.value) {\r\n const viewportActualWidth = canvasWidth * (canvasPercentage.value / 100)\r\n store.commit(MutationTypes.SET_CANVAS_SCALE, viewportActualWidth / VIEWPORT_SIZE)\r\n viewportLeft.value = (canvasWidth - viewportActualWidth) / 2\r\n viewportTop.value = (canvasHeight - viewportActualWidth * viewportRatio.value) / 2\r\n }\r\n else {\r\n const viewportActualHeight = canvasHeight * (canvasPercentage.value / 100)\r\n store.commit(MutationTypes.SET_CANVAS_SCALE, viewportActualHeight / (VIEWPORT_SIZE * viewportRatio.value))\r\n viewportLeft.value = (canvasWidth - viewportActualHeight / viewportRatio.value) / 2\r\n viewportTop.value = (canvasHeight - viewportActualHeight) / 2\r\n }\r\n }\r\n\r\n // 可视区域缩放或比例变化时,更新可视区域的位置\r\n watch([canvasPercentage, viewportRatio], setViewportPosition)\r\n\r\n // 画布可视区域位置和大小的样式\r\n const viewportStyles = computed(() => ({\r\n width: VIEWPORT_SIZE,\r\n height: VIEWPORT_SIZE * viewportRatio.value,\r\n left: viewportLeft.value,\r\n top: viewportTop.value,\r\n }))\r\n\r\n // 监听画布尺寸发生变化时,更新可视区域的位置\r\n const resizeObserver = new ResizeObserver(setViewportPosition)\r\n\r\n onMounted(() => {\r\n if (canvasRef.value) resizeObserver.observe(canvasRef.value)\r\n })\r\n onUnmounted(() => {\r\n if (canvasRef.value) resizeObserver.unobserve(canvasRef.value)\r\n })\r\n\r\n return {\r\n viewportStyles,\r\n }\r\n}","import { PPTElement } 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}","import { Ref, reactive, computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement } from '@/types/slides'\r\nimport { getElementRange } from '@/utils/element'\r\n\r\nexport default (elementList: Ref, viewportRef: Ref) => {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n\r\n const mouseSelectionState = reactive({\r\n isShow: false,\r\n top: 0,\r\n left: 0,\r\n width: 0,\r\n height: 0,\r\n quadrant: 1,\r\n })\r\n\r\n // 更新鼠标框选范围\r\n const updateMouseSelection = (e: MouseEvent) => {\r\n if (!viewportRef.value) return\r\n\r\n let isMouseDown = true\r\n const viewportRect = viewportRef.value.getBoundingClientRect()\r\n\r\n const minSelectionRange = 5\r\n \r\n const startPageX = e.pageX\r\n const startPageY = e.pageY\r\n\r\n const left = (startPageX - viewportRect.x) / canvasScale.value\r\n const top = (startPageY - viewportRect.y) / canvasScale.value\r\n\r\n // 确定框选的起始位置和其他默认值初始化\r\n mouseSelectionState.isShow = false\r\n mouseSelectionState.quadrant = 4\r\n mouseSelectionState.top = top\r\n mouseSelectionState.left = left\r\n mouseSelectionState.width = 0\r\n mouseSelectionState.height = 0\r\n\r\n document.onmousemove = e => {\r\n if (!isMouseDown) return\r\n\r\n const currentPageX = e.pageX\r\n const currentPageY = e.pageY\r\n\r\n const offsetWidth = (currentPageX - startPageX) / canvasScale.value\r\n const offsetHeight = (currentPageY - startPageY) / canvasScale.value\r\n\r\n const width = Math.abs(offsetWidth)\r\n const height = Math.abs(offsetHeight)\r\n\r\n if ( width < minSelectionRange || height < minSelectionRange ) return\r\n \r\n // 计算鼠标框选(移动)的方向\r\n // 按四个象限的位置区分,如右下角为第四象限\r\n let quadrant = 0\r\n if ( offsetWidth > 0 && offsetHeight > 0 ) quadrant = 4\r\n else if ( offsetWidth < 0 && offsetHeight < 0 ) quadrant = 1\r\n else if ( offsetWidth > 0 && offsetHeight < 0 ) quadrant = 2\r\n else if ( offsetWidth < 0 && offsetHeight > 0 ) quadrant = 3\r\n\r\n // 更新框选范围\r\n mouseSelectionState.isShow = true\r\n mouseSelectionState.quadrant = quadrant\r\n mouseSelectionState.width = width\r\n mouseSelectionState.height = height\r\n }\r\n\r\n document.onmouseup = () => {\r\n document.onmousemove = null\r\n document.onmouseup = null\r\n isMouseDown = false\r\n\r\n // 计算画布中的元素是否处在鼠标选择范围中,处在范围中的元素设置为被选中状态\r\n let inRangeElementList: PPTElement[] = []\r\n for (let i = 0; i < elementList.value.length; i++) {\r\n const element = elementList.value[i]\r\n const mouseSelectionLeft = mouseSelectionState.left\r\n const mouseSelectionTop = mouseSelectionState.top\r\n const mouseSelectionWidth = mouseSelectionState.width\r\n const mouseSelectionHeight = mouseSelectionState.height\r\n\r\n const quadrant = mouseSelectionState.quadrant\r\n\r\n const { minX, maxX, minY, maxY } = getElementRange(element)\r\n\r\n // 计算元素是否处在框选范围内时,四个框选方向的计算方式有差异\r\n let isInclude = false\r\n if (quadrant === 4) {\r\n isInclude = minX > mouseSelectionLeft && \r\n maxX < mouseSelectionLeft + mouseSelectionWidth && \r\n minY > mouseSelectionTop && \r\n maxY < mouseSelectionTop + mouseSelectionHeight\r\n }\r\n else if (quadrant === 1) {\r\n isInclude = minX > (mouseSelectionLeft - mouseSelectionWidth) && \r\n maxX < (mouseSelectionLeft - mouseSelectionWidth) + mouseSelectionWidth && \r\n minY > (mouseSelectionTop - mouseSelectionHeight) && \r\n maxY < (mouseSelectionTop - mouseSelectionHeight) + mouseSelectionHeight\r\n }\r\n else if (quadrant === 2) {\r\n isInclude = minX > mouseSelectionLeft && \r\n maxX < mouseSelectionLeft + mouseSelectionWidth && \r\n minY > (mouseSelectionTop - mouseSelectionHeight) && \r\n maxY < (mouseSelectionTop - mouseSelectionHeight) + mouseSelectionHeight\r\n }\r\n else if (quadrant === 3) {\r\n isInclude = minX > (mouseSelectionLeft - mouseSelectionWidth) && \r\n maxX < (mouseSelectionLeft - mouseSelectionWidth) + mouseSelectionWidth && \r\n minY > mouseSelectionTop && \r\n maxY < mouseSelectionTop + mouseSelectionHeight\r\n }\r\n\r\n // 被锁定的元素即使在范围内,也不需要设置为选中状态\r\n if (isInclude && !element.lock) inRangeElementList.push(element)\r\n }\r\n\r\n // 如果范围内有组合元素的成员,需要该组全部成员都处在范围内,才会被设置为选中状态\r\n inRangeElementList = inRangeElementList.filter(inRangeElement => {\r\n if (inRangeElement.groupId) {\r\n const inRangeElementIdList = inRangeElementList.map(inRangeElement => inRangeElement.id)\r\n const groupElementList = elementList.value.filter(element => element.groupId === inRangeElement.groupId)\r\n return groupElementList.every(groupElement => inRangeElementIdList.includes(groupElement.id))\r\n }\r\n return true\r\n })\r\n const inRangeElementIdList = inRangeElementList.map(inRangeElement => inRangeElement.id)\r\n if (inRangeElementIdList.length) store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, inRangeElementIdList)\r\n\r\n mouseSelectionState.isShow = false\r\n }\r\n }\r\n\r\n return {\r\n mouseSelectionState,\r\n updateMouseSelection,\r\n }\r\n}","import { computed, onMounted, onUnmounted, Ref } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { getImageDataURL } from '@/utils/image'\r\nimport useCreateElement from '@/hooks/useCreateElement'\r\n\r\nexport default (elementRef: Ref) => {\r\n const store = useStore()\r\n const disableHotkeys = computed(() => store.state.disableHotkeys)\r\n\r\n const { createImageElement, createTextElement } = useCreateElement()\r\n\r\n // 拖拽元素到画布中\r\n const handleDrop = (e: DragEvent) => {\r\n if (!e.dataTransfer) return\r\n const dataTransferItem = e.dataTransfer.items[0]\r\n\r\n // 检查事件对象中是否存在图片,存在则插入图片,否则继续检查是否存在文字,存在则插入文字\r\n if (dataTransferItem.kind === 'file' && dataTransferItem.type.indexOf('image') !== -1) {\r\n const imageFile = dataTransferItem.getAsFile()\r\n if (imageFile) {\r\n getImageDataURL(imageFile).then(dataURL => createImageElement(dataURL))\r\n }\r\n }\r\n else if (dataTransferItem.kind === 'string' && dataTransferItem.type === 'text/plain') {\r\n dataTransferItem.getAsString(text => {\r\n if (disableHotkeys.value) return\r\n createTextElement({\r\n left: 0,\r\n top: 0,\r\n width: 600,\r\n height: 50,\r\n }, text)\r\n })\r\n }\r\n }\r\n\r\n onMounted(() => {\r\n elementRef.value && elementRef.value.addEventListener('drop', handleDrop)\r\n\r\n document.ondragleave = e => e.preventDefault()\r\n document.ondrop = e => e.preventDefault()\r\n document.ondragenter = e => e.preventDefault()\r\n document.ondragover = e => e.preventDefault()\r\n })\r\n onUnmounted(() => {\r\n elementRef.value && elementRef.value.removeEventListener('drop', handleDrop)\r\n\r\n document.ondragleave = null\r\n document.ondrop = null\r\n document.ondragenter = null\r\n document.ondragover = null\r\n })\r\n}","import { Ref, computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement, PPTTextElement, PPTImageElement, PPTShapeElement } from '@/types/slides'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\n/**\r\n * 计算给定坐标到原点连线的弧度\r\n * @param x 坐标x\r\n * @param y 坐标y\r\n */\r\nconst getAngleFromCoordinate = (x: number, y: number) => {\r\n const radian = Math.atan2(x, y)\r\n const angle = 180 / Math.PI * radian\r\n return angle\r\n}\r\n\r\nexport default (elementList: Ref, viewportRef: Ref) => {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 旋转元素\r\n const rotateElement = (element: PPTTextElement | PPTImageElement | PPTShapeElement) => {\r\n let isMouseDown = true\r\n let angle = 0\r\n const elOriginRotate = element.rotate || 0\r\n\r\n const elLeft = element.left\r\n const elTop = element.top\r\n const elWidth = element.width\r\n const elHeight = element.height\r\n\r\n // 元素中心点(旋转中心点)\r\n const centerX = elLeft + elWidth / 2\r\n const centerY = elTop + elHeight / 2\r\n\r\n if (!viewportRef.value) return\r\n const viewportRect = viewportRef.value.getBoundingClientRect()\r\n\r\n document.onmousemove = e => {\r\n if (!isMouseDown) return\r\n \r\n // 计算当前鼠标位置相对元素中心点连线的角度(弧度)\r\n const mouseX = (e.pageX - viewportRect.left) / canvasScale.value\r\n const mouseY = (e.pageY - viewportRect.top) / canvasScale.value\r\n const x = mouseX - centerX\r\n const y = centerY - mouseY\r\n\r\n angle = getAngleFromCoordinate(x, y)\r\n\r\n // 靠近45倍数的角度时有吸附效果\r\n const sorptionRange = 5\r\n if ( Math.abs(angle) <= sorptionRange ) angle = 0\r\n else if ( angle > 0 && Math.abs(angle - 45) <= sorptionRange ) angle -= (angle - 45)\r\n else if ( angle < 0 && Math.abs(angle + 45) <= sorptionRange ) angle -= (angle + 45)\r\n else if ( angle > 0 && Math.abs(angle - 90) <= sorptionRange ) angle -= (angle - 90)\r\n else if ( angle < 0 && Math.abs(angle + 90) <= sorptionRange ) angle -= (angle + 90)\r\n else if ( angle > 0 && Math.abs(angle - 135) <= sorptionRange ) angle -= (angle - 135)\r\n else if ( angle < 0 && Math.abs(angle + 135) <= sorptionRange ) angle -= (angle + 135)\r\n else if ( angle > 0 && Math.abs(angle - 180) <= sorptionRange ) angle -= (angle - 180)\r\n else if ( angle < 0 && Math.abs(angle + 180) <= sorptionRange ) angle -= (angle + 180)\r\n\r\n elementList.value = elementList.value.map(el => element.id === el.id ? { ...el, rotate: angle } : el)\r\n }\r\n\r\n document.onmouseup = () => {\r\n isMouseDown = false\r\n document.onmousemove = null\r\n document.onmouseup = null\r\n\r\n if (elOriginRotate === angle) return\r\n\r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: elementList.value })\r\n addHistorySnapshot()\r\n }\r\n }\r\n\r\n return {\r\n rotateElement,\r\n }\r\n}","export const ELEMENT_TYPE_ZH = {\r\n text: '文本',\r\n image: '图片',\r\n shape: '形状',\r\n line: '线条',\r\n chart: '图表',\r\n table: '表格',\r\n}\r\n\r\nexport const MIN_SIZE = {\r\n text: 20,\r\n image: 20,\r\n shape: 15,\r\n chart: 200,\r\n table: 20,\r\n}","import { computed, Ref } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement, PPTImageElement, PPTLineElement, PPTShapeElement } from '@/types/slides'\r\nimport { OperateResizeHandlers, AlignmentLineProps, MultiSelectRange } from '@/types/edit'\r\nimport emitter, { EmitterEvents } from '@/utils/emitter'\r\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\r\nimport { MIN_SIZE } from '@/configs/element'\r\nimport { AlignLine, uniqAlignLines } from '@/utils/element'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\ninterface RotateElementData {\r\n left: number;\r\n top: number;\r\n width: number;\r\n height: number;\r\n}\r\n\r\n/**\r\n * 计算旋转后的元素八个缩放点的位置\r\n * @param element 元素原始位置大小信息\r\n * @param angle 旋转角度\r\n */\r\nconst getRotateElementPoints = (element: RotateElementData, angle: number) => {\r\n const { left, top, width, height } = 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 - angle - auxiliaryAngle) * Math.PI / 180\r\n const trblaRadian = (auxiliaryAngle - angle) * Math.PI / 180\r\n const taRadian = (90 - angle) * Math.PI / 180\r\n const raRadian = angle * Math.PI / 180\r\n\r\n const halfWidth = width / 2\r\n const halfHeight = height / 2\r\n\r\n const middleLeft = left + halfWidth\r\n const middleTop = top + halfHeight\r\n\r\n const leftTopPoint = {\r\n left: middleLeft + radius * Math.cos(tlbraRadian),\r\n top: middleTop - radius * Math.sin(tlbraRadian),\r\n }\r\n const topPoint = {\r\n left: middleLeft + halfHeight * Math.cos(taRadian),\r\n top: middleTop - halfHeight * Math.sin(taRadian),\r\n }\r\n const rightTopPoint = {\r\n left: middleLeft + radius * Math.cos(trblaRadian),\r\n top: middleTop - radius * Math.sin(trblaRadian),\r\n }\r\n const rightPoint = {\r\n left: middleLeft + halfWidth * Math.cos(raRadian),\r\n top: middleTop + halfWidth * Math.sin(raRadian),\r\n }\r\n const rightBottomPoint = {\r\n left: middleLeft - radius * Math.cos(tlbraRadian),\r\n top: middleTop + radius * Math.sin(tlbraRadian),\r\n }\r\n const bottomPoint = {\r\n left: middleLeft - halfHeight * Math.sin(raRadian),\r\n top: middleTop + halfHeight * Math.cos(raRadian),\r\n }\r\n const leftBottomPoint = {\r\n left: middleLeft - radius * Math.cos(trblaRadian),\r\n top: middleTop + radius * Math.sin(trblaRadian),\r\n }\r\n const leftPoint = {\r\n left: middleLeft - halfWidth * Math.cos(raRadian),\r\n top: middleTop - halfWidth * Math.sin(raRadian),\r\n }\r\n\r\n return { leftTopPoint, topPoint, rightTopPoint, rightPoint, rightBottomPoint, bottomPoint, leftBottomPoint, leftPoint }\r\n}\r\n\r\n/**\r\n * 获取元素某缩放点相对的另一个点的位置,如:【上】对应【下】、【左上】对应【右下】\r\n * @param direction 当前操作的缩放点\r\n * @param points 旋转后的元素八个缩放点的位置\r\n */\r\nconst getOppositePoint = (direction: string, points: ReturnType): { left: number; top: number } => {\r\n const oppositeMap = {\r\n [OperateResizeHandlers.RIGHT_BOTTOM]: points.leftTopPoint,\r\n [OperateResizeHandlers.LEFT_BOTTOM]: points.rightTopPoint,\r\n [OperateResizeHandlers.LEFT_TOP]: points.rightBottomPoint,\r\n [OperateResizeHandlers.RIGHT_TOP]: points.leftBottomPoint,\r\n [OperateResizeHandlers.TOP]: points.bottomPoint,\r\n [OperateResizeHandlers.BOTTOM]: points.topPoint,\r\n [OperateResizeHandlers.LEFT]: points.rightPoint,\r\n [OperateResizeHandlers.RIGHT]: points.leftPoint,\r\n }\r\n return oppositeMap[direction]\r\n}\r\n\r\nexport default (\r\n elementList: Ref,\r\n activeGroupElementId: Ref,\r\n alignmentLines: Ref,\r\n) => {\r\n const store = useStore()\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n const viewportRatio = computed(() => store.state.viewportRatio)\r\n const ctrlOrShiftKeyActive = computed(() => store.getters.ctrlOrShiftKeyActive)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 缩放元素\r\n const scaleElement = (e: MouseEvent, element: Exclude, command: OperateResizeHandlers) => {\r\n let isMouseDown = true\r\n emitter.emit(EmitterEvents.SCALE_ELEMENT_STATE, true)\r\n\r\n const elOriginLeft = element.left\r\n const elOriginTop = element.top\r\n const elOriginWidth = element.width\r\n const elOriginHeight = element.height\r\n \r\n const elRotate = ('rotate' in element && element.rotate) ? element.rotate : 0\r\n const rotateRadian = Math.PI * elRotate / 180\r\n\r\n const fixedRatio = ctrlOrShiftKeyActive.value || ('fixedRatio' in element && element.fixedRatio)\r\n const aspectRatio = elOriginWidth / elOriginHeight\r\n\r\n const startPageX = e.pageX\r\n const startPageY = e.pageY\r\n\r\n // 元素最小缩放限制\r\n const minSize = MIN_SIZE[element.type] || 20\r\n const getSizeWithinRange = (size: number) => size < minSize ? minSize : size\r\n\r\n let points: ReturnType\r\n let baseLeft = 0\r\n let baseTop = 0\r\n let horizontalLines: AlignLine[] = []\r\n let verticalLines: AlignLine[] = []\r\n\r\n // 旋转后的元素进行缩放时,引入基点的概念,以当前操作的缩放点相对的点为基点\r\n // 例如拖动右下角缩放时,左上角为基点,需要保持左上角不变然后修改其他的点的位置来达到所放的效果\r\n if ('rotate' in element && element.rotate) {\r\n const { left, top, width, height } = element\r\n points = getRotateElementPoints({ left, top, width, height }, elRotate)\r\n const oppositePoint = getOppositePoint(command, points)\r\n\r\n baseLeft = oppositePoint.left\r\n baseTop = oppositePoint.top\r\n }\r\n\r\n // 未旋转的元素具有缩放时的对齐吸附功能,在这处收集对齐对齐吸附线\r\n // 包括页面内除目标元素外的其他元素在画布中的各个可吸附对齐位置:上下左右四边\r\n // 其中线条和被旋转过的元素不参与吸附对齐\r\n else {\r\n const edgeWidth = VIEWPORT_SIZE\r\n const edgeHeight = VIEWPORT_SIZE * viewportRatio.value\r\n const isActiveGroupElement = element.id === activeGroupElementId.value\r\n \r\n for (const el of elementList.value) {\r\n if ('rotate' in el && el.rotate) continue\r\n if (el.type === 'line') continue\r\n if (isActiveGroupElement && el.id === element.id) continue\r\n if (!isActiveGroupElement && activeElementIdList.value.includes(el.id)) continue\r\n\r\n const left = el.left\r\n const top = el.top\r\n const width = el.width\r\n const height = el.height\r\n const right = left + width\r\n const bottom = top + height\r\n\r\n const topLine: AlignLine = { value: top, range: [left, right] }\r\n const bottomLine: AlignLine = { value: bottom, range: [left, right] }\r\n const leftLine: AlignLine = { value: left, range: [top, bottom] }\r\n const rightLine: AlignLine = { value: right, range: [top, bottom] }\r\n\r\n horizontalLines.push(topLine, bottomLine)\r\n verticalLines.push(leftLine, rightLine)\r\n }\r\n\r\n // 画布可视区域的四个边界、水平中心、垂直中心\r\n const edgeTopLine: AlignLine = { value: 0, range: [0, edgeWidth] }\r\n const edgeBottomLine: AlignLine = { value: edgeHeight, range: [0, edgeWidth] }\r\n const edgeHorizontalCenterLine: AlignLine = { value: edgeHeight / 2, range: [0, edgeWidth] }\r\n const edgeLeftLine: AlignLine = { value: 0, range: [0, edgeHeight] }\r\n const edgeRightLine: AlignLine = { value: edgeWidth, range: [0, edgeHeight] }\r\n const edgeVerticalCenterLine: AlignLine = { value: edgeWidth / 2, range: [0, edgeHeight] }\r\n\r\n horizontalLines.push(edgeTopLine, edgeBottomLine, edgeHorizontalCenterLine)\r\n verticalLines.push(edgeLeftLine, edgeRightLine, edgeVerticalCenterLine)\r\n \r\n horizontalLines = uniqAlignLines(horizontalLines)\r\n verticalLines = uniqAlignLines(verticalLines)\r\n }\r\n \r\n // 对齐吸附方法\r\n // 将收集到的对齐吸附线与计算的目标元素当前的位置大小相关数据做对比,差值小于设定的值时执行自动缩放校正\r\n // 水平和垂直两个方向需要分开计算\r\n const alignedAdsorption = (currentX: number | null, currentY: number | null) => {\r\n const sorptionRange = 5\r\n\r\n const _alignmentLines: AlignmentLineProps[] = []\r\n let isVerticalAdsorbed = false\r\n let isHorizontalAdsorbed = false\r\n const correctionVal = { offsetX: 0, offsetY: 0 }\r\n \r\n if (currentY || currentY === 0) {\r\n for (let i = 0; i < horizontalLines.length; i++) {\r\n const { value, range } = horizontalLines[i]\r\n const min = Math.min(...range, currentX || 0)\r\n const max = Math.max(...range, currentX || 0)\r\n \r\n if (Math.abs(currentY - value) < sorptionRange && !isHorizontalAdsorbed) {\r\n correctionVal.offsetY = currentY - value\r\n isHorizontalAdsorbed = true\r\n _alignmentLines.push({ type: 'horizontal', axis: {x: min - 50, y: value}, length: max - min + 100 })\r\n }\r\n }\r\n }\r\n if (currentX || currentX === 0) {\r\n for (let i = 0; i < verticalLines.length; i++) {\r\n const { value, range } = verticalLines[i]\r\n const min = Math.min(...range, (currentY || 0))\r\n const max = Math.max(...range, (currentY || 0))\r\n\r\n if (Math.abs(currentX - value) < sorptionRange && !isVerticalAdsorbed) {\r\n correctionVal.offsetX = currentX - value\r\n isVerticalAdsorbed = true\r\n _alignmentLines.push({ type: 'vertical', axis: {x: value, y: min - 50}, length: max - min + 100 })\r\n }\r\n }\r\n }\r\n alignmentLines.value = _alignmentLines\r\n return correctionVal\r\n }\r\n\r\n // 开始缩放\r\n document.onmousemove = e => {\r\n if (!isMouseDown) return\r\n\r\n const currentPageX = e.pageX\r\n const currentPageY = e.pageY\r\n\r\n const x = currentPageX - startPageX\r\n const y = currentPageY - startPageY\r\n\r\n let width = elOriginWidth\r\n let height = elOriginHeight\r\n let left = elOriginLeft\r\n let top = elOriginTop\r\n \r\n // 元素被旋转的情况下,需要根据元素旋转的角度,重新计算需要缩放的距离(鼠标按下后移动的距离)\r\n if (elRotate) {\r\n const revisedX = (Math.cos(rotateRadian) * x + Math.sin(rotateRadian) * y) / canvasScale.value\r\n let revisedY = (Math.cos(rotateRadian) * y - Math.sin(rotateRadian) * x) / canvasScale.value\r\n\r\n // 锁定宽高比例(仅四个角可能触发,四条边不会触发)\r\n // 以水平方向上缩放的距离为基础,计算垂直方向上的缩放距离,保持二者具有相同的缩放比例\r\n if (fixedRatio) {\r\n if (command === OperateResizeHandlers.RIGHT_BOTTOM || command === OperateResizeHandlers.LEFT_TOP) revisedY = revisedX / aspectRatio\r\n if (command === OperateResizeHandlers.LEFT_BOTTOM || command === OperateResizeHandlers.RIGHT_TOP) revisedY = -revisedX / aspectRatio\r\n }\r\n\r\n // 根据不同的操作点分别计算元素缩放后的大小和位置\r\n // 需要注意:\r\n // 此处计算的位置需要在后面重新进行校正,因为旋转后再缩放事实上会改变元素基点的位置(虽然视觉上基点保持不动,但这是【旋转】+【移动】共同作用的结果)\r\n // 但此处计算的大小不需要重新校正,因为前面已经重新计算需要缩放的距离,相当于大小已经经过了校正\r\n if (command === OperateResizeHandlers.RIGHT_BOTTOM) {\r\n width = getSizeWithinRange(elOriginWidth + revisedX)\r\n height = getSizeWithinRange(elOriginHeight + revisedY)\r\n }\r\n else if (command === OperateResizeHandlers.LEFT_BOTTOM) {\r\n width = getSizeWithinRange(elOriginWidth - revisedX)\r\n height = getSizeWithinRange(elOriginHeight + revisedY)\r\n left = elOriginLeft - (width - elOriginWidth)\r\n }\r\n else if (command === OperateResizeHandlers.LEFT_TOP) {\r\n width = getSizeWithinRange(elOriginWidth - revisedX)\r\n height = getSizeWithinRange(elOriginHeight - revisedY)\r\n left = elOriginLeft - (width - elOriginWidth)\r\n top = elOriginTop - (height - elOriginHeight)\r\n }\r\n else if (command === OperateResizeHandlers.RIGHT_TOP) {\r\n width = getSizeWithinRange(elOriginWidth + revisedX)\r\n height = getSizeWithinRange(elOriginHeight - revisedY)\r\n top = elOriginTop - (height - elOriginHeight)\r\n }\r\n else if (command === OperateResizeHandlers.TOP) {\r\n height = getSizeWithinRange(elOriginHeight - revisedY)\r\n top = elOriginTop - (height - elOriginHeight)\r\n }\r\n else if (command === OperateResizeHandlers.BOTTOM) {\r\n height = getSizeWithinRange(elOriginHeight + revisedY)\r\n }\r\n else if (command === OperateResizeHandlers.LEFT) {\r\n width = getSizeWithinRange(elOriginWidth - revisedX)\r\n left = elOriginLeft - (width - elOriginWidth)\r\n }\r\n else if (command === OperateResizeHandlers.RIGHT) {\r\n width = getSizeWithinRange(elOriginWidth + revisedX)\r\n }\r\n\r\n // 获取当前元素的基点坐标,与初始状态时的基点坐标进行对比,并计算差值进行元素位置的校正\r\n const currentPoints = getRotateElementPoints({ width, height, left, top }, elRotate)\r\n const currentOppositePoint = getOppositePoint(command, currentPoints)\r\n const currentBaseLeft = currentOppositePoint.left\r\n const currentBaseTop = currentOppositePoint.top\r\n\r\n const offsetX = currentBaseLeft - baseLeft\r\n const offsetY = currentBaseTop - baseTop\r\n\r\n left = left - offsetX\r\n top = top - offsetY\r\n }\r\n\r\n // 元素未被旋转的情况下,正常计算新的位置大小即可,无需复杂的校正等工作\r\n // 额外需要处理对齐吸附相关的操作\r\n // 锁定宽高比例相关的操作同上,不再赘述\r\n else {\r\n let moveX = x / canvasScale.value\r\n let moveY = y / canvasScale.value\r\n\r\n if (fixedRatio) {\r\n if (command === OperateResizeHandlers.RIGHT_BOTTOM || command === OperateResizeHandlers.LEFT_TOP) moveY = moveX / aspectRatio\r\n if (command === OperateResizeHandlers.LEFT_BOTTOM || command === OperateResizeHandlers.RIGHT_TOP) moveY = -moveX / aspectRatio\r\n }\r\n\r\n if (command === OperateResizeHandlers.RIGHT_BOTTOM) {\r\n const { offsetX, offsetY } = alignedAdsorption(elOriginLeft + elOriginWidth + moveX, elOriginTop + elOriginHeight + moveY)\r\n moveX = moveX - offsetX\r\n moveY = moveY - offsetY\r\n if (fixedRatio) {\r\n if (offsetY) moveX = moveY * aspectRatio\r\n else moveY = moveX / aspectRatio\r\n }\r\n width = getSizeWithinRange(elOriginWidth + moveX)\r\n height = getSizeWithinRange(elOriginHeight + moveY)\r\n }\r\n else if (command === OperateResizeHandlers.LEFT_BOTTOM) {\r\n const { offsetX, offsetY } = alignedAdsorption(elOriginLeft + moveX, elOriginTop + elOriginHeight + moveY)\r\n moveX = moveX - offsetX\r\n moveY = moveY - offsetY\r\n if (fixedRatio) {\r\n if (offsetY) moveX = -moveY * aspectRatio\r\n else moveY = -moveX / aspectRatio\r\n }\r\n width = getSizeWithinRange(elOriginWidth - moveX)\r\n height = getSizeWithinRange(elOriginHeight + moveY)\r\n left = elOriginLeft - (width - elOriginWidth)\r\n }\r\n else if (command === OperateResizeHandlers.LEFT_TOP) {\r\n const { offsetX, offsetY } = alignedAdsorption(elOriginLeft + moveX, elOriginTop + moveY)\r\n moveX = moveX - offsetX\r\n moveY = moveY - offsetY\r\n if (fixedRatio) {\r\n if (offsetY) moveX = moveY * aspectRatio\r\n else moveY = moveX / aspectRatio\r\n }\r\n width = getSizeWithinRange(elOriginWidth - moveX)\r\n height = getSizeWithinRange(elOriginHeight - moveY)\r\n left = elOriginLeft - (width - elOriginWidth)\r\n top = elOriginTop - (height - elOriginHeight)\r\n }\r\n else if (command === OperateResizeHandlers.RIGHT_TOP) {\r\n const { offsetX, offsetY } = alignedAdsorption(elOriginLeft + elOriginWidth + moveX, elOriginTop + moveY)\r\n moveX = moveX - offsetX\r\n moveY = moveY - offsetY\r\n if (fixedRatio) {\r\n if (offsetY) moveX = -moveY * aspectRatio\r\n else moveY = -moveX / aspectRatio\r\n }\r\n width = getSizeWithinRange(elOriginWidth + moveX)\r\n height = getSizeWithinRange(elOriginHeight - moveY)\r\n top = elOriginTop - (height - elOriginHeight)\r\n }\r\n else if (command === OperateResizeHandlers.LEFT) {\r\n const { offsetX } = alignedAdsorption(elOriginLeft + moveX, null)\r\n moveX = moveX - offsetX\r\n width = getSizeWithinRange(elOriginWidth - moveX)\r\n left = elOriginLeft - (width - elOriginWidth)\r\n }\r\n else if (command === OperateResizeHandlers.RIGHT) {\r\n const { offsetX } = alignedAdsorption(elOriginLeft + elOriginWidth + moveX, null)\r\n moveX = moveX - offsetX\r\n width = getSizeWithinRange(elOriginWidth + moveX)\r\n }\r\n else if (command === OperateResizeHandlers.TOP) {\r\n const { offsetY } = alignedAdsorption(null, elOriginTop + moveY)\r\n moveY = moveY - offsetY\r\n height = getSizeWithinRange(elOriginHeight - moveY)\r\n top = elOriginTop - (height - elOriginHeight)\r\n }\r\n else if (command === OperateResizeHandlers.BOTTOM) {\r\n const { offsetY } = alignedAdsorption(null, elOriginTop + elOriginHeight + moveY)\r\n moveY = moveY - offsetY\r\n height = getSizeWithinRange(elOriginHeight + moveY)\r\n }\r\n }\r\n \r\n elementList.value = elementList.value.map(el => element.id === el.id ? { ...el, left, top, width, height } : el)\r\n }\r\n\r\n document.onmouseup = e => {\r\n isMouseDown = false\r\n document.onmousemove = null\r\n document.onmouseup = null\r\n alignmentLines.value = []\r\n \r\n if (startPageX === e.pageX && startPageY === e.pageY) return\r\n \r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: elementList.value })\r\n emitter.emit(EmitterEvents.SCALE_ELEMENT_STATE, false)\r\n \r\n addHistorySnapshot()\r\n }\r\n }\r\n\r\n // 多选元素缩放\r\n const scaleMultiElement = (e: MouseEvent, range: MultiSelectRange, command: OperateResizeHandlers) => {\r\n let isMouseDown = true\r\n \r\n const { minX, maxX, minY, maxY } = range\r\n const operateWidth = maxX - minX\r\n const operateHeight = maxY - minY\r\n const aspectRatio = operateWidth / operateHeight\r\n\r\n const startPageX = e.pageX\r\n const startPageY = e.pageY\r\n\r\n const originElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList.value))\r\n\r\n document.onmousemove = e => {\r\n if (!isMouseDown) return\r\n \r\n const currentPageX = e.pageX\r\n const currentPageY = e.pageY\r\n\r\n const x = (currentPageX - startPageX) / canvasScale.value\r\n let y = (currentPageY - startPageY) / canvasScale.value\r\n\r\n // 锁定宽高比例,逻辑同上\r\n if (ctrlOrShiftKeyActive.value) {\r\n if (command === OperateResizeHandlers.RIGHT_BOTTOM || command === OperateResizeHandlers.LEFT_TOP) y = x / aspectRatio\r\n if (command === OperateResizeHandlers.LEFT_BOTTOM || command === OperateResizeHandlers.RIGHT_TOP) y = -x / aspectRatio\r\n }\r\n\r\n // 所有选中元素的整体范围\r\n let currentMinX = minX\r\n let currentMaxX = maxX\r\n let currentMinY = minY\r\n let currentMaxY = maxY\r\n\r\n if (command === OperateResizeHandlers.RIGHT_BOTTOM) {\r\n currentMaxX = maxX + x\r\n currentMaxY = maxY + y\r\n }\r\n else if (command === OperateResizeHandlers.LEFT_BOTTOM) {\r\n currentMinX = minX + x\r\n currentMaxY = maxY + y\r\n }\r\n else if (command === OperateResizeHandlers.LEFT_TOP) {\r\n currentMinX = minX + x\r\n currentMinY = minY + y\r\n }\r\n else if (command === OperateResizeHandlers.RIGHT_TOP) {\r\n currentMaxX = maxX + x\r\n currentMinY = minY + y\r\n }\r\n else if (command === OperateResizeHandlers.TOP) {\r\n currentMinY = minY + y\r\n }\r\n else if (command === OperateResizeHandlers.BOTTOM) {\r\n currentMaxY = maxY + y\r\n }\r\n else if (command === OperateResizeHandlers.LEFT) {\r\n currentMinX = minX + x\r\n }\r\n else if (command === OperateResizeHandlers.RIGHT) {\r\n currentMaxX = maxX + x\r\n }\r\n\r\n // 所有选中元素的整体宽高\r\n const currentOppositeWidth = currentMaxX - currentMinX\r\n const currentOppositeHeight = currentMaxY - currentMinY\r\n\r\n // 当前正在操作元素宽高占所有选中元素的整体宽高的比例\r\n let widthScale = currentOppositeWidth / operateWidth\r\n let heightScale = currentOppositeHeight / operateHeight\r\n\r\n if (widthScale <= 0) widthScale = 0\r\n if (heightScale <= 0) heightScale = 0\r\n \r\n // 根据前面计算的比例,计算并修改所有选中元素的位置大小\r\n elementList.value = elementList.value.map(el => {\r\n if ((el.type === 'image' || el.type === 'shape') && activeElementIdList.value.includes(el.id)) {\r\n const originElement = originElementList.find(originEl => originEl.id === el.id) as PPTImageElement | PPTShapeElement\r\n return {\r\n ...el,\r\n width: originElement.width * widthScale,\r\n height: originElement.height * heightScale,\r\n left: currentMinX + (originElement.left - minX) * widthScale,\r\n top: currentMinY + (originElement.top - minY) * heightScale,\r\n }\r\n }\r\n return el\r\n })\r\n }\r\n\r\n document.onmouseup = e => {\r\n isMouseDown = false\r\n document.onmousemove = null\r\n document.onmouseup = null\r\n\r\n if (startPageX === e.pageX && startPageY === e.pageY) return\r\n\r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: elementList.value })\r\n addHistorySnapshot()\r\n }\r\n }\r\n\r\n return {\r\n scaleElement,\r\n scaleMultiElement,\r\n }\r\n}","import { Ref, computed } from 'vue'\r\nimport uniq from 'lodash/uniq'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement } from '@/types/slides'\r\n\r\nexport default (\r\n elementList: Ref,\r\n activeGroupElementId: Ref,\r\n moveElement: (e: MouseEvent, element: PPTElement) => void,\r\n) => {\r\n const store = useStore()\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const handleElementId = computed(() => store.state.handleElementId)\r\n const editorAreaFocus = computed(() => store.state.editorAreaFocus)\r\n const ctrlOrShiftKeyActive = computed(() => store.getters.ctrlOrShiftKeyActive)\r\n\r\n // 选中元素\r\n const selectElement = (e: MouseEvent, element: PPTElement, canMove = true) => {\r\n if (!editorAreaFocus.value) store.commit(MutationTypes.SET_EDITORAREA_FOCUS, true)\r\n\r\n // 如果目标元素当前未被选中,则将他设为选中状态\r\n // 此时如果按下Ctrl键或Shift键,则进入多选状态,将当前已选中的元素和目标元素一桶设置为选中状态,否则仅将目标元素设置为选中状态\r\n // 如果目标元素是分组成员,需要将该组合的其他元素一起设置为选中状态\r\n if (!activeElementIdList.value.includes(element.id)) {\r\n let newActiveIdList: string[] = []\r\n\r\n if (ctrlOrShiftKeyActive.value) {\r\n newActiveIdList = [...activeElementIdList.value, element.id]\r\n }\r\n else newActiveIdList = [element.id]\r\n \r\n if (element.groupId) {\r\n const groupMembersId: string[] = []\r\n elementList.value.forEach((el: PPTElement) => {\r\n if (el.groupId === element.groupId) groupMembersId.push(el.id)\r\n })\r\n newActiveIdList = [...newActiveIdList, ...groupMembersId]\r\n }\r\n\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, uniq(newActiveIdList))\r\n store.commit(MutationTypes.SET_HANDLE_ELEMENT_ID, element.id)\r\n }\r\n\r\n // 如果目标元素已被选中,且按下了Ctrl键或Shift键,则取消其被选中状态\r\n // 除非目标元素是最后的一个被选中元素,或者目标元素所在的组合是最后一组选中组合\r\n // 如果目标元素是分组成员,需要将该组合的其他元素一起取消选中状态\r\n else if (ctrlOrShiftKeyActive.value) {\r\n let newActiveIdList: string[] = []\r\n\r\n if (element.groupId) {\r\n const groupMembersId: string[] = []\r\n elementList.value.forEach((el: PPTElement) => {\r\n if (el.groupId === element.groupId) groupMembersId.push(el.id)\r\n })\r\n newActiveIdList = activeElementIdList.value.filter(id => !groupMembersId.includes(id))\r\n }\r\n else {\r\n newActiveIdList = activeElementIdList.value.filter(id => id !== element.id)\r\n }\r\n\r\n if (newActiveIdList.length > 0) {\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, newActiveIdList)\r\n }\r\n }\r\n\r\n // 如果目标元素已被选中,同时目标元素不是当前操作元素,则将其设置为当前操作元素\r\n else if (handleElementId.value !== element.id) {\r\n store.commit(MutationTypes.SET_HANDLE_ELEMENT_ID, element.id)\r\n }\r\n\r\n // 如果目标元素已被选中,同时也是当前操作元素,那么当目标元素在该状态下再次被点击时,将被设置为多选元素中的激活成员\r\n else if (activeGroupElementId.value !== element.id) {\r\n const startPageX = e.pageX\r\n const startPageY = e.pageY\r\n\r\n ;(e.target as HTMLElement).onmouseup = (e: MouseEvent) => {\r\n const currentPageX = e.pageX\r\n const currentPageY = e.pageY\r\n\r\n if (startPageX === currentPageX && startPageY === currentPageY) {\r\n activeGroupElementId.value = element.id\r\n ;(e.target as HTMLElement).onmouseup = null\r\n }\r\n }\r\n }\r\n\r\n if (canMove) moveElement(e, element)\r\n }\r\n\r\n // 选中页面内的全部元素\r\n const selectAllElement = () => {\r\n const unlockedElements = elementList.value.filter(el => !el.lock)\r\n const newActiveElementIdList = unlockedElements.map(el => el.id)\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, newActiveElementIdList)\r\n }\r\n\r\n return {\r\n selectElement,\r\n selectAllElement,\r\n }\r\n}","import { Ref, computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement } from '@/types/slides'\r\nimport { AlignmentLineProps } from '@/types/edit'\r\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\r\nimport { getRectRotatedRange, AlignLine, uniqAlignLines } from '@/utils/element'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default (\r\n elementList: Ref,\r\n activeGroupElementId: Ref,\r\n alignmentLines: Ref,\r\n) => {\r\n const store = useStore()\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n const viewportRatio = computed(() => store.state.viewportRatio)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n const dragElement = (e: MouseEvent, element: PPTElement) => {\r\n if (!activeElementIdList.value.includes(element.id)) return\r\n let isMouseDown = true\r\n\r\n const edgeWidth = VIEWPORT_SIZE\r\n const edgeHeight = VIEWPORT_SIZE * viewportRatio.value\r\n \r\n const sorptionRange = 5\r\n\r\n const originElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList.value))\r\n const originActiveElementList = originElementList.filter(el => activeElementIdList.value.includes(el.id))\r\n \r\n const elOriginLeft = element.left\r\n const elOriginTop = element.top\r\n const elOriginWidth = element.width\r\n const elOriginHeight = ('height' in element && element.height) ? element.height : 0\r\n const elOriginRotate = ('rotate' in element && element.rotate) ? element.rotate : 0\r\n \r\n const startPageX = e.pageX\r\n const startPageY = e.pageY\r\n\r\n let isMisoperation: boolean | null = null\r\n\r\n const isActiveGroupElement = element.id === activeGroupElementId.value\r\n\r\n // 收集对齐对齐吸附线\r\n // 包括页面内除目标元素外的其他元素在画布中的各个可吸附对齐位置:上下左右四边,水平中心、垂直中心\r\n // 其中线条和被旋转过的元素需要重新计算他们在画布中的中心点位置的范围\r\n let horizontalLines: AlignLine[] = []\r\n let verticalLines: AlignLine[] = []\r\n\r\n for (const el of elementList.value) {\r\n if (el.type === 'line') continue\r\n if (isActiveGroupElement && el.id === element.id) continue\r\n if (!isActiveGroupElement && activeElementIdList.value.includes(el.id)) continue\r\n\r\n let left, top, width, height\r\n if ('rotate' in el && el.rotate) {\r\n const { xRange, yRange } = getRectRotatedRange({\r\n left: el.left,\r\n top: el.top,\r\n width: el.width,\r\n height: el.height,\r\n rotate: el.rotate,\r\n })\r\n left = xRange[0]\r\n top = yRange[0]\r\n width = xRange[1] - xRange[0]\r\n height = yRange[1] - yRange[0]\r\n }\r\n else {\r\n left = el.left\r\n top = el.top\r\n width = el.width\r\n height = el.height\r\n }\r\n \r\n const right = left + width\r\n const bottom = top + height\r\n const centerX = top + height / 2\r\n const centerY = left + width / 2\r\n\r\n const topLine: AlignLine = { value: top, range: [left, right] }\r\n const bottomLine: AlignLine = { value: bottom, range: [left, right] }\r\n const horizontalCenterLine: AlignLine = { value: centerX, range: [left, right] }\r\n const leftLine: AlignLine = { value: left, range: [top, bottom] }\r\n const rightLine: AlignLine = { value: right, range: [top, bottom] }\r\n const verticalCenterLine: AlignLine = { value: centerY, range: [top, bottom] }\r\n\r\n horizontalLines.push(topLine, bottomLine, horizontalCenterLine)\r\n verticalLines.push(leftLine, rightLine, verticalCenterLine)\r\n }\r\n\r\n // 画布可视区域的四个边界、水平中心、垂直中心\r\n const edgeTopLine: AlignLine = { value: 0, range: [0, edgeWidth] }\r\n const edgeBottomLine: AlignLine = { value: edgeHeight, range: [0, edgeWidth] }\r\n const edgeHorizontalCenterLine: AlignLine = { value: edgeHeight / 2, range: [0, edgeWidth] }\r\n const edgeLeftLine: AlignLine = { value: 0, range: [0, edgeHeight] }\r\n const edgeRightLine: AlignLine = { value: edgeWidth, range: [0, edgeHeight] }\r\n const edgeVerticalCenterLine: AlignLine = { value: edgeWidth / 2, range: [0, edgeHeight] }\r\n\r\n horizontalLines.push(edgeTopLine, edgeBottomLine, edgeHorizontalCenterLine)\r\n verticalLines.push(edgeLeftLine, edgeRightLine, edgeVerticalCenterLine)\r\n \r\n // 对齐吸附线去重\r\n horizontalLines = uniqAlignLines(horizontalLines)\r\n verticalLines = uniqAlignLines(verticalLines)\r\n\r\n // 开始移动\r\n document.onmousemove = e => {\r\n const currentPageX = e.pageX\r\n const currentPageY = e.pageY\r\n\r\n // 如果鼠标滑动距离过小,则将操作判定为误操作:\r\n // 如果误操作标记为null,表示是第一次触发移动,需要计算当前是否是误操作\r\n // 如果误操作标记为true,表示当前还处在误操作范围内,但仍然需要继续计算检查后续操作是否还处于误操作\r\n // 如果误操作标记为false,表示已经脱离了误操作范围,不需要再次计算\r\n if (isMisoperation !== false) {\r\n isMisoperation = Math.abs(startPageX - currentPageX) < sorptionRange && \r\n Math.abs(startPageY - currentPageY) < sorptionRange\r\n }\r\n if (!isMouseDown || isMisoperation) return\r\n\r\n const moveX = (currentPageX - startPageX) / canvasScale.value\r\n const moveY = (currentPageY - startPageY) / canvasScale.value\r\n\r\n // 基础目标位置\r\n let targetLeft = elOriginLeft + moveX\r\n let targetTop = elOriginTop + moveY\r\n\r\n // 计算目标元素在画布中的位置范围,用于吸附对齐\r\n // 需要区分单选和多选两种情况,其中多选状态下需要计算多选元素的整体范围;单选状态下需要继续区分线条、普通元素、旋转后的普通元素三种情况\r\n let targetMinX: number, targetMaxX: number, targetMinY: number, targetMaxY: number\r\n\r\n if (activeElementIdList.value.length === 1 || isActiveGroupElement) {\r\n if (elOriginRotate) {\r\n const { xRange, yRange } = getRectRotatedRange({\r\n left: targetLeft,\r\n top: targetTop,\r\n width: elOriginWidth,\r\n height: elOriginHeight,\r\n rotate: elOriginRotate,\r\n })\r\n targetMinX = xRange[0]\r\n targetMaxX = xRange[1]\r\n targetMinY = yRange[0]\r\n targetMaxY = yRange[1]\r\n }\r\n else if (element.type === 'line') {\r\n targetMinX = targetLeft\r\n targetMaxX = targetLeft + Math.max(element.start[0], element.end[0])\r\n targetMinY = targetTop\r\n targetMaxY = targetTop + Math.max(element.start[1], element.end[1])\r\n }\r\n else {\r\n targetMinX = targetLeft\r\n targetMaxX = targetLeft + elOriginWidth\r\n targetMinY = targetTop\r\n targetMaxY = targetTop + elOriginHeight\r\n }\r\n }\r\n else {\r\n const leftValues = []\r\n const topValues = []\r\n const rightValues = []\r\n const bottomValues = []\r\n \r\n for (let i = 0; i < originActiveElementList.length; i++) {\r\n const element = originActiveElementList[i]\r\n const left = element.left + moveX\r\n const top = element.top + moveY\r\n const width = element.width\r\n const height = ('height' in element && element.height) ? element.height : 0\r\n const rotate = ('rotate' in element && element.rotate) ? element.rotate : 0\r\n\r\n if ('rotate' in element && element.rotate) {\r\n const { xRange, yRange } = getRectRotatedRange({ left, top, width, height, rotate })\r\n leftValues.push(xRange[0])\r\n topValues.push(yRange[0])\r\n rightValues.push(xRange[1])\r\n bottomValues.push(yRange[1])\r\n }\r\n else if (element.type === 'line') {\r\n leftValues.push(left)\r\n topValues.push(top)\r\n rightValues.push(left + Math.max(element.start[0], element.end[0]))\r\n bottomValues.push(top + Math.max(element.start[1], element.end[1]))\r\n }\r\n else {\r\n leftValues.push(left)\r\n topValues.push(top)\r\n rightValues.push(left + width)\r\n bottomValues.push(top + height)\r\n }\r\n }\r\n\r\n targetMinX = Math.min(...leftValues)\r\n targetMaxX = Math.max(...rightValues)\r\n targetMinY = Math.min(...topValues)\r\n targetMaxY = Math.max(...bottomValues)\r\n }\r\n \r\n const targetCenterX = targetMinX + (targetMaxX - targetMinX) / 2\r\n const targetCenterY = targetMinY + (targetMaxY - targetMinY) / 2\r\n\r\n // 将收集到的对齐吸附线与计算的目标元素位置范围做对比,二者的差小于设定的值时执行自动对齐校正\r\n // 水平和垂直两个方向需要分开计算\r\n const _alignmentLines: AlignmentLineProps[] = []\r\n let isVerticalAdsorbed = false\r\n let isHorizontalAdsorbed = false\r\n for (let i = 0; i < horizontalLines.length; i++) {\r\n const { value, range } = horizontalLines[i]\r\n const min = Math.min(...range, targetMinX, targetMaxX)\r\n const max = Math.max(...range, targetMinX, targetMaxX)\r\n \r\n if (Math.abs(targetMinY - value) < sorptionRange && !isHorizontalAdsorbed) {\r\n targetTop = targetTop - (targetMinY - value)\r\n isHorizontalAdsorbed = true\r\n _alignmentLines.push({type: 'horizontal', axis: {x: min - 50, y: value}, length: max - min + 100})\r\n }\r\n if (Math.abs(targetMaxY - value) < sorptionRange && !isHorizontalAdsorbed) {\r\n targetTop = targetTop - (targetMaxY - value)\r\n isHorizontalAdsorbed = true\r\n _alignmentLines.push({type: 'horizontal', axis: {x: min - 50, y: value}, length: max - min + 100})\r\n }\r\n if (Math.abs(targetCenterY - value) < sorptionRange && !isHorizontalAdsorbed) {\r\n targetTop = targetTop - (targetCenterY - value)\r\n isHorizontalAdsorbed = true\r\n _alignmentLines.push({type: 'horizontal', axis: {x: min - 50, y: value}, length: max - min + 100})\r\n }\r\n }\r\n for (let i = 0; i < verticalLines.length; i++) {\r\n const { value, range } = verticalLines[i]\r\n const min = Math.min(...range, targetMinY, targetMaxY)\r\n const max = Math.max(...range, targetMinY, targetMaxY)\r\n\r\n if (Math.abs(targetMinX - value) < sorptionRange && !isVerticalAdsorbed) {\r\n targetLeft = targetLeft - (targetMinX - value)\r\n isVerticalAdsorbed = true\r\n _alignmentLines.push({type: 'vertical', axis: {x: value, y: min - 50}, length: max - min + 100})\r\n }\r\n if (Math.abs(targetMaxX - value) < sorptionRange && !isVerticalAdsorbed) {\r\n targetLeft = targetLeft - (targetMaxX - value)\r\n isVerticalAdsorbed = true\r\n _alignmentLines.push({type: 'vertical', axis: {x: value, y: min - 50}, length: max - min + 100})\r\n }\r\n if (Math.abs(targetCenterX - value) < sorptionRange && !isVerticalAdsorbed) {\r\n targetLeft = targetLeft - (targetCenterX - value)\r\n isVerticalAdsorbed = true\r\n _alignmentLines.push({type: 'vertical', axis: {x: value, y: min - 50}, length: max - min + 100})\r\n }\r\n }\r\n alignmentLines.value = _alignmentLines\r\n \r\n // 单选状态下,或者当前选中的多个元素中存在正在操作的元素时,仅修改正在操作的元素的位置\r\n if (activeElementIdList.value.length === 1 || isActiveGroupElement) {\r\n elementList.value = elementList.value.map(el => {\r\n return el.id === element.id ? { ...el, left: targetLeft, top: targetTop } : el\r\n })\r\n }\r\n\r\n // 多选状态下,除了修改正在操作的元素的位置,其他被选中的元素也需要修改位置信息\r\n // 其他被选中的元素的位置信息通过正在操作的元素的移动偏移量来进行计算\r\n else {\r\n const handleElement = elementList.value.find(el => el.id === element.id)\r\n if (!handleElement) return\r\n\r\n elementList.value = elementList.value.map(el => {\r\n if (activeElementIdList.value.includes(el.id)) {\r\n if (el.id === element.id) {\r\n return {\r\n ...el,\r\n left: targetLeft,\r\n top: targetTop,\r\n }\r\n }\r\n return {\r\n ...el,\r\n left: el.left + (targetLeft - handleElement.left),\r\n top: el.top + (targetTop - handleElement.top),\r\n }\r\n }\r\n return el\r\n })\r\n }\r\n }\r\n\r\n document.onmouseup = e => {\r\n isMouseDown = false\r\n document.onmousemove = null\r\n document.onmouseup = null\r\n alignmentLines.value = []\r\n\r\n const currentPageX = e.pageX\r\n const currentPageY = e.pageY\r\n\r\n if (startPageX === currentPageX && startPageY === currentPageY) return\r\n\r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: elementList.value })\r\n addHistorySnapshot()\r\n }\r\n }\r\n\r\n return {\r\n dragElement,\r\n }\r\n}","import { Ref, computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement, PPTLineElement } from '@/types/slides'\r\nimport { OperateLineHandler, OperateLineHandlers } from '@/types/edit'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\ninterface AdsorptionPoint {\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport default (elementList: Ref) => {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 拖拽线条端点\r\n const dragLineElement = (e: MouseEvent, element: PPTLineElement, command: OperateLineHandler) => {\r\n let isMouseDown = true\r\n\r\n const sorptionRange = 8\r\n\r\n const startPageX = e.pageX\r\n const startPageY = e.pageY\r\n\r\n const adsorptionPoints: AdsorptionPoint[] = []\r\n\r\n // 获取所有线条以外的未旋转的元素的8个缩放点作为吸附位置\r\n for (let i = 0; i < elementList.value.length; i++) {\r\n const _element = elementList.value[i]\r\n if (_element.type === 'line' || ('rotate' in _element && _element.rotate)) continue\r\n\r\n const left = _element.left\r\n const top = _element.top\r\n const width = _element.width\r\n const height = _element.height\r\n \r\n const right = left + width\r\n const bottom = top + height\r\n const centerX = top + height / 2\r\n const centerY = left + width / 2\r\n\r\n const topPoint = { x: centerY, y: top }\r\n const bottomPoint = { x: centerY, y: bottom }\r\n const leftPoint = { x: left, y: centerX }\r\n const rightPoint = { x: right, y: centerX }\r\n\r\n const leftTopPoint = { x: left, y: top }\r\n const rightTopPoint = { x: right, y: top }\r\n const leftBottomPoint = { x: left, y: bottom }\r\n const rightBottomPoint = { x: right, y: bottom }\r\n\r\n adsorptionPoints.push(\r\n topPoint,\r\n bottomPoint,\r\n leftPoint,\r\n rightPoint,\r\n leftTopPoint,\r\n rightTopPoint,\r\n leftBottomPoint,\r\n rightBottomPoint,\r\n )\r\n }\r\n\r\n document.onmousemove = e => {\r\n if (!isMouseDown) return\r\n\r\n const currentPageX = e.pageX\r\n const currentPageY = e.pageY\r\n\r\n const moveX = (currentPageX - startPageX) / canvasScale.value\r\n const moveY = (currentPageY - startPageY) / canvasScale.value\r\n \r\n // 线条起点和终点在编辑区域中的位置\r\n let startX = element.left + element.start[0]\r\n let startY = element.top + element.start[1]\r\n let endX = element.left + element.end[0]\r\n let endY = element.top + element.end[1]\r\n\r\n const mid = element.broken || element.curve || [0, 0]\r\n let midX = element.left + mid[0]\r\n let midY = element.top + mid[1]\r\n\r\n // 拖拽起点或终点的位置\r\n // 水平和垂直方向上有吸附\r\n if (command === OperateLineHandlers.START) {\r\n startX = startX + moveX\r\n startY = startY + moveY\r\n\r\n if (Math.abs(startX - endX) < sorptionRange) startX = endX\r\n if (Math.abs(startY - endY) < sorptionRange) startY = endY\r\n\r\n for (const adsorptionPoint of adsorptionPoints) {\r\n const { x, y } = adsorptionPoint\r\n if (Math.abs(x - startX) < sorptionRange && Math.abs(y - startY) < sorptionRange) {\r\n startX = x\r\n startY = y\r\n break\r\n }\r\n }\r\n }\r\n else if (command === OperateLineHandlers.END) {\r\n endX = endX + moveX\r\n endY = endY + moveY\r\n\r\n if (Math.abs(startX - endX) < sorptionRange) endX = startX\r\n if (Math.abs(startY - endY) < sorptionRange) endY = startY\r\n\r\n for (const adsorptionPoint of adsorptionPoints) {\r\n const { x, y } = adsorptionPoint\r\n if (Math.abs(x - endX) < sorptionRange && Math.abs(y - endY) < sorptionRange) {\r\n endX = x\r\n endY = y\r\n break\r\n }\r\n }\r\n }\r\n else {\r\n midX = midX + moveX\r\n midY = midY + moveY\r\n\r\n if (Math.abs(midX - startX) < sorptionRange) midX = startX\r\n if (Math.abs(midY - startY) < sorptionRange) midY = startY\r\n if (Math.abs(midX - endX) < sorptionRange) midX = endX\r\n if (Math.abs(midY - endY) < sorptionRange) midY = endY\r\n if (Math.abs(midX - (startX + endX) / 2) < sorptionRange && Math.abs(midY - (startY + endY) / 2) < sorptionRange) {\r\n midX = (startX + endX) / 2\r\n midY = (startY + endY) / 2\r\n }\r\n }\r\n\r\n // 计算更新起点和终点基于自身元素位置的坐标\r\n const minX = Math.min(startX, endX)\r\n const minY = Math.min(startY, endY)\r\n const maxX = Math.max(startX, endX)\r\n const maxY = Math.max(startY, endY)\r\n\r\n const start: [number, number] = [0, 0]\r\n const end: [number, number] = [maxX - minX, maxY - minY]\r\n if (startX > endX) {\r\n start[0] = maxX - minX\r\n end[0] = 0\r\n }\r\n if (startY > endY) {\r\n start[1] = maxY - minY\r\n end[1] = 0\r\n }\r\n\r\n elementList.value = elementList.value.map(el => {\r\n if (el.id === element.id) {\r\n const newEl: PPTLineElement = {\r\n ...(el as PPTLineElement),\r\n left: minX,\r\n top: minY,\r\n start: start,\r\n end: end,\r\n }\r\n if (command !== OperateLineHandlers.MID) {\r\n if (element.broken) newEl.broken = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]\r\n if (element.curve) newEl.curve = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]\r\n }\r\n else {\r\n if (element.broken) newEl.broken = [midX - minX, midY - minY]\r\n if (element.curve) newEl.curve = [midX - minX, midY - minY]\r\n }\r\n return newEl\r\n }\r\n return el\r\n })\r\n }\r\n\r\n document.onmouseup = e => {\r\n isMouseDown = false\r\n document.onmousemove = null\r\n document.onmouseup = null\r\n\r\n const currentPageX = e.pageX\r\n const currentPageY = e.pageY\r\n\r\n if (startPageX === currentPageX && startPageY === currentPageY) return\r\n\r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: elementList.value })\r\n addHistorySnapshot()\r\n }\r\n }\r\n\r\n return {\r\n dragLineElement,\r\n }\r\n}","import { computed, Ref } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { CreateElementSelectionData, CreatingLineElement, CreatingShapeElement } from '@/types/edit'\r\nimport useCreateElement from '@/hooks/useCreateElement'\r\n\r\nexport default (viewportRef: Ref) => {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n const creatingElement = computed(() => store.state.creatingElement)\r\n\r\n // 通过鼠标框选时的起点和终点,计算选区的位置大小\r\n const formatCreateSelection = (selectionData: CreateElementSelectionData) => {\r\n const { start, end } = selectionData\r\n\r\n if (!viewportRef.value) return\r\n const viewportRect = viewportRef.value.getBoundingClientRect()\r\n\r\n const [startX, startY] = start\r\n const [endX, endY] = end\r\n const minX = Math.min(startX, endX)\r\n const maxX = Math.max(startX, endX)\r\n const minY = Math.min(startY, endY)\r\n const maxY = Math.max(startY, endY)\r\n\r\n const left = (minX - viewportRect.x) / canvasScale.value\r\n const top = (minY - viewportRect.y) / canvasScale.value\r\n const width = (maxX - minX) / canvasScale.value\r\n const height = (maxY - minY) / canvasScale.value\r\n\r\n return { left, top, width, height }\r\n }\r\n\r\n // 通过鼠标框选时的起点和终点,计算线条在画布中的位置和起点终点\r\n const formatCreateSelectionForLine = (selectionData: CreateElementSelectionData) => {\r\n const { start, end } = selectionData\r\n\r\n if (!viewportRef.value) return\r\n const viewportRect = viewportRef.value.getBoundingClientRect()\r\n\r\n const [startX, startY] = start\r\n const [endX, endY] = end\r\n const minX = Math.min(startX, endX)\r\n const maxX = Math.max(startX, endX)\r\n const minY = Math.min(startY, endY)\r\n const maxY = Math.max(startY, endY)\r\n\r\n const left = (minX - viewportRect.x) / canvasScale.value\r\n const top = (minY - viewportRect.y) / canvasScale.value\r\n const width = (maxX - minX) / canvasScale.value\r\n const height = (maxY - minY) / canvasScale.value\r\n\r\n const _start: [number, number] = [\r\n startX === minX ? 0 : width,\r\n startY === minY ? 0 : height,\r\n ]\r\n const _end: [number, number] = [\r\n endX === minX ? 0 : width,\r\n endY === minY ? 0 : height,\r\n ]\r\n\r\n return {\r\n left,\r\n top,\r\n start: _start,\r\n end: _end,\r\n }\r\n }\r\n\r\n const { createTextElement, createShapeElement, createLineElement } = useCreateElement()\r\n\r\n // 根据鼠标选区的位置大小插入元素\r\n const insertElementFromCreateSelection = (selectionData: CreateElementSelectionData) => {\r\n if (!creatingElement.value) return\r\n\r\n const type = creatingElement.value.type\r\n if (type === 'text') {\r\n const position = formatCreateSelection(selectionData)\r\n position && createTextElement(position)\r\n }\r\n else if (type === 'shape') {\r\n const position = formatCreateSelection(selectionData)\r\n position && createShapeElement(position, (creatingElement.value as CreatingShapeElement).data)\r\n }\r\n else if (type === 'line') {\r\n const position = formatCreateSelectionForLine(selectionData)\r\n position && createLineElement(position, (creatingElement.value as CreatingLineElement).data)\r\n }\r\n store.commit(MutationTypes.SET_CREATING_ELEMENT, null)\r\n }\r\n\r\n return {\r\n insertElementFromCreateSelection,\r\n }\r\n}","\r\n \r\n \r\n
\r\n\r\n\r\n","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement, Slide } from '@/types/slides'\r\nimport { ElementAlignCommand, ElementAlignCommands } from '@/types/edit'\r\nimport { getElementListRange } from '@/utils/element'\r\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\r\nimport useHistorySnapshot from './useHistorySnapshot'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const viewportRatio = computed(() => store.state.viewportRatio)\r\n const activeElementList = computed(() => store.getters.activeElementList)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n /**\r\n * 将所有选中的元素对齐到画布\r\n * @param command 对齐方向\r\n */\r\n const alignElementToCanvas = (command: ElementAlignCommand) => {\r\n const viewportWidth = VIEWPORT_SIZE\r\n const viewportHeight = VIEWPORT_SIZE * viewportRatio.value\r\n const { minX, maxX, minY, maxY } = getElementListRange(activeElementList.value)\r\n \r\n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\r\n for (const element of newElementList) {\r\n if (!activeElementIdList.value.includes(element.id)) continue\r\n \r\n // 水平垂直居中\r\n if (command === ElementAlignCommands.CENTER) {\r\n const offsetY = minY + (maxY - minY) / 2 - viewportHeight / 2\r\n const offsetX = minX + (maxX - minX) / 2 - viewportWidth / 2\r\n element.top = element.top - offsetY \r\n element.left = element.left - offsetX \r\n }\r\n\r\n // 顶部对齐\r\n if (command === ElementAlignCommands.TOP) {\r\n const offsetY = minY - 0\r\n element.top = element.top - offsetY \r\n }\r\n\r\n // 垂直居中\r\n else if (command === ElementAlignCommands.VERTICAL) {\r\n const offsetY = minY + (maxY - minY) / 2 - viewportHeight / 2\r\n element.top = element.top - offsetY \r\n }\r\n\r\n // 底部对齐\r\n else if (command === ElementAlignCommands.BOTTOM) {\r\n const offsetY = maxY - viewportHeight\r\n element.top = element.top - offsetY \r\n }\r\n \r\n // 左侧对齐\r\n else if (command === ElementAlignCommands.LEFT) {\r\n const offsetX = minX - 0\r\n element.left = element.left - offsetX \r\n }\r\n\r\n // 水平居中\r\n else if (command === ElementAlignCommands.HORIZONTAL) {\r\n const offsetX = minX + (maxX - minX) / 2 - viewportWidth / 2\r\n element.left = element.left - offsetX \r\n }\r\n\r\n // 右侧对齐\r\n else if (command === ElementAlignCommands.RIGHT) {\r\n const offsetX = maxX - viewportWidth\r\n element.left = element.left - offsetX \r\n }\r\n }\r\n \r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: newElementList })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n alignElementToCanvas,\r\n }\r\n}","\r\n handleSelectElement($event)\" \r\n >\r\n
\r\n
handleClip(range)\"\r\n />\r\n \r\n
\r\n\r\n
\r\n
![\"\"\r\n]()
\r\n
\r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n","\r\n \r\n
![\"\"]()
\r\n\r\n
\r\n
![\"\"]()
\r\n
\r\n\r\n
moveClipRange($event)\"\r\n >\r\n
scaleClipRange($event, point)\"\r\n >\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, onMounted, onUnmounted, PropType, reactive, ref } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { KEYS } from '@/configs/hotkey'\r\nimport { ImageClipData, ImageClipDataRange, ImageClipedEmitData } from '@/types/edit'\r\n\r\ntype ScaleClipRangeType = 't-l' | 't-r' | 'b-l' | 'b-r'\r\n\r\nexport default defineComponent({\r\n name: 'image-clip-handler',\r\n props: {\r\n src: {\r\n type: String,\r\n required: true,\r\n },\r\n clipData: {\r\n type: Object as PropType,\r\n },\r\n clipPath: {\r\n type: String,\r\n required: true,\r\n },\r\n width: {\r\n type: Number,\r\n required: true,\r\n },\r\n height: {\r\n type: Number,\r\n required: true,\r\n },\r\n top: {\r\n type: Number,\r\n required: true,\r\n },\r\n left: {\r\n type: Number,\r\n required: true,\r\n },\r\n },\r\n setup(props, { emit }) {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n const ctrlOrShiftKeyActive = computed(() => store.getters.ctrlOrShiftKeyActive)\r\n\r\n const clipWrapperPositionStyle = reactive({\r\n top: '0',\r\n left: '0',\r\n })\r\n const isSettingClipRange = ref(false)\r\n const currentRange = ref(null)\r\n\r\n // 获取裁剪区域信息(裁剪区域占原图的宽高比例,处在原图中的位置)\r\n const getClipDataTransformInfo = () => {\r\n const [start, end] = props.clipData ? props.clipData.range : [[0, 0], [100, 100]]\r\n\r\n const widthScale = (end[0] - start[0]) / 100\r\n const heightScale = (end[1] - start[1]) / 100\r\n const left = start[0] / widthScale\r\n const top = start[1] / heightScale\r\n\r\n return { widthScale, heightScale, left, top }\r\n }\r\n \r\n // 底层图片位置大小(遮罩区域图片)\r\n const imgPosition = computed(() => {\r\n const { widthScale, heightScale, left, top } = getClipDataTransformInfo()\r\n return {\r\n left: -left,\r\n top: -top,\r\n width: 100 / widthScale,\r\n height: 100 / heightScale,\r\n }\r\n })\r\n\r\n // 底层图片位置大小样式(遮罩区域图片)\r\n const bottomImgPositionStyle = computed(() => {\r\n return {\r\n top: imgPosition.value.top + '%',\r\n left: imgPosition.value.left + '%',\r\n width: imgPosition.value.width + '%',\r\n height: imgPosition.value.height + '%',\r\n }\r\n })\r\n\r\n // 顶层图片容器位置大小(裁剪高亮区域)\r\n const topImgWrapperPosition = reactive({\r\n top: 0,\r\n left: 0,\r\n width: 0,\r\n height: 0,\r\n })\r\n\r\n // 顶层图片容器位置大小样式(裁剪高亮区域)\r\n const topImgWrapperPositionStyle = computed(() => {\r\n return {\r\n top: topImgWrapperPosition.top + '%',\r\n left: topImgWrapperPosition.left + '%',\r\n width: topImgWrapperPosition.width + '%',\r\n height: topImgWrapperPosition.height + '%',\r\n }\r\n })\r\n\r\n // 顶层图片位置大小样式(裁剪区域图片)\r\n const topImgPositionStyle = computed(() => {\r\n const bottomWidth = imgPosition.value.width\r\n const bottomHeight = imgPosition.value.height\r\n \r\n const topLeft = topImgWrapperPosition.left\r\n const topTop = topImgWrapperPosition.top\r\n const topWidth = topImgWrapperPosition.width\r\n const topHeight = topImgWrapperPosition.height\r\n \r\n return {\r\n left: -topLeft * (100 / topWidth) + '%',\r\n top: -topTop * (100 / topHeight) + '%',\r\n width: bottomWidth / topWidth * 100 + '%',\r\n height: bottomHeight / topHeight * 100 + '%',\r\n }\r\n })\r\n\r\n // 初始化裁剪位置信息\r\n const initClipPosition = () => {\r\n const { left, top } = getClipDataTransformInfo()\r\n topImgWrapperPosition.left = left\r\n topImgWrapperPosition.top = top\r\n topImgWrapperPosition.width = 100\r\n topImgWrapperPosition.height = 100\r\n \r\n clipWrapperPositionStyle.top = -top + '%'\r\n clipWrapperPositionStyle.left = -left + '%'\r\n }\r\n\r\n // 执行裁剪:计算裁剪后的图片位置大小和裁剪信息,并将数据同步出去\r\n const handleClip = () => {\r\n if (isSettingClipRange.value) return\r\n\r\n if (!currentRange.value) {\r\n emit('clip', null)\r\n return\r\n }\r\n\r\n const { left, top } = getClipDataTransformInfo()\r\n\r\n const position = {\r\n left: (topImgWrapperPosition.left - left) / 100 * props.width,\r\n top: (topImgWrapperPosition.top - top) / 100 * props.height,\r\n width: (topImgWrapperPosition.width - 100) / 100 * props.width,\r\n height: (topImgWrapperPosition.height - 100) / 100 * props.height,\r\n }\r\n\r\n const clipedEmitData: ImageClipedEmitData = {\r\n range: currentRange.value,\r\n position,\r\n }\r\n emit('clip', clipedEmitData)\r\n }\r\n\r\n // 快捷键监听:回车确认裁剪\r\n const keyboardListener = (e: KeyboardEvent) => {\r\n const key = e.key.toUpperCase()\r\n if (key === KEYS.ENTER) handleClip()\r\n }\r\n\r\n onMounted(() => {\r\n initClipPosition()\r\n document.addEventListener('keydown', keyboardListener)\r\n })\r\n onUnmounted(() => {\r\n document.removeEventListener('keydown', keyboardListener)\r\n })\r\n\r\n // 计算并更新裁剪区域范围数据\r\n const updateRange = () => {\r\n const retPosition = {\r\n left: parseInt(topImgPositionStyle.value.left),\r\n top: parseInt(topImgPositionStyle.value.top),\r\n width: parseInt(topImgPositionStyle.value.width),\r\n height: parseInt(topImgPositionStyle.value.height),\r\n }\r\n\r\n const widthScale = 100 / retPosition.width\r\n const heightScale = 100 / retPosition.height\r\n\r\n const start: [number, number] = [\r\n -retPosition.left * widthScale,\r\n -retPosition.top * heightScale,\r\n ]\r\n const end: [number, number] = [\r\n widthScale * 100 + start[0],\r\n heightScale * 100 + start[1],\r\n ]\r\n\r\n currentRange.value = [start, end]\r\n }\r\n\r\n // 移动裁剪区域\r\n const moveClipRange = (e: MouseEvent) => {\r\n isSettingClipRange.value = true\r\n let isMouseDown = true\r\n\r\n const startPageX = e.pageX\r\n const startPageY = e.pageY\r\n const bottomPosition = imgPosition.value\r\n const originPositopn = {\r\n left: topImgWrapperPosition.left,\r\n top: topImgWrapperPosition.top,\r\n width: topImgWrapperPosition.width,\r\n height: topImgWrapperPosition.height,\r\n }\r\n\r\n document.onmousemove = e => {\r\n if (!isMouseDown) return\r\n\r\n const currentPageX = e.pageX\r\n const currentPageY = e.pageY\r\n\r\n const moveX = (currentPageX - startPageX) / canvasScale.value / props.width * 100\r\n const moveY = (currentPageY - startPageY) / canvasScale.value / props.height * 100\r\n\r\n let targetLeft = originPositopn.left + moveX\r\n let targetTop = originPositopn.top + moveY\r\n\r\n if (targetLeft < 0) targetLeft = 0\r\n else if (targetLeft + originPositopn.width > bottomPosition.width) {\r\n targetLeft = bottomPosition.width - originPositopn.width\r\n }\r\n if (targetTop < 0) targetTop = 0\r\n else if (targetTop + originPositopn.height > bottomPosition.height) {\r\n targetTop = bottomPosition.height - originPositopn.height\r\n }\r\n \r\n topImgWrapperPosition.left = targetLeft\r\n topImgWrapperPosition.top = targetTop\r\n }\r\n\r\n document.onmouseup = () => {\r\n isMouseDown = false\r\n document.onmousemove = null\r\n document.onmouseup = null\r\n\r\n updateRange()\r\n\r\n setTimeout(() => {\r\n isSettingClipRange.value = false\r\n }, 0)\r\n }\r\n }\r\n\r\n // 缩放裁剪区域\r\n const scaleClipRange = (e: MouseEvent, type: ScaleClipRangeType) => {\r\n isSettingClipRange.value = true\r\n let isMouseDown = true\r\n\r\n const minWidth = 50 / props.width * 100\r\n const minHeight = 50 / props.height * 100\r\n \r\n const startPageX = e.pageX\r\n const startPageY = e.pageY\r\n const bottomPosition = imgPosition.value\r\n const originPositopn = {\r\n left: topImgWrapperPosition.left,\r\n top: topImgWrapperPosition.top,\r\n width: topImgWrapperPosition.width,\r\n height: topImgWrapperPosition.height,\r\n }\r\n\r\n const aspectRatio = topImgWrapperPosition.width / topImgWrapperPosition.height\r\n\r\n document.onmousemove = e => {\r\n if (!isMouseDown) return\r\n\r\n const currentPageX = e.pageX\r\n const currentPageY = e.pageY\r\n\r\n let moveX = (currentPageX - startPageX) / canvasScale.value / props.width * 100\r\n let moveY = (currentPageY - startPageY) / canvasScale.value / props.height * 100\r\n\r\n if (ctrlOrShiftKeyActive.value) {\r\n if (type === 'b-r' || type === 't-l') moveY = moveX / aspectRatio\r\n if (type === 'b-l' || type === 't-r') moveY = -moveX / aspectRatio\r\n }\r\n\r\n let targetLeft, targetTop, targetWidth, targetHeight\r\n\r\n if (type === 't-l') {\r\n if (originPositopn.left + moveX < 0) {\r\n moveX = -originPositopn.left\r\n }\r\n if (originPositopn.top + moveY < 0) {\r\n moveY = -originPositopn.top\r\n }\r\n if (originPositopn.width - moveX < minWidth) {\r\n moveX = originPositopn.width - minWidth\r\n }\r\n if (originPositopn.height - moveY < minHeight) {\r\n moveY = originPositopn.height - minHeight\r\n }\r\n targetWidth = originPositopn.width - moveX\r\n targetHeight = originPositopn.height - moveY\r\n targetLeft = originPositopn.left + moveX\r\n targetTop = originPositopn.top + moveY\r\n }\r\n else if (type === 't-r') {\r\n if (originPositopn.left + originPositopn.width + moveX > bottomPosition.width) {\r\n moveX = bottomPosition.width - (originPositopn.left + originPositopn.width)\r\n }\r\n if (originPositopn.top + moveY < 0) {\r\n moveY = -originPositopn.top\r\n }\r\n if (originPositopn.width + moveX < minWidth) {\r\n moveX = minWidth - originPositopn.width\r\n }\r\n if (originPositopn.height - moveY < minHeight) {\r\n moveY = originPositopn.height - minHeight\r\n }\r\n targetWidth = originPositopn.width + moveX\r\n targetHeight = originPositopn.height - moveY\r\n targetLeft = originPositopn.left\r\n targetTop = originPositopn.top + moveY\r\n }\r\n else if (type === 'b-l') {\r\n if (originPositopn.left + moveX < 0) {\r\n moveX = -originPositopn.left\r\n }\r\n if (originPositopn.top + originPositopn.height + moveY > bottomPosition.height) {\r\n moveY = bottomPosition.height - (originPositopn.top + originPositopn.height)\r\n }\r\n if (originPositopn.width - moveX < minWidth) {\r\n moveX = originPositopn.width - minWidth\r\n }\r\n if (originPositopn.height + moveY < minHeight) {\r\n moveY = minHeight - originPositopn.height\r\n }\r\n targetWidth = originPositopn.width - moveX\r\n targetHeight = originPositopn.height + moveY\r\n targetLeft = originPositopn.left + moveX\r\n targetTop = originPositopn.top\r\n }\r\n else {\r\n if (originPositopn.left + originPositopn.width + moveX > bottomPosition.width) {\r\n moveX = bottomPosition.width - (originPositopn.left + originPositopn.width)\r\n }\r\n if (originPositopn.top + originPositopn.height + moveY > bottomPosition.height) {\r\n moveY = bottomPosition.height - (originPositopn.top + originPositopn.height)\r\n }\r\n if (originPositopn.width + moveX < minWidth) {\r\n moveX = minWidth - originPositopn.width\r\n }\r\n if (originPositopn.height + moveY < minHeight) {\r\n moveY = minHeight - originPositopn.height\r\n }\r\n targetWidth = originPositopn.width + moveX\r\n targetHeight = originPositopn.height + moveY\r\n targetLeft = originPositopn.left\r\n targetTop = originPositopn.top\r\n }\r\n \r\n topImgWrapperPosition.left = targetLeft\r\n topImgWrapperPosition.top = targetTop\r\n topImgWrapperPosition.width = targetWidth\r\n topImgWrapperPosition.height = targetHeight\r\n }\r\n\r\n document.onmouseup = () => {\r\n isMouseDown = false\r\n document.onmousemove = null\r\n document.onmouseup = null\r\n\r\n updateRange()\r\n\r\n setTimeout(() => isSettingClipRange.value = false, 0)\r\n }\r\n }\r\n\r\n return {\r\n clipWrapperPositionStyle,\r\n bottomImgPositionStyle,\r\n topImgWrapperPositionStyle,\r\n topImgPositionStyle,\r\n handleClip,\r\n moveClipRange,\r\n scaleClipRange,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ImageClipHandler.vue?vue&type=template&id=1d9b5032&scoped=true\"\nimport script from \"./ImageClipHandler.vue?vue&type=script&lang=ts\"\nexport * from \"./ImageClipHandler.vue?vue&type=script&lang=ts\"\n\nimport \"./ImageClipHandler.vue?vue&type=style&index=0&id=1d9b5032&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-1d9b5032\"\n\nexport default script","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { ImageElementClip, PPTImageElement } from '@/types/slides'\r\nimport { ImageClipedEmitData } from '@/types/edit'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\r\nimport useElementFlip from '@/views/components/element/hooks/useElementFlip'\r\nimport useClipImage from './useClipImage'\r\nimport useFilter from './useFilter'\r\n\r\nimport ImageOutline from './ImageOutline/index.vue'\r\nimport ImageClipHandler from './ImageClipHandler.vue'\r\n\r\nexport default defineComponent({\r\n name: 'editable-element-image',\r\n components: {\r\n ImageOutline,\r\n ImageClipHandler,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n selectElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTImageElement, canMove?: boolean) => void>,\r\n required: true,\r\n },\r\n contextmenus: {\r\n type: Function as PropType<() => ContextmenuItem[]>,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const clipingImageElementId = computed(() => store.state.clipingImageElementId)\r\n const isCliping = computed(() => clipingImageElementId.value === props.elementInfo.id)\r\n\r\n const shadow = computed(() => props.elementInfo.shadow)\r\n const { shadowStyle } = useElementShadow(shadow)\r\n\r\n const flip = computed(() => props.elementInfo.flip)\r\n const { flipStyle } = useElementFlip(flip)\r\n\r\n const clip = computed(() => props.elementInfo.clip)\r\n const { clipShape, imgPosition } = useClipImage(clip)\r\n\r\n const filters = computed(() => props.elementInfo.filters)\r\n const { filter } = useFilter(filters)\r\n\r\n const handleSelectElement = (e: MouseEvent) => {\r\n if (props.elementInfo.lock) return\r\n e.stopPropagation()\r\n props.selectElement(e, props.elementInfo)\r\n }\r\n\r\n const handleClip = (data: ImageClipedEmitData) => {\r\n store.commit(MutationTypes.SET_CLIPING_IMAGE_ELEMENT_ID, '')\r\n \r\n if (!data) return\r\n\r\n const { range, position } = data\r\n const originClip: ImageElementClip = props.elementInfo.clip || { shape: 'rect', range: [[0, 0], [100, 100]] }\r\n \r\n const _props = {\r\n clip: { ...originClip, range },\r\n left: props.elementInfo.left + position.left,\r\n top: props.elementInfo.top + position.top,\r\n width: props.elementInfo.width + position.width,\r\n height: props.elementInfo.height + position.height,\r\n }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: props.elementInfo.id, props: _props })\r\n }\r\n\r\n return {\r\n isCliping,\r\n handleClip,\r\n clipingImageElementId,\r\n shadowStyle,\r\n handleSelectElement,\r\n clipShape,\r\n imgPosition,\r\n filter,\r\n flipStyle,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=4aec836a&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=4aec836a&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-4aec836a\"\n\nexport default script","\r\n handleSelectElement($event)\"\r\n >\r\n
\r\n
\r\n
\r\n
handleSelectElement($event, false)\"\r\n >
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","import { splitListItem, liftListItem, sinkListItem } from 'prosemirror-schema-list'\r\nimport { Schema } from 'prosemirror-model'\r\nimport { undo, redo } from 'prosemirror-history'\r\nimport { undoInputRule } from 'prosemirror-inputrules'\r\nimport {\r\n toggleMark,\r\n selectParentNode,\r\n joinUp,\r\n joinDown,\r\n Command,\r\n} from 'prosemirror-commands'\r\n\r\nexport const buildKeymap = (schema: Schema) => {\r\n const keys = {}\r\n const bind = (key: string, cmd: Command) => keys[key] = cmd\r\n\r\n bind('Alt-ArrowUp', joinUp)\r\n bind('Alt-ArrowDown', joinDown)\r\n bind('Ctrl-z', undo)\r\n bind('Ctrl-y', redo)\r\n bind('Backspace', undoInputRule)\r\n bind('Escape', selectParentNode)\r\n bind('Ctrl-b', toggleMark(schema.marks.strong))\r\n bind('Ctrl-i', toggleMark(schema.marks.em))\r\n bind('Ctrl-u', toggleMark(schema.marks.underline))\r\n bind('Ctrl-d', toggleMark(schema.marks.strikethrough))\r\n\r\n bind('Enter', splitListItem(schema.nodes.list_item))\r\n bind('Mod-[', liftListItem(schema.nodes.list_item))\r\n bind('Mod-]', sinkListItem(schema.nodes.list_item))\r\n\r\n return keys\r\n}","import { NodeType, Schema } from 'prosemirror-model'\r\nimport {\r\n inputRules,\r\n wrappingInputRule,\r\n textblockTypeInputRule,\r\n smartQuotes,\r\n emDash,\r\n ellipsis,\r\n} from 'prosemirror-inputrules'\r\n\r\nconst blockQuoteRule = (nodeType: NodeType) => wrappingInputRule(/^\\s*>\\s$/, nodeType)\r\n\r\nconst orderedListRule = (nodeType: NodeType) => (\r\n wrappingInputRule(\r\n /^(\\d+)\\.\\s$/, \r\n nodeType, \r\n match => ({order: +match[1]}),\r\n (match, node) => node.childCount + node.attrs.order === +match[1],\r\n )\r\n)\r\n\r\nconst bulletListRule = (nodeType: NodeType) => wrappingInputRule(/^\\s*([-+*])\\s$/, nodeType)\r\n\r\nconst codeBlockRule = (nodeType: NodeType) => textblockTypeInputRule(/^```$/, nodeType)\r\n\r\nexport const buildInputRules = (schema: Schema) => {\r\n const rules = [\r\n ...smartQuotes,\r\n ellipsis,\r\n emDash,\r\n ]\r\n rules.push(blockQuoteRule(schema.nodes.blockquote))\r\n rules.push(orderedListRule(schema.nodes.ordered_list))\r\n rules.push(bulletListRule(schema.nodes.bullet_list))\r\n rules.push(codeBlockRule(schema.nodes.code_block))\r\n\r\n return inputRules({ rules })\r\n}","import { keymap } from 'prosemirror-keymap'\r\nimport { Schema } from 'prosemirror-model'\r\nimport { history } from 'prosemirror-history'\r\nimport { baseKeymap } from 'prosemirror-commands'\r\nimport { dropCursor } from 'prosemirror-dropcursor'\r\nimport { gapCursor } from 'prosemirror-gapcursor'\r\n\r\nimport { buildKeymap } from './keymap'\r\nimport { buildInputRules } from './inputrules'\r\n\r\nexport const buildPlugins = (schema: Schema) => {\r\n return [\r\n buildInputRules(schema),\r\n keymap(buildKeymap(schema)),\r\n keymap(baseKeymap),\r\n dropCursor(),\r\n gapCursor(),\r\n history(),\r\n ]\r\n}","import { nodes } from 'prosemirror-schema-basic'\r\nimport { Node, NodeSpec } from 'prosemirror-model'\r\nimport { orderedList, bulletList, listItem } from 'prosemirror-schema-list'\r\n\r\nconst _orderedList: NodeSpec = {\r\n ...orderedList,\r\n content: 'list_item+',\r\n group: 'block',\r\n}\r\n\r\nconst _bulletList: NodeSpec = {\r\n ...bulletList,\r\n content: 'list_item+',\r\n group: 'block',\r\n}\r\n\r\nconst _listItem: NodeSpec = {\r\n ...listItem,\r\n content: 'paragraph block*',\r\n group: 'block',\r\n}\r\n\r\nconst paragraph: NodeSpec = {\r\n attrs: {\r\n align: {\r\n default: '',\r\n },\r\n },\r\n content: 'inline*',\r\n group: 'block',\r\n parseDOM: [\r\n {\r\n tag: 'p',\r\n getAttrs: dom => {\r\n const { textAlign } = (dom as HTMLElement).style\r\n let align = (dom as HTMLElement).getAttribute('align') || textAlign || ''\r\n align = /(left|right|center|justify)/.test(align) ? align : ''\r\n \r\n return { align }\r\n }\r\n }\r\n ],\r\n toDOM: (node: Node) => {\r\n const { align } = node.attrs\r\n let style = ''\r\n if (align && align !== 'left') style += `text-align: ${align};`\r\n\r\n return ['p', { style }, 0]\r\n },\r\n}\r\n\r\nexport default {\r\n ...nodes,\r\n 'ordered_list': _orderedList,\r\n 'bullet_list': _bulletList,\r\n 'list_item': _listItem,\r\n paragraph,\r\n}\r\n","import { marks } from 'prosemirror-schema-basic'\r\nimport { MarkSpec } from 'prosemirror-model'\r\n\r\nconst subscript: MarkSpec = {\r\n excludes: 'subscript',\r\n parseDOM: [\r\n { tag: 'sub' },\r\n {\r\n style: 'vertical-align',\r\n getAttrs: value => value === 'sub' && null\r\n },\r\n ],\r\n toDOM: () => ['sub', 0],\r\n}\r\n\r\nconst superscript: MarkSpec = {\r\n excludes: 'superscript',\r\n parseDOM: [\r\n { tag: 'sup' },\r\n {\r\n style: 'vertical-align',\r\n getAttrs: value => value === 'super' && null\r\n },\r\n ],\r\n toDOM: () => ['sup', 0],\r\n}\r\n\r\nconst strikethrough: MarkSpec = {\r\n parseDOM: [\r\n { tag: 'strike' },\r\n {\r\n style: 'text-decoration',\r\n getAttrs: value => value === 'line-through' && null\r\n },\r\n {\r\n style: 'text-decoration-line',\r\n getAttrs: value => value === 'line-through' && null\r\n },\r\n ],\r\n toDOM: () => ['span', { style: 'text-decoration-line: line-through' }, 0],\r\n}\r\n\r\nconst underline: MarkSpec = {\r\n parseDOM: [\r\n { tag: 'u' },\r\n {\r\n style: 'text-decoration',\r\n getAttrs: value => value === 'underline' && null\r\n },\r\n {\r\n style: 'text-decoration-line',\r\n getAttrs: value => value === 'underline' && null\r\n },\r\n ],\r\n toDOM: () => ['span', { style: 'text-decoration: underline' }, 0],\r\n}\r\n\r\nconst forecolor: MarkSpec = {\r\n attrs: {\r\n color: {},\r\n },\r\n parseDOM: [\r\n {\r\n style: 'color',\r\n getAttrs: color => color ? { color } : {}\r\n },\r\n ],\r\n toDOM: mark => {\r\n const { color } = mark.attrs\r\n let style = ''\r\n if (color) style += `color: ${color};`\r\n return ['span', { style }, 0]\r\n },\r\n}\r\n\r\nconst backcolor: MarkSpec = {\r\n attrs: {\r\n backcolor: {},\r\n },\r\n inline: true,\r\n group: 'inline',\r\n parseDOM: [\r\n {\r\n tag: 'span[style*=background-color]',\r\n getAttrs: backcolor => backcolor ? { backcolor } : {}\r\n },\r\n ],\r\n toDOM: mark => {\r\n const { backcolor } = mark.attrs\r\n let style = ''\r\n if (backcolor) style += `background-color: ${backcolor};`\r\n return ['span', { style }, 0]\r\n },\r\n}\r\n\r\nconst fontsize: MarkSpec = {\r\n attrs: {\r\n fontsize: {},\r\n },\r\n inline: true,\r\n group: 'inline',\r\n parseDOM: [\r\n {\r\n style: 'font-size',\r\n getAttrs: fontsize => fontsize ? { fontsize } : {}\r\n },\r\n ],\r\n toDOM: mark => {\r\n const { fontsize } = mark.attrs\r\n let style = ''\r\n if (fontsize) style += `font-size: ${fontsize}`\r\n return ['span', { style }, 0]\r\n },\r\n}\r\n\r\nconst fontname: MarkSpec = {\r\n attrs: {\r\n fontname: {},\r\n },\r\n inline: true,\r\n group: 'inline',\r\n parseDOM: [\r\n {\r\n style: 'font-family',\r\n getAttrs: fontname => {\r\n return { fontname: fontname && typeof fontname === 'string' ? fontname.replace(/[\\\"\\']/g, '') : '' }\r\n }\r\n },\r\n ],\r\n toDOM: mark => {\r\n const { fontname } = mark.attrs\r\n let style = ''\r\n if (fontname) style += `font-family: ${fontname}`\r\n return ['span', { style }, 0]\r\n },\r\n}\r\n\r\nexport default {\r\n ...marks,\r\n subscript,\r\n superscript,\r\n strikethrough,\r\n underline,\r\n forecolor,\r\n backcolor,\r\n fontsize,\r\n fontname,\r\n}","import nodes from './nodes'\r\nimport marks from './marks'\r\n\r\nexport const schemaNodes = nodes\r\nexport const schemaMarks = marks\r\n","import { EditorState } from 'prosemirror-state'\r\nimport { EditorView } from 'prosemirror-view'\r\nimport { Schema, DOMParser } from 'prosemirror-model'\r\n\r\nimport { buildPlugins } from './plugins/index'\r\nimport { schemaNodes, schemaMarks } from './schema/index'\r\n\r\nconst schema = new Schema({\r\n nodes: schemaNodes,\r\n marks: schemaMarks,\r\n})\r\n\r\nconst createDocument = (content: string) => {\r\n const htmlString = `${content}
`\r\n const parser = new window.DOMParser()\r\n const element = parser.parseFromString(htmlString, 'text/html').body.firstElementChild\r\n return DOMParser.fromSchema(schema).parse(element as Element)\r\n}\r\n\r\nexport const initProsemirrorEditor = (dom: Element, content: string, props = {}) => {\r\n return new EditorView(dom, {\r\n state: EditorState.create({\r\n doc: createDocument(content),\r\n plugins: buildPlugins(schema),\r\n }),\r\n ...props,\r\n })\r\n}","import { Node, NodeType, ResolvedPos } from 'prosemirror-model'\r\nimport { EditorState, Selection } from 'prosemirror-state'\r\nimport { EditorView } from 'prosemirror-view'\r\n\r\nconst equalNodeType = (nodeType: NodeType, node: Node) => {\r\n return Array.isArray(nodeType) && nodeType.indexOf(node.type) > -1 || node.type === nodeType\r\n}\r\n\r\nconst findParentNodeClosestToPos = ($pos: ResolvedPos, predicate: (node: Node) => boolean) => {\r\n for (let i = $pos.depth; i > 0; i--) {\r\n const node = $pos.node(i)\r\n if (predicate(node)) {\r\n return {\r\n pos: i > 0 ? $pos.before(i) : 0,\r\n start: $pos.start(i),\r\n depth: i,\r\n node,\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport const findParentNode = (predicate: (node: Node) => boolean) => {\r\n return (_ref: Selection) => findParentNodeClosestToPos(_ref.$from, predicate)\r\n}\r\n\r\nexport const findParentNodeOfType = (nodeType: NodeType) => {\r\n return (selection: Selection) => {\r\n return findParentNode((node: Node) => {\r\n return equalNodeType(nodeType, node)\r\n })(selection)\r\n }\r\n}\r\n\r\nexport const isActiveOfParentNodeType = (nodeType: string, state: EditorState) => {\r\n const node = state.schema.nodes[nodeType]\r\n return !!findParentNodeOfType(node)(state.selection)\r\n}\r\n\r\nexport const getMarkAttrs = (view: EditorView) => {\r\n const { selection, doc } = view.state\r\n const { from } = selection\r\n const node = doc.nodeAt(from)\r\n return node?.marks || []\r\n}\r\n\r\nexport const getAttrValue = (view: EditorView, markType: string, attr: string) => {\r\n const marks = getMarkAttrs(view)\r\n for (const mark of marks) {\r\n if (mark.type.name === markType && mark.attrs[attr]) return mark.attrs[attr]\r\n }\r\n return null\r\n}\r\n\r\nexport const isActiveMark = (view: EditorView, markType: string) => {\r\n const marks = getMarkAttrs(view)\r\n for (const mark of marks) {\r\n if (mark.type.name === markType) return true\r\n }\r\n return false\r\n}\r\n\r\nexport const getAttrValueInSelection = (view: EditorView, attr: string) => {\r\n const { selection, doc } = view.state\r\n const { from, to } = selection\r\n\r\n let keepChecking = true\r\n let value = ''\r\n doc.nodesBetween(from, to, node => {\r\n if (keepChecking && node.attrs[attr]) {\r\n keepChecking = false\r\n value = node.attrs[attr]\r\n }\r\n return keepChecking\r\n })\r\n return value\r\n}\r\n\r\nexport const getTextAttrs = (view: EditorView) => {\r\n const isBold = isActiveMark(view, 'strong')\r\n const isEm = isActiveMark(view, 'em')\r\n const isUnderline = isActiveMark(view, 'underline')\r\n const isStrikethrough = isActiveMark(view, 'strikethrough')\r\n const isSuperscript = isActiveMark(view, 'superscript')\r\n const isSubscript = isActiveMark(view, 'subscript')\r\n const isCode = isActiveMark(view, 'code')\r\n const color = getAttrValue(view, 'forecolor', 'color') || '#000'\r\n const backcolor = getAttrValue(view, 'backcolor', 'backcolor') || '#000'\r\n const fontsize = getAttrValue(view, 'fontsize', 'fontsize') || '20px'\r\n const fontname = getAttrValue(view, 'fontname', 'fontname') || '微软雅黑'\r\n const align = getAttrValueInSelection(view, 'align') || 'left'\r\n const isBulletList = isActiveOfParentNodeType('bullet_list', view.state)\r\n const isOrderedList = isActiveOfParentNodeType('ordered_list', view.state)\r\n const isBlockquote = isActiveOfParentNodeType('blockquote', view.state)\r\n\r\n return {\r\n bold: isBold,\r\n em: isEm,\r\n underline: isUnderline,\r\n strikethrough: isStrikethrough,\r\n superscript: isSuperscript,\r\n subscript: isSubscript,\r\n code: isCode,\r\n color: color,\r\n backcolor: backcolor,\r\n fontsize: fontsize,\r\n fontname: fontname,\r\n align: align,\r\n bulletList: isBulletList,\r\n orderedList: isOrderedList,\r\n blockquote: isBlockquote,\r\n }\r\n}\r\n\r\nexport type TextAttrs = ReturnType","import { Schema, Node, NodeType } from 'prosemirror-model'\r\nimport { Transaction } from 'prosemirror-state'\r\nimport { EditorView } from 'prosemirror-view'\r\n\r\nexport const setTextAlign = (tr: Transaction, schema: Schema, alignment: string) => {\r\n const { selection, doc } = tr\r\n if (!selection || !doc) return tr\r\n\r\n const { from, to } = selection\r\n const { nodes } = schema\r\n\r\n const blockquote = nodes.blockquote\r\n const listItem = nodes.list_item\r\n const paragraph = nodes.paragraph\r\n\r\n interface Task {\r\n node: Node;\r\n pos: number;\r\n nodeType: NodeType;\r\n }\r\n\r\n const tasks: Task[] = []\r\n alignment = alignment || ''\r\n\r\n const allowedNodeTypes = new Set([blockquote, listItem, paragraph])\r\n\r\n doc.nodesBetween(from, to, (node, pos) => {\r\n const nodeType = node.type\r\n const align = node.attrs.align || ''\r\n if (align !== alignment && allowedNodeTypes.has(nodeType)) {\r\n tasks.push({\r\n node,\r\n pos,\r\n nodeType,\r\n })\r\n }\r\n return true\r\n })\r\n\r\n if (!tasks.length) return tr\r\n\r\n tasks.forEach(task => {\r\n const { node, pos, nodeType } = task\r\n let { attrs } = node\r\n if (alignment) attrs = { ...attrs, align: alignment }\r\n else attrs = { ...attrs, align: null }\r\n tr = tr.setNodeMarkup(pos, nodeType, attrs, node.marks)\r\n })\r\n\r\n return tr\r\n}\r\n\r\nexport const alignmentCommand = (view: EditorView, alignment: string) => {\r\n const { state } = view\r\n const { schema, selection } = state\r\n const tr = setTextAlign(\r\n state.tr.setSelection(selection),\r\n schema,\r\n alignment,\r\n )\r\n view.dispatch(tr)\r\n}","import { wrapInList, liftListItem } from 'prosemirror-schema-list'\r\nimport { Schema, Node, NodeType } from 'prosemirror-model'\r\nimport { Transaction, EditorState } from 'prosemirror-state'\r\nimport { findParentNode } from '../utils'\r\n\r\nconst isList = (node: Node, schema: Schema) => {\r\n return (\r\n node.type === schema.nodes.bullet_list ||\r\n node.type === schema.nodes.ordered_list\r\n )\r\n}\r\n\r\nexport const toggleList = (listType: NodeType, itemType: NodeType) => {\r\n return (state: EditorState, dispatch: (tr: Transaction) => void) => {\r\n const { schema, selection } = state\r\n const { $from, $to } = selection\r\n const range = $from.blockRange($to)\r\n\r\n if (!range) return false\r\n\r\n const parentList = findParentNode((node: Node) => isList(node, schema))(selection)\r\n\r\n if (range.depth >= 1 && parentList && range.depth - parentList.depth <= 1) {\r\n if (parentList.node.type === listType) {\r\n return liftListItem(itemType)(state, dispatch)\r\n }\r\n\r\n if (isList(parentList.node, schema) && listType.validContent(parentList.node.content)) {\r\n const { tr } = state\r\n tr.setNodeMarkup(parentList.pos, listType)\r\n\r\n if (dispatch) dispatch(tr)\r\n\r\n return false\r\n }\r\n }\r\n\r\n return wrapInList(listType)(state, dispatch)\r\n }\r\n}\r\n","\r\nimport { computed, defineComponent, onMounted, onUnmounted, PropType, ref, watch } from 'vue'\r\nimport debounce from 'lodash/debounce'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { EditorView } from 'prosemirror-view'\r\nimport { toggleMark, wrapIn, selectAll } from 'prosemirror-commands'\r\nimport { PPTTextElement } from '@/types/slides'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\nimport { initProsemirrorEditor } from '@/prosemirror/'\r\nimport { getTextAttrs } from '@/prosemirror/utils'\r\nimport emitter, { EmitterEvents } from '@/utils/emitter'\r\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\r\nimport { alignmentCommand } from '@/prosemirror/commands/setTextAlign'\r\nimport { toggleList } from '@/prosemirror/commands/toggleList'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\r\n\r\ninterface CommandPayload {\r\n command: string;\r\n value?: string;\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'editable-element-text',\r\n components: {\r\n ElementOutline,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n selectElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTTextElement, canMove?: boolean) => void>,\r\n required: true,\r\n },\r\n contextmenus: {\r\n type: Function as PropType<() => ContextmenuItem[]>,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n const elementRef = ref()\r\n\r\n const isScaling = ref(false)\r\n const realHeightCache = ref(-1)\r\n\r\n const editorViewRef = ref()\r\n let editorView: EditorView\r\n\r\n const shadow = computed(() => props.elementInfo.shadow)\r\n const { shadowStyle } = useElementShadow(shadow)\r\n\r\n const handleElementId = computed(() => store.state.handleElementId)\r\n\r\n const handleSelectElement = (e: MouseEvent, canMove = true) => {\r\n if (props.elementInfo.lock) return\r\n e.stopPropagation()\r\n\r\n props.selectElement(e, props.elementInfo, canMove)\r\n }\r\n\r\n // 监听文本元素的尺寸变化,当高度变化时,更新高度到vuex\r\n // 如果高度变化时正处在缩放操作中,则等待缩放操作结束后再更新\r\n const scaleElementStateListener = (state: boolean) => {\r\n isScaling.value = state\r\n\r\n if (!state && realHeightCache.value !== -1) {\r\n store.commit(MutationTypes.UPDATE_ELEMENT, {\r\n id: props.elementInfo.id,\r\n props: { height: realHeightCache.value },\r\n })\r\n realHeightCache.value = -1\r\n }\r\n }\r\n\r\n emitter.on(EmitterEvents.SCALE_ELEMENT_STATE, state => scaleElementStateListener(state))\r\n onUnmounted(() => {\r\n emitter.off(EmitterEvents.SCALE_ELEMENT_STATE, state => scaleElementStateListener(state))\r\n })\r\n\r\n const updateTextElementHeight = (entries: ResizeObserverEntry[]) => {\r\n const contentRect = entries[0].contentRect\r\n if (!elementRef.value) return\r\n\r\n const realHeight = contentRect.height\r\n\r\n if (props.elementInfo.height !== realHeight) {\r\n if (!isScaling.value) {\r\n store.commit(MutationTypes.UPDATE_ELEMENT, {\r\n id: props.elementInfo.id,\r\n props: { height: realHeight },\r\n })\r\n }\r\n else realHeightCache.value = realHeight\r\n }\r\n }\r\n const resizeObserver = new ResizeObserver(updateTextElementHeight)\r\n\r\n onMounted(() => {\r\n if (elementRef.value) resizeObserver.observe(elementRef.value)\r\n })\r\n onUnmounted(() => {\r\n if (elementRef.value) resizeObserver.unobserve(elementRef.value)\r\n })\r\n\r\n // 富文本的各种交互事件监听:\r\n // 聚焦时取消全局快捷键事件\r\n // 输入文字时同步数据到vuex\r\n // 点击鼠标和键盘时同步富文本状态到工具栏\r\n const handleInput = debounce(function() {\r\n store.commit(MutationTypes.UPDATE_ELEMENT, {\r\n id: props.elementInfo.id, \r\n props: { content: editorView.dom.innerHTML },\r\n })\r\n addHistorySnapshot()\r\n }, 300, { trailing: true })\r\n\r\n const handleFocus = () => {\r\n if (props.elementInfo.content === '请输入内容') {\r\n editorView.dom.innerHTML = ''\r\n handleInput()\r\n }\r\n store.commit(MutationTypes.SET_DISABLE_HOTKEYS_STATE, true)\r\n }\r\n\r\n const handleBlur = () => {\r\n store.commit(MutationTypes.SET_DISABLE_HOTKEYS_STATE, false)\r\n }\r\n\r\n const handleClick = debounce(function() {\r\n const attr = getTextAttrs(editorView)\r\n emitter.emit(EmitterEvents.UPDATE_TEXT_STATE, attr)\r\n }, 30, { trailing: true })\r\n\r\n const handleKeydown = () => {\r\n handleInput()\r\n handleClick()\r\n }\r\n\r\n // 将富文本内容同步到DOM\r\n const textContent = computed(() => props.elementInfo.content)\r\n watch(textContent, () => {\r\n if (!editorView) return\r\n if (editorView.hasFocus()) return\r\n editorView.dom.innerHTML = textContent.value\r\n })\r\n\r\n // 打开/关闭编辑器的编辑模式\r\n const editable = computed(() => !props.elementInfo.lock)\r\n watch(editable, () => {\r\n editorView.setProps({ editable: () => editable.value })\r\n })\r\n\r\n // Prosemirror编辑器的初始化和卸载\r\n onMounted(() => {\r\n editorView = initProsemirrorEditor((editorViewRef.value as Element), textContent.value, {\r\n handleDOMEvents: {\r\n focus: handleFocus,\r\n blur: handleBlur,\r\n keydown: handleKeydown,\r\n click: handleClick,\r\n },\r\n editable: () => editable.value,\r\n })\r\n })\r\n onUnmounted(() => {\r\n editorView && editorView.destroy()\r\n })\r\n \r\n // 执行富文本命令(可以是一个或多个)\r\n // 部分命令在执行前先判断当前选区是否为空,如果选区为空先进行全选操作\r\n const execCommand = (payload: CommandPayload | CommandPayload[]) => {\r\n if (handleElementId.value !== props.elementInfo.id) return\r\n\r\n const commands = ('command' in payload) ? [payload] : payload\r\n\r\n for (const item of commands) {\r\n if (item.command === 'fontname' && item.value) {\r\n const mark = editorView.state.schema.marks.fontname.create({ fontname: item.value })\r\n const { empty } = editorView.state.selection\r\n if (empty) selectAll(editorView.state, editorView.dispatch)\r\n const { $from, $to } = editorView.state.selection\r\n editorView.dispatch(editorView.state.tr.addMark($from.pos, $to.pos, mark))\r\n }\r\n else if (item.command === 'fontsize' && item.value) {\r\n const mark = editorView.state.schema.marks.fontsize.create({ fontsize: item.value })\r\n const { empty } = editorView.state.selection\r\n if (empty) selectAll(editorView.state, editorView.dispatch)\r\n const { $from, $to } = editorView.state.selection\r\n editorView.dispatch(editorView.state.tr.addMark($from.pos, $to.pos, mark))\r\n }\r\n else if (item.command === 'color' && item.value) {\r\n const mark = editorView.state.schema.marks.forecolor.create({ color: item.value })\r\n const { empty } = editorView.state.selection\r\n if (empty) selectAll(editorView.state, editorView.dispatch)\r\n const { $from, $to } = editorView.state.selection\r\n editorView.dispatch(editorView.state.tr.addMark($from.pos, $to.pos, mark))\r\n }\r\n else if (item.command === 'backcolor' && item.value) {\r\n const mark = editorView.state.schema.marks.backcolor.create({ backcolor: item.value })\r\n const { empty } = editorView.state.selection\r\n if (empty) selectAll(editorView.state, editorView.dispatch)\r\n const { $from, $to } = editorView.state.selection\r\n editorView.dispatch(editorView.state.tr.addMark($from.pos, $to.pos, mark))\r\n }\r\n else if (item.command === 'bold') {\r\n const { empty } = editorView.state.selection\r\n if (empty) selectAll(editorView.state, editorView.dispatch)\r\n toggleMark(editorView.state.schema.marks.strong)(editorView.state, editorView.dispatch)\r\n }\r\n else if (item.command === 'em') {\r\n const { empty } = editorView.state.selection\r\n if (empty) selectAll(editorView.state, editorView.dispatch)\r\n toggleMark(editorView.state.schema.marks.em)(editorView.state, editorView.dispatch)\r\n }\r\n else if (item.command === 'underline') {\r\n const { empty } = editorView.state.selection\r\n if (empty) selectAll(editorView.state, editorView.dispatch)\r\n toggleMark(editorView.state.schema.marks.underline)(editorView.state, editorView.dispatch)\r\n }\r\n else if (item.command === 'strikethrough') {\r\n const { empty } = editorView.state.selection\r\n if (empty) selectAll(editorView.state, editorView.dispatch)\r\n toggleMark(editorView.state.schema.marks.strikethrough)(editorView.state, editorView.dispatch)\r\n }\r\n else if (item.command === 'subscript') {\r\n toggleMark(editorView.state.schema.marks.subscript)(editorView.state, editorView.dispatch)\r\n }\r\n else if (item.command === 'superscript') {\r\n toggleMark(editorView.state.schema.marks.superscript)(editorView.state, editorView.dispatch)\r\n }\r\n else if (item.command === 'blockquote') {\r\n wrapIn(editorView.state.schema.nodes.blockquote)(editorView.state, editorView.dispatch)\r\n }\r\n else if (item.command === 'code') {\r\n toggleMark(editorView.state.schema.marks.code)(editorView.state, editorView.dispatch)\r\n }\r\n else if (item.command === 'align' && item.value) {\r\n alignmentCommand(editorView, item.value)\r\n }\r\n else if (item.command === 'bulletList') {\r\n const { bullet_list: bulletList, list_item: listItem } = editorView.state.schema.nodes\r\n toggleList(bulletList, listItem)(editorView.state, editorView.dispatch)\r\n }\r\n else if (item.command === 'orderedList') {\r\n const { ordered_list: orderedList, list_item: listItem } = editorView.state.schema.nodes\r\n toggleList(orderedList, listItem)(editorView.state, editorView.dispatch)\r\n }\r\n else if (item.command === 'clear') {\r\n const { empty } = editorView.state.selection\r\n if (empty) selectAll(editorView.state, editorView.dispatch)\r\n const { $from, $to } = editorView.state.selection\r\n editorView.dispatch(editorView.state.tr.removeMark($from.pos, $to.pos))\r\n }\r\n }\r\n\r\n editorView.focus()\r\n handleInput()\r\n handleClick()\r\n }\r\n\r\n emitter.on(EmitterEvents.EXEC_TEXT_COMMAND, payload => execCommand(payload))\r\n onUnmounted(() => {\r\n emitter.off(EmitterEvents.EXEC_TEXT_COMMAND, payload => execCommand(payload))\r\n })\r\n\r\n return {\r\n elementRef,\r\n editorViewRef,\r\n handleSelectElement,\r\n shadowStyle,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=a7eb4f98&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=a7eb4f98&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-a7eb4f98\"\n\nexport default script","\r\n handleSelectElement($event)\"\r\n >\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { PPTShapeElement } from '@/types/slides'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\r\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\r\nimport useElementFlip from '@/views/components/element/hooks/useElementFlip'\r\n\r\nimport GradientDefs from './GradientDefs.vue'\r\n\r\nexport default defineComponent({\r\n name: 'editable-element-shape',\r\n components: {\r\n GradientDefs,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n selectElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTShapeElement, canMove?: boolean) => void>,\r\n required: true,\r\n },\r\n contextmenus: {\r\n type: Function as PropType<() => ContextmenuItem[]>,\r\n },\r\n },\r\n setup(props) {\r\n const handleSelectElement = (e: MouseEvent) => {\r\n if (props.elementInfo.lock) return\r\n e.stopPropagation()\r\n\r\n props.selectElement(e, props.elementInfo)\r\n }\r\n\r\n const outline = computed(() => props.elementInfo.outline)\r\n const { outlineWidth, outlineStyle, outlineColor } = useElementOutline(outline)\r\n \r\n const shadow = computed(() => props.elementInfo.shadow)\r\n const { shadowStyle } = useElementShadow(shadow)\r\n\r\n const flip = computed(() => props.elementInfo.flip)\r\n const { flipStyle } = useElementFlip(flip)\r\n\r\n return {\r\n handleSelectElement,\r\n shadowStyle,\r\n outlineWidth,\r\n outlineStyle,\r\n outlineColor,\r\n flipStyle,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=264ed0d8&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=264ed0d8&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-264ed0d8\"\n\nexport default script","\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n\t\t\t\t\r\n\t\t\t\t handleSelectElement($event)\"\r\n v-contextmenu=\"contextmenus\"\r\n >\r\n\t\t\t\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { PPTLineElement } from '@/types/slides'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\r\n\r\nimport LinePointMarker from './LinePointMarker.vue'\r\n\r\nexport default defineComponent({\r\n name: 'editable-element-shape',\r\n components: {\r\n LinePointMarker,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n selectElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTLineElement, canMove?: boolean) => void>,\r\n required: true,\r\n },\r\n contextmenus: {\r\n type: Function as PropType<() => ContextmenuItem[]>,\r\n },\r\n },\r\n setup(props) {\r\n const handleSelectElement = (e: MouseEvent) => {\r\n if (props.elementInfo.lock) return\r\n e.stopPropagation()\r\n\r\n props.selectElement(e, props.elementInfo)\r\n }\r\n \r\n const shadow = computed(() => props.elementInfo.shadow)\r\n const { shadowStyle } = useElementShadow(shadow)\r\n\r\n const svgWidth = computed(() => {\r\n const width = Math.abs(props.elementInfo.start[0] - props.elementInfo.end[0])\r\n return width < 24 ? 24 : width\r\n })\r\n const svgHeight = computed(() => {\r\n const height = Math.abs(props.elementInfo.start[1] - props.elementInfo.end[1])\r\n return height < 24 ? 24 : height\r\n })\r\n\r\n const lineDashArray = computed(() => props.elementInfo.style === 'dashed' ? '10 6' : '0 0')\r\n\r\n const path = computed(() => {\r\n const start = props.elementInfo.start.join(',')\r\n const end = props.elementInfo.end.join(',')\r\n if (props.elementInfo.broken) {\r\n const mid = props.elementInfo.broken.join(',')\r\n return `M${start} L${mid} L${end}`\r\n }\r\n if (props.elementInfo.curve) {\r\n const mid = props.elementInfo.curve.join(',')\r\n return `M${start} Q${mid} ${end}`\r\n }\r\n return `M${start} L${end}`\r\n })\r\n\r\n return {\r\n handleSelectElement,\r\n shadowStyle,\r\n svgWidth,\r\n svgHeight,\r\n lineDashArray,\r\n path,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=7d3d40d6&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=7d3d40d6&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-7d3d40d6\"\n\nexport default script","\r\n handleSelectElement($event)\"\r\n >\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","\r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n","\r\nimport { defineComponent, inject, onMounted, PropType, ref, Ref, watch } from 'vue'\r\nimport upperFirst from 'lodash/upperFirst'\r\nimport tinycolor from 'tinycolor2'\r\nimport Chartist, {\r\n IChartistLineChart,\r\n IChartistBarChart,\r\n IChartistPieChart,\r\n ILineChartOptions,\r\n IBarChartOptions,\r\n IPieChartOptions,\r\n} from 'chartist'\r\nimport { ChartData, ChartType } from '@/types/slides'\r\n\r\nimport 'chartist/dist/scss/chartist.scss'\r\n\r\nexport default defineComponent({\r\n name: 'chart',\r\n props: {\r\n width: {\r\n type: Number,\r\n required: true,\r\n },\r\n height: {\r\n type: Number,\r\n required: true,\r\n },\r\n type: {\r\n type: String as PropType,\r\n required: true,\r\n },\r\n data: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n options: {\r\n type: Object as PropType,\r\n },\r\n themeColor: {\r\n type: String,\r\n required: true,\r\n },\r\n gridColor: {\r\n type: String,\r\n },\r\n },\r\n setup(props) {\r\n const chartRef = ref()\r\n const slideScale: Ref = inject('slideScale') || ref(1)\r\n\r\n let chart: IChartistLineChart | IChartistBarChart | IChartistPieChart | undefined\r\n\r\n const getDataAndOptions = () => {\r\n const propsOptopns = props.options || {}\r\n const options = {\r\n ...propsOptopns,\r\n width: props.width * slideScale.value,\r\n height: props.height * slideScale.value,\r\n }\r\n const data = props.type === 'pie' ? { ...props.data, series: props.data.series[0] } : props.data\r\n return { data, options }\r\n }\r\n\r\n const renderChart = () => {\r\n if (!chartRef.value) return\r\n\r\n const type = upperFirst(props.type)\r\n const { data, options } = getDataAndOptions()\r\n chart = new Chartist[type](chartRef.value, data, options)\r\n }\r\n\r\n const updateChart = () => {\r\n if (!chart) {\r\n renderChart()\r\n return\r\n }\r\n const { data, options } = getDataAndOptions()\r\n chart.update(data, options)\r\n }\r\n\r\n watch([\r\n () => props.width,\r\n () => props.height,\r\n () => props.data,\r\n slideScale,\r\n ], updateChart)\r\n\r\n onMounted(renderChart)\r\n\r\n // 更新主题配色:获取主题色的相近颜色作为主题配色\r\n const updateTheme = () => {\r\n if (!chartRef.value) return\r\n\r\n const colors = tinycolor(props.themeColor).analogous(10)\r\n for (let i = 0; i < 10; i++) {\r\n const color = colors[i].toRgbString()\r\n chartRef.value.style.setProperty(`--theme-color-${i + 1}`, color)\r\n }\r\n }\r\n\r\n watch(() => props.themeColor, updateTheme)\r\n onMounted(updateTheme)\r\n\r\n // 更新网格颜色,包括坐标的文字部分\r\n const updateGridColor = () => {\r\n if (!chartRef.value) return\r\n if (props.gridColor) chartRef.value.style.setProperty(`--grid-color`, props.gridColor)\r\n }\r\n\r\n watch(() => props.gridColor, updateGridColor)\r\n onMounted(updateGridColor)\r\n\r\n return {\r\n slideScale,\r\n chartRef,\r\n }\r\n },\r\n})\r\n","import { render } from \"./Chart.vue?vue&type=template&id=233b1dc8&scoped=true\"\nimport script from \"./Chart.vue?vue&type=script&lang=ts\"\nexport * from \"./Chart.vue?vue&type=script&lang=ts\"\n\nimport \"./Chart.vue?vue&type=style&index=0&id=233b1dc8&lang=scss&scoped=true\"\nimport \"./Chart.vue?vue&type=style&index=1&id=233b1dc8&lang=scss\"\nscript.render = render\nscript.__scopeId = \"data-v-233b1dc8\"\n\nexport default script","\r\nimport { defineComponent, PropType } from 'vue'\r\nimport { PPTChartElement } from '@/types/slides'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\n\r\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\r\nimport Chart from './Chart.vue'\r\n\r\nexport default defineComponent({\r\n name: 'editable-element-chart',\r\n components: {\r\n ElementOutline,\r\n Chart,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n selectElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTChartElement, canMove?: boolean) => void>,\r\n required: true,\r\n },\r\n contextmenus: {\r\n type: Function as PropType<() => ContextmenuItem[]>,\r\n },\r\n },\r\n setup(props) {\r\n const handleSelectElement = (e: MouseEvent) => {\r\n if (props.elementInfo.lock) return\r\n e.stopPropagation()\r\n\r\n props.selectElement(e, props.elementInfo)\r\n }\r\n\r\n return {\r\n handleSelectElement,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=6277fc70&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=6277fc70&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-6277fc70\"\n\nexport default script","\r\n \r\n
\r\n
updateTableCells(data)\"\r\n @changeColWidths=\"widths => updateColWidths(widths)\"\r\n @changeSelectedCells=\"cells => updateSelectedCells(cells)\"\r\n />\r\n handleSelectElement($event)\"\r\n >\r\n
双击编辑
\r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n","\r\n \r\n
\r\n
handleMousedownColHandler($event, index)\"\r\n >
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 1,\r\n 'active': activedCell === `${rowIndex}_${colIndex}`,\r\n }\"\r\n :style=\"{\r\n borderStyle: outline.style,\r\n borderColor: outline.color,\r\n borderWidth: outline.width + 'px',\r\n ...getTextStyle(cell.style),\r\n }\"\r\n v-for=\"(cell, colIndex) in rowCells\"\r\n :key=\"cell.id\"\r\n :rowspan=\"cell.rowspan\"\r\n :colspan=\"cell.colspan\"\r\n :data-cell-index=\"`${rowIndex}_${colIndex}`\"\r\n v-show=\"!hideCells.includes(`${rowIndex}_${colIndex}`)\"\r\n @mousedown=\"$event => handleCellMousedown($event, rowIndex, colIndex)\"\r\n @mouseenter=\"handleCellMouseenter(rowIndex, colIndex)\"\r\n v-contextmenu=\"el => contextmenus(el)\"\r\n >\r\n \r\n | \r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\n handleInput($event)\"\r\n v-html=\"text\"\r\n >
\r\n\r\n\r\n\r\n\r\n","\r\nimport { defineComponent, onUnmounted, ref, watch } from 'vue'\r\n\r\nexport default defineComponent({\r\n name: 'custom-textarea',\r\n props: {\r\n modelValue: {\r\n type: String,\r\n default: '',\r\n },\r\n contenteditable: {\r\n type: [Boolean, String],\r\n default: false,\r\n },\r\n },\r\n setup(props, { emit }) {\r\n const textareaRef = ref()\r\n const text = ref('')\r\n const isFocus = ref(false)\r\n\r\n // 自定义v-modal,同步数据\r\n // 当文本框聚焦时,不执行数据同步\r\n watch(() => props.modelValue, () => {\r\n if (isFocus.value) return\r\n text.value = props.modelValue\r\n if (textareaRef.value) textareaRef.value.innerHTML = props.modelValue\r\n }, { immediate: true })\r\n\r\n const handleInput = () => {\r\n if (!textareaRef.value) return\r\n const text = textareaRef.value.innerHTML\r\n emit('update:modelValue', text)\r\n }\r\n\r\n // 聚焦时更新焦点标记,并监听粘贴事件\r\n const handleFocus = () => {\r\n isFocus.value = true\r\n\r\n if (!textareaRef.value) return\r\n textareaRef.value.onpaste = (e: ClipboardEvent) => {\r\n e.preventDefault()\r\n if (!e.clipboardData) return\r\n\r\n const clipboardDataFirstItem = e.clipboardData.items[0]\r\n\r\n if (clipboardDataFirstItem && clipboardDataFirstItem.kind === 'string' && clipboardDataFirstItem.type === 'text/plain') {\r\n clipboardDataFirstItem.getAsString(text => emit('update:modelValue', text))\r\n }\r\n }\r\n }\r\n\r\n // 失焦时更新焦点标记,清除粘贴事件监听\r\n const handleBlur = () => {\r\n isFocus.value = false\r\n if (textareaRef.value) textareaRef.value.onpaste = null\r\n }\r\n\r\n // 清除粘贴事件监听\r\n onUnmounted(() => {\r\n if (textareaRef.value) textareaRef.value.onpaste = null\r\n })\r\n\r\n return {\r\n textareaRef,\r\n handleFocus,\r\n handleInput,\r\n handleBlur,\r\n text,\r\n }\r\n },\r\n})\r\n","import { render } from \"./CustomTextarea.vue?vue&type=template&id=0d17e957&scoped=true\"\nimport script from \"./CustomTextarea.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomTextarea.vue?vue&type=script&lang=ts\"\n\nimport \"./CustomTextarea.vue?vue&type=style&index=0&id=0d17e957&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-0d17e957\"\n\nexport default script","\r\nimport { computed, defineComponent, nextTick, onMounted, onUnmounted, PropType, ref, watch } from 'vue'\r\nimport debounce from 'lodash/debounce'\r\nimport { useStore } from '@/store'\r\nimport { PPTElementOutline, TableCell, TableTheme } from '@/types/slides'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\nimport { KEYS } from '@/configs/hotkey'\r\nimport { createRandomCode } from '@/utils/common'\r\nimport { getTextStyle } from './utils'\r\nimport useHideCells from './useHideCells'\r\nimport useSubThemeColor from './useSubThemeColor'\r\n\r\nimport CustomTextarea from './CustomTextarea.vue'\r\n\r\nexport default defineComponent({\r\n name: 'editable-table',\r\n components: {\r\n CustomTextarea,\r\n },\r\n props: {\r\n data: {\r\n type: Array as PropType,\r\n required: true,\r\n },\r\n width: {\r\n type: Number,\r\n required: true,\r\n },\r\n colWidths: {\r\n type: Array as PropType,\r\n required: true,\r\n },\r\n outline: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n theme: {\r\n type: Object as PropType,\r\n },\r\n editable: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n },\r\n setup(props, { emit }) {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n \r\n const isStartSelect = ref(false)\r\n const startCell = ref([])\r\n const endCell = ref([])\r\n\r\n const tableCells = computed({\r\n get() {\r\n return props.data\r\n },\r\n set(newData) {\r\n emit('change', newData)\r\n },\r\n })\r\n\r\n // 主题辅助色\r\n const theme = computed(() => props.theme)\r\n const { subThemeColor } = useSubThemeColor(theme)\r\n\r\n // 计算表格每一列的列宽和总宽度\r\n const colSizeList = ref([])\r\n const totalWidth = computed(() => colSizeList.value.reduce((a, b) => a + b))\r\n watch([\r\n () => props.colWidths,\r\n () => props.width,\r\n ], () => {\r\n colSizeList.value = props.colWidths.map(item => item * props.width)\r\n }, { immediate: true })\r\n \r\n // 清除全部单元格的选中状态\r\n // 表格处于不可编辑状态时也需要清除\r\n const removeSelectedCells = () => {\r\n startCell.value = []\r\n endCell.value = []\r\n }\r\n\r\n watch(() => props.editable, () => {\r\n if (!props.editable) removeSelectedCells()\r\n })\r\n\r\n // 用于拖拽列宽的操作节点位置\r\n const dragLinePosition = computed(() => {\r\n const dragLinePosition: number[] = []\r\n for (let i = 1; i < colSizeList.value.length + 1; i++) {\r\n const pos = colSizeList.value.slice(0, i).reduce((a, b) => (a + b))\r\n dragLinePosition.push(pos)\r\n }\r\n return dragLinePosition\r\n })\r\n\r\n // 无效的单元格位置(被合并的单元格位置)集合\r\n const cells = computed(() => props.data)\r\n const { hideCells } = useHideCells(cells)\r\n\r\n // 当前选中的单元格集合\r\n const selectedCells = computed(() => {\r\n if (!startCell.value.length) return []\r\n const [startX, startY] = startCell.value\r\n\r\n if (!endCell.value.length) return [`${startX}_${startY}`]\r\n const [endX, endY] = endCell.value\r\n\r\n if (startX === endX && startY === endY) return [`${startX}_${startY}`]\r\n\r\n const selectedCells = []\r\n\r\n const minX = Math.min(startX, endX)\r\n const minY = Math.min(startY, endY)\r\n const maxX = Math.max(startX, endX)\r\n const maxY = Math.max(startY, endY)\r\n\r\n for (let i = 0; i < tableCells.value.length; i++) {\r\n const rowCells = tableCells.value[i]\r\n for (let j = 0; j < rowCells.length; j++) {\r\n if (i >= minX && i <= maxX && j >= minY && j <= maxY) selectedCells.push(`${i}_${j}`)\r\n }\r\n }\r\n return selectedCells\r\n })\r\n\r\n watch(selectedCells, () => {\r\n emit('changeSelectedCells', selectedCells.value)\r\n })\r\n\r\n // 当前激活的单元格:当且仅当只有一个选中单元格时,该单元格为激活的单元格\r\n const activedCell = computed(() => {\r\n if (selectedCells.value.length > 1) return null\r\n return selectedCells.value[0]\r\n })\r\n\r\n // 当前选中的单元格位置范围\r\n const selectedRange = computed(() => {\r\n if (!startCell.value.length) return null\r\n const [startX, startY] = startCell.value\r\n\r\n if (!endCell.value.length) return { row: [startX, startX], col: [startY, startY] }\r\n const [endX, endY] = endCell.value\r\n\r\n if (startX === endX && startY === endY) return { row: [startX, startX], col: [startY, startY] }\r\n\r\n const minX = Math.min(startX, endX)\r\n const minY = Math.min(startY, endY)\r\n const maxX = Math.max(startX, endX)\r\n const maxY = Math.max(startY, endY)\r\n\r\n return {\r\n row: [minX, maxX],\r\n col: [minY, maxY],\r\n }\r\n })\r\n\r\n // 设置选中单元格状态(鼠标点击或拖选)\r\n const handleMouseup = () => isStartSelect.value = false\r\n\r\n const handleCellMousedown = (e: MouseEvent, rowIndex: number, colIndex: number) => {\r\n if (e.button === 0) {\r\n endCell.value = []\r\n isStartSelect.value = true\r\n startCell.value = [rowIndex, colIndex]\r\n }\r\n }\r\n\r\n const handleCellMouseenter = (rowIndex: number, colIndex: number) => {\r\n if (!isStartSelect.value) return\r\n endCell.value = [rowIndex, colIndex]\r\n }\r\n\r\n onMounted(() => {\r\n document.addEventListener('mouseup', handleMouseup)\r\n })\r\n onUnmounted(() => {\r\n document.removeEventListener('mouseup', handleMouseup)\r\n })\r\n\r\n // 判断某位置是否为无效单元格(被合并掉的位置)\r\n const isHideCell = (rowIndex: number, colIndex: number) => hideCells.value.includes(`${rowIndex}_${colIndex}`)\r\n\r\n // 选中指定的列\r\n const selectCol = (index: number) => {\r\n const maxRow = tableCells.value.length - 1\r\n startCell.value = [0, index]\r\n endCell.value = [maxRow, index]\r\n }\r\n\r\n // 选中指定的行\r\n const selectRow = (index: number) => {\r\n const maxCol = tableCells.value[index].length - 1\r\n startCell.value = [index, 0]\r\n endCell.value = [index, maxCol]\r\n }\r\n\r\n // 选中全部单元格\r\n const selectAll = () => {\r\n const maxRow = tableCells.value.length - 1\r\n const maxCol = tableCells.value[maxRow].length - 1\r\n startCell.value = [0, 0]\r\n endCell.value = [maxRow, maxCol]\r\n }\r\n\r\n // 删除一行\r\n const deleteRow = (rowIndex: number) => {\r\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\r\n\r\n const targetCells = tableCells.value[rowIndex]\r\n const hideCellsPos = []\r\n for (let i = 0; i < targetCells.length; i++) {\r\n if (isHideCell(rowIndex, i)) hideCellsPos.push(i)\r\n }\r\n \r\n for (const pos of hideCellsPos) {\r\n for (let i = rowIndex; i >= 0; i--) {\r\n if (!isHideCell(i, pos)) {\r\n _tableCells[i][pos].rowspan = _tableCells[i][pos].rowspan - 1\r\n break\r\n }\r\n }\r\n }\r\n\r\n _tableCells.splice(rowIndex, 1)\r\n tableCells.value = _tableCells\r\n }\r\n\r\n // 删除一列\r\n const deleteCol = (colIndex: number) => {\r\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\r\n\r\n const hideCellsPos = []\r\n for (let i = 0; i < tableCells.value.length; i++) {\r\n if (isHideCell(i, colIndex)) hideCellsPos.push(i)\r\n }\r\n\r\n for (const pos of hideCellsPos) {\r\n for (let i = colIndex; i >= 0; i--) {\r\n if (!isHideCell(pos, i)) {\r\n _tableCells[pos][i].colspan = _tableCells[pos][i].colspan - 1\r\n break\r\n }\r\n }\r\n }\r\n\r\n tableCells.value = _tableCells.map(item => {\r\n item.splice(colIndex, 1)\r\n return item\r\n })\r\n colSizeList.value.splice(colIndex, 1)\r\n emit('changeColWidths', colSizeList.value)\r\n }\r\n \r\n // 插入一行\r\n const insertRow = (rowIndex: number) => {\r\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\r\n\r\n const rowCells: TableCell[] = []\r\n for (let i = 0; i < _tableCells[0].length; i++) {\r\n rowCells.push({\r\n colspan: 1,\r\n rowspan: 1,\r\n text: '',\r\n id: createRandomCode(),\r\n })\r\n }\r\n\r\n _tableCells.splice(rowIndex, 0, rowCells)\r\n tableCells.value = _tableCells\r\n }\r\n\r\n // 插入一列\r\n const insertCol = (colIndex: number) => {\r\n tableCells.value = tableCells.value.map(item => {\r\n const cell = {\r\n colspan: 1,\r\n rowspan: 1,\r\n text: '',\r\n id: createRandomCode(),\r\n }\r\n item.splice(colIndex, 0, cell)\r\n return item\r\n })\r\n colSizeList.value.splice(colIndex, 0, 100)\r\n emit('changeColWidths', colSizeList.value)\r\n }\r\n \r\n // 合并单元格\r\n const mergeCells = () => {\r\n const [startX, startY] = startCell.value\r\n const [endX, endY] = endCell.value\r\n\r\n const minX = Math.min(startX, endX)\r\n const minY = Math.min(startY, endY)\r\n const maxX = Math.max(startX, endX)\r\n const maxY = Math.max(startY, endY)\r\n\r\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\r\n \r\n _tableCells[minX][minY].rowspan = maxX - minX + 1\r\n _tableCells[minX][minY].colspan = maxY - minY + 1\r\n\r\n tableCells.value = _tableCells\r\n removeSelectedCells()\r\n }\r\n\r\n // 拆分单元格\r\n const splitCells = (rowIndex: number, colIndex: number) => {\r\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\r\n _tableCells[rowIndex][colIndex].rowspan = 1\r\n _tableCells[rowIndex][colIndex].colspan = 1\r\n\r\n tableCells.value = _tableCells\r\n removeSelectedCells()\r\n }\r\n\r\n // 鼠标拖拽调整列宽\r\n const handleMousedownColHandler = (e: MouseEvent, colIndex: number) => {\r\n removeSelectedCells()\r\n let isMouseDown = true\r\n\r\n const originWidth = colSizeList.value[colIndex]\r\n const startPageX = e.pageX\r\n\r\n const minWidth = 50\r\n\r\n document.onmousemove = e => {\r\n if (!isMouseDown) return\r\n \r\n const moveX = (e.pageX - startPageX) / canvasScale.value\r\n const width = originWidth + moveX < minWidth ? minWidth : Math.round(originWidth + moveX)\r\n\r\n colSizeList.value[colIndex] = width\r\n }\r\n document.onmouseup = () => {\r\n isMouseDown = false\r\n document.onmousemove = null\r\n document.onmouseup = null\r\n\r\n emit('changeColWidths', colSizeList.value)\r\n }\r\n }\r\n\r\n // 清空选中单元格内的文字\r\n const clearSelectedCellText = () => {\r\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\r\n\r\n for (let i = 0; i < _tableCells.length; i++) {\r\n for (let j = 0; j < _tableCells[i].length; j++) {\r\n if (selectedCells.value.includes(`${i}_${j}`)) {\r\n _tableCells[i][j].text = ''\r\n }\r\n }\r\n }\r\n tableCells.value = _tableCells\r\n }\r\n\r\n // 将焦点移动到下一个单元格\r\n // 当前行右边有单元格时,焦点右移\r\n // 当前行右边无单元格(已处在行末),且存在下一行时,焦点移动下下一行行首\r\n // 当前行右边无单元格(已处在行末),且不存在下一行(已处在最后一行)时,新建一行并将焦点移动下下一行行首\r\n const tabActiveCell = () => {\r\n const getNextCell = (i: number, j: number): [number, number] | null => {\r\n if (!tableCells.value[i]) return null\r\n if (!tableCells.value[i][j]) return getNextCell(i + 1, 0)\r\n if (isHideCell(i, j)) return getNextCell(i, j + 1)\r\n return [i, j]\r\n }\r\n\r\n endCell.value = []\r\n\r\n const nextRow = startCell.value[0]\r\n const nextCol = startCell.value[1] + 1\r\n\r\n const nextCell = getNextCell(nextRow, nextCol)\r\n if (!nextCell) {\r\n insertRow(nextRow + 1)\r\n startCell.value = [nextRow + 1, 0]\r\n }\r\n else startCell.value = nextCell\r\n\r\n // 移动焦点后自动聚焦文本\r\n nextTick(() => {\r\n const textRef = document.querySelector('.cell-text.active') as HTMLInputElement\r\n if (textRef) textRef.focus()\r\n })\r\n }\r\n\r\n // 表格快捷键监听\r\n const keydownListener = (e: KeyboardEvent) => {\r\n if (!props.editable || !selectedCells.value.length) return\r\n\r\n const key = e.key.toUpperCase()\r\n if (selectedCells.value.length < 2) {\r\n if (key === KEYS.TAB) {\r\n e.preventDefault()\r\n tabActiveCell()\r\n }\r\n if (e.ctrlKey && key === KEYS.UP) {\r\n e.preventDefault()\r\n const rowIndex = +selectedCells.value[0].split('_')[0]\r\n insertRow(rowIndex)\r\n }\r\n if (e.ctrlKey && key === KEYS.DOWN) {\r\n e.preventDefault()\r\n const rowIndex = +selectedCells.value[0].split('_')[0]\r\n insertRow(rowIndex + 1)\r\n }\r\n if (e.ctrlKey && key === KEYS.LEFT) {\r\n e.preventDefault()\r\n const colIndex = +selectedCells.value[0].split('_')[1]\r\n insertCol(colIndex)\r\n }\r\n if (e.ctrlKey && key === KEYS.RIGHT) {\r\n e.preventDefault()\r\n const colIndex = +selectedCells.value[0].split('_')[1]\r\n insertCol(colIndex + 1)\r\n }\r\n }\r\n else if (key === KEYS.DELETE) {\r\n clearSelectedCellText()\r\n }\r\n }\r\n\r\n onMounted(() => {\r\n document.addEventListener('keydown', keydownListener)\r\n })\r\n onUnmounted(() => {\r\n document.removeEventListener('keydown', keydownListener)\r\n })\r\n\r\n // 单元格文字输入时更新表格数据\r\n const handleInput = debounce(function() {\r\n emit('change', tableCells.value)\r\n }, 300, { trailing: true })\r\n\r\n // 获取有效的单元格(排除掉被合并的单元格)\r\n const getEffectiveTableCells = () => {\r\n const effectiveTableCells = []\r\n\r\n for (let i = 0; i < tableCells.value.length; i++) {\r\n const rowCells = tableCells.value[i]\r\n const _rowCells = []\r\n for (let j = 0; j < rowCells.length; j++) {\r\n if (!isHideCell(i, j)) _rowCells.push(rowCells[j])\r\n }\r\n if (_rowCells.length) effectiveTableCells.push(_rowCells)\r\n }\r\n\r\n return effectiveTableCells\r\n }\r\n\r\n // 检查是否可以删除行和列:有效的行/列数大于1\r\n const checkCanDeleteRowOrCol = () => {\r\n const effectiveTableCells = getEffectiveTableCells()\r\n const canDeleteRow = effectiveTableCells.length > 1\r\n const canDeleteCol = effectiveTableCells[0].length > 1\r\n\r\n return { canDeleteRow, canDeleteCol }\r\n }\r\n\r\n // 检查是否可以合并或拆分\r\n // 必须多选才可以合并\r\n // 必须单选且所选单元格为合并单元格才可以拆分\r\n const checkCanMergeOrSplit = (rowIndex: number, colIndex: number) => {\r\n const isMultiSelected = selectedCells.value.length > 1\r\n const targetCell = tableCells.value[rowIndex][colIndex]\r\n\r\n const canMerge = isMultiSelected\r\n const canSplit = !isMultiSelected && (targetCell.rowspan > 1 || targetCell.colspan > 1)\r\n\r\n return { canMerge, canSplit }\r\n }\r\n\r\n const contextmenus = (el: HTMLElement): ContextmenuItem[] => {\r\n const cellIndex = el.dataset.cellIndex as string\r\n const rowIndex = +cellIndex.split('_')[0]\r\n const colIndex = +cellIndex.split('_')[1]\r\n\r\n if (!selectedCells.value.includes(`${rowIndex}_${colIndex}`)) {\r\n startCell.value = [rowIndex, colIndex]\r\n endCell.value = []\r\n }\r\n\r\n const { canMerge, canSplit } = checkCanMergeOrSplit(rowIndex, colIndex)\r\n const { canDeleteRow, canDeleteCol } = checkCanDeleteRowOrCol()\r\n\r\n return [\r\n {\r\n text: '插入列',\r\n children: [\r\n { text: '到左侧', handler: () => insertCol(colIndex) },\r\n { text: '到右侧', handler: () => insertCol(colIndex + 1) },\r\n ],\r\n },\r\n {\r\n text: '插入行',\r\n children: [\r\n { text: '到上方', handler: () => insertRow(rowIndex) },\r\n { text: '到下方', handler: () => insertRow(rowIndex + 1) },\r\n ],\r\n },\r\n {\r\n text: '删除列',\r\n disable: !canDeleteCol,\r\n handler: () => deleteCol(colIndex),\r\n },\r\n {\r\n text: '删除行',\r\n disable: !canDeleteRow,\r\n handler: () => deleteRow(rowIndex),\r\n },\r\n { divider: true },\r\n {\r\n text: '合并单元格',\r\n disable: !canMerge,\r\n handler: mergeCells,\r\n },\r\n {\r\n text: '取消合并单元格',\r\n disable: !canSplit,\r\n handler: () => splitCells(rowIndex, colIndex),\r\n },\r\n { divider: true },\r\n {\r\n text: '选中当前列',\r\n handler: () => selectCol(colIndex),\r\n },\r\n {\r\n text: '选中当前行',\r\n handler: () => selectRow(rowIndex),\r\n },\r\n {\r\n text: '选中全部单元格',\r\n handler: selectAll,\r\n },\r\n ]\r\n }\r\n\r\n return {\r\n getTextStyle,\r\n dragLinePosition,\r\n tableCells,\r\n colSizeList,\r\n totalWidth,\r\n hideCells,\r\n selectedCells,\r\n activedCell,\r\n selectedRange,\r\n handleCellMousedown,\r\n handleCellMouseenter,\r\n selectCol,\r\n selectRow,\r\n handleMousedownColHandler,\r\n contextmenus,\r\n handleInput,\r\n subThemeColor,\r\n }\r\n },\r\n})\r\n","import { render } from \"./EditableTable.vue?vue&type=template&id=70bdbb7e&scoped=true\"\nimport script from \"./EditableTable.vue?vue&type=script&lang=ts\"\nexport * from \"./EditableTable.vue?vue&type=script&lang=ts\"\n\nimport \"./EditableTable.vue?vue&type=style&index=0&id=70bdbb7e&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-70bdbb7e\"\n\nexport default script","\r\nimport { computed, defineComponent, nextTick, onMounted, onUnmounted, PropType, ref, watch } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTTableElement, TableCell } from '@/types/slides'\r\nimport emitter, { EmitterEvents } from '@/utils/emitter'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport EditableTable from './EditableTable.vue'\r\n\r\nexport default defineComponent({\r\n name: 'editable-element-table',\r\n components: {\r\n EditableTable,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n selectElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTTableElement, canMove?: boolean) => void>,\r\n required: true,\r\n },\r\n contextmenus: {\r\n type: Function as PropType<() => ContextmenuItem[]>,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n const handleElementId = computed(() => store.state.handleElementId)\r\n \r\n const elementRef = ref()\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n const handleSelectElement = (e: MouseEvent) => {\r\n if (props.elementInfo.lock) return\r\n e.stopPropagation()\r\n\r\n props.selectElement(e, props.elementInfo)\r\n }\r\n\r\n // 更新表格的可编辑状态,表格处于编辑状态时需要禁用全局快捷键\r\n const editable = ref(false)\r\n\r\n watch(handleElementId, () => {\r\n if (handleElementId.value !== props.elementInfo.id) editable.value = false\r\n })\r\n\r\n watch(editable, () => {\r\n store.commit(MutationTypes.SET_DISABLE_HOTKEYS_STATE, editable.value)\r\n })\r\n\r\n const startEdit = () => {\r\n if (!props.elementInfo.lock) editable.value = true\r\n }\r\n\r\n // 监听表格元素的尺寸变化,当高度变化时,更新高度到vuex\r\n // 如果高度变化时正处在缩放操作中,则等待缩放操作结束后再更新\r\n const isScaling = ref(false)\r\n const realHeightCache = ref(-1)\r\n\r\n const scaleElementStateListener = (state: boolean) => {\r\n isScaling.value = state\r\n\r\n if (state) editable.value = false\r\n\r\n if (!state && realHeightCache.value !== -1) {\r\n store.commit(MutationTypes.UPDATE_ELEMENT, {\r\n id: props.elementInfo.id,\r\n props: { height: realHeightCache.value },\r\n })\r\n realHeightCache.value = -1\r\n }\r\n }\r\n\r\n emitter.on(EmitterEvents.SCALE_ELEMENT_STATE, state => scaleElementStateListener(state))\r\n onUnmounted(() => {\r\n emitter.off(EmitterEvents.SCALE_ELEMENT_STATE, state => scaleElementStateListener(state))\r\n })\r\n\r\n const updateTableElementHeight = (entries: ResizeObserverEntry[]) => {\r\n const contentRect = entries[0].contentRect\r\n if (!elementRef.value) return\r\n\r\n const realHeight = contentRect.height\r\n\r\n if (props.elementInfo.height !== realHeight) {\r\n if (!isScaling.value) {\r\n store.commit(MutationTypes.UPDATE_ELEMENT, {\r\n id: props.elementInfo.id,\r\n props: { height: realHeight },\r\n })\r\n }\r\n else realHeightCache.value = realHeight\r\n }\r\n }\r\n\r\n const resizeObserver = new ResizeObserver(updateTableElementHeight)\r\n\r\n onMounted(() => {\r\n if (elementRef.value) resizeObserver.observe(elementRef.value)\r\n })\r\n onUnmounted(() => {\r\n if (elementRef.value) resizeObserver.unobserve(elementRef.value)\r\n })\r\n\r\n // 更新表格内容数据\r\n const updateTableCells = (data: TableCell[][]) => {\r\n store.commit(MutationTypes.UPDATE_ELEMENT, {\r\n id: props.elementInfo.id, \r\n props: { data },\r\n })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 更新表格的列宽数据\r\n const updateColWidths = (widths: number[]) => {\r\n const width = widths.reduce((a, b) => a + b)\r\n const colWidths = widths.map(item => item / width)\r\n\r\n store.commit(MutationTypes.UPDATE_ELEMENT, {\r\n id: props.elementInfo.id, \r\n props: { width, colWidths },\r\n })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 更新表格当前选中的单元格\r\n const updateSelectedCells = (cells: string[]) => {\r\n nextTick(() => emitter.emit(EmitterEvents.UPDATE_TABLE_SELECTED_CELL, cells))\r\n }\r\n\r\n return {\r\n elementRef,\r\n canvasScale,\r\n handleSelectElement,\r\n updateTableCells,\r\n updateColWidths,\r\n editable,\r\n startEdit,\r\n updateSelectedCells,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=c0edfdac&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=c0edfdac&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-c0edfdac\"\n\nexport default script","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { ElementTypes, PPTElement } from '@/types/slides'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\n\r\nimport useLockElement from '@/hooks/useLockElement'\r\nimport useDeleteElement from '@/hooks/useDeleteElement'\r\nimport useCombineElement from '@/hooks/useCombineElement'\r\nimport useOrderElement from '@/hooks/useOrderElement'\r\nimport useAlignElementToCanvas from '@/hooks/useAlignElementToCanvas'\r\nimport useCopyAndPasteElement from '@/hooks/useCopyAndPasteElement'\r\nimport useSelectAllElement from '@/hooks/useSelectAllElement'\r\n\r\nimport { ElementOrderCommands, ElementAlignCommands } from '@/types/edit'\r\n\r\nimport ImageElement from '@/views/components/element/ImageElement/index.vue'\r\nimport TextElement from '@/views/components/element/TextElement/index.vue'\r\nimport ShapeElement from '@/views/components/element/ShapeElement/index.vue'\r\nimport LineElement from '@/views/components/element/LineElement/index.vue'\r\nimport ChartElement from '@/views/components/element/ChartElement/index.vue'\r\nimport TableElement from '@/views/components/element/TableElement/index.vue'\r\n\r\nexport default defineComponent({\r\n name: 'editable-element',\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n elementIndex: {\r\n type: Number,\r\n required: true,\r\n },\r\n isMultiSelect: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n selectElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTElement, canMove?: boolean) => void>,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const theme = computed(() => store.state.theme)\r\n\r\n const currentElementComponent = computed(() => {\r\n const elementTypeMap = {\r\n [ElementTypes.IMAGE]: ImageElement,\r\n [ElementTypes.TEXT]: TextElement,\r\n [ElementTypes.SHAPE]: ShapeElement,\r\n [ElementTypes.LINE]: LineElement,\r\n [ElementTypes.CHART]: ChartElement,\r\n [ElementTypes.TABLE]: TableElement,\r\n }\r\n return elementTypeMap[props.elementInfo.type] || null\r\n })\r\n\r\n const { orderElement } = useOrderElement()\r\n const { alignElementToCanvas } = useAlignElementToCanvas()\r\n const { combineElements, uncombineElements } = useCombineElement()\r\n const { deleteElement } = useDeleteElement()\r\n const { lockElement, unlockElement } = useLockElement()\r\n const { copyElement, pasteElement, cutElement } = useCopyAndPasteElement()\r\n const { selectAllElement } = useSelectAllElement()\r\n\r\n const contextmenus = (): ContextmenuItem[] => {\r\n if (props.elementInfo.lock) {\r\n return [{\r\n text: '解锁', \r\n handler: () => unlockElement(props.elementInfo),\r\n }]\r\n }\r\n\r\n return [\r\n {\r\n text: '剪切',\r\n subText: 'Ctrl + X',\r\n handler: cutElement,\r\n },\r\n {\r\n text: '复制',\r\n subText: 'Ctrl + C',\r\n handler: copyElement,\r\n },\r\n {\r\n text: '粘贴',\r\n subText: 'Ctrl + V',\r\n handler: pasteElement,\r\n },\r\n { divider: true },\r\n {\r\n text: '水平居中',\r\n handler: () => alignElementToCanvas(ElementAlignCommands.HORIZONTAL),\r\n children: [\r\n { text: '水平垂直居中', handler: () => alignElementToCanvas(ElementAlignCommands.CENTER), },\r\n { text: '水平居中', handler: () => alignElementToCanvas(ElementAlignCommands.HORIZONTAL) },\r\n { text: '左对齐', handler: () => alignElementToCanvas(ElementAlignCommands.LEFT) },\r\n { text: '右对齐', handler: () => alignElementToCanvas(ElementAlignCommands.RIGHT) },\r\n ],\r\n },\r\n {\r\n text: '垂直居中',\r\n handler: () => alignElementToCanvas(ElementAlignCommands.VERTICAL),\r\n children: [\r\n { text: '水平垂直居中', handler: () => alignElementToCanvas(ElementAlignCommands.CENTER) },\r\n { text: '垂直居中', handler: () => alignElementToCanvas(ElementAlignCommands.VERTICAL) },\r\n { text: '顶部对齐', handler: () => alignElementToCanvas(ElementAlignCommands.TOP) },\r\n { text: '底部对齐', handler: () => alignElementToCanvas(ElementAlignCommands.BOTTOM) },\r\n ],\r\n },\r\n { divider: true },\r\n {\r\n text: '置于顶层',\r\n disable: props.isMultiSelect && !props.elementInfo.groupId,\r\n handler: () => orderElement(props.elementInfo, ElementOrderCommands.TOP),\r\n children: [\r\n { text: '置于顶层', handler: () => orderElement(props.elementInfo, ElementOrderCommands.TOP) },\r\n { text: '上移一层', handler: () => orderElement(props.elementInfo, ElementOrderCommands.UP) },\r\n ],\r\n },\r\n {\r\n text: '置于底层',\r\n disable: props.isMultiSelect && !props.elementInfo.groupId,\r\n handler: () => orderElement(props.elementInfo, ElementOrderCommands.BOTTOM),\r\n children: [\r\n { text: '置于底层', handler: () => orderElement(props.elementInfo, ElementOrderCommands.BOTTOM) },\r\n { text: '下移一层', handler: () => orderElement(props.elementInfo, ElementOrderCommands.DOWN) },\r\n ],\r\n },\r\n { divider: true },\r\n {\r\n text: props.elementInfo.groupId ? '取消组合' : '组合',\r\n subText: 'Ctrl + G',\r\n handler: props.elementInfo.groupId ? uncombineElements : combineElements,\r\n hide: !props.isMultiSelect,\r\n },\r\n {\r\n text: '全选',\r\n subText: 'Ctrl + A',\r\n handler: selectAllElement,\r\n },\r\n {\r\n text: '锁定',\r\n subText: 'Ctrl + L',\r\n handler: lockElement,\r\n },\r\n {\r\n text: '删除',\r\n subText: 'Delete',\r\n handler: deleteElement,\r\n },\r\n ]\r\n }\r\n\r\n return {\r\n currentElementComponent,\r\n contextmenus,\r\n theme,\r\n }\r\n },\r\n})\r\n","import { render } from \"./EditableElement.vue?vue&type=template&id=b9d8be58\"\nimport script from \"./EditableElement.vue?vue&type=script&lang=ts\"\nexport * from \"./EditableElement.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\n \r\n\r\n\r\n\r\n\r\n","\r\nexport default {\r\n name: 'mouse-selection',\r\n props: {\r\n top: {\r\n type: Number,\r\n required: true,\r\n },\r\n left: {\r\n type: Number,\r\n required: true,\r\n },\r\n width: {\r\n type: Number,\r\n required: true,\r\n },\r\n height: {\r\n type: Number,\r\n required: true,\r\n },\r\n quadrant: {\r\n type: Number,\r\n required: true,\r\n validator(value: number) {\r\n return [1, 2, 3, 4].includes(value)\r\n },\r\n },\r\n }\r\n}\r\n","import { render } from \"./MouseSelection.vue?vue&type=template&id=1619c258&scoped=true\"\nimport script from \"./MouseSelection.vue?vue&type=script&lang=ts\"\nexport * from \"./MouseSelection.vue?vue&type=script&lang=ts\"\n\nimport \"./MouseSelection.vue?vue&type=style&index=0&id=1619c258&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-1619c258\"\n\nexport default script","\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n","\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n","\r\nimport { defineComponent, computed } from 'vue'\r\nimport tinycolor from 'tinycolor2'\r\nimport { useStore } from '@/store'\r\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\r\nimport { SlideBackground } from '@/types/slides'\r\n\r\nexport default defineComponent({\r\n name: 'grid-lines',\r\n setup() {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n const viewportRatio = computed(() => store.state.viewportRatio)\r\n const background = computed(() => store.getters.currentSlide?.background)\r\n\r\n // 计算网格线的颜色,避免与背景的颜色太接近\r\n const gridColor = computed(() => {\r\n if (!background.value || background.value.type === 'image') return 'rgba(100, 100, 100, 0.5)'\r\n const color = background.value.color\r\n const rgba = tinycolor(color).toRgb()\r\n const newRgba = {\r\n r: rgba.r > 128 ? rgba.r - 128 : rgba.r + 127,\r\n g: rgba.g > 128 ? rgba.g - 128 : rgba.g + 127,\r\n b: rgba.b > 128 ? rgba.b - 128 : rgba.b + 127,\r\n a: 0.5\r\n }\r\n return `rgba(${[newRgba.r, newRgba.g, newRgba.b, newRgba.a].join(',')})`\r\n })\r\n\r\n const gridSize = 50\r\n\r\n // 计算网格路径\r\n const getPath = () => {\r\n const maxX = VIEWPORT_SIZE\r\n const maxY = VIEWPORT_SIZE * viewportRatio.value\r\n\r\n let path = ''\r\n for (let i = 0; i <= Math.floor(maxY / gridSize); i++) {\r\n path += `M0 ${i * gridSize} L${maxX} ${i * gridSize} `\r\n }\r\n for (let i = 0; i <= Math.floor(maxX / gridSize); i++) {\r\n path += `M${i * gridSize} 0 L${i * gridSize} ${maxY} `\r\n }\r\n return path\r\n }\r\n\r\n return {\r\n canvasScale,\r\n gridColor,\r\n width: VIEWPORT_SIZE,\r\n height: VIEWPORT_SIZE * viewportRatio.value,\r\n path: getPath(),\r\n }\r\n },\r\n})\r\n","import { render } from \"./GridLines.vue?vue&type=template&id=fbcac4e2&scoped=true\"\nimport script from \"./GridLines.vue?vue&type=script&lang=ts\"\nexport * from \"./GridLines.vue?vue&type=script&lang=ts\"\n\nimport \"./GridLines.vue?vue&type=style&index=0&id=fbcac4e2&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-fbcac4e2\"\n\nexport default script","\r\nimport { computed, defineComponent } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { SlideBackground } from '@/types/slides'\r\nimport GridLines from './GridLines.vue'\r\nimport useSlideBackgroundStyle from '@/hooks/useSlideBackgroundStyle'\r\n\r\nexport default defineComponent({\r\n name: 'viewport-background',\r\n components: {\r\n GridLines,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const showGridLines = computed(() => store.state.showGridLines)\r\n const background = computed(() => store.getters.currentSlide?.background)\r\n\r\n const { backgroundStyle } = useSlideBackgroundStyle(background)\r\n\r\n return {\r\n showGridLines,\r\n backgroundStyle,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ViewportBackground.vue?vue&type=template&id=a9ca1b50&scoped=true\"\nimport script from \"./ViewportBackground.vue?vue&type=script&lang=ts\"\nexport * from \"./ViewportBackground.vue?vue&type=script&lang=ts\"\n\nimport \"./ViewportBackground.vue?vue&type=style&index=0&id=a9ca1b50&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-a9ca1b50\"\n\nexport default script","\r\n \r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, PropType, defineComponent } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { AlignmentLineAxis } from '@/types/edit'\r\n\r\nexport default defineComponent({\r\n name: 'alignment-line',\r\n props: {\r\n type: {\r\n type: String as PropType<'vertical' | 'horizontal'>,\r\n required: true,\r\n },\r\n axis: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n length: {\r\n type: Number,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n\r\n // 吸附对齐线的位置\r\n const left = computed(() => props.axis.x * canvasScale.value + 'px')\r\n const top = computed(() => props.axis.y * canvasScale.value + 'px')\r\n\r\n // 吸附对齐线的长度\r\n const sizeStyle = computed(() => {\r\n if (props.type === 'vertical') return { height: props.length * canvasScale.value + 'px' }\r\n return { width: props.length * canvasScale.value + 'px' }\r\n })\r\n\r\n return {\r\n left,\r\n top,\r\n sizeStyle,\r\n }\r\n },\r\n})\r\n","import { render } from \"./AlignmentLine.vue?vue&type=template&id=2d3eddf5&scoped=true\"\nimport script from \"./AlignmentLine.vue?vue&type=script&lang=ts\"\nexport * from \"./AlignmentLine.vue?vue&type=script&lang=ts\"\n\nimport \"./AlignmentLine.vue?vue&type=style&index=0&id=2d3eddf5&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-2d3eddf5\"\n\nexport default script","\r\n createSelection($event)\"\r\n >\r\n
\r\n\r\n \r\n
\r\n\t\t\t\t\r\n\t\t\t\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, onMounted, reactive, ref } from 'vue'\r\nimport { useStore } from '@/store'\r\n\r\nexport default defineComponent({\r\n name: 'element-create-selection',\r\n setup(props, { emit }) {\r\n const store = useStore()\r\n const ctrlOrShiftKeyActive = computed(() => store.getters.ctrlOrShiftKeyActive)\r\n const creatingElement = computed(() => store.state.creatingElement)\r\n\r\n const start = ref<[number, number]>()\r\n const end = ref<[number, number]>()\r\n\r\n const selectionRef = ref()\r\n const offset = reactive({\r\n x: 0,\r\n y: 0,\r\n })\r\n onMounted(() => {\r\n if (!selectionRef.value) return\r\n const { x, y } = selectionRef.value.getBoundingClientRect()\r\n offset.x = x\r\n offset.y = y\r\n })\r\n\r\n // 鼠标拖动创建元素生成位置大小\r\n // 获取范围的起始位置和终点位置\r\n const createSelection = (e: MouseEvent) => {\r\n let isMouseDown = true\r\n\r\n const startPageX = e.pageX\r\n const startPageY = e.pageY\r\n start.value = [startPageX, startPageY]\r\n\r\n document.onmousemove = e => {\r\n if (!creatingElement.value || !isMouseDown) return\r\n\r\n let currentPageX = e.pageX\r\n let currentPageY = e.pageY\r\n\r\n // 按住Ctrl键或者Shift键时:\r\n // 对于非线条元素需要锁定宽高比例,对于线条元素需要锁定水平或垂直方向\r\n if (ctrlOrShiftKeyActive.value) {\r\n const moveX = currentPageX - startPageX\r\n const moveY = currentPageY - startPageY\r\n\r\n // 水平和垂直方向的拖动距离,后面以拖动距离较大的方向为基础计算另一方向的数据\r\n const absX = Math.abs(moveX)\r\n const absY = Math.abs(moveY)\r\n\r\n if (creatingElement.value.type === 'shape') {\r\n\r\n // 判断是否为反向拖动:从左上到右下为正向操作,此外所有情况都是反向操作\r\n const isOpposite = (moveY > 0 && moveX < 0) || (moveY < 0 && moveX > 0)\r\n\r\n if (absX > absY) {\r\n currentPageY = isOpposite ? startPageY - moveX : startPageY + moveX\r\n }\r\n else {\r\n currentPageX = isOpposite ? startPageX - moveY : startPageX + moveY\r\n }\r\n }\r\n\r\n else if (creatingElement.value.type === 'line') {\r\n if (absX > absY) currentPageY = startPageY\r\n else currentPageX = startPageX\r\n }\r\n }\r\n\r\n end.value = [currentPageX, currentPageY]\r\n }\r\n\r\n document.onmouseup = e => {\r\n document.onmousemove = null\r\n document.onmouseup = null\r\n isMouseDown = false\r\n\r\n const endPageX = e.pageX\r\n const endPageY = e.pageY\r\n\r\n const minSize = 30\r\n\r\n if (\r\n creatingElement.value?.type === 'line' &&\r\n (Math.abs(endPageX - startPageX) >= minSize || Math.abs(endPageY - startPageY) >= minSize)\r\n ) {\r\n emit('created', {\r\n start: start.value,\r\n end: end.value,\r\n })\r\n }\r\n else if (\r\n creatingElement.value?.type !== 'line' &&\r\n (Math.abs(endPageX - startPageX) >= minSize && Math.abs(endPageY - startPageY) >= minSize)\r\n ) {\r\n emit('created', {\r\n start: start.value,\r\n end: end.value,\r\n })\r\n }\r\n else {\r\n const defaultSize = 200\r\n const minX = Math.min(endPageX, startPageX)\r\n const minY = Math.min(endPageY, startPageY)\r\n const maxX = Math.max(endPageX, startPageX)\r\n const maxY = Math.max(endPageY, startPageY)\r\n const offsetX = maxX - minX >= minSize ? maxX - minX : defaultSize\r\n const offsetY = maxY - minY >= minSize ? maxY - minY : defaultSize\r\n emit('created', {\r\n start: [minX, minY],\r\n end: [minX + offsetX, minY + offsetY],\r\n })\r\n }\r\n }\r\n }\r\n\r\n // 绘制线条的路径相关数据(仅当绘制元素类型为线条时使用)\r\n const lineData = computed(() => {\r\n if (!start.value || !end.value) return null\r\n if (!creatingElement.value || creatingElement.value.type !== 'line') return null\r\n\r\n const [_startX, _startY] = start.value\r\n const [_endX, _endY] = end.value\r\n const minX = Math.min(_startX, _endX)\r\n const maxX = Math.max(_startX, _endX)\r\n const minY = Math.min(_startY, _endY)\r\n const maxY = Math.max(_startY, _endY)\r\n\r\n const svgWidth = maxX - minX >= 24 ? maxX - minX : 24\r\n const svgHeight = maxY - minY >= 24 ? maxY - minY : 24\r\n\r\n const startX = _startX === minX ? 0 : maxX - minX\r\n const startY = _startY === minY ? 0 : maxY - minY\r\n const endX = _endX === minX ? 0 : maxX - minX\r\n const endY = _endY === minY ? 0 : maxY - minY\r\n\r\n const path = `M${startX}, ${startY} L${endX}, ${endY}`\r\n\r\n return {\r\n svgWidth,\r\n svgHeight,\r\n startX,\r\n startY,\r\n endX,\r\n endY,\r\n path,\r\n }\r\n })\r\n\r\n // 根据生成范围的起始位置和终点位置,计算元素创建时的位置和大小\r\n const position = computed(() => {\r\n if (!start.value || !end.value) return {}\r\n\r\n const [startX, startY] = start.value\r\n const [endX, endY] = end.value\r\n const minX = Math.min(startX, endX)\r\n const maxX = Math.max(startX, endX)\r\n const minY = Math.min(startY, endY)\r\n const maxY = Math.max(startY, endY)\r\n\r\n const width = maxX - minX\r\n const height = maxY - minY\r\n\r\n return {\r\n left: minX - offset.x + 'px',\r\n top: minY - offset.y + 'px',\r\n width: width + 'px',\r\n height: height + 'px',\r\n }\r\n })\r\n\r\n return {\r\n selectionRef,\r\n start,\r\n end,\r\n creatingElement,\r\n createSelection,\r\n lineData,\r\n position,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ElementCreateSelection.vue?vue&type=template&id=3c5b7aac&scoped=true\"\nimport script from \"./ElementCreateSelection.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementCreateSelection.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementCreateSelection.vue?vue&type=style&index=0&id=3c5b7aac&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-3c5b7aac\"\n\nexport default script","\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n","import { computed, Ref } from 'vue'\r\nimport { OperateResizeHandlers, OperateBorderLines } from '@/types/edit'\r\n\r\nexport default (width: Ref, height: Ref) => {\r\n // 元素缩放点\r\n const resizeHandlers = computed(() => {\r\n return [\r\n { direction: OperateResizeHandlers.LEFT_TOP, style: {} },\r\n { direction: OperateResizeHandlers.TOP, style: {left: width.value / 2 + 'px'} },\r\n { direction: OperateResizeHandlers.RIGHT_TOP, style: {left: width.value + 'px'} },\r\n { direction: OperateResizeHandlers.LEFT, style: {top: height.value / 2 + 'px'} },\r\n { direction: OperateResizeHandlers.RIGHT, style: {left: width.value + 'px', top: height.value / 2 + 'px'} },\r\n { direction: OperateResizeHandlers.LEFT_BOTTOM, style: {top: height.value + 'px'} },\r\n { direction: OperateResizeHandlers.BOTTOM, style: {left: width.value / 2 + 'px', top: height.value + 'px'} },\r\n { direction: OperateResizeHandlers.RIGHT_BOTTOM, style: {left: width.value + 'px', top: height.value + 'px'} },\r\n ]\r\n })\r\n\r\n // 文本元素缩放点\r\n const textElementResizeHandlers = computed(() => {\r\n return [\r\n { direction: OperateResizeHandlers.LEFT, style: {top: height.value / 2 + 'px'} },\r\n { direction: OperateResizeHandlers.RIGHT, style: {left: width.value + 'px', top: height.value / 2 + 'px'} },\r\n ]\r\n })\r\n\r\n // 元素选中边框线\r\n const borderLines = computed(() => {\r\n return [\r\n { type: OperateBorderLines.T, style: {width: width.value + 'px'} },\r\n { type: OperateBorderLines.B, style: {top: height.value + 'px', width: width.value + 'px'} },\r\n { type: OperateBorderLines.L, style: {height: height.value + 'px'} },\r\n { type: OperateBorderLines.R, style: {left: width.value + 'px', height: height.value + 'px'} },\r\n ]\r\n })\r\n\r\n return {\r\n resizeHandlers,\r\n textElementResizeHandlers,\r\n borderLines,\r\n }\r\n}","\r\n \r\n\r\n\r\n\r\n\r\n","\r\nimport { PropType } from 'vue'\r\nimport { OperateResizeHandler } from '@/types/edit'\r\n\r\nexport default {\r\n name: 'resize-handler',\r\n props: {\r\n type: {\r\n type: String as PropType,\r\n default: '',\r\n },\r\n },\r\n}\r\n","import { render } from \"./ResizeHandler.vue?vue&type=template&id=1c2a68d0&scoped=true\"\nimport script from \"./ResizeHandler.vue?vue&type=script&lang=ts\"\nexport * from \"./ResizeHandler.vue?vue&type=script&lang=ts\"\n\nimport \"./ResizeHandler.vue?vue&type=style&index=0&id=1c2a68d0&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-1c2a68d0\"\n\nexport default script","\r\n \r\n\r\n\r\n\r\n\r\n","\r\nimport { PropType } from 'vue'\r\nimport { OperateBorderLine } from '@/types/edit'\r\n\r\nexport default {\r\n name: 'border-line',\r\n props: {\r\n type: {\r\n type: String as PropType,\r\n required: true,\r\n },\r\n isWide: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n}\r\n","import { render } from \"./BorderLine.vue?vue&type=template&id=630e246b&scoped=true\"\nimport script from \"./BorderLine.vue?vue&type=script&lang=ts\"\nexport * from \"./BorderLine.vue?vue&type=script&lang=ts\"\n\nimport \"./BorderLine.vue?vue&type=style&index=0&id=630e246b&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-630e246b\"\n\nexport default script","\r\nimport { computed, defineComponent, reactive, PropType, watchEffect, toRefs } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { PPTElement } from '@/types/slides'\r\nimport { getElementListRange } from '@/utils/element'\r\nimport { OperateResizeHandler, MultiSelectRange } from '@/types/edit'\r\nimport useCommonOperate from '../hooks/useCommonOperate'\r\n\r\nimport ResizeHandler from './ResizeHandler.vue'\r\nimport BorderLine from './BorderLine.vue'\r\n\r\nexport default defineComponent({\r\n name: 'multi-select-operate',\r\n components: {\r\n ResizeHandler,\r\n BorderLine,\r\n },\r\n props: {\r\n elementList: {\r\n type: Array as PropType,\r\n required: true,\r\n },\r\n scaleMultiElement: {\r\n type: Function as PropType<(e: MouseEvent, range: MultiSelectRange, command: OperateResizeHandler) => void>,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n const localActiveElementList = computed(() => props.elementList.filter(el => activeElementIdList.value.includes(el.id)))\r\n\r\n const range = reactive({\r\n minX: 0,\r\n maxX: 0,\r\n minY: 0,\r\n maxY: 0,\r\n })\r\n\r\n // 根据多选元素整体在画布中的范围,计算边框线和缩放点的位置信息\r\n const width = computed(() => (range.maxX - range.minX) * canvasScale.value)\r\n const height = computed(() => (range.maxY - range.minY) * canvasScale.value)\r\n const { resizeHandlers, borderLines } = useCommonOperate(width, height)\r\n\r\n // 计算多选元素整体在画布中的范围\r\n const setRange = () => {\r\n const { minX, maxX, minY, maxY } = getElementListRange(localActiveElementList.value)\r\n range.minX = minX\r\n range.maxX = maxX\r\n range.minY = minY\r\n range.maxY = maxY\r\n }\r\n watchEffect(setRange)\r\n\r\n // 禁用多选状态下缩放:仅未旋转的图片和形状可以在多选状态下缩放\r\n const disableResize = computed(() => {\r\n return localActiveElementList.value.some(item => {\r\n if (\r\n (item.type === 'image' || item.type === 'shape') && \r\n !item.rotate\r\n ) return false\r\n return true\r\n })\r\n })\r\n\r\n return {\r\n ...toRefs(range),\r\n canvasScale,\r\n borderLines,\r\n disableResize,\r\n resizeHandlers,\r\n }\r\n },\r\n})\r\n","import { render } from \"./MultiSelectOperate.vue?vue&type=template&id=4def6455&scoped=true\"\nimport script from \"./MultiSelectOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./MultiSelectOperate.vue?vue&type=script&lang=ts\"\n\nimport \"./MultiSelectOperate.vue?vue&type=style&index=0&id=4def6455&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-4def6455\"\n\nexport default script","\r\n \r\n
\r\n\r\n
\r\n {{elementIndexInAnimation + 1}}\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\n \r\n \r\n \r\n scaleElement($event, elementInfo, point.direction)\"\r\n />\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n","\r\n \r\n\r\n\r\n\r\n\r\n","\r\nexport default {\r\n name: 'rotate-handler',\r\n}\r\n","import { render } from \"./RotateHandler.vue?vue&type=template&id=9a549510&scoped=true\"\nimport script from \"./RotateHandler.vue?vue&type=script&lang=ts\"\nexport * from \"./RotateHandler.vue?vue&type=script&lang=ts\"\n\nimport \"./RotateHandler.vue?vue&type=style&index=0&id=9a549510&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-9a549510\"\n\nexport default script","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { PPTImageElement } from '@/types/slides'\r\nimport { OperateResizeHandler } from '@/types/edit'\r\nimport useCommonOperate from '../hooks/useCommonOperate'\r\n\r\nimport RotateHandler from './RotateHandler.vue'\r\nimport ResizeHandler from './ResizeHandler.vue'\r\nimport BorderLine from './BorderLine.vue'\r\n\r\nexport default defineComponent({\r\n name: 'image-element-operate',\r\n inheritAttrs: false,\r\n components: {\r\n RotateHandler,\r\n ResizeHandler,\r\n BorderLine,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n 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: PPTImageElement) => void>,\r\n required: true,\r\n },\r\n scaleElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTImageElement, command: OperateResizeHandler) => void>,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n const clipingImageElementId = computed(() => store.state.clipingImageElementId)\r\n const isCliping = computed(() => clipingImageElementId.value === props.elementInfo.id)\r\n\r\n const scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\r\n const scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\r\n const { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\r\n\r\n return {\r\n isCliping,\r\n scaleWidth,\r\n resizeHandlers,\r\n borderLines,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ImageElementOperate.vue?vue&type=template&id=5b0628aa&scoped=true\"\nimport script from \"./ImageElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./ImageElementOperate.vue?vue&type=script&lang=ts\"\n\nimport \"./ImageElementOperate.vue?vue&type=style&index=0&id=5b0628aa&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-5b0628aa\"\n\nexport default script","\r\n \r\n \r\n \r\n scaleElement($event, elementInfo, point.direction)\"\r\n />\r\n \r\n \r\n
\r\n\r\n\r\n","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { useStore } from '@/store'\r\n\r\nimport { PPTTextElement } from '@/types/slides'\r\nimport { OperateResizeHandler } from '@/types/edit'\r\nimport useCommonOperate from '../hooks/useCommonOperate'\r\n\r\nimport RotateHandler from './RotateHandler.vue'\r\nimport ResizeHandler from './ResizeHandler.vue'\r\nimport BorderLine from './BorderLine.vue'\r\n\r\nexport default defineComponent({\r\n name: 'text-element-operate',\r\n inheritAttrs: false,\r\n components: {\r\n RotateHandler,\r\n ResizeHandler,\r\n BorderLine,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n 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: PPTTextElement) => void>,\r\n required: true,\r\n },\r\n scaleElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTTextElement, command: OperateResizeHandler) => void>,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n\r\n const scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\r\n const scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\r\n\r\n const { textElementResizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\r\n\r\n return {\r\n scaleWidth,\r\n textElementResizeHandlers,\r\n borderLines,\r\n }\r\n },\r\n})\r\n","import { render } from \"./TextElementOperate.vue?vue&type=template&id=1f730982\"\nimport script from \"./TextElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./TextElementOperate.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\n \r\n \r\n \r\n scaleElement($event, elementInfo, point.direction)\"\r\n />\r\n \r\n \r\n
\r\n\r\n\r\n","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { useStore } from '@/store'\r\n\r\nimport { PPTShapeElement } from '@/types/slides'\r\nimport { OperateResizeHandler } from '@/types/edit'\r\nimport useCommonOperate from '../hooks/useCommonOperate'\r\n\r\nimport RotateHandler from './RotateHandler.vue'\r\nimport ResizeHandler from './ResizeHandler.vue'\r\nimport BorderLine from './BorderLine.vue'\r\n\r\nexport default defineComponent({\r\n name: 'shape-element-operate',\r\n inheritAttrs: false,\r\n components: {\r\n RotateHandler,\r\n ResizeHandler,\r\n BorderLine,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n 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: PPTShapeElement) => void>,\r\n required: true,\r\n },\r\n scaleElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTShapeElement, command: OperateResizeHandler) => void>,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n\r\n const scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\r\n const scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\r\n const { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\r\n\r\n return {\r\n scaleWidth,\r\n resizeHandlers,\r\n borderLines,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ShapeElementOperate.vue?vue&type=template&id=bfcf602e\"\nimport script from \"./ShapeElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./ShapeElementOperate.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\n \r\n \r\n dragLineElement($event, elementInfo, point.handler)\"\r\n />\r\n \r\n
\r\n\r\n\r\n","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { useStore } from '@/store'\r\n\r\nimport { PPTLineElement } from '@/types/slides'\r\nimport { OperateLineHandler, OperateLineHandlers } from '@/types/edit'\r\n\r\nimport ResizeHandler from './ResizeHandler.vue'\r\n\r\nexport default defineComponent({\r\n name: 'text-element-operate',\r\n inheritAttrs: false,\r\n components: {\r\n ResizeHandler,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\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 dragLineElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTLineElement, command: OperateLineHandler) => void>,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n\r\n const resizeHandlers = computed(() => {\r\n const handlers = [\r\n {\r\n handler: OperateLineHandlers.START,\r\n style: {\r\n left: props.elementInfo.start[0] * canvasScale.value + 'px',\r\n top: props.elementInfo.start[1] * canvasScale.value + 'px',\r\n }\r\n },\r\n {\r\n handler: OperateLineHandlers.END,\r\n style: {\r\n left: props.elementInfo.end[0] * canvasScale.value + 'px',\r\n top: props.elementInfo.end[1] * canvasScale.value + 'px',\r\n }\r\n },\r\n ]\r\n\r\n if (props.elementInfo.curve || props.elementInfo.broken) {\r\n const midHandler = (props.elementInfo.curve || props.elementInfo.broken) as [number, number]\r\n\r\n handlers.push({\r\n handler: OperateLineHandlers.MID,\r\n style: {\r\n left: midHandler[0] * canvasScale.value + 'px',\r\n top: midHandler[1] * canvasScale.value + 'px',\r\n }\r\n })\r\n }\r\n return handlers\r\n })\r\n\r\n return {\r\n resizeHandlers,\r\n }\r\n },\r\n})\r\n","import { render } from \"./LineElementOperate.vue?vue&type=template&id=019938f6\"\nimport script from \"./LineElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./LineElementOperate.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\n \r\n \r\n \r\n scaleElement($event, elementInfo, point.direction)\"\r\n />\r\n \r\n
\r\n\r\n\r\n","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { useStore } from '@/store'\r\n\r\nimport { PPTShapeElement } from '@/types/slides'\r\nimport { OperateResizeHandler } from '@/types/edit'\r\nimport useCommonOperate from '../hooks/useCommonOperate'\r\n\r\nimport ResizeHandler from './ResizeHandler.vue'\r\nimport BorderLine from './BorderLine.vue'\r\n\r\nexport default defineComponent({\r\n name: 'chart-element-operate',\r\n inheritAttrs: false,\r\n components: {\r\n ResizeHandler,\r\n BorderLine,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n 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 scaleElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTShapeElement, command: OperateResizeHandler) => void>,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n\r\n const scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\r\n const scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\r\n const { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\r\n\r\n return {\r\n scaleWidth,\r\n resizeHandlers,\r\n borderLines,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ChartElementOperate.vue?vue&type=template&id=4218643e\"\nimport script from \"./ChartElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./ChartElementOperate.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\n \r\n \r\n \r\n scaleElement($event, elementInfo, point.direction)\"\r\n />\r\n \r\n
\r\n\r\n\r\n","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { useStore } from '@/store'\r\n\r\nimport { PPTTableElement } from '@/types/slides'\r\nimport { OperateResizeHandler } from '@/types/edit'\r\nimport useCommonOperate from '../hooks/useCommonOperate'\r\n\r\nimport ResizeHandler from './ResizeHandler.vue'\r\nimport BorderLine from './BorderLine.vue'\r\n\r\nexport default defineComponent({\r\n name: 'table-element-operate',\r\n inheritAttrs: false,\r\n components: {\r\n ResizeHandler,\r\n BorderLine,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n 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 scaleElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTTableElement, command: OperateResizeHandler) => void>,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n\r\n const outlineWidth = computed(() => props.elementInfo.outline.width || 1)\r\n\r\n const scaleWidth = computed(() => (props.elementInfo.width + outlineWidth.value) * canvasScale.value)\r\n const scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\r\n\r\n const { textElementResizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\r\n\r\n return {\r\n scaleWidth,\r\n textElementResizeHandlers,\r\n borderLines,\r\n }\r\n },\r\n})\r\n","import { render } from \"./TableElementOperate.vue?vue&type=template&id=459ab724\"\nimport script from \"./TableElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./TableElementOperate.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\nimport { defineComponent, PropType, computed } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { ElementTypes, PPTElement, Slide } from '@/types/slides'\r\nimport { OperateLineHandler, OperateResizeHandler } from '@/types/edit'\r\n\r\nimport ImageElementOperate from './ImageElementOperate.vue'\r\nimport TextElementOperate from './TextElementOperate.vue'\r\nimport ShapeElementOperate from './ShapeElementOperate.vue'\r\nimport LineElementOperate from './LineElementOperate.vue'\r\nimport ChartElementOperate from './ChartElementOperate.vue'\r\nimport TableElementOperate from './TableElementOperate.vue'\r\n\r\nexport default defineComponent({\r\n name: 'operate',\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n isSelected: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n isActive: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n isActiveGroupElement: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n isMultiSelect: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n rotateElement: {\r\n type: Function as PropType<(element: PPTElement) => void>,\r\n required: true,\r\n },\r\n scaleElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTElement, command: OperateResizeHandler) => void>,\r\n required: true,\r\n },\r\n dragLineElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTElement, command: OperateLineHandler) => void>,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n const toolbarState = computed(() => store.state.toolbarState)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const currentOperateComponent = computed(() => {\r\n const elementTypeMap = {\r\n [ElementTypes.IMAGE]: ImageElementOperate,\r\n [ElementTypes.TEXT]: TextElementOperate,\r\n [ElementTypes.SHAPE]: ShapeElementOperate,\r\n [ElementTypes.LINE]: LineElementOperate,\r\n [ElementTypes.CHART]: ChartElementOperate,\r\n [ElementTypes.TABLE]: TableElementOperate,\r\n }\r\n return elementTypeMap[props.elementInfo.type] || null\r\n })\r\n\r\n const elementIndexInAnimation = computed(() => {\r\n const animations = currentSlide.value.animations || []\r\n return animations.findIndex(animation => animation.elId === props.elementInfo.id)\r\n })\r\n\r\n return {\r\n currentOperateComponent,\r\n canvasScale,\r\n toolbarState,\r\n elementIndexInAnimation,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=558a94fe&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=558a94fe&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-558a94fe\"\n\nexport default script","\r\nimport { computed, defineComponent, provide, ref, watch, watchEffect } from 'vue'\r\nimport throttle from 'lodash/throttle'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\nimport { PPTElement, Slide } from '@/types/slides'\r\nimport { AlignmentLineProps } from '@/types/edit'\r\nimport { removeAllRanges } from '@/utils/selection'\r\n\r\nimport useViewportSize from './hooks/useViewportSize'\r\nimport useMouseSelection from './hooks/useMouseSelection'\r\nimport useDropImageOrText from './hooks/useDropImageOrText'\r\nimport useRotateElement from './hooks/useRotateElement'\r\nimport useScaleElement from './hooks/useScaleElement'\r\nimport useSelectElement from './hooks/useSelectElement'\r\nimport useDragElement from './hooks/useDragElement'\r\nimport useDragLineElement from './hooks/useDragLineElement'\r\nimport useInsertFromCreateSelection from './hooks/useInsertFromCreateSelection'\r\n\r\nimport useDeleteElement from '@/hooks/useDeleteElement'\r\nimport useCopyAndPasteElement from '@/hooks/useCopyAndPasteElement'\r\nimport useSelectAllElement from '@/hooks/useSelectAllElement'\r\nimport useScaleCanvas from '@/hooks/useScaleCanvas'\r\nimport useScreening from '@/hooks/useScreening'\r\n\r\nimport EditableElement from './EditableElement.vue'\r\nimport MouseSelection from './MouseSelection.vue'\r\nimport ViewportBackground from './ViewportBackground.vue'\r\nimport AlignmentLine from './AlignmentLine.vue'\r\nimport ElementCreateSelection from './ElementCreateSelection.vue'\r\nimport MultiSelectOperate from './Operate/MultiSelectOperate.vue'\r\nimport Operate from './Operate/index.vue'\r\n\r\nexport default defineComponent({\r\n name: 'editor-canvas',\r\n components: {\r\n EditableElement,\r\n MouseSelection,\r\n ViewportBackground,\r\n AlignmentLine,\r\n ElementCreateSelection,\r\n MultiSelectOperate,\r\n Operate,\r\n },\r\n setup() {\r\n const store = useStore()\r\n\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const handleElementId = computed(() => store.state.handleElementId)\r\n const editorAreaFocus = computed(() => store.state.editorAreaFocus)\r\n const ctrlKeyState = computed(() => store.state.ctrlKeyState)\r\n const ctrlOrShiftKeyActive = computed(() => store.getters.ctrlOrShiftKeyActive)\r\n\r\n const viewportRef = ref()\r\n const alignmentLines = ref([])\r\n\r\n const activeGroupElementId = ref('')\r\n watch(handleElementId, () => activeGroupElementId.value = '')\r\n\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n const elementList = ref([])\r\n const setLocalElementList = () => {\r\n elementList.value = currentSlide.value ? JSON.parse(JSON.stringify(currentSlide.value.elements)) : []\r\n }\r\n watchEffect(setLocalElementList)\r\n\r\n const canvasRef = ref()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n const { viewportStyles } = useViewportSize(canvasRef)\r\n\r\n useDropImageOrText(canvasRef)\r\n\r\n const { mouseSelectionState, updateMouseSelection } = useMouseSelection(elementList, viewportRef)\r\n\r\n const { dragElement } = useDragElement(elementList, activeGroupElementId, alignmentLines)\r\n const { dragLineElement } = useDragLineElement(elementList)\r\n const { selectElement } = useSelectElement(elementList, activeGroupElementId, dragElement)\r\n const { scaleElement, scaleMultiElement } = useScaleElement(elementList, activeGroupElementId, alignmentLines)\r\n const { rotateElement } = useRotateElement(elementList, viewportRef)\r\n\r\n const { selectAllElement } = useSelectAllElement()\r\n const { deleteAllElements } = useDeleteElement()\r\n const { pasteElement } = useCopyAndPasteElement()\r\n const { enterScreening } = useScreening()\r\n\r\n // 点击画布的空白区域:清空焦点元素、设置画布焦点、清除文字选区\r\n const handleClickBlankArea = (e: MouseEvent) => {\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, [])\r\n if (!ctrlOrShiftKeyActive.value) updateMouseSelection(e)\r\n if (!editorAreaFocus.value) store.commit(MutationTypes.SET_EDITORAREA_FOCUS, true)\r\n removeAllRanges()\r\n }\r\n\r\n // 移除画布编辑区域焦点\r\n const removeEditorAreaFocus = () => {\r\n if (editorAreaFocus.value) store.commit(MutationTypes.SET_EDITORAREA_FOCUS, false)\r\n }\r\n\r\n // 按住Ctrl键滚动鼠标缩放画布\r\n const { scaleCanvas } = useScaleCanvas()\r\n const throttleScaleCanvas = throttle(scaleCanvas, 100, { leading: true, trailing: false })\r\n\r\n const mousewheelScaleCanvas = (e: WheelEvent) => {\r\n if (!ctrlKeyState.value) return\r\n\r\n e.preventDefault()\r\n if (e.deltaY > 0) throttleScaleCanvas('-')\r\n else if (e.deltaY < 0) throttleScaleCanvas('+')\r\n }\r\n\r\n // 开关网格线\r\n const showGridLines = computed(() => store.state.showGridLines)\r\n const toggleGridLines = () => {\r\n store.commit(MutationTypes.SET_GRID_LINES_STATE, !showGridLines.value)\r\n }\r\n\r\n // 在鼠标绘制的范围插入元素\r\n const creatingElement = computed(() => store.state.creatingElement)\r\n const { insertElementFromCreateSelection } = useInsertFromCreateSelection(viewportRef)\r\n\r\n const contextmenus = (): ContextmenuItem[] => {\r\n return [\r\n {\r\n text: '粘贴',\r\n subText: 'Ctrl + V',\r\n handler: pasteElement,\r\n },\r\n {\r\n text: '全选',\r\n subText: 'Ctrl + A',\r\n handler: selectAllElement,\r\n },\r\n {\r\n text: '网格线',\r\n subText: showGridLines.value ? '√' : '',\r\n handler: toggleGridLines,\r\n },\r\n {\r\n text: '重置当前页',\r\n handler: deleteAllElements,\r\n },\r\n { divider: true },\r\n {\r\n text: '从当前页演示',\r\n subText: 'Ctrl+F',\r\n handler: enterScreening,\r\n },\r\n ]\r\n }\r\n\r\n provide('slideScale', canvasScale)\r\n\r\n return {\r\n elementList,\r\n activeElementIdList,\r\n handleElementId,\r\n activeGroupElementId,\r\n canvasRef,\r\n viewportRef,\r\n viewportStyles,\r\n canvasScale,\r\n mouseSelectionState,\r\n handleClickBlankArea,\r\n removeEditorAreaFocus,\r\n currentSlide,\r\n creatingElement,\r\n insertElementFromCreateSelection,\r\n alignmentLines,\r\n selectElement,\r\n rotateElement,\r\n scaleElement,\r\n dragLineElement,\r\n scaleMultiElement,\r\n mousewheelScaleCanvas,\r\n contextmenus,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=17169d5c&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=17169d5c&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-17169d5c\"\n\nexport default script","\r\n \r\n\r\n\r\n\r\n\r\n","\r\n \r\n
\r\n
{{item.type}}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","export interface ShapePoolItem {\r\n viewBox: number;\r\n path: string;\r\n}\r\n\r\nexport const SHAPE_LIST = [\r\n {\r\n type: '矩形',\r\n children: [\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 200 0 L 200 200 L 0 200 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 20 0 L 180 0 Q 200 0 200 20 L 200 180 Q 200 200 180 200 L 20 200 Q 0 200 0 180 L 0 20 Q 0 0 20 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 150 L 0 0 L 150 0 L 200 50 L 200 200 L 50 200 L 0 150 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 200 L 0 0 L 150 0 L 200 50 L 200 200 L 0 200'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 50 L 50 0 L 150 0 L 200 50 L 200 200 L 0 200 L 0 50 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 140 0 Q 200 0 200 60 L 200 200 L 60 200 Q 0 200 0 140 L 0 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 140 0 Q 200 0 200 60 L 200 200 L 0 200 L 0 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 50 Q 0 0 50 0 L 150 0 Q 200 0 200 50 L 200 200 L 0 200 L 0 50 Z'\r\n },\r\n ]\r\n },\r\n\r\n {\r\n type: '常用形状',\r\n children: [\r\n {\r\n viewBox: 200,\r\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 100 0 A 100 100 102 1 0 200 100 L 100 100 L 100 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 100 0 A 100 100 102 1 0 200 100 L 100 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 100 0 A 100 100 102 1 0 200 100 L 200 0 L 100 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 200 0 Q 200 200 0 200 L 0 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 100 0 L 0 200 L 200 200 L 100 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 0 200 L 200 200 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 50 0 L 200 0 L 150 200 L 0 200 L 50 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 150 0 L 200 200 L 50 200 L 0 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 50 0 L 150 0 L 200 200 L 0 200 L 50 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 100 0 L 0 100 L 100 200 L 200 100 L 100 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 100 0 L 0 90 L 50 200 L 150 200 L 200 90 L 100 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 100 0 L 0 60 L 0 140 L 100 200 L 200 140 L 200 60 L 100 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\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'\r\n },\r\n {\r\n viewBox: 200,\r\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'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 100 0 L 0 50 L 0 200 L 200 200 L 200 50 L 100 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 150 0 A 50 100 0 1 1 150 200 L 0 200 L 0 0 L 150 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\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'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 200 100 L 150 0 L 0 0 L 50 100 L 0 200 L 150 200 L 200 100 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 200 0 L 200 200 L 0 200 L 0 100 L 200 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 200 100 L 200 200 L 0 200 L 0 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 200 0 L 100 0 L 0 100 L 0 200 L 200 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\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'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 0 200 L 200 200 L 200 140 L 60 140 L 60 0 L 0 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M0 0 L200 0 L200 200 L0 200 L0 0 Z M50 50 L50 150 L150 150 L150 50 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M0 100 A100 100 0 1 1 0 101 Z M150 100 A50 50 0 1 0 150 101 Z'\r\n },\r\n {\r\n viewBox: 200,\r\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'\r\n },\r\n {\r\n viewBox: 200,\r\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'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 200 0 L 200 160 L 100 160 L 60 200 L 60 160 L 0 160 L 0 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\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'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 180 160 A 100 100 0 1 0 100 200 L 200 200 L 200 160 L 180 160 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 200 0 L 0 0 L 200 200 L 0 200 L 200 0 Z'\r\n },\r\n ],\r\n },\r\n \r\n {\r\n type: '箭头',\r\n children: [\r\n {\r\n viewBox: 200,\r\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'\r\n },\r\n {\r\n viewBox: 200,\r\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'\r\n },\r\n {\r\n viewBox: 200,\r\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'\r\n },\r\n {\r\n viewBox: 200,\r\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'\r\n },\r\n {\r\n viewBox: 200,\r\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'\r\n },\r\n {\r\n viewBox: 200,\r\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'\r\n },\r\n {\r\n viewBox: 200,\r\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'\r\n },\r\n {\r\n viewBox: 200,\r\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'\r\n },\r\n {\r\n viewBox: 200,\r\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'\r\n },\r\n {\r\n viewBox: 200,\r\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'\r\n },\r\n {\r\n viewBox: 200,\r\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'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 120 0 L 200 100 L 120 200 L 0 200 L 80 100 L 0 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 80 0 L 200 0 L 120 100 L 200 200 L 80 200 L 0 100 L 80 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 140 0 L 200 100 L 140 200 L 0 200 L 0 100 L 0 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 60 0 L 200 0 L 200 100 L 200 200 L 60 200 L 0 100 L 60 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 200 100 L 0 200 L 60 100 L 0 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 200 0 L 0 100 L 200 200 L 140 100 L 200 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 80 0 L 200 100 L 80 200 L 0 200 L 120 100 L 0 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 200 0 L 120 0 L 0 100 L 120 200 L 200 200 L 80 100 L 200 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\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'\r\n },\r\n {\r\n viewBox: 200,\r\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'\r\n },\r\n {\r\n viewBox: 200,\r\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'\r\n },\r\n {\r\n viewBox: 1024,\r\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',\r\n },\r\n {\r\n viewBox: 1024,\r\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',\r\n },\r\n ],\r\n },\r\n\r\n {\r\n type: '其他形状',\r\n children: [\r\n {\r\n viewBox: 1024,\r\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',\r\n },\r\n {\r\n viewBox: 1024,\r\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',\r\n },\r\n {\r\n viewBox: 1024,\r\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',\r\n },\r\n {\r\n viewBox: 1024,\r\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',\r\n },\r\n {\r\n viewBox: 1024,\r\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',\r\n },\r\n {\r\n viewBox: 1024,\r\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',\r\n },\r\n {\r\n viewBox: 1024,\r\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',\r\n },\r\n {\r\n viewBox: 1024,\r\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',\r\n },\r\n {\r\n viewBox: 1024,\r\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',\r\n },\r\n {\r\n viewBox: 1024,\r\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',\r\n },\r\n {\r\n viewBox: 1024,\r\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',\r\n },\r\n {\r\n viewBox: 1024,\r\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',\r\n },\r\n {\r\n viewBox: 1024,\r\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',\r\n },\r\n {\r\n viewBox: 1024,\r\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',\r\n },\r\n {\r\n viewBox: 1024,\r\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',\r\n },\r\n {\r\n viewBox: 1024,\r\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',\r\n },\r\n ],\r\n },\r\n]","\r\nimport { defineComponent } from 'vue'\r\nimport { SHAPE_LIST, ShapePoolItem } from '@/configs/shapes'\r\n\r\nexport default defineComponent({\r\n name: 'shape-pool',\r\n setup(props, { emit }) {\r\n const shapeList = SHAPE_LIST\r\n\r\n const selectShape = (shape: ShapePoolItem) => {\r\n emit('select', shape)\r\n }\r\n\r\n return {\r\n shapeList,\r\n selectShape,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ShapePool.vue?vue&type=template&id=5aabd717&scoped=true\"\nimport script from \"./ShapePool.vue?vue&type=script&lang=ts\"\nexport * from \"./ShapePool.vue?vue&type=script&lang=ts\"\n\nimport \"./ShapePool.vue?vue&type=style&index=0&id=5aabd717&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-5aabd717\"\n\nexport default script","\r\n \r\n
\r\n
{{item.type}}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","export interface LinePoolItem {\r\n path: string;\r\n style: string;\r\n points: [string, string];\r\n isBroken?: boolean;\r\n isCurve?: boolean;\r\n}\r\n\r\nexport const LINE_LIST = [\r\n {\r\n type: '直线',\r\n children: [\r\n { path: 'M 0 0 L 20 20', style: 'solid', points: ['', ''] },\r\n { path: 'M 0 0 L 20 20', style: 'dashed', points: ['', ''] },\r\n { path: 'M 0 0 L 20 20', style: 'solid', points: ['', 'arrow'] },\r\n { path: 'M 0 0 L 20 20', style: 'dashed', points: ['', 'arrow'] },\r\n { path: 'M 0 0 L 20 20', style: 'solid', points: ['', 'dot'] },\r\n ],\r\n },\r\n {\r\n type: '折线、曲线',\r\n children: [\r\n { path: 'M 0 0 L 0 20 L 20 20', style: 'solid', points: ['', 'arrow'], isBroken: true },\r\n { path: 'M 0 0 Q 0 20 20 20', style: 'solid', points: ['', 'arrow'], isCurve: true },\r\n ],\r\n },\r\n]","\r\nimport { defineComponent } from 'vue'\r\nimport { LINE_LIST, LinePoolItem } from '@/configs/lines'\r\n\r\nimport LinePointMarker from '@/views/components/element/LineElement/LinePointMarker.vue'\r\n\r\nexport default defineComponent({\r\n name: 'line-pool',\r\n components: {\r\n LinePointMarker,\r\n },\r\n setup(props, { emit }) {\r\n const lineList = LINE_LIST\r\n\r\n const selectLine = (line: LinePoolItem) => {\r\n emit('select', line)\r\n }\r\n\r\n return {\r\n lineList,\r\n selectLine,\r\n }\r\n },\r\n})\r\n","import { render } from \"./LinePool.vue?vue&type=template&id=5087394c&scoped=true\"\nimport script from \"./LinePool.vue?vue&type=script&lang=ts\"\nexport * from \"./LinePool.vue?vue&type=script&lang=ts\"\n\nimport \"./LinePool.vue?vue&type=style&index=0&id=5087394c&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-5087394c\"\n\nexport default script","\r\n \r\n - \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { defineComponent } from 'vue'\r\n\r\nexport default defineComponent({\r\n name: 'chart-pool',\r\n setup(props, { emit }) {\r\n const chartList = ['bar', 'line', 'pie']\r\n\r\n const selectChart = (chart: string) => {\r\n emit('select', chart)\r\n }\r\n\r\n return {\r\n chartList,\r\n selectChart,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ChartPool.vue?vue&type=template&id=0028f4b9&scoped=true\"\nimport script from \"./ChartPool.vue?vue&type=script&lang=ts\"\nexport * from \"./ChartPool.vue?vue&type=script&lang=ts\"\n\nimport \"./ChartPool.vue?vue&type=style&index=0&id=0028f4b9&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-0028f4b9\"\n\nexport default script","\r\n \r\n
\r\n
表格 {{endCell.length ? `${endCell[0]} x ${endCell[1]}` : ''}}
\r\n
{{ isCustom ? '返回' : '自定义'}}
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n | \r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { defineComponent, ref } from 'vue'\r\n\r\nimport { message } from 'ant-design-vue'\r\n\r\nexport default defineComponent({\r\n name: 'table-generator',\r\n setup(props, { emit }) {\r\n const endCell = ref([])\r\n const customRow = ref(3)\r\n const customCol = ref(3)\r\n const isCustom = ref(false)\r\n\r\n const handleClickTable = () => {\r\n if (!endCell.value.length) return\r\n const [row, col] = endCell.value\r\n emit('insert', { row, col })\r\n }\r\n\r\n const insertCustomTable = () => {\r\n if (customRow.value < 1 || customRow.value > 20) return message.warning('行数/列数必须在0~20之间!')\r\n if (customCol.value < 1 || customCol.value > 20) return message.warning('行数/列数必须在0~20之间!')\r\n emit('insert', { row: customRow.value, col: customCol.value })\r\n isCustom.value = false\r\n }\r\n\r\n const close = () => {\r\n emit('close')\r\n isCustom.value = false\r\n }\r\n\r\n return {\r\n endCell,\r\n customRow,\r\n customCol,\r\n handleClickTable,\r\n insertCustomTable,\r\n isCustom,\r\n close,\r\n }\r\n },\r\n})\r\n","import { render } from \"./TableGenerator.vue?vue&type=template&id=576c614c&scoped=true\"\nimport script from \"./TableGenerator.vue?vue&type=script&lang=ts\"\nexport * from \"./TableGenerator.vue?vue&type=script&lang=ts\"\n\nimport \"./TableGenerator.vue?vue&type=style&index=0&id=576c614c&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-576c614c\"\n\nexport default script","\r\nimport { defineComponent, computed, ref } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { getImageDataURL } from '@/utils/image'\r\nimport { ShapePoolItem } from '@/configs/shapes'\r\nimport { LinePoolItem } from '@/configs/lines'\r\nimport useScaleCanvas from '@/hooks/useScaleCanvas'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\nimport useCreateElement from '@/hooks/useCreateElement'\r\n\r\nimport ShapePool from './ShapePool.vue'\r\nimport LinePool from './LinePool.vue'\r\nimport ChartPool from './ChartPool.vue'\r\nimport TableGenerator from './TableGenerator.vue'\r\n\r\nexport default defineComponent({\r\n name: 'canvas-tool',\r\n components: {\r\n ShapePool,\r\n LinePool,\r\n ChartPool,\r\n TableGenerator,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n const canUndo = computed(() => store.getters.canUndo)\r\n const canRedo = computed(() => store.getters.canRedo)\r\n\r\n const canvasScalePercentage = computed(() => parseInt(canvasScale.value * 100 + '') + '%')\r\n\r\n const { scaleCanvas, setCanvasPercentage } = useScaleCanvas()\r\n const { redo, undo } = useHistorySnapshot()\r\n\r\n const { createImageElement, createChartElement, createTableElement } = useCreateElement()\r\n\r\n const insertImageElement = (files: File[]) => {\r\n const imageFile = files[0]\r\n if (!imageFile) return\r\n getImageDataURL(imageFile).then(dataURL => createImageElement(dataURL))\r\n }\r\n\r\n const shapePoolVisible = ref(false)\r\n const linePoolVisible = ref(false)\r\n const chartPoolVisible = ref(false)\r\n const tableGeneratorVisible = ref(false)\r\n\r\n // 绘制文字范围\r\n const drawText = () => {\r\n store.commit(MutationTypes.SET_CREATING_ELEMENT, {\r\n type: 'text',\r\n data: null,\r\n })\r\n }\r\n\r\n // 绘制形状范围\r\n const drawShape = (shape: ShapePoolItem) => {\r\n store.commit(MutationTypes.SET_CREATING_ELEMENT, {\r\n type: 'shape',\r\n data: shape,\r\n })\r\n shapePoolVisible.value = false\r\n }\r\n\r\n // 绘制线条路径\r\n const drawLine = (line: LinePoolItem) => {\r\n store.commit(MutationTypes.SET_CREATING_ELEMENT, {\r\n type: 'line',\r\n data: line,\r\n })\r\n linePoolVisible.value = false\r\n }\r\n\r\n return {\r\n scaleCanvas,\r\n setCanvasPercentage,\r\n canvasScalePercentage,\r\n canUndo,\r\n canRedo,\r\n redo,\r\n undo,\r\n insertImageElement,\r\n shapePoolVisible,\r\n linePoolVisible,\r\n chartPoolVisible,\r\n tableGeneratorVisible,\r\n drawText,\r\n drawShape,\r\n drawLine,\r\n createChartElement,\r\n createTableElement,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=59ae6536&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=59ae6536&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-59ae6536\"\n\nexport default script","\r\n setThumbnailsFocus(true)\"\r\n v-click-outside=\"() => setThumbnailsFocus(false)\"\r\n v-contextmenu=\"contextmenusThumbnails\"\r\n >\r\n
添加幻灯片
\r\n
\r\n \r\n \r\n
{{ fillDigit(index + 1, 2) }}
\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { fillDigit } from '@/utils/common'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\nimport useSlideHandler from '@/hooks/useSlideHandler'\r\nimport useScreening from '@/hooks/useScreening'\r\n\r\nimport Draggable from 'vuedraggable'\r\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\r\n\r\nexport default defineComponent({\r\n name: 'thumbnails',\r\n components: {\r\n Draggable,\r\n ThumbnailSlide,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const slides = computed(() => store.state.slides)\r\n const slideIndex = computed(() => store.state.slideIndex)\r\n const ctrlKeyState = computed(() => store.state.ctrlKeyState)\r\n const shiftKeyState = computed(() => store.state.shiftKeyState)\r\n const selectedSlidesIndex = computed(() => [...store.state.selectedSlidesIndex, slideIndex.value])\r\n\r\n const {\r\n copySlide,\r\n pasteSlide,\r\n createSlide,\r\n copyAndPasteSlide,\r\n deleteSlide,\r\n cutSlide,\r\n selectAllSlide,\r\n } = useSlideHandler()\r\n\r\n // 切换页面\r\n const changSlideIndex = (index: number) => {\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, [])\r\n\r\n if (slideIndex.value === index) return\r\n store.commit(MutationTypes.UPDATE_SLIDE_INDEX, index)\r\n }\r\n\r\n // 点击缩略图\r\n const handleClickSlideThumbnail = (index: number) => {\r\n const isMultiSelected = selectedSlidesIndex.value.length > 1\r\n\r\n // 按住Ctrl键,点选幻灯片,再次点击已选中的页面则取消选中\r\n if (ctrlKeyState.value) {\r\n if (slideIndex.value === index) {\r\n if (!isMultiSelected) return\r\n\r\n const newSelectedSlidesIndex = selectedSlidesIndex.value.filter(item => item !== index)\r\n store.commit(MutationTypes.UPDATE_SELECTED_SLIDES_INDEX, newSelectedSlidesIndex)\r\n changSlideIndex(selectedSlidesIndex.value[0])\r\n }\r\n else {\r\n if (selectedSlidesIndex.value.includes(index)) {\r\n const newSelectedSlidesIndex = selectedSlidesIndex.value.filter(item => item !== index)\r\n store.commit(MutationTypes.UPDATE_SELECTED_SLIDES_INDEX, newSelectedSlidesIndex)\r\n }\r\n else {\r\n const newSelectedSlidesIndex = [...selectedSlidesIndex.value, index]\r\n store.commit(MutationTypes.UPDATE_SELECTED_SLIDES_INDEX, newSelectedSlidesIndex)\r\n changSlideIndex(index)\r\n }\r\n }\r\n }\r\n // 按住Shift键,选择范围内的全部幻灯片\r\n else if (shiftKeyState.value) {\r\n if (slideIndex.value === index && !isMultiSelected) return\r\n\r\n let minIndex = Math.min(...selectedSlidesIndex.value)\r\n let maxIndex = index\r\n\r\n if (index < minIndex) {\r\n maxIndex = Math.max(...selectedSlidesIndex.value)\r\n minIndex = index\r\n }\r\n\r\n const newSelectedSlidesIndex = []\r\n for (let i = minIndex; i <= maxIndex; i++) newSelectedSlidesIndex.push(i)\r\n store.commit(MutationTypes.UPDATE_SELECTED_SLIDES_INDEX, newSelectedSlidesIndex)\r\n changSlideIndex(index)\r\n }\r\n // 正常切换页面\r\n else {\r\n store.commit(MutationTypes.UPDATE_SELECTED_SLIDES_INDEX, [])\r\n changSlideIndex(index)\r\n }\r\n }\r\n\r\n const thumbnailsFocus = computed(() => store.state.thumbnailsFocus)\r\n\r\n // 设置缩略图工具栏聚焦状态(只有聚焦状态下,该部分的快捷键才能生效)\r\n const setThumbnailsFocus = (focus: boolean) => {\r\n if (thumbnailsFocus.value === focus) return\r\n store.commit(MutationTypes.SET_THUMBNAILS_FOCUS, focus)\r\n\r\n if (!focus) store.commit(MutationTypes.UPDATE_SELECTED_SLIDES_INDEX, [])\r\n }\r\n\r\n // 拖拽调整顺序后进行数据的同步\r\n const handleDragEnd = (eventData: { newIndex: number; oldIndex: number }) => {\r\n const { newIndex, oldIndex } = eventData\r\n if (oldIndex === newIndex) return\r\n\r\n const _slides = JSON.parse(JSON.stringify(slides.value))\r\n const _slide = _slides[oldIndex]\r\n _slides.splice(oldIndex, 1)\r\n _slides.splice(newIndex, 0, _slide)\r\n store.commit(MutationTypes.SET_SLIDES, _slides)\r\n store.commit(MutationTypes.UPDATE_SLIDE_INDEX, newIndex)\r\n }\r\n\r\n const { enterScreening } = useScreening()\r\n\r\n const contextmenusThumbnails = (): ContextmenuItem[] => {\r\n return [\r\n {\r\n text: '粘贴',\r\n subText: 'Ctrl + V',\r\n handler: pasteSlide,\r\n },\r\n {\r\n text: '全选',\r\n subText: 'Ctrl + A',\r\n handler: selectAllSlide,\r\n },\r\n {\r\n text: '新建页面',\r\n subText: 'Enter',\r\n handler: createSlide,\r\n },\r\n {\r\n text: '开始演示',\r\n subText: 'Ctrl + F',\r\n handler: enterScreening,\r\n },\r\n ]\r\n }\r\n\r\n const contextmenusThumbnailItem = (): ContextmenuItem[] => {\r\n return [\r\n {\r\n text: '剪切',\r\n subText: 'Ctrl + X',\r\n handler: cutSlide,\r\n },\r\n {\r\n text: '复制',\r\n subText: 'Ctrl + C',\r\n handler: copySlide,\r\n },\r\n {\r\n text: '粘贴',\r\n subText: 'Ctrl + V',\r\n handler: pasteSlide,\r\n },\r\n {\r\n text: '全选',\r\n subText: 'Ctrl + A',\r\n handler: selectAllSlide,\r\n },\r\n { divider: true },\r\n {\r\n text: '新建页面',\r\n subText: 'Enter',\r\n handler: createSlide,\r\n },\r\n {\r\n text: '复制页面',\r\n subText: 'Ctrl + D',\r\n handler: copyAndPasteSlide,\r\n },\r\n {\r\n text: '删除页面',\r\n subText: 'Delete',\r\n handler: () => deleteSlide(),\r\n },\r\n { divider: true },\r\n {\r\n text: '从当前页演示',\r\n subText: 'Ctrl + F',\r\n handler: enterScreening,\r\n },\r\n ]\r\n }\r\n\r\n return {\r\n setThumbnailsFocus,\r\n slides,\r\n slideIndex,\r\n selectedSlidesIndex,\r\n createSlide,\r\n handleClickSlideThumbnail,\r\n contextmenusThumbnails,\r\n contextmenusThumbnailItem,\r\n fillDigit,\r\n handleDragEnd,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=6596d0d5&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=6596d0d5&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-6596d0d5\"\n\nexport default script","\r\n \r\n\r\n\r\n\r\n\r\n","export type ToolbarState = 'elAnimation' | 'elStyle' | 'elPosition' | 'slideStyle' | 'slideAnimation' | 'multiPosition'\r\n\r\nexport const ToolbarStates = {\r\n EL_ANIMATION: 'elAnimation',\r\n EL_STYLE: 'elStyle',\r\n EL_POSITION: 'elPosition',\r\n SLIDE_STYLE: 'slideStyle',\r\n SLIDE_ANIMATION: 'slideAnimation',\r\n MULTI_POSITION: 'multiPosition',\r\n}","\r\n \r\n
\r\n 请先选中要编辑的元素\r\n
\r\n
\r\n
\r\n\r\n\r\n","\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n emitRichTextCommand('color', value)\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n emitRichTextCommand('backcolor', value)\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n updateFill(value)\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n
emitRichTextCommand('align', e.target.value)\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n
行间距:
\r\n
\r\n
\r\n
\r\n
字间距:
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\n \r\n
\r\n
不透明度:
\r\n
updateOpacity(value)\" \r\n />\r\n \r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, ref, watch } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement } from '@/types/slides'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default defineComponent({\r\n name: 'element-opacity',\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n\r\n const opacity = ref()\r\n\r\n watch(handleElement, () => {\r\n if (!handleElement.value) return\r\n opacity.value = 'opacity' in handleElement.value && handleElement.value.opacity !== undefined ? handleElement.value.opacity : 1\r\n }, { deep: true, immediate: true })\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n const updateOpacity = (value: number) => {\r\n const props = { opacity: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n opacity,\r\n updateOpacity,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ElementOpacity.vue?vue&type=template&id=b884607e&scoped=true\"\nimport script from \"./ElementOpacity.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementOpacity.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementOpacity.vue?vue&type=style&index=0&id=b884607e&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-b884607e\"\n\nexport default script","\r\n \r\n
\r\n
启用边框:
\r\n
\r\n toggleOutline(checked)\" \r\n />\r\n
\r\n
\r\n
\r\n \r\n
边框样式:
\r\n
\r\n
\r\n \r\n
边框颜色:
\r\n
\r\n \r\n updateOutline({ color: value })\"\r\n />\r\n \r\n \r\n \r\n
\r\n \r\n
边框粗细:
\r\n
updateOutline({ width: value })\" \r\n style=\"flex: 3;\" \r\n />\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n","\r\n \r\n\r\n\r\n\r\n\r\n","\r\nexport default {\r\n name: 'color-button',\r\n props: {\r\n color: {\r\n type: String,\r\n required: true,\r\n },\r\n },\r\n}\r\n","import { render } from \"./ColorButton.vue?vue&type=template&id=39016b60&scoped=true\"\nimport script from \"./ColorButton.vue?vue&type=script&lang=ts\"\nexport * from \"./ColorButton.vue?vue&type=script&lang=ts\"\n\nimport \"./ColorButton.vue?vue&type=style&index=0&id=39016b60&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-39016b60\"\n\nexport default script","\r\nimport { computed, defineComponent, ref, watch } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement, PPTElementOutline } from '@/types/slides'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport ColorButton from './ColorButton.vue'\r\n\r\nexport default defineComponent({\r\n name: 'element-outline',\r\n components: {\r\n ColorButton,\r\n },\r\n props: {\r\n fixed: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n\r\n const outline = ref()\r\n const hasOutline = ref(false)\r\n\r\n watch(handleElement, () => {\r\n if (!handleElement.value) return\r\n outline.value = 'outline' in handleElement.value ? handleElement.value.outline : undefined\r\n hasOutline.value = !!outline.value\r\n }, { deep: true, immediate: true })\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n const updateOutline = (outlineProps: Partial) => {\r\n const props = { outline: { ...outline.value, ...outlineProps } }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n const toggleOutline = (checked: boolean) => {\r\n if (checked) {\r\n const props = { outline: { width: 2, color: '#000', style: 'solid' } }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n }\r\n else {\r\n store.commit(MutationTypes.REMOVE_ELEMENT_PROPS, { id: handleElement.value.id, propName: 'outline' })\r\n }\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n outline,\r\n hasOutline,\r\n toggleOutline,\r\n updateOutline,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ElementOutline.vue?vue&type=template&id=2d8ce9c0&scoped=true\"\nimport script from \"./ElementOutline.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementOutline.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementOutline.vue?vue&type=style&index=0&id=2d8ce9c0&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-2d8ce9c0\"\n\nexport default script","\r\n \r\n
\r\n
启用阴影:
\r\n
\r\n toggleShadow(checked)\" />\r\n
\r\n
\r\n
\r\n \r\n
水平阴影:
\r\n
updateShadow({ h: value })\" \r\n style=\"flex: 3;\" \r\n />\r\n \r\n \r\n
垂直阴影:
\r\n
updateShadow({ v: value })\" \r\n style=\"flex: 3;\"\r\n />\r\n \r\n \r\n
模糊距离:
\r\n
updateShadow({ blur: value })\" \r\n style=\"flex: 3;\"\r\n />\r\n \r\n \r\n
阴影颜色:
\r\n
\r\n \r\n updateShadow({ color: value })\"\r\n />\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, ref, watch } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement, PPTElementShadow } from '@/types/slides'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport ColorButton from './ColorButton.vue'\r\n\r\nexport default defineComponent({\r\n name: 'element-shadow',\r\n components: {\r\n ColorButton,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n\r\n const shadow = ref()\r\n const hasShadow = ref(false)\r\n\r\n watch(handleElement, () => {\r\n if (!handleElement.value) return\r\n shadow.value = 'shadow' in handleElement.value ? handleElement.value.shadow : undefined\r\n hasShadow.value = !!shadow.value\r\n }, { deep: true, immediate: true })\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n const updateShadow = (shadowProps: Partial) => {\r\n const props = { shadow: { ...shadow.value, ...shadowProps } }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n const toggleShadow = (checked: boolean) => {\r\n if (checked) {\r\n const props = { shadow: { h: 1, v: 1, blur: 2, color: '#000' } }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n }\r\n else {\r\n store.commit(MutationTypes.REMOVE_ELEMENT_PROPS, { id: handleElement.value.id, propName: 'shadow' })\r\n }\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n shadow,\r\n hasShadow,\r\n toggleShadow,\r\n updateShadow,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ElementShadow.vue?vue&type=template&id=5cca6474&scoped=true\"\nimport script from \"./ElementShadow.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementShadow.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementShadow.vue?vue&type=style&index=0&id=5cca6474&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-5cca6474\"\n\nexport default script","\r\nimport { computed, defineComponent, onUnmounted, ref, watch } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTTextElement } from '@/types/slides'\r\nimport emitter, { EmitterEvents } from '@/utils/emitter'\r\nimport { TextAttrs } from '@/prosemirror/utils'\r\nimport { WEB_FONTS } from '@/configs/font'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport ElementOpacity from '../common/ElementOpacity.vue'\r\nimport ElementOutline from '../common/ElementOutline.vue'\r\nimport ElementShadow from '../common/ElementShadow.vue'\r\n\r\nconst presetStyles = [\r\n {\r\n label: '大标题',\r\n style: {\r\n fontSize: '26px',\r\n fontWeight: 700,\r\n },\r\n cmd: [\r\n { command: 'clear' },\r\n { command: 'fontsize', value: '48px' },\r\n { command: 'align', value: 'center' },\r\n { command: 'bold' },\r\n ],\r\n },\r\n {\r\n label: '小标题',\r\n style: {\r\n fontSize: '22px',\r\n fontWeight: 700,\r\n },\r\n cmd: [\r\n { command: 'clear' },\r\n { command: 'fontsize', value: '36px' },\r\n { command: 'align', value: 'center' },\r\n { command: 'bold' },\r\n ],\r\n },\r\n {\r\n label: '正文',\r\n style: {\r\n fontSize: '20px',\r\n },\r\n cmd: [\r\n { command: 'clear' },\r\n { command: 'fontsize', value: '20px' },\r\n ],\r\n },\r\n {\r\n label: '正文[小]',\r\n style: {\r\n fontSize: '18px',\r\n },\r\n cmd: [\r\n { command: 'clear' },\r\n { command: 'fontsize', value: '18px' },\r\n ],\r\n },\r\n {\r\n label: '注释 1',\r\n style: {\r\n fontSize: '16px',\r\n fontStyle: 'italic',\r\n },\r\n cmd: [\r\n { command: 'clear' },\r\n { command: 'fontsize', value: '16px' },\r\n { command: 'em' },\r\n ],\r\n },\r\n {\r\n label: '注释 2',\r\n style: {\r\n fontSize: '16px',\r\n textDecoration: 'underline',\r\n },\r\n cmd: [\r\n { command: 'clear' },\r\n { command: 'fontsize', value: '16px' },\r\n { command: 'underline' },\r\n ],\r\n },\r\n]\r\n\r\nconst webFonts = WEB_FONTS\r\n\r\ninterface CommandPayload {\r\n command: string;\r\n value?: string;\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'text-style-panel',\r\n components: {\r\n ElementOpacity,\r\n ElementOutline,\r\n ElementShadow,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n\r\n const fill = ref()\r\n const lineHeight = ref()\r\n const wordSpace = ref()\r\n\r\n watch(handleElement, () => {\r\n if (!handleElement.value || handleElement.value.type !== 'text') return\r\n\r\n fill.value = handleElement.value.fill || '#000'\r\n lineHeight.value = handleElement.value.lineHeight || 1.5\r\n wordSpace.value = handleElement.value.wordSpace || 0\r\n }, { deep: true, immediate: true })\r\n\r\n const richTextAttrs = ref({\r\n bold: false,\r\n em: false,\r\n underline: false,\r\n strikethrough: false,\r\n superscript: false,\r\n subscript: false,\r\n code: false,\r\n color: '#000',\r\n backcolor: '#000',\r\n fontsize: '20px',\r\n fontname: '微软雅黑',\r\n align: 'left',\r\n bulletList: false,\r\n orderedList: false,\r\n blockquote: false,\r\n })\r\n\r\n const availableFonts = computed(() => store.state.availableFonts)\r\n const fontSizeOptions = [\r\n '12px', '14px', '16px', '18px', '20px', '22px', '24px', '28px', '32px',\r\n '36px', '40px', '44px', '48px', '54px', '60px', '66px', '72px', '76px',\r\n '80px', '88px', '96px', '104px', '112px', '120px',\r\n ]\r\n const lineHeightOptions = [0.9, 1.0, 1.15, 1.2, 1.4, 1.5, 1.8, 2.0, 2.5, 3.0]\r\n const wordSpaceOptions = [0, 1, 2, 3, 4, 5, 6, 8, 10]\r\n\r\n // 接收并更新当前光标所在位置的富文本状态\r\n const updateRichTextAttrs = (attr: TextAttrs) => richTextAttrs.value = attr\r\n\r\n emitter.on(EmitterEvents.UPDATE_TEXT_STATE, attr => updateRichTextAttrs(attr))\r\n onUnmounted(() => {\r\n emitter.off(EmitterEvents.UPDATE_TEXT_STATE, attr => updateRichTextAttrs(attr))\r\n })\r\n\r\n // 发射富文本设置命令\r\n const emitRichTextCommand = (command: string, value?: string) => {\r\n emitter.emit(EmitterEvents.EXEC_TEXT_COMMAND, { command, value })\r\n }\r\n\r\n // 发射富文本设置命令(批量)\r\n const emitBatchRichTextCommand = (payload: CommandPayload[]) => {\r\n emitter.emit(EmitterEvents.EXEC_TEXT_COMMAND, payload)\r\n }\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 设置行高\r\n const updateLineHeight = (value: number) => {\r\n const props = { lineHeight: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置字间距\r\n const updateWordSpace = (value: number) => {\r\n const props = { wordSpace: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置文本框填充\r\n const updateFill = (value: string) => {\r\n const props = { fill: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n fill,\r\n lineHeight,\r\n wordSpace,\r\n richTextAttrs,\r\n availableFonts,\r\n webFonts,\r\n fontSizeOptions,\r\n lineHeightOptions,\r\n wordSpaceOptions,\r\n updateLineHeight,\r\n updateWordSpace,\r\n updateFill,\r\n emitRichTextCommand,\r\n emitBatchRichTextCommand,\r\n presetStyles,\r\n }\r\n },\r\n})\r\n","import { render } from \"./TextStylePanel.vue?vue&type=template&id=43fccffc&scoped=true\"\nimport script from \"./TextStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./TextStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./TextStylePanel.vue?vue&type=style&index=0&id=43fccffc&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-43fccffc\"\n\nexport default script","\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
按形状裁剪:
\r\n
\r\n\r\n
\r\n {{type.label}}:
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n
\r\n
{{filter.label}}
\r\n
updateFilter(filter, value)\"\r\n />\r\n {{filter.value}}
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
replaceImage(files)\">\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\n \r\n \r\n 垂直翻转\r\n 水平翻转\r\n \r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, ref, watch } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTImageElement, PPTShapeElement } from '@/types/slides'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default defineComponent({\r\n name: 'element-flip',\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n\r\n const flip = ref({\r\n x: 0,\r\n y: 0,\r\n })\r\n\r\n watch(handleElement, () => {\r\n if (!handleElement.value || !['image', 'shape'].includes(handleElement.value.type)) return\r\n\r\n if (handleElement.value.flip) {\r\n flip.value = {\r\n x: handleElement.value.flip.x || 0,\r\n y: handleElement.value.flip.y || 0,\r\n }\r\n }\r\n else flip.value = { x: 0, y: 0 }\r\n }, { deep: true, immediate: true })\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n const updateFlip = (value: number) => {\r\n const props = { flip: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n flip,\r\n updateFlip,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ElementFlip.vue?vue&type=template&id=4a631c86&scoped=true\"\nimport script from \"./ElementFlip.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementFlip.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementFlip.vue?vue&type=style&index=0&id=4a631c86&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-4a631c86\"\n\nexport default script","\r\nimport { computed, defineComponent, ref, watch } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTImageElement, Slide } from '@/types/slides'\r\nimport { CLIPPATHS } from '@/configs/imageClip'\r\nimport { getImageDataURL } from '@/utils/image'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport ElementOutline from '../common/ElementOutline.vue'\r\nimport ElementShadow from '../common/ElementShadow.vue'\r\nimport ElementFlip from '../common/ElementFlip.vue'\r\n\r\ninterface FilterOption {\r\n label: string;\r\n key: string;\r\n default: number;\r\n value: number;\r\n unit: string;\r\n max: number;\r\n step: number;\r\n}\r\n\r\nconst defaultFilters: FilterOption[] = [\r\n { label: '模糊', key: 'blur', default: 0, value: 0, unit: 'px', max: 10, step: 1 },\r\n { label: '亮度', key: 'brightness', default: 100, value: 100, unit: '%', max: 200, step: 5 },\r\n { label: '对比度', key: 'contrast', default: 100, value: 100, unit: '%', max: 200, step: 5 },\r\n { label: '灰度', key: 'grayscale', default: 0, value: 0, unit: '%', max: 100, step: 5 },\r\n { label: '饱和度', key: 'saturate', default: 100, value: 100, unit: '%', max: 200, step: 5 },\r\n { label: '色相', key: 'hue-rotate', default: 0, value: 0, unit: 'deg', max: 360, step: 10 },\r\n { label: '不透明度', key: 'opacity', default: 100, value: 100, unit: '%', max: 100, step: 5 },\r\n]\r\n\r\nconst shapeClipPathOptions = CLIPPATHS\r\nconst ratioClipOptions = [\r\n {\r\n label: '纵横比(方形)',\r\n children: [\r\n { key: '1:1', ratio: 1 / 1 },\r\n ],\r\n },\r\n {\r\n label: '纵横比(纵向)',\r\n children: [\r\n { key: '2:3', ratio: 3 / 2 },\r\n { key: '3:4', ratio: 4 / 3 },\r\n { key: '3:5', ratio: 5 / 3 },\r\n { key: '4:5', ratio: 5 / 4 },\r\n ],\r\n },\r\n {\r\n label: '纵横比(横向)',\r\n children: [\r\n { key: '3:2', ratio: 2 / 3 },\r\n { key: '4:3', ratio: 3 / 4 },\r\n { key: '5:3', ratio: 3 / 5 },\r\n { key: '5:4', ratio: 4 / 5 },\r\n ],\r\n },\r\n {\r\n children: [\r\n { key: '16:9', ratio: 9 / 16 },\r\n { key: '16:10', ratio: 10 / 16 },\r\n ],\r\n },\r\n]\r\n\r\nexport default defineComponent({\r\n name: 'image-style-panel',\r\n components: {\r\n ElementOutline,\r\n ElementShadow,\r\n ElementFlip,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const clipPanelVisible = ref(false)\r\n\r\n const filterOptions = ref(JSON.parse(JSON.stringify(defaultFilters)))\r\n\r\n watch(handleElement, () => {\r\n if (!handleElement.value || handleElement.value.type !== 'image') return\r\n \r\n const filters = handleElement.value.filters\r\n if (filters) {\r\n filterOptions.value = defaultFilters.map(item => {\r\n if (filters[item.key] !== undefined) return { ...item, value: parseInt(filters[item.key]) }\r\n return item\r\n })\r\n }\r\n else filterOptions.value = JSON.parse(JSON.stringify(defaultFilters))\r\n }, { deep: true, immediate: true })\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 设置滤镜\r\n const updateFilter = (filter: FilterOption, value: number) => {\r\n const originFilters = handleElement.value.filters || {}\r\n const filters = { ...originFilters, [filter.key]: `${value}${filter.unit}` }\r\n const props = { filters }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 打开自由裁剪\r\n const clipImage = () => {\r\n store.commit(MutationTypes.SET_CLIPING_IMAGE_ELEMENT_ID, handleElement.value.id)\r\n clipPanelVisible.value = false\r\n }\r\n\r\n // 获取原始图片的位置大小\r\n const getImageElementDataBeforeClip = () => {\r\n\r\n // 图片当前的位置大小和裁剪范围\r\n const imgWidth = handleElement.value.width\r\n const imgHeight = handleElement.value.height\r\n const imgLeft = handleElement.value.left\r\n const imgTop = handleElement.value.top\r\n const originClipRange = handleElement.value.clip ? handleElement.value.clip.range : [[0, 0], [100, 100]]\r\n\r\n const originWidth = imgWidth / ((originClipRange[1][0] - originClipRange[0][0]) / 100)\r\n const originHeight = imgHeight / ((originClipRange[1][1] - originClipRange[0][1]) / 100)\r\n const originLeft = imgLeft - originWidth * (originClipRange[0][0] / 100)\r\n const originTop = imgTop - originHeight * (originClipRange[0][1] / 100)\r\n\r\n return {\r\n originClipRange,\r\n originWidth,\r\n originHeight,\r\n originLeft,\r\n originTop,\r\n }\r\n }\r\n\r\n // 预设裁剪\r\n const presetImageClip = (shape: string, ratio = 0) => {\r\n const {\r\n originClipRange,\r\n originWidth,\r\n originHeight,\r\n originLeft,\r\n originTop,\r\n } = getImageElementDataBeforeClip()\r\n \r\n // 纵横比裁剪(形状固定为矩形)\r\n if (ratio) {\r\n const imageRatio = originHeight / originWidth\r\n\r\n const min = 0\r\n const max = 100\r\n let range\r\n\r\n if (imageRatio > ratio) {\r\n const distance = ((1 - ratio / imageRatio) / 2) * 100\r\n range = [[min, distance], [max, max - distance]]\r\n }\r\n else {\r\n const distance = ((1 - imageRatio / ratio) / 2) * 100\r\n range = [[distance, min], [max - distance, max]]\r\n }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, {\r\n id: handleElement.value.id,\r\n props: {\r\n clip: { ...handleElement.value.clip, shape, range },\r\n left: originLeft + originWidth * (range[0][0] / 100),\r\n top: originTop + originHeight * (range[0][1] / 100),\r\n width: originWidth * (range[1][0] - range[0][0]) / 100,\r\n height: originHeight * (range[1][1] - range[0][1]) / 100,\r\n },\r\n })\r\n }\r\n // 形状裁剪(保持当前裁剪范围)\r\n else {\r\n store.commit(MutationTypes.UPDATE_ELEMENT, {\r\n id: handleElement.value.id,\r\n props: {\r\n clip: { ...handleElement.value.clip, shape, range: originClipRange }\r\n },\r\n })\r\n }\r\n clipImage()\r\n addHistorySnapshot()\r\n }\r\n\r\n // 替换图片(保持当前的样式)\r\n const replaceImage = (files: File[]) => {\r\n const imageFile = files[0]\r\n if (!imageFile) return\r\n getImageDataURL(imageFile).then(dataURL => {\r\n const props = { src: dataURL }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 重置图片:清除全部样式\r\n const resetImage = () => {\r\n if (handleElement.value.clip) {\r\n const {\r\n originWidth,\r\n originHeight,\r\n originLeft,\r\n originTop,\r\n } = getImageElementDataBeforeClip()\r\n\r\n store.commit(MutationTypes.UPDATE_ELEMENT, {\r\n id: handleElement.value.id,\r\n props: {\r\n left: originLeft,\r\n top: originTop,\r\n width: originWidth,\r\n height: originHeight,\r\n },\r\n })\r\n }\r\n\r\n store.commit(MutationTypes.REMOVE_ELEMENT_PROPS, {\r\n id: handleElement.value.id,\r\n propName: ['clip', 'outline', 'flip', 'shadow', 'filters'],\r\n })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 将图片设置为背景\r\n const setBackgroundImage = () => {\r\n const background = {\r\n ...currentSlide.value.background,\r\n type: 'image',\r\n image: handleElement.value.src,\r\n imageSize: 'cover',\r\n }\r\n store.commit(MutationTypes.UPDATE_SLIDE, { background })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n clipPanelVisible,\r\n shapeClipPathOptions,\r\n ratioClipOptions,\r\n filterOptions,\r\n handleElement,\r\n updateFilter,\r\n clipImage,\r\n presetImageClip,\r\n replaceImage,\r\n resetImage,\r\n setBackgroundImage,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ImageStylePanel.vue?vue&type=template&id=c1cc1cba&scoped=true\"\nimport script from \"./ImageStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./ImageStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./ImageStylePanel.vue?vue&type=style&index=0&id=c1cc1cba&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-c1cc1cba\"\n\nexport default script","\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n updateFill(value)\"\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
起点颜色:
\r\n
\r\n \r\n updateGradient({ color: [value, gradient.color[1]] })\"\r\n />\r\n \r\n \r\n \r\n
\r\n \r\n
终点颜色:
\r\n
\r\n \r\n updateGradient({ color: [gradient.color[0], value] })\"\r\n />\r\n \r\n \r\n \r\n
\r\n \r\n
渐变角度:
\r\n
updateGradient({ rotate: value })\" \r\n />\r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, ref, watch } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTShapeElement, ShapeGradient } from '@/types/slides'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport ElementOpacity from '../common/ElementOpacity.vue'\r\nimport ElementOutline from '../common/ElementOutline.vue'\r\nimport ElementShadow from '../common/ElementShadow.vue'\r\nimport ElementFlip from '../common/ElementFlip.vue'\r\nimport ColorButton from '../common/ColorButton.vue'\r\n\r\nexport default defineComponent({\r\n name: 'shape-style-panel',\r\n components: {\r\n ElementOpacity,\r\n ElementOutline,\r\n ElementShadow,\r\n ElementFlip,\r\n ColorButton,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n\r\n const fill = ref()\r\n const gradient = ref()\r\n const fillType = ref('fill')\r\n\r\n watch(handleElement, () => {\r\n if (!handleElement.value || handleElement.value.type !== 'shape') return\r\n fill.value = handleElement.value.fill || '#000'\r\n\r\n gradient.value = handleElement.value.gradient || { type: 'linear', rotate: 0, color: [fill.value, '#fff'] }\r\n\r\n fillType.value = handleElement.value.gradient ? 'gradient' : 'fill'\r\n }, { deep: true, immediate: true })\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 设置填充类型:渐变、纯色\r\n const updateFillType = (type: 'gradient' | 'fill') => {\r\n if (type === 'fill') {\r\n store.commit(MutationTypes.REMOVE_ELEMENT_PROPS, {\r\n id: handleElement.value.id,\r\n propName: 'gradient',\r\n })\r\n }\r\n else {\r\n const props = { gradient: gradient.value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n }\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置渐变填充\r\n const updateGradient = (gradientProps: Partial) => {\r\n const props = { gradient: { ...gradient.value, ...gradientProps } }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置填充色\r\n const updateFill = (value: string) => {\r\n const props = { fill: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n fill,\r\n gradient,\r\n fillType,\r\n updateFillType,\r\n updateFill,\r\n updateGradient,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ShapeStylePanel.vue?vue&type=template&id=998a7a02&scoped=true\"\nimport script from \"./ShapeStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./ShapeStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./ShapeStylePanel.vue?vue&type=style&index=0&id=998a7a02&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-998a7a02\"\n\nexport default script","\r\n \r\n
\r\n
线条样式:
\r\n
\r\n
\r\n
\r\n
线条颜色:
\r\n
\r\n \r\n updateLine({ color: value })\"\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n
线条宽度:
\r\n
updateLine({ width: value })\" \r\n style=\"flex: 3;\" \r\n />\r\n \r\n \r\n
\r\n
起点样式:
\r\n
\r\n
\r\n
\r\n
终点样式:
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTLineElement } from '@/types/slides'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport ElementShadow from '../common/ElementShadow.vue'\r\nimport ColorButton from '../common/ColorButton.vue'\r\n\r\nexport default defineComponent({\r\n name: 'line-style-panel',\r\n components: {\r\n ElementShadow,\r\n ColorButton,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n const updateLine = (props: Partial) => {\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n handleElement,\r\n updateLine,\r\n }\r\n }\r\n})\r\n","import { render } from \"./LineStylePanel.vue?vue&type=template&id=65b24fb3&scoped=true\"\nimport script from \"./LineStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./LineStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./LineStylePanel.vue?vue&type=style&index=0&id=65b24fb3&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-65b24fb3\"\n\nexport default script","\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n updateOptions({ showArea: e.target.checked })\"\r\n :checked=\"showArea\" \r\n style=\"flex: 1;\"\r\n >面积图样式\r\n updateOptions({ showLine: !e.target.checked })\"\r\n :checked=\"!showLine\" \r\n style=\"flex: 1;\"\r\n >散点图样式\r\n
\r\n \r\n updateOptions({ lineSmooth: e.target.checked })\" \r\n :checked=\"lineSmooth\"\r\n >使用平滑曲线\r\n
\r\n \r\n
\r\n updateOptions({ horizontalBars: e.target.checked })\" \r\n :checked=\"horizontalBars\"\r\n >条形图样式\r\n
\r\n
\r\n updateOptions({ donut: e.target.checked })\" \r\n :checked=\"donut\"\r\n >环形图样式\r\n
\r\n\r\n
\r\n\r\n
\r\n
背景填充:
\r\n
\r\n \r\n updateFill(value)\"\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n
主题配色:
\r\n
\r\n \r\n updateTheme(value)\"\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n
网格颜色:
\r\n
\r\n \r\n updateGridColor(value)\"\r\n />\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n updateData(value)\"\r\n />\r\n \r\n
\r\n\r\n\r\n\r\n\r\n","\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { ChartData } from '@/types/slides'\r\nimport { computed, defineComponent, onMounted, PropType, ref } from 'vue'\r\n\r\nconst CELL_WIDTH = 100\r\nconst CELL_HEIGHT = 32\r\n\r\nexport default defineComponent({\r\n name: 'chart-data-editor',\r\n props: {\r\n data: {\r\n type: Object as PropType,\r\n required: true,\r\n }\r\n },\r\n setup(props, { emit }) {\r\n const selectedRange = ref([0, 0])\r\n const tempRangeSize = ref({ width: 0, height: 0 })\r\n\r\n // 当前选区的边框线条位置\r\n const rangeLines = computed(() => {\r\n const width = selectedRange.value[0] * CELL_WIDTH\r\n const height = selectedRange.value[1] * CELL_HEIGHT\r\n return [\r\n { type: 't', style: {width: width + 'px'} },\r\n { type: 'b', style: {top: height + 'px', width: width + 'px'} },\r\n { type: 'l', style: {height: height + 'px'} },\r\n { type: 'r', style: {left: width + 'px', height: height + 'px'} },\r\n ]\r\n })\r\n\r\n // 当前选区的缩放点位置\r\n const resizablePointStyle = computed(() => {\r\n const width = selectedRange.value[0] * CELL_WIDTH\r\n const height = selectedRange.value[1] * CELL_HEIGHT\r\n return { left: width + 'px', top: height + 'px' }\r\n })\r\n\r\n // 初始化图表数据:将数据格式化并填充到DOM\r\n const initData = () => {\r\n const _data: string[][] = []\r\n\r\n const { labels, series } = props.data\r\n const rowCount = labels.length\r\n const colCount = series.length\r\n\r\n for (let rowIndex = 0; rowIndex < rowCount; rowIndex++) {\r\n const row = [labels[rowIndex]]\r\n for (let colIndex = 0; colIndex < colCount; colIndex++) {\r\n row.push(series[colIndex][rowIndex] + '')\r\n }\r\n _data.push(row)\r\n }\r\n\r\n for (let rowIndex = 0; rowIndex < rowCount; rowIndex++) {\r\n for (let colIndex = 0; colIndex < colCount + 1; colIndex++) {\r\n const inputRef = document.querySelector(`#cell-${rowIndex}-${colIndex}`) as HTMLInputElement\r\n if (!inputRef) continue\r\n inputRef.value = _data[rowIndex][colIndex] + ''\r\n }\r\n }\r\n\r\n selectedRange.value = [colCount + 1, rowCount]\r\n }\r\n\r\n onMounted(initData)\r\n\r\n // 获取当前图表DOM中的数据,整理格式化后传递出去\r\n const getTableData = () => {\r\n const [col, row] = selectedRange.value\r\n\r\n const labels: string[] = []\r\n const series: number[][] = []\r\n\r\n // 第一列为系列名,实际数据从第二列开始\r\n for (let rowIndex = 0; rowIndex < row; rowIndex++) {\r\n let labelsItem = `类别${rowIndex + 1}`\r\n const labelInputRef = document.querySelector(`#cell-${rowIndex}-0`) as HTMLInputElement\r\n if (labelInputRef && labelInputRef.value) labelsItem = labelInputRef.value\r\n labels.push(labelsItem)\r\n }\r\n\r\n for (let colIndex = 1; colIndex < col; colIndex++) {\r\n const seriesItem = []\r\n for (let rowIndex = 0; rowIndex < row; rowIndex++) {\r\n const valueInputRef = document.querySelector(`#cell-${rowIndex}-${colIndex}`) as HTMLInputElement\r\n let value = 0\r\n if (valueInputRef && valueInputRef.value && !!(+valueInputRef.value)) {\r\n value = +valueInputRef.value\r\n }\r\n seriesItem.push(value)\r\n }\r\n series.push(seriesItem)\r\n }\r\n const data = { labels, series }\r\n emit('save', data)\r\n }\r\n\r\n // 关闭图表数据编辑器\r\n const closeEditor = () => emit('close')\r\n\r\n // 鼠标拖拽修改选中的数据范围\r\n const changeSelectRange = (e: MouseEvent) => {\r\n let isMouseDown = true\r\n\r\n const startPageX = e.pageX\r\n const startPageY = e.pageY\r\n\r\n const originWidth = selectedRange.value[0] * CELL_WIDTH\r\n const originHeight = selectedRange.value[1] * CELL_HEIGHT\r\n\r\n document.onmousemove = e => {\r\n if (!isMouseDown) return\r\n\r\n const currentPageX = e.pageX\r\n const currentPageY = e.pageY\r\n\r\n const x = currentPageX - startPageX\r\n const y = currentPageY - startPageY\r\n\r\n const width = originWidth + x\r\n const height = originHeight + y\r\n\r\n tempRangeSize.value = { width, height }\r\n }\r\n\r\n document.onmouseup = e => {\r\n isMouseDown = false\r\n document.onmousemove = null\r\n document.onmouseup = null\r\n\r\n const endPageX = e.pageX\r\n const endPageY = e.pageY\r\n\r\n if (startPageX === endPageX && startPageY === endPageY) return\r\n\r\n // 拖拽结束时,范围超过格子一半自动扩大到下一格(如拖动到一格半多的位置,会自动扩展到两格,横竖都同理)\r\n let width = tempRangeSize.value.width\r\n let height = tempRangeSize.value.height\r\n if (width % CELL_WIDTH > CELL_WIDTH * 0.5) width = width + (CELL_WIDTH - width % CELL_WIDTH)\r\n if (height % CELL_HEIGHT > CELL_HEIGHT * 0.5) height = height + (CELL_HEIGHT - height % CELL_HEIGHT)\r\n\r\n let row = Math.round(height / CELL_HEIGHT)\r\n let col = Math.round(width / CELL_WIDTH)\r\n\r\n if (row < 3) row = 3\r\n if (col < 2) col = 2\r\n\r\n selectedRange.value = [col, row]\r\n tempRangeSize.value = { width: 0, height: 0 }\r\n }\r\n }\r\n\r\n return {\r\n tempRangeSize,\r\n rangeLines,\r\n resizablePointStyle,\r\n changeSelectRange,\r\n selectedRange,\r\n getTableData,\r\n closeEditor,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ChartDataEditor.vue?vue&type=template&id=42e69ec4&scoped=true\"\nimport script from \"./ChartDataEditor.vue?vue&type=script&lang=ts\"\nexport * from \"./ChartDataEditor.vue?vue&type=script&lang=ts\"\n\nimport \"./ChartDataEditor.vue?vue&type=style&index=0&id=42e69ec4&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-42e69ec4\"\n\nexport default script","\r\nimport { computed, defineComponent, ref, watch } from 'vue'\r\nimport { IBarChartOptions, ILineChartOptions, IPieChartOptions } from 'chartist'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { ChartData, PPTChartElement } from '@/types/slides'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport ElementOutline from '../../common/ElementOutline.vue'\r\nimport ColorButton from '../../common/ColorButton.vue'\r\nimport ChartDataEditor from './ChartDataEditor.vue'\r\n\r\nexport default defineComponent({\r\n name: 'chart-style-panel',\r\n components: {\r\n ElementOutline,\r\n ChartDataEditor,\r\n ColorButton,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n\r\n const chartDataEditorVisible = ref(false)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n const fill = ref()\r\n\r\n const themeColor = ref('')\r\n const gridColor = ref('')\r\n\r\n const lineSmooth = ref(true)\r\n const showLine = ref(true)\r\n const showArea = ref(false)\r\n const horizontalBars = ref(false)\r\n const donut = ref(false)\r\n\r\n watch(handleElement, () => {\r\n if (!handleElement.value || handleElement.value.type !== 'chart') return\r\n fill.value = handleElement.value.fill || '#000'\r\n\r\n if (handleElement.value.options) {\r\n const {\r\n lineSmooth: _lineSmooth,\r\n showLine: _showLine,\r\n showArea: _showArea,\r\n horizontalBars: _horizontalBars,\r\n donut: _donut,\r\n } = handleElement.value.options\r\n\r\n if (_lineSmooth !== undefined) lineSmooth.value = _lineSmooth\r\n if (_showLine !== undefined) showLine.value = _showLine\r\n if (_showArea !== undefined) showArea.value = _showArea\r\n if (_horizontalBars !== undefined) horizontalBars.value = _horizontalBars\r\n if (_donut !== undefined) donut.value = _donut\r\n }\r\n\r\n themeColor.value = handleElement.value.themeColor\r\n gridColor.value = handleElement.value.gridColor || 'rgba(0, 0, 0, 0.4)'\r\n }, { deep: true, immediate: true })\r\n\r\n // 设置图表数据\r\n const updateData = (data: ChartData) => {\r\n chartDataEditorVisible.value = false\r\n const props = { data }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置填充色\r\n const updateFill = (value: string) => {\r\n const props = { fill: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置其他选项:柱状图转条形图、折线图转面积图、折线图转散点图、饼图转环形图、折线图开关平滑曲线\r\n const updateOptions = (optionProps: ILineChartOptions & IBarChartOptions & IPieChartOptions) => {\r\n const options = handleElement.value.options || {}\r\n const newOptions = { ...options, ...optionProps }\r\n const props = { options: newOptions }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置主题色\r\n const updateTheme = (themeColor: string) => {\r\n const props = { themeColor }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置网格颜色\r\n const updateGridColor = (gridColor: string) => {\r\n const props = { gridColor }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n chartDataEditorVisible,\r\n handleElement,\r\n updateData,\r\n fill,\r\n updateFill,\r\n lineSmooth,\r\n showLine,\r\n showArea,\r\n horizontalBars,\r\n donut,\r\n updateOptions,\r\n themeColor,\r\n gridColor,\r\n updateTheme,\r\n updateGridColor,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=4dd87e36&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=4dd87e36&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-4dd87e36\"\n\nexport default script","\r\n \r\n
\r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n updateTextAttrs({ color: value })\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n updateTextAttrs({ backcolor: value })\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
updateTextAttrs({ align: e.target.value })\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
行数:
\r\n
setTableRow(e)\"\r\n @blur=\"e => setTableRow(e)\"\r\n style=\"flex: 3;\" \r\n />\r\n \r\n
\r\n
列数:
\r\n
setTableCol(e)\"\r\n @blur=\"e => setTableCol(e)\"\r\n style=\"flex: 3;\" \r\n />\r\n \r\n\r\n
\r\n\r\n
\r\n
启用主题表格:
\r\n
\r\n toggleTheme(checked)\" \r\n />\r\n
\r\n
\r\n\r\n
\r\n \r\n updateTheme({ rowHeader: e.target.checked })\" \r\n :checked=\"theme.rowHeader\" \r\n style=\"flex: 1;\"\r\n >标题行\r\n updateTheme({ rowFooter: e.target.checked })\" \r\n :checked=\"theme.rowFooter\" \r\n style=\"flex: 1;\"\r\n >汇总行\r\n
\r\n \r\n updateTheme({ colHeader: e.target.checked })\" \r\n :checked=\"theme.colHeader\" \r\n style=\"flex: 1;\"\r\n >第一列\r\n updateTheme({ colFooter: e.target.checked })\" \r\n :checked=\"theme.colFooter\" \r\n style=\"flex: 1;\"\r\n >最后一列\r\n
\r\n \r\n
主题颜色:
\r\n
\r\n \r\n updateTheme({ color: value })\"\r\n />\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, onUnmounted, ref, watch } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTTableElement, TableCell, TableCellStyle, TableTheme } from '@/types/slides'\r\nimport emitter, { EmitterEvents } from '@/utils/emitter'\r\nimport { createRandomCode } from '@/utils/common'\r\nimport { WEB_FONTS } from '@/configs/font'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport { message } from 'ant-design-vue'\r\n\r\nimport ElementOutline from '../common/ElementOutline.vue'\r\nimport ColorButton from '../common/ColorButton.vue'\r\n\r\nconst webFonts = WEB_FONTS\r\n\r\nexport default defineComponent({\r\n name: 'table-style-panel',\r\n components: {\r\n ElementOutline,\r\n ColorButton,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n \r\n const availableFonts = computed(() => store.state.availableFonts)\r\n const fontSizeOptions = [\r\n '12px', '14px', '16px', '18px', '20px', '22px', '24px', '28px', '32px',\r\n ]\r\n\r\n const textAttrs = ref({\r\n bold: false,\r\n em: false,\r\n underline: false,\r\n strikethrough: false,\r\n color: '#000',\r\n backcolor: '#000',\r\n fontsize: '12px',\r\n fontname: '微软雅黑',\r\n align: 'left',\r\n })\r\n\r\n const theme = ref()\r\n const hasTheme = ref(false)\r\n const rowCount = ref(0)\r\n const colCount = ref(0)\r\n const minRowCount = ref(0)\r\n const minColCount = ref(0)\r\n\r\n watch(handleElement, () => {\r\n if (!handleElement.value || handleElement.value.type !== 'table') return\r\n \r\n theme.value = handleElement.value.theme\r\n hasTheme.value = !!theme.value\r\n\r\n rowCount.value = handleElement.value.data.length\r\n colCount.value = handleElement.value.data[0].length\r\n\r\n minRowCount.value = handleElement.value.data.length\r\n minColCount.value = handleElement.value.data[0].length\r\n }, { deep: true, immediate: true })\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n const selectedCells = ref([])\r\n\r\n // 更新当前选中单元格的文本样式状态\r\n const updateTextAttrState = () => {\r\n if (!handleElement.value) return\r\n\r\n let rowIndex = 0\r\n let colIndex = 0\r\n if (selectedCells.value.length) {\r\n const selectedCell = selectedCells.value[0]\r\n rowIndex = +selectedCell.split('_')[0]\r\n colIndex = +selectedCell.split('_')[1]\r\n }\r\n const style = handleElement.value.data[rowIndex][colIndex].style\r\n\r\n if (!style) {\r\n textAttrs.value = {\r\n bold: false,\r\n em: false,\r\n underline: false,\r\n strikethrough: false,\r\n color: '#000',\r\n backcolor: '#000',\r\n fontsize: '12px',\r\n fontname: '微软雅黑',\r\n align: 'left',\r\n }\r\n }\r\n else {\r\n textAttrs.value = {\r\n bold: !!style.bold,\r\n em: !!style.em,\r\n underline: !!style.underline,\r\n strikethrough: !!style.strikethrough,\r\n color: style.color || '#000',\r\n backcolor: style.backcolor || '#000',\r\n fontsize: style.fontsize || '12px',\r\n fontname: style.fontname || '微软雅黑',\r\n align: style.align || 'left',\r\n }\r\n }\r\n }\r\n\r\n // 监听并更新当前选中的单元格\r\n const updateSelectedCells = (cells: string[]) => {\r\n selectedCells.value = cells\r\n updateTextAttrState()\r\n }\r\n\r\n emitter.on(EmitterEvents.UPDATE_TABLE_SELECTED_CELL, cells => updateSelectedCells(cells))\r\n onUnmounted(() => {\r\n emitter.off(EmitterEvents.UPDATE_TABLE_SELECTED_CELL, cells => updateSelectedCells(cells))\r\n })\r\n\r\n // 设置单元格内容文本样式\r\n const updateTextAttrs = (textAttrProp: Partial) => {\r\n const data: TableCell[][] = JSON.parse(JSON.stringify(handleElement.value.data))\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n for (let j = 0; j < data[i].length; j++) {\r\n if (!selectedCells.value.length || selectedCells.value.includes(`${i}_${j}`)) {\r\n const style = data[i][j].style || {}\r\n data[i][j].style = { ...style, ...textAttrProp }\r\n }\r\n }\r\n }\r\n const props = { data }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n\r\n addHistorySnapshot()\r\n updateTextAttrState()\r\n }\r\n\r\n // 更新表格主题:主题色、标题行、汇总行、第一列、最后一列\r\n const updateTheme = (themeProp: Partial) => {\r\n const currentTheme = theme.value || {}\r\n const props = { theme: { ...currentTheme, ...themeProp } }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 开启/关闭表格主题\r\n const toggleTheme = (checked: boolean) => {\r\n if (checked) {\r\n const props = {\r\n theme: {\r\n color: '#d14424',\r\n rowHeader: true,\r\n rowFooter: false,\r\n colHeader: false,\r\n colFooter: false,\r\n }\r\n }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n }\r\n else {\r\n store.commit(MutationTypes.REMOVE_ELEMENT_PROPS, { id: handleElement.value.id, propName: 'theme' })\r\n }\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置表格行数(只能增加)\r\n const setTableRow = (e: KeyboardEvent) => {\r\n const value = +(e.target as HTMLInputElement).value\r\n const rowCount = handleElement.value.data.length\r\n\r\n if (value === rowCount) return\r\n if (value < rowCount) return message.warning('设置行数不能少于当前值')\r\n\r\n const rowCells: TableCell[] = new Array(colCount.value).fill({ id: createRandomCode(), colspan: 1, rowspan: 1, text: '' })\r\n const newTableCells: TableCell[][] = new Array(value - rowCount).fill(rowCells)\r\n\r\n const tableCells: TableCell[][] = JSON.parse(JSON.stringify(handleElement.value.data))\r\n tableCells.push(...newTableCells)\r\n\r\n const props = { data: tableCells }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n\r\n // 设置表格列数(只能增加)\r\n const setTableCol = (e: KeyboardEvent) => {\r\n const value = +(e.target as HTMLInputElement).value\r\n const colCount = handleElement.value.data[0].length\r\n\r\n if (value === colCount) return\r\n if (value < colCount) return message.warning('设置列数不能少于当前值')\r\n\r\n const tableCells = handleElement.value.data.map(item => {\r\n const cells: TableCell[] = new Array(value - colCount).fill({ id: createRandomCode(), colspan: 1, rowspan: 1, text: '' })\r\n item.push(...cells)\r\n return item\r\n })\r\n\r\n const colSizeList = handleElement.value.colWidths.map(item => item * handleElement.value.width)\r\n const newColSizeList = new Array(value - colCount).fill(100)\r\n colSizeList.push(...newColSizeList)\r\n\r\n const width = handleElement.value.width + 100 * (value - colCount)\r\n const colWidths = colSizeList.map(item => item / width)\r\n\r\n const props = {\r\n width,\r\n data: tableCells,\r\n colWidths,\r\n }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n handleElement,\r\n availableFonts,\r\n fontSizeOptions,\r\n textAttrs,\r\n updateTextAttrs,\r\n theme,\r\n rowCount,\r\n colCount,\r\n minRowCount,\r\n minColCount,\r\n hasTheme,\r\n toggleTheme,\r\n updateTheme,\r\n setTableRow,\r\n setTableCol,\r\n webFonts,\r\n }\r\n },\r\n})\r\n","import { render } from \"./TableStylePanel.vue?vue&type=template&id=2db32cac&scoped=true\"\nimport script from \"./TableStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./TableStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./TableStylePanel.vue?vue&type=style&index=0&id=2db32cac&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-2db32cac\"\n\nexport default script","\r\nimport { computed, defineComponent } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { ElementTypes, PPTElement } from '@/types/slides'\r\n\r\nimport TextStylePanel from './TextStylePanel.vue'\r\nimport ImageStylePanel from './ImageStylePanel.vue'\r\nimport ShapeStylePanel from './ShapeStylePanel.vue'\r\nimport LineStylePanel from './LineStylePanel.vue'\r\nimport ChartStylePanel from './ChartStylePanel/index.vue'\r\nimport TableStylePanel from './TableStylePanel.vue'\r\n\r\nexport default defineComponent({\r\n name: 'element-style-panel',\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n\r\n const currentPanelComponent = computed(() => {\r\n if (!handleElement.value) return null\r\n \r\n const panelMap = {\r\n [ElementTypes.TEXT]: TextStylePanel,\r\n [ElementTypes.IMAGE]: ImageStylePanel,\r\n [ElementTypes.SHAPE]: ShapeStylePanel,\r\n [ElementTypes.LINE]: LineStylePanel,\r\n [ElementTypes.CHART]: ChartStylePanel,\r\n [ElementTypes.TABLE]: TableStylePanel,\r\n }\r\n return panelMap[handleElement.value.type] || null\r\n })\r\n\r\n return {\r\n handleElement,\r\n currentPanelComponent,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=3eb3d748\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n
位置:
\r\n
updateLeft(value)\"\r\n style=\"flex: 4;\"\r\n />\r\n \r\n updateTop(value)\"\r\n style=\"flex: 4;\"\r\n />\r\n \r\n
\r\n
\r\n
X
\r\n
\r\n
Y
\r\n
\r\n\r\n
\r\n \r\n
大小:
\r\n
updateWidth(value)\"\r\n style=\"flex: 4;\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n updateHeight(value)\"\r\n style=\"flex: 4;\"\r\n />\r\n \r\n \r\n
\r\n
宽
\r\n
\r\n
高
\r\n
\r\n \r\n\r\n
\r\n \r\n\r\n \r\n
旋转:
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
updateRotate(value)\" \r\n style=\"flex: 4;\" \r\n />\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, ref, watch } from 'vue'\r\nimport round from 'lodash/round'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement } from '@/types/slides'\r\nimport { MIN_SIZE } from '@/configs/element'\r\nimport useOrderElement from '@/hooks/useOrderElement'\r\nimport useAlignElementToCanvas from '@/hooks/useAlignElementToCanvas'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default defineComponent({\r\n name: 'element-positopn-panel',\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n\r\n const left = ref(0)\r\n const top = ref(0)\r\n const width = ref(0)\r\n const height = ref(0)\r\n const rotate = ref(0)\r\n const fixedRatio = ref(false)\r\n\r\n const minSize = computed(() => {\r\n if (!handleElement.value) return 20\r\n return MIN_SIZE[handleElement.value.type] || 20\r\n })\r\n\r\n watch(handleElement, () => {\r\n if (!handleElement.value) return\r\n\r\n left.value = round(handleElement.value.left, 1)\r\n top.value = round(handleElement.value.top, 1)\r\n\r\n fixedRatio.value = 'fixedRatio' in handleElement.value && !!handleElement.value.fixedRatio\r\n\r\n if (handleElement.value.type !== 'line') {\r\n width.value = round(handleElement.value.width, 1)\r\n height.value = round(handleElement.value.height, 1)\r\n rotate.value = 'rotate' in handleElement.value && handleElement.value.rotate !== undefined ? round(handleElement.value.rotate, 1) : 0\r\n }\r\n }, { deep: true, immediate: true })\r\n\r\n const { orderElement } = useOrderElement()\r\n const { alignElementToCanvas } = useAlignElementToCanvas()\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 设置元素位置\r\n const updateLeft = (value: number) => {\r\n const props = { left: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n const updateTop = (value: number) => {\r\n const props = { top: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置元素宽度、高度、旋转角度\r\n const updateWidth = (value: number) => {\r\n const props = { width: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n const updateHeight = (value: number) => {\r\n const props = { height: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n const updateRotate = (value: number) => {\r\n const props = { rotate: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 固定元素的宽高比\r\n const updateFixedRatio = (value: boolean) => {\r\n const props = { fixedRatio: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 将元素旋转45度(顺时针或逆时针)\r\n const updateRotate45 = (command: '+' | '-') => {\r\n let _rotate = Math.floor(rotate.value / 45) * 45\r\n if (command === '+') _rotate = _rotate + 45\r\n else if (command === '-') _rotate = _rotate - 45\r\n\r\n if (_rotate < -180) _rotate = -180\r\n if (_rotate > 180) _rotate = 180\r\n\r\n const props = { rotate: _rotate }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n handleElement,\r\n orderElement,\r\n alignElementToCanvas,\r\n left,\r\n top,\r\n width,\r\n height,\r\n rotate,\r\n fixedRatio,\r\n minSize,\r\n updateLeft,\r\n updateTop,\r\n updateWidth,\r\n updateHeight,\r\n updateRotate,\r\n updateFixedRatio,\r\n updateRotate45,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ElementPositionPanel.vue?vue&type=template&id=15c9ddcc&scoped=true\"\nimport script from \"./ElementPositionPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementPositionPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementPositionPanel.vue?vue&type=style&index=0&id=15c9ddcc&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-15c9ddcc\"\n\nexport default script","\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
{{type.name}}:
\r\n
\r\n
\r\n
\r\n {{item.name}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
选中画布中的元素添加动画
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
{{index + 1}}
\r\n
【{{element.elType}}】{{element.animationType}}
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n","export const ANIMATIONS = [\r\n {\r\n type: 'bounce',\r\n name: '弹跳',\r\n children: [\r\n { name: '弹入', value: 'bounceIn' },\r\n { name: '向右弹入', value: 'bounceInLeft' },\r\n { name: '向左弹入', value: 'bounceInRight' },\r\n { name: '向上弹入', value: 'bounceInUp' },\r\n { name: '向下弹入', value: 'bounceInDown' },\r\n ],\r\n },\r\n {\r\n type: 'fade',\r\n name: '浮现',\r\n children: [\r\n { name: '浮入', value: 'fadeIn' },\r\n { name: '向下浮入', value: 'fadeInDown' },\r\n { name: '向下长距浮入', value: 'fadeInDownBig' },\r\n { name: '向右浮入', value: 'fadeInLeft' },\r\n { name: '向右长距浮入', value: 'fadeInLeftBig' },\r\n { name: '向左浮入', value: 'fadeInRight' },\r\n { name: '向左长距浮入', value: 'fadeInRightBig' },\r\n { name: '向上浮入', value: 'fadeInUp' },\r\n { name: '向上长距浮入', value: 'fadeInUpBig' },\r\n { name: '从左上浮入', value: 'fadeInTopLeft' },\r\n { name: '从右上浮入', value: 'fadeInTopRight' },\r\n { name: '从左下浮入', value: 'fadeInBottomLeft' },\r\n { name: '从右下浮入', value: 'fadeInBottomRight' },\r\n ],\r\n },\r\n {\r\n type: 'rotate',\r\n name: '旋转',\r\n children: [\r\n { name: '旋转进入', value: 'rotateIn' },\r\n { name: '绕左下旋转进入', value: 'rotateInDownLeft' },\r\n { name: '绕右下旋转进入', value: 'rotateInDownRight' },\r\n { name: '绕左上旋转进入', value: 'rotateInUpLeft' },\r\n { name: '绕右上旋转进入', value: 'rotateInUpRight' },\r\n ],\r\n },\r\n {\r\n type: 'zoom',\r\n name: '缩放',\r\n children: [\r\n { name: '放大进入', value: 'zoomIn' },\r\n { name: '向下放大进入', value: 'zoomInDown' },\r\n { name: '从左放大进入', value: 'zoomInLeft' },\r\n { name: '从右放大进入', value: 'zoomInRight' },\r\n { name: '向上放大进入', value: 'zoomInUp' },\r\n ],\r\n },\r\n {\r\n type: 'slide',\r\n name: '滑入',\r\n children: [\r\n { name: '向下滑入', value: 'slideInDown' },\r\n { name: '从右滑入', value: 'slideInLeft' },\r\n { name: '从左滑入', value: 'slideInRight' },\r\n { name: '向上滑入', value: 'slideInUp' },\r\n ],\r\n },\r\n {\r\n type: 'flip',\r\n name: '翻转',\r\n children: [\r\n { name: 'X轴翻转进入', value: 'flipInX' },\r\n { name: 'Y轴翻转进入', value: 'flipInY' },\r\n ],\r\n },\r\n {\r\n type: 'back',\r\n name: '放大滑入',\r\n children: [\r\n { name: '向下放大滑入', value: 'backInDown' },\r\n { name: '从左放大滑入', value: 'backInLeft' },\r\n { name: '从右放大滑入', value: 'backInRight' },\r\n { name: '向上放大滑入', value: 'backInUp' },\r\n ],\r\n },\r\n {\r\n type: 'lightSpeed',\r\n name: '飞入',\r\n children: [\r\n { name: '从右飞入', value: 'lightSpeedInRight' },\r\n { name: '从左飞入', value: 'lightSpeedInLeft' },\r\n ],\r\n },\r\n]","\r\nimport { computed, defineComponent, ref } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTAnimation, PPTElement, Slide } from '@/types/slides'\r\nimport { ANIMATIONS } from '@/configs/animation'\r\nimport { ELEMENT_TYPE_ZH } from '@/configs/element'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport Draggable from 'vuedraggable'\r\n\r\nconst animationTypes: { [key: string]: string } = {}\r\nfor (const type of ANIMATIONS) {\r\n for (const animation of type.children) {\r\n animationTypes[animation.value] = animation.name\r\n }\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'element-animation-panel',\r\n components: {\r\n Draggable,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n const currentSlideAnimations = computed(() => store.getters.currentSlideAnimations)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const hoverPreviewAnimation = ref('')\r\n const animationPoolVisible = ref(false)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n const animations = ANIMATIONS\r\n\r\n // 当前页面的动画列表\r\n const animationSequence = computed(() => {\r\n if (!currentSlideAnimations.value) return []\r\n const animationSequence = []\r\n for (const animation of currentSlideAnimations.value) {\r\n const el = currentSlide.value.elements.find(el => el.id === animation.elId)\r\n if (!el) continue\r\n const elType = ELEMENT_TYPE_ZH[el.type]\r\n const animationType = animationTypes[animation.type]\r\n\r\n animationSequence.push({\r\n ...animation,\r\n elType,\r\n animationType,\r\n })\r\n }\r\n return animationSequence\r\n })\r\n\r\n // 当前选中元素的入场动画信息\r\n const handleElementAnimation = computed(() => {\r\n if (!handleElement.value) return null\r\n const animations = currentSlideAnimations.value || []\r\n const animation = animations.find(item => item.elId === handleElement.value.id)\r\n if (!animation) return null\r\n return animationTypes[animation.type]\r\n })\r\n\r\n // 删除元素入场动画\r\n const deleteAnimation = (elId: string) => {\r\n const animations = (currentSlideAnimations.value as PPTAnimation[]).filter(item => item.elId !== elId)\r\n store.commit(MutationTypes.UPDATE_SLIDE, { animations })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 拖拽修改入场动画顺序后同步数据\r\n const handleDragEnd = (eventData: { newIndex: number; oldIndex: number }) => {\r\n const { newIndex, oldIndex } = eventData\r\n if (oldIndex === newIndex) return\r\n\r\n const animations: PPTAnimation[] = JSON.parse(JSON.stringify(currentSlideAnimations.value))\r\n const animation = animations[oldIndex]\r\n animations.splice(oldIndex, 1)\r\n animations.splice(newIndex, 0, animation)\r\n \r\n store.commit(MutationTypes.UPDATE_SLIDE, { animations })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 执行入场动画预览\r\n const runAnimation = (elId: string, animationType: string) => {\r\n const prefix = 'animate__'\r\n const elRef = document.querySelector(`#editable-element-${elId} [class^=editable-element-]`)\r\n if (elRef) {\r\n const animationName = `${prefix}${animationType}`\r\n elRef.classList.add(`${prefix}animated`, animationName)\r\n\r\n const handleAnimationEnd = () => {\r\n elRef.classList.remove(`${prefix}animated`, animationName)\r\n }\r\n elRef.addEventListener('animationend', handleAnimationEnd, { once: true })\r\n }\r\n }\r\n\r\n // 修改元素入场动画,并执行一次预览\r\n const updateElementAnimation = (type: string) => {\r\n const animations = (currentSlideAnimations.value as PPTAnimation[]).map(item => {\r\n if (item.elId === handleElement.value.id) return { ...item, type }\r\n return item\r\n })\r\n store.commit(MutationTypes.UPDATE_SLIDE, { animations })\r\n animationPoolVisible.value = false\r\n addHistorySnapshot()\r\n\r\n runAnimation(handleElement.value.id, type)\r\n }\r\n\r\n // 添加元素入场动画,并执行一次预览\r\n const addAnimation = (type: string) => {\r\n if (handleElementAnimation.value) {\r\n updateElementAnimation(type)\r\n return\r\n }\r\n const animations: PPTAnimation[] = currentSlideAnimations.value ? JSON.parse(JSON.stringify(currentSlideAnimations.value)) : []\r\n animations.push({\r\n elId: handleElement.value.id,\r\n type,\r\n duration: 1000,\r\n })\r\n store.commit(MutationTypes.UPDATE_SLIDE, { animations })\r\n animationPoolVisible.value = false\r\n addHistorySnapshot()\r\n\r\n runAnimation(handleElement.value.id, type)\r\n }\r\n\r\n return {\r\n handleElement,\r\n animationPoolVisible,\r\n animations,\r\n animationSequence,\r\n hoverPreviewAnimation,\r\n handleElementAnimation,\r\n addAnimation,\r\n deleteAnimation,\r\n handleDragEnd,\r\n runAnimation,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ElementAnimationPanel.vue?vue&type=template&id=2a95eecd&scoped=true\"\nimport script from \"./ElementAnimationPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementAnimationPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementAnimationPanel.vue?vue&type=style&index=0&id=2a95eecd&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-2a95eecd\"\n\nexport default script","\r\n \r\n
背景填充
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n updateBackground({ color })\"\r\n />\r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
uploadBackgroundImage(files)\">\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
起点颜色:
\r\n
\r\n \r\n updateBackground({ gradientColor: [value, background.gradientColor[1]] })\"\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n
终点颜色:
\r\n
\r\n \r\n updateBackground({ gradientColor: [background.gradientColor[0], value] })\"\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n
渐变角度:
\r\n
updateBackground({ gradientRotate: value })\" \r\n />\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
画布尺寸:
\r\n
\r\n
\r\n\r\n
\r\n\r\n
全局主题
\r\n
\r\n
字体:
\r\n
\r\n
\r\n
\r\n
字体颜色:
\r\n
\r\n \r\n updateTheme({ fontColor: value })\"\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n
背景颜色:
\r\n
\r\n \r\n updateTheme({ backgroundColor: value })\"\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n
主题色:
\r\n
\r\n \r\n updateTheme({ themeColor: value })\"\r\n />\r\n \r\n \r\n \r\n
\r\n\r\n
预置主题:
\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","export const PRESET_THEMES = [\r\n { color: '#d14424', background: '#ffffff', text: '#333' },\r\n { color: '#42464b', background: '#ffffff', text: '#333' },\r\n { color: '#5d82ba', background: '#ffffff', text: '#333' },\r\n { color: '#005a6f', background: '#ffffff', text: '#333' },\r\n { color: '#d0614c', background: '#dfb044', text: '#333' },\r\n { color: '#86a1ad', background: '#dfdbd4', text: '#333' },\r\n { color: '#697586', background: '#d5c4a4', text: '#333' },\r\n { color: '#333333', background: '#7acfa6', text: '#333' },\r\n { color: '#42464b', background: '#415065', text: '#fff' },\r\n { color: '#0c5999', background: '#35a2cd', text: '#fff' },\r\n { color: '#c49a41', background: '#8c4357', text: '#fff' },\r\n { color: '#dfaa00', background: '#2e4e7d', text: '#fff' },\r\n { color: '#d1ad88', background: '#f99070', text: '#fff' },\r\n { color: '#464d52', background: '#657984', text: '#fff' },\r\n { color: '#ffcfb6', background: '#1e4c6f', text: '#fff' },\r\n { color: '#c3a043', background: '#43292a', text: '#fff' },\r\n { color: '#464d52', background: '#60546f', text: '#fff' },\r\n { color: '#df9636', background: '#5b89a0', text: '#fff' },\r\n { color: '#b898a4', background: '#93716b', text: '#fff' },\r\n { color: '#c47a11', background: '#187db1', text: '#fff' },\r\n { color: '#333333', background: '#759564', text: '#fff' },\r\n { color: '#355b5e', background: '#424b50', text: '#fff' },\r\n { color: '#d29090', background: '#942a32', text: '#fff' },\r\n { color: '#00cfdf', background: '#3b434d', text: '#fff' },\r\n { color: '#424246', background: '#c70042', text: '#fff' },\r\n { color: '#2e4155', background: '#b35d44', text: '#fff' },\r\n { color: '#11bfce', background: '#8f98aa', text: '#fff' },\r\n { color: '#333333', background: '#549688', text: '#fff' },\r\n]","\r\nimport { computed, defineComponent } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { Slide, SlideBackground, SlideTheme } from '@/types/slides'\r\nimport { PRESET_THEMES } from '@/configs/theme'\r\nimport { WEB_FONTS } from '@/configs/font'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport ColorButton from './common/ColorButton.vue'\r\nimport { getImageDataURL } from '@/utils/image'\r\n\r\nconst themes = PRESET_THEMES\r\nconst webFonts = WEB_FONTS\r\n\r\nexport default defineComponent({\r\n name: 'slide-style-panel',\r\n components: {\r\n ColorButton,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const slides = computed(() => store.state.slides)\r\n const theme = computed(() => store.state.theme)\r\n const availableFonts = computed(() => store.state.availableFonts)\r\n const viewportRatio = computed(() => store.state.viewportRatio)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const background = computed(() => {\r\n if (!currentSlide.value.background) {\r\n return {\r\n type: 'solid',\r\n value: '#fff',\r\n } as SlideBackground\r\n }\r\n return currentSlide.value.background\r\n })\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 设置背景模式:纯色、图片、渐变色\r\n const updateBackgroundType = (type: 'solid' | 'image' | 'gradient') => {\r\n if (type === 'solid') {\r\n const newBackground: SlideBackground = {\r\n ...background.value,\r\n type: 'solid',\r\n color: background.value.color || '#fff',\r\n }\r\n store.commit(MutationTypes.UPDATE_SLIDE, { background: newBackground })\r\n }\r\n else if (type === 'image') {\r\n const newBackground: SlideBackground = {\r\n ...background.value,\r\n type: 'image',\r\n image: background.value.image || '',\r\n imageSize: background.value.imageSize || 'cover',\r\n }\r\n store.commit(MutationTypes.UPDATE_SLIDE, { background: newBackground })\r\n }\r\n else {\r\n const newBackground: SlideBackground = {\r\n ...background.value,\r\n type: 'gradient',\r\n gradientType: background.value.gradientType || 'linear',\r\n gradientColor: background.value.gradientColor || ['#fff', '#fff'],\r\n gradientRotate: background.value.gradientRotate || 0,\r\n }\r\n store.commit(MutationTypes.UPDATE_SLIDE, { background: newBackground })\r\n }\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置背景图片\r\n const updateBackground = (props: Partial) => {\r\n store.commit(MutationTypes.UPDATE_SLIDE, { background: { ...background.value, ...props } })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 上传背景图片\r\n const uploadBackgroundImage = (files: File[]) => {\r\n const imageFile = files[0]\r\n if (!imageFile) return\r\n getImageDataURL(imageFile).then(dataURL => updateBackground({ image: dataURL }))\r\n }\r\n\r\n // 应用当前页背景到全部页面\r\n const applyBackgroundAllSlide = () => {\r\n const newSlides = slides.value.map(slide => {\r\n return {\r\n ...slide,\r\n background: currentSlide.value.background,\r\n }\r\n })\r\n store.commit(MutationTypes.SET_SLIDES, newSlides)\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置主题\r\n const updateTheme = (themeProps: Partial) => {\r\n store.commit(MutationTypes.SET_THEME, themeProps)\r\n }\r\n\r\n // 将当前主题应用到全部页面\r\n const applyThemeAllSlide = () => {\r\n const newSlides: Slide[] = JSON.parse(JSON.stringify(slides.value))\r\n const { themeColor, backgroundColor, fontColor } = theme.value\r\n\r\n for (const slide of newSlides) {\r\n if (!slide.background || slide.background.type !== 'image') {\r\n slide.background = {\r\n ...slide.background,\r\n type: 'solid',\r\n color: backgroundColor\r\n }\r\n }\r\n\r\n const elements = slide.elements\r\n for (const el of elements) {\r\n if (el.type === 'shape') el.fill = themeColor\r\n else if (el.type === 'line') el.color = themeColor\r\n else if (el.type === 'text') {\r\n if (el.fill) el.fill = themeColor\r\n }\r\n else if (el.type === 'table') {\r\n if (el.theme) el.theme.color = themeColor\r\n }\r\n else if (el.type === 'chart') {\r\n el.themeColor = themeColor\r\n el.gridColor = fontColor\r\n }\r\n }\r\n }\r\n store.commit(MutationTypes.SET_SLIDES, newSlides)\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置画布尺寸(宽高比例)\r\n const updateViewportRatio = (value: number) => {\r\n store.commit(MutationTypes.SET_VIEWPORT_RATIO, value)\r\n }\r\n\r\n return {\r\n availableFonts,\r\n background,\r\n updateBackgroundType,\r\n updateBackground,\r\n uploadBackgroundImage,\r\n applyBackgroundAllSlide,\r\n themes,\r\n theme,\r\n webFonts,\r\n updateTheme,\r\n applyThemeAllSlide,\r\n viewportRatio,\r\n updateViewportRatio,\r\n }\r\n },\r\n})\r\n","import { render } from \"./SlideStylePanel.vue?vue&type=template&id=2e49fc42&scoped=true\"\nimport script from \"./SlideStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./SlideStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./SlideStylePanel.vue?vue&type=style&index=0&id=2e49fc42&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-2e49fc42\"\n\nexport default script","\r\n \r\n
\r\n
\r\n
\r\n
{{item.label}}
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { Slide } from '@/types/slides'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default defineComponent({\r\n name: 'slide-animation-panel',\r\n setup() {\r\n const store = useStore()\r\n const slides = computed(() => store.state.slides)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const currentTurningMode = computed(() => currentSlide.value.turningMode || 'slideY')\r\n\r\n const animations = [\r\n { label: '无', value: 'no' },\r\n { label: '淡入淡出', value: 'fade' },\r\n { label: '左右推移', value: 'slideX' },\r\n { label: '上下推移', value: 'slideY' },\r\n ]\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 修改播放时的切换页面方式\r\n const updateTurningMode = (mode: string) => {\r\n if (mode === currentTurningMode.value) return\r\n store.commit(MutationTypes.UPDATE_SLIDE, { turningMode: mode })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 将当前页的切换页面方式应用到全部页面\r\n const applyAllSlide = () => {\r\n const newSlides = slides.value.map(slide => {\r\n return {\r\n ...slide,\r\n turningMode: currentSlide.value.turningMode,\r\n }\r\n })\r\n store.commit(MutationTypes.SET_SLIDES, newSlides)\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n currentTurningMode,\r\n animations,\r\n updateTurningMode,\r\n applyAllSlide,\r\n }\r\n },\r\n})\r\n","import { render } from \"./SlideAnimationPanel.vue?vue&type=template&id=6e3028f1&scoped=true\"\nimport script from \"./SlideAnimationPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./SlideAnimationPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./SlideAnimationPanel.vue?vue&type=style&index=0&id=6e3028f1&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-6e3028f1\"\n\nexport default script","\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
2\">\r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement, Slide } from '@/types/slides'\r\nimport { ElementAlignCommand, ElementAlignCommands } from '@/types/edit'\r\nimport { getElementListRange, getRectRotatedOffset } from '@/utils/element'\r\nimport useHistorySnapshot from './useHistorySnapshot'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const activeElementList = computed(() => store.getters.activeElementList)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n /**\r\n * 对齐选中的元素\r\n * @param command 对齐方向\r\n */\r\n const alignActiveElement = (command: ElementAlignCommand) => {\r\n const { minX, maxX, minY, maxY } = getElementListRange(activeElementList.value)\r\n const elementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\r\n\r\n // 如果所选择的元素为组合元素的成员,需要计算该组合的整体范围\r\n const groupElementRangeMap = {}\r\n for (const activeElement of activeElementList.value) {\r\n if (activeElement.groupId && !groupElementRangeMap[activeElement.groupId]) {\r\n const groupElements = activeElementList.value.filter(item => item.groupId === activeElement.groupId)\r\n groupElementRangeMap[activeElement.groupId] = getElementListRange(groupElements)\r\n }\r\n }\r\n\r\n // 根据不同的命令,计算对齐的位置\r\n if (command === ElementAlignCommands.LEFT) {\r\n elementList.forEach(element => {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n if (!element.groupId) {\r\n if ('rotate' in element && element.rotate) {\r\n const { offsetX } = getRectRotatedOffset({\r\n left: element.left,\r\n top: element.top,\r\n width: element.width,\r\n height: element.height,\r\n rotate: element.rotate,\r\n })\r\n element.left = minX - offsetX\r\n }\r\n else element.left = minX\r\n }\r\n else {\r\n const range = groupElementRangeMap[element.groupId]\r\n const offset = range.minX - minX\r\n element.left = element.left - offset\r\n }\r\n }\r\n })\r\n }\r\n else if (command === ElementAlignCommands.RIGHT) {\r\n elementList.forEach(element => {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n if (!element.groupId) {\r\n const elWidth = element.type === 'line' ? Math.max(element.start[0], element.end[0]) : element.width\r\n if ('rotate' in element && element.rotate) {\r\n const { offsetX } = getRectRotatedOffset({\r\n left: element.left,\r\n top: element.top,\r\n width: element.width,\r\n height: element.height,\r\n rotate: element.rotate,\r\n })\r\n element.left = maxX - elWidth + offsetX\r\n }\r\n else element.left = maxX - elWidth\r\n }\r\n else {\r\n const range = groupElementRangeMap[element.groupId]\r\n const offset = range.maxX - maxX\r\n element.left = element.left - offset\r\n }\r\n }\r\n })\r\n }\r\n else if (command === ElementAlignCommands.TOP) {\r\n elementList.forEach(element => {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n if (!element.groupId) {\r\n if ('rotate' in element && element.rotate) {\r\n const { offsetY } = getRectRotatedOffset({\r\n left: element.left,\r\n top: element.top,\r\n width: element.width,\r\n height: element.height,\r\n rotate: element.rotate,\r\n })\r\n element.top = minY - offsetY\r\n }\r\n else element.top = minY\r\n }\r\n else {\r\n const range = groupElementRangeMap[element.groupId]\r\n const offset = range.minY - minY\r\n element.top = element.top - offset\r\n }\r\n }\r\n })\r\n }\r\n else if (command === ElementAlignCommands.BOTTOM) {\r\n elementList.forEach(element => {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n if (!element.groupId) {\r\n const elHeight = element.type === 'line' ? Math.max(element.start[1], element.end[1]) : element.height\r\n if ('rotate' in element && element.rotate) {\r\n const { offsetY } = getRectRotatedOffset({\r\n left: element.left,\r\n top: element.top,\r\n width: element.width,\r\n height: element.height,\r\n rotate: element.rotate,\r\n })\r\n element.top = maxY - elHeight + offsetY\r\n }\r\n else element.top = maxY - elHeight\r\n }\r\n else {\r\n const range = groupElementRangeMap[element.groupId]\r\n const offset = range.maxY - maxY\r\n element.top = element.top - offset\r\n }\r\n }\r\n })\r\n }\r\n else if (command === ElementAlignCommands.HORIZONTAL) {\r\n const horizontalCenter = (minX + maxX) / 2\r\n elementList.forEach(element => {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n if (!element.groupId) {\r\n const elWidth = element.type === 'line' ? Math.max(element.start[0], element.end[0]) : element.width\r\n element.left = horizontalCenter - elWidth / 2\r\n }\r\n else {\r\n const range = groupElementRangeMap[element.groupId]\r\n const center = (range.maxX + range.minX) / 2\r\n const offset = center - horizontalCenter\r\n element.left = element.left - offset\r\n }\r\n }\r\n })\r\n }\r\n else if (command === ElementAlignCommands.VERTICAL) {\r\n const verticalCenter = (minY + maxY) / 2\r\n elementList.forEach(element => {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n if (!element.groupId) {\r\n const elHeight = element.type === 'line' ? Math.max(element.start[1], element.end[1]) : element.height\r\n element.top = verticalCenter - elHeight / 2\r\n }\r\n else {\r\n const range = groupElementRangeMap[element.groupId]\r\n const center = (range.maxY + range.minY) / 2\r\n const offset = center - verticalCenter\r\n element.top = element.top - offset\r\n }\r\n }\r\n })\r\n }\r\n \r\n store.commit(MutationTypes.UPDATE_SLIDE, { 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 { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement, Slide } from '@/types/slides'\r\nimport { getElementRange, getElementListRange, getRectRotatedOffset } from '@/utils/element'\r\nimport useHistorySnapshot from './useHistorySnapshot'\r\n\r\ninterface SortedElementData {\r\n el: PPTElement;\r\n pos: number;\r\n}\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const activeElementList = computed(() => store.getters.activeElementList)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\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 copyOfActiveElementList.sort((elementA, elementB) => {\r\n const { minX: elAMinX } = getElementRange(elementA)\r\n const { minX: elBMinX } = getElementRange(elementB)\r\n return elAMinX - elBMinX\r\n })\r\n\r\n // 计算元素均匀分布所需要的间隔:\r\n // (所选元素整体范围 - 所有所选元素宽度和) / (所选元素数 - 1)\r\n let totalWidth = 0\r\n for (const element of activeElementList.value) {\r\n const { minX: elMinX, maxX: elMaxX } = getElementRange(element)\r\n totalWidth += (elMaxX - elMinX)\r\n }\r\n const span = ((maxX - minX) - totalWidth) / (activeElementList.value.length - 1)\r\n\r\n // 将所选元素按位置顺序依次计算目标位置\r\n // 注意pos并非元素目标left值,而是目标位置范围最小值(元素旋转后的left值 ≠ 范围最小值)\r\n const sortedElementData: SortedElementData[] = []\r\n for (const element of copyOfActiveElementList) {\r\n if (!sortedElementData.length) {\r\n const { minX: firstElMinX } = getElementRange(element)\r\n sortedElementData.push({ el: element, pos: firstElMinX })\r\n continue\r\n }\r\n \r\n const lastItemElement = sortedElementData[sortedElementData.length - 1].el\r\n const lastItemPos = sortedElementData[sortedElementData.length - 1].pos\r\n const { minX: lastElementMinX, maxX: lastElementMaxX } = getElementRange(lastItemElement)\r\n const lastElementWidth = lastElementMaxX - lastElementMinX\r\n \r\n sortedElementData.push({ el: element, pos: lastItemPos + lastElementWidth + span })\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 store.commit(MutationTypes.UPDATE_SLIDE, { 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 copyOfActiveElementList.sort((elementA, elementB) => {\r\n const { minY: elAMinY } = getElementRange(elementA)\r\n const { minY: elBMinY } = getElementRange(elementB)\r\n return elAMinY - elBMinY\r\n })\r\n\r\n let totalHeight = 0\r\n for (const element of activeElementList.value) {\r\n const { minY: elMinY, maxY: elMaxY } = getElementRange(element)\r\n totalHeight += (elMaxY - elMinY)\r\n }\r\n const span = ((maxY - minY) - totalHeight) / (activeElementList.value.length - 1)\r\n\r\n const sortedElementData: SortedElementData[] = []\r\n for (const element of copyOfActiveElementList) {\r\n if (!sortedElementData.length) {\r\n const { minY: firstElMinY } = getElementRange(element)\r\n sortedElementData.push({ el: element, pos: firstElMinY })\r\n continue\r\n }\r\n \r\n const lastItemElement = sortedElementData[sortedElementData.length - 1].el\r\n const lastItemPos = sortedElementData[sortedElementData.length - 1].pos\r\n const { minY: lastElementMinY, maxY: lastElementMaxY } = getElementRange(lastItemElement)\r\n const lastElementHeight = lastElementMaxY - lastElementMinY\r\n \r\n sortedElementData.push({ el: element, pos: lastItemPos + lastElementHeight + span })\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 store.commit(MutationTypes.UPDATE_SLIDE, { elements: newElementList })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n uniformHorizontalDisplay,\r\n uniformVerticalDisplay,\r\n }\r\n}","\r\nimport { computed, defineComponent } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { PPTElement } from '@/types/slides'\r\nimport useCombineElement from '@/hooks/useCombineElement'\r\nimport useAlignActiveElement from '@/hooks/useAlignActiveElement'\r\nimport useUniformDisplayElement from '@/hooks/useUniformDisplayElement'\r\n\r\nexport default defineComponent({\r\n name: 'multi-position-panel',\r\n setup() {\r\n const store = useStore()\r\n const activeElementList = computed(() => store.getters.activeElementList)\r\n\r\n const { combineElements, uncombineElements } = useCombineElement()\r\n const { alignActiveElement } = useAlignActiveElement()\r\n const { uniformHorizontalDisplay, uniformVerticalDisplay } = useUniformDisplayElement()\r\n\r\n // 判断当前多选的几个元素是否可以组合\r\n const canCombine = computed(() => {\r\n const firstGroupId = activeElementList.value[0].groupId\r\n if (!firstGroupId) return true\r\n\r\n const inSameGroup = activeElementList.value.every(el => (el.groupId && el.groupId) === firstGroupId)\r\n return !inSameGroup\r\n })\r\n\r\n return {\r\n activeElementList,\r\n canCombine,\r\n combineElements,\r\n uncombineElements,\r\n alignActiveElement,\r\n uniformHorizontalDisplay,\r\n uniformVerticalDisplay,\r\n }\r\n },\r\n})\r\n","import { render } from \"./MultiPositionPanel.vue?vue&type=template&id=153f2e6e&scoped=true\"\nimport script from \"./MultiPositionPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./MultiPositionPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./MultiPositionPanel.vue?vue&type=style&index=0&id=153f2e6e&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-153f2e6e\"\n\nexport default script","\r\nimport { computed, defineComponent, watch } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { ToolbarState, ToolbarStates } from '@/types/toolbar'\r\n\r\nimport ElementStylePanel from './ElementStylePanel/index.vue'\r\nimport ElementPositionPanel from './ElementPositionPanel.vue'\r\nimport ElementAnimationPanel from './ElementAnimationPanel.vue'\r\nimport SlideStylePanel from './SlideStylePanel.vue'\r\nimport SlideAnimationPanel from './SlideAnimationPanel.vue'\r\nimport MultiPositionPanel from './MultiPositionPanel.vue'\r\n\r\nexport default defineComponent({\r\n name: 'toolbar',\r\n setup() {\r\n const store = useStore()\r\n const toolbarState = computed(() => store.state.toolbarState)\r\n\r\n const elementTabs = [\r\n { label: '样式', value: ToolbarStates.EL_STYLE },\r\n { label: '位置', value: ToolbarStates.EL_POSITION },\r\n { label: '动画', value: ToolbarStates.EL_ANIMATION },\r\n ]\r\n const slideTabs = [\r\n { label: '页面样式', value: ToolbarStates.SLIDE_STYLE },\r\n { label: '切换', value: ToolbarStates.SLIDE_ANIMATION },\r\n { label: '动画', value: ToolbarStates.EL_ANIMATION },\r\n ]\r\n const multiSelectTabs = [\r\n { label: '位置', value: ToolbarStates.MULTI_POSITION },\r\n { label: '样式', value: ToolbarStates.EL_STYLE },\r\n ]\r\n\r\n const setToolbarState = (value: ToolbarState) => {\r\n store.commit(MutationTypes.SET_TOOLBAR_STATE, value)\r\n }\r\n\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const currentTabs = computed(() => {\r\n if (!activeElementIdList.value.length) return slideTabs\r\n else if (activeElementIdList.value.length > 1) return multiSelectTabs\r\n return elementTabs\r\n })\r\n\r\n watch(currentTabs, () => {\r\n const currentTabsValue = currentTabs.value.map(tab => tab.value)\r\n if (!currentTabsValue.includes(toolbarState.value)) {\r\n store.commit(MutationTypes.SET_TOOLBAR_STATE, currentTabsValue[0])\r\n }\r\n })\r\n\r\n const currentPanelComponent = computed(() => {\r\n const panelMap = {\r\n [ToolbarStates.EL_STYLE]: ElementStylePanel,\r\n [ToolbarStates.EL_POSITION]: ElementPositionPanel,\r\n [ToolbarStates.EL_ANIMATION]: ElementAnimationPanel,\r\n [ToolbarStates.SLIDE_STYLE]: SlideStylePanel,\r\n [ToolbarStates.SLIDE_ANIMATION]: SlideAnimationPanel,\r\n [ToolbarStates.MULTI_POSITION]: MultiPositionPanel,\r\n }\r\n return panelMap[toolbarState.value] || null\r\n })\r\n\r\n return {\r\n toolbarState,\r\n currentTabs,\r\n setToolbarState,\r\n currentPanelComponent,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=f790671e&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=f790671e&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-f790671e\"\n\nexport default script","\r\n \r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { Slide } from '@/types/slides'\r\n\r\nexport default defineComponent({\r\n name: 'remark',\r\n props: {\r\n height: {\r\n type: Number,\r\n required: true,\r\n },\r\n },\r\n setup(props, { emit }) {\r\n const store = useStore()\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n const remark = computed(() => currentSlide.value?.remark || '')\r\n\r\n const handleInput = (e: InputEvent) => {\r\n const value = (e.target as HTMLTextAreaElement).value\r\n store.commit(MutationTypes.UPDATE_SLIDE, { remark: value })\r\n }\r\n\r\n const resize = (e: MouseEvent) => {\r\n let isMouseDown = true\r\n const startPageY = e.pageY\r\n const originHeight = props.height\r\n\r\n document.onmousemove = e => {\r\n if (!isMouseDown) return\r\n\r\n const currentPageY = e.pageY\r\n\r\n const moveY = currentPageY - startPageY\r\n let newHeight = -moveY + originHeight\r\n\r\n if (newHeight < 40) newHeight = 40\r\n if (newHeight > 120) newHeight = 120\r\n\r\n emit('update:height', newHeight)\r\n }\r\n\r\n document.onmouseup = () => {\r\n isMouseDown = false\r\n document.onmousemove = null\r\n document.onmouseup = null\r\n }\r\n }\r\n\r\n return {\r\n remark,\r\n handleInput,\r\n resize,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=89372f4a&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=89372f4a&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-89372f4a\"\n\nexport default script","\r\nimport { defineComponent, ref } from 'vue'\r\n\r\nimport useGlobalHotkey from '@/hooks/useGlobalHotkey'\r\nimport usePasteEvent from '@/hooks/usePasteEvent'\r\n\r\nimport EditorHeader from './EditorHeader/index.vue'\r\nimport Canvas from './Canvas/index.vue'\r\nimport CanvasTool from './CanvasTool/index.vue'\r\nimport Thumbnails from './Thumbnails/index.vue'\r\nimport Toolbar from './Toolbar/index.vue'\r\nimport Remark from './Remark/index.vue'\r\n\r\nexport default defineComponent({\r\n name: 'editor',\r\n components: {\r\n EditorHeader,\r\n Canvas,\r\n CanvasTool,\r\n Thumbnails,\r\n Toolbar,\r\n Remark,\r\n },\r\n setup() {\r\n const remarkHeight = ref(40)\r\n\r\n useGlobalHotkey()\r\n usePasteEvent()\r\n\r\n return {\r\n remarkHeight,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=55178b6a&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=55178b6a&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-55178b6a\"\n\nexport default script","\r\n \r\n
mousewheelListener($event)\"\r\n v-contextmenu=\"contextmenus\"\r\n >\r\n
slideIndex,\r\n 'hide': (index === slideIndex - 1 || index === slideIndex + 1) && slide.turningMode !== currentSlide.turningMode,\r\n }\r\n ]\"\r\n v-for=\"(slide, index) in slides\" \r\n :key=\"slide.id\"\r\n >\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n {{slideIndex + 1}} / {{slides.length}}\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\n \r\n\r\n\r\n\r\n\r\n","\r\n \r\n \r\n
\r\n\r\n\r\n","\r\n \r\n\r\n\r\n\r\n\r\n\r\n","\r\nimport { defineComponent, PropType } from 'vue'\r\nimport { PPTChartElement } from '@/types/slides'\r\n\r\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\r\nimport Chart from './Chart.vue'\r\n\r\nexport default defineComponent({\r\n name: 'screen-element-chart',\r\n components: {\r\n ElementOutline,\r\n Chart,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n },\r\n})\r\n","import { render } from \"./ScreenChartElement.vue?vue&type=template&id=1423f8c2&scoped=true\"\nimport script from \"./ScreenChartElement.vue?vue&type=script&lang=ts\"\nexport * from \"./ScreenChartElement.vue?vue&type=script&lang=ts\"\n\nimport \"./ScreenChartElement.vue?vue&type=style&index=0&id=1423f8c2&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-1423f8c2\"\n\nexport default script","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { ElementTypes, PPTElement, Slide } from '@/types/slides'\r\n\r\nimport BaseImageElement from '@/views/components/element/ImageElement/BaseImageElement.vue'\r\nimport BaseTextElement from '@/views/components/element/TextElement/BaseTextElement.vue'\r\nimport BaseShapeElement from '@/views/components/element/ShapeElement/BaseShapeElement.vue'\r\nimport BaseLineElement from '@/views/components/element/LineElement/BaseLineElement.vue'\r\nimport ScreenChartElement from '@/views/components/element/ChartElement/ScreenChartElement.vue'\r\nimport BaseTableElement from '@/views/components/element/TableElement/BaseTableElement.vue'\r\n\r\nexport default defineComponent({\r\n name: 'screen-element',\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n elementIndex: {\r\n type: Number,\r\n required: true,\r\n },\r\n animationIndex: {\r\n type: Number,\r\n default: -1,\r\n },\r\n },\r\n setup(props) {\r\n const currentElementComponent = computed(() => {\r\n const elementTypeMap = {\r\n [ElementTypes.IMAGE]: BaseImageElement,\r\n [ElementTypes.TEXT]: BaseTextElement,\r\n [ElementTypes.SHAPE]: BaseShapeElement,\r\n [ElementTypes.LINE]: BaseLineElement,\r\n [ElementTypes.CHART]: ScreenChartElement,\r\n [ElementTypes.TABLE]: BaseTableElement,\r\n }\r\n return elementTypeMap[props.elementInfo.type] || null\r\n })\r\n\r\n const store = useStore()\r\n const theme = computed(() => store.state.theme)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n // 判断元素是否需要等待执行入场动画:等待执行的元素需要先隐藏\r\n const needWaitAnimation = computed(() => {\r\n const animations = currentSlide.value.animations || []\r\n const elementIndexInAnimation = animations.findIndex(animation => animation.elId === props.elementInfo.id)\r\n if (elementIndexInAnimation !== -1 && elementIndexInAnimation >= props.animationIndex) return true\r\n return false \r\n })\r\n\r\n return {\r\n currentElementComponent,\r\n needWaitAnimation,\r\n theme,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ScreenElement.vue?vue&type=template&id=6490813d\"\nimport script from \"./ScreenElement.vue?vue&type=script&lang=ts\"\nexport * from \"./ScreenElement.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\nimport { computed, PropType, defineComponent } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { Slide } from '@/types/slides'\r\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\r\nimport useSlideBackgroundStyle from '@/hooks/useSlideBackgroundStyle'\r\n\r\nimport ScreenElement from './ScreenElement.vue'\r\n\r\nexport default defineComponent({\r\n name: 'screen-slide',\r\n components: {\r\n ScreenElement,\r\n },\r\n props: {\r\n slide: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n scale: {\r\n type: Number,\r\n required: true,\r\n },\r\n animationIndex: {\r\n type: Number,\r\n default: -1,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const viewportRatio = computed(() => store.state.viewportRatio)\r\n\r\n const background = computed(() => props.slide.background)\r\n const { backgroundStyle } = useSlideBackgroundStyle(background)\r\n\r\n return {\r\n backgroundStyle,\r\n VIEWPORT_SIZE,\r\n viewportRatio,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ScreenSlide.vue?vue&type=template&id=a094625a&scoped=true\"\nimport script from \"./ScreenSlide.vue?vue&type=script&lang=ts\"\nexport * from \"./ScreenSlide.vue?vue&type=script&lang=ts\"\n\nimport \"./ScreenSlide.vue?vue&type=style&index=0&id=a094625a&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-a094625a\"\n\nexport default script","\r\n \r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { useStore } from '@/store'\r\n\r\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\r\n\r\nexport default defineComponent({\r\n name: 'slide-thumbnails',\r\n components: {\r\n ThumbnailSlide,\r\n },\r\n props: {\r\n turnSlideToIndex: {\r\n type: Function as PropType<(index: number) => void>,\r\n },\r\n },\r\n setup(props, { emit }) {\r\n const store = useStore()\r\n const slides = computed(() => store.state.slides)\r\n const slideIndex = computed(() => store.state.slideIndex)\r\n\r\n const close = () => emit('close')\r\n\r\n return {\r\n slides,\r\n slideIndex,\r\n close,\r\n }\r\n },\r\n})\r\n","import { render } from \"./SlideThumbnails.vue?vue&type=template&id=9174b3bc&scoped=true\"\nimport script from \"./SlideThumbnails.vue?vue&type=script&lang=ts\"\nexport * from \"./SlideThumbnails.vue?vue&type=script&lang=ts\"\n\nimport \"./SlideThumbnails.vue?vue&type=style&index=0&id=9174b3bc&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-9174b3bc\"\n\nexport default script","\r\n \r\n\r\n\r\n\r\n\r\n","\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { defineComponent, onMounted, PropType, reactive, ref } from 'vue'\r\n\r\nconst penSize = 6\r\nconst rubberSize = 80\r\n\r\nexport default defineComponent({\r\n name: 'writing-board',\r\n props: {\r\n color: {\r\n type: String,\r\n default: '#ffcc00',\r\n },\r\n model: {\r\n type: String as PropType<'pen' | 'eraser'>,\r\n default: 'pen',\r\n },\r\n },\r\n setup(props) {\r\n let ctx: CanvasRenderingContext2D | null = null\r\n const writingBoardRef = ref()\r\n const canvasRef = ref()\r\n\r\n let lastPos = {\r\n x: 0,\r\n y: 0,\r\n }\r\n let isMouseDown = false\r\n let lastTime = 0\r\n let lastLineWidth = -1\r\n\r\n // 鼠标位置坐标:用于画笔或橡皮位置跟随\r\n const mouse = reactive({\r\n x: 0,\r\n y: 0,\r\n })\r\n // 更新鼠标位置坐标\r\n const updateMousePosition = (e: MouseEvent) => {\r\n mouse.x = e.pageX\r\n mouse.y = e.pageY\r\n }\r\n \r\n // 鼠标是否处在画布范围内:处在范围内才会显示画笔或橡皮\r\n const mouseInCanvas = ref(false)\r\n\r\n\r\n // 初始化画布\r\n const initCanvas = () => {\r\n if (!canvasRef.value || !writingBoardRef.value) return\r\n\r\n ctx = canvasRef.value.getContext('2d')\r\n if (!ctx) return\r\n\r\n canvasRef.value.width = writingBoardRef.value.clientWidth\r\n canvasRef.value.height = writingBoardRef.value.clientHeight\r\n\r\n canvasRef.value.style.width = writingBoardRef.value.clientWidth + 'px'\r\n canvasRef.value.style.height = writingBoardRef.value.clientHeight + 'px'\r\n\r\n ctx.lineCap = 'round'\r\n ctx.lineJoin = 'round'\r\n }\r\n onMounted(initCanvas)\r\n\r\n // 绘制画笔墨迹方法\r\n const draw = (posX: number, posY: number, lineWidth: number) => {\r\n if (!ctx) return\r\n\r\n const lastPosX = lastPos.x\r\n const lastPosY = lastPos.y\r\n\r\n ctx.lineWidth = lineWidth\r\n ctx.strokeStyle = props.color\r\n ctx.beginPath()\r\n ctx.moveTo(lastPosX, lastPosY)\r\n ctx.lineTo(posX, posY)\r\n ctx.stroke()\r\n ctx.closePath()\r\n }\r\n\r\n // 擦除墨迹方法\r\n const erase = (posX: number, posY: number) => {\r\n if (!ctx || !canvasRef.value) return\r\n const lastPosX = lastPos.x\r\n const lastPosY = lastPos.y\r\n\r\n const radius = rubberSize / 2\r\n\r\n const sinRadius = radius * Math.sin(Math.atan((posY - lastPosY) / (posX - lastPosX)))\r\n const cosRadius = radius * Math.cos(Math.atan((posY - lastPosY) / (posX - lastPosX)))\r\n const rectPoint1: [number, number] = [lastPosX + sinRadius, lastPosY - cosRadius]\r\n const rectPoint2: [number, number] = [lastPosX - sinRadius, lastPosY + cosRadius]\r\n const rectPoint3: [number, number] = [posX + sinRadius, posY - cosRadius]\r\n const rectPoint4: [number, number] = [posX - sinRadius, posY + cosRadius]\r\n\r\n ctx.save()\r\n ctx.beginPath()\r\n ctx.arc(posX, posY, radius, 0, Math.PI * 2)\r\n ctx.clip()\r\n ctx.clearRect(0, 0, canvasRef.value.width, canvasRef.value.height)\r\n ctx.restore()\r\n\r\n ctx.save()\r\n ctx.beginPath()\r\n ctx.moveTo(...rectPoint1)\r\n ctx.lineTo(...rectPoint3)\r\n ctx.lineTo(...rectPoint4)\r\n ctx.lineTo(...rectPoint2)\r\n ctx.closePath()\r\n ctx.clip()\r\n ctx.clearRect(0, 0, canvasRef.value.width, canvasRef.value.height)\r\n ctx.restore()\r\n }\r\n\r\n // 准备开始绘制/擦除墨迹(落笔)\r\n const handleMousedown = (e: MouseEvent) => {\r\n isMouseDown = true\r\n lastPos = { x: e.offsetX, y: e.offsetY }\r\n lastTime = new Date().getTime()\r\n }\r\n\r\n // 计算鼠标两次移动之间的距离\r\n const getDistance = (posX: number, posY: number) => {\r\n const lastPosX = lastPos.x\r\n const lastPosY = lastPos.y\r\n return Math.sqrt((posX - lastPosX) * (posX - lastPosX) + (posY - lastPosY) * (posY - lastPosY))\r\n }\r\n\r\n // 根据鼠标两次移动之间的距离s和时间t计算绘制速度,速度越快,墨迹越细\r\n const getLineWidth = (s: number, t: number) => {\r\n const maxV = 10\r\n const minV = 0.1\r\n const maxWidth = penSize\r\n const minWidth = 3\r\n const v = s / t\r\n let lineWidth\r\n\r\n if (v <= minV) lineWidth = maxWidth\r\n else if (v >= maxV) lineWidth = minWidth\r\n else lineWidth = maxWidth - v / maxV * maxWidth\r\n\r\n if (lastLineWidth === -1) return lineWidth\r\n return lineWidth * 1 / 3 + lastLineWidth * 2 / 3\r\n }\r\n\r\n // 开始绘制/擦除墨迹(移动)\r\n const handleMousemove = (e: MouseEvent) => {\r\n updateMousePosition(e)\r\n\r\n if (!isMouseDown) return\r\n \r\n const time = new Date().getTime()\r\n\r\n if (props.model === 'pen') {\r\n const s = getDistance(e.offsetX, e.offsetY)\r\n const t = time - lastTime\r\n const lineWidth = getLineWidth(s, t)\r\n \r\n draw(e.offsetX, e.offsetY, lineWidth)\r\n lastLineWidth = lineWidth\r\n }\r\n else erase(e.offsetX, e.offsetY)\r\n\r\n lastPos = { x: e.offsetX, y: e.offsetY }\r\n lastTime = new Date().getTime()\r\n }\r\n\r\n // 结束绘制/擦除墨迹(停笔)\r\n const handleMouseup = () => {\r\n if (!isMouseDown) return\r\n isMouseDown = false\r\n }\r\n\r\n // 清空画布\r\n const clearCanvas = () => {\r\n if (!ctx || !canvasRef.value) return\r\n ctx.clearRect(0, 0, canvasRef.value.width, canvasRef.value.height)\r\n }\r\n\r\n return {\r\n mouse,\r\n mouseInCanvas,\r\n penSize,\r\n rubberSize,\r\n writingBoardRef,\r\n canvasRef,\r\n handleMousedown,\r\n handleMousemove,\r\n handleMouseup,\r\n clearCanvas,\r\n }\r\n },\r\n})\r\n","import { render } from \"./WritingBoard.vue?vue&type=template&id=4ddc4b2c&scoped=true\"\nimport script from \"./WritingBoard.vue?vue&type=script&lang=ts\"\nexport * from \"./WritingBoard.vue?vue&type=script&lang=ts\"\n\nimport \"./WritingBoard.vue?vue&type=style&index=0&id=4ddc4b2c&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-4ddc4b2c\"\n\nexport default script","\r\nimport { defineComponent, ref } from 'vue'\r\nimport WritingBoard from '@/components/WritingBoard.vue'\r\n\r\nconst writingBoardColors = ['#000000', '#ffffff', '#1e497b', '#4e81bb', '#e2534d', '#9aba60', '#8165a0', '#47acc5', '#f9974c']\r\n\r\nexport default defineComponent({\r\n name: 'writing-board-tool',\r\n components: {\r\n WritingBoard,\r\n },\r\n setup(props, { emit }) {\r\n const writingBoardRef = ref()\r\n const writingBoardColor = ref('#e2534d')\r\n const writingBoardModel = ref('pen')\r\n\r\n // 切换到画笔状态\r\n const changePen = () => {\r\n writingBoardModel.value = 'pen'\r\n }\r\n\r\n // 切换到橡皮状态\r\n const changeEraser = () => {\r\n writingBoardModel.value = 'eraser'\r\n }\r\n\r\n // 清除画布上的墨迹\r\n const clearCanvas = () => {\r\n writingBoardRef.value.clearCanvas()\r\n }\r\n\r\n // 修改画笔颜色,如果当前不处于画笔状态则先切换到画笔状态\r\n const changeColor = (color: string) => {\r\n if (writingBoardModel.value !== 'pen') writingBoardModel.value = 'pen'\r\n writingBoardColor.value = color\r\n }\r\n \r\n // 关闭写字板\r\n const closeWritingBoard = () => {\r\n emit('close')\r\n }\r\n\r\n return {\r\n writingBoardRef,\r\n writingBoardColors,\r\n writingBoardColor,\r\n writingBoardModel,\r\n changePen,\r\n changeEraser,\r\n clearCanvas,\r\n changeColor,\r\n closeWritingBoard,\r\n }\r\n },\r\n})\r\n","import { render } from \"./WritingBoardTool.vue?vue&type=template&id=f34025bc&scoped=true\"\nimport script from \"./WritingBoardTool.vue?vue&type=script&lang=ts\"\nexport * from \"./WritingBoardTool.vue?vue&type=script&lang=ts\"\n\nimport \"./WritingBoardTool.vue?vue&type=style&index=0&id=f34025bc&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-f34025bc\"\n\nexport default script","\r\nimport { computed, defineComponent, onMounted, onUnmounted, provide, ref } from 'vue'\r\nimport throttle from 'lodash/throttle'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { Slide } from '@/types/slides'\r\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\r\nimport { KEYS } from '@/configs/hotkey'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\nimport { isFullscreen } from '@/utils/fullscreen'\r\nimport useScreening from '@/hooks/useScreening'\r\n\r\nimport { message } from 'ant-design-vue'\r\n\r\nimport ScreenSlide from './ScreenSlide.vue'\r\nimport SlideThumbnails from './SlideThumbnails.vue'\r\nimport WritingBoardTool from './WritingBoardTool.vue'\r\n\r\nexport default defineComponent({\r\n name: 'screen',\r\n components: {\r\n ScreenSlide,\r\n SlideThumbnails,\r\n WritingBoardTool,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const slides = computed(() => store.state.slides)\r\n const slideIndex = computed(() => store.state.slideIndex)\r\n const viewportRatio = computed(() => store.state.viewportRatio)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const slideWidth = ref(0)\r\n const slideHeight = ref(0)\r\n\r\n const scale = computed(() => slideWidth.value / VIEWPORT_SIZE)\r\n\r\n const showPageNumber = ref(false)\r\n\r\n const slideThumbnailModelVisible = ref(false)\r\n\r\n const writingBoardToolVisible = ref(false)\r\n\r\n // 计算和更新幻灯片内容的尺寸(按比例自适应屏幕)\r\n const setSlideContentSize = () => {\r\n const winWidth = document.body.clientWidth\r\n const winHeight = document.body.clientHeight\r\n let width, height\r\n\r\n if (winHeight / winWidth === viewportRatio.value) {\r\n width = winWidth\r\n height = winHeight\r\n }\r\n else if (winHeight / winWidth > viewportRatio.value) {\r\n width = winWidth\r\n height = winWidth * viewportRatio.value\r\n }\r\n else {\r\n width = winHeight / viewportRatio.value\r\n height = winHeight\r\n }\r\n slideWidth.value = width\r\n slideHeight.value = height\r\n }\r\n\r\n // 窗口尺寸变化监听:窗口发生变化时更新幻灯片的大小\r\n // 如果退出了全屏,需要返回到编辑模式\r\n const { exitScreening } = useScreening()\r\n\r\n const windowResizeListener = () => {\r\n setSlideContentSize()\r\n if (!isFullscreen()) exitScreening()\r\n }\r\n\r\n onMounted(() => {\r\n window.addEventListener('resize', windowResizeListener)\r\n })\r\n onUnmounted(() => {\r\n window.removeEventListener('resize', windowResizeListener)\r\n })\r\n\r\n // 当前页的元素动画列表和当前执行到的位置\r\n const animations = computed(() => currentSlide.value.animations || [])\r\n const animationIndex = ref(0)\r\n\r\n // 执行元素的入场动画\r\n const runAnimation = () => {\r\n const prefix = 'animate__'\r\n const animation = animations.value[animationIndex.value]\r\n animationIndex.value += 1\r\n\r\n const elRef = document.querySelector(`#screen-element-${animation.elId} [class^=base-element-]`)\r\n if (elRef) {\r\n const animationName = `${prefix}${animation.type}`\r\n elRef.classList.add(`${prefix}animated`, animationName)\r\n\r\n const handleAnimationEnd = () => {\r\n elRef.classList.remove(`${prefix}animated`, animationName)\r\n }\r\n elRef.addEventListener('animationend', handleAnimationEnd, { once: true })\r\n }\r\n }\r\n\r\n // 关闭自动播放\r\n const autoPlayTimer = ref(0)\r\n const closeAutoPlay = () => {\r\n if (autoPlayTimer.value) {\r\n clearInterval(autoPlayTimer.value)\r\n autoPlayTimer.value = 0\r\n }\r\n }\r\n onUnmounted(closeAutoPlay)\r\n\r\n // 向上/向下播放\r\n // 遇到元素动画时,优先执行动画播放,无动画则执行翻页\r\n // 向上播放遇到动画时,仅撤销到动画执行前的状态,不需要反向播放动画\r\n const execPrev = () => {\r\n if (animations.value.length && animationIndex.value > 0) {\r\n animationIndex.value -= 1\r\n }\r\n else if (slideIndex.value > 0) {\r\n store.commit(MutationTypes.UPDATE_SLIDE_INDEX, slideIndex.value - 1)\r\n const lastIndex = animations.value ? animations.value.length : 0\r\n animationIndex.value = lastIndex\r\n }\r\n else {\r\n message.success('已经是第一页了')\r\n }\r\n }\r\n const execNext = () => {\r\n if (animations.value.length && animationIndex.value < animations.value.length) {\r\n runAnimation()\r\n }\r\n else if (slideIndex.value < slides.value.length - 1) {\r\n store.commit(MutationTypes.UPDATE_SLIDE_INDEX, slideIndex.value + 1)\r\n animationIndex.value = 0\r\n }\r\n else {\r\n message.success('已经是最后一页了')\r\n closeAutoPlay()\r\n }\r\n }\r\n\r\n // 自动播放\r\n const autoPlay = () => {\r\n closeAutoPlay()\r\n message.success('开始自动放映')\r\n autoPlayTimer.value = setInterval(execNext, 2500)\r\n }\r\n\r\n // 鼠标滚动翻页\r\n const mousewheelListener = throttle(function(e: WheelEvent) {\r\n if (e.deltaY < 0) execPrev()\r\n else if (e.deltaY > 0) execNext()\r\n }, 500, { leading: true, trailing: false })\r\n\r\n // 快捷键翻页\r\n const keydownListener = (e: KeyboardEvent) => {\r\n const key = e.key.toUpperCase()\r\n if (key === KEYS.UP || key === KEYS.LEFT) execPrev()\r\n else if (\r\n key === KEYS.DOWN || \r\n key === KEYS.RIGHT ||\r\n key === KEYS.SPACE || \r\n key === KEYS.ENTER\r\n ) execNext()\r\n }\r\n\r\n onMounted(() => {\r\n document.addEventListener('keydown', keydownListener)\r\n })\r\n onUnmounted(() => {\r\n document.removeEventListener('keydown', keydownListener)\r\n })\r\n\r\n // 切换到上一张/上一张幻灯片(无视元素的入场动画)\r\n const turnPrevSlide = () => {\r\n store.commit(MutationTypes.UPDATE_SLIDE_INDEX, slideIndex.value - 1)\r\n animationIndex.value = 0\r\n }\r\n const turnNextSlide = () => {\r\n store.commit(MutationTypes.UPDATE_SLIDE_INDEX, slideIndex.value + 1)\r\n animationIndex.value = 0\r\n }\r\n\r\n // 切换幻灯片到指定的页面\r\n const turnSlideToIndex = (index: number) => {\r\n slideThumbnailModelVisible.value = false\r\n store.commit(MutationTypes.UPDATE_SLIDE_INDEX, index)\r\n animationIndex.value = 0\r\n }\r\n\r\n const contextmenus = (): ContextmenuItem[] => {\r\n return [\r\n {\r\n text: '上一页',\r\n subText: '↑ ←',\r\n disable: slideIndex.value <= 0,\r\n handler: () => turnPrevSlide(),\r\n },\r\n {\r\n text: '下一页',\r\n subText: '↓ →',\r\n disable: slideIndex.value >= slides.value.length - 1,\r\n handler: () => turnNextSlide(),\r\n },\r\n {\r\n text: '第一页',\r\n disable: slideIndex.value === 0,\r\n handler: () => turnSlideToIndex(0),\r\n },\r\n {\r\n text: '最后一页',\r\n disable: slideIndex.value === slides.value.length - 1,\r\n handler: () => turnSlideToIndex(slides.value.length - 1),\r\n },\r\n { divider: true },\r\n {\r\n text: '显示页码',\r\n subText: showPageNumber.value ? '√' : '',\r\n handler: () => showPageNumber.value = !showPageNumber.value,\r\n },\r\n {\r\n text: '查看所有幻灯片',\r\n handler: () => slideThumbnailModelVisible.value = true,\r\n },\r\n {\r\n text: '画笔',\r\n handler: () => writingBoardToolVisible.value = true,\r\n },\r\n { divider: true },\r\n {\r\n text: autoPlayTimer.value ? '取消自动放映' : '自动放映',\r\n handler: autoPlayTimer.value ? closeAutoPlay : autoPlay,\r\n },\r\n {\r\n text: '结束放映',\r\n subText: 'ESC',\r\n handler: exitScreening,\r\n },\r\n ]\r\n }\r\n \r\n provide('slideScale', scale)\r\n\r\n return {\r\n slides,\r\n slideIndex,\r\n currentSlide,\r\n slideWidth,\r\n slideHeight,\r\n scale,\r\n mousewheelListener,\r\n animationIndex,\r\n contextmenus,\r\n execPrev,\r\n execNext,\r\n slideThumbnailModelVisible,\r\n turnSlideToIndex,\r\n writingBoardToolVisible,\r\n showPageNumber,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=5e85dd68&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=5e85dd68&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-5e85dd68\"\n\nexport default script","\r\nimport { computed, defineComponent, onMounted } from 'vue'\r\nimport { MutationTypes, ActionTypes, useStore } from '@/store'\r\n\r\nimport Editor from './views/Editor/index.vue'\r\nimport Screen from './views/Screen/index.vue'\r\n\r\nexport default defineComponent({\r\n name: 'app',\r\n components: {\r\n Editor,\r\n Screen,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const screening = computed(() => store.state.screening)\r\n\r\n if (process.env.NODE_ENV === 'production') {\r\n window.onbeforeunload = () => false\r\n }\r\n\r\n onMounted(() => {\r\n store.commit(MutationTypes.SET_AVAILABLE_FONTS)\r\n store.dispatch(ActionTypes.INIT_SNAPSHOT_DATABASE)\r\n })\r\n\r\n return {\r\n screening,\r\n }\r\n },\r\n})\r\n","import { render } from \"./App.vue?vue&type=template&id=0af9d1a8\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\n\nimport \"./App.vue?vue&type=style&index=0&id=0af9d1a8&lang=scss\"\nscript.render = render\n\nexport default script","\r\n \r\n\r\n \r\n\r\n\r\n\r\n\r\n","\r\n \r\n\r\n\r\n\r\n\r\n","\r\nimport { PropType, defineComponent } from 'vue'\r\nimport { ContextmenuItem } from './types'\r\n\r\nexport default defineComponent({\r\n name: 'menu-content',\r\n props: {\r\n menus: {\r\n type: Array as PropType,\r\n required: true,\r\n },\r\n handleClickMenuItem: {\r\n type: Function,\r\n required: true,\r\n },\r\n },\r\n})\r\n","import { render } from \"./MenuContent.vue?vue&type=template&id=5490894e&scoped=true\"\nimport script from \"./MenuContent.vue?vue&type=script&lang=ts\"\nexport * from \"./MenuContent.vue?vue&type=script&lang=ts\"\n\nimport \"./MenuContent.vue?vue&type=style&index=0&id=5490894e&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-5490894e\"\n\nexport default script","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { ContextmenuItem, Axis } from './types'\r\n\r\nimport MenuContent from './MenuContent.vue'\r\n\r\nexport default defineComponent({\r\n name: 'contextmenu',\r\n components: {\r\n MenuContent,\r\n },\r\n props: {\r\n axis: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n el: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n menus: {\r\n type: Array as PropType,\r\n required: true,\r\n },\r\n removeContextmenu: {\r\n type: Function,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const style = computed(() => {\r\n const MENU_WIDTH = 170\r\n const MENU_HEIGHT = 30\r\n const DIVIDER_HEIGHT = 11\r\n const PADDING = 5\r\n\r\n const { x, y } = props.axis\r\n const menuCount = props.menus.filter(menu => !(menu.divider || menu.hide)).length\r\n const dividerCount = props.menus.filter(menu => menu.divider).length\r\n\r\n const menuWidth = MENU_WIDTH\r\n const menuHeight = menuCount * MENU_HEIGHT + dividerCount * DIVIDER_HEIGHT + PADDING * 2\r\n\r\n const screenWidth = document.body.clientWidth\r\n const screenHeight = document.body.clientHeight\r\n\r\n return {\r\n left: screenWidth <= x + menuWidth ? x - menuWidth : x,\r\n top: screenHeight <= y + menuHeight ? y - menuHeight : y,\r\n }\r\n })\r\n\r\n const handleClickMenuItem = (item: ContextmenuItem) => {\r\n if (item.disable) return\r\n if (item.children && !item.handler) return\r\n if (item.handler) item.handler(props.el)\r\n props.removeContextmenu()\r\n }\r\n\r\n return {\r\n style,\r\n handleClickMenuItem,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=83da70aa\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=83da70aa&lang=scss\"\nscript.render = render\n\nexport default script","import { Directive, createVNode, render, DirectiveBinding } from 'vue'\r\nimport ContextmenuComponent from '@/components/Contextmenu/index.vue'\r\n\r\nconst CTX_CONTEXTMENU_HANDLER = 'CTX_CONTEXTMENU_HANDLER'\r\n\r\nconst contextmenuListener = (el: HTMLElement, event: MouseEvent, binding: DirectiveBinding) => {\r\n event.stopPropagation()\r\n event.preventDefault()\r\n\r\n const menus = binding.value(el)\r\n if (!menus) return\r\n\r\n let container: HTMLDivElement | null = null\r\n\r\n // 移除右键菜单并取消相关的事件监听\r\n const removeContextmenu = () => {\r\n if (container) {\r\n document.body.removeChild(container)\r\n container = null\r\n }\r\n el.classList.remove('contextmenu-active')\r\n document.body.removeEventListener('scroll', removeContextmenu) \r\n window.removeEventListener('resize', removeContextmenu)\r\n }\r\n\r\n // 创建自定义菜单\r\n const options = {\r\n axis: { x: event.x, y: event.y },\r\n el,\r\n menus,\r\n removeContextmenu,\r\n }\r\n container = document.createElement('div')\r\n const vm = createVNode(ContextmenuComponent, options, null)\r\n render(vm, container)\r\n document.body.appendChild(container)\r\n\r\n // 为目标节点添加菜单激活状态的className\r\n el.classList.add('contextmenu-active')\r\n\r\n // 页面变化时移除菜单\r\n document.body.addEventListener('scroll', removeContextmenu)\r\n window.addEventListener('resize', removeContextmenu)\r\n}\r\n\r\nconst ContextmenuDirective: Directive = {\r\n mounted(el: HTMLElement, binding) {\r\n el[CTX_CONTEXTMENU_HANDLER] = (event: MouseEvent) => contextmenuListener(el, event, binding)\r\n el.addEventListener('contextmenu', el[CTX_CONTEXTMENU_HANDLER])\r\n },\r\n\r\n unmounted(el: HTMLElement) {\r\n if (el && el[CTX_CONTEXTMENU_HANDLER]) {\r\n el.removeEventListener('contextmenu', el[CTX_CONTEXTMENU_HANDLER])\r\n delete el[CTX_CONTEXTMENU_HANDLER]\r\n }\r\n },\r\n}\r\n\r\nexport default ContextmenuDirective","import { Directive, DirectiveBinding } from 'vue'\r\n\r\nconst CTX_CLICK_OUTSIDE_HANDLER = 'CTX_CLICK_OUTSIDE_HANDLER'\r\n\r\nconst clickListener = (el: HTMLElement, event: MouseEvent, binding: DirectiveBinding) => {\r\n const handler = binding.value\r\n\r\n const path = event.composedPath()\r\n const isClickOutside = path ? path.indexOf(el) < 0 : !el.contains(event.target as HTMLElement)\r\n\r\n if (!isClickOutside) return\r\n handler(event)\r\n}\r\n\r\nconst ClickOutsideDirective: Directive = {\r\n mounted(el: HTMLElement, binding) {\r\n el[CTX_CLICK_OUTSIDE_HANDLER] = (event: MouseEvent) => clickListener(el, event, binding)\r\n setTimeout(() => {\r\n document.addEventListener('click', el[CTX_CLICK_OUTSIDE_HANDLER])\r\n }, 0)\r\n },\r\n \r\n unmounted(el: HTMLElement) {\r\n if (el[CTX_CLICK_OUTSIDE_HANDLER]) {\r\n document.removeEventListener('click', el[CTX_CLICK_OUTSIDE_HANDLER])\r\n delete el[CTX_CLICK_OUTSIDE_HANDLER]\r\n }\r\n },\r\n}\r\n\r\nexport default ClickOutsideDirective","// https://iconpark.bytedance.com/official\r\n\r\nimport { App } from 'vue'\r\nimport {\r\n PlayOne,\r\n Lock,\r\n Unlock,\r\n Ppt,\r\n Format,\r\n Picture,\r\n FullScreen,\r\n List,\r\n OrderedList,\r\n Helpcenter,\r\n FlipVertically,\r\n FlipHorizontally,\r\n FontSize,\r\n Code,\r\n TextBold,\r\n TextItalic,\r\n TextUnderline,\r\n Strikethrough,\r\n Edit,\r\n Quote,\r\n BackgroundColor,\r\n Group,\r\n Ungroup,\r\n Back,\r\n Next,\r\n Fullwidth,\r\n AlignTop,\r\n AlignLeft,\r\n AlignRight,\r\n AlignBottom,\r\n AlignVertically,\r\n AlignHorizontally,\r\n BringToFront,\r\n SendToBack,\r\n AlignTextLeft,\r\n AlignTextRight,\r\n AlignTextCenter,\r\n RowHeight,\r\n Write,\r\n InsertTable,\r\n AddText,\r\n Fill,\r\n Tailoring,\r\n Effects,\r\n ColorFilter,\r\n Down,\r\n Plus,\r\n Minus,\r\n Connection,\r\n BringToFrontOne,\r\n SentToBack,\r\n Github,\r\n ChartProportion,\r\n ChartHistogram,\r\n ChartHistogramOne,\r\n ChartLine,\r\n ChartLineArea,\r\n ChartScatter,\r\n ChartPie,\r\n ChartRing,\r\n Text,\r\n Rotate,\r\n LeftTwo,\r\n RightTwo,\r\n Platte,\r\n UpOne,\r\n DownOne,\r\n Close,\r\n CloseSmall,\r\n Undo,\r\n Transform,\r\n Click,\r\n Theme,\r\n ArrowCircleLeft,\r\n GraphicDesign,\r\n Logout,\r\n Erase,\r\n Clear,\r\n} from '@icon-park/vue-next'\r\n\r\nexport default {\r\n install(app: App) {\r\n // 插入元素\r\n app.component('IconFontSize', FontSize)\r\n app.component('IconPicture', Picture)\r\n app.component('IconGraphicDesign', GraphicDesign)\r\n app.component('IconConnection', Connection)\r\n app.component('IconChartProportion', ChartProportion)\r\n app.component('IconInsertTable', InsertTable)\r\n\r\n // 锁定与解锁\r\n app.component('IconLock', Lock)\r\n app.component('IconUnlock', Unlock)\r\n\r\n // 全屏\r\n app.component('IconFullScreen', FullScreen)\r\n\r\n // 撤销重做\r\n app.component('IconBack', Back)\r\n app.component('IconNext', Next) \r\n \r\n // 对齐\r\n app.component('IconAlignTop', AlignTop)\r\n app.component('IconAlignLeft', AlignLeft)\r\n app.component('IconAlignRight', AlignRight)\r\n app.component('IconAlignBottom', AlignBottom)\r\n app.component('IconAlignVertically', AlignVertically)\r\n app.component('IconAlignHorizontally', AlignHorizontally)\r\n\r\n // 层级\r\n app.component('IconBringToFront', BringToFront)\r\n app.component('IconSentToBack', SentToBack)\r\n app.component('IconBringToFrontOne', BringToFrontOne)\r\n app.component('IconSendToBack', SendToBack)\r\n\r\n // 组合\r\n app.component('IconGroup', Group)\r\n app.component('IconUngroup', Ungroup)\r\n\r\n // 通用元素编辑\r\n app.component('IconFill', Fill)\r\n app.component('IconBackgroundColor', BackgroundColor)\r\n app.component('IconPlatte', Platte)\r\n \r\n // 图片编辑\r\n app.component('IconTailoring', Tailoring)\r\n app.component('IconColorFilter', ColorFilter)\r\n app.component('IconFlipVertically', FlipVertically)\r\n app.component('IconFlipHorizontally', FlipHorizontally)\r\n\r\n // 文字编辑\r\n app.component('IconText', Text)\r\n app.component('IconAddText', AddText)\r\n app.component('IconAlignTextLeft', AlignTextLeft)\r\n app.component('IconAlignTextRight', AlignTextRight)\r\n app.component('IconAlignTextCenter', AlignTextCenter)\r\n app.component('IconRowHeight', RowHeight)\r\n app.component('IconFullwidth', Fullwidth)\r\n app.component('IconCode', Code)\r\n app.component('IconTextBold', TextBold)\r\n app.component('IconTextItalic', TextItalic)\r\n app.component('IconTextUnderline', TextUnderline)\r\n app.component('IconStrikethrough', Strikethrough)\r\n app.component('IconQuote', Quote)\r\n app.component('IconList', List)\r\n app.component('IconOrderedList', OrderedList)\r\n app.component('IconUpOne', UpOne)\r\n app.component('IconDownOne', DownOne)\r\n app.component('IconFormat', Format)\r\n\r\n // 箭头与符号\r\n app.component('IconDown', Down)\r\n app.component('IconLeftTwo', LeftTwo)\r\n app.component('IconRightTwo', RightTwo)\r\n app.component('IconPlus', Plus)\r\n app.component('IconMinus', Minus)\r\n app.component('IconClose', Close)\r\n app.component('IconCloseSmall', CloseSmall)\r\n \r\n // 图表\r\n app.component('IconChartHistogram', ChartHistogram)\r\n app.component('IconChartHistogramOne', ChartHistogramOne)\r\n app.component('IconChartLine', ChartLine)\r\n app.component('IconChartLineArea', ChartLineArea)\r\n app.component('IconChartScatter', ChartScatter)\r\n app.component('IconChartPie', ChartPie)\r\n app.component('IconChartRing', ChartRing)\r\n\r\n // 其他\r\n app.component('IconPlayOne', PlayOne)\r\n app.component('IconPpt', Ppt)\r\n app.component('IconHelpcenter', Helpcenter)\r\n app.component('IconGithub', Github)\r\n app.component('IconWrite', Write)\r\n app.component('IconErase', Erase)\r\n app.component('IconEffects', Effects)\r\n app.component('IconRotate', Rotate)\r\n app.component('IconEdit', Edit)\r\n app.component('IconUndo', Undo)\r\n app.component('IconTransform', Transform)\r\n app.component('IconClick', Click)\r\n app.component('IconTheme', Theme)\r\n app.component('IconArrowCircleLeft', ArrowCircleLeft)\r\n app.component('IconLogout', Logout)\r\n app.component('IconClear', Clear)\r\n }\r\n}","\r\n \r\n \r\n handleChange($event)\"\r\n >\r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { defineComponent, ref } from 'vue'\r\n\r\nexport default defineComponent({\r\n name: 'file-input',\r\n props: {\r\n accept: {\r\n type: String,\r\n default: 'image/*',\r\n },\r\n },\r\n setup(props, { emit }) {\r\n const inputRef = ref()\r\n\r\n const handleClick = () => {\r\n if (!inputRef.value) return\r\n inputRef.value.value = ''\r\n inputRef.value.click()\r\n }\r\n const handleChange = (e: InputEvent) => {\r\n const files = (e.target as HTMLInputElement).files\r\n if (files) emit('change', files)\r\n }\r\n\r\n return {\r\n handleClick,\r\n handleChange,\r\n inputRef,\r\n }\r\n },\r\n})\r\n","import { render } from \"./FileInput.vue?vue&type=template&id=bf80565c&scoped=true\"\nimport script from \"./FileInput.vue?vue&type=script&lang=ts\"\nexport * from \"./FileInput.vue?vue&type=script&lang=ts\"\n\nimport \"./FileInput.vue?vue&type=style&index=0&id=bf80565c&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-bf80565c\"\n\nexport default script","\r\n \r\n\r\n\r\n","\r\nexport default {\r\n name: 'svg-wrapper',\r\n}\r\n","import { render } from \"./SvgWrapper.vue?vue&type=template&id=07215504\"\nimport script from \"./SvgWrapper.vue?vue&type=script&lang=ts\"\nexport * from \"./SvgWrapper.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\n \r\n\r\n\r\n\r\n\r\n","\r\nexport default {\r\n name: 'checkbox-button',\r\n props: {\r\n checked: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n}\r\n","import { render } from \"./CheckboxButton.vue?vue&type=template&id=7cae2b90&scoped=true\"\nimport script from \"./CheckboxButton.vue?vue&type=script&lang=ts\"\nexport * from \"./CheckboxButton.vue?vue&type=script&lang=ts\"\n\nimport \"./CheckboxButton.vue?vue&type=style&index=0&id=7cae2b90&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-7cae2b90\"\n\nexport default script","\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n","\r\nexport default {\r\n name: 'checkbox-button-group',\r\n}\r\n","import { render } from \"./CheckboxButtonGroup.vue?vue&type=template&id=7dafd0a9&scoped=true\"\nimport script from \"./CheckboxButtonGroup.vue?vue&type=script&lang=ts\"\nexport * from \"./CheckboxButtonGroup.vue?vue&type=script&lang=ts\"\n\nimport \"./CheckboxButtonGroup.vue?vue&type=style&index=0&id=7dafd0a9&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-7dafd0a9\"\n\nexport default script","\r\n \r\n
\r\n changeColor(value)\" />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n changeColor(value)\" />\r\n
\r\n
\r\n
changeColor(value)\" />\r\n \r\n
\r\n
\r\n\r\n
\r\n changeColor(value)\" />\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
最近使用:
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\n \r\n
\r\n \r\n
\r\n
\r\n
handleMouseDown($event)\"\r\n >\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\n \r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent } from 'vue'\r\n\r\nconst checkboardCache = {}\r\n\r\nconst renderCheckboard = (white: string, grey: string, size: number) => {\r\n const canvas = document.createElement('canvas')\r\n canvas.width = canvas.height = size * 2\r\n const ctx = canvas.getContext('2d')\r\n \r\n if (!ctx) return null\r\n\r\n ctx.fillStyle = white\r\n ctx.fillRect(0, 0, canvas.width, canvas.height)\r\n ctx.fillStyle = grey\r\n ctx.fillRect(0, 0, size, size)\r\n ctx.translate(size, size)\r\n ctx.fillRect(0, 0, size, size)\r\n return canvas.toDataURL()\r\n}\r\n\r\nconst getCheckboard = (white: string, grey: string, size: number) => {\r\n const key = white + ',' + grey + ',' + size\r\n if (checkboardCache[key]) return checkboardCache[key]\r\n \r\n const checkboard = renderCheckboard(white, grey, size)\r\n checkboardCache[key] = checkboard\r\n return checkboard\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'checkboard',\r\n props: {\r\n size: {\r\n type: Number,\r\n default: 8,\r\n },\r\n white: {\r\n type: String,\r\n default: '#fff',\r\n },\r\n grey: {\r\n type: String,\r\n default: '#e6e6e6',\r\n },\r\n },\r\n setup(props) {\r\n const bgStyle = computed(() => {\r\n const checkboard = getCheckboard(props.white, props.grey, props.size)\r\n return { backgroundImage: `url(${checkboard})` }\r\n })\r\n\r\n return {\r\n bgStyle,\r\n }\r\n },\r\n})\r\n","import { render } from \"./Checkboard.vue?vue&type=template&id=e9a0ac98&scoped=true\"\nimport script from \"./Checkboard.vue?vue&type=script&lang=ts\"\nexport * from \"./Checkboard.vue?vue&type=script&lang=ts\"\n\nimport \"./Checkboard.vue?vue&type=style&index=0&id=e9a0ac98&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-e9a0ac98\"\n\nexport default script","\r\nimport { computed, defineComponent, onUnmounted, PropType, ref } from 'vue'\r\n\r\nimport Checkboard from './Checkboard.vue'\r\nimport { ColorFormats } from 'tinycolor2'\r\n\r\nexport default defineComponent({\r\n name: 'alpha',\r\n components: {\r\n Checkboard,\r\n },\r\n props: {\r\n value: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n },\r\n setup(props, { emit }) {\r\n const color = computed(() => props.value)\r\n \r\n const gradientColor = computed(() => {\r\n const rgbaStr = [color.value.r, color.value.g, color.value.b].join(',')\r\n return `linear-gradient(to right, rgba(${rgbaStr}, 0) 0%, rgba(${rgbaStr}, 1) 100%)`\r\n })\r\n\r\n const alphaRef = ref()\r\n const handleChange = (e: MouseEvent) => {\r\n e.preventDefault()\r\n if (!alphaRef.value) return\r\n const containerWidth = alphaRef.value.clientWidth\r\n const xOffset = alphaRef.value.getBoundingClientRect().left + window.pageXOffset\r\n const left = e.pageX - xOffset\r\n let a\r\n\r\n if (left < 0) a = 0\r\n else if (left > containerWidth) a = 1\r\n else a = Math.round(left * 100 / containerWidth) / 100\r\n\r\n if (color.value.a !== a) {\r\n emit('colorChange', {\r\n r: color.value.r,\r\n g: color.value.g,\r\n b: color.value.b,\r\n a: a,\r\n })\r\n }\r\n }\r\n\r\n const unbindEventListeners = () => {\r\n window.removeEventListener('mousemove', handleChange)\r\n window.removeEventListener('mouseup', unbindEventListeners)\r\n }\r\n const handleMouseDown = (e: MouseEvent) => {\r\n handleChange(e)\r\n window.addEventListener('mousemove', handleChange)\r\n window.addEventListener('mouseup', unbindEventListeners)\r\n }\r\n\r\n onUnmounted(unbindEventListeners)\r\n\r\n return {\r\n alphaRef,\r\n gradientColor,\r\n handleMouseDown,\r\n color,\r\n }\r\n },\r\n})\r\n","import { render } from \"./Alpha.vue?vue&type=template&id=ecf7d10e&scoped=true\"\nimport script from \"./Alpha.vue?vue&type=script&lang=ts\"\nexport * from \"./Alpha.vue?vue&type=script&lang=ts\"\n\nimport \"./Alpha.vue?vue&type=style&index=0&id=ecf7d10e&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-ecf7d10e\"\n\nexport default script","\r\n \r\n
handleMouseDown($event)\"\r\n >\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, onUnmounted, PropType, ref, watch } from 'vue'\r\nimport tinycolor, { ColorFormats } from 'tinycolor2'\r\n\r\nexport default defineComponent({\r\n name: 'hue',\r\n props: {\r\n value: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n hue: {\r\n type: Number,\r\n required: true,\r\n },\r\n },\r\n setup(props, { emit }) {\r\n const oldHue = ref(0)\r\n const pullDirection = ref('')\r\n \r\n const color = computed(() => {\r\n const hsla = tinycolor(props.value).toHsl()\r\n if (hsla.s === 0) hsla.h = props.hue\r\n return hsla\r\n })\r\n\r\n const pointerLeft = computed(() => {\r\n if (color.value.h === 0 && pullDirection.value === 'right') return '100%'\r\n return color.value.h * 100 / 360 + '%'\r\n })\r\n\r\n watch(() => props.value, () => {\r\n const hsla = tinycolor(props.value).toHsl()\r\n const h = hsla.s === 0 ? props.hue : hsla.h\r\n if (h !== 0 && h - oldHue.value > 0) pullDirection.value = 'right'\r\n if (h !== 0 && h - oldHue.value < 0) pullDirection.value = 'left'\r\n oldHue.value = h\r\n })\r\n\r\n const hueRef = ref()\r\n const handleChange = (e: MouseEvent) => {\r\n e.preventDefault()\r\n if (!hueRef.value) return\r\n\r\n const containerWidth = hueRef.value.clientWidth\r\n const xOffset = hueRef.value.getBoundingClientRect().left + window.pageXOffset\r\n const left = e.pageX - xOffset\r\n let h, percent\r\n \r\n if (left < 0) h = 0\r\n else if (left > containerWidth) h = 360\r\n else {\r\n percent = left * 100 / containerWidth\r\n h = (360 * percent / 100)\r\n }\r\n if (color.value.h !== h) {\r\n emit('colorChange', {\r\n h,\r\n l: color.value.l,\r\n s: color.value.s,\r\n a: color.value.a,\r\n })\r\n }\r\n }\r\n\r\n const unbindEventListeners = () => {\r\n window.removeEventListener('mousemove', handleChange)\r\n window.removeEventListener('mouseup', unbindEventListeners)\r\n }\r\n const handleMouseDown = (e: MouseEvent) => {\r\n handleChange(e)\r\n window.addEventListener('mousemove', handleChange)\r\n window.addEventListener('mouseup', unbindEventListeners)\r\n }\r\n\r\n onUnmounted(unbindEventListeners)\r\n\r\n return {\r\n hueRef,\r\n handleMouseDown,\r\n pointerLeft,\r\n }\r\n },\r\n})\r\n","import { render } from \"./Hue.vue?vue&type=template&id=7b983451&scoped=true\"\nimport script from \"./Hue.vue?vue&type=script&lang=ts\"\nexport * from \"./Hue.vue?vue&type=script&lang=ts\"\n\nimport \"./Hue.vue?vue&type=style&index=0&id=7b983451&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-7b983451\"\n\nexport default script","\r\n handleMouseDown($event)\"\r\n >\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, onUnmounted, PropType, ref } from 'vue'\r\nimport tinycolor, { ColorFormats } from 'tinycolor2'\r\nimport throttle from 'lodash/throttle'\r\nimport clamp from 'lodash/clamp'\r\n\r\nexport default defineComponent({\r\n name: 'saturation',\r\n props: {\r\n value: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n hue: {\r\n type: Number,\r\n required: true,\r\n },\r\n },\r\n setup(props, { emit }) {\r\n const color = computed(() => {\r\n const hsva = tinycolor(props.value).toHsv()\r\n if (hsva.s === 0) hsva.h = props.hue\r\n return hsva\r\n })\r\n\r\n const bgColor = computed(() => `hsl(${color.value.h}, 100%, 50%)`)\r\n const pointerTop = computed(() => (-(color.value.v * 100) + 1) + 100 + '%')\r\n const pointerLeft = computed(() => color.value.s * 100 + '%')\r\n\r\n const emitChangeEvent = throttle(function(param) {\r\n emit('colorChange', param)\r\n }, 20, { leading: true, trailing: false })\r\n\r\n const saturationRef = ref()\r\n const handleChange = (e: MouseEvent) => {\r\n e.preventDefault()\r\n if (!saturationRef.value) return\r\n \r\n const containerWidth = saturationRef.value.clientWidth\r\n const containerHeight = saturationRef.value.clientHeight\r\n const xOffset = saturationRef.value.getBoundingClientRect().left + window.pageXOffset\r\n const yOffset = saturationRef.value.getBoundingClientRect().top + window.pageYOffset\r\n const left = clamp(e.pageX - xOffset, 0, containerWidth)\r\n const top = clamp(e.pageY - yOffset, 0, containerHeight)\r\n const saturation = left / containerWidth\r\n const bright = clamp(-(top / containerHeight) + 1, 0, 1)\r\n\r\n emitChangeEvent({\r\n h: color.value.h,\r\n s: saturation,\r\n v: bright,\r\n a: color.value.a,\r\n })\r\n }\r\n\r\n \r\n const unbindEventListeners = () => {\r\n window.removeEventListener('mousemove', handleChange)\r\n window.removeEventListener('mouseup', unbindEventListeners)\r\n }\r\n const handleMouseDown = (e: MouseEvent) => {\r\n handleChange(e)\r\n window.addEventListener('mousemove', handleChange)\r\n window.addEventListener('mouseup', unbindEventListeners)\r\n }\r\n\r\n onUnmounted(unbindEventListeners)\r\n\r\n return {\r\n saturationRef,\r\n bgColor,\r\n handleMouseDown,\r\n pointerTop,\r\n pointerLeft,\r\n }\r\n },\r\n})\r\n","import { render } from \"./Saturation.vue?vue&type=template&id=5310dbb4&scoped=true\"\nimport script from \"./Saturation.vue?vue&type=script&lang=ts\"\nexport * from \"./Saturation.vue?vue&type=script&lang=ts\"\n\nimport \"./Saturation.vue?vue&type=style&index=0&id=5310dbb4&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-5310dbb4\"\n\nexport default script","\r\n \r\n handleInput($event)\"\r\n >\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport tinycolor, { ColorFormats } from 'tinycolor2'\r\n\r\nexport default defineComponent({\r\n name: 'editable-input',\r\n props: {\r\n value: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n },\r\n setup(props, { emit }) {\r\n const val = computed(() => {\r\n let _hex = ''\r\n if (props.value.a < 1) _hex = tinycolor(props.value).toHex8String().toUpperCase()\r\n else _hex = tinycolor(props.value).toHexString().toUpperCase()\r\n return _hex.replace('#', '')\r\n })\r\n\r\n const handleInput = (e: InputEvent) => {\r\n const value = (e.target as HTMLInputElement).value\r\n if (value.length >= 6) emit('colorChange', tinycolor(value).toRgb())\r\n }\r\n\r\n return {\r\n val,\r\n handleInput,\r\n }\r\n },\r\n})\r\n","import { render } from \"./EditableInput.vue?vue&type=template&id=0311fdee&scoped=true\"\nimport script from \"./EditableInput.vue?vue&type=script&lang=ts\"\nexport * from \"./EditableInput.vue?vue&type=script&lang=ts\"\n\nimport \"./EditableInput.vue?vue&type=style&index=0&id=0311fdee&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-0311fdee\"\n\nexport default script","\r\nimport { computed, defineComponent, onMounted, ref, watch } from 'vue'\r\nimport tinycolor, { ColorFormats } from 'tinycolor2'\r\nimport debounce from 'lodash/debounce'\r\n\r\nimport Alpha from './Alpha.vue'\r\nimport Checkboard from './Checkboard.vue'\r\nimport Hue from './Hue.vue'\r\nimport Saturation from './Saturation.vue'\r\nimport EditableInput from './EditableInput.vue'\r\n\r\nconst RECENT_COLORS = 'RECENT_COLORS'\r\n\r\nconst presetColorConfig = [\r\n ['#7f7f7f', '#f2f2f2'],\r\n ['#0d0d0d', '#808080'],\r\n ['#1c1a10', '#ddd8c3'],\r\n ['#0e243d', '#c6d9f0'],\r\n ['#233f5e', '#dae5f0'],\r\n ['#632623', '#f2dbdb'],\r\n ['#4d602c', '#eaf1de'],\r\n ['#3f3150', '#e6e0ec'],\r\n ['#1e5867', '#d9eef3'],\r\n ['#99490f', '#fee9da'],\r\n]\r\n\r\nconst gradient = (startColor: string, endColor: string, step: number) => {\r\n const _startColor = tinycolor(startColor).toRgb()\r\n const _endColor = tinycolor(endColor).toRgb()\r\n\r\n const rStep = (_endColor.r - _startColor.r) / step\r\n const gStep = (_endColor.g - _startColor.g) / step\r\n const bStep = (_endColor.b - _startColor.b) / step\r\n const gradientColorArr = []\r\n\r\n for (let i = 0; i < step; i++) {\r\n const gradientColor = tinycolor({\r\n r: _startColor.r + rStep * i,\r\n g: _startColor.g + gStep * i,\r\n b: _startColor.b + bStep * i,\r\n }).toRgbString()\r\n gradientColorArr.push(gradientColor)\r\n }\r\n return gradientColorArr\r\n}\r\n\r\nconst getPresetColors = () => {\r\n const presetColors = []\r\n for (const color of presetColorConfig) {\r\n presetColors.push(gradient(color[1], color[0], 5))\r\n }\r\n return presetColors\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'color-picker',\r\n components: {\r\n Alpha,\r\n Checkboard,\r\n Hue,\r\n Saturation,\r\n EditableInput,\r\n },\r\n props: {\r\n modelValue: {\r\n type: String,\r\n default: '#e86b99',\r\n },\r\n },\r\n setup(props, { emit }) {\r\n const hue = ref(0)\r\n const recentColors = ref([])\r\n\r\n const color = computed({\r\n get() {\r\n return tinycolor(props.modelValue).toRgb()\r\n },\r\n set(rgba: ColorFormats.RGBA) {\r\n const rgbaString = `rgba(${[rgba.r, rgba.g, rgba.b, rgba.a].join(',')})`\r\n emit('update:modelValue', rgbaString)\r\n },\r\n })\r\n\r\n const themeColors = ['#000000', '#ffffff', '#eeece1', '#1e497b', '#4e81bb', '#e2534d', '#9aba60', '#8165a0', '#47acc5', '#f9974c']\r\n const standardColors = ['#c21401', '#ff1e02', '#ffc12a', '#ffff3a', '#90cf5b', '#00af57', '#00afee', '#0071be', '#00215f', '#72349d']\r\n const presetColors = getPresetColors()\r\n\r\n const currentColor = computed(() => {\r\n return `rgba(${[color.value.r, color.value.g, color.value.b, color.value.a].join(',')})`\r\n })\r\n\r\n const selectPresetColor = (colorString: string) => {\r\n emit('update:modelValue', colorString)\r\n }\r\n\r\n // 每次选择非预设颜色时,需要将该颜色加入到最近使用列表中\r\n const updateRecentColorsCache = debounce(function() {\r\n const _color = tinycolor(color.value).toRgbString()\r\n if (!recentColors.value.includes(_color)) {\r\n recentColors.value = [_color, ...recentColors.value]\r\n\r\n const maxLength = 10\r\n if (recentColors.value.length > maxLength) {\r\n recentColors.value = recentColors.value.slice(0, maxLength)\r\n }\r\n }\r\n }, 300, { trailing: true })\r\n\r\n onMounted(() => {\r\n const recentColorsCache = localStorage.getItem(RECENT_COLORS)\r\n if (recentColorsCache) recentColors.value = JSON.parse(recentColorsCache)\r\n })\r\n\r\n watch(recentColors, () => {\r\n const recentColorsCache = JSON.stringify(recentColors.value)\r\n localStorage.setItem(RECENT_COLORS, recentColorsCache)\r\n })\r\n\r\n const changeColor = (value: ColorFormats.RGBA | ColorFormats.HSLA | ColorFormats.HSVA) => {\r\n if ('h' in value) {\r\n hue.value = value.h\r\n color.value = tinycolor(value).toRgb()\r\n }\r\n else color.value = value\r\n\r\n updateRecentColorsCache()\r\n }\r\n\r\n return {\r\n themeColors,\r\n standardColors,\r\n presetColors,\r\n color,\r\n hue,\r\n currentColor,\r\n changeColor,\r\n selectPresetColor,\r\n recentColors,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=20575236&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=20575236&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-20575236\"\n\nexport default script","import { createApp } from 'vue'\r\nimport App from './App.vue'\r\nimport { store, key } from './store'\r\n\r\nimport '@icon-park/vue-next/styles/index.css'\r\nimport 'prosemirror-view/style/prosemirror.css'\r\nimport '@/assets/styles/prosemirror.scss'\r\nimport '@/assets/styles/global.scss'\r\nimport '@/assets/styles/antd.scss'\r\nimport '@/assets/styles/font.scss'\r\nimport 'animate.css'\r\n\r\n// 自定义插件\r\nimport Contextmenu from './plugins/contextmenu'\r\nimport ClickOutside from './plugins/clickOutside'\r\nimport IconPark from './plugins/iconPark'\r\n\r\n// 自定义组件\r\nimport FileInput from '@/components/FileInput.vue'\r\nimport SvgWrapper from '@/components/SvgWrapper.vue'\r\nimport CheckboxButton from '@/components/CheckboxButton.vue'\r\nimport CheckboxButtonGroup from '@/components/CheckboxButtonGroup.vue'\r\nimport ColorPicker from '@/components/ColorPicker/index.vue'\r\n\r\n// antd 组件\r\nimport {\r\n InputNumber,\r\n Divider,\r\n Button,\r\n Tooltip,\r\n Popover,\r\n Slider,\r\n Select,\r\n Switch,\r\n Radio,\r\n Input,\r\n Modal,\r\n Dropdown,\r\n Menu,\r\n Checkbox,\r\n Drawer,\r\n Spin,\r\n} from 'ant-design-vue'\r\n\r\nconst app = createApp(App)\r\n\r\napp.directive('contextmenu', Contextmenu)\r\napp.directive('click-outside', ClickOutside)\r\napp.use(IconPark)\r\n\r\napp.component('FileInput', FileInput)\r\napp.component('SvgWrapper', SvgWrapper)\r\napp.component('CheckboxButton', CheckboxButton)\r\napp.component('CheckboxButtonGroup', CheckboxButtonGroup)\r\napp.component('ColorPicker', ColorPicker)\r\n\r\napp.component('InputNumber', InputNumber)\r\napp.component('Divider', Divider)\r\napp.component('Button', Button)\r\napp.component('ButtonGroup', Button.Group)\r\napp.component('Tooltip', Tooltip)\r\napp.component('Popover', Popover)\r\napp.component('Slider', Slider)\r\napp.component('Select', Select)\r\napp.component('SelectOption', Select.Option)\r\napp.component('SelectOptGroup', Select.OptGroup)\r\napp.component('Switch', Switch)\r\napp.component('Radio', Radio)\r\napp.component('RadioGroup', Radio.Group)\r\napp.component('RadioButton', Radio.Button)\r\napp.component('Input', Input)\r\napp.component('InputGroup', Input.Group)\r\napp.component('Modal', Modal)\r\napp.component('Dropdown', Dropdown)\r\napp.component('Menu', Menu)\r\napp.component('MenuItem', Menu.Item)\r\napp.component('Checkbox', Checkbox)\r\napp.component('Drawer', Drawer)\r\napp.component('Spin', Spin)\r\n\r\napp.use(store, key)\r\napp.mount('#app')\r\n","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=4aec836a&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ElementOutline.vue?vue&type=style&index=0&id=2ddaa919&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./MultiSelectOperate.vue?vue&type=style&index=0&id=4def6455&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./FileInput.vue?vue&type=style&index=0&id=bf80565c&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=a7eb4f98&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=6277fc70&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./HotkeyDoc.vue?vue&type=style&index=0&id=47d0351b&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./SlideStylePanel.vue?vue&type=style&index=0&id=2e49fc42&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ChartDataEditor.vue?vue&type=style&index=0&id=42e69ec4&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ChartPool.vue?vue&type=style&index=0&id=0028f4b9&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ViewportBackground.vue?vue&type=style&index=0&id=a9ca1b50&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=59ae6536&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./BorderLine.vue?vue&type=style&index=0&id=630e246b&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./SlideThumbnails.vue?vue&type=style&index=0&id=9174b3bc&lang=scss&scoped=true\""],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/js/chunk-vendors.90c7b462.js b/dist/js/chunk-vendors.90c7b462.js
deleted file mode 100644
index 3eab3666..00000000
--- a/dist/js/chunk-vendors.90c7b462.js
+++ /dev/null
@@ -1,326 +0,0 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-vendors"],{"0010":function(t,e,n){"use strict";n.d(e,"a",(function(){return N})),n.d(e,"b",(function(){return m})),n.d(e,"c",(function(){return p})),n.d(e,"d",(function(){return k})),n.d(e,"e",(function(){return M})),n.d(e,"f",(function(){return L})),n.d(e,"g",(function(){return x}));var r=n("0ac0"),i=n("304a"),o=n("5313");function a(t,e){return!t.selection.empty&&(e&&e(t.tr.deleteSelection().scrollIntoView()),!0)}function s(t,e,n){var i=t.selection,a=i.$cursor;if(!a||(n?!n.endOfTextblock("backward",t):a.parentOffset>0))return!1;var s=l(a);if(!s){var c=a.blockRange(),h=c&&Object(r["j"])(c);return null!=h&&(e&&e(t.tr.lift(c,h).scrollIntoView()),!0)}var f=s.nodeBefore;if(!f.type.spec.isolating&&j(t,s,e))return!0;if(0==a.parent.content.size&&(u(f,"end")||o["c"].isSelectable(f))){if(e){var d=t.tr.deleteRange(a.before(),a.after());d.setSelection(u(f,"end")?o["f"].findFrom(d.doc.resolve(d.mapping.map(s.pos,-1)),-1):o["c"].create(d.doc,s.pos-f.nodeSize)),e(d.scrollIntoView())}return!0}return!(!f.isAtom||s.depth!=a.depth-1)&&(e&&e(t.tr.delete(s.pos-f.nodeSize,s.pos).scrollIntoView()),!0)}function u(t,e){for(;t;t="start"==e?t.firstChild:t.lastChild)if(t.isTextblock)return!0;return!1}function c(t,e,n){var r=t.selection,i=r.$head,a=r.empty,s=i;if(!a)return!1;if(i.parent.isTextblock){if(n?!n.endOfTextblock("backward",t):i.parentOffset>0)return!1;s=l(i)}var u=s&&s.nodeBefore;return!(!u||!o["c"].isSelectable(u))&&(e&&e(t.tr.setSelection(o["c"].create(t.doc,s.pos-u.nodeSize)).scrollIntoView()),!0)}function l(t){if(!t.parent.type.spec.isolating)for(var e=t.depth-1;e>=0;e--){if(t.index(e)>0)return t.doc.resolve(t.before(e+1));if(t.node(e).type.spec.isolating)break}return null}function h(t,e,n){var r=t.selection,i=r.$cursor;if(!i||(n?!n.endOfTextblock("forward",t):i.parentOffset=0;e--){var n=t.node(e);if(t.index(e)+11&&i.after()!=i.end(-1)){var o=i.before();if(Object(r["f"])(t.doc,o))return e&&e(t.tr.split(o).scrollIntoView()),!0}var a=i.blockRange(),s=a&&Object(r["j"])(a);return null!=s&&(e&&e(t.tr.lift(a,s).scrollIntoView()),!0)}function w(t,e){var n=t.selection,a=n.$from,s=n.$to;if(t.selection instanceof o["c"]&&t.selection.node.isBlock)return!(!a.parentOffset||!Object(r["f"])(t.doc,a.pos))&&(e&&e(t.tr.split(a.pos).scrollIntoView()),!0);if(!a.parent.isBlock)return!1;if(e){var u=s.parentOffset==s.parent.content.size,c=t.tr;(t.selection instanceof o["g"]||t.selection instanceof o["a"])&&c.deleteSelection();var l=0==a.depth?null:b(a.node(-1).contentMatchAt(a.indexAfter(-1))),h=u&&l?[{type:l}]:null,f=Object(r["f"])(c.doc,c.mapping.map(a.pos),1,h);h||f||!Object(r["f"])(c.doc,c.mapping.map(a.pos),1,l&&[{type:l}])||(h=[{type:l}],f=!0),f&&(c.split(c.mapping.map(a.pos),1,h),u||a.parentOffset||a.parent.type==l||!a.node(-1).canReplace(a.index(-1),a.indexAfter(-1),i["c"].from([l.create(),a.parent]))||c.setNodeMarkup(c.mapping.map(a.before()),l)),e(c.scrollIntoView())}return!0}function M(t,e){var n,r=t.selection,i=r.$from,a=r.to,s=i.sharedDepth(a);return 0!=s&&(n=i.before(s),e&&e(t.tr.setSelection(o["c"].create(t.doc,n))),!0)}function k(t,e){return e&&e(t.tr.setSelection(new o["a"](t.doc))),!0}function O(t,e,n){var i=e.nodeBefore,o=e.nodeAfter,a=e.index();return!!(i&&o&&i.type.compatibleContent(o.type))&&(!i.content.size&&e.parent.canReplace(a-1,a)?(n&&n(t.tr.delete(e.pos-i.nodeSize,e.pos).scrollIntoView()),!0):!(!e.parent.canReplace(a,a+1)||!o.isTextblock&&!Object(r["e"])(t.doc,e.pos))&&(n&&n(t.tr.clearIncompatible(e.pos,i.type,i.contentMatchAt(i.childCount)).join(e.pos).scrollIntoView()),!0))}function j(t,e,n){var a,s,c=e.nodeBefore,l=e.nodeAfter;if(c.type.spec.isolating||l.type.spec.isolating)return!1;if(O(t,e,n))return!0;var h=e.parent.canReplace(e.index(),e.index()+1);if(h&&(a=(s=c.contentMatchAt(c.childCount)).findWrapping(l.type))&&s.matchType(a[0]||l.type).validEnd){if(n){for(var f=e.pos+l.nodeSize,d=i["c"].empty,p=a.length-1;p>=0;p--)d=i["c"].from(a[p].create(null,d));d=i["c"].from(c.copy(d));var m=t.tr.step(new r["b"](e.pos-1,f,e.pos,f,new i["j"](d,1,0),a.length,!0)),v=f+2*a.length;Object(r["e"])(m.doc,v)&&m.join(v),n(m.scrollIntoView())}return!0}var b=o["f"].findFrom(e,1),y=b&&b.$from.blockRange(b.$to),g=y&&Object(r["j"])(y);if(null!=g&&g>=e.depth)return n&&n(t.tr.lift(y,g).scrollIntoView()),!0;if(h&&l.isTextblock&&u(c,"end")){for(var _=c,w=[];;){if(w.push(_),_.isTextblock)break;_=_.lastChild}if(_.canReplace(_.childCount,_.childCount,l.content)){if(n){for(var M=i["c"].empty,k=w.length-1;k>=0;k--)M=i["c"].from(w[k].copy(M));var j=t.tr.step(new r["b"](e.pos-w.length,e.pos+l.nodeSize,e.pos+1,e.pos+l.nodeSize-1,new i["j"](M,w.length,0),0,!0));n(j.scrollIntoView())}return!0}}return!1}function x(t,e){return function(n,i){var o=n.selection,a=o.$from,s=o.$to,u=a.blockRange(s),c=u&&Object(r["h"])(u,t,e);return!!c&&(i&&i(n.tr.wrap(u,c).scrollIntoView()),!0)}}function S(t,e,n){for(var r=function(r){var i=e[r],o=i.$from,a=i.$to,s=0==o.depth&&t.type.allowsMarkType(n);if(t.nodesBetween(o.pos,a.pos,(function(t){if(s)return!1;s=t.inlineContent&&t.type.allowsMarkType(n)})),s)return{v:!0}},i=0;i=65&&n<=70?n-55:n>=97&&n<=102?n-87:n-48&15}function u(t,e,n){var r=s(t,n);return n-1>=e&&(r|=s(t,n-1)<<4),r}function c(t,e,n,r){for(var i=0,o=Math.min(t.length,n),a=e;a=49?s-49+10:s>=17?s-17+10:s}return i}o.isBN=function(t){return t instanceof o||null!==t&&"object"===typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,n){if("number"===typeof t)return this._initNumber(t,e,n);if("object"===typeof t)return this._initArray(t,e,n);"hex"===e&&(e=16),r(e===(0|e)&&e>=2&&e<=36),t=t.toString().replace(/\s+/g,"");var i=0;"-"===t[0]&&(i++,this.negative=1),i=0;i-=3)a=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[o]|=a<>>26-s&67108863,s+=24,s>=26&&(s-=26,o++);else if("le"===n)for(i=0,o=0;i>>26-s&67108863,s+=24,s>=26&&(s-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,n){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=2)i=u(t,e,r)<=18?(o-=18,a+=1,this.words[a]|=i>>>26):o+=8;else{var s=t.length-e;for(r=s%2===0?e+1:e;r=18?(o-=18,a+=1,this.words[a]|=i>>>26):o+=8}this.strip()},o.prototype._parseBase=function(t,e,n){this.words=[0],this.length=1;for(var r=0,i=1;i<=67108863;i*=e)r++;r--,i=i/e|0;for(var o=t.length-n,a=o%r,s=Math.min(o,o-a)+n,u=0,l=n;l1&&0===this.words[this.length-1])this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],h=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(t){for(var e=new Array(t.bitLength()),n=0;n>>i}return e}function p(t,e,n){n.negative=e.negative^t.negative;var r=t.length+e.length|0;n.length=r,r=r-1|0;var i=0|t.words[0],o=0|e.words[0],a=i*o,s=67108863&a,u=a/67108864|0;n.words[0]=s;for(var c=1;c>>26,h=67108863&u,f=Math.min(c,e.length-1),d=Math.max(0,c-t.length+1);d<=f;d++){var p=c-d|0;i=0|t.words[p],o=0|e.words[d],a=i*o+h,l+=a/67108864|0,h=67108863&a}n.words[c]=0|h,u=0|l}return 0!==u?n.words[c]=0|u:n.length--,n.strip()}o.prototype.toString=function(t,e){var n;if(t=t||10,e=0|e||1,16===t||"hex"===t){n="";for(var i=0,o=0,a=0;a>>24-i&16777215,n=0!==o||a!==this.length-1?l[6-u.length]+u+n:u+n,i+=2,i>=26&&(i-=26,a--)}0!==o&&(n=o.toString(16)+n);while(n.length%e!==0)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(t===(0|t)&&t>=2&&t<=36){var c=h[t],d=f[t];n="";var p=this.clone();p.negative=0;while(!p.isZero()){var m=p.modn(d).toString(t);p=p.idivn(d),n=p.isZero()?m+n:l[c-m.length]+m+n}this.isZero()&&(n="0"+n);while(n.length%e!==0)n="0"+n;return 0!==this.negative&&(n="-"+n),n}r(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return r("undefined"!==typeof a),this.toArrayLike(a,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,n){var i=this.byteLength(),o=n||Math.max(1,i);r(i<=o,"byte array longer than desired length"),r(o>0,"Requested array length <= 0"),this.strip();var a,s,u="le"===e,c=new t(o),l=this.clone();if(u){for(s=0;!l.isZero();s++)a=l.andln(255),l.iushrn(8),c[s]=a;for(;s=4096&&(n+=13,e>>>=13),e>=64&&(n+=7,e>>>=7),e>=8&&(n+=4,e>>>=4),e>=2&&(n+=2,e>>>=2),n+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,n=0;return 0===(8191&e)&&(n+=13,e>>>=13),0===(127&e)&&(n+=7,e>>>=7),0===(15&e)&&(n+=4,e>>>=4),0===(3&e)&&(n+=2,e>>>=2),0===(1&e)&&n++,n},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var n=0;nt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,n;this.length>t.length?(e=this,n=t):(e=t,n=this);for(var r=0;rt.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){r("number"===typeof t&&t>=0);var e=0|Math.ceil(t/26),n=t%26;this._expand(e),n>0&&e--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-n),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){r("number"===typeof t&&t>=0);var n=t/26|0,i=t%26;return this._expand(n+1),this.words[n]=e?this.words[n]|1<t.length?(n=this,r=t):(n=t,r=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=n.length,0!==i)this.words[this.length]=i,this.length++;else if(n!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var n,r,i=this.cmp(t);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(n=this,r=t):(n=t,r=this);for(var o=0,a=0;a